@paths.design/caws-cli 11.0.0 → 11.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +2 -2
  3. package/dist/init/harness-detect.d.ts +18 -0
  4. package/dist/init/harness-detect.d.ts.map +1 -0
  5. package/dist/init/harness-detect.js +90 -0
  6. package/dist/init/harness-detect.js.map +1 -0
  7. package/dist/init/hook-install.d.ts +53 -0
  8. package/dist/init/hook-install.d.ts.map +1 -0
  9. package/dist/init/hook-install.js +421 -0
  10. package/dist/init/hook-install.js.map +1 -0
  11. package/dist/init/hook-packs/manifest-claude-code.d.ts +4 -0
  12. package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -0
  13. package/dist/init/hook-packs/manifest-claude-code.js +190 -0
  14. package/dist/init/hook-packs/manifest-claude-code.js.map +1 -0
  15. package/dist/init/hook-packs/register.d.ts +19 -0
  16. package/dist/init/hook-packs/register.d.ts.map +1 -0
  17. package/dist/init/hook-packs/register.js +37 -0
  18. package/dist/init/hook-packs/register.js.map +1 -0
  19. package/dist/init/hook-packs/types.d.ts +123 -0
  20. package/dist/init/hook-packs/types.d.ts.map +1 -0
  21. package/dist/init/hook-packs/types.js +29 -0
  22. package/dist/init/hook-packs/types.js.map +1 -0
  23. package/dist/shell/commands/gates.d.ts.map +1 -1
  24. package/dist/shell/commands/gates.js +28 -1
  25. package/dist/shell/commands/gates.js.map +1 -1
  26. package/dist/shell/commands/init.d.ts +9 -0
  27. package/dist/shell/commands/init.d.ts.map +1 -1
  28. package/dist/shell/commands/init.js +131 -27
  29. package/dist/shell/commands/init.js.map +1 -1
  30. package/dist/shell/commands/specs.d.ts +41 -0
  31. package/dist/shell/commands/specs.d.ts.map +1 -0
  32. package/dist/shell/commands/specs.js +264 -0
  33. package/dist/shell/commands/specs.js.map +1 -0
  34. package/dist/shell/commands/worktree.d.ts +38 -0
  35. package/dist/shell/commands/worktree.d.ts.map +1 -0
  36. package/dist/shell/commands/worktree.js +286 -0
  37. package/dist/shell/commands/worktree.js.map +1 -0
  38. package/dist/shell/gates/disposition.d.ts.map +1 -1
  39. package/dist/shell/gates/disposition.js +33 -3
  40. package/dist/shell/gates/disposition.js.map +1 -1
  41. package/dist/shell/gates/local-evaluators/budget-limit.d.ts +24 -0
  42. package/dist/shell/gates/local-evaluators/budget-limit.d.ts.map +1 -0
  43. package/dist/shell/gates/local-evaluators/budget-limit.js +67 -0
  44. package/dist/shell/gates/local-evaluators/budget-limit.js.map +1 -0
  45. package/dist/shell/gates/local-evaluators/diff-helpers.d.ts +25 -0
  46. package/dist/shell/gates/local-evaluators/diff-helpers.d.ts.map +1 -0
  47. package/dist/shell/gates/local-evaluators/diff-helpers.js +74 -0
  48. package/dist/shell/gates/local-evaluators/diff-helpers.js.map +1 -0
  49. package/dist/shell/gates/local-evaluators/index.d.ts +28 -0
  50. package/dist/shell/gates/local-evaluators/index.d.ts.map +1 -0
  51. package/dist/shell/gates/local-evaluators/index.js +67 -0
  52. package/dist/shell/gates/local-evaluators/index.js.map +1 -0
  53. package/dist/shell/gates/local-evaluators/scope-boundary.d.ts +23 -0
  54. package/dist/shell/gates/local-evaluators/scope-boundary.d.ts.map +1 -0
  55. package/dist/shell/gates/local-evaluators/scope-boundary.js +67 -0
  56. package/dist/shell/gates/local-evaluators/scope-boundary.js.map +1 -0
  57. package/dist/shell/gates/local-evaluators/spec-completeness.d.ts +12 -0
  58. package/dist/shell/gates/local-evaluators/spec-completeness.d.ts.map +1 -0
  59. package/dist/shell/gates/local-evaluators/spec-completeness.js +73 -0
  60. package/dist/shell/gates/local-evaluators/spec-completeness.js.map +1 -0
  61. package/dist/shell/index.d.ts +4 -0
  62. package/dist/shell/index.d.ts.map +1 -1
  63. package/dist/shell/index.js +13 -1
  64. package/dist/shell/index.js.map +1 -1
  65. package/dist/shell/register.d.ts.map +1 -1
  66. package/dist/shell/register.js +192 -2
  67. package/dist/shell/register.js.map +1 -1
  68. package/dist/shell/render/init-hook-pack.d.ts +16 -0
  69. package/dist/shell/render/init-hook-pack.d.ts.map +1 -0
  70. package/dist/shell/render/init-hook-pack.js +206 -0
  71. package/dist/shell/render/init-hook-pack.js.map +1 -0
  72. package/dist/store/atomic-write.d.ts +20 -2
  73. package/dist/store/atomic-write.d.ts.map +1 -1
  74. package/dist/store/atomic-write.js +44 -2
  75. package/dist/store/atomic-write.js.map +1 -1
  76. package/dist/store/lifecycle-lock.d.ts +34 -0
  77. package/dist/store/lifecycle-lock.d.ts.map +1 -0
  78. package/dist/store/lifecycle-lock.js +168 -0
  79. package/dist/store/lifecycle-lock.js.map +1 -0
  80. package/dist/store/lifecycle-transaction.d.ts +79 -0
  81. package/dist/store/lifecycle-transaction.d.ts.map +1 -0
  82. package/dist/store/lifecycle-transaction.js +319 -0
  83. package/dist/store/lifecycle-transaction.js.map +1 -0
  84. package/dist/store/rules.d.ts +16 -0
  85. package/dist/store/rules.d.ts.map +1 -1
  86. package/dist/store/rules.js +17 -0
  87. package/dist/store/rules.js.map +1 -1
  88. package/dist/store/specs-writer.d.ts +61 -0
  89. package/dist/store/specs-writer.d.ts.map +1 -0
  90. package/dist/store/specs-writer.js +506 -0
  91. package/dist/store/specs-writer.js.map +1 -0
  92. package/dist/store/worktrees-writer.d.ts +77 -0
  93. package/dist/store/worktrees-writer.d.ts.map +1 -0
  94. package/dist/store/worktrees-writer.js +674 -0
  95. package/dist/store/worktrees-writer.js.map +1 -0
  96. package/dist/store/yaml-patch.d.ts +7 -0
  97. package/dist/store/yaml-patch.d.ts.map +1 -0
  98. package/dist/store/yaml-patch.js +250 -0
  99. package/dist/store/yaml-patch.js.map +1 -0
  100. package/package.json +7 -4
  101. package/templates/hook-packs/claude-code/CLAUDE.md +172 -0
  102. package/templates/hook-packs/claude-code/audit.sh +121 -0
  103. package/templates/hook-packs/claude-code/block-dangerous.sh +158 -0
  104. package/templates/hook-packs/claude-code/classify_command.py +1064 -0
  105. package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +63 -0
  106. package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +50 -0
  107. package/templates/hook-packs/claude-code/dispatch/session_start.sh +41 -0
  108. package/templates/hook-packs/claude-code/dispatch/stop.sh +37 -0
  109. package/templates/hook-packs/claude-code/guard-strikes.sh +140 -0
  110. package/templates/hook-packs/claude-code/lib/parse-input.sh +127 -0
  111. package/templates/hook-packs/claude-code/lib/run-handlers.sh +212 -0
  112. package/templates/hook-packs/claude-code/reset-danger-latch.sh +21 -0
  113. package/templates/hook-packs/claude-code/reset-strikes.sh +243 -0
  114. package/templates/hook-packs/claude-code/runtime-paths.sh +80 -0
  115. package/templates/hook-packs/claude-code/scope-guard.sh +392 -0
  116. package/templates/hook-packs/claude-code/session-caws-status.sh +171 -0
  117. package/templates/hook-packs/claude-code/session-log.sh +180 -0
  118. package/templates/hook-packs/claude-code/worktree-guard.sh +240 -0
  119. package/templates/hook-packs/claude-code/worktree-write-guard.sh +77 -0
