create-idocs 0.0.0-stage → 0.3.1
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/LICENSE +21 -0
- package/README.md +9 -2
- package/dist/chunk-YVMC6WCS.js +43 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +49 -0
- package/dist/scaffold.d.ts +8 -0
- package/dist/scaffold.js +8 -0
- package/package.json +32 -3
- package/template/.claude/skills/idocs/SKILL.md +108 -0
- package/template/.claude/skills/idocs/assets/examples/shop.diagram.yaml +164 -0
- package/template/.claude/skills/idocs/references/format.md +123 -0
- package/template/.claude/skills/idocs/references/layout.md +39 -0
- package/template/.claude/skills/idocs/references/scenarios.md +104 -0
- package/template/.claude/skills/idocs/references/setup.md +95 -0
- package/template/.claude/skills/idocs/references/troubleshooting.md +49 -0
- package/template/.github/workflows/deploy.yml +60 -0
- package/template/CLAUDE.md +27 -0
- package/template/README.md +30 -0
- package/template/_gitignore +6 -0
- package/template/_pnpm-workspace.yaml +4 -0
- package/template/astro.config.mjs +32 -0
- package/template/diagrams/diagram.schema.json +647 -0
- package/template/diagrams/shop/diagram.yaml +105 -0
- package/template/diagrams/shop/nodes/gateway.md +1 -0
- package/template/diagrams/shop/nodes/orders.md +9 -0
- package/template/package.json +29 -0
- package/template/public/favicon.svg +1 -0
- package/template/src/content/docs/architecture.mdx +13 -0
- package/template/src/content/docs/editing.mdx +62 -0
- package/template/src/content/docs/index.mdx +18 -0
- package/template/src/content.config.ts +7 -0
- package/template/src/env.d.ts +2 -0
- package/template/src/styles/custom.css +16 -0
- package/template/tsconfig.json +6 -0
|
@@ -0,0 +1,647 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "idocs diagram",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"$schema": {
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
"title": {
|
|
10
|
+
"type": "string"
|
|
11
|
+
},
|
|
12
|
+
"description": {
|
|
13
|
+
"description": "Markdown shown above the first view.",
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"kinds": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"propertyNames": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
21
|
+
},
|
|
22
|
+
"additionalProperties": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"properties": {
|
|
25
|
+
"icon": {
|
|
26
|
+
"type": "string"
|
|
27
|
+
},
|
|
28
|
+
"family": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"enum": [
|
|
31
|
+
"blue",
|
|
32
|
+
"amber",
|
|
33
|
+
"violet",
|
|
34
|
+
"green",
|
|
35
|
+
"teal",
|
|
36
|
+
"red",
|
|
37
|
+
"slate"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"additionalProperties": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"edgeKinds": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"propertyNames": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
49
|
+
},
|
|
50
|
+
"additionalProperties": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"properties": {
|
|
53
|
+
"label": {
|
|
54
|
+
"type": "string"
|
|
55
|
+
},
|
|
56
|
+
"color": {
|
|
57
|
+
"type": "string"
|
|
58
|
+
},
|
|
59
|
+
"width": {
|
|
60
|
+
"type": "number",
|
|
61
|
+
"exclusiveMinimum": 0
|
|
62
|
+
},
|
|
63
|
+
"dash": {
|
|
64
|
+
"type": "string"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"required": [
|
|
68
|
+
"label"
|
|
69
|
+
],
|
|
70
|
+
"additionalProperties": false
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"groups": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"propertyNames": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
78
|
+
},
|
|
79
|
+
"additionalProperties": {
|
|
80
|
+
"anyOf": [
|
|
81
|
+
{
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "object",
|
|
86
|
+
"properties": {
|
|
87
|
+
"label": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
},
|
|
90
|
+
"caption": {
|
|
91
|
+
"description": "Muted text after the label (network, runtime).",
|
|
92
|
+
"type": "string"
|
|
93
|
+
},
|
|
94
|
+
"in": {
|
|
95
|
+
"description": "Id of the parent group.",
|
|
96
|
+
"type": "string",
|
|
97
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
98
|
+
},
|
|
99
|
+
"rows": {
|
|
100
|
+
"description": "Explicit rows of member ids, top to bottom. Each row is spread across the group width.",
|
|
101
|
+
"type": "array",
|
|
102
|
+
"items": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"layout": {
|
|
111
|
+
"description": "flow: auto layout (default). row/grid: pack members tightly (for stores and other edge-less cards).",
|
|
112
|
+
"type": "string",
|
|
113
|
+
"enum": [
|
|
114
|
+
"flow",
|
|
115
|
+
"row",
|
|
116
|
+
"grid"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
"columns": {
|
|
120
|
+
"type": "integer",
|
|
121
|
+
"exclusiveMinimum": 0,
|
|
122
|
+
"maximum": 9007199254740991
|
|
123
|
+
},
|
|
124
|
+
"direction": {
|
|
125
|
+
"description": "Flow direction inside a top-level group. AUTO (default) picks the squarer result.",
|
|
126
|
+
"type": "string",
|
|
127
|
+
"enum": [
|
|
128
|
+
"AUTO",
|
|
129
|
+
"RIGHT",
|
|
130
|
+
"DOWN"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"family": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"enum": [
|
|
136
|
+
"blue",
|
|
137
|
+
"amber",
|
|
138
|
+
"violet",
|
|
139
|
+
"green",
|
|
140
|
+
"teal",
|
|
141
|
+
"red",
|
|
142
|
+
"slate"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
"status": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"enum": [
|
|
148
|
+
"built",
|
|
149
|
+
"planned",
|
|
150
|
+
"legacy",
|
|
151
|
+
"optional"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
"icon": {
|
|
155
|
+
"type": "string"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"required": [
|
|
159
|
+
"label"
|
|
160
|
+
],
|
|
161
|
+
"additionalProperties": false
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"nodes": {
|
|
167
|
+
"type": "object",
|
|
168
|
+
"propertyNames": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
171
|
+
},
|
|
172
|
+
"additionalProperties": {
|
|
173
|
+
"anyOf": [
|
|
174
|
+
{
|
|
175
|
+
"type": "string"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"type": "object",
|
|
179
|
+
"properties": {
|
|
180
|
+
"title": {
|
|
181
|
+
"description": "Display name. Defaults to the node id.",
|
|
182
|
+
"type": "string"
|
|
183
|
+
},
|
|
184
|
+
"sub": {
|
|
185
|
+
"description": "One line under the title, rendered in mono (ports, stack, version).",
|
|
186
|
+
"type": "string"
|
|
187
|
+
},
|
|
188
|
+
"lines": {
|
|
189
|
+
"description": "Short body lines inside the card.",
|
|
190
|
+
"type": "array",
|
|
191
|
+
"items": {
|
|
192
|
+
"type": "string"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"icon": {
|
|
196
|
+
"description": "`postgresql`, `logos:redis`, `lucide:server` or ./path/to.svg.",
|
|
197
|
+
"type": "string"
|
|
198
|
+
},
|
|
199
|
+
"kind": {
|
|
200
|
+
"description": "Gives a default icon and colour family. See `kinds`.",
|
|
201
|
+
"type": "string"
|
|
202
|
+
},
|
|
203
|
+
"family": {
|
|
204
|
+
"description": "Accent colour family; overrides the kind default.",
|
|
205
|
+
"type": "string",
|
|
206
|
+
"enum": [
|
|
207
|
+
"blue",
|
|
208
|
+
"amber",
|
|
209
|
+
"violet",
|
|
210
|
+
"green",
|
|
211
|
+
"teal",
|
|
212
|
+
"red",
|
|
213
|
+
"slate"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
"in": {
|
|
217
|
+
"description": "Id of the group this node belongs to.",
|
|
218
|
+
"type": "string",
|
|
219
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
220
|
+
},
|
|
221
|
+
"status": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"enum": [
|
|
224
|
+
"built",
|
|
225
|
+
"planned",
|
|
226
|
+
"legacy",
|
|
227
|
+
"optional"
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
"badge": {
|
|
231
|
+
"description": "Numbered marker on the card.",
|
|
232
|
+
"type": [
|
|
233
|
+
"string",
|
|
234
|
+
"number"
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
"uses": {
|
|
238
|
+
"description": "Small \"uses: a · b\" tag line.",
|
|
239
|
+
"type": "array",
|
|
240
|
+
"items": {
|
|
241
|
+
"type": "string"
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"chips": {
|
|
245
|
+
"description": "Small boxes inside the card, e.g. virtual hosts.",
|
|
246
|
+
"type": "array",
|
|
247
|
+
"items": {
|
|
248
|
+
"anyOf": [
|
|
249
|
+
{
|
|
250
|
+
"type": "string"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"type": "object",
|
|
254
|
+
"properties": {
|
|
255
|
+
"label": {
|
|
256
|
+
"type": "string"
|
|
257
|
+
},
|
|
258
|
+
"sub": {
|
|
259
|
+
"type": "string"
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
"required": [
|
|
263
|
+
"label"
|
|
264
|
+
],
|
|
265
|
+
"additionalProperties": false
|
|
266
|
+
}
|
|
267
|
+
]
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"w": {
|
|
271
|
+
"description": "Card width in px (default 178).",
|
|
272
|
+
"type": "integer",
|
|
273
|
+
"exclusiveMinimum": 0,
|
|
274
|
+
"maximum": 9007199254740991
|
|
275
|
+
},
|
|
276
|
+
"description": {
|
|
277
|
+
"description": "Markdown shown in the detail drawer.",
|
|
278
|
+
"type": "string"
|
|
279
|
+
},
|
|
280
|
+
"doc": {
|
|
281
|
+
"description": "Markdown file for the drawer. Defaults to nodes/<id>.md when present.",
|
|
282
|
+
"type": "string"
|
|
283
|
+
},
|
|
284
|
+
"links": {
|
|
285
|
+
"type": "array",
|
|
286
|
+
"items": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"properties": {
|
|
289
|
+
"label": {
|
|
290
|
+
"type": "string"
|
|
291
|
+
},
|
|
292
|
+
"url": {
|
|
293
|
+
"type": "string"
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"required": [
|
|
297
|
+
"label",
|
|
298
|
+
"url"
|
|
299
|
+
],
|
|
300
|
+
"additionalProperties": false
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
"refs": {
|
|
304
|
+
"description": "Source files or URLs this node is based on.",
|
|
305
|
+
"type": "array",
|
|
306
|
+
"items": {
|
|
307
|
+
"type": "string"
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"tags": {
|
|
311
|
+
"type": "array",
|
|
312
|
+
"items": {
|
|
313
|
+
"type": "string"
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"additionalProperties": false
|
|
318
|
+
}
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
"edges": {
|
|
323
|
+
"type": "array",
|
|
324
|
+
"items": {
|
|
325
|
+
"anyOf": [
|
|
326
|
+
{
|
|
327
|
+
"type": "string",
|
|
328
|
+
"description": "a -> b, or a <-> b"
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"type": "object",
|
|
332
|
+
"properties": {
|
|
333
|
+
"id": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
336
|
+
},
|
|
337
|
+
"from": {
|
|
338
|
+
"type": "string",
|
|
339
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
340
|
+
},
|
|
341
|
+
"to": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
344
|
+
},
|
|
345
|
+
"label": {
|
|
346
|
+
"type": "string"
|
|
347
|
+
},
|
|
348
|
+
"kind": {
|
|
349
|
+
"description": "http (default), channel, tunnel, queue, ws, data, or a custom edgeKind.",
|
|
350
|
+
"type": "string"
|
|
351
|
+
},
|
|
352
|
+
"both": {
|
|
353
|
+
"description": "Arrow at both ends.",
|
|
354
|
+
"type": "boolean"
|
|
355
|
+
},
|
|
356
|
+
"hidden": {
|
|
357
|
+
"description": "Not drawn until a scenario uses it. Lets scenarios cross relationships you would rather not clutter the diagram with.",
|
|
358
|
+
"type": "boolean"
|
|
359
|
+
},
|
|
360
|
+
"status": {
|
|
361
|
+
"type": "string",
|
|
362
|
+
"enum": [
|
|
363
|
+
"built",
|
|
364
|
+
"planned",
|
|
365
|
+
"legacy",
|
|
366
|
+
"optional"
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
"key": {
|
|
370
|
+
"description": "Letter shown on the edge and in the interfaces table.",
|
|
371
|
+
"type": "string"
|
|
372
|
+
},
|
|
373
|
+
"auth": {
|
|
374
|
+
"type": "string"
|
|
375
|
+
},
|
|
376
|
+
"payload": {
|
|
377
|
+
"description": "What travels over this edge.",
|
|
378
|
+
"type": "string"
|
|
379
|
+
},
|
|
380
|
+
"transport": {
|
|
381
|
+
"type": "string"
|
|
382
|
+
},
|
|
383
|
+
"note": {
|
|
384
|
+
"description": "Markdown.",
|
|
385
|
+
"type": "string"
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
"required": [
|
|
389
|
+
"from",
|
|
390
|
+
"to"
|
|
391
|
+
],
|
|
392
|
+
"additionalProperties": false
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"type": "object",
|
|
396
|
+
"maxProperties": 1,
|
|
397
|
+
"patternProperties": {
|
|
398
|
+
"^\\S+\\s*(<->|->)\\s*\\S+$": {
|
|
399
|
+
"anyOf": [
|
|
400
|
+
{
|
|
401
|
+
"type": "string",
|
|
402
|
+
"description": "label"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"type": "object",
|
|
406
|
+
"properties": {
|
|
407
|
+
"id": {
|
|
408
|
+
"type": "string",
|
|
409
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
410
|
+
},
|
|
411
|
+
"label": {
|
|
412
|
+
"type": "string"
|
|
413
|
+
},
|
|
414
|
+
"kind": {
|
|
415
|
+
"description": "http (default), channel, tunnel, queue, ws, data, or a custom edgeKind.",
|
|
416
|
+
"type": "string"
|
|
417
|
+
},
|
|
418
|
+
"both": {
|
|
419
|
+
"description": "Arrow at both ends.",
|
|
420
|
+
"type": "boolean"
|
|
421
|
+
},
|
|
422
|
+
"hidden": {
|
|
423
|
+
"description": "Not drawn until a scenario uses it. Lets scenarios cross relationships you would rather not clutter the diagram with.",
|
|
424
|
+
"type": "boolean"
|
|
425
|
+
},
|
|
426
|
+
"status": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"enum": [
|
|
429
|
+
"built",
|
|
430
|
+
"planned",
|
|
431
|
+
"legacy",
|
|
432
|
+
"optional"
|
|
433
|
+
]
|
|
434
|
+
},
|
|
435
|
+
"key": {
|
|
436
|
+
"description": "Letter shown on the edge and in the interfaces table.",
|
|
437
|
+
"type": "string"
|
|
438
|
+
},
|
|
439
|
+
"auth": {
|
|
440
|
+
"type": "string"
|
|
441
|
+
},
|
|
442
|
+
"payload": {
|
|
443
|
+
"description": "What travels over this edge.",
|
|
444
|
+
"type": "string"
|
|
445
|
+
},
|
|
446
|
+
"transport": {
|
|
447
|
+
"type": "string"
|
|
448
|
+
},
|
|
449
|
+
"note": {
|
|
450
|
+
"description": "Markdown.",
|
|
451
|
+
"type": "string"
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
"required": [],
|
|
455
|
+
"additionalProperties": false
|
|
456
|
+
}
|
|
457
|
+
]
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
]
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"views": {
|
|
465
|
+
"type": "object",
|
|
466
|
+
"propertyNames": {
|
|
467
|
+
"type": "string",
|
|
468
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
469
|
+
},
|
|
470
|
+
"additionalProperties": {
|
|
471
|
+
"type": "object",
|
|
472
|
+
"properties": {
|
|
473
|
+
"title": {
|
|
474
|
+
"type": "string"
|
|
475
|
+
},
|
|
476
|
+
"summary": {
|
|
477
|
+
"description": "Markdown shown above the diagram.",
|
|
478
|
+
"type": "string"
|
|
479
|
+
},
|
|
480
|
+
"include": {
|
|
481
|
+
"description": "Node or group ids. Groups include their members.",
|
|
482
|
+
"anyOf": [
|
|
483
|
+
{
|
|
484
|
+
"type": "string",
|
|
485
|
+
"const": "all"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"type": "array",
|
|
489
|
+
"items": {
|
|
490
|
+
"type": "string",
|
|
491
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
]
|
|
495
|
+
},
|
|
496
|
+
"exclude": {
|
|
497
|
+
"type": "array",
|
|
498
|
+
"items": {
|
|
499
|
+
"type": "string",
|
|
500
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
"direction": {
|
|
504
|
+
"description": "Main flow direction. AUTO (default) tries RIGHT and DOWN and keeps the one that reads larger.",
|
|
505
|
+
"type": "string",
|
|
506
|
+
"enum": [
|
|
507
|
+
"AUTO",
|
|
508
|
+
"RIGHT",
|
|
509
|
+
"DOWN",
|
|
510
|
+
"LEFT",
|
|
511
|
+
"UP"
|
|
512
|
+
]
|
|
513
|
+
},
|
|
514
|
+
"keys": {
|
|
515
|
+
"description": "Assign letter keys (A, B, ...) to edges.",
|
|
516
|
+
"type": "boolean"
|
|
517
|
+
},
|
|
518
|
+
"interfaces": {
|
|
519
|
+
"description": "Show the interfaces table under the diagram.",
|
|
520
|
+
"type": "boolean"
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
"additionalProperties": false
|
|
524
|
+
}
|
|
525
|
+
},
|
|
526
|
+
"scenarios": {
|
|
527
|
+
"type": "object",
|
|
528
|
+
"propertyNames": {
|
|
529
|
+
"type": "string",
|
|
530
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
531
|
+
},
|
|
532
|
+
"additionalProperties": {
|
|
533
|
+
"type": "object",
|
|
534
|
+
"properties": {
|
|
535
|
+
"title": {
|
|
536
|
+
"type": "string"
|
|
537
|
+
},
|
|
538
|
+
"mode": {
|
|
539
|
+
"description": "How the scenario opens: packets over the diagram, a sequence diagram, or a swimlane story.",
|
|
540
|
+
"type": "string",
|
|
541
|
+
"enum": [
|
|
542
|
+
"flow",
|
|
543
|
+
"sequence",
|
|
544
|
+
"story"
|
|
545
|
+
]
|
|
546
|
+
},
|
|
547
|
+
"lanes": {
|
|
548
|
+
"description": "Columns of the story view, left to right. Nodes you leave out get a lane of their own at the end.",
|
|
549
|
+
"type": "array",
|
|
550
|
+
"items": {
|
|
551
|
+
"type": "object",
|
|
552
|
+
"properties": {
|
|
553
|
+
"title": {
|
|
554
|
+
"type": "string"
|
|
555
|
+
},
|
|
556
|
+
"sub": {
|
|
557
|
+
"description": "Under the title. Defaults to the node subtitle, or the node titles joined.",
|
|
558
|
+
"type": "string"
|
|
559
|
+
},
|
|
560
|
+
"nodes": {
|
|
561
|
+
"minItems": 1,
|
|
562
|
+
"type": "array",
|
|
563
|
+
"items": {
|
|
564
|
+
"type": "string",
|
|
565
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
566
|
+
},
|
|
567
|
+
"description": "Nodes shown in this lane."
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
"required": [
|
|
571
|
+
"title",
|
|
572
|
+
"nodes"
|
|
573
|
+
],
|
|
574
|
+
"additionalProperties": false
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
"summary": {
|
|
578
|
+
"description": "Markdown: the story in a few sentences.",
|
|
579
|
+
"type": "string"
|
|
580
|
+
},
|
|
581
|
+
"view": {
|
|
582
|
+
"description": "View to play on. Defaults to the first view.",
|
|
583
|
+
"type": "string",
|
|
584
|
+
"pattern": "^[A-Za-z0-9_.-]+$"
|
|
585
|
+
},
|
|
586
|
+
"phases": {
|
|
587
|
+
"type": "array",
|
|
588
|
+
"items": {
|
|
589
|
+
"type": "object",
|
|
590
|
+
"properties": {
|
|
591
|
+
"title": {
|
|
592
|
+
"type": "string"
|
|
593
|
+
},
|
|
594
|
+
"caption": {
|
|
595
|
+
"type": "string"
|
|
596
|
+
},
|
|
597
|
+
"steps": {
|
|
598
|
+
"minItems": 1,
|
|
599
|
+
"type": "array",
|
|
600
|
+
"items": {
|
|
601
|
+
"anyOf": [
|
|
602
|
+
{
|
|
603
|
+
"type": "string"
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"type": "object"
|
|
607
|
+
}
|
|
608
|
+
],
|
|
609
|
+
"description": "a -> b: label | at node: label | par: [steps] | { from, to, label, kind, note, status, via }"
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
"required": [
|
|
614
|
+
"title",
|
|
615
|
+
"steps"
|
|
616
|
+
],
|
|
617
|
+
"additionalProperties": false
|
|
618
|
+
}
|
|
619
|
+
},
|
|
620
|
+
"steps": {
|
|
621
|
+
"type": "array",
|
|
622
|
+
"items": {
|
|
623
|
+
"anyOf": [
|
|
624
|
+
{
|
|
625
|
+
"type": "string"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"type": "object"
|
|
629
|
+
}
|
|
630
|
+
],
|
|
631
|
+
"description": "a -> b: label | at node: label | par: [steps] | { from, to, label, kind, note, status, via }"
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
"required": [
|
|
636
|
+
"title"
|
|
637
|
+
],
|
|
638
|
+
"additionalProperties": false
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
|
+
"required": [
|
|
643
|
+
"title",
|
|
644
|
+
"nodes"
|
|
645
|
+
],
|
|
646
|
+
"additionalProperties": false
|
|
647
|
+
}
|