Archify Diagram Viewer 0.1.0

VS Code extension that previews Archify diagrams from their JSON sources
(live, as you type) and opens rendered Archify HTML in a viewer tab.
Bundles the Archify 3.0.1 renderer and runs it on VS Code's Node runtime.
Adds validation diagnostics, JSON schema help, source-link navigation,
export saving, render-to-file and open-in-browser commands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-30 12:44:15 +03:00
co-authored by Claude Opus 5.5
commit 22815a9940
119 changed files with 66708 additions and 0 deletions
+325
View File
@@ -0,0 +1,325 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify Architecture Diagram",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"diagram_type",
"meta",
"components"
],
"properties": {
"schema_version": {
"const": 1
},
"diagram_type": {
"const": "architecture"
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"output"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"locale": {
"$ref": "common.schema.json#/$defs/locale"
},
"translations": {
"$ref": "common.schema.json#/$defs/translations"
},
"subtitle": {
"type": "string"
},
"output": {
"$ref": "common.schema.json#/$defs/portableOutputPath"
},
"animation": {
"$ref": "common.schema.json#/$defs/animation"
},
"visual_preset": {
"$ref": "common.schema.json#/$defs/visualPreset"
},
"quality_profile": {
"$ref": "common.schema.json#/$defs/qualityProfile"
},
"engineering_profile": {
"enum": [
"deployment-ownership"
]
},
"repository": {
"$ref": "common.schema.json#/$defs/repository"
},
"views": {
"$ref": "common.schema.json#/$defs/guidedViews"
},
"legend": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"$ref": "common.schema.json#/$defs/legendMode"
},
"entries": {
"type": "object",
"additionalProperties": false,
"properties": {
"frontend": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"backend": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"database": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"cloud": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"security": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"messagebus": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"external": {
"$ref": "common.schema.json#/$defs/legendEntry"
}
}
}
}
},
"viewBox": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": 320
},
{
"type": "number",
"minimum": 240
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
}
},
"layout": {
"type": "object",
"additionalProperties": false,
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"grid"
]
},
"origin": {
"$ref": "common.schema.json#/$defs/point"
},
"cols": {
"type": "integer",
"minimum": 1,
"maximum": 12
},
"gapX": {
"type": "number",
"minimum": 0
},
"gapY": {
"type": "number",
"minimum": 0
},
"cellW": {
"type": "number",
"minimum": 40
},
"cellH": {
"type": "number",
"minimum": 24
}
}
},
"components": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"type": {
"$ref": "common.schema.json#/$defs/componentType"
},
"label": {
"type": "string",
"minLength": 1
},
"sublabel": {
"type": "string"
},
"tag": {
"type": "string"
},
"icon": {
"$ref": "common.schema.json#/$defs/nodeIcon"
},
"brand": {
"$ref": "common.schema.json#/$defs/brandMark"
},
"sources": {
"$ref": "common.schema.json#/$defs/sourceReferences"
},
"row": {
"type": "integer",
"minimum": 0
},
"col": {
"type": "integer",
"minimum": 0
},
"pos": {
"$ref": "common.schema.json#/$defs/point"
},
"size": {
"type": "array",
"prefixItems": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "number",
"exclusiveMinimum": 0
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
}
}
},
"boundaries": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"label",
"wraps"
],
"properties": {
"kind": {
"enum": [
"region",
"security-group"
]
},
"label": {
"type": "string",
"minLength": 1
},
"wraps": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "common.schema.json#/$defs/id"
}
},
"pad": {
"type": "number",
"minimum": 0
}
}
}
},
"connections": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"from": {
"$ref": "common.schema.json#/$defs/id"
},
"to": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string"
},
"variant": {
"$ref": "common.schema.json#/$defs/variant"
},
"fromSide": {
"$ref": "common.schema.json#/$defs/side"
},
"toSide": {
"$ref": "common.schema.json#/$defs/side"
},
"route": {
"enum": [
"auto",
"straight",
"orthogonal-h",
"orthogonal-v"
]
},
"via": {
"type": "array",
"items": {
"$ref": "common.schema.json#/$defs/point"
}
},
"labelAt": {
"$ref": "common.schema.json#/$defs/point"
},
"labelDx": {
"type": "number"
},
"labelDy": {
"type": "number"
},
"labelSegment": {
"type": "integer",
"minimum": 0
},
"width": {
"$ref": "common.schema.json#/$defs/relationshipWidth"
}
}
}
},
"cards": {
"$ref": "common.schema.json#/$defs/cards"
}
}
}
+354
View File
@@ -0,0 +1,354 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify Shared Definitions",
"$defs": {
"id": {
"type": "string",
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
},
"locale": {
"type": "string",
"pattern": "^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
"maxLength": 35
},
"translations": {
"type": "object",
"propertyNames": {
"pattern": "^[a-z][a-zA-Z0-9]*(\\.[a-z][a-zA-Z0-9]*)*$"
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 400
},
"maxProperties": 600
},
"animation": {
"enum": [
"trace",
"none"
]
},
"visualPreset": {
"enum": [
"classic",
"signal-flow",
"blueprint",
"editorial"
]
},
"qualityProfile": {
"enum": [
"standard",
"showcase"
]
},
"portableOutputPath": {
"description": "A portable POSIX-relative HTML output path. It must be safe to interpret identically on every supported host filesystem.",
"type": "string",
"minLength": 1,
"pattern": "^[^/]+(?:/[^/]+)*$",
"allOf": [
{
"pattern": "(?:^|/)[^/]+[.][Hh][Tt][Mm][Ll]$"
},
{
"not": {
"pattern": "[\\\\<>:\"|?*\\u0000-\\u001F\\u007F-\\u009F]"
}
},
{
"not": {
"pattern": "[\\uD800-\\uDFFF]"
}
},
{
"not": {
"pattern": "(^|/)[.]{1,2}(/|$)"
}
},
{
"not": {
"pattern": "[. ](/|$)"
}
},
{
"not": {
"pattern": "(^|/)[^/]{256}"
}
},
{
"not": {
"pattern": "(^|/)(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Nn][Ii][Nn][$]|[Cc][Oo][Nn][Oo][Uu][Tt][$]|[Cc][Oo][Mm][1-9¹²³]|[Ll][Pp][Tt][1-9¹²³])(?:[.]|/|$)"
}
},
{
"not": {
"pattern": "(^|/)[^/]*~[1-9][0-9]*(?:[.]|/|$)"
}
}
]
},
"side": {
"enum": [
"left",
"right",
"top",
"bottom"
]
},
"relationshipWidth": {
"type": "number",
"minimum": 0.5
},
"point": {
"type": "array",
"prefixItems": [
{
"type": "number"
},
{
"type": "number"
}
],
"items": false,
"minItems": 2,
"maxItems": 2
},
"componentType": {
"enum": [
"frontend",
"backend",
"database",
"cloud",
"security",
"messagebus",
"external"
]
},
"nodeIcon": {
"description": "Decorative corner icon. Omit the icon field for the type default; none hides it. Does not change type, color, or legend grouping.",
"enum": [
"calendar",
"clock",
"person",
"briefcase",
"flag",
"moon",
"frontend",
"backend",
"database",
"cloud",
"security",
"messagebus",
"external",
"start",
"active",
"waiting",
"success",
"failure",
"neutral",
"none"
]
},
"brandMark": {
"oneOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 2048,
"anyOf": [
{
"maxLength": 80,
"pattern": "^[^\\r\\n]+$"
},
{
"pattern": "^https?://"
}
]
},
{
"type": "object",
"additionalProperties": false,
"required": [
"url",
"sha256"
],
"properties": {
"url": {
"type": "string",
"minLength": 8,
"maxLength": 2048,
"pattern": "^https?://"
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
}
}
]
},
"variant": {
"enum": [
"default",
"emphasis",
"security",
"dashed"
]
},
"legendMode": {
"enum": [
"auto",
"all",
"hidden"
]
},
"legendEntry": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"visible": {
"type": "boolean"
}
}
},
"guidedViews": {
"type": "array",
"maxItems": 5,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"label",
"focus"
],
"properties": {
"id": {
"$ref": "#/$defs/id"
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 48
},
"focus": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/id"
}
},
"note": {
"type": "string",
"maxLength": 140
}
}
}
},
"repository": {
"type": "object",
"additionalProperties": false,
"required": [
"url",
"revision"
],
"properties": {
"url": {
"type": "string",
"minLength": 1
},
"provider": {
"enum": [
"github",
"gitee"
]
},
"link_mode": {
"enum": [
"web",
"local-only"
]
},
"revision": {
"type": "string",
"pattern": "^[a-fA-F0-9]{40}$"
}
}
},
"sourceReferences": {
"type": "array",
"minItems": 1,
"maxItems": 3,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"maxLength": 240
},
"line": {
"type": "integer",
"minimum": 1
},
"end_line": {
"type": "integer",
"minimum": 1
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 48
}
}
}
},
"cards": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"dot",
"title",
"items"
],
"properties": {
"dot": {
"enum": [
"cyan",
"emerald",
"violet",
"amber",
"rose",
"orange",
"slate"
]
},
"title": {
"type": "string",
"minLength": 1
},
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
+267
View File
@@ -0,0 +1,267 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify Data Flow Diagram",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"diagram_type",
"meta",
"stages",
"nodes",
"flows"
],
"properties": {
"schema_version": {
"const": 1
},
"diagram_type": {
"const": "dataflow"
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"output"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"locale": {
"$ref": "common.schema.json#/$defs/locale"
},
"translations": {
"$ref": "common.schema.json#/$defs/translations"
},
"subtitle": {
"type": "string"
},
"output": {
"$ref": "common.schema.json#/$defs/portableOutputPath"
},
"animation": {
"$ref": "common.schema.json#/$defs/animation"
},
"visual_preset": {
"$ref": "common.schema.json#/$defs/visualPreset"
},
"quality_profile": {
"$ref": "common.schema.json#/$defs/qualityProfile"
},
"repository": {
"$ref": "common.schema.json#/$defs/repository"
},
"views": {
"$ref": "common.schema.json#/$defs/guidedViews"
},
"legend": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"$ref": "common.schema.json#/$defs/legendMode"
},
"entries": {
"type": "object",
"additionalProperties": false,
"properties": {
"default": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"emphasis": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"security": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"dashed": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"database": {
"$ref": "common.schema.json#/$defs/legendEntry"
}
}
}
}
},
"viewBox": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": 360
},
{
"type": "number",
"minimum": 360
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
}
},
"stages": {
"type": "array",
"minItems": 2,
"maxItems": 5,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"label"
],
"properties": {
"label": {
"type": "string",
"minLength": 1
}
}
}
},
"nodes": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"label",
"stage",
"row"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"type": {
"$ref": "common.schema.json#/$defs/componentType"
},
"label": {
"type": "string",
"minLength": 1
},
"sublabel": {
"type": "string"
},
"tag": {
"type": "string"
},
"icon": {
"$ref": "common.schema.json#/$defs/nodeIcon"
},
"brand": {
"$ref": "common.schema.json#/$defs/brandMark"
},
"sources": {
"$ref": "common.schema.json#/$defs/sourceReferences"
},
"stage": {
"type": "integer",
"minimum": 0
},
"row": {
"type": "integer",
"minimum": 0
},
"width": {
"type": "number",
"minimum": 48
},
"height": {
"type": "number",
"minimum": 36
},
"yOffset": {
"type": "number"
}
}
}
},
"flows": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"from": {
"$ref": "common.schema.json#/$defs/id"
},
"to": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string",
"minLength": 1
},
"classification": {
"type": "string"
},
"variant": {
"$ref": "common.schema.json#/$defs/variant"
},
"route": {
"enum": [
"auto",
"straight",
"vertical-channel",
"bottom-channel",
"top-channel"
]
},
"fromSide": {
"$ref": "common.schema.json#/$defs/side"
},
"toSide": {
"$ref": "common.schema.json#/$defs/side"
},
"channelX": {
"type": "number"
},
"channelY": {
"type": "number"
},
"labelAt": {
"$ref": "common.schema.json#/$defs/point"
},
"labelDx": {
"type": "number"
},
"labelDy": {
"type": "number"
},
"labelSegment": {
"type": "integer",
"minimum": 0
},
"via": {
"type": "array",
"items": {
"$ref": "common.schema.json#/$defs/point"
}
},
"width": {
"$ref": "common.schema.json#/$defs/relationshipWidth"
}
}
}
},
"cards": {
"$ref": "common.schema.json#/$defs/cards"
}
}
}
+299
View File
@@ -0,0 +1,299 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify Lifecycle Diagram",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"diagram_type",
"meta",
"lanes",
"states",
"transitions"
],
"properties": {
"schema_version": {
"enum": [
1,
2
]
},
"diagram_type": {
"const": "lifecycle"
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"output"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"locale": {
"$ref": "common.schema.json#/$defs/locale"
},
"translations": {
"$ref": "common.schema.json#/$defs/translations"
},
"subtitle": {
"type": "string"
},
"output": {
"$ref": "common.schema.json#/$defs/portableOutputPath"
},
"animation": {
"$ref": "common.schema.json#/$defs/animation"
},
"visual_preset": {
"$ref": "common.schema.json#/$defs/visualPreset"
},
"quality_profile": {
"$ref": "common.schema.json#/$defs/qualityProfile"
},
"repository": {
"$ref": "common.schema.json#/$defs/repository"
},
"views": {
"$ref": "common.schema.json#/$defs/guidedViews"
},
"legend": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"$ref": "common.schema.json#/$defs/legendMode"
},
"entries": {
"type": "object",
"additionalProperties": false,
"properties": {
"start": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"active": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"waiting": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"decision": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"success": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"failure": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"neutral": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"external": {
"$ref": "common.schema.json#/$defs/legendEntry"
}
}
}
}
},
"viewBox": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": 420
},
{
"type": "number",
"minimum": 300
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
}
},
"lanes": {
"type": "array",
"minItems": 1,
"maxItems": 4,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string",
"minLength": 1
}
}
}
},
"states": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"label",
"lane",
"col"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"type": {
"enum": [
"start",
"active",
"waiting",
"decision",
"success",
"failure",
"neutral",
"external"
]
},
"label": {
"type": "string",
"minLength": 1
},
"sublabel": {
"type": "string"
},
"tag": {
"type": "string"
},
"icon": {
"$ref": "common.schema.json#/$defs/nodeIcon"
},
"brand": {
"$ref": "common.schema.json#/$defs/brandMark"
},
"sources": {
"$ref": "common.schema.json#/$defs/sourceReferences"
},
"step": {
"type": "string"
},
"lane": {
"$ref": "common.schema.json#/$defs/id"
},
"col": {
"type": "integer",
"minimum": 0,
"maximum": 4
},
"width": {
"type": "number",
"minimum": 48
},
"height": {
"type": "number",
"minimum": 36
},
"yOffset": {
"type": "number"
}
}
}
},
"transitions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"from": {
"$ref": "common.schema.json#/$defs/id"
},
"to": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string"
},
"note": {
"type": "string"
},
"variant": {
"$ref": "common.schema.json#/$defs/variant"
},
"route": {
"enum": [
"auto",
"straight",
"drop",
"bottom-channel",
"top-channel",
"right-channel",
"left-channel"
]
},
"fromSide": {
"$ref": "common.schema.json#/$defs/side"
},
"toSide": {
"$ref": "common.schema.json#/$defs/side"
},
"channelX": {
"type": "number"
},
"channelY": {
"type": "number"
},
"cornerRadius": {
"type": "number",
"minimum": 0
},
"labelAt": {
"$ref": "common.schema.json#/$defs/point"
},
"labelDx": {
"type": "number"
},
"labelDy": {
"type": "number"
},
"labelSegment": {
"type": "integer",
"minimum": 0
},
"via": {
"type": "array",
"items": {
"$ref": "common.schema.json#/$defs/point"
}
},
"width": {
"$ref": "common.schema.json#/$defs/relationshipWidth"
}
}
}
},
"cards": {
"$ref": "common.schema.json#/$defs/cards"
}
}
}
+250
View File
@@ -0,0 +1,250 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify Sequence Diagram",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"diagram_type",
"meta",
"participants",
"messages"
],
"properties": {
"schema_version": {
"const": 1
},
"diagram_type": {
"const": "sequence"
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"output"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"locale": {
"$ref": "common.schema.json#/$defs/locale"
},
"translations": {
"$ref": "common.schema.json#/$defs/translations"
},
"subtitle": {
"type": "string"
},
"output": {
"$ref": "common.schema.json#/$defs/portableOutputPath"
},
"animation": {
"$ref": "common.schema.json#/$defs/animation"
},
"visual_preset": {
"$ref": "common.schema.json#/$defs/visualPreset"
},
"quality_profile": {
"$ref": "common.schema.json#/$defs/qualityProfile"
},
"column_fit": {
"description": "Horizontal participant layout. Omit this field or use fixed for the stable 86px boxes and 108px gap. Use spread when a wide viewBox would leave unused horizontal space or meaningful participant labels do not fit the fixed boxes; spread derives wider boxes and gaps from the viewBox without changing participant order or message semantics.",
"enum": [
"fixed",
"spread"
]
},
"repository": {
"$ref": "common.schema.json#/$defs/repository"
},
"views": {
"$ref": "common.schema.json#/$defs/guidedViews"
},
"legend": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"$ref": "common.schema.json#/$defs/legendMode"
},
"entries": {
"type": "object",
"additionalProperties": false,
"properties": {
"default": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"emphasis": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"security": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"dashed": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"return": {
"$ref": "common.schema.json#/$defs/legendEntry"
}
}
}
}
},
"viewBox": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": 480
},
{
"type": "number",
"minimum": 480
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
}
},
"participants": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"type": {
"$ref": "common.schema.json#/$defs/componentType"
},
"label": {
"type": "string",
"minLength": 1
},
"sublabel": {
"type": "string"
},
"icon": {
"$ref": "common.schema.json#/$defs/nodeIcon"
},
"brand": {
"$ref": "common.schema.json#/$defs/brandMark"
},
"sources": {
"$ref": "common.schema.json#/$defs/sourceReferences"
}
}
}
},
"segments": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to",
"label"
],
"properties": {
"from": {
"type": "number"
},
"to": {
"type": "number"
},
"label": {
"type": "string",
"minLength": 1
}
}
}
},
"messages": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to",
"y",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"from": {
"$ref": "common.schema.json#/$defs/id"
},
"to": {
"$ref": "common.schema.json#/$defs/id"
},
"y": {
"type": "number",
"minimum": 160
},
"label": {
"type": "string",
"minLength": 1
},
"variant": {
"enum": [
"default",
"emphasis",
"security",
"dashed",
"return"
]
},
"note": {
"type": "string"
}
}
}
},
"activations": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"participant",
"from",
"to"
],
"properties": {
"participant": {
"$ref": "common.schema.json#/$defs/id"
},
"from": {
"type": "number"
},
"to": {
"type": "number"
},
"type": {
"$ref": "common.schema.json#/$defs/componentType"
}
}
}
},
"cards": {
"$ref": "common.schema.json#/$defs/cards"
}
}
}
+456
View File
@@ -0,0 +1,456 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Archify Workflow Diagram",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"diagram_type",
"meta",
"lanes",
"nodes",
"edges"
],
"properties": {
"schema_version": {
"enum": [
1,
2
]
},
"diagram_type": {
"const": "workflow"
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"output"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"locale": {
"$ref": "common.schema.json#/$defs/locale"
},
"translations": {
"$ref": "common.schema.json#/$defs/translations"
},
"subtitle": {
"type": "string"
},
"output": {
"$ref": "common.schema.json#/$defs/portableOutputPath"
},
"animation": {
"enum": [
"trace",
"none"
]
},
"visual_preset": {
"enum": [
"classic",
"signal-flow",
"blueprint",
"editorial"
]
},
"quality_profile": {
"enum": [
"standard",
"showcase"
]
},
"repository": {
"$ref": "common.schema.json#/$defs/repository"
},
"views": {
"$ref": "common.schema.json#/$defs/guidedViews"
},
"legend": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"$ref": "common.schema.json#/$defs/legendMode"
},
"entries": {
"type": "object",
"additionalProperties": false,
"properties": {
"frontend": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"backend": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"database": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"cloud": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"security": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"messagebus": {
"$ref": "common.schema.json#/$defs/legendEntry"
},
"external": {
"$ref": "common.schema.json#/$defs/legendEntry"
}
}
}
}
},
"viewBox": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": 700
},
{
"type": "number",
"minimum": 240
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
}
},
"lanes": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string",
"minLength": 1
},
"variant": {
"enum": [
"normal",
"exception"
]
}
}
}
},
"phases": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"label",
"fromCol",
"toCol"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string",
"minLength": 1
},
"fromCol": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"toCol": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"variant": {
"enum": [
"default",
"emphasis",
"security",
"dashed"
]
}
}
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"label",
"lane",
"fromCol",
"toCol"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string",
"minLength": 1
},
"lane": {
"$ref": "common.schema.json#/$defs/id"
},
"fromCol": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"toCol": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"variant": {
"enum": [
"default",
"emphasis",
"security",
"dashed"
]
}
}
}
},
"mainPath": {
"type": "array",
"minItems": 2,
"items": {
"$ref": "common.schema.json#/$defs/id"
}
},
"semanticChecks": {
"type": "object",
"additionalProperties": false,
"minProperties": 1,
"properties": {
"allowedRoots": {
"type": "array",
"items": {
"$ref": "common.schema.json#/$defs/id"
}
},
"allowedTerminals": {
"type": "array",
"items": {
"$ref": "common.schema.json#/$defs/id"
}
},
"requiredEdges": {
"type": "array",
"items": {
"$ref": "#/$defs/semanticRelation"
}
},
"requiredPaths": {
"type": "array",
"items": {
"$ref": "#/$defs/semanticRelation"
}
}
}
},
"nodes": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"lane",
"col",
"type",
"label"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"lane": {
"$ref": "common.schema.json#/$defs/id"
},
"col": {
"type": "integer",
"minimum": 0,
"maximum": 5
},
"type": {
"$ref": "common.schema.json#/$defs/componentType"
},
"label": {
"type": "string",
"minLength": 1
},
"sublabel": {
"type": "string"
},
"tag": {
"type": "string"
},
"icon": {
"$ref": "common.schema.json#/$defs/nodeIcon"
},
"brand": {
"$ref": "common.schema.json#/$defs/brandMark"
},
"sources": {
"$ref": "common.schema.json#/$defs/sourceReferences"
},
"width": {
"type": "number",
"minimum": 32
},
"height": {
"type": "number",
"minimum": 32
},
"yOffset": {
"type": "number"
}
}
}
},
"edges": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"id": {
"$ref": "common.schema.json#/$defs/id"
},
"from": {
"$ref": "common.schema.json#/$defs/id"
},
"to": {
"$ref": "common.schema.json#/$defs/id"
},
"label": {
"type": "string"
},
"variant": {
"$ref": "common.schema.json#/$defs/variant"
},
"role": {
"enum": [
"main",
"branch",
"async",
"return",
"error"
]
},
"fromSide": {
"$ref": "#/$defs/side"
},
"toSide": {
"$ref": "#/$defs/side"
},
"route": {
"enum": [
"auto",
"straight",
"drop",
"outside-right",
"return-left",
"bottom-channel",
"up-channel"
]
},
"via": {
"type": "array",
"items": {
"$ref": "common.schema.json#/$defs/point"
}
},
"labelAt": {
"$ref": "common.schema.json#/$defs/point"
},
"labelDx": {
"type": "number"
},
"labelDy": {
"type": "number"
},
"labelSegment": {
"type": "integer",
"minimum": 0
},
"channelX": {
"type": "number"
},
"channelY": {
"type": "number"
},
"bias": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"width": {
"type": "number",
"minimum": 0.5
}
}
}
},
"cards": {
"$ref": "common.schema.json#/$defs/cards"
}
},
"$defs": {
"semanticRelation": {
"type": "object",
"additionalProperties": false,
"required": [
"from",
"to"
],
"properties": {
"from": {
"$ref": "common.schema.json#/$defs/id"
},
"to": {
"$ref": "common.schema.json#/$defs/id"
}
}
},
"side": {
"enum": [
"left",
"right",
"top",
"bottom"
]
}
}
}