@documentation-robotics/cli 0.1.8 → 0.1.10

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 (120) hide show
  1. package/README.md +18 -17
  2. package/dist/audit/nodes/ai/prompts.js +1 -0
  3. package/dist/audit/nodes/ai/prompts.js.map +2 -2
  4. package/dist/audit/relationships/ai/prompts.js +20 -29
  5. package/dist/audit/relationships/ai/prompts.js.map +2 -2
  6. package/dist/audit/relationships/analysis/gap-analyzer.js.map +1 -1
  7. package/dist/audit/relationships/analysis/layer-templates.js +36 -0
  8. package/dist/audit/relationships/analysis/layer-templates.js.map +2 -2
  9. package/dist/cli.js +8 -8
  10. package/dist/cli.js.map +2 -2
  11. package/dist/commands/reports.js +3 -3
  12. package/dist/commands/reports.js.map +1 -1
  13. package/dist/commands/show.js.map +1 -1
  14. package/dist/commands/upgrade.js +1 -1
  15. package/dist/commands/upgrade.js.map +1 -1
  16. package/dist/commands/validate.js.map +1 -1
  17. package/dist/commands/version.js +1 -1
  18. package/dist/core/layers.js +1 -0
  19. package/dist/core/layers.js.map +2 -2
  20. package/dist/core/migration-registry.js +59 -2
  21. package/dist/core/migration-registry.js.map +2 -2
  22. package/dist/core/model.js +3 -16
  23. package/dist/core/model.js.map +2 -2
  24. package/dist/core/spec-loader.js.map +1 -1
  25. package/dist/core/stats-collector.js +2 -0
  26. package/dist/core/stats-collector.js.map +2 -2
  27. package/dist/export/archimate-exporter.js.map +2 -2
  28. package/dist/export/json-schema-exporter.js.map +1 -1
  29. package/dist/export/markdown-exporter.js.map +1 -1
  30. package/dist/export/markdown-utils.js +1 -0
  31. package/dist/export/markdown-utils.js.map +2 -2
  32. package/dist/export/mermaid-markdown-exporter.js.map +1 -1
  33. package/dist/export/openapi-exporter.js.map +1 -1
  34. package/dist/export/plantuml-exporter.js.map +1 -1
  35. package/dist/export/report-formatters.js +2 -2
  36. package/dist/export/report-formatters.js.map +1 -1
  37. package/dist/export/types.js +1 -0
  38. package/dist/export/types.js.map +2 -2
  39. package/dist/generated/layer-registry.js +44 -31
  40. package/dist/generated/layer-registry.js.map +2 -2
  41. package/dist/generated/layer-types.js +1 -1
  42. package/dist/generated/layer-types.js.map +2 -2
  43. package/dist/generated/node-types.js +45 -0
  44. package/dist/generated/node-types.js.map +2 -2
  45. package/dist/generated/relationship-index.js +201 -19
  46. package/dist/generated/relationship-index.js.map +2 -2
  47. package/dist/import/archimate-importer.js.map +1 -1
  48. package/dist/import/openapi-importer.js.map +1 -1
  49. package/dist/integrations/claude_code/agents/dr-advisor.md +14 -13
  50. package/dist/integrations/claude_code/agents/dr-extractor.md +2 -2
  51. package/dist/integrations/claude_code/commands/dr-info.md +1 -1
  52. package/dist/integrations/claude_code/commands/dr-init.md +3 -3
  53. package/dist/integrations/claude_code/commands/dr-map.md +2 -2
  54. package/dist/integrations/claude_code/commands/dr-model.md +1 -1
  55. package/dist/integrations/claude_code/commands/dr-relate.md +14 -4
  56. package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +3 -3
  57. package/dist/integrations/claude_code/docs/QUICK_START.md +1 -1
  58. package/dist/integrations/claude_code/docs/README.md +2 -2
  59. package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +2 -2
  60. package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +679 -0
  61. package/dist/integrations/claude_code/skills/{dr_08_dataset_layer → dr_09_dataset_layer}/SKILL.md +1 -1
  62. package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +2 -2
  63. package/dist/integrations/github_copilot/agents/dr-advisor.md +14 -13
  64. package/dist/integrations/github_copilot/agents/dr-architect.md +15 -14
  65. package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +2 -2
  66. package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +253 -0
  67. package/dist/reports/model-report-orchestrator.js +3 -3
  68. package/dist/reports/model-report-orchestrator.js.map +1 -1
  69. package/dist/schemas/bundled/analyzers/cbm.json +2 -2
  70. package/dist/schemas/bundled/analyzers/manifest.json +2 -2
  71. package/dist/schemas/bundled/api.json +3 -3
  72. package/dist/schemas/bundled/apm.json +3 -3
  73. package/dist/schemas/bundled/application.json +3 -3
  74. package/dist/schemas/bundled/base.json +29 -1
  75. package/dist/schemas/bundled/business.json +1 -1
  76. package/dist/schemas/bundled/data-model.json +3 -3
  77. package/dist/schemas/bundled/data-store.json +3 -3
  78. package/dist/schemas/bundled/manifest.json +20 -13
  79. package/dist/schemas/bundled/motivation.json +1 -1
  80. package/dist/schemas/bundled/navigation.json +3 -3
  81. package/dist/schemas/bundled/product.json +469 -0
  82. package/dist/schemas/bundled/security.json +3 -3
  83. package/dist/schemas/bundled/technology.json +3 -3
  84. package/dist/schemas/bundled/testing.json +3 -3
  85. package/dist/schemas/bundled/ux.json +3 -3
  86. package/dist/server/server.js +4 -15
  87. package/dist/server/server.js.map +2 -2
  88. package/dist/telemetry/index.js +1 -1
  89. package/dist/utils/spec-installer.js +2 -2
  90. package/dist/utils/spec-installer.js.map +1 -1
  91. package/dist/utils/spec-version.js +1 -1
  92. package/dist/utils/spec-version.js.map +2 -2
  93. package/dist/viewer/README.md +6 -6
  94. package/dist/viewer/assets/main-BRPZyc36.css +1 -0
  95. package/dist/viewer/assets/main-BrpLargo.js +81 -0
  96. package/dist/viewer/index.html +2 -2
  97. package/dist/viewer/manifest.json +10 -10
  98. package/dist/viewer/version.json +1 -1
  99. package/package.json +1 -1
  100. package/dist/viewer/assets/main-CY0Xufuj.css +0 -1
  101. package/dist/viewer/assets/main-DtgErnwF.js +0 -81
  102. /package/dist/integrations/claude_code/skills/{dr_03_security_layer → dr_04_security_layer}/SKILL.md +0 -0
  103. /package/dist/integrations/claude_code/skills/{dr_04_application_layer → dr_05_application_layer}/SKILL.md +0 -0
  104. /package/dist/integrations/claude_code/skills/{dr_05_technology_layer → dr_06_technology_layer}/SKILL.md +0 -0
  105. /package/dist/integrations/claude_code/skills/{dr_06_api_layer → dr_07_api_layer}/SKILL.md +0 -0
  106. /package/dist/integrations/claude_code/skills/{dr_07_data_model_layer → dr_08_data_model_layer}/SKILL.md +0 -0
  107. /package/dist/integrations/claude_code/skills/{dr_09_ux_layer → dr_10_ux_layer}/SKILL.md +0 -0
  108. /package/dist/integrations/claude_code/skills/{dr_10_navigation_layer → dr_11_navigation_layer}/SKILL.md +0 -0
  109. /package/dist/integrations/claude_code/skills/{dr_11_apm_layer → dr_12_apm_layer}/SKILL.md +0 -0
  110. /package/dist/integrations/claude_code/skills/{dr_12_testing_layer → dr_13_testing_layer}/SKILL.md +0 -0
  111. /package/dist/integrations/github_copilot/skills/{dr_03_security_layer → dr_04_security_layer}/SKILL.md +0 -0
  112. /package/dist/integrations/github_copilot/skills/{dr_04_application_layer → dr_05_application_layer}/SKILL.md +0 -0
  113. /package/dist/integrations/github_copilot/skills/{dr_05_technology_layer → dr_06_technology_layer}/SKILL.md +0 -0
  114. /package/dist/integrations/github_copilot/skills/{dr_06_api_layer → dr_07_api_layer}/SKILL.md +0 -0
  115. /package/dist/integrations/github_copilot/skills/{dr_07_data_model_layer → dr_08_data_model_layer}/SKILL.md +0 -0
  116. /package/dist/integrations/github_copilot/skills/{dr_08_dataset_layer → dr_09_dataset_layer}/SKILL.md +0 -0
  117. /package/dist/integrations/github_copilot/skills/{dr_09_ux_layer → dr_10_ux_layer}/SKILL.md +0 -0
  118. /package/dist/integrations/github_copilot/skills/{dr_10_navigation_layer → dr_11_navigation_layer}/SKILL.md +0 -0
  119. /package/dist/integrations/github_copilot/skills/{dr_11_apm_layer → dr_12_apm_layer}/SKILL.md +0 -0
  120. /package/dist/integrations/github_copilot/skills/{dr_12_testing_layer → dr_13_testing_layer}/SKILL.md +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generated/layer-registry.ts"],
