@rasensio/aidlc 1.15.2 → 1.17.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 (209) hide show
  1. package/README.md +1 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +4 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/compliance.d.ts +36 -0
  6. package/dist/commands/compliance.d.ts.map +1 -0
  7. package/dist/commands/compliance.js +275 -0
  8. package/dist/commands/compliance.js.map +1 -0
  9. package/dist/commands/constitution.d.ts +26 -0
  10. package/dist/commands/constitution.d.ts.map +1 -0
  11. package/dist/commands/constitution.js +145 -0
  12. package/dist/commands/constitution.js.map +1 -0
  13. package/dist/commands/cost.d.ts.map +1 -1
  14. package/dist/commands/cost.js +54 -35
  15. package/dist/commands/cost.js.map +1 -1
  16. package/dist/commands/doctor.js +7 -0
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/gate.d.ts.map +1 -1
  19. package/dist/commands/gate.js +13 -0
  20. package/dist/commands/gate.js.map +1 -1
  21. package/dist/commands/init.d.ts.map +1 -1
  22. package/dist/commands/init.js +119 -10
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/metrics.d.ts.map +1 -1
  25. package/dist/commands/metrics.js +6 -1
  26. package/dist/commands/metrics.js.map +1 -1
  27. package/dist/commands/review.d.ts +2 -27
  28. package/dist/commands/review.d.ts.map +1 -1
  29. package/dist/commands/review.js +10 -166
  30. package/dist/commands/review.js.map +1 -1
  31. package/dist/commands/status.d.ts.map +1 -1
  32. package/dist/commands/status.js +7 -0
  33. package/dist/commands/status.js.map +1 -1
  34. package/dist/commands/transition.d.ts.map +1 -1
  35. package/dist/commands/transition.js +24 -1
  36. package/dist/commands/transition.js.map +1 -1
  37. package/dist/compile/adapters/claude-code.d.ts.map +1 -1
  38. package/dist/compile/adapters/claude-code.js +2 -1
  39. package/dist/compile/adapters/claude-code.js.map +1 -1
  40. package/dist/compile/adapters/codex.d.ts +22 -1
  41. package/dist/compile/adapters/codex.d.ts.map +1 -1
  42. package/dist/compile/adapters/codex.js +61 -27
  43. package/dist/compile/adapters/codex.js.map +1 -1
  44. package/dist/compile/adapters/cursor.d.ts.map +1 -1
  45. package/dist/compile/adapters/cursor.js +2 -19
  46. package/dist/compile/adapters/cursor.js.map +1 -1
  47. package/dist/compile/adapters/kiro.d.ts.map +1 -1
  48. package/dist/compile/adapters/kiro.js +1 -19
  49. package/dist/compile/adapters/kiro.js.map +1 -1
  50. package/dist/compile/adapters/windsurf.d.ts.map +1 -1
  51. package/dist/compile/adapters/windsurf.js +2 -1
  52. package/dist/compile/adapters/windsurf.js.map +1 -1
  53. package/dist/compile/guidance-install.d.ts +16 -19
  54. package/dist/compile/guidance-install.d.ts.map +1 -1
  55. package/dist/compile/guidance-install.js +26 -111
  56. package/dist/compile/guidance-install.js.map +1 -1
  57. package/dist/compile/layer-install.d.ts +122 -0
  58. package/dist/compile/layer-install.d.ts.map +1 -0
  59. package/dist/compile/layer-install.js +195 -0
  60. package/dist/compile/layer-install.js.map +1 -0
  61. package/dist/compile/loaders.d.ts +14 -0
  62. package/dist/compile/loaders.d.ts.map +1 -1
  63. package/dist/compile/loaders.js +23 -18
  64. package/dist/compile/loaders.js.map +1 -1
  65. package/dist/compile/skill-format.d.ts +39 -0
  66. package/dist/compile/skill-format.d.ts.map +1 -0
  67. package/dist/compile/skill-format.js +50 -0
  68. package/dist/compile/skill-format.js.map +1 -0
  69. package/dist/compliance/check.d.ts +79 -0
  70. package/dist/compliance/check.d.ts.map +1 -0
  71. package/dist/compliance/check.js +224 -0
  72. package/dist/compliance/check.js.map +1 -0
  73. package/dist/compliance/config.d.ts +91 -0
  74. package/dist/compliance/config.d.ts.map +1 -0
  75. package/dist/compliance/config.js +173 -0
  76. package/dist/compliance/config.js.map +1 -0
  77. package/dist/compliance/findings.d.ts +70 -0
  78. package/dist/compliance/findings.d.ts.map +1 -0
  79. package/dist/compliance/findings.js +132 -0
  80. package/dist/compliance/findings.js.map +1 -0
  81. package/dist/compliance/gate-criterion.d.ts +87 -0
  82. package/dist/compliance/gate-criterion.d.ts.map +1 -0
  83. package/dist/compliance/gate-criterion.js +168 -0
  84. package/dist/compliance/gate-criterion.js.map +1 -0
  85. package/dist/compliance/install.d.ts +135 -0
  86. package/dist/compliance/install.d.ts.map +1 -0
  87. package/dist/compliance/install.js +291 -0
  88. package/dist/compliance/install.js.map +1 -0
  89. package/dist/compliance/report.d.ts +144 -0
  90. package/dist/compliance/report.d.ts.map +1 -0
  91. package/dist/compliance/report.js +347 -0
  92. package/dist/compliance/report.js.map +1 -0
  93. package/dist/compliance/resolver.d.ts +65 -0
  94. package/dist/compliance/resolver.d.ts.map +1 -0
  95. package/dist/compliance/resolver.js +176 -0
  96. package/dist/compliance/resolver.js.map +1 -0
  97. package/dist/compliance/schema.d.ts +74 -0
  98. package/dist/compliance/schema.d.ts.map +1 -0
  99. package/dist/compliance/schema.js +474 -0
  100. package/dist/compliance/schema.js.map +1 -0
  101. package/dist/compliance/types.d.ts +140 -0
  102. package/dist/compliance/types.d.ts.map +1 -0
  103. package/dist/compliance/types.js +29 -0
  104. package/dist/compliance/types.js.map +1 -0
  105. package/dist/constitution/check.d.ts +22 -0
  106. package/dist/constitution/check.d.ts.map +1 -0
  107. package/dist/constitution/check.js +89 -0
  108. package/dist/constitution/check.js.map +1 -0
  109. package/dist/constitution/docx.d.ts +51 -0
  110. package/dist/constitution/docx.d.ts.map +1 -0
  111. package/dist/constitution/docx.js +157 -0
  112. package/dist/constitution/docx.js.map +1 -0
  113. package/dist/constitution/entries.d.ts +27 -0
  114. package/dist/constitution/entries.d.ts.map +1 -0
  115. package/dist/constitution/entries.js +65 -0
  116. package/dist/constitution/entries.js.map +1 -0
  117. package/dist/constitution/extract.d.ts +34 -0
  118. package/dist/constitution/extract.d.ts.map +1 -0
  119. package/dist/constitution/extract.js +117 -0
  120. package/dist/constitution/extract.js.map +1 -0
  121. package/dist/constitution/snapshot.d.ts +47 -0
  122. package/dist/constitution/snapshot.d.ts.map +1 -0
  123. package/dist/constitution/snapshot.js +159 -0
  124. package/dist/constitution/snapshot.js.map +1 -0
  125. package/dist/constitution/statements.d.ts +37 -0
  126. package/dist/constitution/statements.d.ts.map +1 -0
  127. package/dist/constitution/statements.js +64 -0
  128. package/dist/constitution/statements.js.map +1 -0
  129. package/dist/constitution/types.d.ts +80 -0
  130. package/dist/constitution/types.d.ts.map +1 -0
  131. package/dist/constitution/types.js +9 -0
  132. package/dist/constitution/types.js.map +1 -0
  133. package/dist/core/gate.d.ts +10 -0
  134. package/dist/core/gate.d.ts.map +1 -1
  135. package/dist/core/gate.js.map +1 -1
  136. package/dist/core/paths.d.ts +48 -0
  137. package/dist/core/paths.d.ts.map +1 -0
  138. package/dist/core/paths.js +57 -0
  139. package/dist/core/paths.js.map +1 -0
  140. package/dist/core/types.d.ts +12 -1
  141. package/dist/core/types.d.ts.map +1 -1
  142. package/dist/cost/hooks/registry.d.ts +44 -0
  143. package/dist/cost/hooks/registry.d.ts.map +1 -0
  144. package/dist/cost/hooks/registry.js +66 -0
  145. package/dist/cost/hooks/registry.js.map +1 -0
  146. package/dist/cost/pin.d.ts +63 -0
  147. package/dist/cost/pin.d.ts.map +1 -0
  148. package/dist/cost/pin.js +95 -0
  149. package/dist/cost/pin.js.map +1 -0
  150. package/dist/cost/providers/claude-code.d.ts +9 -2
  151. package/dist/cost/providers/claude-code.d.ts.map +1 -1
  152. package/dist/cost/providers/claude-code.js +10 -5
  153. package/dist/cost/providers/claude-code.js.map +1 -1
  154. package/dist/cost/providers/codex.d.ts +107 -0
  155. package/dist/cost/providers/codex.d.ts.map +1 -0
  156. package/dist/cost/providers/codex.js +283 -0
  157. package/dist/cost/providers/codex.js.map +1 -0
  158. package/dist/cost/providers/index.d.ts.map +1 -1
  159. package/dist/cost/providers/index.js +6 -0
  160. package/dist/cost/providers/index.js.map +1 -1
  161. package/dist/cost/rates.d.ts.map +1 -1
  162. package/dist/cost/rates.js +14 -0
  163. package/dist/cost/rates.js.map +1 -1
  164. package/dist/cost/report.d.ts +23 -1
  165. package/dist/cost/report.d.ts.map +1 -1
  166. package/dist/cost/report.js +26 -5
  167. package/dist/cost/report.js.map +1 -1
  168. package/dist/cost/sessions.d.ts +10 -1
  169. package/dist/cost/sessions.d.ts.map +1 -1
  170. package/dist/cost/sessions.js +10 -2
  171. package/dist/cost/sessions.js.map +1 -1
  172. package/dist/cost/sync.d.ts.map +1 -1
  173. package/dist/cost/sync.js +190 -5
  174. package/dist/cost/sync.js.map +1 -1
  175. package/dist/doctor/migrations/compliance-pack-drift.d.ts +62 -0
  176. package/dist/doctor/migrations/compliance-pack-drift.d.ts.map +1 -0
  177. package/dist/doctor/migrations/compliance-pack-drift.js +255 -0
  178. package/dist/doctor/migrations/compliance-pack-drift.js.map +1 -0
  179. package/dist/doctor/migrations/index.d.ts.map +1 -1
  180. package/dist/doctor/migrations/index.js +11 -0
  181. package/dist/doctor/migrations/index.js.map +1 -1
  182. package/dist/doctor/migrations/legacy-cost-hooks.d.ts.map +1 -1
  183. package/dist/doctor/migrations/legacy-cost-hooks.js +7 -4
  184. package/dist/doctor/migrations/legacy-cost-hooks.js.map +1 -1
  185. package/dist/doctor/migrations/missing-cost-shim.d.ts.map +1 -1
  186. package/dist/doctor/migrations/missing-cost-shim.js +5 -4
  187. package/dist/doctor/migrations/missing-cost-shim.js.map +1 -1
  188. package/dist/doctor/migrations/outdated-cost-hooks.d.ts.map +1 -1
  189. package/dist/doctor/migrations/outdated-cost-hooks.js +7 -4
  190. package/dist/doctor/migrations/outdated-cost-hooks.js.map +1 -1
  191. package/dist/doctor/runner.js +14 -0
  192. package/dist/doctor/runner.js.map +1 -1
  193. package/dist/doctor/types.d.ts +35 -3
  194. package/dist/doctor/types.d.ts.map +1 -1
  195. package/dist/menu/roster.d.ts.map +1 -1
  196. package/dist/menu/roster.js +5 -0
  197. package/dist/menu/roster.js.map +1 -1
  198. package/dist/metrics/report.d.ts.map +1 -1
  199. package/dist/metrics/report.js +11 -2
  200. package/dist/metrics/report.js.map +1 -1
  201. package/dist/review/findings-parser.d.ts +92 -0
  202. package/dist/review/findings-parser.d.ts.map +1 -0
  203. package/dist/review/findings-parser.js +196 -0
  204. package/dist/review/findings-parser.js.map +1 -0
  205. package/dist/setup/setup-compute.d.ts +10 -15
  206. package/dist/setup/setup-compute.d.ts.map +1 -1
  207. package/dist/setup/setup-compute.js +39 -0
  208. package/dist/setup/setup-compute.js.map +1 -1
  209. package/package.json +2 -2
