@documentation-robotics/cli 0.1.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.
Files changed (169) hide show
  1. package/PYTHON_CLI_PARITY.md +265 -0
  2. package/PYTHON_CLI_STRUCTURE_UPDATE.md +246 -0
  3. package/README.md +926 -0
  4. package/biome.json +42 -0
  5. package/bunfig.toml +3 -0
  6. package/dist/ai/claude-client.js +71 -0
  7. package/dist/ai/claude-client.js.map +7 -0
  8. package/dist/ai/context-provider.js +129 -0
  9. package/dist/ai/context-provider.js.map +7 -0
  10. package/dist/ai/tools.js +231 -0
  11. package/dist/ai/tools.js.map +7 -0
  12. package/dist/cli.js +224 -0
  13. package/dist/cli.js.map +7 -0
  14. package/dist/commands/add.js +51 -0
  15. package/dist/commands/add.js.map +7 -0
  16. package/dist/commands/changeset.js +174 -0
  17. package/dist/commands/changeset.js.map +7 -0
  18. package/dist/commands/chat.js +111 -0
  19. package/dist/commands/chat.js.map +7 -0
  20. package/dist/commands/conformance.js +132 -0
  21. package/dist/commands/conformance.js.map +7 -0
  22. package/dist/commands/delete.js +31 -0
  23. package/dist/commands/delete.js.map +7 -0
  24. package/dist/commands/element.js +28 -0
  25. package/dist/commands/element.js.map +7 -0
  26. package/dist/commands/export.js +65 -0
  27. package/dist/commands/export.js.map +7 -0
  28. package/dist/commands/info.js +40 -0
  29. package/dist/commands/info.js.map +7 -0
  30. package/dist/commands/init.js +45 -0
  31. package/dist/commands/init.js.map +7 -0
  32. package/dist/commands/list.js +32 -0
  33. package/dist/commands/list.js.map +7 -0
  34. package/dist/commands/migrate.js +36 -0
  35. package/dist/commands/migrate.js.map +7 -0
  36. package/dist/commands/project.js +74 -0
  37. package/dist/commands/project.js.map +7 -0
  38. package/dist/commands/relationship.js +118 -0
  39. package/dist/commands/relationship.js.map +7 -0
  40. package/dist/commands/search.js +48 -0
  41. package/dist/commands/search.js.map +7 -0
  42. package/dist/commands/show.js +38 -0
  43. package/dist/commands/show.js.map +7 -0
  44. package/dist/commands/trace.js +60 -0
  45. package/dist/commands/trace.js.map +7 -0
  46. package/dist/commands/update.js +37 -0
  47. package/dist/commands/update.js.map +7 -0
  48. package/dist/commands/upgrade.js +152 -0
  49. package/dist/commands/upgrade.js.map +7 -0
  50. package/dist/commands/validate.js +71 -0
  51. package/dist/commands/validate.js.map +7 -0
  52. package/dist/commands/version.js +20 -0
  53. package/dist/commands/version.js.map +7 -0
  54. package/dist/commands/visualize.js +51 -0
  55. package/dist/commands/visualize.js.map +7 -0
  56. package/dist/core/active-changeset.js +52 -0
  57. package/dist/core/active-changeset.js.map +7 -0
  58. package/dist/core/changeset.js +244 -0
  59. package/dist/core/changeset.js.map +7 -0
  60. package/dist/core/dependency-tracker.js +322 -0
  61. package/dist/core/dependency-tracker.js.map +7 -0
  62. package/dist/core/element.js +65 -0
  63. package/dist/core/element.js.map +7 -0
  64. package/dist/core/layer.js +75 -0
  65. package/dist/core/layer.js.map +7 -0
  66. package/dist/core/manifest.js +57 -0
  67. package/dist/core/manifest.js.map +7 -0
  68. package/dist/core/migration-registry.js +131 -0
  69. package/dist/core/migration-registry.js.map +7 -0
  70. package/dist/core/model.js +455 -0
  71. package/dist/core/model.js.map +7 -0
  72. package/dist/core/projection-engine.js +288 -0
  73. package/dist/core/projection-engine.js.map +7 -0
  74. package/dist/core/reference-registry.js +188 -0
  75. package/dist/core/reference-registry.js.map +7 -0
  76. package/dist/core/relationship-registry.js +114 -0
  77. package/dist/core/relationship-registry.js.map +7 -0
  78. package/dist/core/relationships.js +78 -0
  79. package/dist/core/relationships.js.map +7 -0
  80. package/dist/export/archimate-exporter.js +111 -0
  81. package/dist/export/archimate-exporter.js.map +7 -0
  82. package/dist/export/export-manager.js +63 -0
  83. package/dist/export/export-manager.js.map +7 -0
  84. package/dist/export/graphml-exporter.js +39 -0
  85. package/dist/export/graphml-exporter.js.map +7 -0
  86. package/dist/export/index.js +17 -0
  87. package/dist/export/index.js.map +7 -0
  88. package/dist/export/json-schema-exporter.js +60 -0
  89. package/dist/export/json-schema-exporter.js.map +7 -0
  90. package/dist/export/markdown-exporter.js +99 -0
  91. package/dist/export/markdown-exporter.js.map +7 -0
  92. package/dist/export/openapi-exporter.js +85 -0
  93. package/dist/export/openapi-exporter.js.map +7 -0
  94. package/dist/export/plantuml-exporter.js +60 -0
  95. package/dist/export/plantuml-exporter.js.map +7 -0
  96. package/dist/export/types.js +36 -0
  97. package/dist/export/types.js.map +7 -0
  98. package/dist/schemas/bundled/01-motivation-layer.schema.json +942 -0
  99. package/dist/schemas/bundled/02-business-layer.schema.json +1293 -0
  100. package/dist/schemas/bundled/03-security-layer.schema.json +2177 -0
  101. package/dist/schemas/bundled/04-application-layer.schema.json +1328 -0
  102. package/dist/schemas/bundled/05-technology-layer.schema.json +1465 -0
  103. package/dist/schemas/bundled/06-api-layer.schema.json +1743 -0
  104. package/dist/schemas/bundled/07-data-model-layer.schema.json +1253 -0
  105. package/dist/schemas/bundled/08-datastore-layer.schema.json +892 -0
  106. package/dist/schemas/bundled/09-ux-layer.schema.json +1506 -0
  107. package/dist/schemas/bundled/10-navigation-layer.schema.json +843 -0
  108. package/dist/schemas/bundled/11-apm-observability-layer.schema.json +1430 -0
  109. package/dist/schemas/bundled/12-testing-layer.schema.json +1091 -0
  110. package/dist/schemas/bundled/common/layer-extensions.schema.json +266 -0
  111. package/dist/schemas/bundled/common/predicates.schema.json +493 -0
  112. package/dist/schemas/bundled/common/relationships.schema.json +791 -0
  113. package/dist/schemas/bundled/common/source-references.schema.json +71 -0
  114. package/dist/schemas/bundled/link-registry.json +1839 -0
  115. package/dist/schemas/bundled/link-registry.schema.json +339 -0
  116. package/dist/schemas/bundled/relationship-catalog.json +1302 -0
  117. package/dist/schemas/bundled/relationship-type.schema.json +221 -0
  118. package/dist/server/server.js +1207 -0
  119. package/dist/server/server.js.map +7 -0
  120. package/dist/server/telemetry-middleware.js +24 -0
  121. package/dist/server/telemetry-middleware.js.map +7 -0
  122. package/dist/telemetry/console-interceptor.js +34 -0
  123. package/dist/telemetry/console-interceptor.js.map +7 -0
  124. package/dist/telemetry/index.js +54 -0
  125. package/dist/telemetry/index.js.map +7 -0
  126. package/dist/telemetry/resilient-exporter.js +41 -0
  127. package/dist/telemetry/resilient-exporter.js.map +7 -0
  128. package/dist/telemetry/resilient-log-exporter.js +41 -0
  129. package/dist/telemetry/resilient-log-exporter.js.map +7 -0
  130. package/dist/telemetry/test-instrumentation.js +32 -0
  131. package/dist/telemetry/test-instrumentation.js.map +7 -0
  132. package/dist/types/index.js +1 -0
  133. package/dist/types/index.js.map +7 -0
  134. package/dist/utils/element-utils.js +11 -0
  135. package/dist/utils/element-utils.js.map +7 -0
  136. package/dist/utils/errors.js +105 -0
  137. package/dist/utils/errors.js.map +7 -0
  138. package/dist/utils/file-io.js +69 -0
  139. package/dist/utils/file-io.js.map +7 -0
  140. package/dist/utils/globals.js +28 -0
  141. package/dist/utils/globals.js.map +7 -0
  142. package/dist/utils/model-path.js +22 -0
  143. package/dist/utils/model-path.js.map +7 -0
  144. package/dist/utils/project-paths.js +45 -0
  145. package/dist/utils/project-paths.js.map +7 -0
  146. package/dist/utils/spec-installer.js +85 -0
  147. package/dist/utils/spec-installer.js.map +7 -0
  148. package/dist/utils/spec-version.js +33 -0
  149. package/dist/utils/spec-version.js.map +7 -0
  150. package/dist/validators/index.js +15 -0
  151. package/dist/validators/index.js.map +7 -0
  152. package/dist/validators/naming-validator.js +82 -0
  153. package/dist/validators/naming-validator.js.map +7 -0
  154. package/dist/validators/reference-validator.js +106 -0
  155. package/dist/validators/reference-validator.js.map +7 -0
  156. package/dist/validators/schema-validator.js +148 -0
  157. package/dist/validators/schema-validator.js.map +7 -0
  158. package/dist/validators/semantic-validator.js +80 -0
  159. package/dist/validators/semantic-validator.js.map +7 -0
  160. package/dist/validators/types.js +48 -0
  161. package/dist/validators/types.js.map +7 -0
  162. package/dist/validators/validator.js +67 -0
  163. package/dist/validators/validator.js.map +7 -0
  164. package/docs/TEST-INSTRUMENTATION.md +405 -0
  165. package/docs/telemetry.md +427 -0
  166. package/package.json +70 -0
  167. package/test-debug.js +33 -0
  168. package/test-special.mjs +46 -0
  169. package/test_runner.ts +7 -0
