@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktrees-writer.js","sourceRoot":"","sources":["../../src/store/worktrees-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Result } from '@paths.design/caws-kernel';
2
+ /** Set a top-level scalar key's value. Refuses ambiguous mutations. */
3
+ export declare function setTopLevelScalar(source: string, key: string, value: string): Result<string>;
4
+ /** Insert a new top-level scalar key:value line after an existing key.
5
+ * Refuses ambiguous targets and duplicate-key insertions. */
6
+ export declare function insertTopLevelScalarAfter(source: string, afterKey: string, key: string, value: string): Result<string>;
7
+ //# sourceMappingURL=yaml-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-patch.d.ts","sourceRoot":"","sources":["../../src/store/yaml-patch.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAuHjE,uEAAuE;AACvE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,CAAC,CAiFhB;AAED;8DAC8D;AAC9D,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,CAAC,CAgFhB"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ // YAML raw-source-bytes patcher for top-level scalar fields.
3
+ //
4
+ // LIFECYCLE-MUTATION-001 invariant: lifecycle mutations must not
5
+ // reserialize the YAML document. Parse-then-dump destroys comments,
6
+ // trailing whitespace, and field ordering — exactly the v10 destructive
7
+ // close failure (failure-lineage Entry 14).
8
+ //
9
+ // Scope:
10
+ // This patcher handles top-level scalar fields only. It is NOT a
11
+ // general YAML editor. It is a narrow safety mechanism for lifecycle
12
+ // field updates (lifecycle_state, resolution, closure_notes,
13
+ // updated_at, worktree). Nested mutations should not be attempted
14
+ // here.
15
+ //
16
+ // Semantics:
17
+ // - setTopLevelScalar(source, key, value):
18
+ // - if key exists at top-level (column 0, no leading whitespace):
19
+ // replace its scalar value, preserve surrounding lines, comments,
20
+ // and trailing whitespace.
21
+ // - if key appears more than once at top level: AMBIGUOUS, refuse.
22
+ // - if key appears only nested (with leading whitespace): KEY_NOT_FOUND
23
+ // at top level, refuse — surgical mutation only.
24
+ // - if the existing value spans multiple lines (block scalar, flow
25
+ // mapping/sequence): AMBIGUOUS, refuse.
26
+ //
27
+ // - insertTopLevelScalarAfter(source, afterKey, key, value):
28
+ // - same refusal rules for afterKey.
29
+ // - inserts `key: value` on a new line directly after the afterKey
30
+ // line, preserving everything else byte-for-byte.
31
+ // - if `key` already exists at top level: AMBIGUOUS, refuse (use
32
+ // setTopLevelScalar instead).
33
+ //
34
+ // Quoting:
35
+ // Values are written exactly as provided. Callers MUST pre-quote
36
+ // values that contain special characters (colons, leading dashes,
37
+ // etc.). This patcher does not interpret YAML semantics; it patches
38
+ // bytes.
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.setTopLevelScalar = setTopLevelScalar;
41
+ exports.insertTopLevelScalarAfter = insertTopLevelScalarAfter;
42
+ const caws_kernel_1 = require("@paths.design/caws-kernel");
43
+ const repo_root_1 = require("./repo-root");
44
+ const rules_1 = require("./rules");
45
+ /** Match a top-level key line. */
46
+ function isTopLevelKeyLine(line, key) {
47
+ // Top-level: no leading whitespace.
48
+ if (line.length === 0)
49
+ return false;
50
+ if (line[0] === ' ' || line[0] === '\t')
51
+ return false;
52
+ if (line[0] === '#')
53
+ return false; // comment, not a key
54
+ // Match `<key>:` exactly (followed by space, end-of-line, or single
55
+ // character — to avoid matching `keyfoo:`).
56
+ const colonIdx = line.indexOf(':');
57
+ if (colonIdx < 0)
58
+ return false;
59
+ const linkKey = line.slice(0, colonIdx);
60
+ return linkKey === key;
61
+ }
62
+ /** Return all (line-index, line-end-pos) for top-level occurrences of key. */
63
+ function findTopLevelKeyLines(lines, key) {
64
+ const hits = [];
65
+ for (let i = 0; i < lines.length; i++) {
66
+ const line = lines[i];
67
+ if (line !== undefined && isTopLevelKeyLine(line, key)) {
68
+ hits.push(i);
69
+ }
70
+ }
71
+ return hits;
72
+ }
73
+ /** Detect whether the line's value continues onto subsequent lines:
74
+ * - bare `key:` with nothing after the colon, followed by an indented
75
+ * block (mapping/sequence/block scalar)
76
+ * - block scalar markers: `key: |`, `key: >`
77
+ * - flow mapping/sequence on the same line that does not close on
78
+ * the same line
79
+ *
80
+ * Returns true if the value spans multiple lines (refusal case for
81
+ * surgical scalar replacement). */
82
+ function valueSpansMultipleLines(lines, keyLineIdx) {
83
+ const line = lines[keyLineIdx];
84
+ if (line === undefined)
85
+ return true;
86
+ const colonIdx = line.indexOf(':');
87
+ if (colonIdx < 0)
88
+ return true;
89
+ const after = line.slice(colonIdx + 1).trim();
90
+ // Block scalar markers.
91
+ if (after === '|' || after === '>' || after.startsWith('|') || after.startsWith('>')) {
92
+ return true;
93
+ }
94
+ // Bare key (nothing after the colon): the value is on subsequent
95
+ // indented lines.
96
+ if (after === '') {
97
+ // Look at the next non-empty line; if it is indented, this is a
98
+ // nested mapping/sequence and we cannot replace the scalar.
99
+ for (let i = keyLineIdx + 1; i < lines.length; i++) {
100
+ const next = lines[i];
101
+ if (next === undefined)
102
+ continue;
103
+ if (next.length === 0)
104
+ continue;
105
+ if (next[0] === ' ' || next[0] === '\t' || next[0] === '-') {
106
+ return true;
107
+ }
108
+ break;
109
+ }
110
+ // Empty value on a top-level key — fine, replaceable.
111
+ return false;
112
+ }
113
+ // Flow mapping/sequence that doesn't close on the same line.
114
+ if (after.startsWith('{') && !after.endsWith('}'))
115
+ return true;
116
+ if (after.startsWith('[') && !after.endsWith(']'))
117
+ return true;
118
+ return false;
119
+ }
120
+ /** Split source into lines preserving the original line-ending pattern
121
+ * (we re-join with the same delimiter). Handles both LF and CRLF
122
+ * consistently. Returns the lines and the chosen separator. */
123
+ function splitLines(source) {
124
+ // Prefer CRLF if any present; else LF.
125
+ const sep = source.includes('\r\n') ? '\r\n' : '\n';
126
+ // Strip a single trailing separator if present; we'll restore it on
127
+ // join so we don't add a phantom empty last element.
128
+ let trimmed = source;
129
+ let trailing = '';
130
+ if (trimmed.endsWith(sep)) {
131
+ trimmed = trimmed.slice(0, -sep.length);
132
+ trailing = sep;
133
+ }
134
+ return { lines: trimmed.split(sep), sep: sep + (trailing ? '' : '') };
135
+ // NOTE: trailing is used by the caller's join via the separator.
136
+ // We return sep without baking trailing into it; the join below
137
+ // restores the trailing newline conditionally.
138
+ }
139
+ function joinLines(lines, sep, originalHadTrailing) {
140
+ const joined = lines.join(sep);
141
+ return originalHadTrailing ? joined + sep : joined;
142
+ }
143
+ function originalHadTrailing(source, sep) {
144
+ return source.endsWith(sep);
145
+ }
146
+ /** Set a top-level scalar key's value. Refuses ambiguous mutations. */
147
+ function setTopLevelScalar(source, key, value) {
148
+ const sep = source.includes('\r\n') ? '\r\n' : '\n';
149
+ const trailing = originalHadTrailing(source, sep);
150
+ const { lines } = splitLines(source);
151
+ const hits = findTopLevelKeyLines(lines, key);
152
+ if (hits.length === 0) {
153
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_KEY_NOT_FOUND, `Top-level key "${key}" not found in YAML source.`, { subject: key }));
154
+ }
155
+ if (hits.length > 1) {
156
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_AMBIGUOUS, `Top-level key "${key}" appears ${hits.length} times; refusing ambiguous mutation.`, { subject: key, data: { occurrences: hits.length } }));
157
+ }
158
+ const keyLineIdx = hits[0];
159
+ if (keyLineIdx === undefined) {
160
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_KEY_NOT_FOUND, `Top-level key "${key}" not found in YAML source.`, { subject: key }));
161
+ }
162
+ if (valueSpansMultipleLines(lines, keyLineIdx)) {
163
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_AMBIGUOUS, `Top-level key "${key}" has a multi-line value (block scalar, nested mapping, or unclosed flow); refusing scalar replacement.`, { subject: key }));
164
+ }
165
+ const originalLine = lines[keyLineIdx];
166
+ if (originalLine === undefined) {
167
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_KEY_NOT_FOUND, `Top-level key "${key}" disappeared during patch.`, { subject: key }));
168
+ }
169
+ // Preserve any inline trailing comment.
170
+ const colonIdx = originalLine.indexOf(':');
171
+ // Find an inline comment (# preceded by whitespace) after the colon.
172
+ let commentStart = -1;
173
+ let inSingle = false;
174
+ let inDouble = false;
175
+ for (let i = colonIdx + 1; i < originalLine.length; i++) {
176
+ const ch = originalLine[i];
177
+ if (ch === "'" && !inDouble)
178
+ inSingle = !inSingle;
179
+ else if (ch === '"' && !inSingle)
180
+ inDouble = !inDouble;
181
+ else if (ch === '#' && !inSingle && !inDouble) {
182
+ const prev = originalLine[i - 1];
183
+ if (prev === ' ' || prev === '\t' || prev === undefined) {
184
+ commentStart = i;
185
+ break;
186
+ }
187
+ }
188
+ }
189
+ const trailingComment = commentStart >= 0 ? ' ' + originalLine.slice(commentStart) : '';
190
+ const newLine = `${key}: ${value}${trailingComment}`;
191
+ const newLines = lines.slice();
192
+ newLines[keyLineIdx] = newLine;
193
+ return (0, caws_kernel_1.ok)(joinLines(newLines, sep, trailing));
194
+ }
195
+ /** Insert a new top-level scalar key:value line after an existing key.
196
+ * Refuses ambiguous targets and duplicate-key insertions. */
197
+ function insertTopLevelScalarAfter(source, afterKey, key, value) {
198
+ const sep = source.includes('\r\n') ? '\r\n' : '\n';
199
+ const trailing = originalHadTrailing(source, sep);
200
+ const { lines } = splitLines(source);
201
+ // Validate `afterKey` exists exactly once at top level.
202
+ const afterHits = findTopLevelKeyLines(lines, afterKey);
203
+ if (afterHits.length === 0) {
204
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_KEY_NOT_FOUND, `Top-level anchor key "${afterKey}" not found in YAML source.`, { subject: afterKey }));
205
+ }
206
+ if (afterHits.length > 1) {
207
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_AMBIGUOUS, `Top-level anchor key "${afterKey}" appears ${afterHits.length} times; refusing ambiguous insert.`, { subject: afterKey }));
208
+ }
209
+ // Refuse if `key` already exists at top level — caller should use
210
+ // setTopLevelScalar instead.
211
+ const keyHits = findTopLevelKeyLines(lines, key);
212
+ if (keyHits.length > 0) {
213
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_AMBIGUOUS, `Top-level key "${key}" already exists; use setTopLevelScalar to update it.`, { subject: key }));
214
+ }
215
+ const afterIdx = afterHits[0];
216
+ if (afterIdx === undefined) {
217
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.YAML_PATCH_KEY_NOT_FOUND, `Top-level anchor key "${afterKey}" disappeared during patch.`, { subject: afterKey }));
218
+ }
219
+ // If afterKey's value spans multiple lines, find the last line of
220
+ // its value block (lines up until the next top-level key or
221
+ // end-of-file) and insert after that.
222
+ let insertIdx = afterIdx + 1;
223
+ if (valueSpansMultipleLines(lines, afterIdx)) {
224
+ for (let i = afterIdx + 1; i < lines.length; i++) {
225
+ const ln = lines[i];
226
+ if (ln === undefined)
227
+ break;
228
+ // Empty line within a block — keep going.
229
+ if (ln.length === 0) {
230
+ insertIdx = i + 1;
231
+ continue;
232
+ }
233
+ // Another top-level key (or comment line at column 0) ends the
234
+ // block.
235
+ if (ln[0] !== ' ' && ln[0] !== '\t') {
236
+ insertIdx = i;
237
+ break;
238
+ }
239
+ insertIdx = i + 1;
240
+ }
241
+ }
242
+ const newLine = `${key}: ${value}`;
243
+ const newLines = [
244
+ ...lines.slice(0, insertIdx),
245
+ newLine,
246
+ ...lines.slice(insertIdx),
247
+ ];
248
+ return (0, caws_kernel_1.ok)(joinLines(newLines, sep, trailing));
249
+ }
250
+ //# sourceMappingURL=yaml-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-patch.js","sourceRoot":"","sources":["../../src/store/yaml-patch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@paths.design/caws-cli",
3
- "version": "11.0.0",
4
- "description": "CAWS CLI - the governed core for CAWS project state, scope, claims, gates, waivers, and evidence (v11.0.0). vNext kernel/store/shell architecture.",
3
+ "version": "11.1.1",
4
+ "description": "CAWS CLI - the governed core for CAWS project state, scope, claims, gates, waivers, and evidence (v11.1). Restores canonical spec/worktree lifecycle on the vNext kernel/store/shell architecture.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "caws": "dist/index.js"
@@ -9,7 +9,8 @@
9
9
  "preferGlobal": true,
