aw-spec-cli 0.1.3 → 0.1.5

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 (230) hide show
  1. package/README.md +291 -0
  2. package/assets/.agents/agent.json +28 -0
  3. package/assets/.agents/skills/aw-spec-orch/SKILL.md +56 -0
  4. package/assets/.agents/skills/aw-spec-orch-demo/SKILL.md +59 -0
  5. package/assets/.aw-spec/DESIGN-FORMAT.md +151 -0
  6. package/assets/.aw-spec/ORCH-DIALECT.md +156 -0
  7. package/assets/.aw-spec/RULE-PARTITION.md +126 -0
  8. package/assets/.aw-spec/extensions/agent-context/extension.yml +12 -9
  9. package/assets/.aw-spec/extensions.yml +12 -19
  10. package/assets/.aw-spec/integrations/aw-spec.manifest.json +1 -9
  11. package/assets/.aw-spec/interpreter/run-skill.py +1158 -0
  12. package/assets/.aw-spec/orchestrator/AGENT-PROFILE.md +94 -0
  13. package/assets/.aw-spec/orchestrator/README.md +300 -0
  14. package/assets/.aw-spec/orchestrator/adapters/claude_agent_sdk.py +74 -0
  15. package/assets/.aw-spec/orchestrator/adapters/google_antigravity.py +74 -0
  16. package/assets/.aw-spec/orchestrator/modules/delta-design.orch.yaml +105 -0
  17. package/assets/.aw-spec/orchestrator/modules/delta-spec.orch.yaml +79 -0
  18. package/assets/.aw-spec/orchestrator/modules/domain-select.orch.yaml +81 -0
  19. package/assets/.aw-spec/orchestrator/modules/tech-select.orch.yaml +75 -0
  20. package/assets/.aw-spec/orchestrator/orchestrator.py +1721 -0
  21. package/assets/.aw-spec/orchestrator/rev-templates/ai-rules.reference.md +40 -0
  22. package/assets/.aw-spec/orchestrator/rev-templates/comandrulemap.skeleton.md +59 -0
  23. package/assets/.aw-spec/orchestrator/rev-templates/commandtechrulemap.skeleton.md +97 -0
  24. package/assets/.aw-spec/orchestrator/rev-templates/domain-constitution.skeleton.md +61 -0
  25. package/assets/.aw-spec/orchestrator/rev-templates/domain-requirements.skeleton.md +48 -0
  26. package/assets/.aw-spec/orchestrator/rev-templates/domain-rule-file.skeleton.md +39 -0
  27. package/assets/.aw-spec/orchestrator/rev-templates/technical-constitution.skeleton.md +106 -0
  28. package/assets/.aw-spec/orchestrator/rev-templates/technical-rule-file.skeleton.md +54 -0
  29. package/assets/.aw-spec/orchestrator/workflows/_smoke.orch.yaml +160 -0
  30. package/assets/.aw-spec/orchestrator/workflows/aw-spec-add-component.orch.yaml +244 -0
  31. package/assets/.aw-spec/orchestrator/workflows/aw-spec-adopt.orch.yaml +775 -0
  32. package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +248 -0
  33. package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +261 -0
  34. package/assets/.aw-spec/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +425 -0
  35. package/assets/.aw-spec/orchestrator/workflows/aw-spec-build.orch.yaml +188 -0
  36. package/assets/.aw-spec/orchestrator/workflows/aw-spec-characterize.orch.yaml +474 -0
  37. package/assets/.aw-spec/orchestrator/workflows/aw-spec-close-delta.orch.yaml +181 -0
  38. package/assets/.aw-spec/orchestrator/workflows/aw-spec-constitution.orch.yaml +284 -0
  39. package/assets/.aw-spec/orchestrator/workflows/aw-spec-demo.orch.yaml +103 -0
  40. package/assets/.aw-spec/orchestrator/workflows/aw-spec-dependency-tree.orch.yaml +69 -0
  41. package/assets/.aw-spec/orchestrator/workflows/aw-spec-deploy.orch.yaml +85 -0
  42. package/assets/.aw-spec/orchestrator/workflows/aw-spec-design.orch.yaml +382 -0
  43. package/assets/.aw-spec/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +382 -0
  44. package/assets/.aw-spec/orchestrator/workflows/aw-spec-foundation.orch.yaml +246 -0
  45. package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +231 -0
  46. package/assets/.aw-spec/orchestrator/workflows/aw-spec-implement.orch.yaml +258 -0
  47. package/assets/.aw-spec/orchestrator/workflows/aw-spec-inventory.orch.yaml +236 -0
  48. package/assets/.aw-spec/orchestrator/workflows/aw-spec-onboard.orch.yaml +949 -0
  49. package/assets/.aw-spec/orchestrator/workflows/aw-spec-parity.orch.yaml +293 -0
  50. package/assets/.aw-spec/orchestrator/workflows/aw-spec-run.orch.yaml +177 -0
  51. package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-domain.orch.yaml +79 -0
  52. package/assets/.aw-spec/orchestrator/workflows/aw-spec-select-feature.orch.yaml +128 -0
  53. package/assets/.aw-spec/orchestrator/workflows/aw-spec-specify.orch.yaml +412 -0
  54. package/assets/.aw-spec/scripts/bash/aw-inventory.sh +14 -0
  55. package/assets/.aw-spec/scripts/bash/aw-parity.sh +13 -0
  56. package/assets/.aw-spec/scripts/bash/aw-rev-constitution.sh +13 -0
  57. package/assets/.aw-spec/scripts/bash/aw-spec-actions.sh +1899 -0
  58. package/assets/.aw-spec/scripts/bash/aw-xref.sh +15 -0
  59. package/assets/.aw-spec/scripts/bash/common.sh +11 -60
  60. package/assets/.aw-spec/scripts/powershell/aw-inventory.ps1 +14 -0
  61. package/assets/.aw-spec/scripts/powershell/aw-parity.ps1 +13 -0
  62. package/assets/.aw-spec/scripts/powershell/aw-rev-constitution.ps1 +13 -0
  63. package/assets/.aw-spec/scripts/powershell/aw-spec-actions.ps1 +1563 -0
  64. package/assets/.aw-spec/scripts/powershell/aw-xref.ps1 +15 -0
  65. package/assets/.aw-spec/scripts/python/aw-inventory.py +683 -0
  66. package/assets/.aw-spec/scripts/python/aw-parity.py +380 -0
  67. package/assets/.aw-spec/scripts/python/aw-rev-constitution.py +312 -0
  68. package/assets/.aw-spec/scripts/python/aw-xref.py +1330 -0
  69. package/assets/.aw-spec/scripts/python/validate_okf.py +349 -0
  70. package/assets/.aw-spec/templates/constitution-domain-template.md +75 -0
  71. package/assets/.aw-spec/templates/constitution-technical-template.md +70 -0
  72. package/assets/.aw-spec/templates/delta-design-template.md +69 -0
  73. package/assets/.aw-spec/templates/delta-spec-template.md +60 -0
  74. package/assets/.aw-spec/templates/design-template.md +383 -0
  75. package/assets/.aw-spec/templates/okf-concept-template.md +103 -0
  76. package/assets/.aw-spec/templates/parity-manifest-template.json +49 -0
  77. package/assets/.aw-spec/templates/source-map-template.md +85 -0
  78. package/assets/.aw-spec/templates/spec-template.md +192 -71
  79. package/assets/.claude/agent.json +27 -0
  80. package/assets/.claude/skills/aw-spec-orch/SKILL.md +55 -0
  81. package/assets/.claude/skills/aw-spec-orch-demo/SKILL.md +59 -0
  82. package/assets/.kilocode/agent.json +28 -0
  83. package/assets/.kilocode/workflows/aw-spec-orch-demo.md +59 -0
  84. package/assets/.kilocode/workflows/aw-spec-orch.md +55 -0
  85. package/assets/docs/architecture/clean-architecture.md +1 -1
  86. package/assets/docs/architecture/cqrs.md +1 -1
  87. package/assets/docs/architecture/eventing.md +1 -1
  88. package/assets/docs/architecture/folder-structure.md +1 -1
  89. package/assets/docs/architecture/modular-monolith.md +1 -1
  90. package/assets/docs/architecture/persistence.md +1 -1
  91. package/assets/docs/architecture/testing.md +1 -1
  92. package/assets/docs/architecture/vertical-slices.md +1 -1
  93. package/assets/docs/components/Email/README.md +1 -1
  94. package/assets/docs/components/Jobs/README.md +1 -1
  95. package/assets/docs/components/QrGenerator/README.md +1 -1
  96. package/assets/docs/components/README.md +1 -1
  97. package/assets/docs/domain/domain-driven-design.md +1 -1
  98. package/assets/docs/domainspecs/healthcare/api-versioning.domain.md +1 -1
  99. package/assets/docs/domainspecs/healthcare/auditing.domain.md +86 -18
  100. package/assets/docs/domainspecs/healthcare/authorization.domain.md +1 -1
  101. package/assets/docs/domainspecs/healthcare/clinical-terms.md +1 -1
  102. package/assets/docs/domainspecs/healthcare/coding-standards.domain.md +1 -1
  103. package/assets/docs/domainspecs/healthcare/comandrulemap.md +58 -124
  104. package/assets/docs/domainspecs/healthcare/commandtechrulemap.md +119 -0
  105. package/assets/docs/domainspecs/healthcare/consent.md +1 -1
  106. package/assets/docs/domainspecs/healthcare/cqrs.domain.md +1 -1
  107. package/assets/docs/domainspecs/healthcare/data-classification.domain.md +1 -1
  108. package/assets/docs/domainspecs/healthcare/dependency-policy.domain.md +1 -1
  109. package/assets/docs/domainspecs/healthcare/dicom.md +1 -1
  110. package/assets/docs/domainspecs/healthcare/domain-driven-design.domain.md +1 -1
  111. package/assets/docs/domainspecs/healthcare/eventing.domain.md +1 -1
  112. package/assets/docs/domainspecs/healthcare/fhir.md +1 -1
  113. package/assets/docs/domainspecs/healthcare/folder-structure.domain.md +1 -1
  114. package/assets/docs/domainspecs/healthcare/hipaa.md +1 -1
  115. package/assets/docs/domainspecs/healthcare/hl7.md +1 -1
  116. package/assets/docs/domainspecs/healthcare/integration-terms.md +1 -1
  117. package/assets/docs/domainspecs/healthcare/persistence.domain.md +1 -1
  118. package/assets/docs/domainspecs/healthcare/terminology.md +1 -1
  119. package/assets/docs/domainspecs/healthcare/testing.domain.md +1 -1
  120. package/assets/docs/domainspecs/healthcare/vertical-slices.domain.md +1 -1
  121. package/assets/docs/domainspecs/healthcare/zero-trust.domain.md +1 -1
  122. package/assets/docs/domainspecs/pharma/api-versioning.domain.md +1 -1
  123. package/assets/docs/domainspecs/pharma/atc.md +1 -1
  124. package/assets/docs/domainspecs/pharma/auditing.domain.md +80 -16
  125. package/assets/docs/domainspecs/pharma/authorization.domain.md +1 -1
  126. package/assets/docs/domainspecs/pharma/coding-standards.domain.md +1 -1
  127. package/assets/docs/domainspecs/pharma/comandrulemap.md +64 -142
  128. package/assets/docs/domainspecs/pharma/commandtechrulemap.md +119 -0
  129. package/assets/docs/domainspecs/pharma/cqrs.domain.md +1 -1
  130. package/assets/docs/domainspecs/pharma/data-classification.domain.md +1 -1
  131. package/assets/docs/domainspecs/pharma/data-provenance.md +1 -1
  132. package/assets/docs/domainspecs/pharma/dependency-policy.domain.md +1 -1
  133. package/assets/docs/domainspecs/pharma/domain-driven-design.domain.md +1 -1
  134. package/assets/docs/domainspecs/pharma/eventing.domain.md +1 -1
  135. package/assets/docs/domainspecs/pharma/fhir.md +1 -1
  136. package/assets/docs/domainspecs/pharma/folder-structure.domain.md +1 -1
  137. package/assets/docs/domainspecs/pharma/hl7.md +1 -1
  138. package/assets/docs/domainspecs/pharma/idmp.md +1 -1
  139. package/assets/docs/domainspecs/pharma/integration-terms.md +1 -1
  140. package/assets/docs/domainspecs/pharma/ndc.md +1 -1
  141. package/assets/docs/domainspecs/pharma/persistence.domain.md +1 -1
  142. package/assets/docs/domainspecs/pharma/pharma-terms.md +1 -1
  143. package/assets/docs/domainspecs/pharma/product-lifecycle.domain.md +1 -1
  144. package/assets/docs/domainspecs/pharma/regulatory-compliance.md +1 -1
  145. package/assets/docs/domainspecs/pharma/terminology.md +1 -1
  146. package/assets/docs/domainspecs/pharma/testing.domain.md +1 -1
  147. package/assets/docs/domainspecs/pharma/vertical-slices.domain.md +1 -1
  148. package/assets/docs/domainspecs/pharma/zero-trust.domain.md +1 -1
  149. package/assets/docs/governance/api-versioning.md +1 -1
  150. package/assets/docs/governance/coding-standards.md +1 -1
  151. package/assets/docs/governance/dependency-policy.md +1 -1
  152. package/assets/docs/requirement-spec.txt +13 -1
  153. package/assets/docs/security/auditing.md +54 -11
  154. package/assets/docs/security/authorization.md +1 -1
  155. package/assets/docs/security/data-classification.md +1 -1
  156. package/assets/docs/security/zero-trust.md +1 -1
  157. package/dist/commands/update.d.ts +3 -0
  158. package/dist/commands/update.d.ts.map +1 -0
  159. package/dist/commands/update.js +142 -0
  160. package/dist/commands/update.js.map +1 -0
  161. package/dist/utils/manifest.d.ts +31 -0
  162. package/dist/utils/manifest.d.ts.map +1 -0
  163. package/dist/utils/manifest.js +91 -0
  164. package/dist/utils/manifest.js.map +1 -0
  165. package/dist/utils/paths.js +2 -2
  166. package/dist/utils/paths.js.map +1 -1
  167. package/dist/utils/update-engine.d.ts +52 -0
  168. package/dist/utils/update-engine.d.ts.map +1 -0
  169. package/dist/utils/update-engine.js +203 -0
  170. package/dist/utils/update-engine.js.map +1 -0
  171. package/package.json +1 -1
  172. package/assets/.agents/skills/aw-spec-addcomponent/SKILL.md +0 -129
  173. package/assets/.agents/skills/aw-spec-agent-context-update/SKILL.md +0 -31
  174. package/assets/.agents/skills/aw-spec-analyze/SKILL.md +0 -296
  175. package/assets/.agents/skills/aw-spec-checklist/SKILL.md +0 -374
  176. package/assets/.agents/skills/aw-spec-clarify/SKILL.md +0 -320
  177. package/assets/.agents/skills/aw-spec-constitution/SKILL.md +0 -194
  178. package/assets/.agents/skills/aw-spec-fast-implement/SKILL.md +0 -268
  179. package/assets/.agents/skills/aw-spec-foundation/SKILL.md +0 -358
  180. package/assets/.agents/skills/aw-spec-implement/SKILL.md +0 -279
  181. package/assets/.agents/skills/aw-spec-minimal-implementation/SKILL.md +0 -209
  182. package/assets/.agents/skills/aw-spec-plan/SKILL.md +0 -221
  183. package/assets/.agents/skills/aw-spec-select-domain/SKILL.md +0 -73
  184. package/assets/.agents/skills/aw-spec-specify/SKILL.md +0 -382
  185. package/assets/.agents/skills/aw-spec-tasks/SKILL.md +0 -259
  186. package/assets/.agents/skills/aw-spec-taskstoissues/SKILL.md +0 -107
  187. package/assets/.aw-spec/integrations/claude.manifest.json +0 -17
  188. package/assets/.aw-spec/scripts/bash/check-prerequisites.sh +0 -189
  189. package/assets/.aw-spec/scripts/bash/create-new-feature.sh +0 -299
  190. package/assets/.aw-spec/scripts/bash/setup-plan.sh +0 -84
  191. package/assets/.aw-spec/scripts/bash/setup-tasks.sh +0 -91
  192. package/assets/.aw-spec/templates/checklist-template.md +0 -40
  193. package/assets/.aw-spec/templates/constitution-template.md +0 -57
  194. package/assets/.aw-spec/templates/plan-template.md +0 -113
  195. package/assets/.aw-spec/templates/tasks-template.md +0 -252
  196. package/assets/.aw-spec/workflows/aw-spec/workflow.yml +0 -77
  197. package/assets/.aw-spec/workflows/workflow-registry.json +0 -13
  198. package/assets/.claude/skills/aw-spec-addcomponent/SKILL.md +0 -129
  199. package/assets/.claude/skills/aw-spec-agent-context-update/SKILL.md +0 -31
  200. package/assets/.claude/skills/aw-spec-analyze/SKILL.md +0 -296
  201. package/assets/.claude/skills/aw-spec-checklist/SKILL.md +0 -374
  202. package/assets/.claude/skills/aw-spec-clarify/SKILL.md +0 -320
  203. package/assets/.claude/skills/aw-spec-constitution/SKILL.md +0 -194
  204. package/assets/.claude/skills/aw-spec-fast-implement/SKILL.md +0 -268
  205. package/assets/.claude/skills/aw-spec-foundation/SKILL.md +0 -358
  206. package/assets/.claude/skills/aw-spec-implement/SKILL.md +0 -279
  207. package/assets/.claude/skills/aw-spec-minimal-implementation/SKILL.md +0 -209
  208. package/assets/.claude/skills/aw-spec-plan/SKILL.md +0 -221
  209. package/assets/.claude/skills/aw-spec-select-domain/SKILL.md +0 -73
  210. package/assets/.claude/skills/aw-spec-specify/SKILL.md +0 -382
  211. package/assets/.claude/skills/aw-spec-tasks/SKILL.md +0 -259
  212. package/assets/.claude/skills/aw-spec-taskstoissues/SKILL.md +0 -107
  213. package/assets/.kilocode/rules/specify-rules.md +0 -4
  214. package/assets/.kilocode/workflows/aw-spec-addcomponent.md +0 -129
  215. package/assets/.kilocode/workflows/aw-spec-agent-context.update.md +0 -31
  216. package/assets/.kilocode/workflows/aw-spec-analyze.md +0 -296
  217. package/assets/.kilocode/workflows/aw-spec-checklist.md +0 -374
  218. package/assets/.kilocode/workflows/aw-spec-clarify.md +0 -320
  219. package/assets/.kilocode/workflows/aw-spec-constitution.md +0 -194
  220. package/assets/.kilocode/workflows/aw-spec-fast-implement.md +0 -263
  221. package/assets/.kilocode/workflows/aw-spec-foundation.md +0 -358
  222. package/assets/.kilocode/workflows/aw-spec-implement.md +0 -279
  223. package/assets/.kilocode/workflows/aw-spec-minimal-implementation.md +0 -204
  224. package/assets/.kilocode/workflows/aw-spec-plan.md +0 -221
  225. package/assets/.kilocode/workflows/aw-spec-select-domain.md +0 -73
  226. package/assets/.kilocode/workflows/aw-spec-specify.md +0 -382
  227. package/assets/.kilocode/workflows/aw-spec-tasks.md +0 -259
  228. package/assets/.kilocode/workflows/aw-spec-taskstoissues.md +0 -107
  229. package/assets/docs/command.txt +0 -295
  230. package/assets/docs/pharma-constitution.my-ref.md +0 -86