4
- "sourcesContent": ["/**\n * GENERATED FILE - DO NOT EDIT\n * This file is automatically generated by scripts/generate-registry.ts\n * during the build process. Changes will be overwritten.\n *\n * Source: spec/layers/*.layer.json\n */\n\n/**\n * Layer metadata derived from specification layer instances\n */\nexport interface LayerMetadata {\n id: string; // \"motivation\", \"data-store\", etc. (canonical hyphenated form)\n number: number; // 1-12\n name: string; // \"Motivation Layer\", \"Data Store Layer\"\n description: string; // Layer description\n nodeTypes: string[]; // [\"motivation.goal\", \"motivation.requirement\", ...]\n inspiredBy?: {\n standard: string;\n version: string;\n url?: string;\n };\n}\n\n\nconst LAYER_METADATA_MOTIVATION: LayerMetadata = /*#__PURE__*/ {\n id: \"motivation\",\n number: 1,\n name: \"Motivation Layer\",\n description: \"Layer 1: Motivation Layer\",\n nodeTypes: [\"motivation.assessment\", \"motivation.constraint\", \"motivation.driver\", \"motivation.goal\", \"motivation.meaning\", \"motivation.outcome\", \"motivation.principle\", \"motivation.requirement\", \"motivation.stakeholder\", \"motivation.value\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_BUSINESS: LayerMetadata = /*#__PURE__*/ {\n id: \"business\",\n number: 2,\n name: \"Business Layer\",\n description: \"Layer 2: Business Layer\",\n nodeTypes: [\"business.businessactor\", \"business.businesscollaboration\", \"business.businessevent\", \"business.businessfunction\", \"business.businessinteraction\", \"business.businessinterface\", \"business.businessobject\", \"business.businessprocess\", \"business.businessrole\", \"business.businessservice\", \"business.contract\", \"business.product\", \"business.representation\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_SECURITY: LayerMetadata = /*#__PURE__*/ {\n id: \"security\",\n number: 3,\n name: \"Security Layer\",\n description: \"Layer 3: Security Layer\",\n nodeTypes: [\"security.accesscondition\", \"security.accountabilityrequirement\", \"security.actor\", \"security.auditconfig\", \"security.authenticationconfig\", \"security.bindingofduty\", \"security.condition\", \"security.countermeasure\", \"security.dataclassification\", \"security.delegation\", \"security.evidence\", \"security.fieldaccesscontrol\", \"security.informationentity\", \"security.informationright\", \"security.needtoknow\", \"security.passwordpolicy\", \"security.permission\", \"security.policyaction\", \"security.policyrule\", \"security.resourceoperation\", \"security.retentionpolicy\", \"security.role\", \"security.secureresource\", \"security.securityconstraints\", \"security.securitymodel\", \"security.securitypolicy\", \"security.separationofduty\", \"security.threat\", \"security.validationrule\"],\n inspiredBy: {\n standard: \"NIST SP 800-53\",\n version: \"5.1\",\n url: \"https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf\",\n },\n};\n\nconst LAYER_METADATA_APPLICATION: LayerMetadata = /*#__PURE__*/ {\n id: \"application\",\n number: 4,\n name: \"Application Layer\",\n description: \"Layer 4: Application Layer\",\n nodeTypes: [\"application.applicationcollaboration\", \"application.applicationcomponent\", \"application.applicationevent\", \"application.applicationfunction\", \"application.applicationinteraction\", \"application.applicationinterface\", \"application.applicationprocess\", \"application.applicationservice\", \"application.dataobject\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_TECHNOLOGY: LayerMetadata = /*#__PURE__*/ {\n id: \"technology\",\n number: 5,\n name: \"Technology Layer\",\n description: \"Layer 5: Technology Layer\",\n nodeTypes: [\"technology.artifact\", \"technology.communicationnetwork\", \"technology.device\", \"technology.node\", \"technology.path\", \"technology.systemsoftware\", \"technology.technologycollaboration\", \"technology.technologyevent\", \"technology.technologyfunction\", \"technology.technologyinteraction\", \"technology.technologyinterface\", \"technology.technologyprocess\", \"technology.technologyservice\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_API: LayerMetadata = /*#__PURE__*/ {\n id: \"api\",\n number: 6,\n name: \"API Layer\",\n description: \"Layer 6: API Layer\",\n nodeTypes: [\"api.callback\", \"api.components\", \"api.contact\", \"api.encoding\", \"api.example\", \"api.externaldocumentation\", \"api.header\", \"api.info\", \"api.license\", \"api.link\", \"api.mediatype\", \"api.oauthflow\", \"api.oauthflows\", \"api.openapidocument\", \"api.operation\", \"api.parameter\", \"api.pathitem\", \"api.ratelimit\", \"api.paths\", \"api.requestbody\", \"api.response\", \"api.responses\", \"api.schema\", \"api.securityscheme\", \"api.server\", \"api.servervariable\", \"api.tag\"],\n inspiredBy: {\n standard: \"OpenAPI 3.0\",\n version: \"3.0\",\n url: \"https://spec.openapis.org/oas/v3.0.0\",\n },\n};\n\nconst LAYER_METADATA_DATA_MODEL: LayerMetadata = /*#__PURE__*/ {\n id: \"data-model\",\n number: 7,\n name: \"Data Model Layer\",\n description: \"Layer 7: Data Model Layer\",\n nodeTypes: [],\n inspiredBy: {\n standard: \"JSON Schema Draft 7\",\n version: \"Draft 7\",\n url: \"https://json-schema.org/draft-07/\",\n },\n};\n\nconst LAYER_METADATA_DATA_STORE: LayerMetadata = /*#__PURE__*/ {\n id: \"data-store\",\n number: 8,\n name: \"Data Store Layer\",\n description: \"Layer 8: Data Store Layer\",\n nodeTypes: [\"data-store.accesspattern\", \"data-store.collection\", \"data-store.database\", \"data-store.eventhandler\", \"data-store.field\", \"data-store.index\", \"data-store.namespace\", \"data-store.retentionpolicy\", \"data-store.storedlogic\", \"data-store.validationrule\", \"data-store.view\"],\n inspiredBy: {\n standard: \"ISO/IEC 9075 (SQL) + Paradigm Extensions\",\n version: \"2024\",\n url: \"https://en.wikipedia.org/wiki/Database_model\",\n },\n};\n\nconst LAYER_METADATA_UX: LayerMetadata = /*#__PURE__*/ {\n id: \"ux\",\n number: 9,\n name: \"UX Layer\",\n description: \"Layer 9: UX Layer\",\n nodeTypes: [\"ux.actioncomponent\", \"ux.actionpattern\", \"ux.chartseries\", \"ux.componentinstance\", \"ux.componentreference\", \"ux.dataconfig\", \"ux.errorconfig\", \"ux.experiencestate\", \"ux.layoutconfig\", \"ux.librarycomponent\", \"ux.librarysubview\", \"ux.stateaction\", \"ux.stateactiontemplate\", \"ux.statepattern\", \"ux.statetransition\", \"ux.subview\", \"ux.tablecolumn\", \"ux.transitiontemplate\", \"ux.uxapplication\", \"ux.uxlibrary\", \"ux.uxspec\", \"ux.view\"],\n inspiredBy: {\n standard: \"HTML 5.3\",\n version: \"5.3\",\n url: \"https://html.spec.whatwg.org/\",\n },\n};\n\nconst LAYER_METADATA_NAVIGATION: LayerMetadata = /*#__PURE__*/ {\n id: \"navigation\",\n number: 10,\n name: \"Navigation Layer\",\n description: \"Layer 10: Navigation Layer\",\n nodeTypes: [\"navigation.breadcrumbconfig\", \"navigation.contextvariable\", \"navigation.flowstep\", \"navigation.guardaction\", \"navigation.guardcondition\", \"navigation.navigationflow\", \"navigation.navigationgraph\", \"navigation.navigationguard\", \"navigation.navigationtransition\", \"navigation.route\", \"navigation.routemeta\"],\n inspiredBy: {\n standard: \"SPA Navigation Patterns\",\n version: \"1.0\",\n url: \"https://www.w3.org/TR/navigation-timing-2/\",\n },\n};\n\nconst LAYER_METADATA_APM: LayerMetadata = /*#__PURE__*/ {\n id: \"apm\",\n number: 11,\n name: \"APM Observability Layer\",\n description: \"Layer 11: APM Observability Layer\",\n nodeTypes: [\"apm.alert\", \"apm.dashboard\", \"apm.exporterconfig\", \"apm.instrumentationconfig\", \"apm.instrumentationscope\", \"apm.logconfiguration\", \"apm.logprocessor\", \"apm.logrecord\", \"apm.metricconfiguration\", \"apm.metricinstrument\", \"apm.resource\", \"apm.span\", \"apm.spanevent\", \"apm.spanlink\", \"apm.traceconfiguration\"],\n inspiredBy: {\n standard: \"OpenTelemetry\",\n version: \"1.0\",\n url: \"https://opentelemetry.io/\",\n },\n};\n\nconst LAYER_METADATA_TESTING: LayerMetadata = /*#__PURE__*/ {\n id: \"testing\",\n number: 12,\n name: \"Testing Layer\",\n description: \"Layer 12: Testing Layer\",\n nodeTypes: [\"testing.contextvariation\", \"testing.coverageexclusion\", \"testing.coveragegap\", \"testing.coveragerequirement\", \"testing.coveragesummary\", \"testing.environmentfactor\", \"testing.inputpartitionselection\", \"testing.inputselection\", \"testing.inputspacepartition\", \"testing.outcomecategory\", \"testing.partitiondependency\", \"testing.partitionvalue\", \"testing.targetcoveragesummary\", \"testing.targetinputfield\", \"testing.testcasesketch\", \"testing.testcoveragemodel\", \"testing.testcoveragetarget\"],\n inspiredBy: {\n standard: \"IEEE 829-2008\",\n version: \"2008\",\n url: \"https://en.wikipedia.org/wiki/IEEE_829\",\n },\n};\n\n/**\n * All 12 layers with metadata, indexed by layer ID\n */\nexport const LAYERS: Map<string, LayerMetadata> = /*#__PURE__*/ new Map([\n [\"motivation\", LAYER_METADATA_MOTIVATION],\n [\"business\", LAYER_METADATA_BUSINESS],\n [\"security\", LAYER_METADATA_SECURITY],\n [\"application\", LAYER_METADATA_APPLICATION],\n [\"technology\", LAYER_METADATA_TECHNOLOGY],\n [\"api\", LAYER_METADATA_API],\n [\"data-model\", LAYER_METADATA_DATA_MODEL],\n [\"data-store\", LAYER_METADATA_DATA_STORE],\n [\"ux\", LAYER_METADATA_UX],\n [\"navigation\", LAYER_METADATA_NAVIGATION],\n [\"apm\", LAYER_METADATA_APM],\n [\"testing\", LAYER_METADATA_TESTING]\n]);\n\n/**\n * All 12 layers with metadata, indexed by layer number for O(1) lookup\n */\nexport const LAYERS_BY_NUMBER: Map<number, LayerMetadata> = /*#__PURE__*/ new Map([\n [1, LAYER_METADATA_MOTIVATION],\n [2, LAYER_METADATA_BUSINESS],\n [3, LAYER_METADATA_SECURITY],\n [4, LAYER_METADATA_APPLICATION],\n [5, LAYER_METADATA_TECHNOLOGY],\n [6, LAYER_METADATA_API],\n [7, LAYER_METADATA_DATA_MODEL],\n [8, LAYER_METADATA_DATA_STORE],\n [9, LAYER_METADATA_UX],\n [10, LAYER_METADATA_NAVIGATION],\n [11, LAYER_METADATA_APM],\n [12, LAYER_METADATA_TESTING]\n]);\n\n/**\n * Layer hierarchy - ordered array of layer numbers for reference validation\n */\nexport const LAYER_HIERARCHY: readonly number[] = /*#__PURE__*/ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] as const;\n\n/**\n * Get layer metadata by layer number (1-12)\n */\nexport function getLayerByNumber(n: number): LayerMetadata | undefined {\n return LAYERS_BY_NUMBER.get(n);\n}\n\n/**\n * Get layer metadata by canonical layer ID\n */\nexport function getLayerById(id: string): LayerMetadata | undefined {\n return LAYERS.get(id);\n}\n\n/**\n * Check if a layer ID is valid\n */\nexport function isValidLayer(id: string): boolean {\n return LAYERS.has(id);\n}\n\n/**\n * Get all valid node types for a layer\n */\nexport function getNodeTypesForLayer(layerId: string): string[] {\n const layer = LAYERS.get(layerId);\n return layer ? layer.nodeTypes : [];\n}\n\n/**\n * Get all canonical layer IDs in numeric order\n */\nexport function getAllLayerIds(): string[] {\n return Array.from(LAYERS.values())\n .sort((a, b) => a.number - b.number)\n .map((l) => l.id);\n}\n\n/**\n * Get all layers in numeric order\n */\nexport function getAllLayers(): LayerMetadata[] {\n return Array.from(LAYERS.values()).sort((a, b) => a.number - b.number);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * GENERATED FILE - DO NOT EDIT\n * This file is automatically generated by scripts/generate-registry.ts\n * during the build process. Changes will be overwritten.\n *\n * Source: spec/layers/*.layer.json\n */\n\n/**\n * Layer metadata derived from specification layer instances\n */\nexport interface LayerMetadata {\n id: string; // \"motivation\", \"data-store\", etc. (canonical hyphenated form)\n number: number; // 1-13\n name: string; // \"Motivation Layer\", \"Data Store Layer\"\n description: string; // Layer description\n nodeTypes: string[]; // [\"motivation.goal\", \"motivation.requirement\", ...]\n inspiredBy?: {\n standard: string;\n version: string;\n url?: string;\n };\n}\n\n\nconst LAYER_METADATA_MOTIVATION: LayerMetadata = /*#__PURE__*/ {\n id: \"motivation\",\n number: 1,\n name: \"Motivation Layer\",\n description: \"Layer 1: Motivation Layer\",\n nodeTypes: [\"motivation.assessment\", \"motivation.constraint\", \"motivation.driver\", \"motivation.goal\", \"motivation.meaning\", \"motivation.outcome\", \"motivation.principle\", \"motivation.requirement\", \"motivation.stakeholder\", \"motivation.value\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_BUSINESS: LayerMetadata = /*#__PURE__*/ {\n id: \"business\",\n number: 2,\n name: \"Business Layer\",\n description: \"Layer 2: Business Layer\",\n nodeTypes: [\"business.businessactor\", \"business.businesscollaboration\", \"business.businessevent\", \"business.businessfunction\", \"business.businessinteraction\", \"business.businessinterface\", \"business.businessobject\", \"business.businessprocess\", \"business.businessrole\", \"business.businessservice\", \"business.contract\", \"business.product\", \"business.representation\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_PRODUCT: LayerMetadata = /*#__PURE__*/ {\n id: \"product\",\n number: 3,\n name: \"Product Layer\",\n description: \"Layer 3: Product Layer\",\n nodeTypes: [\"product.capability\", \"product.feature\", \"product.milestone\", \"product.persona\", \"product.userworkflow\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2 Strategy Extension + Product Management Practice\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_SECURITY: LayerMetadata = /*#__PURE__*/ {\n id: \"security\",\n number: 4,\n name: \"Security Layer\",\n description: \"Layer 4: Security Layer\",\n nodeTypes: [\"security.accesscondition\", \"security.accountabilityrequirement\", \"security.actor\", \"security.auditconfig\", \"security.authenticationconfig\", \"security.bindingofduty\", \"security.condition\", \"security.countermeasure\", \"security.dataclassification\", \"security.delegation\", \"security.evidence\", \"security.fieldaccesscontrol\", \"security.informationentity\", \"security.informationright\", \"security.needtoknow\", \"security.passwordpolicy\", \"security.permission\", \"security.policyaction\", \"security.policyrule\", \"security.resourceoperation\", \"security.retentionpolicy\", \"security.role\", \"security.secureresource\", \"security.securityconstraints\", \"security.securitymodel\", \"security.securitypolicy\", \"security.separationofduty\", \"security.threat\", \"security.validationrule\"],\n inspiredBy: {\n standard: \"NIST SP 800-53\",\n version: \"5.1\",\n url: \"https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf\",\n },\n};\n\nconst LAYER_METADATA_APPLICATION: LayerMetadata = /*#__PURE__*/ {\n id: \"application\",\n number: 5,\n name: \"Application Layer\",\n description: \"Layer 5: Application Layer\",\n nodeTypes: [\"application.applicationcollaboration\", \"application.applicationcomponent\", \"application.applicationevent\", \"application.applicationfunction\", \"application.applicationinteraction\", \"application.applicationinterface\", \"application.applicationprocess\", \"application.applicationservice\", \"application.dataobject\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_TECHNOLOGY: LayerMetadata = /*#__PURE__*/ {\n id: \"technology\",\n number: 6,\n name: \"Technology Layer\",\n description: \"Layer 6: Technology Layer\",\n nodeTypes: [\"technology.artifact\", \"technology.communicationnetwork\", \"technology.device\", \"technology.node\", \"technology.path\", \"technology.systemsoftware\", \"technology.technologycollaboration\", \"technology.technologyevent\", \"technology.technologyfunction\", \"technology.technologyinteraction\", \"technology.technologyinterface\", \"technology.technologyprocess\", \"technology.technologyservice\"],\n inspiredBy: {\n standard: \"ArchiMate 3.2\",\n version: \"3.2\",\n url: \"https://pubs.opengroup.org/architecture/archimate32-doc/\",\n },\n};\n\nconst LAYER_METADATA_API: LayerMetadata = /*#__PURE__*/ {\n id: \"api\",\n number: 7,\n name: \"API Layer\",\n description: \"Layer 7: API Layer\",\n nodeTypes: [\"api.callback\", \"api.components\", \"api.contact\", \"api.encoding\", \"api.example\", \"api.externaldocumentation\", \"api.header\", \"api.info\", \"api.license\", \"api.link\", \"api.mediatype\", \"api.oauthflow\", \"api.oauthflows\", \"api.openapidocument\", \"api.operation\", \"api.parameter\", \"api.pathitem\", \"api.ratelimit\", \"api.paths\", \"api.requestbody\", \"api.response\", \"api.responses\", \"api.schema\", \"api.securityscheme\", \"api.server\", \"api.servervariable\", \"api.tag\"],\n inspiredBy: {\n standard: \"OpenAPI 3.0\",\n version: \"3.0\",\n url: \"https://spec.openapis.org/oas/v3.0.0\",\n },\n};\n\nconst LAYER_METADATA_DATA_MODEL: LayerMetadata = /*#__PURE__*/ {\n id: \"data-model\",\n number: 8,\n name: \"Data Model Layer\",\n description: \"Layer 8: Data Model Layer\",\n nodeTypes: [],\n inspiredBy: {\n standard: \"JSON Schema Draft 7\",\n version: \"Draft 7\",\n url: \"https://json-schema.org/draft-07/\",\n },\n};\n\nconst LAYER_METADATA_DATA_STORE: LayerMetadata = /*#__PURE__*/ {\n id: \"data-store\",\n number: 9,\n name: \"Data Store Layer\",\n description: \"Layer 9: Data Store Layer\",\n nodeTypes: [\"data-store.accesspattern\", \"data-store.collection\", \"data-store.database\", \"data-store.eventhandler\", \"data-store.field\", \"data-store.index\", \"data-store.namespace\", \"data-store.retentionpolicy\", \"data-store.storedlogic\", \"data-store.validationrule\", \"data-store.view\"],\n inspiredBy: {\n standard: \"ISO/IEC 9075 (SQL) + Paradigm Extensions\",\n version: \"2024\",\n url: \"https://en.wikipedia.org/wiki/Database_model\",\n },\n};\n\nconst LAYER_METADATA_UX: LayerMetadata = /*#__PURE__*/ {\n id: \"ux\",\n number: 10,\n name: \"UX Layer\",\n description: \"Layer 10: UX Layer\",\n nodeTypes: [\"ux.actioncomponent\", \"ux.actionpattern\", \"ux.chartseries\", \"ux.componentinstance\", \"ux.componentreference\", \"ux.dataconfig\", \"ux.errorconfig\", \"ux.experiencestate\", \"ux.layoutconfig\", \"ux.librarycomponent\", \"ux.librarysubview\", \"ux.stateaction\", \"ux.stateactiontemplate\", \"ux.statepattern\", \"ux.statetransition\", \"ux.subview\", \"ux.tablecolumn\", \"ux.transitiontemplate\", \"ux.uxapplication\", \"ux.uxlibrary\", \"ux.uxspec\", \"ux.view\"],\n inspiredBy: {\n standard: \"HTML 5.3\",\n version: \"5.3\",\n url: \"https://html.spec.whatwg.org/\",\n },\n};\n\nconst LAYER_METADATA_NAVIGATION: LayerMetadata = /*#__PURE__*/ {\n id: \"navigation\",\n number: 11,\n name: \"Navigation Layer\",\n description: \"Layer 11: Navigation Layer\",\n nodeTypes: [\"navigation.breadcrumbconfig\", \"navigation.contextvariable\", \"navigation.flowstep\", \"navigation.guardaction\", \"navigation.guardcondition\", \"navigation.navigationflow\", \"navigation.navigationgraph\", \"navigation.navigationguard\", \"navigation.navigationtransition\", \"navigation.route\", \"navigation.routemeta\"],\n inspiredBy: {\n standard: \"SPA Navigation Patterns\",\n version: \"1.0\",\n url: \"https://www.w3.org/TR/navigation-timing-2/\",\n },\n};\n\nconst LAYER_METADATA_APM: LayerMetadata = /*#__PURE__*/ {\n id: \"apm\",\n number: 12,\n name: \"APM Observability Layer\",\n description: \"Layer 12: APM Observability Layer\",\n nodeTypes: [\"apm.alert\", \"apm.dashboard\", \"apm.exporterconfig\", \"apm.instrumentationconfig\", \"apm.instrumentationscope\", \"apm.logconfiguration\", \"apm.logprocessor\", \"apm.logrecord\", \"apm.metricconfiguration\", \"apm.metricinstrument\", \"apm.resource\", \"apm.span\", \"apm.spanevent\", \"apm.spanlink\", \"apm.traceconfiguration\"],\n inspiredBy: {\n standard: \"OpenTelemetry\",\n version: \"1.0\",\n url: \"https://opentelemetry.io/\",\n },\n};\n\nconst LAYER_METADATA_TESTING: LayerMetadata = /*#__PURE__*/ {\n id: \"testing\",\n number: 13,\n name: \"Testing Layer\",\n description: \"Layer 13: Testing Layer\",\n nodeTypes: [\"testing.contextvariation\", \"testing.coverageexclusion\", \"testing.coveragegap\", \"testing.coveragerequirement\", \"testing.coveragesummary\", \"testing.environmentfactor\", \"testing.inputpartitionselection\", \"testing.inputselection\", \"testing.inputspacepartition\", \"testing.outcomecategory\", \"testing.partitiondependency\", \"testing.partitionvalue\", \"testing.targetcoveragesummary\", \"testing.targetinputfield\", \"testing.testcasesketch\", \"testing.testcoveragemodel\", \"testing.testcoveragetarget\"],\n inspiredBy: {\n standard: \"IEEE 829-2008\",\n version: \"2008\",\n url: \"https://en.wikipedia.org/wiki/IEEE_829\",\n },\n};\n\n/**\n * All 13 layers with metadata, indexed by layer ID\n */\nexport const LAYERS: Map<string, LayerMetadata> = /*#__PURE__*/ new Map([\n [\"motivation\", LAYER_METADATA_MOTIVATION],\n [\"business\", LAYER_METADATA_BUSINESS],\n [\"product\", LAYER_METADATA_PRODUCT],\n [\"security\", LAYER_METADATA_SECURITY],\n [\"application\", LAYER_METADATA_APPLICATION],\n [\"technology\", LAYER_METADATA_TECHNOLOGY],\n [\"api\", LAYER_METADATA_API],\n [\"data-model\", LAYER_METADATA_DATA_MODEL],\n [\"data-store\", LAYER_METADATA_DATA_STORE],\n [\"ux\", LAYER_METADATA_UX],\n [\"navigation\", LAYER_METADATA_NAVIGATION],\n [\"apm\", LAYER_METADATA_APM],\n [\"testing\", LAYER_METADATA_TESTING]\n]);\n\n/**\n * All 13 layers with metadata, indexed by layer number for O(1) lookup\n */\nexport const LAYERS_BY_NUMBER: Map<number, LayerMetadata> = /*#__PURE__*/ new Map([\n [1, LAYER_METADATA_MOTIVATION],\n [2, LAYER_METADATA_BUSINESS],\n [3, LAYER_METADATA_PRODUCT],\n [4, LAYER_METADATA_SECURITY],\n [5, LAYER_METADATA_APPLICATION],\n [6, LAYER_METADATA_TECHNOLOGY],\n [7, LAYER_METADATA_API],\n [8, LAYER_METADATA_DATA_MODEL],\n [9, LAYER_METADATA_DATA_STORE],\n [10, LAYER_METADATA_UX],\n [11, LAYER_METADATA_NAVIGATION],\n [12, LAYER_METADATA_APM],\n [13, LAYER_METADATA_TESTING]\n]);\n\n/**\n * Layer hierarchy - ordered array of layer numbers for reference validation\n */\nexport const LAYER_HIERARCHY: readonly number[] = /*#__PURE__*/ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] as const;\n\n/**\n * Get layer metadata by layer number (1-13)\n */\nexport function getLayerByNumber(n: number): LayerMetadata | undefined {\n return LAYERS_BY_NUMBER.get(n);\n}\n\n/**\n * Get layer metadata by canonical layer ID\n */\nexport function getLayerById(id: string): LayerMetadata | undefined {\n return LAYERS.get(id);\n}\n\n/**\n * Check if a layer ID is valid\n */\nexport function isValidLayer(id: string): boolean {\n return LAYERS.has(id);\n}\n\n/**\n * Get all valid node types for a layer\n */\nexport function getNodeTypesForLayer(layerId: string): string[] {\n const layer = LAYERS.get(layerId);\n return layer ? layer.nodeTypes : [];\n}\n\n/**\n * Get all canonical layer IDs in numeric order\n */\nexport function getAllLayerIds(): string[] {\n return Array.from(LAYERS.values())\n .sort((a, b) => a.number - b.number)\n .map((l) => l.id);\n}\n\n/**\n * Get all layers in numeric order\n */\nexport function getAllLayers(): LayerMetadata[] {\n return Array.from(LAYERS.values()).sort((a, b) => a.number - b.number);\n}\n"],
5
+ "mappings": "AAyBA,MAAM,4BAAyD;EAC7D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,yBAAyB,yBAAyB,qBAAqB,mBAAmB,sBAAsB,sBAAsB,wBAAwB,0BAA0B,0BAA0B,kBAAkB;EAChP,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,0BAAuD;EAC3D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,0BAA0B,kCAAkC,0BAA0B,6BAA6B,gCAAgC,8BAA8B,2BAA2B,4BAA4B,yBAAyB,4BAA4B,qBAAqB,oBAAoB,yBAAyB;EAC3W,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,yBAAsD;EAC1D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,sBAAsB,mBAAmB,qBAAqB,mBAAmB,sBAAsB;EACnH,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,0BAAuD;EAC3D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,4BAA4B,sCAAsC,kBAAkB,wBAAwB,iCAAiC,0BAA0B,sBAAsB,2BAA2B,+BAA+B,uBAAuB,qBAAqB,+BAA+B,8BAA8B,6BAA6B,uBAAuB,2BAA2B,uBAAuB,yBAAyB,uBAAuB,8BAA8B,4BAA4B,iBAAiB,2BAA2B,gCAAgC,0BAA0B,2BAA2B,6BAA6B,mBAAmB,yBAAyB;EACtwB,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,6BAA0D;EAC9D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,wCAAwC,oCAAoC,gCAAgC,mCAAmC,sCAAsC,oCAAoC,kCAAkC,kCAAkC,wBAAwB;EACjU,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,4BAAyD;EAC7D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,uBAAuB,mCAAmC,qBAAqB,mBAAmB,mBAAmB,6BAA6B,sCAAsC,8BAA8B,iCAAiC,oCAAoC,kCAAkC,gCAAgC,8BAA8B;EACvY,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,qBAAkD;EACtD,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,gBAAgB,kBAAkB,eAAe,gBAAgB,eAAe,6BAA6B,cAAc,YAAY,eAAe,YAAY,iBAAiB,iBAAiB,kBAAkB,uBAAuB,iBAAiB,iBAAiB,gBAAgB,iBAAiB,aAAa,mBAAmB,gBAAgB,iBAAiB,cAAc,sBAAsB,cAAc,sBAAsB,SAAS;EAC9c,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,4BAAyD;EAC7D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAA;EACX,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,4BAAyD;EAC7D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,4BAA4B,yBAAyB,uBAAuB,2BAA2B,oBAAoB,oBAAoB,wBAAwB,8BAA8B,0BAA0B,6BAA6B,iBAAiB;EACzR,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,oBAAiD;EACrD,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,sBAAsB,oBAAoB,kBAAkB,wBAAwB,yBAAyB,iBAAiB,kBAAkB,sBAAsB,mBAAmB,uBAAuB,qBAAqB,kBAAkB,0BAA0B,mBAAmB,sBAAsB,cAAc,kBAAkB,yBAAyB,oBAAoB,gBAAgB,aAAa,SAAS;EACzb,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,4BAAyD;EAC7D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,+BAA+B,8BAA8B,uBAAuB,0BAA0B,6BAA6B,6BAA6B,8BAA8B,8BAA8B,mCAAmC,oBAAoB,sBAAsB;EAC7T,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,qBAAkD;EACtD,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,aAAa,iBAAiB,sBAAsB,6BAA6B,4BAA4B,wBAAwB,oBAAoB,iBAAiB,2BAA2B,wBAAwB,gBAAgB,YAAY,iBAAiB,gBAAgB,wBAAwB;EAC9T,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAIH,yBAAsD;EAC1D,IAAI;EACJ,QAAQ;EACR,MAAM;EACN,aAAa;EACb,WAAW,CAAC,4BAA4B,6BAA6B,uBAAuB,+BAA+B,2BAA2B,6BAA6B,mCAAmC,0BAA0B,+BAA+B,2BAA2B,+BAA+B,0BAA0B,iCAAiC,4BAA4B,0BAA0B,6BAA6B,4BAA4B;EACnf,YAAY;IACV,UAAU;IACV,SAAS;IACT,KAAK;;GAOI,SAAmD,oBAAI,IAAI;EACpE,CAAC,cAAc,yBAAyB;EACxC,CAAC,YAAY,uBAAuB;EACpC,CAAC,WAAW,sBAAsB;EAClC,CAAC,YAAY,uBAAuB;EACpC,CAAC,eAAe,0BAA0B;EAC1C,CAAC,cAAc,yBAAyB;EACxC,CAAC,OAAO,kBAAkB;EAC1B,CAAC,cAAc,yBAAyB;EACxC,CAAC,cAAc,yBAAyB;EACxC,CAAC,MAAM,iBAAiB;EACxB,CAAC,cAAc,yBAAyB;EACxC,CAAC,OAAO,kBAAkB;EAC1B,CAAC,WAAW,sBAAsB;CACrC,GAKY,mBAA6D,oBAAI,IAAI;EAC9E,CAAC,GAAG,yBAAyB;EAC7B,CAAC,GAAG,uBAAuB;EAC3B,CAAC,GAAG,sBAAsB;EAC1B,CAAC,GAAG,uBAAuB;EAC3B,CAAC,GAAG,0BAA0B;EAC9B,CAAC,GAAG,yBAAyB;EAC7B,CAAC,GAAG,kBAAkB;EACtB,CAAC,GAAG,yBAAyB;EAC7B,CAAC,GAAG,yBAAyB;EAC7B,CAAC,IAAI,iBAAiB;EACtB,CAAC,IAAI,yBAAyB;EAC9B,CAAC,IAAI,kBAAkB;EACvB,CAAC,IAAI,sBAAsB;CAC9B,GAKY,kBAAmD,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE;AAKpG,SAAU,iBAAiB,GAAS;AACxC,SAAO,iBAAiB,IAAI,CAAC;AAC/B;AAKM,SAAU,aAAa,IAAU;AACrC,SAAO,OAAO,IAAI,EAAE;AACtB;AAKM,SAAU,aAAa,IAAU;AACrC,SAAO,OAAO,IAAI,EAAE;AACtB;AAKM,SAAU,qBAAqB,SAAe;AAClD,QAAM,QAAQ,OAAO,IAAI,OAAO;AAChC,SAAO,QAAQ,MAAM,YAAY,CAAA;AACnC;AAKM,SAAU,iBAAc;AAC5B,SAAO,MAAM,KAAK,OAAO,OAAM,CAAE,EAC9B,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAClC,IAAI,CAAC,MAAM,EAAE,EAAE;AACpB;AAKM,SAAU,eAAY;AAC1B,SAAO,MAAM,KAAK,OAAO,OAAM,CAAE,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM;AACvE;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  function isLayerId(value) {
2
- return typeof value == "string" && ["motivation", "business", "security", "application", "technology", "api", "data-model", "data-store", "ux", "navigation", "apm", "testing"].includes(value);
2
+ return typeof value == "string" && ["motivation", "business", "product", "security", "application", "technology", "api", "data-model", "data-store", "ux", "navigation", "apm", "testing"].includes(value);
3
3
  }