@@ -1,42 +1,110 @@
1
1
  "use strict";
2
- // `caws init` — vNext bootstrap of the canonical .caws/ shape.
2
+ // `caws init` — vNext bootstrap of the canonical .caws/ shape, plus
3
+ // optional hook-pack install for the operating agent harness.
3
4
  //
4
5
  // Pipeline:
5
6
  // 1. resolveRepoRoot(cwd) — needs git, NOT .caws/
6
7
  // 2. initProject(repoRoot) — store-side adapter does the work
7
- // 3. render result short summary or "already initialized"
8
+ // 3. render canonical-state result step 1 message
9
+ // 4. resolve agent surface — from --agent-surface or detection
10
+ // 5. install hook pack (or skip) — step 2 message
11
+ // 6. inspect .claude/settings.json — step 3 message
12
+ // 7. emit activation contract — step 4 message
13
+ //
14
+ // The init surface is **non-interactive**. All decisions come from CLI
15
+ // flags or filesystem signals; nothing prompts. Each step prints a
16
+ // clearly-labeled section so a turn-by-turn agent can read what
17
+ // happened and what to do next.
8
18
  //
9
19
  // Exit codes:
10
20
  // 0 = canonical state established (created OR already_initialized)
11
- // 1 = legacy residue refused (INIT_LEGACY_RESIDUE) — non-destructive,
12
- // the user must clear the listed files manually
13
- // 2 = repo-root resolution failed, write I/O failed, or the default
14
- // policy itself failed kernel validation
15
- // (INIT_DEFAULT_POLICY_INVALID programmer error in our seed)
16
- //
17
- // Discipline:
18
- // - No --force in 7b. Force modes turn into cleanup tools and cleanup
19
- // belongs to a later doctor/repair surface.
20
- // - The seeded policy MUST pass kernel validation BEFORE landing on
21
- // disk. If our default is bad, that's a programmer error and exit 2
22
- // is correct — we do NOT write a known-invalid policy just to keep
23
- // `init` succeeding.
24
- // - Init never overwrites existing canonical files. Idempotent rerun
25
- // reports "already initialized"; partial state is filled in
26
- // additively (a half-bootstrapped project becomes whole).
21
+ // AND hook-pack step did not refuse files
22
+ // 1 = legacy residue refused (INIT_LEGACY_RESIDUE)
23
+ // OR hook-pack install refused one or more files (use --adopt or
24
+ // --overwrite to resolve)
25
+ // 2 = repo-root resolution failed, write I/O failed, or default
26
+ // policy invalid
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.runInitCommand = runInitCommand;
29
+ const harness_detect_1 = require("../../init/harness-detect");
30
+ const hook_install_1 = require("../../init/hook-install");
31
+ const register_1 = require("../../init/hook-packs/register");
29
32
  const store_1 = require("../../store");