@@ -0,0 +1,119 @@
1
+ # Pharma Domain — Command → Technical-Rule-File Map
2
+
3
+ Per-command list of the **technical** rule files loaded (via `resolve-tech` + the
4
+ `tech-select` module, into the sticky standards set) for the spec-anchored
5
+ orchestrator pipeline. This is the technical counterpart of `comandrulemap.md`
6
+ (which maps the DOMAIN rule files).
7
+
8
+ **The model:** the technical rule files (the `docs/architecture` Ā· `docs/security` Ā·
9
+ `docs/interop` Ā· `docs/governance` set that used to be HARDCODED in each workflow's
10
+ `standards:` block) are now CONFIGURATION — tune this map, not the workflows. The
11
+ technology base itself (`constitution.technical.md`) is NOT listed here — every
12
+ consumer still refers to it directly, as-is.
13
+
14
+ - All paths are workspace-relative technical rule files (domain-agnostic docs/…).
15
+ - `resolve-tech --command <name>` collects the `- ` bullets under `## /<name>`.
16
+ - This file is the **canonical technical mapping** for the pharma domain; it is
17
+ selected whenever pharma is the active domain (`.aw-spec/domain.json`).
18
+ - A command with no heading here loads no mapped technical file (only the workflow's
19
+ universal `ai-rules.md` seed + `constitution.technical.md`, referred to directly).
20
+ - `## /aw-spec-specify` is the one **modelling-methodology** slot (see the rule partition):
21
+ a domain-agnostic way of *modelling*, never a technology choice. Everything below it is a
22
+ HOW-phase technical set.
23
+
24
+ ---
25
+
26
+ ## /aw-spec-specify
27
+ <!-- MODELLING METHODOLOGY ONLY. Specify is the domain phase: the single technical input it
28
+ may take is a domain-agnostic way of MODELLING (DDD tactical patterns), never a
29
+ technology choice. Do NOT add an architecture / persistence / codegen file here — that
30
+ would break specify's domain purity (design/implement own those). The domain's own DDD
31
+ overlay (domain-driven-design.domain.md) arrives separately via comandrulemap. -->
32
+ - docs/domain/domain-driven-design.md
33
+
34
+ ## /aw-spec-design
35
+ <!-- The technical/architecture rule files the design author works from (alongside the
36
+ spec and constitution.technical.md). NO domain file here — domain reaches design
37
+ only as spec ids (BR-/CN-/DC-/IC-). -->
38
+ - docs/architecture/clean-architecture.md
39
+ - docs/architecture/cqrs.md
40
+ - docs/architecture/eventing.md
41
+ - docs/architecture/modular-monolith.md
42
+ - docs/architecture/vertical-slices.md
43
+ - docs/architecture/persistence.md
44
+ - docs/architecture/folder-structure.md
45
+ - docs/architecture/testing.md
46
+ - docs/governance/api-versioning.md
47
+ - docs/security/zero-trust.md
48
+ - docs/security/authorization.md
49
+ - docs/security/authorization-matrix.md
50
+ - docs/security/auditing.md
51
+ - docs/security/data-classification.md
52
+ - docs/interop/ihe-conformance.md
53
+
54
+ ## /aw-spec-implement
55
+ <!-- The FRAMEWORK / code-generation rule files the code generator builds against
56
+ (alongside design.md and constitution.technical.md). NO domain file — domain
57
+ reaches implement only through design.md. clean-architecture/cqrs are design
58
+ concerns; component wiring is a separate /aw-spec-orch add-component step. -->
59
+ - docs/governance/coding-standards.md
60
+ - docs/governance/dependency-policy.md
61
+ - docs/architecture/folder-structure.md
62
+ - docs/architecture/testing.md
63
+ - docs/VerticalSlice/PACKAGING.md
64
+
65
+ ## /aw-spec-implement-delta
66
+ <!-- The CR analog of implement — same FRAMEWORK / code-generation set (HOW to build).
67
+ The delta's code is generated against the master design.md + delta-design.md; no
68
+ domain file (domain reached the delta via delta-spec → delta-design). -->
69
+ - docs/governance/coding-standards.md
70
+ - docs/governance/dependency-policy.md
71
+ - docs/architecture/folder-structure.md
72
+ - docs/architecture/testing.md
73
+ - docs/VerticalSlice/PACKAGING.md
74
+
75
+ ## /aw-spec-build
76
+ <!-- The compile/fix reference set: the layering + coding rules the fixer respects when
77
+ repairing compile errors against the design intent. NO domain file (build loads
78
+ domain rules separately via domain-select) and no constitution.technical here. -->
79
+ - docs/architecture/clean-architecture.md
80
+ - docs/governance/coding-standards.md
81
+
82
+ ## /aw-spec-analyze-slice
83
+ <!-- The design↔code conformance gate's TECHNICAL checklist: the code + tests are
84
+ validated against these (alongside the DOMAIN gate overlays, loaded separately via
85
+ resolve-domain `## /aw-spec-gate`). Validation input only — never authoring. -->
86
+ - docs/architecture/testing.md
87
+ - docs/governance/coding-standards.md
88
+
89
+ ## /aw-spec-constitution
90
+ <!-- The technology-constitution base the TECHNICAL half of the split constitution
91
+ ratifies into constitution.technical.md. Loaded BEFORE the technical half and before
92
+ domain-select, so the technical author stays domain-free (the seam). NO domain file
93
+ here — the domain half's sources are the domain map's ## /aw-spec-constitution. -->
94
+ - docs/technology-constitution.md
95
+
96
+ ## /aw-spec-run
97
+ <!-- Execution / data migration: the persistence rules the migration step generates against.
98
+ NO domain file; run does not reference constitution.technical.md. -->
99
+ - docs/architecture/persistence.md
100
+
101
+ ---
102
+
103
+ ## Quick reference (command → technical file count)
104
+
105
+ | Command | Technical rule files | Role |
106
+ |---|---|---|
107
+ | /aw-spec-specify | 1 | the modelling methodology (DDD) the domain model is expressed in — no technology |
108
+ | /aw-spec-design | 15 | architecture/security/interop the design author mediates the spec against |
109
+ | /aw-spec-implement | 5 | governance/architecture the code generator builds against (from design.md) |
110
+ | /aw-spec-implement-delta | 5 | same code-generation set, scoped to the open change's delta-design |
111
+ | /aw-spec-build | 2 | layering + coding rules the compile-fixer respects |
112
+ | /aw-spec-analyze-slice | 2 | testing + coding rules the design↔code gate validates against |
113
+ | /aw-spec-constitution | 1 | the technology-constitution base the technical half ratifies |
114
+ | /aw-spec-run | 1 | persistence rules the execution / data-migration step generates against |
115
+
116
+ > All migrated workflows are on this map. The conformance-gate workflows **analyze-design**
117
+ > and **analyze-delta-design** are intentionally NOT here — they validate design/delta
118
+ > against the spec + DOMAIN gate overlays only (comandrulemap `## /aw-spec-gate`), with no
119
+ > technical gate checklist.
@@ -1,6 +1,6 @@
1
1
  # CQRS — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[cqrs]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[cqrs]]. Commands: `/aw-spec-specify`, `/aw-spec-gate`.