4
4
  export {
5
5
  isLayerId
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/generated/layer-types.ts"],
4
- "sourcesContent": ["/**\n * GENERATED FILE - DO NOT EDIT\n * This file is automatically generated by scripts/generate-registry.ts\n * during the build process. Changes will be overwritten.\n *\n * Source: spec/layers/*.layer.json\n */\n\n/**\n * Union type of all valid layer IDs in the 12-layer architecture model\n */\nexport type LayerId = \"motivation\" | \"business\" | \"security\" | \"application\" | \"technology\" | \"api\" | \"data-model\" | \"data-store\" | \"ux\" | \"navigation\" | \"apm\" | \"testing\";\n\n/**\n * Check if a value is a valid LayerId\n */\nexport function isLayerId(value: unknown): value is LayerId {\n const validIds: LayerId[] = [\"motivation\", \"business\", \"security\", \"application\", \"technology\", \"api\", \"data-model\", \"data-store\", \"ux\", \"navigation\", \"apm\", \"testing\"];\n return typeof value === \"string\" && validIds.includes(value as LayerId);\n}\n"],
5
- "mappings": "AAgBM,SAAU,UAAU,OAAc;AAEtC,SAAO,OAAO,SAAU,YADI,CAAC,cAAc,YAAY,YAAY,eAAe,cAAc,OAAO,cAAc,cAAc,MAAM,cAAc,OAAO,SAAS,EAC1H,SAAS,KAAgB;AACxE;",
4
+ "sourcesContent": ["/**\n * GENERATED FILE - DO NOT EDIT\n * This file is automatically generated by scripts/generate-registry.ts\n * during the build process. Changes will be overwritten.\n *\n * Source: spec/layers/*.layer.json\n */\n\n/**\n * Union type of all valid layer IDs in the 13-layer architecture model\n */\nexport type LayerId = \"motivation\" | \"business\" | \"product\" | \"security\" | \"application\" | \"technology\" | \"api\" | \"data-model\" | \"data-store\" | \"ux\" | \"navigation\" | \"apm\" | \"testing\";\n\n/**\n * Check if a value is a valid LayerId\n */\nexport function isLayerId(value: unknown): value is LayerId {\n const validIds: LayerId[] = [\"motivation\", \"business\", \"product\", \"security\", \"application\", \"technology\", \"api\", \"data-model\", \"data-store\", \"ux\", \"navigation\", \"apm\", \"testing\"];\n return typeof value === \"string\" && validIds.includes(value as LayerId);\n}\n"],
5
+ "mappings": "AAgBM,SAAU,UAAU,OAAc;AAEtC,SAAO,OAAO,SAAU,YADI,CAAC,cAAc,YAAY,WAAW,YAAY,eAAe,cAAc,OAAO,cAAc,cAAc,MAAM,cAAc,OAAO,SAAS,EACrI,SAAS,KAAgB;AACxE;",
6
6
  "names": []
7
7
  }