package/README.md CHANGED
@@ -51,6 +51,7 @@ The CLI has two core jobs: **bootstrap** (installing and refreshing skills) and
51
51
  | `aidlc docs` | Generate onboarding documentation |
52
52
  | `aidlc knowledge <subcommand>` | Query and update the local knowledge graph (see below) |
53
53
  | `aidlc add action <description>` | Create lifecycle automation from a natural language description |
54
+ | `aidlc compliance <subcommand>` | Install compliance packs and report evidence per control (`list`, `add`, `remove`, `check`, `report`) |
54
55
 
55
56
  ## Knowledge Graph
56
57
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAcH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,OAAO,CA+BtC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAM,GAAG,SAA2B,GAC1C,OAAO,CAQT"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAcH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAiCtC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAM,GAAG,SAA2B,GAC1C,OAAO,CAQT"}
package/dist/cli.js CHANGED
@@ -38,6 +38,8 @@ import { registerClaim } from './commands/claim.js';
38
38
  import { registerMetrics } from './commands/metrics.js';
39
39
  import { registerDoctor } from './commands/doctor.js';
40
40
  import { registerAddSkill } from './commands/add-skill.js';
41
+ import { registerCompliance } from './commands/compliance.js';
42
+ import { registerConstitution } from './commands/constitution.js';
41
43
  import { registerMenu } from './commands/menu.js';