4
4
 
5
5
  ## Pipeline
6
6
  - Append a **product-audit behavior** to the mediator pipeline: every create/modify/retire/re-identify/reclassify command on `MedicinalProduct` MUST emit an immutable audit record (User, Timestamp, Action, Previous Value, New Value). See [[auditing.domain]], [[regulatory-compliance]].
@@ -1,6 +1,6 @@
1
1
  # Data Classification — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[data-classification]]. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-implement`.
3
+ > Technology base: [[data-classification]]. Commands: `/aw-spec-constitution`, `/aw-spec-specify`, `/aw-spec-gate`.
4
4
 
5
5
  > No PHI — the model is commercial confidentiality, regulatory integrity, and source trust.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Data Provenance Standards — Pharma
2
2
 
3
- > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## First-class concern
6
6
  - Any product attribute imported from an external source (FDA NDC directory, RxNorm, WHO ATC, an MAH submission, a partner feed) SHALL carry a **`ProvenanceRecord`** (Provenance module).
@@ -1,6 +1,6 @@
1
1
  # Dependency Policy — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[dependency-policy]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`.
3
+ > Technology base: [[dependency-policy]]. Commands: `/aw-spec-gate`.
4
4
 
5
5
  ## Reviews & libraries
6
6
  - Every new dependency gets a **regulatory-suitability** review beyond the generic license/supply-chain check — reject packages that phone home or ship analytics by default (leak risk for commercially-sensitive pre-market data) (see [[data-classification.domain]]).