@@ -182,6 +182,46 @@ const NODE_TYPE_MOTIVATION_ASSESSMENT = {
182
182
  requiredAttributes: ["format"],
183
183
  optionalAttributes: ["documentation"],
184
184
  attributeConstraints: { documentation: { type: "string" }, format: { type: "string", enum: ["pdf", "html", "xml", "json", "plain-text", "binary"], description: "The media format of this representation" } }
185
+ }, NODE_TYPE_PRODUCT_CAPABILITY = {
186
+ specNodeId: "product.capability",
187
+ layer: "product",
188
+ type: "capability",
189
+ title: "Capability",
190
+ requiredAttributes: ["status"],
191
+ optionalAttributes: ["documentation", "properties"],
192
+ attributeConstraints: { documentation: { type: "string", description: "Detailed description of the capability" }, status: { type: "string", enum: ["proposed", "planned", "developing", "delivered", "deprecated"], description: "Lifecycle status of the capability" }, properties: { type: "object", description: "Cross-layer properties" } }
193
+ }, NODE_TYPE_PRODUCT_FEATURE = {
194
+ specNodeId: "product.feature",
195
+ layer: "product",
196
+ type: "feature",
197
+ title: "Feature",
198
+ requiredAttributes: ["priority", "status"],
199
+ optionalAttributes: ["documentation", "size", "properties"],
200
+ attributeConstraints: { documentation: { type: "string", description: "Detailed description of the feature" }, priority: { type: "string", enum: ["critical", "high", "medium", "low", "informational"], description: "Priority level" }, status: { type: "string", enum: ["proposed", "planned", "developing", "delivered", "deprecated"], description: "Lifecycle status of the feature" }, size: { type: "string", enum: ["xs", "s", "m", "l", "xl"], description: "Relative sizing estimate" }, properties: { type: "object", description: "Cross-layer properties" } }
201
+ }, NODE_TYPE_PRODUCT_MILESTONE = {
202
+ specNodeId: "product.milestone",
203
+ layer: "product",
204
+ type: "milestone",
205
+ title: "Milestone",
206
+ requiredAttributes: ["status"],
207
+ optionalAttributes: ["documentation"],
208
+ attributeConstraints: { documentation: { type: "string", description: "Detailed description of the milestone" }, status: { type: "string", enum: ["proposed", "planned", "active", "completed", "cancelled"], description: "Milestone status" } }
209
+ }, NODE_TYPE_PRODUCT_PERSONA = {
210
+ specNodeId: "product.persona",
211
+ layer: "product",
212
+ type: "persona",
213
+ title: "Persona",
214
+ requiredAttributes: ["category", "proficiency"],
215
+ optionalAttributes: ["documentation"],
216
+ attributeConstraints: { documentation: { type: "string", description: "Detailed description of the persona" }, category: { type: "string", enum: ["primary", "secondary", "served", "negative"], description: "Persona classification by importance" }, proficiency: { type: "string", enum: ["novice", "intermediate", "advanced", "expert"], description: "Technical proficiency level" } }
217
+ }, NODE_TYPE_PRODUCT_USERWORKFLOW = {
218
+ specNodeId: "product.userworkflow",
219
+ layer: "product",
220
+ type: "userworkflow",
221
+ title: "UserWorkflow",
222
+ requiredAttributes: ["complexity"],
223
+ optionalAttributes: ["documentation", "properties"],
224
+ attributeConstraints: { documentation: { type: "string", description: "Detailed description of the user workflow" }, complexity: { type: "string", enum: ["simple", "moderate", "complex"], description: "Workflow complexity assessment" }, properties: { type: "object", description: "Cross-layer properties" } }
185
225
  }, NODE_TYPE_SECURITY_ACCESSCONDITION = {
186
226
  specNodeId: "security.accesscondition",
187
227
  layer: "security",
@@ -1510,6 +1550,11 @@ const NODE_TYPE_MOTIVATION_ASSESSMENT = {
1510
1550
  ["business.contract", NODE_TYPE_BUSINESS_CONTRACT],
1511
1551
  ["business.product", NODE_TYPE_BUSINESS_PRODUCT],
1512
1552
  ["business.representation", NODE_TYPE_BUSINESS_REPRESENTATION],
1553
+ ["product.capability", NODE_TYPE_PRODUCT_CAPABILITY],
1554
+ ["product.feature", NODE_TYPE_PRODUCT_FEATURE],
1555
+ ["product.milestone", NODE_TYPE_PRODUCT_MILESTONE],
1556
+ ["product.persona", NODE_TYPE_PRODUCT_PERSONA],
1557
+ ["product.userworkflow", NODE_TYPE_PRODUCT_USERWORKFLOW],
1513
1558
  ["security.accesscondition", NODE_TYPE_SECURITY_ACCESSCONDITION],
1514
1559
  ["security.accountabilityrequirement", NODE_TYPE_SECURITY_ACCOUNTABILITYREQUIREMENT],
1515
1560
  ["security.actor", NODE_TYPE_SECURITY_ACTOR],