42
44
  import { isBareInvocation } from './menu/invocation.js';
43
45
  import { openMenu } from './menu/index.js';
@@ -72,6 +74,8 @@ export function buildProgram() {
72
74
  registerMetrics(program);
73
75
  registerDoctor(program);
74
76
  registerAddSkill(program);
77
+ registerCompliance(program);
78
+ registerConstitution(program);
75
79
  // Last, so `menu` renders last in `aidlc --help` (interactive-cli-menu/AC-5).
76
80
  // Takes the factory, not `program`: the menu dispatches on a throwaway copy so
77
81
  // the caller's program never carries an `exitOverride` it cannot undo.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The `aidlc compliance` command group — install, inspect and report on
3
+ * compliance packs.
4
+ *
5
+ * Registered early in the instance, before any subcommand has an implementation,
6
+ * for two reasons the design review established. Six later tasks assert
7
+ * observable properties of invocations of these commands, so the commands have to
8
+ * exist before those tasks can be written. And the moment a top-level command is
9
+ * registered, five pre-existing pins fail — the website's exact sorted command
10
+ * set, the website's generated CLI reference, the entrypoint command count, the
11
+ * menu's unaccounted-commands tripwire, and the two hand-maintained README
12
+ * tables. Those updates belong in one commit with the registration rather than
13
+ * spread across the tasks that follow it.
14
+ *
15
+ * The full option surface is declared here even though the actions are not
16
+ * implemented, because the generated CLI reference is produced by a `--help` walk
17
+ * of the built CLI. Declaring the surface once means regenerating that reference
18
+ * once.
19
+ *
20
+ * Every action currently exits 2 with a message naming the task that will
21
+ * implement it. Exit 2 is this feature's usage-or-load-error class, so an
22
+ * unimplemented subcommand cannot be mistaken for a passing check — a compliance
23
+ * command that exited 0 while doing nothing is precisely the silent false-green
24
+ * this feature exists to avoid.
25
+ *
26
+ * Requirements: compliance-packs/AC-51 (menu accounting). The behaviour of each
27
+ * subcommand is carried by its own task and its own criteria.
28
+ */
29
+ import { Command } from 'commander';
30
+ /**
31
+ * Register the `aidlc compliance` group and its subcommands.
32
+ *
33
+ * @param program - The commander program.
34
+ */
35
+ export declare function registerCompliance(program: Command): void;
36
+ //# sourceMappingURL=compliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.d.ts","sourceRoot":"","sources":["../../src/commands/compliance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkPpC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4CzD"}
@@ -0,0 +1,275 @@
1
+ /**
2
+ * The `aidlc compliance` command group — install, inspect and report on
3
+ * compliance packs.
4
+ *
5
+ * Registered early in the instance, before any subcommand has an implementation,
6
+ * for two reasons the design review established. Six later tasks assert
7
+ * observable properties of invocations of these commands, so the commands have to
8
+ * exist before those tasks can be written. And the moment a top-level command is
9
+ * registered, five pre-existing pins fail — the website's exact sorted command
10
+ * set, the website's generated CLI reference, the entrypoint command count, the
11
+ * menu's unaccounted-commands tripwire, and the two hand-maintained README
12
+ * tables. Those updates belong in one commit with the registration rather than
13
+ * spread across the tasks that follow it.
14
+ *
15
+ * The full option surface is declared here even though the actions are not
16
+ * implemented, because the generated CLI reference is produced by a `--help` walk
17
+ * of the built CLI. Declaring the surface once means regenerating that reference
18
+ * once.
19
+ *
20
+ * Every action currently exits 2 with a message naming the task that will
21
+ * implement it. Exit 2 is this feature's usage-or-load-error class, so an
22
+ * unimplemented subcommand cannot be mistaken for a passing check — a compliance
23
+ * command that exited 0 while doing nothing is precisely the silent false-green
24
+ * this feature exists to avoid.
25
+ *
26
+ * Requirements: compliance-packs/AC-51 (menu accounting). The behaviour of each
27
+ * subcommand is carried by its own task and its own criteria.
28
+ */
29
+ import { Command } from 'commander';
30
+ import { resolveProjectRoot } from '../core/project-root.js';
31
+ import { installPack, packStatuses, removePack, upgradePack, } from '../compliance/install.js';
32
+ import { availablePackIds } from '../compliance/resolver.js';
33
+ import { checkDiff } from '../compliance/check.js';
34
+ import { computeComplianceReport, renderComplianceReport, } from '../compliance/report.js';
35
+ /**
36
+ * Report a pack error and exit.
37
+ *
38
+ * Exit 2 for a pack that exists but will not load — a usage-or-load error, shared
39
+ * with the check command's code 2 — and exit 1 for a pack that is simply not there,
40
+ * which is an ordinary "you asked for the wrong thing".
41
+ */
42
+ function failPack(error) {
43
+ process.stderr.write(`aidlc compliance: ${error.errors.join('\n ')}\n`);
44
+ if (error.code === 'not-found') {
45
+ const available = availablePackIds();
46
+ process.stderr.write(available.length > 0
47
+ ? `available packs: ${available.join(', ')}\n`
48
+ : 'no compliance packs are available in this installation\n');
49
+ process.exit(1);
50
+ }
51
+ process.exit(2);
52
+ }
53
+ /**
54
+ * `aidlc compliance report`
55
+ *
56
+ * Read-only. Writes nothing under `.aidlc/`, which a test asserts by comparing the
57
+ * whole tree before and after.
58
+ */
59
+ function runReport(opts) {
60
+ const projectRoot = resolveProjectRoot();
61
+ const report = computeComplianceReport(projectRoot, {
62
+ ...(opts.instance !== undefined && { instance: opts.instance }),
63
+ ...(opts.since !== undefined && { since: opts.since }),
64
+ });
65
+ process.stdout.write(opts.json
66
+ ? `${JSON.stringify(report, null, 2)}\n`
67
+ : renderComplianceReport(report));
68
+ for (const warning of report.warnings) {
69
+ process.stderr.write(`warning: ${warning}\n`);
70
+ }
71
+ // No pack installed is a legitimate state, said out loud rather than an empty
72
+ // document that reads like a clean bill of health.
73
+ if (report.packs.length === 0) {
74
+ process.stderr.write('no compliance pack is installed — nothing to report\n');
75
+ }
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Subcommand bodies
79
+ // ---------------------------------------------------------------------------
80
+ /** `aidlc compliance list` */
81
+ function runList(opts) {
82
+ const projectRoot = resolveProjectRoot();
83
+ const { statuses, errors } = packStatuses(projectRoot);
84
+ if (opts.json) {
85
+ process.stdout.write(`${JSON.stringify({ packs: statuses, errors }, null, 2)}\n`);
86
+ }
87
+ else if (statuses.length === 0) {
88
+ // Loud rather than an empty list: "no packs" and "packs exist but none loaded"
89
+ // are different situations and must not look the same.
90
+ process.stdout.write('No compliance packs are available in this installation.\n');
91
+ }
92
+ else {
93
+ for (const s of statuses) {
94
+ const state = s.installed === null ? 'not installed' : `installed ${s.installed}`;
95
+ const availability = s.available === null ? 'no longer shipped' : `available ${s.available}`;
96
+ const flags = [
97
+ s.stale ? 'UPGRADE AVAILABLE' : null,
98
+ s.installed !== null && !s.reviewed ? 'unreviewed draft' : null,
99
+ s.drifted.length > 0 ? `${s.drifted.length} locally edited` : null,
100
+ ].filter(Boolean);
101
+ process.stdout.write(`${s.id.padEnd(12)} ${s.regime.padEnd(10)} ${state}, ${availability}` +
102
+ `${flags.length > 0 ? ` — ${flags.join('; ')}` : ''}\n`);
103
+ for (const path of s.drifted) {
104
+ process.stdout.write(` locally edited: ${path}\n`);
105
+ }
106
+ }
107
+ }
108
+ // A pack present but unloadable is an error, never an omission.
109
+ for (const error of errors) {
110
+ process.stderr.write(`error: pack '${error.id}' did not load: ${error.errors.join('; ')}\n`);
111
+ }
112
+ if (errors.length > 0)
113
+ process.exit(2);
114
+ }
115
+ /** `aidlc compliance add <pack>` */
116
+ function runAdd(id) {
117
+ const projectRoot = resolveProjectRoot();
118
+ const result = installPack(projectRoot, id);
119
+ if (!result.ok)
120
+ failPack(result.error);
121
+ if (result.unchanged && result.installed.length === 0) {
122
+ process.stdout.write(`pack '${id}' is already installed and current\n`);
123
+ }
124
+ else if (result.installed.length > 0) {
125
+ process.stdout.write(`installed pack '${id}': ${result.installed.join(', ')}\n`);
126
+ }
127
+ else {
128
+ process.stdout.write(`pack '${id}' recorded; no layer files needed writing\n`);
129
+ }
130
+ for (const name of result.locallyModified) {
131
+ process.stdout.write(` kept your edited copy of layer '${name}' — it was not overwritten\n`);
132
+ }
133
+ for (const warning of result.warnings) {
134
+ process.stderr.write(`warning: ${warning}\n`);
135
+ }
136
+ process.stdout.write('The pack applies from the next phase onwards. Findings are advisory unless ' +
137
+ '`compliance.enforce: true` is set in .aidlc/config.yaml.\n');
138
+ }
139
+ /** `aidlc compliance remove <pack>` */
140
+ function runRemove(id) {
141
+ const projectRoot = resolveProjectRoot();
142
+ const result = removePack(projectRoot, id);
143
+ if (!result.ok)
144
+ failPack(result.error);
145
+ process.stdout.write(`removed pack '${id}'\n`);
146
+ for (const path of result.deleted) {
147
+ process.stdout.write(` deleted ${path}\n`);
148
+ }
149
+ for (const name of result.unregistered) {
150
+ process.stdout.write(` unregistered layer '${name}'\n`);
151
+ }
152
+ // A file we kept is inert but still present, so say where it is and how to finish
153
+ // the job. Silence here is what turns a preserved edit into a mystery file.
154
+ for (const path of result.keptPaths) {
155
+ process.stdout.write(` kept ${path} — you edited it, so it was not deleted. It no longer applies. ` +
156
+ `Remove it with: rm ${path}\n`);
157
+ }
158
+ for (const warning of result.warnings) {
159
+ process.stderr.write(`warning: ${warning}\n`);
160
+ }
161
+ }
162
+ /**
163
+ * `aidlc compliance check`
164
+ *
165
+ * The wording below is pinned by test. `no applicable controls` on stderr with exit 0
166
+ * is a legitimate, visible state; an installed pack that will not load is exit 2 and
167
+ * never an empty success.
168
+ */
169
+ function runCheck(opts) {
170
+ const projectRoot = resolveProjectRoot();
171
+ const result = checkDiff(projectRoot, {
172
+ ...(opts.diff !== undefined && { diffRef: opts.diff }),
173
+ ...(opts.enforce !== undefined && { enforce: opts.enforce }),
174
+ });
175
+ if (opts.json) {
176
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
177
+ }
178
+ else {
179
+ for (const outcome of result.controls) {
180
+ const label = outcome.status === 'failing'
181
+ ? `FAILING (${outcome.severity})`
182
+ : outcome.status === 'no-issues'
183
+ ? 'no issues'
184
+ : 'NOT ASSESSED';
185
+ process.stdout.write(`${outcome.control.padEnd(8)} ${label} [${outcome.how}]\n`);
186
+ if (outcome.status === 'failing') {
187
+ process.stdout.write(` ${outcome.detail}\n`);
188
+ }
189
+ }
190
+ if (result.controls.length === 0 && result.errors.length === 0) {
191
+ // Visible, and on stderr so it cannot be mistaken for report data on stdout.
192
+ process.stderr.write('no applicable controls\n');
193
+ }
194
+ const pending = result.controls.filter((c) => c.status === 'pending-agent-review');
195
+ if (pending.length > 0) {
196
+ process.stderr.write(`${pending.length} control(s) not assessed. A control nothing looked at is not a pass — ` +
197
+ `run a phase review, or assess them and record the outcome in the compliance findings stream.\n`);
198
+ }
199
+ }
200
+ for (const warning of result.warnings) {
201
+ process.stderr.write(`warning: ${warning}\n`);
202
+ }
203
+ for (const error of result.errors) {
204
+ process.stderr.write(`error: ${error}\n`);
205
+ }
206
+ process.exit(result.exitCode);
207
+ }
208
+ /** `aidlc compliance upgrade <pack>` */
209
+ function runUpgrade(id) {
210
+ const projectRoot = resolveProjectRoot();
211
+ const result = upgradePack(projectRoot, id);
212
+ if (!result.ok)
213
+ failPack(result.error);
214
+ if (result.from === result.to) {
215
+ process.stdout.write(`pack '${id}' is already at ${result.to}\n`);
216
+ }
217
+ else {
218
+ process.stdout.write(`upgraded pack '${id}' from ${result.from} to ${result.to}\n`);
219
+ }
220
+ for (const path of result.replaced) {
221
+ process.stdout.write(` replaced ${path}\n`);
222
+ }
223
+ for (const path of result.keptPaths) {
224
+ process.stdout.write(` kept ${path} — you edited it, so the new version was not written. ` +
225
+ `Delete it and re-run to take the update.\n`);
226
+ }
227
+ for (const warning of result.warnings) {
228
+ process.stderr.write(`warning: ${warning}\n`);
229
+ }
230
+ }
231
+ /**
232
+ * Register the `aidlc compliance` group and its subcommands.
233
+ *
234
+ * @param program - The commander program.
235
+ */
236
+ export function registerCompliance(program) {
237
+ const compliance = program
238
+ .command('compliance')
239
+ .description('Compliance packs — install, check, and report evidence per control');
240
+ compliance
241
+ .command('list')
242
+ .description('List available compliance packs and whether each is installed')
243
+ .option('--json', 'Output machine-readable JSON')
244
+ .action((opts) => runList(opts));
245
+ compliance
246
+ .command('add')
247
+ .description('Install a compliance pack into this project')
248
+ .argument('<pack>', 'Pack id, as reported by `aidlc compliance list`')
249
+ .action((pack) => runAdd(pack));
250
+ compliance
251
+ .command('remove')
252
+ .description('Remove an installed compliance pack')
253
+ .argument('<pack>', 'Pack id')
254
+ .action((pack) => runRemove(pack));
255
+ compliance
256
+ .command('upgrade')
257
+ .description('Upgrade an installed pack to the available version')
258
+ .argument('<pack>', 'Pack id')
259
+ .action((pack) => runUpgrade(pack));
260
+ compliance
261
+ .command('check')
262
+ .description('Check a change against the installed packs’ controls')
263
+ .option('--diff <ref>', 'Assess the diff against this git ref instead of the working tree')
264
+ .option('--enforce', 'Exit non-zero on a failing or unassessed control')
265
+ .option('--json', 'Output machine-readable JSON')
266
+ .action((opts) => runCheck(opts));
267
+ compliance
268
+ .command('report')
269
+ .description('Evidence report: what each control requires and where the evidence is')
270
+ .option('--instance <name>', 'Limit the report to one instance')
271
+ .option('--since <date>', 'Limit the report to instances completed on or after this date')
272
+ .option('--json', 'Output machine-readable JSON')
273
+ .action((opts) => runReport(opts));
274
+ }
275
+ //# sourceMappingURL=compliance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../src/commands/compliance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `aidlc constitution` — import a product vision document, and check whether the
3
+ * repo's constitution has drifted from it.
4
+ *
5
+ * Two leaves, both read-mostly:
6
+ *
7
+ * aidlc constitution import <path> extract → snapshot, print the statements
8
+ * aidlc constitution check snapshot vs source, report added/removed
9
+ *
10
+ * `check` exits 0 even when it finds drift (design D6). The roadmap item rules
11
+ * out adding a gate every future instance has to clear, so the failing exit is
12
+ * opt-in via `--exit-code` for a project that wants one in CI.
13
+ *
14
+ * The constitution document itself is written by the `aidlc-constitution` skill,
15
+ * not by this command. Deriving which slice of a vision a repo owns is judgement,
16
+ * and judgement does not belong in a CLI.
17
+ *
18
+ * Requirements: project-constitution/AC-1, project-constitution/AC-4,
19
+ * project-constitution/AC-12, project-constitution/AC-14,
20
+ * project-constitution/AC-15, project-constitution/AC-16
21
+ *
22
+ * @module
23
+ */
24
+ import { Command } from 'commander';
25
+ export declare function registerConstitution(program: Command): void;
26
+ //# sourceMappingURL=constitution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constitution.d.ts","sourceRoot":"","sources":["../../src/commands/constitution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgF3D"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * `aidlc constitution` — import a product vision document, and check whether the
3
+ * repo's constitution has drifted from it.
4
+ *
5
+ * Two leaves, both read-mostly:
6
+ *
7
+ * aidlc constitution import <path> extract → snapshot, print the statements
8
+ * aidlc constitution check snapshot vs source, report added/removed
9
+ *
10
+ * `check` exits 0 even when it finds drift (design D6). The roadmap item rules
11
+ * out adding a gate every future instance has to clear, so the failing exit is
12
+ * opt-in via `--exit-code` for a project that wants one in CI.
13
+ *
14
+ * The constitution document itself is written by the `aidlc-constitution` skill,
15
+ * not by this command. Deriving which slice of a vision a repo owns is judgement,
16
+ * and judgement does not belong in a CLI.
17
+ *
18
+ * Requirements: project-constitution/AC-1, project-constitution/AC-4,
19
+ * project-constitution/AC-12, project-constitution/AC-14,
20
+ * project-constitution/AC-15, project-constitution/AC-16
21
+ *
22
+ * @module
23
+ */
24
+ import { Command } from 'commander';
25
+ import { resolveProjectRoot } from '../core/project-root.js';
26
+ import { checkDrift } from '../constitution/check.js';
27
+ import { CONSTITUTION_RELATIVE } from '../constitution/entries.js';
28
+ import { extractVision, unsupportedFormatHelp } from '../constitution/extract.js';
29
+ import { SNAPSHOT_RELATIVE, buildSnapshot, writeSnapshot } from '../constitution/snapshot.js';
30
+ export function registerConstitution(program) {
31
+ const constitution = program
32
+ .command('constitution')
33
+ .description('Import a product vision document and track the repo scope derived from it');
34
+ constitution
35
+ .command('import')
36
+ .description('Read a vision document (.docx, .md, .markdown, .txt) into a snapshot')
37
+ .argument('<path>', 'Vision document inside this project')
38
+ .option('--json', 'Output machine-readable JSON')
39
+ .action((path, opts) => {
40
+ const projectRoot = resolveProjectRoot();
41
+ const extracted = extractVision(projectRoot, path);
42
+ if (!extracted.ok) {
43
+ const message = extracted.reason === 'unsupported-format'
44
+ ? unsupportedFormatHelp(extracted.detail)
45
+ : `Cannot read this vision document: ${extracted.detail}.`;
46
+ if (opts.json) {
47
+ process.stdout.write(JSON.stringify({ ok: false, reason: extracted.reason, detail: extracted.detail }, null, 2) + '\n');
48
+ }
49
+ else {
50
+ process.stderr.write(message + '\n');
51
+ }
52
+ process.exitCode = 1;
53
+ return;
54
+ }
55
+ const snapshot = buildSnapshot({
56
+ relativePath: extracted.relativePath,
57
+ sha256: extracted.sha256,
58
+ extractor: extracted.extractor,
59
+ text: extracted.text,
60
+ now: new Date(),
61
+ });
62
+ const outcome = writeSnapshot(projectRoot, snapshot);
63
+ if (opts.json) {
64
+ process.stdout.write(JSON.stringify({
65
+ ok: true,
66
+ snapshot: SNAPSHOT_RELATIVE,
67
+ outcome,
68
+ source_path: snapshot.sourcePath,
69
+ source_sha256: snapshot.sourceSha256,
70
+ extractor: snapshot.extractor,
71
+ statement_count: snapshot.statements.length,
72
+ statements: snapshot.statements,
73
+ }, null, 2) + '\n');
74
+ return;
75
+ }
76
+ process.stdout.write(renderImport(snapshot, outcome));
77
+ });
78
+ constitution
79
+ .command('check')
80
+ .description('Report vision statements added or removed since the last import')
81
+ .option('--json', 'Output machine-readable JSON')
82
+ .option('--exit-code', 'Exit 1 when drift is found (default: always exit 0)')
83
+ .action((opts) => {
84
+ const projectRoot = resolveProjectRoot();
85
+ const report = checkDrift(projectRoot);
86
+ if (opts.json) {
87
+ process.stdout.write(JSON.stringify(report, null, 2) + '\n');
88
+ }
89
+ else {
90
+ process.stdout.write(renderCheck(report));
91
+ }
92
+ const drifted = report.added.length > 0 || report.removed.length > 0;
93
+ if (opts.exitCode && drifted)
94
+ process.exitCode = 1;
95
+ });
96
+ }
97
+ function renderImport(snapshot, outcome) {
98
+ const lines = [];
99
+ lines.push(outcome === 'written'
100
+ ? `Imported ${snapshot.sourcePath} → ${SNAPSHOT_RELATIVE}`
101
+ : `${snapshot.sourcePath} is unchanged since the last import — ${SNAPSHOT_RELATIVE} not rewritten`);
102
+ lines.push(` extractor: ${snapshot.extractor}, statements: ${snapshot.statements.length}`);
103
+ lines.push('');
104
+ for (const statement of snapshot.statements) {
105
+ const suffix = statement.occurrences > 1 ? ` (×${statement.occurrences})` : '';
106
+ lines.push(` ${statement.id} ${truncate(statement.text)}${suffix}`);
107
+ }
108
+ lines.push('');
109
+ lines.push(`Next: the aidlc-constitution skill turns these into ${CONSTITUTION_RELATIVE}.`);
110
+ return lines.join('\n') + '\n';
111
+ }
112
+ function renderCheck(report) {
113
+ if (report.state !== 'ok') {
114
+ return `Cannot evaluate drift: ${report.detail ?? report.state}.\n`;
115
+ }
116
+ const lines = [];
117
+ if (report.added.length === 0 && report.removed.length === 0) {
118
+ lines.push(`No drift: ${report.source_path} matches ${SNAPSHOT_RELATIVE}.`);
119
+ return lines.join('\n') + '\n';
120
+ }
121
+ lines.push(`Vision drift against ${report.source_path}:`);
122
+ if (report.added.length > 0)
123
+ lines.push(` added: ${report.added.join(', ')}`);
124
+ if (report.removed.length > 0)
125
+ lines.push(` removed: ${report.removed.join(', ')}`);
126
+ if (report.affected_entries.length > 0) {
127
+ lines.push('');
128
+ lines.push(`Constitution entries citing a removed statement (${CONSTITUTION_RELATIVE}):`);
129
+ for (const affected of report.affected_entries) {
130
+ lines.push(` ${affected.entry} (line ${affected.line}) cites ${affected.cites}`);
131
+ }
132
+ }
133
+ else {
134
+ lines.push('');
135
+ lines.push('No constitution entry cites a removed statement.');
136
+ }
137
+ lines.push('');
138
+ lines.push('Advisory only — this never fails a phase. Re-run the aidlc-constitution skill');
139
+ lines.push('to propose amendments.');
140
+ return lines.join('\n') + '\n';
141
+ }
142
+ function truncate(text) {
143
+ return text.length > 78 ? `${text.slice(0, 75)}...` : text;
144
+ }
145
+ //# sourceMappingURL=constitution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constitution.js","sourceRoot":"","sources":["../../src/commands/constitution.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/commands/cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8FpC,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CASxE;AAoaD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgFnD"}
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/commands/cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0FpC,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CASxE;AA+bD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgFnD"}