@paths.design/caws-cli 11.1.7 → 11.1.8
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.
- package/dist/index.js +55 -58
- package/dist/init/hook-packs/manifest-claude-code.d.ts +1 -1
- package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -1
- package/dist/init/hook-packs/manifest-claude-code.js +260 -2
- package/dist/init/hook-packs/manifest-claude-code.js.map +1 -1
- package/dist/shell/binding/resolve-binding.d.ts.map +1 -1
- package/dist/shell/binding/resolve-binding.js +105 -1
- package/dist/shell/binding/resolve-binding.js.map +1 -1
- package/dist/shell/binding/types.d.ts +47 -3
- package/dist/shell/binding/types.d.ts.map +1 -1
- package/dist/shell/command-metadata.d.ts +93 -0
- package/dist/shell/command-metadata.d.ts.map +1 -0
- package/dist/shell/command-metadata.js +687 -0
- package/dist/shell/command-metadata.js.map +1 -0
- package/dist/shell/commands/agents.d.ts +1 -2
- package/dist/shell/commands/agents.d.ts.map +1 -1
- package/dist/shell/commands/claim.d.ts +16 -0
- package/dist/shell/commands/claim.d.ts.map +1 -1
- package/dist/shell/commands/claim.js +85 -26
- package/dist/shell/commands/claim.js.map +1 -1
- package/dist/shell/commands/events.d.ts +106 -0
- package/dist/shell/commands/events.d.ts.map +1 -0
- package/dist/shell/commands/events.js +510 -0
- package/dist/shell/commands/events.js.map +1 -0
- package/dist/shell/commands/gates.d.ts +2 -2
- package/dist/shell/commands/gates.d.ts.map +1 -1
- package/dist/shell/commands/gates.js +106 -25
- package/dist/shell/commands/gates.js.map +1 -1
- package/dist/shell/commands/init.d.ts.map +1 -1
- package/dist/shell/commands/init.js +26 -0
- package/dist/shell/commands/init.js.map +1 -1
- package/dist/shell/commands/prepush.d.ts +26 -0
- package/dist/shell/commands/prepush.d.ts.map +1 -0
- package/dist/shell/commands/prepush.js +373 -0
- package/dist/shell/commands/prepush.js.map +1 -0
- package/dist/shell/commands/scope.d.ts.map +1 -1
- package/dist/shell/commands/scope.js +31 -1
- package/dist/shell/commands/scope.js.map +1 -1
- package/dist/shell/commands/specs.d.ts +44 -3
- package/dist/shell/commands/specs.d.ts.map +1 -1
- package/dist/shell/commands/specs.js +411 -15
- package/dist/shell/commands/specs.js.map +1 -1
- package/dist/shell/commands/worktree.d.ts.map +1 -1
- package/dist/shell/commands/worktree.js +51 -1
- package/dist/shell/commands/worktree.js.map +1 -1
- package/dist/shell/gates/disposition.d.ts.map +1 -1
- package/dist/shell/gates/disposition.js +43 -2
- package/dist/shell/gates/disposition.js.map +1 -1
- package/dist/shell/index.d.ts +10 -4
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +22 -2
- package/dist/shell/index.js.map +1 -1
- package/dist/shell/legacy-command-map.js +832 -0
- package/dist/shell/push-range/classify-range.d.ts +99 -0
- package/dist/shell/push-range/classify-range.d.ts.map +1 -0
- package/dist/shell/push-range/classify-range.js +155 -0
- package/dist/shell/push-range/classify-range.js.map +1 -0
- package/dist/shell/push-range/scope-match.d.ts +13 -0
- package/dist/shell/push-range/scope-match.d.ts.map +1 -0
- package/dist/shell/push-range/scope-match.js +53 -0
- package/dist/shell/push-range/scope-match.js.map +1 -0
- package/dist/shell/register.d.ts.map +1 -1
- package/dist/shell/register.js +263 -228
- package/dist/shell/register.js.map +1 -1
- package/dist/shell/registered-command-groups.js +48 -0
- package/dist/shell/rules.d.ts +19 -0
- package/dist/shell/rules.d.ts.map +1 -1
- package/dist/shell/rules.js +27 -0
- package/dist/shell/rules.js.map +1 -1
- package/dist/shell/session/resolve-session.d.ts +29 -1
- package/dist/shell/session/resolve-session.d.ts.map +1 -1
- package/dist/shell/session/resolve-session.js +817 -11
- package/dist/shell/session/resolve-session.js.map +1 -1
- package/dist/shell/session/types.d.ts +127 -1
- package/dist/shell/session/types.d.ts.map +1 -1
- package/dist/shell/session/types.js +10 -4
- package/dist/shell/session/types.js.map +1 -1
- package/dist/store/doctor-snapshot.d.ts.map +1 -1
- package/dist/store/doctor-snapshot.js +26 -0
- package/dist/store/doctor-snapshot.js.map +1 -1
- package/dist/store/events-migration.d.ts +207 -0
- package/dist/store/events-migration.d.ts.map +1 -0
- package/dist/store/events-migration.js +358 -0
- package/dist/store/events-migration.js.map +1 -0
- package/dist/store/events-store.d.ts +47 -1
- package/dist/store/events-store.d.ts.map +1 -1
- package/dist/store/events-store.js +278 -0
- package/dist/store/events-store.js.map +1 -1
- package/dist/store/git-autocommit.d.ts +46 -0
- package/dist/store/git-autocommit.d.ts.map +1 -0
- package/dist/store/git-autocommit.js +198 -0
- package/dist/store/git-autocommit.js.map +1 -0
- package/dist/store/index.d.ts +4 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +7 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/leases-store.d.ts.map +1 -1
- package/dist/store/leases-store.js +58 -0
- package/dist/store/leases-store.js.map +1 -1
- package/dist/store/rules.d.ts +53 -0
- package/dist/store/rules.d.ts.map +1 -1
- package/dist/store/rules.js +54 -0
- package/dist/store/rules.js.map +1 -1
- package/dist/store/specs-migration.d.ts +128 -0
- package/dist/store/specs-migration.d.ts.map +1 -0
- package/dist/store/specs-migration.js +481 -0
- package/dist/store/specs-migration.js.map +1 -0
- package/dist/store/specs-store.d.ts.map +1 -1
- package/dist/store/specs-store.js +14 -2
- package/dist/store/specs-store.js.map +1 -1
- package/dist/store/specs-writer.d.ts +130 -3
- package/dist/store/specs-writer.d.ts.map +1 -1
- package/dist/store/specs-writer.js +941 -102
- package/dist/store/specs-writer.js.map +1 -1
- package/dist/store/types.d.ts +6 -0
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/waivers-store.d.ts.map +1 -1
- package/dist/store/waivers-store.js +8 -1
- package/dist/store/waivers-store.js.map +1 -1
- package/dist/store/worktrees-writer.d.ts +28 -0
- package/dist/store/worktrees-writer.d.ts.map +1 -1
- package/dist/store/worktrees-writer.js +110 -12
- package/dist/store/worktrees-writer.js.map +1 -1
- package/package.json +5 -2
- package/templates/hook-packs/claude-code/CLAUDE.md +7 -1
- package/templates/hook-packs/claude-code/agent-heartbeat.sh +1 -1
- package/templates/hook-packs/claude-code/agent-register.sh +1 -1
- package/templates/hook-packs/claude-code/agent-stop.sh +1 -1
- package/templates/hook-packs/claude-code/audit.sh +1 -1
- package/templates/hook-packs/claude-code/block-dangerous.sh +1 -1
- package/templates/hook-packs/claude-code/classify_command.py +1 -1
- package/templates/hook-packs/claude-code/cwd-guard.sh +30 -0
- package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +15 -4
- package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +10 -2
- package/templates/hook-packs/claude-code/dispatch/session_start.sh +1 -1
- package/templates/hook-packs/claude-code/dispatch/stop.sh +2 -2
- package/templates/hook-packs/claude-code/duplicate-export-check.sh +156 -0
- package/templates/hook-packs/claude-code/god-object-check.sh +102 -0
- package/templates/hook-packs/claude-code/guard-strikes.sh +1 -1
- package/templates/hook-packs/claude-code/lib/parse-input.sh +115 -1
- package/templates/hook-packs/claude-code/lib/run-handlers.sh +1 -1
- package/templates/hook-packs/claude-code/loc-delta-check.sh +91 -0
- package/templates/hook-packs/claude-code/naming-check.sh +128 -0
- package/templates/hook-packs/claude-code/plan-transcript-finalize.sh +59 -0
- package/templates/hook-packs/claude-code/plan-transcript-snapshot.sh +86 -0
- package/templates/hook-packs/claude-code/protected-paths.sh +59 -0
- package/templates/hook-packs/claude-code/quiet-merge.sh +68 -0
- package/templates/hook-packs/claude-code/reset-danger-latch.sh +1 -1
- package/templates/hook-packs/claude-code/reset-strikes.sh +1 -1
- package/templates/hook-packs/claude-code/runtime-paths.sh +1 -1
- package/templates/hook-packs/claude-code/scan-secrets.sh +98 -0
- package/templates/hook-packs/claude-code/scope-guard.sh +47 -65
- package/templates/hook-packs/claude-code/session-caws-status.sh +1 -1
- package/templates/hook-packs/claude-code/session-log.sh +1 -1
- package/templates/hook-packs/claude-code/session_log_renderer.py +956 -0
- package/templates/hook-packs/claude-code/shortcut-language-check.sh +147 -0
- package/templates/hook-packs/claude-code/worktree-guard.sh +1 -1
- package/templates/hook-packs/claude-code/worktree-write-guard.sh +1 -1
|
@@ -6,19 +6,36 @@
|
|
|
6
6
|
// 2. composeStoreSnapshot — we need the policy
|
|
7
7
|
// 3. policy presence check — gates cannot run without policy
|
|
8
8
|
// 4. resolveSession({ allowMint: true }) — we will append events
|
|
9
|
-
// 5.
|
|
9
|
+
// 5. build external report — production is empty; tests may inject
|
|
10
|
+
// a legacy quality-gates-compatible report through `runner`
|
|
10
11
|
// 6. deriveDispositions(report, policy) — policy decides block/warn/skip
|
|
11
|
-
//
|
|
12
|
+
// 6c. zero-disposition guard — refuse to "succeed" with no evidence
|
|
13
|
+
// 7. For each disposition, appendEvent(`gate_evaluated`); per-gate isolation —
|
|
14
|
+
// one append failure does NOT abort the loop, subsequent gates are still
|
|
15
|
+
// attempted so partial evidence is captured.
|
|
12
16
|
// 8. Render summary
|
|
13
17
|
// 9. Exit code:
|
|
14
|
-
// 0 if no disposition blocks
|
|
15
|
-
// 1 if any disposition blocks
|
|
18
|
+
// 0 if no disposition blocks AND every gate's evidence was durably appended
|
|
19
|
+
// 1 if any disposition blocks AND every gate's evidence was durably appended
|
|
16
20
|
// 2 on hard composition errors (no policy, subprocess contract failure,
|
|
17
|
-
//
|
|
21
|
+
// spec not found, session resolution failure)
|
|
22
|
+
// 3 on evidence-integrity failure: any gate's gate_evaluated event was
|
|
23
|
+
// rejected by the store (schema violation, lock contention, I/O failure)
|
|
24
|
+
// OR zero gates were dispositioned (no evidence ever appended). Exit 3
|
|
25
|
+
// is distinct from exit 1 so CI can distinguish "policy said block" from
|
|
26
|
+
// "evidence was lost" — both are non-zero, but only one means the
|
|
27
|
+
// coverage signal itself is suspect.
|
|
18
28
|
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
29
|
+
// Policy owns blocking. External reports, when injected by tests, only report
|
|
30
|
+
// violations; this command groups them per policy-declared gate and applies
|
|
31
|
+
// policy.gates[gate].mode to compute outcome. Production no longer spawns the
|
|
32
|
+
// deprecated quality-gates package.
|
|
33
|
+
//
|
|
34
|
+
// CAWS-GATES-RUN-ABORT-ON-CORRUPT-CHAIN-001: prior to this slice the append
|
|
35
|
+
// loop fail-fast'd on first failure and returned 2; that masked sibling gates'
|
|
36
|
+
// outcomes and conflated evidence-integrity with composition failure. The
|
|
37
|
+
// zero-disposition guard was absent entirely — a run with no policy-declared
|
|
38
|
+
// known-gate intersections silently exited 0 with no audit trail.
|
|
22
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
40
|
exports.runGatesRunCommand = runGatesRunCommand;
|
|
24
41
|
const store_1 = require("../../store");
|
|
@@ -32,6 +49,16 @@ const local_evaluators_1 = require("../gates/local-evaluators");
|
|
|
32
49
|
const quality_gates_adapter_1 = require("../gates/quality-gates-adapter");
|
|
33
50
|
const waiver_filter_1 = require("../gates/waiver-filter");
|
|
34
51
|
const MAX_EVENT_VIOLATIONS = 100;
|
|
52
|
+
/** Exit code reserved for evidence-integrity failures (see file header §9). */
|
|
53
|
+
const EXIT_EVIDENCE_INTEGRITY = 3;
|
|
54
|
+
/**
|
|
55
|
+
* Inline rule strings for diagnostics this command owns. These are kept
|
|
56
|
+
* here rather than added to SHELL_RULES because shell/rules.ts is outside
|
|
57
|
+
* this slice's scope.in; the strings are still typed (string literal),
|
|
58
|
+
* still grep-able, and still propagated verbatim to stderr.
|
|
59
|
+
*/
|
|
60
|
+
const GATES_NO_DISPOSITIONS_RULE = 'shell.gates.no_dispositions';
|
|
61
|
+
const GATES_EVIDENCE_LOST_RULE = 'shell.gates.evidence_lost';
|
|
35
62
|
function dispositionToEventBody(args) {
|
|
36
63
|
const violations = args.disposition.violations
|
|
37
64
|
.slice(0, MAX_EVENT_VIOLATIONS)
|
|
@@ -121,21 +148,36 @@ function runGatesRunCommand(request, opts = {}) {
|
|
|
121
148
|
session: sessionResult.value,
|
|
122
149
|
kind: 'agent',
|
|
123
150
|
});
|
|
124
|
-
// 5.
|
|
125
|
-
|
|
126
|
-
|
|
151
|
+
// 5. External report ingestion.
|
|
152
|
+
//
|
|
153
|
+
// GATES-RUN-POST-QG-DOCTRINE-001 chooses Option B (transition): keep
|
|
154
|
+
// `caws gates run` as the governed policy/event surface, but stop spawning
|
|
155
|
+
// the deprecated quality-gates package in production. Tests may still inject
|
|
156
|
+
// a legacy quality-gates-compatible runner so the JSON contract and aliasing
|
|
157
|
+
// behavior remain covered while downstream code is simplified in follow-up
|
|
158
|
+
// removal slices.
|
|
159
|
+
let report = {
|
|
160
|
+
timestamp: now.toISOString(),
|
|
161
|
+
context: 'cli',
|
|
162
|
+
files_scoped: 0,
|
|
163
|
+
warnings: [],
|
|
164
|
+
violations: [],
|
|
127
165
|
};
|
|
128
|
-
if (opts.runner !== undefined)
|
|
129
|
-
runOpts
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
166
|
+
if (opts.runner !== undefined) {
|
|
167
|
+
const runOpts = {
|
|
168
|
+
cwd: repoRoot,
|
|
169
|
+
runner: opts.runner,
|
|
170
|
+
};
|
|
171
|
+
if (opts.subprocessArgs !== undefined)
|
|
172
|
+
runOpts.args = opts.subprocessArgs;
|
|
173
|
+
const reportResult = (0, quality_gates_adapter_1.runQualityGates)(runOpts);
|
|
174
|
+
if (!reportResult.ok) {
|
|
175
|
+
err('caws gates run: quality-gates report contract failure.');
|
|
176
|
+
err((0, diagnostic_1.renderDiagnostics)(reportResult.errors, { showData }));
|
|
177
|
+
return 2;
|
|
178
|
+
}
|
|
179
|
+
report = reportResult.value;
|
|
137
180
|
}
|
|
138
|
-
const report = reportResult.value;
|
|
139
181
|
// 5b. Local CAWS policy evaluators. These produce violations under
|
|
140
182
|
// canonical policy gate IDs (budget_limit, scope_boundary,
|
|
141
183
|
// spec_completeness) that the subprocess does not emit. Locating
|
|
@@ -180,9 +222,33 @@ function runGatesRunCommand(request, opts = {}) {
|
|
|
180
222
|
});
|
|
181
223
|
// 6b. Policy-driven disposition on UNWAIVED violations only.
|
|
182
224
|
const dispositionResult = (0, disposition_1.deriveDispositions)(waiverFilter.reportForDisposition, policy);
|
|
225
|
+
// 6c. Zero-disposition guard. A "run" that emits zero gate_evaluated
|
|
226
|
+
// events is a silent CI false-green: the dashboard goes green with
|
|
227
|
+
// no evidence that any gate was actually evaluated. Refuse before
|
|
228
|
+
// reaching the (empty) append loop. This catches the case where
|
|
229
|
+
// policy.gates intersects KNOWN_GATE_IDS only with `enabled: false`
|
|
230
|
+
// gates, or where the policy declares no gates that the disposition
|
|
231
|
+
// module recognizes.
|
|
232
|
+
if (dispositionResult.dispositions.length === 0) {
|
|
233
|
+
err(`caws gates run: no policy-declared gates were dispositioned — ` +
|
|
234
|
+
`zero gate_evaluated events would be appended. A run with no ` +
|
|
235
|
+
`evidence is treated as evidence-integrity failure, not success.`);
|
|
236
|
+
err(`(rule: ${GATES_NO_DISPOSITIONS_RULE})`);
|
|
237
|
+
return EXIT_EVIDENCE_INTEGRITY;
|
|
238
|
+
}
|
|
183
239
|
// 7. Append one gate_evaluated event per policy-declared gate.
|
|
184
|
-
//
|
|
240
|
+
//
|
|
241
|
+
// Per-gate isolation: a failure to append for one gate MUST NOT abort
|
|
242
|
+
// the loop. Subsequent gates are still attempted so partial evidence
|
|
243
|
+
// is captured and operators can see which gates' evidence survived.
|
|
244
|
+
// At the end of the loop, if ANY gate's append failed, the command
|
|
245
|
+
// exits 3 (evidence integrity) with a summary listing every lost
|
|
246
|
+
// gate. This is the fix for the silent-success class: prior behavior
|
|
247
|
+
// fail-fast'd on first failure and returned 2, which conflated
|
|
248
|
+
// evidence-integrity failure with composition failure and (worse)
|
|
249
|
+
// hid subsequent gates' outcomes.
|
|
185
250
|
const ts = now.toISOString();
|
|
251
|
+
const lostEvidenceGates = [];
|
|
186
252
|
for (const d of dispositionResult.dispositions) {
|
|
187
253
|
const body = dispositionToEventBody({
|
|
188
254
|
disposition: d,
|
|
@@ -197,12 +263,27 @@ function runGatesRunCommand(request, opts = {}) {
|
|
|
197
263
|
if (!append.ok) {
|
|
198
264
|
err(`caws gates run: failed to append gate_evaluated event for ${d.gate_id}.`);
|
|
199
265
|
err((0, diagnostic_1.renderDiagnostics)(append.errors, { showData }));
|
|
200
|
-
|
|
266
|
+
lostEvidenceGates.push({ gateId: d.gate_id, errors: append.errors });
|
|
267
|
+
// Per-gate isolation: continue the loop, do NOT early-return.
|
|
201
268
|
}
|
|
202
269
|
}
|
|
203
|
-
// 8. Render summary
|
|
270
|
+
// 8. Render summary (always — partial evidence is still operator-useful).
|
|
204
271
|
out((0, gates_1.renderGatesRun)(dispositionResult));
|
|
205
|
-
// 9. Exit
|
|
272
|
+
// 9. Exit code, in priority order:
|
|
273
|
+
// - exit 3 if any gate's evidence was lost (evidence integrity beats
|
|
274
|
+
// policy disposition; a green-looking policy decision over a chain
|
|
275
|
+
// with holes is worse than a clean fail).
|
|
276
|
+
// - exit 1 if any disposition blocks (policy fail).
|
|
277
|
+
// - exit 0 otherwise (all gates appended, no policy block).
|
|
278
|
+
if (lostEvidenceGates.length > 0) {
|
|
279
|
+
const lostIds = lostEvidenceGates.map((e) => e.gateId).join(', ');
|
|
280
|
+
err(`caws gates run: evidence-integrity failure — ` +
|
|
281
|
+
`${lostEvidenceGates.length} of ${dispositionResult.dispositions.length} ` +
|
|
282
|
+
`gate_evaluated events were rejected by the events store. ` +
|
|
283
|
+
`Gates with lost evidence: ${lostIds}. Per-gate diagnostics above.`);
|
|
284
|
+
err(`(rule: ${GATES_EVIDENCE_LOST_RULE})`);
|
|
285
|
+
return EXIT_EVIDENCE_INTEGRITY;
|
|
286
|
+
}
|
|
206
287
|
return dispositionResult.anyBlocks ? 1 : 0;
|
|
207
288
|
}
|
|
208
289
|
//# sourceMappingURL=gates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../../src/shell/commands/gates.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,EAAE;AACF,YAAY;AACZ,4BAA4B;AAC5B,+DAA+D;AAC/D,4EAA4E;AAC5E,mEAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../../src/shell/commands/gates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,6BAA6B,CAAC;AAuBrC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,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;gCAC4B;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;wCACoC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AA0ED,wBAAgB,cAAc,CAAC,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAqHpE"}
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
// policy invalid
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
exports.runInitCommand = runInitCommand;
|
|
29
|
+
const child_process_1 = require("child_process");
|
|
29
30
|
const harness_detect_1 = require("../../init/harness-detect");
|
|
30
31
|
const hook_install_1 = require("../../init/hook-install");
|
|
31
32
|
const register_1 = require("../../init/hook-packs/register");
|
|
@@ -33,6 +34,19 @@ const store_1 = require("../../store");
|
|
|
33
34
|
const diagnostic_1 = require("../render/diagnostic");
|
|
34
35
|
const init_1 = require("../render/init");
|
|
35
36
|
const init_hook_pack_1 = require("../render/init-hook-pack");
|
|
37
|
+
function isInsideGitWorkingTree(cwd) {
|
|
38
|
+
try {
|
|
39
|
+
const r = (0, child_process_1.execFileSync)('git', ['rev-parse', '--is-inside-work-tree'], {
|
|
40
|
+
cwd,
|
|
41
|
+
encoding: 'utf8',
|
|
42
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
43
|
+
});
|
|
44
|
+
return r.trim() === 'true';
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
36
50
|
function chooseSurface(explicit, detection) {
|
|
37
51
|
if (explicit !== undefined) {
|
|
38
52
|
return { surface: explicit, reason: 'explicit' };
|
|
@@ -160,6 +174,18 @@ function runInitCommand(opts = {}) {
|
|
|
160
174
|
// becomes a constant STOP sign on re-runs, training agents to ignore
|
|
161
175
|
// it.
|
|
162
176
|
out((0, init_hook_pack_1.renderActivationContract)(hookPackResult, wiringStatus));
|
|
177
|
+
// Step 5: first-contact commit hint. When .caws/ was newly created
|
|
178
|
+
// (not 'already_initialized') AND the cwd is a real git working tree,
|
|
179
|
+
// emit a one-line next-step pointing the user at the commit they need
|
|
180
|
+
// to run to persist governance state. Without this hint, users miss
|
|
181
|
+
// that .caws/ is untracked and lose state on branch switches.
|
|
182
|
+
// Outside a git working tree, the hint would be misleading — skip it.
|
|
183
|
+
if (result.value.outcome === 'created' &&
|
|
184
|
+
isInsideGitWorkingTree(repoRoot)) {
|
|
185
|
+
out('');
|
|
186
|
+
out('Next: stage and commit the .caws/ directory to persist governance state:');
|
|
187
|
+
out(' git add .caws/ && git commit -m "chore: add caws governance state"');
|
|
188
|
+
}
|
|
163
189
|
// Exit code: refusal in pack install → 1 so callers see something went
|
|
164
190
|
// wrong; otherwise 0.
|
|
165
191
|
const anyRefused = hookPackResult.actions.some((a) => a.action === 'refused');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,8DAA8D;AAC9D,EAAE;AACF,YAAY;AACZ,gEAAgE;AAChE,2EAA2E;AAC3E,yDAAyD;AACzD,4EAA4E;AAC5E,yDAAyD;AACzD,yDAAyD;AACzD,yDAAyD;AACzD,EAAE;AACF,uEAAuE;AACvE,mEAAmE;AACnE,gEAAgE;AAChE,gCAAgC;AAChC,EAAE;AACF,cAAc;AACd,qEAAqE;AACrE,gDAAgD;AAChD,qDAAqD;AACrD,uEAAuE;AACvE,gCAAgC;AAChC,kEAAkE;AAClE,uBAAuB;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Injectable git runner: (args, cwd) -> stdout. Throws on non-zero. */
|
|
2
|
+
export type GitRunner = (args: readonly string[], cwd: string) => string;
|
|
3
|
+
export interface PrepushCommandOptions {
|
|
4
|
+
readonly cwd?: string;
|
|
5
|
+
/** Default 'origin'. */
|
|
6
|
+
readonly remote?: string;
|
|
7
|
+
/** Default 'main'. */
|
|
8
|
+
readonly branch?: string;
|
|
9
|
+
/** Explicit base ref override; defaults to `<remote>/<branch>`. */
|
|
10
|
+
readonly base?: string;
|
|
11
|
+
/** SHAs the operator acknowledges (repeatable --ack). */
|
|
12
|
+
readonly ack?: readonly string[];
|
|
13
|
+
/** The current session's active spec id (for current-slice-match). */
|
|
14
|
+
readonly specId?: string;
|
|
15
|
+
readonly out?: (line: string) => void;
|
|
16
|
+
readonly err?: (line: string) => void;
|
|
17
|
+
/** Injectable git runner for tests. */
|
|
18
|
+
readonly git?: GitRunner;
|
|
19
|
+
readonly showData?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run the prepush guard. Returns 0 on clean pass, 1 on refusal, 2 on a
|
|
23
|
+
* setup/composition error.
|
|
24
|
+
*/
|
|
25
|
+
export declare function runPrepushCommand(opts: PrepushCommandOptions): number;
|
|
26
|
+
//# sourceMappingURL=prepush.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepush.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/prepush.ts"],"names":[],"mappings":"AA6BA,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AASzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,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,uCAAuC;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAmOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAyJrE"}
|