30
33
  const diagnostic_1 = require("../render/diagnostic");
31
34
  const init_1 = require("../render/init");
35
+ const init_hook_pack_1 = require("../render/init-hook-pack");
36
+ function chooseSurface(explicit, detection) {
37
+ if (explicit !== undefined) {
38
+ return { surface: explicit, reason: 'explicit' };
39
+ }
40
+ if (detection.kind === 'single') {
41
+ return { surface: detection.surface, reason: 'detected' };
42
+ }
43
+ if (detection.kind === 'ambiguous') {
44
+ return { surface: null, reason: 'ambiguous' };
45
+ }
46
+ return { surface: null, reason: 'none' };
47
+ }
48
+ function performHookPackStep(repoRoot, surface, reason, options) {
49
+ if (surface === null) {
50
+ // No surface chosen — emit skipped_ambiguous.
51
+ return {
52
+ outcome: 'skipped_ambiguous',
53
+ pack: null,
54
+ actions: [],
55
+ activation: 'not_applicable',
56
+ };
57
+ }
58
+ if (surface === 'none') {
59
+ return {
60
+ outcome: 'skipped_explicit_none',
61
+ pack: null,
62
+ actions: [],
63
+ activation: 'not_applicable',
64
+ };
65
+ }
66
+ const resolution = (0, register_1.resolveHookPack)(surface);
67
+ if (resolution.kind === 'declared_not_implemented') {
68
+ // Treat as a skip with a clear message in the renderer.
69
+ return {
70
+ outcome: 'skipped_ambiguous',
71
+ pack: null,
72
+ actions: [],
73
+ activation: 'not_applicable',
74
+ };
75
+ }
76
+ if (resolution.kind === 'none') {
77
+ return {
78
+ outcome: 'skipped_explicit_none',
79
+ pack: null,
80
+ actions: [],
81
+ activation: 'not_applicable',
82
+ };
83
+ }
84
+ const installOpts = { repoRoot };
85
+ if (options.overwrite !== undefined) {
86
+ installOpts.overwrite = options.overwrite;
87
+ }
88
+ if (options.adopt !== undefined) {
89
+ installOpts.adopt = options.adopt;
90
+ }
91
+ return (0, hook_install_1.installHookPack)(resolution.pack, installOpts);
92
+ }
32
93
  function runInitCommand(opts = {}) {
33
94
  const cwd = opts.cwd ?? process.cwd();
34
95
  const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
35
96
  const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
36
97
  const showData = opts.showData === true;
37
- // 1. Resolve repo root. We do NOT pass requireCawsDir — the whole
38
- // point of init is to create .caws/, so failing on its absence
39
- // here would be self-contradictory.
98
+ // Validate --agent-surface early. An unknown value is a programmer
99
+ // error from the caller (or a typo at the CLI); fail fast with a
100
+ // clear diagnostic.
101
+ if (opts.agentSurface !== undefined &&
102
+ !(0, register_1.isKnownSurface)(opts.agentSurface)) {
103
+ err(`caws init: unknown --agent-surface "${opts.agentSurface}".`);
104
+ err(' Known values: claude-code, cursor, windsurf, none.');
105
+ return 2;
106
+ }
107
+ // Step 0: resolve repo root.
40
108
  const root = (0, store_1.resolveRepoRoot)(cwd);
41
109
  if (!root.ok) {
42
110
  err('caws init: failed to resolve repo root.');
@@ -44,12 +112,9 @@ function runInitCommand(opts = {}) {
44
112
  return 2;
45
113
  }
46
114
  const { repoRoot } = root.value;
47
- // 2. Bootstrap.
115
+ // Step 1: bootstrap canonical .caws/ state.
48
116
  const result = (0, store_1.initProject)(repoRoot);
49
117
  if (!result.ok) {
50
- // Decide exit code from the diagnostic rule. Legacy residue is a
51
- // user-correctable domain error (1); everything else is a hard
52
- // store/programmer failure (2).
53
118
  const isLegacy = result.errors.some((d) => d.rule === 'store.init.legacy_residue');
54
119
  err(isLegacy
55
120
  ? 'caws init: refusing to overwrite legacy state.'
@@ -57,8 +122,47 @@ function runInitCommand(opts = {}) {
57
122
  err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
58
123
  return isLegacy ? 1 : 2;
59
124
  }
60
- // 3. Render and exit.
61
125
  out((0, init_1.renderInit)({ result: result.value, repoRoot }));
62
- return 0;
126
+ // Step 2: choose the agent surface and install the hook pack.
127
+ const detection = (0, harness_detect_1.detectAgentHarness)(repoRoot);
128
+ const chosen = chooseSurface(opts.agentSurface, detection);
129
+ const hookPackResult = performHookPackStep(repoRoot, chosen.surface, chosen.reason, opts);
130
+ // When detection produced an ambiguous result and no explicit flag,
131
+ // the renderer's skipped_ambiguous branch handles the message.
132
+ // When the user requested an unimplemented surface (cursor, windsurf
133
+ // today), the renderer surfaces it as a skipped-ambiguous with the
134
+ // same instruction shape.
135
+ if (opts.agentSurface !== undefined &&
136
+ opts.agentSurface !== 'none' &&
137
+ chosen.surface !== null) {
138
+ const resolution = (0, register_1.resolveHookPack)(opts.agentSurface);
139
+ if (resolution.kind === 'declared_not_implemented') {
140
+ err(`caws init: --agent-surface "${opts.agentSurface}" is declared but not yet implemented in this CLI version.`);
141
+ err(' Known values: claude-code, cursor, windsurf, none.');
142
+ err(' Implemented values: claude-code.');
143
+ // Surface the canonical-state success (step 1 already printed) so
144
+ // the user knows .caws/ is set up.
145
+ return 1;
146
+ }
147
+ }
148
+ out((0, init_hook_pack_1.renderHookPackInstall)(hookPackResult));
149
+ // Step 3: inspect .claude/settings.json. Only meaningful when a pack
150
+ // was actually installed (claude-code in v11.1). For 'none' or
151
+ // 'skipped_ambiguous', skip this check.
152
+ let wiringStatus;
153
+ if (hookPackResult.pack !== null) {
154
+ wiringStatus = (0, hook_install_1.inspectClaudeSettings)(repoRoot);
155
+ out((0, init_hook_pack_1.renderSettingsWiring)(wiringStatus));
156
+ }
157
+ // Step 4: activation contract. The contract message tailors to whether
158
+ // anything was actually installed/updated this run AND whether the
159
+ // settings.json wiring is in place — without those signals the panel
160
+ // becomes a constant STOP sign on re-runs, training agents to ignore
161
+ // it.
162
+ out((0, init_hook_pack_1.renderActivationContract)(hookPackResult, wiringStatus));
163
+ // Exit code: refusal in pack install → 1 so callers see something went
164
+ // wrong; otherwise 0.
165
+ const anyRefused = hookPackResult.actions.some((a) => a.action === 'refused');
166
+ return anyRefused ? 1 : 0;
63
167
  }
64
168
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,EAAE;AACF,YAAY;AACZ,gEAAgE;AAChE,2EAA2E;AAC3E,iFAAiF;AACjF,EAAE;AACF,cAAc;AACd,qEAAqE;AACrE,wEAAwE;AACxE,sDAAsD;AACtD,sEAAsE;AACtE,+CAA+C;AAC/C,qEAAqE;AACrE,EAAE;AACF,cAAc;AACd,wEAAwE;AACxE,gDAAgD;AAChD,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE;AACvE,yBAAyB;AACzB,uEAAuE;AACvE,gEAAgE;AAChE,8DAA8D;;AAa9D,wCAsCC;AAjDD,uCAA2D;AAC3D,qDAAyD;AACzD,yCAA4C;AAS5C,SAAgB,cAAc,CAAC,OAA2B,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAExC,kEAAkE;IAClE,kEAAkE;IAClE,uCAAuC;IACvC,MAAM,IAAI,GAAG,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAA,8BAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAEhC,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,iEAAiE;QACjE,+DAA+D;QAC/D,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,2BAA2B,CAC9C,CAAC;QACF,GAAG,CACD,QAAQ;YACN,CAAC,CAAC,gDAAgD;YAClD,CAAC,CAAC,yCAAyC,CAC9C,CAAC;QACF,GAAG,CAAC,IAAA,8BAAiB,EAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB;IACtB,GAAG,CAAC,IAAA,iBAAU,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type ActorKind } from '@paths.design/caws-kernel';
2
+ interface BaseCommandOptions {
3
+ readonly cwd?: string;
4
+ readonly now?: () => Date;
5
+ readonly env?: NodeJS.ProcessEnv;
6
+ readonly out?: (line: string) => void;
7
+ readonly err?: (line: string) => void;
8
+ readonly showData?: boolean;
9
+ readonly actorKind?: ActorKind;
10
+ }
11
+ export interface SpecsCreateOptions extends BaseCommandOptions {
12
+ readonly id: string;
13
+ readonly title: string;
14
+ readonly mode: string;
15
+ readonly riskTier: number | string;
16
+ }
17
+ export declare function runSpecsCreateCommand(opts: SpecsCreateOptions): number;
18
+ export interface SpecsListOptions extends BaseCommandOptions {
19
+ /** Include archived specs in the listing. */
20
+ readonly includeArchived?: boolean;
21
+ }
22
+ export declare function runSpecsListCommand(opts?: SpecsListOptions): number;
23
+ export interface SpecsShowOptions extends BaseCommandOptions {
24
+ readonly id: string;
25
+ }
26
+ export declare function runSpecsShowCommand(opts: SpecsShowOptions): number;
27
+ export interface SpecsCloseOptions extends BaseCommandOptions {
28
+ readonly id: string;
29
+ readonly resolution: string;
30
+ readonly reason?: string;
31
+ readonly mergeCommit?: string;
32
+ readonly supersededBy?: string;
33
+ }
34
+ export declare function runSpecsCloseCommand(opts: SpecsCloseOptions): number;
35
+ export interface SpecsArchiveOptions extends BaseCommandOptions {
36
+ readonly id: string;
37
+ readonly reason?: string;
38
+ }
39
+ export declare function runSpecsArchiveCommand(opts: SpecsArchiveOptions): number;
40
+ export {};
41
+ //# sourceMappingURL=specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/specs.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB7E,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAyDD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAmDtE;AAID,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,gBAAqB,GAAG,MAAM,CAgCvE;AAID,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAelE;AAID,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CA0CpE;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgCxE"}
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ // `caws specs` command group — v11 spec lifecycle commands.
3
+ //
4
+ // CLI-SPECS-001: the canonical replacement for manual lifecycle YAML
5
+ // edits. Five subcommands:
6
+ // - caws specs create <id> --title <title> --mode <mode> --risk-tier <n>
7
+ // - caws specs list [--archived]
8
+ // - caws specs show <id>
9
+ // - caws specs close <id> --resolution <r> [--reason <text>] [--merge-commit <sha>] [--superseded-by <id>]
10
+ // - caws specs archive <id> [--reason <text>]
11
+ //
12
+ // Discipline:
13
+ // - All mutation paths go through specs-writer (which uses the
14
+ // lifecycle-transaction substrate from Slice 4).
15
+ // - The shell never appends events directly. Event append happens
16
+ // inside the writer, which routes through appendEvent.
17
+ // - The shell never patches YAML directly. yaml-patch lives in the
18
+ // store layer.
19
+ // - The shell parses CLI args, builds an actor envelope, calls the
20
+ // writer, and renders the outcome.
21
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
28
+ }) : (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ o[k2] = m[k];
31
+ }));
32
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
33
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
34
+ }) : function(o, v) {
35
+ o["default"] = v;
36
+ });
37
+ var __importStar = (this && this.__importStar) || (function () {
38
+ var ownKeys = function(o) {
39
+ ownKeys = Object.getOwnPropertyNames || function (o) {
40
+ var ar = [];
41
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
42
+ return ar;
43
+ };
44
+ return ownKeys(o);
45
+ };
46
+ return function (mod) {
47
+ if (mod && mod.__esModule) return mod;
48
+ var result = {};
49
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
50
+ __setModuleDefault(result, mod);
51
+ return result;
52
+ };
53
+ })();
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ exports.runSpecsCreateCommand = runSpecsCreateCommand;
56
+ exports.runSpecsListCommand = runSpecsListCommand;
57
+ exports.runSpecsShowCommand = runSpecsShowCommand;
58
+ exports.runSpecsCloseCommand = runSpecsCloseCommand;
59
+ exports.runSpecsArchiveCommand = runSpecsArchiveCommand;
60
+ const path = __importStar(require("node:path"));
61
+ const caws_kernel_1 = require("@paths.design/caws-kernel");
62
+ const store_1 = require("../../store");
63
+ const specs_writer_1 = require("../../store/specs-writer");
64
+ const actor_1 = require("../session/actor");
65
+ const resolve_session_1 = require("../session/resolve-session");
66
+ const diagnostic_1 = require("../render/diagnostic");
67
+ const VALID_MODES = ['feature', 'refactor', 'fix', 'doc', 'chore'];
68
+ const VALID_RESOLUTIONS = ['completed', 'superseded', 'abandoned'];
69
+ function setupIO(opts) {
70
+ const cwd = opts.cwd ?? process.cwd();
71
+ const nowFn = opts.now ?? (() => new Date());
72
+ const env = opts.env ?? process.env;
73
+ const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
74
+ const errFn = opts.err ?? ((s) => process.stderr.write(s + '\n'));
75
+ const showData = opts.showData === true;
76
+ return { cwd, nowFn, env, out, err: errFn, showData };
77
+ }
78
+ function resolveCawsCtx(cwd, errFn, showData, cmd) {
79
+ const r = (0, store_1.resolveRepoRoot)(cwd);
80
+ if (!r.ok) {
81
+ errFn(`caws specs ${cmd}: failed to resolve repo root.`);
82
+ errFn((0, diagnostic_1.renderDiagnostics)(r.errors, { showData }));
83
+ return null;
84
+ }
85
+ return { repoRoot: r.value.repoRoot, cawsDir: r.value.cawsDir };
86
+ }
87
+ function buildActorOrError(cawsDir, cwd, env, nowFn, actorKind, errFn, showData, cmd) {
88
+ const sessionResult = (0, resolve_session_1.resolveSession)({
89
+ cawsDir,
90
+ worktreeRoot: cwd,
91
+ env,
92
+ now: nowFn,
93
+ allowMint: true,
94
+ });
95
+ if (!sessionResult.ok) {
96
+ errFn(`caws specs ${cmd}: failed to resolve session identity.`);
97
+ errFn((0, diagnostic_1.renderDiagnostics)(sessionResult.errors, { showData }));
98
+ return null;
99
+ }
100
+ return (0, actor_1.buildActor)({
101
+ session: sessionResult.value,
102
+ kind: actorKind ?? 'agent',
103
+ });
104
+ }
105
+ function runSpecsCreateCommand(opts) {
106
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
107
+ if (!VALID_MODES.includes(opts.mode)) {
108
+ err(`caws specs create: invalid --mode "${opts.mode}". Expected one of: ${VALID_MODES.join(', ')}.`);
109
+ return 1;
110
+ }
111
+ const riskTier = typeof opts.riskTier === 'string'
112
+ ? Number.parseInt(opts.riskTier, 10)
113
+ : opts.riskTier;
114
+ if (riskTier !== 1 && riskTier !== 2 && riskTier !== 3) {
115
+ err(`caws specs create: invalid --risk-tier "${opts.riskTier}". Expected 1, 2, or 3.`);
116
+ return 1;
117
+ }
118
+ const ctx = resolveCawsCtx(cwd, err, showData, 'create');
119
+ if (ctx === null)
120
+ return 2;
121
+ const actor = buildActorOrError(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'create');
122
+ if (actor === null)
123
+ return 2;
124
+ const result = (0, specs_writer_1.createSpec)(ctx.cawsDir, {
125
+ id: opts.id,
126
+ title: opts.title,
127
+ mode: opts.mode,
128
+ riskTier: riskTier,
129
+ initialState: 'active',
130
+ now: nowFn,
131
+ actor,
132
+ });
133
+ if (!(0, caws_kernel_1.isOk)(result)) {
134
+ err('caws specs create: failed.');
135
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
136
+ return 1;
137
+ }
138
+ const outcome = result.value;
139
+ if (outcome.kind === 'partial_failure_recovered') {
140
+ err('caws specs create: partial failure recovered (no state change).');
141
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
142
+ return 1;
143
+ }
144
+ out(`created ${outcome.id} at ${path.relative(ctx.repoRoot, outcome.path)} (lifecycle_state: active)`);
145
+ return 0;
146
+ }
147
+ function runSpecsListCommand(opts = {}) {
148
+ const { cwd, out, err, showData } = setupIO(opts);
149
+ const ctx = resolveCawsCtx(cwd, err, showData, 'list');
150
+ if (ctx === null)
151
+ return 2;
152
+ const result = (0, specs_writer_1.listSpecs)(ctx.cawsDir, {
153
+ includeArchived: opts.includeArchived === true,
154
+ });
155
+ if (!(0, caws_kernel_1.isOk)(result)) {
156
+ err('caws specs list: failed.');
157
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
158
+ return 1;
159
+ }
160
+ const { active, archived } = result.value;
161
+ if (active.length === 0 && archived.length === 0) {
162
+ out('(no specs)');
163
+ return 0;
164
+ }
165
+ for (const entry of active) {
166
+ const rel = path.relative(ctx.repoRoot, entry.path);
167
+ out(`${entry.id.padEnd(28)} ${entry.lifecycle_state.padEnd(8)} ${entry.title}`);
168
+ void rel;
169
+ }
170
+ if (opts.includeArchived === true && archived.length > 0) {
171
+ out('');
172
+ out('-- archived --');
173
+ for (const entry of archived) {
174
+ out(`${entry.id.padEnd(28)} ${entry.lifecycle_state.padEnd(8)} ${entry.title}`);
175
+ }
176
+ }
177
+ return 0;
178
+ }
179
+ function runSpecsShowCommand(opts) {
180
+ const { cwd, out, err, showData } = setupIO(opts);
181
+ const ctx = resolveCawsCtx(cwd, err, showData, 'show');
182
+ if (ctx === null)
183
+ return 2;
184
+ const result = (0, specs_writer_1.showSpec)(ctx.cawsDir, opts.id);
185
+ if (!(0, caws_kernel_1.isOk)(result)) {
186
+ err('caws specs show: failed.');
187
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
188
+ return 1;
189
+ }
190
+ // Print the raw source so the user gets byte-faithful output
191
+ // (comments preserved, etc).
192
+ out(result.value.source);
193
+ return 0;
194
+ }
195
+ function runSpecsCloseCommand(opts) {
196
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
197
+ if (!VALID_RESOLUTIONS.includes(opts.resolution)) {
198
+ err(`caws specs close: invalid --resolution "${opts.resolution}". Expected one of: ${VALID_RESOLUTIONS.join(', ')}.`);
199
+ return 1;
200
+ }
201
+ const ctx = resolveCawsCtx(cwd, err, showData, 'close');
202
+ if (ctx === null)
203
+ return 2;
204
+ const actor = buildActorOrError(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'close');
205
+ if (actor === null)
206
+ return 2;
207
+ const input = {
208
+ id: opts.id,
209
+ resolution: opts.resolution,
210
+ now: nowFn,
211
+ actor,
212
+ };
213
+ if (opts.reason !== undefined)
214
+ input.reason = opts.reason;
215
+ if (opts.mergeCommit !== undefined)
216
+ input.mergeCommit = opts.mergeCommit;
217
+ if (opts.supersededBy !== undefined)
218
+ input.supersededBy = opts.supersededBy;
219
+ const result = (0, specs_writer_1.closeSpec)(ctx.cawsDir, input);
220
+ if (!(0, caws_kernel_1.isOk)(result)) {
221
+ err('caws specs close: failed.');
222
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
223
+ return 1;
224
+ }
225
+ const outcome = result.value;
226
+ if (outcome.kind === 'partial_failure_recovered') {
227
+ err('caws specs close: partial failure recovered (no state change).');
228
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
229
+ return 1;
230
+ }
231
+ out(`closed ${outcome.id} (resolution: ${opts.resolution})`);
232
+ return 0;
233
+ }
234
+ function runSpecsArchiveCommand(opts) {
235
+ const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
236
+ const ctx = resolveCawsCtx(cwd, err, showData, 'archive');
237
+ if (ctx === null)
238
+ return 2;
239
+ const actor = buildActorOrError(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'archive');
240
+ if (actor === null)
241
+ return 2;
242
+ const input = {
243
+ id: opts.id,
244
+ now: nowFn,
245
+ actor,
246
+ };
247
+ if (opts.reason !== undefined)
248
+ input.reason = opts.reason;
249
+ const result = (0, specs_writer_1.archiveSpec)(ctx.cawsDir, input);
250
+ if (!(0, caws_kernel_1.isOk)(result)) {
251
+ err('caws specs archive: failed.');
252
+ err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
253
+ return 1;
254
+ }
255
+ const outcome = result.value;
256
+ if (outcome.kind === 'partial_failure_recovered') {
257
+ err('caws specs archive: partial failure recovered (no state change).');
258
+ err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
259
+ return 1;
260
+ }
261
+ out(`archived ${outcome.id} → ${path.relative(ctx.repoRoot, outcome.path)}`);
262
+ return 0;
263
+ }
264
+ //# sourceMappingURL=specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../src/shell/commands/specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type ActorKind } from '@paths.design/caws-kernel';
2
+ interface BaseCommandOptions {
3
+ readonly cwd?: string;
4
+ readonly now?: () => Date;
5
+ readonly env?: NodeJS.ProcessEnv;
6
+ readonly out?: (line: string) => void;
7
+ readonly err?: (line: string) => void;
8
+ readonly showData?: boolean;
9
+ readonly actorKind?: ActorKind;
10
+ }
11
+ export interface WorktreeCreateOptions extends BaseCommandOptions {
12
+ readonly name: string;
13
+ readonly specId: string;
14
+ readonly baseBranch?: string;
15
+ readonly branch?: string;
16
+ }
17
+ export declare function runWorktreeCreateCommand(opts: WorktreeCreateOptions): number;
18
+ export interface WorktreeListOptions extends BaseCommandOptions {
19
+ }
20
+ export declare function runWorktreeListCommand(opts?: WorktreeListOptions): number;
21
+ export interface WorktreeBindOptions extends BaseCommandOptions {
22
+ readonly name: string;
23
+ readonly specId: string;
24
+ }
25
+ export declare function runWorktreeBindCommand(opts: WorktreeBindOptions): number;
26
+ export interface WorktreeDestroyOptions extends BaseCommandOptions {
27
+ readonly name: string;
28
+ readonly abandonUnmerged?: boolean;
29
+ }
30
+ export declare function runWorktreeDestroyCommand(opts: WorktreeDestroyOptions): number;
31
+ export interface WorktreeMergeOptions extends BaseCommandOptions {
32
+ readonly name: string;
33
+ readonly dryRun?: boolean;
34
+ readonly message?: string;
35
+ }
36
+ export declare function runWorktreeMergeCommand(opts: WorktreeMergeOptions): number;
37
+ export {};
38
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/worktree.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,2BAA2B,CAAC;AAcjE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAkED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAuC5E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;CAAG;AAElE,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAwB7E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA+BxE;AAID,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAkC9E;AAID,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA0C1E"}