10
10
  "files": [
11
11
  "dist",
12
- "README.md"
12
+ "README.md",
13
+ "templates/hook-packs/**"
13
14
  ],
14
15
  "scripts": {
15
16
  "build": "node scripts/build-cli.js",
@@ -33,7 +34,9 @@
33
34
  "validate": "echo 'CLI package validation not required'",
34
35
  "caws:validate": "node dist/index.js validate",
35
36
  "clean": "rm -rf dist test-caws-project .agent && npm run test:cleanup",
36
- "prepare": "husky >/dev/null 2>&1 || true"
37
+ "prepare": "husky >/dev/null 2>&1 || true",
38
+ "smoke:fresh-install": "node scripts/fresh-install-smoke.mjs",
39
+ "prepublishOnly": "npm run build && node scripts/fresh-install-smoke.mjs"
37
40
  },
38
41
  "keywords": [
39
42
  "caws",
@@ -0,0 +1,172 @@
1
+ <!--
2
+ # CAWS-MANAGED-HOOK
3
+ # hook_pack: claude-code
4
+ # hook_pack_version: 2
5
+ # caws_min_major: 11
6
+ # lineage_refs: 1,4,6,8,11,12,13,16,17
7
+ # do_not_edit_directly: update via `caws init --agent-surface claude-code`
8
+ -->
9
+
10
+ # CAWS Claude Code Hook Pack
11
+
12
+ This directory contains the v11 Claude Code hook pack — pre-tool-call
13
+ governance infrastructure that interposes between the agent and its Edit,
14
+ Write, and Bash tools. The kernel/store/shell trinity owns canonical state;
15
+ these hooks **project** that state into refusals at the agent's boundary,
16
+ where the kernel cannot reach (the kernel runs downstream of the tool
17
+ call).
18
+
19
+ ## The contract: every hook here exists because of an incident
20
+
21
+ This pack is not optional scaffolding. Every script under
22
+ `.claude/hooks/` traces to a specific entry in
23
+ `packages/caws-cli/docs-status/failure-lineage.md`. Modifying or removing
24
+ a hook requires:
25
+
26
+ 1. Naming the lineage entry the hook covers.
27
+ 2. Identifying the replacement mechanism that preserves the protection.
28
+ 3. Documenting the change in the same lineage doc.
29
+
30
+ Hooks may be **evolved** as the v11 state model evolves. They may not be
31
+ removed or weakened by an agent's local judgment. If you think a guard
32
+ is wrong, stop and ask the user.
33
+
34
+ ## Lineage map
35
+
36
+ | File | Lineage entries | What it prevents |
37
+ |------|----------------|------------------|
38
+ | `block-dangerous.sh` + `classify_command.py` | 1, 17 | catastrophic git operations; tokenized-argv bypasses; danger latch |
39
+ | `worktree-guard.sh` | 4, 6, 11 | amend/stash/reset/force-push during active worktrees; cross-boundary file copies |
40
+ | `worktree-write-guard.sh` | 4, 8, 13 | base-branch writes when worktrees are active (enforcement returns in CLI-WORKTREE-001); baseline-clobber |
41
+ | `scope-guard.sh` | 8, 11, 12, 16 | edits outside the active spec's `scope.in`; cross-spec union interference; unbound → no authority |
42
+ | `session-caws-status.sh` | 4, 11 | inherited-dirty-state collision; foreign-claim soft-block; version-skew |
43
+ | `reset-strikes.sh` | 8, 16 | human-authorized strike reset (escape hatch, not auto-resettable) |
44
+ | `reset-danger-latch.sh` | 17 | human-authorized danger latch reset |
45
+ | `guard-strikes.sh` | 8, 16 | progressive enforcement (strike 1 warn → strike 3 block) |
46
+ | `audit.sh` | 9 | per-tool-call audit log |
47
+ | `session-log.sh` | 10 | per-turn narrative + structured transcripts |
48
+ | `dispatch/*` | 8, 11, 17 | wires Claude Code's lifecycle to the registered handler list |
49
+ | `lib/*` | 8, 16 | shared input parsing and handler runner |
50
+
51
+ ## v11 state-model awareness
52
+
53
+ The v11 pack reads CAWS state under both v10 and v11 shapes during the
54
+ transition window:
55
+
56
+ - **Specs**: `lifecycle_state` is read first; `status` is the v10 fallback.
57
+ Terminal states (closed, archived, completed) are not enforced.
58
+ `draft` does NOT participate in union-wide blocking unless it is the
59
+ authoritative/bound spec.
60
+ - **Worktrees registry**: both v11 direct-key
61
+ (`{"<name>": {...}}`) and v10 nested
62
+ (`{"worktrees": {"<name>": {...}}}`) shapes are accepted.
63
+ - **Bound spec id**: both `entry.specId` (v10) and `entry.spec_id` (v11)
64
+ are accepted.
65
+
66
+ ## Version-skew warning
67
+
68
+ `session-caws-status.sh` emits a non-blocking WARNING when the global
69
+ `caws` binary's major version differs from the repo's `caws-cli` major
70
+ version. Hooks parse local state directly, but any CLI advice in
71
+ diagnostics may be invalid. Consider matching major versions:
72
+ `npm install -g @paths.design/caws-cli@^<repo-major>`.
73
+
74
+ ## Activation
75
+
76
+ Claude Code reads `.claude/settings.json` at session start. Installing
77
+ the pack mid-session does NOT activate it until the session is restarted.
78
+ `caws init --agent-surface claude-code` prints an activation instruction
79
+ saying so. Do not continue substantive work after install without
80
+ restarting first; the hooks you just installed are not yet enforcing.
81
+
82
+ ## settings.json wiring
83
+
84
+ The pack does NOT manage `.claude/settings.json` — that file commonly
85
+ carries user-authored `permissions` and `env` blocks that the pack
86
+ should not overwrite. If you do not have a `.claude/settings.json`, add
87
+ the following minimum configuration so the dispatch entrypoints fire on
88
+ the Claude Code lifecycle:
89
+
90
+ ```jsonc
91
+ {
92
+ "hooks": {
93
+ "PreToolUse": [
94
+ {
95
+ "matcher": "Bash|Read|Write|Edit|Glob|Grep|NotebookEdit",
96
+ "hooks": [
97
+ {
98
+ "type": "command",
99
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/dispatch/pre_tool_use.sh",
100
+ "timeout": 45
101
+ }
102
+ ]
103
+ }
104
+ ],
105
+ "PostToolUse": [
106
+ {
107
+ "matcher": "Write|Edit|Bash|ExitPlanMode",
108
+ "hooks": [
109
+ {
110
+ "type": "command",
111
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/dispatch/post_tool_use.sh",
112
+ "timeout": 60
113
+ }
114
+ ]
115
+ }
116
+ ],
117
+ "SessionStart": [
118
+ {
119
+ "hooks": [
120
+ {
121
+ "type": "command",
122
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/dispatch/session_start.sh",
123
+ "timeout": 30
124
+ }
125
+ ]
126
+ }
127
+ ],
128
+ "Stop": [
129
+ {
130
+ "hooks": [
131
+ {
132
+ "type": "command",
133
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/dispatch/stop.sh",
134
+ "timeout": 30
135
+ }
136
+ ]
137
+ }
138
+ ],
139
+ "PreCompact": [
140
+ {
141
+ "hooks": [
142
+ {
143
+ "type": "command",
144
+ "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-log.sh",
145
+ "timeout": 10
146
+ }
147
+ ]
148
+ }
149
+ ]
150
+ }
151
+ }
152
+ ```
153
+
154
+ ## Managed file headers
155
+
156
+ Every managed file in this pack carries a header like:
157
+
158
+ ```
159
+ # CAWS-MANAGED-HOOK
160
+ # hook_pack: claude-code
161
+ # hook_pack_version: <N>
162
+ # caws_min_major: 11
163
+ # lineage_refs: <comma-separated entries>
164
+ # do_not_edit_directly: update via `caws init --agent-surface claude-code`
165
+ ```
166
+
167
+ The header is what `caws init` uses to distinguish managed files (safe to
168
+ update on re-install under a documented policy) from local user files
169
+ (refused without explicit `--adopt` or `--overwrite`).
170
+
171
+ Removing or editing the header turns the file into an unmanaged
172
+ snowflake. Re-running install will then refuse to touch it — by design.
@@ -0,0 +1,121 @@
1
+ #!/bin/bash
2
+ # CAWS-MANAGED-HOOK
3
+ # hook_pack: claude-code
4
+ # hook_pack_version: 2
5
+ # caws_min_major: 11
6
+ # lineage_refs: 9
7
+ # do_not_edit_directly: update via `caws init --agent-surface claude-code`
8
+ # CAWS Audit Hook for Claude Code
9
+ # Logs agent actions for compliance and debugging
10
+ # @author @darianrosebrook
11
+
12
+ set -euo pipefail
13
+
14
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
+ # shellcheck source=lib/parse-input.sh
16
+ source "$SCRIPT_DIR/lib/parse-input.sh"
17
+
18
+ # --- CWD resilience ---
19
+ # PostToolUse hooks fire AFTER the command runs. If the command destroyed
20
+ # the working directory (e.g., caws worktree merge deletes the worktree),
21
+ # the hook process inherits a nonexistent CWD and most commands will fail.
22
+ # Recover to a safe directory before doing anything else.
23
+ if ! pwd >/dev/null 2>&1 || [ ! -d "$(pwd 2>/dev/null || echo __gone__)" ]; then
24
+ cd "${CLAUDE_PROJECT_DIR:-$HOME}" 2>/dev/null || cd "$HOME"
25
+ fi
26
+
27
+ parse_hook_input
28
+
29
+ # Get event type from argument or input
30
+ EVENT_TYPE="${1:-tool-use}"
31
+
32
+ # Back-compat aliases. HOOK_CWD can be "" when stdin lacks a cwd field;
33
+ # audit.sh always wants a non-empty placeholder so jq --arg stays happy.
34
+ SESSION_ID="$HOOK_SESSION_ID"
35
+ CWD="${HOOK_CWD:-.}"
36
+ HOOK_EVENT="${HOOK_EVENT_NAME:-unknown}"
37
+ TOOL_NAME="$HOOK_TOOL_NAME"
38
+ PERMISSION_MODE="$HOOK_PERMISSION_MODE"
39
+
40
+ # Ensure log directory exists
41
+ LOG_DIR="${CLAUDE_PROJECT_DIR:-.}/.claude/logs"
42
+ mkdir -p "$LOG_DIR"
43
+
44
+ # Log file path
45
+ LOG_FILE="$LOG_DIR/audit.log"
46
+ DATE_LOG_FILE="$LOG_DIR/audit-$(date +%Y-%m-%d).log"
47
+
48
+ # Timestamp
49
+ TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
50
+
51
+ # Build log entry based on event type
52
+ case "$EVENT_TYPE" in
53
+ session-start)
54
+ SOURCE="${HOOK_SOURCE:-unknown}"
55
+ MODEL="${HOOK_MODEL:-unknown}"
56
+ LOG_ENTRY=$(jq -n \
57
+ --arg ts "$TIMESTAMP" \
58
+ --arg sid "$SESSION_ID" \
59
+ --arg event "session_start" \
60
+ --arg source "$SOURCE" \
61
+ --arg model "$MODEL" \
62
+ --arg cwd "$CWD" \
63
+ '{timestamp: $ts, session_id: $sid, event: $event, source: $source, model: $model, cwd: $cwd}')
64
+ ;;
65
+
66
+ stop)
67
+ # HOOK_STOP_HOOK_ACTIVE is "0" or "1"; jq --argjson needs true/false.
68
+ if [[ "$HOOK_STOP_HOOK_ACTIVE" == "1" ]]; then
69
+ STOP_HOOK_ACTIVE="true"
70
+ else
71
+ STOP_HOOK_ACTIVE="false"
72
+ fi
73
+ LOG_ENTRY=$(jq -n \
74
+ --arg ts "$TIMESTAMP" \
75
+ --arg sid "$SESSION_ID" \
76
+ --arg event "session_stop" \
77
+ --arg cwd "$CWD" \
78
+ --argjson hook_active "$STOP_HOOK_ACTIVE" \
79
+ '{timestamp: $ts, session_id: $sid, event: $event, cwd: $cwd, stop_hook_active: $hook_active}')
80
+ ;;
81
+
82
+ tool-use)
83
+ # Tool-specific info lifted from HOOK_* env vars set by parse_hook_input.
84
+ # HOOK_TOOL_INPUT_JSON and HOOK_TOOL_RESPONSE_JSON are pre-serialized
85
+ # JSON strings, always valid (empty "{}" at minimum), so jq --argjson
86
+ # below never trips on missing fields.
87
+ TOOL_INPUT="$HOOK_TOOL_INPUT_JSON"
88
+ TOOL_RESPONSE="$HOOK_TOOL_RESPONSE_JSON"
89
+ TOOL_USE_ID="$HOOK_TOOL_USE_ID"
90
+ FILE_PATH="$HOOK_FILE_PATH"
91
+ COMMAND="$HOOK_COMMAND"
92
+
93
+ LOG_ENTRY=$(jq -n \
94
+ --arg ts "$TIMESTAMP" \
95
+ --arg sid "$SESSION_ID" \
96
+ --arg event "tool_use" \
97
+ --arg tool "$TOOL_NAME" \
98
+ --arg file "$FILE_PATH" \
99
+ --arg cmd "$COMMAND" \
100
+ --arg cwd "$CWD" \
101
+ --arg mode "$PERMISSION_MODE" \
102
+ '{timestamp: $ts, session_id: $sid, event: $event, tool: $tool, file: $file, command: $cmd, cwd: $cwd, permission_mode: $mode}')
103
+ ;;
104
+
105
+ *)
106
+ LOG_ENTRY=$(jq -n \
107
+ --arg ts "$TIMESTAMP" \
108
+ --arg sid "$SESSION_ID" \
109
+ --arg event "$EVENT_TYPE" \
110
+ --arg hook "$HOOK_EVENT" \
111
+ --arg cwd "$CWD" \
112
+ '{timestamp: $ts, session_id: $sid, event: $event, hook_event: $hook, cwd: $cwd}')
113
+ ;;
114
+ esac
115
+
116
+ # Append to log files
117
+ echo "$LOG_ENTRY" >> "$LOG_FILE"
118
+ echo "$LOG_ENTRY" >> "$DATE_LOG_FILE"
119
+
120
+ # Success - allow operation to continue
121
+ exit 0