@@ -0,0 +1,843 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://example.com/schemas/10-navigation-layer.schema.json",
4
+ "title": "Navigation Layer Layer Schema",
5
+ "description": "Defines application routing, navigation flows, transitions, and guards for channel-agnostic navigation across web, mobile, voice, and chat interfaces.",
6
+ "layerMetadata": {
7
+ "layerId": "10-navigation-layer",
8
+ "layerName": "Navigation Layer",
9
+ "intraLayerRelationshipSupport": true,
10
+ "crossLayerRelationshipSupport": true,
11
+ "relationshipCatalogVersion": "2.1.0"
12
+ },
13
+ "intraLayerRelationships": {
14
+ "$comment": "Relationships between entities within this layer. References relationship-catalog.json by ID.",
15
+ "allowed": [
16
+ {
17
+ "relationshipTypeId": "specialization",
18
+ "sourceTypes": ["PremiumAccount", "Schema"],
19
+ "targetTypes": ["Account", "Schema"],
20
+ "examples": [
21
+ {
22
+ "source": "PremiumAccount",
23
+ "target": "Account",
24
+ "description": "Premium account specializes the general account concept"
25
+ },
26
+ {
27
+ "source": "Schema",
28
+ "target": "Schema",
29
+ "description": "API schema specializes another via allOf/oneOf/anyOf composition",
30
+ "layer": "06-api"
31
+ }
32
+ ]
33
+ },
34
+ {
35
+ "relationshipTypeId": "flow",
36
+ "sourceTypes": ["BusinessProcess", "CoverageRequirement", "TestCoverageTarget"],
37
+ "targetTypes": ["BusinessProcess", "CoverageRequirement", "TestCaseSketch"],
38
+ "examples": [
39
+ {
40
+ "source": "BusinessProcess",
41
+ "target": "BusinessProcess",
42
+ "description": "One business process flows to the next in sequence"
43
+ },
44
+ {
45
+ "source": "TestCoverageTarget",
46
+ "target": "CoverageRequirement",
47
+ "description": "Target flows to requirements that specify its coverage",
48
+ "layer": "12-testing"
49
+ },
50
+ {
51
+ "source": "CoverageRequirement",
52
+ "target": "TestCaseSketch",
53
+ "description": "Requirement flows to sketches that implement it",
54
+ "layer": "12-testing"
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "relationshipTypeId": "enforces-requirement",
60
+ "sourceTypes": ["NavigationGuard"],
61
+ "targetTypes": ["Requirement"],
62
+ "examples": [
63
+ {
64
+ "source": "NavigationGuard",
65
+ "target": "Requirement",
66
+ "description": "Auth guard enforces authentication requirement"
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "relationshipTypeId": "navigates-to",
72
+ "sourceTypes": ["UIView"],
73
+ "targetTypes": ["UIView"],
74
+ "examples": [
75
+ {
76
+ "source": "UIView",
77
+ "target": "UIView",
78
+ "description": "Login view navigates to dashboard view"
79
+ }
80
+ ]
81
+ }
82
+ ]
83
+ },
84
+ "crossLayerRelationships": {
85
+ "$comment": "Relationships to/from entities in other layers",
86
+ "outgoing": [
87
+ {
88
+ "id": "motivation-governed-by-principles",
89
+ "predicate": "governed-by-principles",
90
+ "inversePredicate": "governs",
91
+ "targetLayer": "01-motivation",
92
+ "targetTypes": ["GovernedByPrinciple"],
93
+ "sourceTypes": ["BusinessService"],
94
+ "fieldPath": "motivation.governed-by-principles",
95
+ "cardinality": "array",
96
+ "format": "reference",
97
+ "strength": "high",
98
+ "required": false,
99
+ "description": "BusinessService governed by Principles",
100
+ "examples": [
101
+ {
102
+ "elementType": "BusinessService",
103
+ "elementId": "order-service",
104
+ "elementName": "Order Processing Service",
105
+ "fieldPath": "motivation.governed-by-principles",
106
+ "value": "principle-customer-first,principle-automation",
107
+ "layer": "02-business"
108
+ },
109
+ {
110
+ "elementType": "ApplicationService",
111
+ "elementId": "product-service",
112
+ "elementName": "product-service",
113
+ "fieldPath": "motivation.governed-by-principles",
114
+ "value": "principle-api-first,principle-cloud-native",
115
+ "layer": "04-application"
116
+ }
117
+ ]
118
+ },
119
+ {
120
+ "id": "motivation-supports-goals",
121
+ "predicate": "supports-goals",
122
+ "inversePredicate": "supported-by",
123
+ "targetLayer": "01-motivation",
124
+ "targetTypes": ["SupportsGoal"],
125
+ "sourceTypes": ["BusinessService"],
126
+ "fieldPath": "motivation.supports-goals",
127
+ "cardinality": "array",
128
+ "format": "reference",
129
+ "strength": "high",
130
+ "required": false,
131
+ "description": "BusinessService supports Goals",
132
+ "examples": [
133
+ {
134
+ "elementType": "BusinessService",
135
+ "elementId": "order-service",
136
+ "elementName": "Order Processing Service",
137
+ "fieldPath": "motivation.supports-goals",
138
+ "value": "goal-customer-satisfaction,goal-revenue-growth",
139
+ "layer": "02-business"
140
+ },
141
+ {
142
+ "elementType": "ApplicationService",
143
+ "elementId": "product-service",
144
+ "elementName": "product-service",
145
+ "fieldPath": "motivation.supports-goals",
146
+ "value": "goal-product-catalog-accuracy,goal-customer-satisfaction",
147
+ "layer": "04-application"
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "id": "security-classification",
153
+ "predicate": "classification",
154
+ "inversePredicate": "referenced-by",
155
+ "targetLayer": "03-security",
156
+ "targetTypes": ["Classification"],
157
+ "sourceTypes": ["Artifact"],
158
+ "fieldPath": "security.classification",
159
+ "cardinality": "single",
160
+ "format": "string",
161
+ "strength": "low",
162
+ "required": false,
163
+ "description": "Links to Classification in target layer",
164
+ "examples": [
165
+ {
166
+ "elementType": "Artifact",
167
+ "elementId": "product-db",
168
+ "elementName": "product-db",
169
+ "fieldPath": "security.classification",
170
+ "value": "internal",
171
+ "layer": "05-technology"
172
+ },
173
+ {
174
+ "elementType": "Artifact",
175
+ "elementId": "customer-db",
176
+ "elementName": "customer-db",
177
+ "fieldPath": "security.classification",
178
+ "value": "restricted",
179
+ "layer": "05-technology"
180
+ }
181
+ ]
182
+ }
183
+ ],
184
+ "incoming": []
185
+ },
186
+ "type": "object",
187
+ "properties": {
188
+ "navigation-graphs": {
189
+ "type": "array",
190
+ "description": "Collection of NavigationGraph entities",
191
+ "items": {
192
+ "$ref": "#/definitions/NavigationGraph"
193
+ }
194
+ },
195
+ "routes": {
196
+ "type": "array",
197
+ "description": "Collection of Route entities",
198
+ "items": {
199
+ "$ref": "#/definitions/Route"
200
+ }
201
+ },
202
+ "route-metas": {
203
+ "type": "array",
204
+ "description": "Collection of RouteMeta entities",
205
+ "items": {
206
+ "$ref": "#/definitions/RouteMeta"
207
+ }
208
+ },
209
+ "breadcrumb-configs": {
210
+ "type": "array",
211
+ "description": "Collection of BreadcrumbConfig entities",
212
+ "items": {
213
+ "$ref": "#/definitions/BreadcrumbConfig"
214
+ }
215
+ },
216
+ "navigation-transitions": {
217
+ "type": "array",
218
+ "description": "Collection of NavigationTransition entities",
219
+ "items": {
220
+ "$ref": "#/definitions/NavigationTransition"
221
+ }
222
+ },
223
+ "navigation-guards": {
224
+ "type": "array",
225
+ "description": "Collection of NavigationGuard entities",
226
+ "items": {
227
+ "$ref": "#/definitions/NavigationGuard"
228
+ }
229
+ },
230
+ "guard-conditions": {
231
+ "type": "array",
232
+ "description": "Collection of GuardCondition entities",
233
+ "items": {
234
+ "$ref": "#/definitions/GuardCondition"
235
+ }
236
+ },
237
+ "guard-actions": {
238
+ "type": "array",
239
+ "description": "Collection of GuardAction entities",
240
+ "items": {
241
+ "$ref": "#/definitions/GuardAction"
242
+ }
243
+ },
244
+ "navigation-flows": {
245
+ "type": "array",
246
+ "description": "Collection of NavigationFlow entities",
247
+ "items": {
248
+ "$ref": "#/definitions/NavigationFlow"
249
+ }
250
+ },
251
+ "flow-steps": {
252
+ "type": "array",
253
+ "description": "Collection of FlowStep entities",
254
+ "items": {
255
+ "$ref": "#/definitions/FlowStep"
256
+ }
257
+ },
258
+ "context-variables": {
259
+ "type": "array",
260
+ "description": "Collection of ContextVariable entities",
261
+ "items": {
262
+ "$ref": "#/definitions/ContextVariable"
263
+ }
264
+ },
265
+ "data-mappings": {
266
+ "type": "array",
267
+ "description": "Collection of DataMapping entities",
268
+ "items": {
269
+ "$ref": "#/definitions/DataMapping"
270
+ }
271
+ },
272
+ "process-trackings": {
273
+ "type": "array",
274
+ "description": "Collection of ProcessTracking entities",
275
+ "items": {
276
+ "$ref": "#/definitions/ProcessTracking"
277
+ }
278
+ },
279
+ "flow-analyticses": {
280
+ "type": "array",
281
+ "description": "Collection of FlowAnalytics entities",
282
+ "items": {
283
+ "$ref": "#/definitions/FlowAnalytics"
284
+ }
285
+ },
286
+ "notification-actions": {
287
+ "type": "array",
288
+ "description": "Collection of NotificationAction entities",
289
+ "items": {
290
+ "$ref": "#/definitions/NotificationAction"
291
+ }
292
+ }
293
+ },
294
+ "definitions": {
295
+ "RouteType": {
296
+ "type": "string",
297
+ "enum": ["experience", "redirect", "external"]
298
+ },
299
+ "TruncationType": {
300
+ "type": "string",
301
+ "enum": ["none", "middle", "start", "end"]
302
+ },
303
+ "BreadcrumbMode": {
304
+ "type": "string",
305
+ "enum": ["static", "dynamic", "hybrid"]
306
+ },
307
+ "NavigationTrigger": {
308
+ "type": "string",
309
+ "enum": [
310
+ "user-action",
311
+ "submit",
312
+ "success",
313
+ "failure",
314
+ "cancel",
315
+ "automatic",
316
+ "deeplink",
317
+ "back",
318
+ "timeout"
319
+ ]
320
+ },
321
+ "GuardType": {
322
+ "type": "string",
323
+ "enum": ["authentication", "authorization", "validation", "data-loaded", "custom"]
324
+ },
325
+ "HttpMethod": {
326
+ "type": "string",
327
+ "enum": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]
328
+ },
329
+ "GuardActionType": {
330
+ "type": "string",
331
+ "enum": ["redirect", "show-error", "navigate-back", "abort"]
332
+ },
333
+ "WaitType": {
334
+ "type": "string",
335
+ "enum": ["user-action", "approval", "external-event", "timeout"]
336
+ },
337
+ "ContextScope": {
338
+ "type": "string",
339
+ "enum": ["flow", "session", "user"]
340
+ },
341
+ "StorageType": {
342
+ "type": "string",
343
+ "enum": ["memory", "session-storage", "local-storage", "server-session", "database"]
344
+ },
345
+ "NotificationType": {
346
+ "type": "string",
347
+ "enum": ["email", "sms", "push", "webhook"]
348
+ },
349
+ "NavigationGraph": {
350
+ "type": "object",
351
+ "description": "Complete navigation structure for application",
352
+ "required": ["id", "name", "version", "application"],
353
+ "properties": {
354
+ "id": {
355
+ "type": "string",
356
+ "format": "uuid",
357
+ "minLength": 1
358
+ },
359
+ "name": {
360
+ "type": "string",
361
+ "minLength": 1
362
+ },
363
+ "version": {
364
+ "type": "string",
365
+ "minLength": 1
366
+ },
367
+ "application": {
368
+ "type": "string",
369
+ "minLength": 1
370
+ },
371
+ "description": {
372
+ "type": "string",
373
+ "minLength": 1
374
+ },
375
+ "routes": {
376
+ "type": "array",
377
+ "description": "Contains relationship",
378
+ "items": {
379
+ "type": "string"
380
+ }
381
+ },
382
+ "transitions": {
383
+ "type": "array",
384
+ "description": "Contains relationship",
385
+ "items": {
386
+ "type": "string"
387
+ }
388
+ },
389
+ "guards": {
390
+ "type": "array",
391
+ "description": "Contains relationship",
392
+ "items": {
393
+ "type": "string"
394
+ }
395
+ }
396
+ }
397
+ },
398
+ "Route": {
399
+ "type": "object",
400
+ "description": "Single route/destination in the application (channel-agnostic)",
401
+ "required": ["id", "name", "type"],
402
+ "properties": {
403
+ "id": {
404
+ "type": "string",
405
+ "format": "uuid",
406
+ "minLength": 1
407
+ },
408
+ "name": {
409
+ "type": "string",
410
+ "minLength": 1
411
+ },
412
+ "title": {
413
+ "type": "string",
414
+ "minLength": 1
415
+ },
416
+ "description": {
417
+ "type": "string",
418
+ "minLength": 1
419
+ },
420
+ "type": {
421
+ "$ref": "#/definitions/RouteType"
422
+ },
423
+ "source": {
424
+ "type": "object",
425
+ "description": "Source code reference",
426
+ "properties": {
427
+ "reference": {
428
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
429
+ }
430
+ }
431
+ }
432
+ }
433
+ },
434
+ "RouteMeta": {
435
+ "type": "object",
436
+ "description": "Route metadata",
437
+ "required": ["id", "name", "roles", "permissions", "layout", "keepAlive", "transition"],
438
+ "properties": {
439
+ "id": {
440
+ "type": "string",
441
+ "format": "uuid",
442
+ "minLength": 1
443
+ },
444
+ "name": {
445
+ "type": "string",
446
+ "minLength": 1
447
+ },
448
+ "requiresAuth": {
449
+ "type": "boolean"
450
+ },
451
+ "roles": {
452
+ "type": "string",
453
+ "minLength": 1
454
+ },
455
+ "permissions": {
456
+ "type": "string",
457
+ "minLength": 1
458
+ },
459
+ "layout": {
460
+ "type": "string",
461
+ "minLength": 1
462
+ },
463
+ "breadcrumb": {
464
+ "type": "string",
465
+ "minLength": 1
466
+ },
467
+ "keepAlive": {
468
+ "type": "boolean"
469
+ },
470
+ "transition": {
471
+ "type": "string",
472
+ "minLength": 1
473
+ }
474
+ }
475
+ },
476
+ "BreadcrumbConfig": {
477
+ "type": "object",
478
+ "description": "Configuration for breadcrumb navigation display, specifying path generation rules, separator styles, truncation behavior, and home link settings. Provides users with location context and navigation history.",
479
+ "required": ["id", "name", "label"],
480
+ "properties": {
481
+ "id": {
482
+ "type": "string",
483
+ "format": "uuid",
484
+ "minLength": 1
485
+ },
486
+ "name": {
487
+ "type": "string",
488
+ "minLength": 1
489
+ },
490
+ "label": {
491
+ "type": "string",
492
+ "minLength": 1
493
+ },
494
+ "labelTemplate": {
495
+ "type": "string",
496
+ "minLength": 1
497
+ },
498
+ "showHome": {
499
+ "type": "boolean"
500
+ },
501
+ "homeLabel": {
502
+ "type": "string",
503
+ "minLength": 1
504
+ },
505
+ "homeRoute": {
506
+ "type": "string",
507
+ "minLength": 1
508
+ }
509
+ }
510
+ },
511
+ "NavigationTransition": {
512
+ "type": "object",
513
+ "description": "Transition from one route to another",
514
+ "required": ["id", "name", "from", "to", "trigger"],
515
+ "properties": {
516
+ "id": {
517
+ "type": "string",
518
+ "format": "uuid",
519
+ "minLength": 1
520
+ },
521
+ "name": {
522
+ "type": "string",
523
+ "minLength": 1
524
+ },
525
+ "from": {
526
+ "type": "string",
527
+ "minLength": 1
528
+ },
529
+ "to": {
530
+ "type": "string",
531
+ "minLength": 1
532
+ },
533
+ "trigger": {
534
+ "$ref": "#/definitions/NavigationTrigger"
535
+ },
536
+ "description": {
537
+ "type": "string",
538
+ "minLength": 1
539
+ },
540
+ "guards": {
541
+ "type": "array",
542
+ "description": "Contains relationship",
543
+ "items": {
544
+ "type": "string"
545
+ }
546
+ }
547
+ }
548
+ },
549
+ "NavigationGuard": {
550
+ "type": "object",
551
+ "description": "Guard condition for route access",
552
+ "required": ["id", "name", "type", "order"],
553
+ "properties": {
554
+ "id": {
555
+ "type": "string",
556
+ "format": "uuid",
557
+ "minLength": 1
558
+ },
559
+ "name": {
560
+ "type": "string",
561
+ "minLength": 1
562
+ },
563
+ "type": {
564
+ "$ref": "#/definitions/GuardType"
565
+ },
566
+ "description": {
567
+ "type": "string",
568
+ "minLength": 1
569
+ },
570
+ "order": {
571
+ "type": "integer"
572
+ },
573
+ "source": {
574
+ "type": "object",
575
+ "description": "Source code reference",
576
+ "properties": {
577
+ "reference": {
578
+ "$ref": "common/source-references.schema.json#/definitions/SourceReference"
579
+ }
580
+ }
581
+ }
582
+ }
583
+ },
584
+ "GuardCondition": {
585
+ "type": "object",
586
+ "description": "Condition expression for guard",
587
+ "required": ["id", "name", "expression", "timeout"],
588
+ "properties": {
589
+ "id": {
590
+ "type": "string",
591
+ "format": "uuid",
592
+ "minLength": 1
593
+ },
594
+ "name": {
595
+ "type": "string",
596
+ "minLength": 1
597
+ },
598
+ "expression": {
599
+ "type": "string",
600
+ "minLength": 1
601
+ },
602
+ "async": {
603
+ "type": "boolean"
604
+ },
605
+ "timeout": {
606
+ "type": "integer"
607
+ }
608
+ }
609
+ },
610
+ "GuardAction": {
611
+ "type": "object",
612
+ "description": "Action when guard denies access",
613
+ "required": ["id", "name", "action", "target", "message", "preserveRoute"],
614
+ "properties": {
615
+ "id": {
616
+ "type": "string",
617
+ "format": "uuid",
618
+ "minLength": 1
619
+ },
620
+ "name": {
621
+ "type": "string",
622
+ "minLength": 1
623
+ },
624
+ "action": {
625
+ "$ref": "#/definitions/GuardActionType"
626
+ },
627
+ "target": {
628
+ "type": "string",
629
+ "minLength": 1
630
+ },
631
+ "message": {
632
+ "type": "string",
633
+ "minLength": 1
634
+ },
635
+ "preserveRoute": {
636
+ "type": "boolean"
637
+ }
638
+ }
639
+ },
640
+ "NavigationFlow": {
641
+ "type": "object",
642
+ "description": "Sequence of routes that realizes a business process",
643
+ "required": ["id", "name"],
644
+ "properties": {
645
+ "id": {
646
+ "type": "string",
647
+ "format": "uuid",
648
+ "minLength": 1
649
+ },
650
+ "name": {
651
+ "type": "string",
652
+ "minLength": 1
653
+ },
654
+ "description": {
655
+ "type": "string",
656
+ "minLength": 1
657
+ },
658
+ "steps": {
659
+ "type": "array",
660
+ "description": "Contains relationship",
661
+ "items": {
662
+ "type": "string"
663
+ }
664
+ }
665
+ }
666
+ },
667
+ "FlowStep": {
668
+ "type": "object",
669
+ "description": "One step in a navigation flow",
670
+ "required": ["id", "sequence", "route", "name"],
671
+ "properties": {
672
+ "id": {
673
+ "type": "string",
674
+ "format": "uuid",
675
+ "minLength": 1
676
+ },
677
+ "sequence": {
678
+ "type": "integer"
679
+ },
680
+ "route": {
681
+ "type": "string",
682
+ "minLength": 1
683
+ },
684
+ "name": {
685
+ "type": "string",
686
+ "minLength": 1
687
+ },
688
+ "description": {
689
+ "type": "string",
690
+ "minLength": 1
691
+ },
692
+ "required": {
693
+ "type": "boolean"
694
+ }
695
+ }
696
+ },
697
+ "ContextVariable": {
698
+ "type": "object",
699
+ "description": "Shared variable across flow steps (Gap #1: Cross-experience state)",
700
+ "required": ["id", "name", "schemaRef", "scope", "persistedIn"],
701
+ "properties": {
702
+ "id": {
703
+ "type": "string",
704
+ "format": "uuid",
705
+ "minLength": 1
706
+ },
707
+ "name": {
708
+ "type": "string",
709
+ "minLength": 1
710
+ },
711
+ "schemaRef": {
712
+ "type": "string",
713
+ "minLength": 1
714
+ },
715
+ "scope": {
716
+ "$ref": "#/definitions/ContextScope"
717
+ },
718
+ "persistedIn": {
719
+ "$ref": "#/definitions/StorageType"
720
+ },
721
+ "defaultValue": {
722
+ "type": "string",
723
+ "minLength": 1
724
+ }
725
+ }
726
+ },
727
+ "DataMapping": {
728
+ "type": "object",
729
+ "description": "Maps data between flow context and experience (Gap #2: Data handoff)",
730
+ "required": ["id", "name", "source", "target", "transform"],
731
+ "properties": {
732
+ "id": {
733
+ "type": "string",
734
+ "format": "uuid",
735
+ "minLength": 1
736
+ },
737
+ "name": {
738
+ "type": "string",
739
+ "minLength": 1
740
+ },
741
+ "source": {
742
+ "type": "string",
743
+ "minLength": 1
744
+ },
745
+ "target": {
746
+ "type": "string",
747
+ "minLength": 1
748
+ },
749
+ "transform": {
750
+ "type": "string",
751
+ "minLength": 1
752
+ },
753
+ "required": {
754
+ "type": "boolean"
755
+ }
756
+ }
757
+ },
758
+ "ProcessTracking": {
759
+ "type": "object",
760
+ "description": "Tracks business process instance across flow (Gap #3: Process correlation)",
761
+ "required": ["id", "name", "processInstanceId", "timeoutMinutes", "stateCheckpoint"],
762
+ "properties": {
763
+ "id": {
764
+ "type": "string",
765
+ "format": "uuid",
766
+ "minLength": 1
767
+ },
768
+ "name": {
769
+ "type": "string",
770
+ "minLength": 1
771
+ },
772
+ "processInstanceId": {
773
+ "type": "string",
774
+ "minLength": 1
775
+ },
776
+ "resumable": {
777
+ "type": "boolean"
778
+ },
779
+ "timeoutMinutes": {
780
+ "type": "integer"
781
+ },
782
+ "stateCheckpoint": {
783
+ "type": "boolean"
784
+ }
785
+ }
786
+ },
787
+ "FlowAnalytics": {
788
+ "type": "object",
789
+ "description": "Analytics for funnel tracking (Gap #9: Funnel analytics)",
790
+ "required": ["id", "name", "funnelMetrics", "conversionGoal"],
791
+ "properties": {
792
+ "id": {
793
+ "type": "string",
794
+ "format": "uuid",
795
+ "minLength": 1
796
+ },
797
+ "name": {
798
+ "type": "string",
799
+ "minLength": 1
800
+ },
801
+ "funnelMetrics": {
802
+ "type": "string",
803
+ "minLength": 1
804
+ },
805
+ "conversionGoal": {
806
+ "type": "string",
807
+ "minLength": 1
808
+ },
809
+ "dropoffAlerts": {
810
+ "type": "string",
811
+ "minLength": 1
812
+ }
813
+ }
814
+ },
815
+ "NotificationAction": {
816
+ "type": "object",
817
+ "description": "Notification to send during flow step",
818
+ "required": ["id", "name", "type", "template", "recipients"],
819
+ "properties": {
820
+ "id": {
821
+ "type": "string",
822
+ "format": "uuid",
823
+ "minLength": 1
824
+ },
825
+ "name": {
826
+ "type": "string",
827
+ "minLength": 1
828
+ },
829
+ "type": {
830
+ "$ref": "#/definitions/NotificationType"
831
+ },
832
+ "template": {
833
+ "type": "string",
834
+ "minLength": 1
835
+ },
836
+ "recipients": {
837
+ "type": "string",
838
+ "minLength": 1
839
+ }
840
+ }
841
+ }
842
+ }
843
+ }