arkaos 4.32.0 → 4.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/THE-ARKAOS-GUIDE.md +1 -1
- package/VERSION +1 -1
- package/arka/SKILL.md +1 -1
- package/arka/skills/forge/references/workflows.md +10 -0
- package/config/claude-agents/architect.md +1 -1
- package/config/claude-agents/backend-dev.md +1 -1
- package/config/claude-agents/devops-eng.md +1 -1
- package/config/claude-agents/frontend-dev.md +1 -1
- package/config/claude-agents/ops-lead.md +1 -1
- package/config/claude-agents/pm-director.md +1 -1
- package/config/claude-agents/strategy-director.md +1 -1
- package/config/hooks/session-start.sh +1 -1
- package/config/skills-curated.yaml +2 -2
- package/config/skills-provenance.yaml +7 -0
- package/config/statusline.sh +6 -1
- package/core/hooks/session_start.py +69 -28
- package/departments/dev/agents/architect.yaml +1 -0
- package/departments/dev/agents/backend-dev.yaml +1 -0
- package/departments/dev/agents/devops-eng.yaml +1 -0
- package/departments/dev/agents/frontend-dev.yaml +1 -0
- package/departments/dev/agents/tech-lead.yaml +1 -0
- package/departments/dev/skills/diagram/SKILL.md +175 -0
- package/departments/dev/skills/diagram/examples/archify-repo-grid.architecture.json +57 -0
- package/departments/dev/skills/diagram/vendor/LICENSE +22 -0
- package/departments/dev/skills/diagram/vendor/SKILL.md +367 -0
- package/departments/dev/skills/diagram/vendor/assets/template.html +11470 -0
- package/departments/dev/skills/diagram/vendor/bin/archify.mjs +600 -0
- package/departments/dev/skills/diagram/vendor/bin/open-artifact.mjs +67 -0
- package/departments/dev/skills/diagram/vendor/examples/agent-run.lifecycle.json +71 -0
- package/departments/dev/skills/diagram/vendor/examples/agent-tool-call.workflow.json +111 -0
- package/departments/dev/skills/diagram/vendor/examples/async-job-roundtrip.sequence.json +62 -0
- package/departments/dev/skills/diagram/vendor/examples/cache-miss-request.sequence.json +82 -0
- package/departments/dev/skills/diagram/vendor/examples/deployment-release.lifecycle.json +50 -0
- package/departments/dev/skills/diagram/vendor/examples/event-stream.dataflow.json +58 -0
- package/departments/dev/skills/diagram/vendor/examples/incident-response.workflow.json +65 -0
- package/departments/dev/skills/diagram/vendor/examples/product-analytics.dataflow.json +77 -0
- package/departments/dev/skills/diagram/vendor/examples/production-deployment.architecture.json +70 -0
- package/departments/dev/skills/diagram/vendor/examples/release-delivery.workflow.json +63 -0
- package/departments/dev/skills/diagram/vendor/examples/web-app.architecture.json +47 -0
- package/departments/dev/skills/diagram/vendor/package-lock.json +80 -0
- package/departments/dev/skills/diagram/vendor/package.json +28 -0
- package/departments/dev/skills/diagram/vendor/recipes/scenarios.mjs +350 -0
- package/departments/dev/skills/diagram/vendor/renderers/architecture/grid.mjs +62 -0
- package/departments/dev/skills/diagram/vendor/renderers/architecture/render-architecture.mjs +490 -0
- package/departments/dev/skills/diagram/vendor/renderers/dataflow/README.md +93 -0
- package/departments/dev/skills/diagram/vendor/renderers/dataflow/render-dataflow.mjs +396 -0
- package/departments/dev/skills/diagram/vendor/renderers/lifecycle/README.md +103 -0
- package/departments/dev/skills/diagram/vendor/renderers/lifecycle/render-lifecycle.mjs +482 -0
- package/departments/dev/skills/diagram/vendor/renderers/sequence/README.md +96 -0
- package/departments/dev/skills/diagram/vendor/renderers/sequence/render-sequence.mjs +357 -0
- package/departments/dev/skills/diagram/vendor/renderers/shared/cli.mjs +176 -0
- package/departments/dev/skills/diagram/vendor/renderers/shared/generated-validators.mjs +13 -0
- package/departments/dev/skills/diagram/vendor/renderers/shared/geometry.mjs +992 -0
- package/departments/dev/skills/diagram/vendor/renderers/shared/layout-report.mjs +40 -0
- package/departments/dev/skills/diagram/vendor/renderers/shared/utils.mjs +156 -0
- package/departments/dev/skills/diagram/vendor/renderers/shared/validator.mjs +40 -0
- package/departments/dev/skills/diagram/vendor/renderers/workflow/README.md +114 -0
- package/departments/dev/skills/diagram/vendor/renderers/workflow/render-workflow.mjs +598 -0
- package/departments/dev/skills/diagram/vendor/schemas/README.md +93 -0
- package/departments/dev/skills/diagram/vendor/schemas/architecture.schema.json +125 -0
- package/departments/dev/skills/diagram/vendor/schemas/common.schema.json +62 -0
- package/departments/dev/skills/diagram/vendor/schemas/dataflow.schema.json +240 -0
- package/departments/dev/skills/diagram/vendor/schemas/lifecycle.schema.json +260 -0
- package/departments/dev/skills/diagram/vendor/schemas/sequence.schema.json +205 -0
- package/departments/dev/skills/diagram/vendor/schemas/workflow.schema.json +351 -0
- package/departments/dev/skills/diagram/vendor/scripts/check-render-output.mjs +774 -0
- package/departments/dev/skills/diagram/vendor/scripts/generate-validators.mjs +66 -0
- package/departments/dev/skills/diagram/vendor/scripts/render-examples.mjs +26 -0
- package/departments/dev/skills/spec/SKILL.md +19 -0
- package/departments/ops/agents/ops-lead.yaml +1 -0
- package/departments/pm/agents/pm-director.yaml +1 -0
- package/departments/strategy/agents/strategy-director.yaml +1 -0
- package/harness/codex/AGENTS.md +1 -1
- package/harness/copilot/copilot-instructions.md +1 -1
- package/harness/cursor/rules/arkaos.mdc +2 -2
- package/harness/gemini/GEMINI.md +1 -1
- package/harness/opencode/AGENTS.md +1 -1
- package/harness/zed/.rules +1 -1
- package/installer/autoupdate.js +249 -0
- package/installer/cli.js +7 -0
- package/installer/core-snapshot.js +5 -1
- package/installer/doctor.js +11 -0
- package/installer/index.js +11 -0
- package/installer/update.js +11 -0
- package/knowledge/agents-registry-v2.json +9 -1
- package/knowledge/skills-manifest.json +14 -1
- package/package.json +3 -2
- package/pyproject.toml +1 -1
- package/scripts/auto-update.sh +188 -0
- package/scripts/skill_validator.py +10 -2
- package/scripts/tools/docs_stats.py +8 -2
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Archify JSON IR Schemas
|
|
2
|
+
|
|
3
|
+
Each typed renderer consumes a JSON intermediate representation (IR) validated
|
|
4
|
+
against one of the schemas in this folder before any layout work happens.
|
|
5
|
+
|
|
6
|
+
## Files
|
|
7
|
+
|
|
8
|
+
| Schema | Governs | Structural arrays |
|
|
9
|
+
|--------|---------|-------------------|
|
|
10
|
+
| `workflow.schema.json` | `diagram_type: "workflow"` | `lanes`, `phases`, `groups`, `mainPath`, `nodes`, `edges` |
|
|
11
|
+
| `sequence.schema.json` | `diagram_type: "sequence"` | `participants`, `segments`, `messages`, `activations` |
|
|
12
|
+
| `dataflow.schema.json` | `diagram_type: "dataflow"` | `stages`, `nodes`, `flows` |
|
|
13
|
+
| `lifecycle.schema.json` | `diagram_type: "lifecycle"` | `lanes`, `states`, `transitions` |
|
|
14
|
+
| `architecture.schema.json` | `diagram_type: "architecture"` | `components`, `boundaries`, `connections` |
|
|
15
|
+
| `common.schema.json` | shared `$defs` only (no top-level document) | — |
|
|
16
|
+
|
|
17
|
+
Every diagram schema requires `schema_version`, `diagram_type`, `meta` (with
|
|
18
|
+
`title`), and its structural arrays — except `segments`, `activations`, and
|
|
19
|
+
`cards`, which are optional — and sets `additionalProperties: false` at every
|
|
20
|
+
level, so unknown fields are rejected rather than silently ignored.
|
|
21
|
+
|
|
22
|
+
Every `meta` object also accepts `animation: "trace"` for opt-in SVG/CSS motion
|
|
23
|
+
in generated HTML. Omit it, or set `"none"`, for the default static output.
|
|
24
|
+
`visual_preset` accepts `classic` (the stable default), `signal-flow` (luminous
|
|
25
|
+
motion-forward presentation), or `blueprint` (high-contrast engineering review).
|
|
26
|
+
Presets change only viewer styling; they do not alter semantic IDs or geometry.
|
|
27
|
+
It may also include up to five guided `views`. Each view has a unique `id`, a
|
|
28
|
+
reader-facing `label`, a non-empty `focus` list of existing semantic node IDs,
|
|
29
|
+
and an optional short `note`.
|
|
30
|
+
|
|
31
|
+
Every relationship collection (`connections`, `edges`, `messages`, `flows`, and
|
|
32
|
+
`transitions`) accepts an optional author-controlled `id` using the shared ID
|
|
33
|
+
pattern. The renderer keeps its source-order runtime key separately, while the
|
|
34
|
+
authored ID enables a stable `#relation=<id>` viewer link that survives array
|
|
35
|
+
reordering. ID-less documents remain valid and their relationship pins stay
|
|
36
|
+
local to the current page.
|
|
37
|
+
|
|
38
|
+
## schema_version policy
|
|
39
|
+
|
|
40
|
+
`schema_version` is `"const": 1`. The constant pins the IR contract: a file
|
|
41
|
+
that validates today keeps validating and rendering on every 2.x release.
|
|
42
|
+
Additive viewer, accessibility, and presentation improvements may enhance the
|
|
43
|
+
generated HTML, but they must not reinterpret authored IR or turn a previously
|
|
44
|
+
valid profile-less v1 file into a new hard layout failure. A breaking change to
|
|
45
|
+
any IR shape bumps the constant to `2`; renderers will then reject version-1
|
|
46
|
+
files with a clear schema error instead of misrendering them. Additive,
|
|
47
|
+
backwards-compatible fields do not bump the version.
|
|
48
|
+
|
|
49
|
+
## Shared definitions (common.schema.json)
|
|
50
|
+
|
|
51
|
+
The five diagram schemas reference `common.schema.json#/$defs/...`:
|
|
52
|
+
|
|
53
|
+
- `id` — element identifiers, pattern `^[a-zA-Z][a-zA-Z0-9_-]*$`
|
|
54
|
+
- `point` — an `[x, y]` pair of numbers (used by `via` and `labelAt`)
|
|
55
|
+
- `componentType` — `frontend`, `backend`, `database`, `cloud`, `security`,
|
|
56
|
+
`messagebus`, `external`
|
|
57
|
+
- `variant` — `default`, `emphasis`, `security`, `dashed` (sequence messages
|
|
58
|
+
extend this list locally with `return`)
|
|
59
|
+
- `guidedViews` — the bounded, read-only reader paths accepted by `meta.views`
|
|
60
|
+
- `cards` — the summary-card blocks rendered below the SVG
|
|
61
|
+
|
|
62
|
+
Lifecycle state `type` is mode-specific (`start`/`active`/`waiting`/...) and
|
|
63
|
+
stays in `lifecycle.schema.json`.
|
|
64
|
+
|
|
65
|
+
## Runtime validation
|
|
66
|
+
|
|
67
|
+
At development time, `scripts/generate-validators.mjs` compiles all five
|
|
68
|
+
schemas with ajv's draft 2020-12 standalone generator using `strict: true` and
|
|
69
|
+
`allErrors: true`. The generated `renderers/shared/generated-validators.mjs`
|
|
70
|
+
is committed and shipped with the skill, so runtime validation has no npm or
|
|
71
|
+
network dependency. `renderers/shared/validator.mjs` applies the matching
|
|
72
|
+
standalone validator before the renderer's own layout checks.
|
|
73
|
+
The shared loader then checks cross-collection facts that JSON Schema cannot
|
|
74
|
+
express cleanly here: duplicate view IDs, duplicate focus IDs, focus IDs that do
|
|
75
|
+
not exist in the diagram's semantic collection, and duplicate authored
|
|
76
|
+
relationship IDs within the mode's relationship collection.
|
|
77
|
+
|
|
78
|
+
`npm test` runs the generator in check mode and fails when the committed
|
|
79
|
+
validators drift from their schemas.
|
|
80
|
+
|
|
81
|
+
## Error format
|
|
82
|
+
|
|
83
|
+
Schema violations exit non-zero. Each ajv error is reported on its own line as
|
|
84
|
+
the instance path — annotated with the nearest enclosing element's `id` or
|
|
85
|
+
`label` — followed by the message and parameters:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
workflow schema validation failed:
|
|
89
|
+
/nodes/3 (id/label: "router") must NOT have additional properties {"additionalProperty":"colour"}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Schemas catch shape errors (types, enums, ranges, unknown fields); geometry
|
|
93
|
+
problems such as overlaps and label collisions are the renderers' job.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/tt-a1i/archify/schemas/architecture.schema.json",
|
|
4
|
+
"title": "Archify Architecture Diagram",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema_version", "diagram_type", "meta", "components"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": { "const": 1 },
|
|
10
|
+
"diagram_type": { "const": "architecture" },
|
|
11
|
+
"meta": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"required": ["title"],
|
|
15
|
+
"properties": {
|
|
16
|
+
"title": { "type": "string", "minLength": 1 },
|
|
17
|
+
"subtitle": { "type": "string" },
|
|
18
|
+
"output": { "type": "string" },
|
|
19
|
+
"animation": { "enum": ["trace", "none"] },
|
|
20
|
+
"visual_preset": { "enum": ["classic", "signal-flow", "blueprint"] },
|
|
21
|
+
"quality_profile": { "enum": ["standard", "showcase"] },
|
|
22
|
+
"views": { "$ref": "common.schema.json#/$defs/guidedViews" },
|
|
23
|
+
"viewBox": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"prefixItems": [
|
|
26
|
+
{ "type": "number", "minimum": 320 },
|
|
27
|
+
{ "type": "number", "minimum": 240 }
|
|
28
|
+
],
|
|
29
|
+
"items": false,
|
|
30
|
+
"minItems": 2,
|
|
31
|
+
"maxItems": 2
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"layout": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"additionalProperties": false,
|
|
38
|
+
"required": ["mode"],
|
|
39
|
+
"properties": {
|
|
40
|
+
"mode": { "enum": ["grid"] },
|
|
41
|
+
"origin": { "$ref": "common.schema.json#/$defs/point" },
|
|
42
|
+
"cols": { "type": "integer", "minimum": 1, "maximum": 12 },
|
|
43
|
+
"gapX": { "type": "number", "minimum": 0 },
|
|
44
|
+
"gapY": { "type": "number", "minimum": 0 },
|
|
45
|
+
"cellW": { "type": "number", "minimum": 40 },
|
|
46
|
+
"cellH": { "type": "number", "minimum": 24 }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"components": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"minItems": 1,
|
|
52
|
+
"items": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"required": ["id", "type", "label"],
|
|
56
|
+
"properties": {
|
|
57
|
+
"id": { "$ref": "common.schema.json#/$defs/id" },
|
|
58
|
+
"type": { "$ref": "common.schema.json#/$defs/componentType" },
|
|
59
|
+
"label": { "type": "string", "minLength": 1 },
|
|
60
|
+
"sublabel": { "type": "string" },
|
|
61
|
+
"tag": { "type": "string" },
|
|
62
|
+
"row": { "type": "integer", "minimum": 0 },
|
|
63
|
+
"col": { "type": "integer", "minimum": 0 },
|
|
64
|
+
"pos": { "$ref": "common.schema.json#/$defs/point" },
|
|
65
|
+
"size": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"prefixItems": [
|
|
68
|
+
{ "type": "number", "exclusiveMinimum": 0 },
|
|
69
|
+
{ "type": "number", "exclusiveMinimum": 0 }
|
|
70
|
+
],
|
|
71
|
+
"items": false,
|
|
72
|
+
"minItems": 2,
|
|
73
|
+
"maxItems": 2
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"boundaries": {
|
|
79
|
+
"type": "array",
|
|
80
|
+
"items": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"required": ["kind", "label", "wraps"],
|
|
84
|
+
"properties": {
|
|
85
|
+
"kind": { "enum": ["region", "security-group"] },
|
|
86
|
+
"label": { "type": "string", "minLength": 1 },
|
|
87
|
+
"wraps": {
|
|
88
|
+
"type": "array",
|
|
89
|
+
"minItems": 1,
|
|
90
|
+
"items": { "$ref": "common.schema.json#/$defs/id" }
|
|
91
|
+
},
|
|
92
|
+
"pad": { "type": "number", "minimum": 0 }
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"connections": {
|
|
97
|
+
"type": "array",
|
|
98
|
+
"items": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"additionalProperties": false,
|
|
101
|
+
"required": ["from", "to"],
|
|
102
|
+
"properties": {
|
|
103
|
+
"id": { "$ref": "common.schema.json#/$defs/id" },
|
|
104
|
+
"from": { "$ref": "common.schema.json#/$defs/id" },
|
|
105
|
+
"to": { "$ref": "common.schema.json#/$defs/id" },
|
|
106
|
+
"label": { "type": "string" },
|
|
107
|
+
"variant": { "$ref": "common.schema.json#/$defs/variant" },
|
|
108
|
+
"fromSide": { "enum": ["left", "right", "top", "bottom"] },
|
|
109
|
+
"toSide": { "enum": ["left", "right", "top", "bottom"] },
|
|
110
|
+
"route": { "enum": ["auto", "straight", "orthogonal-h", "orthogonal-v"] },
|
|
111
|
+
"via": {
|
|
112
|
+
"type": "array",
|
|
113
|
+
"items": { "$ref": "common.schema.json#/$defs/point" }
|
|
114
|
+
},
|
|
115
|
+
"labelAt": { "$ref": "common.schema.json#/$defs/point" },
|
|
116
|
+
"labelDx": { "type": "number" },
|
|
117
|
+
"labelDy": { "type": "number" },
|
|
118
|
+
"labelSegment": { "type": "integer", "minimum": 0 },
|
|
119
|
+
"width": { "type": "number", "minimum": 0.5 }
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"cards": { "$ref": "common.schema.json#/$defs/cards" }
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/tt-a1i/archify/schemas/common.schema.json",
|
|
4
|
+
"title": "Archify Shared Definitions",
|
|
5
|
+
"$defs": {
|
|
6
|
+
"id": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$"
|
|
9
|
+
},
|
|
10
|
+
"point": {
|
|
11
|
+
"type": "array",
|
|
12
|
+
"prefixItems": [
|
|
13
|
+
{ "type": "number" },
|
|
14
|
+
{ "type": "number" }
|
|
15
|
+
],
|
|
16
|
+
"items": false,
|
|
17
|
+
"minItems": 2,
|
|
18
|
+
"maxItems": 2
|
|
19
|
+
},
|
|
20
|
+
"componentType": {
|
|
21
|
+
"enum": ["frontend", "backend", "database", "cloud", "security", "messagebus", "external"]
|
|
22
|
+
},
|
|
23
|
+
"variant": {
|
|
24
|
+
"enum": ["default", "emphasis", "security", "dashed"]
|
|
25
|
+
},
|
|
26
|
+
"guidedViews": {
|
|
27
|
+
"type": "array",
|
|
28
|
+
"maxItems": 5,
|
|
29
|
+
"items": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"additionalProperties": false,
|
|
32
|
+
"required": ["id", "label", "focus"],
|
|
33
|
+
"properties": {
|
|
34
|
+
"id": { "$ref": "#/$defs/id" },
|
|
35
|
+
"label": { "type": "string", "minLength": 1, "maxLength": 48 },
|
|
36
|
+
"focus": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"minItems": 1,
|
|
39
|
+
"items": { "$ref": "#/$defs/id" }
|
|
40
|
+
},
|
|
41
|
+
"note": { "type": "string", "maxLength": 140 }
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"cards": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"additionalProperties": false,
|
|
50
|
+
"required": ["dot", "title", "items"],
|
|
51
|
+
"properties": {
|
|
52
|
+
"dot": { "enum": ["cyan", "emerald", "violet", "amber", "rose", "orange", "slate"] },
|
|
53
|
+
"title": { "type": "string", "minLength": 1 },
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"items": { "type": "string" }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/tt-a1i/archify/schemas/dataflow.schema.json",
|
|
4
|
+
"title": "Archify Data Flow Diagram",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"diagram_type",
|
|
10
|
+
"meta",
|
|
11
|
+
"stages",
|
|
12
|
+
"nodes",
|
|
13
|
+
"flows"
|
|
14
|
+
],
|
|
15
|
+
"properties": {
|
|
16
|
+
"schema_version": {
|
|
17
|
+
"const": 1
|
|
18
|
+
},
|
|
19
|
+
"diagram_type": {
|
|
20
|
+
"const": "dataflow"
|
|
21
|
+
},
|
|
22
|
+
"meta": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"required": [
|
|
26
|
+
"title"
|
|
27
|
+
],
|
|
28
|
+
"properties": {
|
|
29
|
+
"title": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"minLength": 1
|
|
32
|
+
},
|
|
33
|
+
"subtitle": {
|
|
34
|
+
"type": "string"
|
|
35
|
+
},
|
|
36
|
+
"output": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"animation": {
|
|
40
|
+
"enum": [
|
|
41
|
+
"trace",
|
|
42
|
+
"none"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"visual_preset": {
|
|
46
|
+
"enum": [
|
|
47
|
+
"classic",
|
|
48
|
+
"signal-flow",
|
|
49
|
+
"blueprint"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"quality_profile": {
|
|
53
|
+
"enum": [
|
|
54
|
+
"standard",
|
|
55
|
+
"showcase"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"views": {
|
|
59
|
+
"$ref": "common.schema.json#/$defs/guidedViews"
|
|
60
|
+
},
|
|
61
|
+
"viewBox": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"prefixItems": [
|
|
64
|
+
{
|
|
65
|
+
"type": "number",
|
|
66
|
+
"minimum": 360
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "number",
|
|
70
|
+
"minimum": 360
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"items": false,
|
|
74
|
+
"minItems": 2,
|
|
75
|
+
"maxItems": 2
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"stages": {
|
|
80
|
+
"type": "array",
|
|
81
|
+
"minItems": 2,
|
|
82
|
+
"maxItems": 5,
|
|
83
|
+
"items": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"additionalProperties": false,
|
|
86
|
+
"required": [
|
|
87
|
+
"label"
|
|
88
|
+
],
|
|
89
|
+
"properties": {
|
|
90
|
+
"label": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"minLength": 1
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"nodes": {
|
|
98
|
+
"type": "array",
|
|
99
|
+
"minItems": 2,
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"required": [
|
|
104
|
+
"id",
|
|
105
|
+
"type",
|
|
106
|
+
"label",
|
|
107
|
+
"stage",
|
|
108
|
+
"row"
|
|
109
|
+
],
|
|
110
|
+
"properties": {
|
|
111
|
+
"id": {
|
|
112
|
+
"$ref": "common.schema.json#/$defs/id"
|
|
113
|
+
},
|
|
114
|
+
"type": {
|
|
115
|
+
"$ref": "common.schema.json#/$defs/componentType"
|
|
116
|
+
},
|
|
117
|
+
"label": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"minLength": 1
|
|
120
|
+
},
|
|
121
|
+
"sublabel": {
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
"tag": {
|
|
125
|
+
"type": "string"
|
|
126
|
+
},
|
|
127
|
+
"stage": {
|
|
128
|
+
"type": "integer",
|
|
129
|
+
"minimum": 0
|
|
130
|
+
},
|
|
131
|
+
"row": {
|
|
132
|
+
"type": "integer",
|
|
133
|
+
"minimum": 0
|
|
134
|
+
},
|
|
135
|
+
"width": {
|
|
136
|
+
"type": "number",
|
|
137
|
+
"minimum": 48
|
|
138
|
+
},
|
|
139
|
+
"height": {
|
|
140
|
+
"type": "number",
|
|
141
|
+
"minimum": 36
|
|
142
|
+
},
|
|
143
|
+
"yOffset": {
|
|
144
|
+
"type": "number"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"flows": {
|
|
150
|
+
"type": "array",
|
|
151
|
+
"items": {
|
|
152
|
+
"type": "object",
|
|
153
|
+
"additionalProperties": false,
|
|
154
|
+
"required": [
|
|
155
|
+
"from",
|
|
156
|
+
"to",
|
|
157
|
+
"label"
|
|
158
|
+
],
|
|
159
|
+
"properties": {
|
|
160
|
+
"id": {
|
|
161
|
+
"$ref": "common.schema.json#/$defs/id"
|
|
162
|
+
},
|
|
163
|
+
"from": {
|
|
164
|
+
"$ref": "common.schema.json#/$defs/id"
|
|
165
|
+
},
|
|
166
|
+
"to": {
|
|
167
|
+
"$ref": "common.schema.json#/$defs/id"
|
|
168
|
+
},
|
|
169
|
+
"label": {
|
|
170
|
+
"type": "string",
|
|
171
|
+
"minLength": 1
|
|
172
|
+
},
|
|
173
|
+
"classification": {
|
|
174
|
+
"type": "string"
|
|
175
|
+
},
|
|
176
|
+
"variant": {
|
|
177
|
+
"$ref": "common.schema.json#/$defs/variant"
|
|
178
|
+
},
|
|
179
|
+
"route": {
|
|
180
|
+
"enum": [
|
|
181
|
+
"auto",
|
|
182
|
+
"straight",
|
|
183
|
+
"vertical-channel",
|
|
184
|
+
"bottom-channel",
|
|
185
|
+
"top-channel"
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
"fromSide": {
|
|
189
|
+
"enum": [
|
|
190
|
+
"left",
|
|
191
|
+
"right",
|
|
192
|
+
"top",
|
|
193
|
+
"bottom"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
"toSide": {
|
|
197
|
+
"enum": [
|
|
198
|
+
"left",
|
|
199
|
+
"right",
|
|
200
|
+
"top",
|
|
201
|
+
"bottom"
|
|
202
|
+
]
|
|
203
|
+
},
|
|
204
|
+
"channelX": {
|
|
205
|
+
"type": "number"
|
|
206
|
+
},
|
|
207
|
+
"channelY": {
|
|
208
|
+
"type": "number"
|
|
209
|
+
},
|
|
210
|
+
"labelAt": {
|
|
211
|
+
"$ref": "common.schema.json#/$defs/point"
|
|
212
|
+
},
|
|
213
|
+
"labelDx": {
|
|
214
|
+
"type": "number"
|
|
215
|
+
},
|
|
216
|
+
"labelDy": {
|
|
217
|
+
"type": "number"
|
|
218
|
+
},
|
|
219
|
+
"labelSegment": {
|
|
220
|
+
"type": "integer",
|
|
221
|
+
"minimum": 0
|
|
222
|
+
},
|
|
223
|
+
"via": {
|
|
224
|
+
"type": "array",
|
|
225
|
+
"items": {
|
|
226
|
+
"$ref": "common.schema.json#/$defs/point"
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"width": {
|
|
230
|
+
"type": "number",
|
|
231
|
+
"minimum": 0.5
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"cards": {
|
|
237
|
+
"$ref": "common.schema.json#/$defs/cards"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|