@@ -1,6 +1,6 @@
1
1
  # Domain-Driven Design — Medicinal Product Domain Model
2
2
 
3
- > Technology base: [[domain-driven-design]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[domain-driven-design]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`.
4
4
 
5
5
  ## Modeling
6
6
  - Use the pharma/regulatory ubiquitous language (see [[pharma-terms]]), aligned to ISO IDMP concepts (see [[idmp]]).
@@ -1,6 +1,6 @@
1
1
  # Eventing — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[eventing]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[eventing]]. Commands: `/aw-spec-specify`, `/aw-spec-gate`.
4
4
 
5
5
  ## Domain events
6
6
  - `MedicinalProduct` raises domain events on every significant state change — the integration seam to downstream consumers (prescribing, dispensing, manufacturing, pharmacovigilance, clinical).
@@ -1,6 +1,6 @@
1
1
  # FHIR Standards — Pharma
2
2
 
3
- > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## Architecture & projectors
6
6
  - **R4 default**; R5 **additive** under `/fhir/R5/...`. FHIR is the canonical interop contract; it + any internal REST serve from the **same authoritative aggregates** — no duplicate write paths.
@@ -1,6 +1,6 @@
1
1
  # Folder Structure — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[folder-structure]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`. Replace `<SampleProjectName>`.
3
+ > Technology base: [[folder-structure]]. Commands: `/aw-spec-gate`. Replace `<SampleProjectName>`.
4
4
 
5
5
  ## Additions to the base layout
6
6
  ```
@@ -1,6 +1,6 @@
1
1
  # HL7 Integration Readiness — Pharma
2
2
 
3
- > Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## Principle
6
6
  - The solution SHALL support **future integration with HL7-based systems**. The registry is the authoritative product source; HL7 surfaces are **adapters, not a parallel model**. FHIR is the primary contract (see [[fhir]]); HL7 v2 adapters are added where a downstream system (prescribing/dispensing/manufacturing/pharmacovigilance) needs them.
@@ -1,6 +1,6 @@
1
1
  # ISO IDMP — Identification of Medicinal Products
2
2
 
3
- > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## Alignment principle
6
6
  - The model SHALL align with the ISO IDMP suite (**ISO 11615/11616/11238/11239/11240**) **where applicable** — IDMP shapes the ubiquitous language + aggregate boundaries; it is **not** a wire format and does not replace the internal model (see [[domain-driven-design.domain]]).
@@ -1,6 +1,6 @@
1
1
  # Glossary — Integration Terms (Pharma)
2
2
 
3
- > Ubiquitous language for pharma interoperability standards + identifiers. Commands: `/aw-spec-specify`, `/aw-spec-clarify`, `/aw-spec-plan`. See [[pharma-terms]] (aggregates) + [[terminology]] (coding).
3
+ > Ubiquitous language for pharma interoperability standards + identifiers. Commands: `/aw-spec-specify`. See [[pharma-terms]] (aggregates) + [[terminology]] (coding).
4
4
 
5
5
  | Term | Definition |
6
6
  |---|---|
@@ -1,6 +1,6 @@
1
1
  # NDC — National Drug Code Standards
2
2
 
3
- > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## Value Object
6
6
  - **NDC SHALL be a Value Object** (`NdcCode`) — immutable, equality by value (see [[domain-driven-design.domain]]).
@@ -1,6 +1,6 @@
1
1
  # Persistence — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[persistence]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[persistence]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-gate`.
4
4
 
5
5
  ## Version history
6
6
  - Maintain a **version history** of product information: each approved change produces a new, immutable **`ProductVersion`** snapshot.
@@ -1,6 +1,6 @@
1
1
  # Glossary — Pharmaceutical Terms
2
2
 
3
- > Ubiquitous language for the medicinal product registry. Commands: `/aw-spec-specify`, `/aw-spec-clarify`, `/aw-spec-plan`. See [[domain-driven-design.domain]] (modeling), [[terminology]] (coding), [[integration-terms]] (interop).
3
+ > Ubiquitous language for the medicinal product registry. Commands: `/aw-spec-constitution`, `/aw-spec-specify`. See [[domain-driven-design.domain]] (modeling), [[terminology]] (coding), [[integration-terms]] (interop).
4
4
 
5
5
  | Term | Definition |
6
6
  |---|---|
@@ -1,6 +1,6 @@
1
1
  # Product Lifecycle — Medicinal Product State Machine
2
2
 
3
- > Technology base: [[domain-driven-design]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[domain-driven-design]]. NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## States
6
6
  `Draft` → `Under Review` → `Approved` → `Active` → `Discontinued` / `Withdrawn`
@@ -1,6 +1,6 @@
1
1
  # Regulatory & Compliance Standards — Pharma
2
2
 
3
- > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  > Umbrella for the compliance requirements — mechanisms live in the linked files.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Terminology Standards — Pharma
2
2
 
3
- > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-constitution`, `/aw-spec-specify`.
4
4
 
5
5
  ## Coded value objects
6
6
  - **Coded data MUST use industry terminologies — free-text strings for coded concepts are FORBIDDEN.**
@@ -1,6 +1,6 @@
1
1
  # Testing — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[testing]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[testing]]. Commands: `/aw-spec-gate`.
4
4
 
5
5
  ## What MUST be tested
6
6
  - **Aggregate invariants** — required attributes; >= 1 ActiveIngredient; >= 1 PackagingConfiguration; NDC uniqueness + format; invalid dosage forms/routes rejected (see [[domain-driven-design.domain]], [[ndc]], [[terminology]]).
@@ -1,6 +1,6 @@
1
1
  # Vertical Slices — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[vertical-slices]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Technology base: [[vertical-slices]]. Commands: `/aw-spec-specify`, `/aw-spec-gate`.
4
4
 
5
5
  ## Interop adapters in the slice
6
6
  `{Module}/Interop/` carries the pharma external-protocol adapters:
@@ -1,6 +1,6 @@
1
1
  # Zero-Trust — Pharma Domain Addenda
2
2
 
3
- > Technology base: [[zero-trust]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`.
3
+ > Technology base: [[zero-trust]]. Commands: `/aw-spec-constitution`, `/aw-spec-specify`, `/aw-spec-gate`.
4
4
 
5
5
  ## Rules
6
6
  - All registry traffic MUST be TLS-encrypted; commercially-sensitive pre-market data in transit MUST be TLS-protected; at-rest: see [[data-classification.domain]], [[persistence.domain]].
@@ -1,6 +1,6 @@
1
1
  # API Versioning Policy
2
2
 
3
- > Pure technology (domain-agnostic) — domain (e.g. FHIR) versioning in [[api-versioning.domain]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain (e.g. FHIR) versioning in [[api-versioning.domain]]. Commands: `/aw-spec-design`.
4
4
 
5
5
  ## REST versioning
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Coding Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain forbidden patterns & CI gates in [[coding-standards.domain]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain forbidden patterns & CI gates in [[coding-standards.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-build`, `/aw-spec-analyze-slice`.
4
4
 
5
5
  ## Naming conventions
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Dependency Policy
2
2
 
3
- > Pure technology (domain-agnostic) — domain package rules in [[dependency-policy.domain]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain package rules in [[dependency-policy.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`.
4
4
 
5
5
  ## Package governance
6
6
 
@@ -1,4 +1,8 @@
1
- /aw-spec-specify MedicinalProduct/RegisterMedicinalProduct
1
+ MedicinalProduct/
2
+
3
+ /aw-spec-orch constitution @docs/pharma-constitution.md
4
+
5
+ /aw-spec-orch specify RegisterMedicinalProduct
2
6
 
3
7
  Allow an authorized user to register a new medicinal product in the registry.
4
8
 
@@ -12,4 +16,12 @@ Acceptance:
12
16
  - A product missing a required attribute, an active ingredient, or a packaging configuration is rejected.
13
17
  - The creation is recorded in the audit trail.
14
18
 
19
+ /aw-spec-orch design
20
+
21
+ /aw-spec-orch analyze-design
22
+
23
+ /aw-spec-orch implement
24
+
25
+
26
+
15
27
  ==============================================================================================
@@ -1,6 +1,6 @@
1
1
  # Auditing & Observability Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain audit additions in [[auditing.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain audit additions in [[auditing.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
4
4
 
5
5
  ## Observability baseline
6
6
 
@@ -39,14 +39,37 @@
39
39
  - Audit records are retained per the applicable retention policy (see [[persistence]];
40
40
  regulatory retention in [[auditing.domain]]).
41
41
 
42
- ## Canonical example (agent reference — `<SampleProjectName>` sample)
42
+ ## Two auditing levels
43
+
44
+ Auditing has exactly **two levels**, chosen **per aggregate** by the marker interfaces the root
45
+ implements. The interceptor populates every audit field automatically (no manual
46
+ `CreatedOn`/`ModifiedBy` assignment in handlers):
47
+
48
+ | Level | Aggregate root implements | Captured | Depth |
49
+ |-------|---------------------------|----------|-------|
50
+ | **Basic** | `IAuditedObject` (creation+modification) or `IFullAuditedObject` (+soft-delete) | `CreatedBy/On`, `ModifiedBy/On`, `DeletedBy/On`; one `AuditLog` per root per SaveChanges | entity-level (Created/Updated/Deleted) — no before/after |
51
+ | **Advanced** | Basic markers **+ `IFieldAudited`** | Basic + field-level before/after (`PropertyChange`: original → new) | entity + property-level previous/new |
43
52
 
44
- Aggregates opt into auditing by implementing the audit interfaces; the framework populates the
45
- fields automatically (no manual `CreatedOn`/`ModifiedBy` assignment in handlers):
53
+ Field-level before/after values exist **only** at the Advanced tier. Children marked
54
+ `IAggregateChild` fold into the root's `AuditLog`.
55
+
56
+ ## Canonical example (agent reference — `<SampleProjectName>` sample)
46
57
 
47
58
  ```csharp
48
- public class Project :
49
- EntityBase<ProjectId>, IAggregateRoot,
59
+ // Basic — lifecycle stamps only
60
+ public sealed class Category :
61
+ AggregateRootBase<CategoryId>, IAggregateRoot,
62
+ IAuditedObject // creation + modification
63
+ {
64
+ public DateTimeOffset CreatedOn { get; set; }
65
+ public string CreatedBy { get; set; } = default!;
66
+ public DateTimeOffset? ModifiedOn { get; set; }
67
+ public string? ModifiedBy { get; set; }
68
+ }
69
+
70
+ // Advanced — full lifecycle + field-level (before/after) tracking
71
+ public sealed class Project :
72
+ AggregateRootBase<ProjectId>, IAggregateRoot,
50
73
  IFullAuditedObject, // ICreationAudited + IModificationAudited + IDeletionAudited
51
74
  IFieldAudited, // opt-in to field-level (before/after) auditing
52
75
  ISoftDeletable, IConcurrencyTracked, IHasDomainEvents
@@ -69,15 +92,17 @@ The DbContext applies audit (plus soft-delete/tenant) behaviors centrally:
69
92
  modelBuilder.ApplyCrossCuttingBehaviors(this); // wires audit interceptors + filters
70
93
  ```
71
94
 
72
- Composition — enable auditing on the repository stack and route audit records to a
73
- separate, append-only store (schema `Auditing`, prefix `Audit_`):
95
+ Composition — enable auditing on the repository stack (one `EnableAdvancedAuditing()` registers
96
+ the interceptor that serves **both** levels; per-aggregate level is decided by the interfaces
97
+ above) and route audit records to a separate, append-only store (schema `Auditing`, prefix
98
+ `Audit_`):
74
99
 
75
100
  ```csharp
76
101
  // <SampleProjectName>.Service/Extensions/InfrastructureServiceRegistration.cs
77
102
  services.AddRepositories(builder => builder
78
103
  .UseSingleDbContextEFRepositories<ApplicationDbContext>(/* ... */)
79
- .EnableAuditing()
80
- .EnableAdvancedAuditing()
104
+ .EnableSoftDelete()
105
+ .EnableAdvancedAuditing() // AdvancedAuditingSaveChangesInterceptor
81
106
  .Done(), o => o.Provider = "EfCore");
82
107
 
83
108
  services.AddDataStore(b => b.UseEfCoreDataStore(/* ... */), o =>
@@ -95,9 +120,27 @@ services.AddAuditing(b => b
95
120
  o.ExcludeShadowProperties = true;
96
121
  })
97
122
  .UseAppWeaverDataStore(),
98
- o => { o.IsEnabled = true; o.EnableFieldLevelAuditing = true; });
123
+ o => { o.IsEnabled = true; o.EnableFieldLevelAuditing = true; }); // field-level = Advanced
99
124
  ```
100
125
 
126
+ ## Querying the audit trail (framework-provided)
127
+
128
+ The audit store is queryable out of the box via `IAuditEntity` — no bespoke read model required:
129
+
130
+ ```csharp
131
+ // by resource identity
132
+ var logs = await auditEntity.GetAuditLogsAsync(typeof(Project).FullName!, projectId.ToString());
133
+ // by user / action / time, with paging
134
+ var page = await auditEntity.GetAuditLogsAsync(new AuditLogFilter { UserId = "u1", Action = AuditAction.Updated, Take = 10 });
135
+ // by user / tenant
136
+ await auditEntity.GetAuditLogsByUserAsync("u1");
137
+ await auditEntity.GetAuditLogsByTenantAsync("tenant-alpha");
138
+ ```
139
+
140
+ Each `AuditLog` carries `{ UserId, UserName, Timestamp, Action, EntityType, EntityId, Metadata
141
+ (correlationId, …) }`; its `EntityChanges` hold entity-level `ChangeType`, and — for `IFieldAudited`
142
+ roots — nested `PropertyChanges` with `OriginalValue → NewValue`.
143
+
101
144
  Observability baseline — `ServiceDefaults` (OTel + Serilog + health) wired once in `Program.cs`:
102
145
 
103
146
  ```csharp
@@ -1,6 +1,6 @@
1
1
  # Authorization Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain roles & matrix in [[authorization.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain roles & matrix in [[authorization.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
4
4
 
5
5
  ## Authorization model
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Data Classification Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain data categories in [[data-classification.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain data categories in [[data-classification.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-design`.
4
4
 
5
5
  ## Classification framework
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Zero-Trust Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[zero-trust.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-plan`, `/aw-spec-implement`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[zero-trust.domain]]. NON-NEGOTIABLE where marked. Commands: `/aw-spec-design`.
4
4
 
5
5
  ## Transport security (mTLS / TLS)
6
6
 
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const updateCommand: Command;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,aAAa,SA6ItB,CAAC"}
@@ -0,0 +1,142 @@
1
+ import { Command } from 'commander';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+ import { resolveAssetsPath } from '../utils/paths.js';
8
+ import { readManifest, updateManifest } from '../utils/manifest.js';
9
+ import { buildUpdatePlan, applyUpdatePlan } from '../utils/update-engine.js';
10
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
+ const AGENT_FOLDER_MAP = {
12
+ claude: '.claude',
13
+ antigravity: '.agents',
14
+ kilocode: '.kilocode',
15
+ };
16
+ const ALWAYS_COPY = ['.aw-spec', 'docs'];
17
+ export const updateCommand = new Command('update')
18
+ .description('Update an existing AppWeaver Spec project with latest assets from registry')
19
+ .argument('[directory]', 'Target directory (default: current directory)', '.')
20
+ .option('-a, --agent <agent>', 'Agent to use: claude, antigravity, kilocode (detected from manifest if not specified)')
21
+ .option('-y, --yes', 'Skip prompts and apply non-conflicting updates automatically')
22
+ .option('--dry-run', 'Show what would be updated without making changes')
23
+ .action(async (directory, options) => {
24
+ const targetDir = directory === '.' ? process.cwd() : directory;
25
+ const manifestPath = path.join(targetDir, '.aw-spec', 'manifest.json');
26
+ console.log(`\nšŸ”„ Checking for updates in: ${targetDir}\n`);
27
+ // Load existing manifest
28
+ const manifest = await readManifest(manifestPath);
29
+ if (!manifest) {
30
+ console.log(chalk.red('āœ— No manifest found. This project was not initialized with aw-spec or is from an older version.'));
31
+ console.log(chalk.yellow(' Run `aw-spec init` to initialize a new project.'));
32
+ process.exit(1);
33
+ }
34
+ console.log(chalk.gray(` Current version: ${manifest.version}`));
35
+ console.log(chalk.gray(` Last updated: ${manifest.updatedAt}`));
36
+ console.log(chalk.gray(` Tracked files: ${Object.keys(manifest.files).length}`));
37
+ // Determine agent from manifest or options
38
+ let agent = options.agent;
39
+ if (agent === 'prompt') {
40
+ // Try to detect from init-options.json
41
+ const initOptionsPath = path.join(targetDir, '.aw-spec', 'init-options.json');
42
+ if (await fs.pathExists(initOptionsPath)) {
43
+ try {
44
+ const initOptions = await fs.readJSON(initOptionsPath);
45
+ if (initOptions.ai && ['claude', 'antigravity', 'kilocode'].includes(initOptions.ai)) {
46
+ agent = initOptions.ai;
47
+ console.log(chalk.gray(` Detected agent from init-options: ${agent}`));
48
+ }
49
+ }
50
+ catch {
51
+ // Ignore parse errors
52
+ }
53
+ }
54
+ }
55
+ // If still not determined, prompt
56
+ if (agent === 'prompt') {
57
+ if (options.yes) {
58
+ agent = 'claude';
59
+ }
60
+ else {
61
+ const { selectedAgent } = await inquirer.prompt([
62
+ {
63
+ type: 'list',
64
+ name: 'selectedAgent',
65
+ message: 'Which agent skills should be updated?',
66
+ choices: [
67
+ { name: 'Claude Code (.claude/skills)', value: 'claude' },
68
+ { name: 'Antigravity (.agents/skills)', value: 'antigravity' },
69
+ { name: 'KiloCode (.kilocode/skills)', value: 'kilocode' },
70
+ ],
71
+ default: 'claude',
72
+ },
73
+ ]);
74
+ agent = selectedAgent;
75
+ }
76
+ }
77
+ const agentFolder = AGENT_FOLDER_MAP[agent];
78
+ // Resolve new assets from registry
79
+ const assetsPath = await resolveAssetsPath();
80
+ console.log(chalk.gray(` Source assets: ${assetsPath}`));
81
+ if (options.dryRun) {
82
+ console.log('\nšŸ“‹ Dry run - checking for updates...\n');
83
+ }
84
+ // Build update plan
85
+ console.log(chalk.bold('\nšŸ“Š Analyzing changes...\n'));
86
+ const plan = await buildUpdatePlan(manifest.files, targetDir, assetsPath);
87
+ // Print summary
88
+ console.log(chalk.bold('\nšŸ“‹ Update Plan:'));
89
+ console.log(chalk.green(` Update: ${plan.summary.update}`));
90
+ console.log(chalk.blue(` Add: ${plan.summary.add}`));
91
+ console.log(chalk.yellow(` Preserve: ${plan.summary.preserve}`));
92
+ console.log(chalk.red(` Skip (conflicts): ${plan.summary.skip}`));
93
+ console.log(chalk.gray(` Remove: ${plan.summary.remove}`));
94
+ if (plan.summary.skip > 0) {
95
+ console.log(chalk.yellow('\nāš ļø Conflicts detected - these files have both user and upstream changes:'));
96
+ for (const file of plan.files.filter(f => f.disposition === 'skip')) {
97
+ console.log(chalk.yellow(` ⚠ ${file.relPath} - ${file.reason}`));
98
+ }
99
+ console.log(chalk.yellow('\n These files will be skipped. Resolve manually after update.'));
100
+ }
101
+ if (plan.summary.preserve > 0) {
102
+ console.log(chalk.blue('\nā„¹ļø User-modified files preserved:'));
103
+ for (const file of plan.files.filter(f => f.disposition === 'preserve')) {
104
+ console.log(chalk.blue(` ⊘ ${file.relPath} - ${file.reason}`));
105
+ }
106
+ }
107
+ if (options.dryRun) {
108
+ console.log(chalk.bold('\nšŸ” Dry run complete - no changes made.'));
109
+ return;
110
+ }
111
+ // Confirm before applying if not --yes
112
+ if (!options.yes && (plan.summary.update > 0 || plan.summary.add > 0 || plan.summary.remove > 0)) {
113
+ const { confirm } = await inquirer.prompt([
114
+ {
115
+ type: 'confirm',
116
+ name: 'confirm',
117
+ message: 'Apply these updates?',
118
+ default: true,
119
+ },
120
+ ]);
121
+ if (!confirm) {
122
+ console.log(chalk.gray('\nUpdate cancelled.'));
123
+ return;
124
+ }
125
+ }
126
+ // Apply update plan
127
+ console.log(chalk.bold('\nšŸ“¦ Applying updates...\n'));
128
+ await applyUpdatePlan(plan, targetDir, assetsPath, {
129
+ onProgress: (msg) => console.log(msg),
130
+ });
131
+ // Update manifest with new state
132
+ console.log(chalk.bold('\nšŸ“ Updating manifest...'));
133
+ const newManifest = await updateManifest(manifestPath, targetDir, manifest.version);
134
+ console.log(chalk.green(` āœ“ Manifest updated (${Object.keys(newManifest.files).length} files tracked)`));
135
+ console.log(chalk.bold('\nāœ… Update complete!'));
136
+ console.log('\nNext steps:');
137
+ console.log(' aw-spec doctor # Verify the installation');
138
+ if (plan.summary.skip > 0) {
139
+ console.log(chalk.yellow(' Review skipped files and resolve conflicts manually'));
140
+ }
141
+ });
142
+ //# sourceMappingURL=update.js.map