@paths.design/caws-cli 11.1.6 → 11.1.7
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/README.md +1 -1
- 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 +59 -6
- package/dist/init/hook-packs/manifest-claude-code.js.map +1 -1
- package/dist/init/hook-packs/types.js +1 -1
- package/dist/init/hook-packs/types.js.map +1 -1
- package/dist/shell/commands/agents.d.ts +49 -0
- package/dist/shell/commands/agents.d.ts.map +1 -0
- package/dist/shell/commands/agents.js +577 -0
- package/dist/shell/commands/agents.js.map +1 -0
- package/dist/shell/commands/claim.d.ts.map +1 -1
- package/dist/shell/commands/claim.js +3 -4
- package/dist/shell/commands/claim.js.map +1 -1
- package/dist/shell/commands/status.d.ts +12 -0
- package/dist/shell/commands/status.d.ts.map +1 -1
- package/dist/shell/commands/status.js +236 -21
- package/dist/shell/commands/status.js.map +1 -1
- package/dist/shell/commands/worktree.d.ts +9 -0
- package/dist/shell/commands/worktree.d.ts.map +1 -1
- package/dist/shell/commands/worktree.js +302 -0
- package/dist/shell/commands/worktree.js.map +1 -1
- package/dist/shell/index.d.ts +4 -2
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +12 -1
- package/dist/shell/index.js.map +1 -1
- package/dist/shell/register.d.ts.map +1 -1
- package/dist/shell/register.js +150 -0
- package/dist/shell/register.js.map +1 -1
- package/dist/shell/render/status.d.ts +7 -1
- package/dist/shell/render/status.d.ts.map +1 -1
- package/dist/shell/render/status.js +72 -0
- package/dist/shell/render/status.js.map +1 -1
- package/dist/store/agents-store.d.ts.map +1 -1
- package/dist/store/agents-store.js +9 -0
- package/dist/store/agents-store.js.map +1 -1
- package/dist/store/apply-patch.d.ts.map +1 -1
- package/dist/store/apply-patch.js +15 -0
- package/dist/store/apply-patch.js.map +1 -1
- package/dist/store/doctor-snapshot.d.ts.map +1 -1
- package/dist/store/doctor-snapshot.js +143 -3
- package/dist/store/doctor-snapshot.js.map +1 -1
- package/dist/store/git-sparse-checkout.d.ts +25 -0
- package/dist/store/git-sparse-checkout.d.ts.map +1 -0
- package/dist/store/git-sparse-checkout.js +101 -0
- package/dist/store/git-sparse-checkout.js.map +1 -0
- package/dist/store/index.d.ts +2 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +10 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/leases-store.d.ts +89 -0
- package/dist/store/leases-store.d.ts.map +1 -0
- package/dist/store/leases-store.js +369 -0
- package/dist/store/leases-store.js.map +1 -0
- package/dist/store/lifecycle-transaction.d.ts.map +1 -1
- package/dist/store/lifecycle-transaction.js +34 -1
- package/dist/store/lifecycle-transaction.js.map +1 -1
- package/dist/store/rules.d.ts +21 -1
- package/dist/store/rules.d.ts.map +1 -1
- package/dist/store/rules.js +22 -0
- package/dist/store/rules.js.map +1 -1
- package/dist/store/types.d.ts +25 -1
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/worktrees-migration.d.ts +141 -0
- package/dist/store/worktrees-migration.d.ts.map +1 -0
- package/dist/store/worktrees-migration.js +356 -0
- package/dist/store/worktrees-migration.js.map +1 -0
- package/dist/store/worktrees-writer.d.ts.map +1 -1
- package/dist/store/worktrees-writer.js +37 -1
- package/dist/store/worktrees-writer.js.map +1 -1
- package/package.json +2 -2
- package/templates/hook-packs/claude-code/CLAUDE.md +5 -5
- package/templates/hook-packs/claude-code/agent-heartbeat.sh +131 -0
- package/templates/hook-packs/claude-code/agent-register.sh +62 -0
- package/templates/hook-packs/claude-code/agent-stop.sh +51 -0
- 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/dispatch/post_tool_use.sh +1 -1
- package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +11 -2
- package/templates/hook-packs/claude-code/dispatch/session_start.sh +6 -2
- package/templates/hook-packs/claude-code/dispatch/stop.sh +7 -2
- package/templates/hook-packs/claude-code/guard-strikes.sh +1 -1
- package/templates/hook-packs/claude-code/lib/parse-input.sh +1 -1
- package/templates/hook-packs/claude-code/lib/run-handlers.sh +1 -1
- 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/scope-guard.sh +1 -1
- package/templates/hook-packs/claude-code/session-caws-status.sh +7 -1
- package/templates/hook-packs/claude-code/session-log.sh +1 -1
- package/templates/hook-packs/claude-code/worktree-guard.sh +130 -4
- package/templates/hook-packs/claude-code/worktree-write-guard.sh +133 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-transaction.d.ts","sourceRoot":"","sources":["../../src/store/lifecycle-transaction.ts"],"names":[],"mappings":"AAuCA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAGd,KAAK,MAAM,EACX,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AASnC;uDACuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtD;;uEAEmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC;;oDAEgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC;8DAC0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAWD,uEAAuE;AACvE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,SAAS,YAAY,EAAE,CAAC;CAClD;AAED;;aAEa;AACb,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;sEAEsE;AACtE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,0BAA0B,GAClC,2BAA2B,GAC3B,yBAAyB,GACzB,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle-transaction.d.ts","sourceRoot":"","sources":["../../src/store/lifecycle-transaction.ts"],"names":[],"mappings":"AAuCA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAGd,KAAK,MAAM,EACX,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AASnC;uDACuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtD;;uEAEmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC;;oDAEgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC;8DAC0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAWD,uEAAuE;AACvE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,SAAS,YAAY,EAAE,CAAC;CAClD;AAED;;aAEa;AACb,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;sEAEsE;AACtE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,MAAM,0BAA0B,GAClC,2BAA2B,GAC3B,yBAAyB,GACzB,2BAA2B,CAAC;AAoJhC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,wBAAwB,GAC7B,MAAM,CAAC,0BAA0B,CAAC,CAiLpC"}
|
|
@@ -165,6 +165,28 @@ function buildRecoveryInstruction(plannedEvents, writesCompleted, rolledBack, ro
|
|
|
165
165
|
lines.push('Do NOT hand-author entries into events.jsonl.');
|
|
166
166
|
return lines.join('\n');
|
|
167
167
|
}
|
|
168
|
+
function readInjectedFault() {
|
|
169
|
+
const isTestEnv = process.env.NODE_ENV === 'test' ||
|
|
170
|
+
process.env.JEST_WORKER_ID !== undefined;
|
|
171
|
+
if (!isTestEnv)
|
|
172
|
+
return null;
|
|
173
|
+
const raw = process.env.CAWS_TEST_INJECT_LIFECYCLE_FAULT;
|
|
174
|
+
if (raw === undefined || raw.length === 0)
|
|
175
|
+
return null;
|
|
176
|
+
try {
|
|
177
|
+
const parsed = JSON.parse(raw);
|
|
178
|
+
if (typeof parsed.eventMatch !== 'string' || parsed.eventMatch.length === 0) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const cause = typeof parsed.cause === 'string' && parsed.cause.length > 0
|
|
182
|
+
? parsed.cause
|
|
183
|
+
: 'CAWS_TEST_INJECT_LIFECYCLE_FAULT';
|
|
184
|
+
return { eventMatch: parsed.eventMatch, cause };
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
168
190
|
/**
|
|
169
191
|
* Run a lifecycle transaction.
|
|
170
192
|
*
|
|
@@ -261,12 +283,23 @@ function runLifecycleTransaction(plan) {
|
|
|
261
283
|
}
|
|
262
284
|
// Step 4: append events through appendEvent (the SOLE v11 events
|
|
263
285
|
// writer). On any failure, attempt rollback.
|
|
286
|
+
//
|
|
287
|
+
// Test-only fault-injection seam (WORKTREE-MERGE-A2-FAULT-INJECTION-001):
|
|
288
|
+
// when CAWS_TEST_INJECT_LIFECYCLE_FAULT names an event matching the
|
|
289
|
+
// first planned event, simulate the event-append failure path so tests
|
|
290
|
+
// can assert composed-lifecycle honest-completion behavior. The seam
|
|
291
|
+
// is guarded by NODE_ENV/JEST_WORKER_ID; in production code paths,
|
|
292
|
+
// readInjectedFault() returns null regardless of the env var.
|
|
293
|
+
const injectedFault = readInjectedFault();
|
|
264
294
|
const appendedEvents = [];
|
|
265
295
|
for (let i = 0; i < plan.events.length; i++) {
|
|
266
296
|
const body = plan.events[i];
|
|
267
297
|
if (!body)
|
|
268
298
|
continue;
|
|
269
|
-
const
|
|
299
|
+
const shouldInject = injectedFault !== null && body.event === injectedFault.eventMatch;
|
|
300
|
+
const result = shouldInject
|
|
301
|
+
? (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LIFECYCLE_PARTIAL_FAILURE_UNRECOVERED, `Test fault-injection seam fired for event "${body.event}": ${injectedFault.cause}`, { subject: body.event, data: { injected_cause: injectedFault.cause } }))
|
|
302
|
+
: (0, events_store_1.appendEvent)(plan.cawsDir, body);
|
|
270
303
|
if (!result.ok) {
|
|
271
304
|
// Roll back all writes. Reverse order so latest writes are
|
|
272
305
|
// restored to their pre-transaction state first.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-transaction.js","sourceRoot":"","sources":["../../src/store/lifecycle-transaction.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,EAAE;AACF,mEAAmE;AACnE,sEAAsE;AACtE,sEAAsE;AACtE,mEAAmE;AACnE,sEAAsE;AACtE,kCAAkC;AAClC,EAAE;AACF,iDAAiD;AACjD,oEAAoE;AACpE,+BAA+B;AAC/B,oEAAoE;AACpE,gDAAgD;AAChD,iEAAiE;AACjE,gEAAgE;AAChE,wCAAwC;AACxC,uEAAuE;AACvE,mCAAmC;AACnC,oEAAoE;AACpE,yEAAyE;AACzE,yCAAyC;AACzC,EAAE;AACF,yBAAyB;AACzB,oEAAoE;AACpE,qEAAqE;AACrE,wEAAwE;AACxE,mEAAmE;AACnE,yEAAyE;AACzE,sEAAsE;AACtE,uEAAuE;AACvE,oEAAoE;AACpE,qEAAqE;AACrE,uEAAuE;AACvE,sEAAsE;AACtE,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"lifecycle-transaction.js","sourceRoot":"","sources":["../../src/store/lifecycle-transaction.ts"],"names":[],"mappings":"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"}
|
package/dist/store/rules.d.ts
CHANGED
|
@@ -63,7 +63,27 @@ export declare const STORE_RULES: {
|
|
|
63
63
|
readonly YAML_PATCH_AMBIGUOUS: "store.yaml_patch.ambiguous";
|
|
64
64
|
/** yaml-patch refused because the target key was not found in the document. */
|
|
65
65
|
readonly YAML_PATCH_KEY_NOT_FOUND: "store.yaml_patch.key_not_found";
|
|
66
|
+
/** Lease directory exists but is unreadable (permission denied, etc).
|
|
67
|
+
* Only failure mode for loadLeases — per-file failures are degraded
|
|
68
|
+
* to diagnostics inside an ok result. */
|
|
69
|
+
readonly LEASE_DIR_UNREADABLE: "store.leases.dir_unreadable";
|
|
70
|
+
/** Per-file lease load failure: JSON parse, not-an-object, filename/payload
|
|
71
|
+
* session_id mismatch, or unreadable file. The file is excluded from the
|
|
72
|
+
* returned registry but loadLeases still returns ok. */
|
|
73
|
+
readonly LEASE_FILE_MALFORMED: "store.leases.file_malformed";
|
|
74
|
+
/** Atomic lease write failed (directory creation, write, rename). */
|
|
75
|
+
readonly LEASE_WRITE_FAILED: "store.leases.write_failed";
|
|
76
|
+
/** session_id is empty, the literal 'unknown', or not a string. Refused
|
|
77
|
+
* at the I/O boundary by safeLeaseFilename. */
|
|
78
|
+
readonly LEASE_SESSION_ID_INVALID: "store.leases.session_id_invalid";
|
|
79
|
+
/** session_id contains characters outside the strict allowlist
|
|
80
|
+
* ^[A-Za-z0-9._:-]+$. Refused at the I/O boundary by safeLeaseFilename. */
|
|
81
|
+
readonly LEASE_SESSION_ID_UNSAFE: "store.leases.session_id_unsafe";
|
|
82
|
+
/** mark_stopped patch received but no prior lease exists for the session.
|
|
83
|
+
* Warning, not error — the store does NOT fabricate a historical record;
|
|
84
|
+
* the caller is told that the stop is a lifecycle mismatch no-op. */
|
|
85
|
+
readonly LEASE_STOP_NO_PRIOR_LEASE: "store.leases.stop_no_prior_lease";
|
|
66
86
|
};
|
|
67
87
|
export type StoreRule = (typeof STORE_RULES)[keyof typeof STORE_RULES];
|
|
68
|
-
export declare const STORE_RULE_PREFIXES: readonly ["store.repo_root.", "store.read.", "store.write.", "store.specs.", "store.waivers.", "store.registry.", "store.events.", "store.init."];
|
|
88
|
+
export declare const STORE_RULE_PREFIXES: readonly ["store.repo_root.", "store.read.", "store.write.", "store.specs.", "store.waivers.", "store.registry.", "store.events.", "store.init.", "store.leases."];
|
|
69
89
|
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/store/rules.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW;;;;IAOtB,+EAA+E;;;;IAI/E,0BAA0B;;IAE1B,0BAA0B;;;IAK1B,+EAA+E;;IAI/E,4EAA4E;;IAE5E,2EAA2E;;IAE3E,gDAAgD;;IAIhD,sEAAsE;;IAItE,8EAA8E;;IAE9E,kDAAkD;;IAElD,oDAAoD;;IAEpD,4CAA4C;;IAE5C,sEAAsE;;IAEtE,2DAA2D;;IAI3D,mEAAmE;;IAEnE,6EAA6E;;IAE7E,uEAAuE;;IAEvE,uEAAuE;;IAEvE,uEAAuE;;IAIvE,iEAAiE;;IAEjE,wEAAwE;;IAIxE,yEAAyE;;IAEzE,0EAA0E;;IAE1E,gFAAgF;;IAEhF,0EAA0E;;IAG1E;8EAC0E;;IAG1E;2DACuD;;IAEvD,+EAA+E;;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/store/rules.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW;;;;IAOtB,+EAA+E;;;;IAI/E,0BAA0B;;IAE1B,0BAA0B;;;IAK1B,+EAA+E;;IAI/E,4EAA4E;;IAE5E,2EAA2E;;IAE3E,gDAAgD;;IAIhD,sEAAsE;;IAItE,8EAA8E;;IAE9E,kDAAkD;;IAElD,oDAAoD;;IAEpD,4CAA4C;;IAE5C,sEAAsE;;IAEtE,2DAA2D;;IAI3D,mEAAmE;;IAEnE,6EAA6E;;IAE7E,uEAAuE;;IAEvE,uEAAuE;;IAEvE,uEAAuE;;IAIvE,iEAAiE;;IAEjE,wEAAwE;;IAIxE,yEAAyE;;IAEzE,0EAA0E;;IAE1E,gFAAgF;;IAEhF,0EAA0E;;IAG1E;8EAC0E;;IAG1E;2DACuD;;IAEvD,+EAA+E;;IAI/E;;8CAE0C;;IAE1C;;6DAEyD;;IAEzD,qEAAqE;;IAErE;oDACgD;;IAEhD;gFAC4E;;IAE5E;;0EAEsE;;CAE9D,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB,oKAUtB,CAAC"}
|
package/dist/store/rules.js
CHANGED
|
@@ -81,6 +81,27 @@ exports.STORE_RULES = {
|
|
|
81
81
|
YAML_PATCH_AMBIGUOUS: 'store.yaml_patch.ambiguous',
|
|
82
82
|
/** yaml-patch refused because the target key was not found in the document. */
|
|
83
83
|
YAML_PATCH_KEY_NOT_FOUND: 'store.yaml_patch.key_not_found',
|
|
84
|
+
// ---- leases (MULTI-AGENT-ACTIVITY-REGISTRY-001) -------------------------
|
|
85
|
+
/** Lease directory exists but is unreadable (permission denied, etc).
|
|
86
|
+
* Only failure mode for loadLeases — per-file failures are degraded
|
|
87
|
+
* to diagnostics inside an ok result. */
|
|
88
|
+
LEASE_DIR_UNREADABLE: 'store.leases.dir_unreadable',
|
|
89
|
+
/** Per-file lease load failure: JSON parse, not-an-object, filename/payload
|
|
90
|
+
* session_id mismatch, or unreadable file. The file is excluded from the
|
|
91
|
+
* returned registry but loadLeases still returns ok. */
|
|
92
|
+
LEASE_FILE_MALFORMED: 'store.leases.file_malformed',
|
|
93
|
+
/** Atomic lease write failed (directory creation, write, rename). */
|
|
94
|
+
LEASE_WRITE_FAILED: 'store.leases.write_failed',
|
|
95
|
+
/** session_id is empty, the literal 'unknown', or not a string. Refused
|
|
96
|
+
* at the I/O boundary by safeLeaseFilename. */
|
|
97
|
+
LEASE_SESSION_ID_INVALID: 'store.leases.session_id_invalid',
|
|
98
|
+
/** session_id contains characters outside the strict allowlist
|
|
99
|
+
* ^[A-Za-z0-9._:-]+$. Refused at the I/O boundary by safeLeaseFilename. */
|
|
100
|
+
LEASE_SESSION_ID_UNSAFE: 'store.leases.session_id_unsafe',
|
|
101
|
+
/** mark_stopped patch received but no prior lease exists for the session.
|
|
102
|
+
* Warning, not error — the store does NOT fabricate a historical record;
|
|
103
|
+
* the caller is told that the stop is a lifecycle mismatch no-op. */
|
|
104
|
+
LEASE_STOP_NO_PRIOR_LEASE: 'store.leases.stop_no_prior_lease',
|
|
84
105
|
};
|
|
85
106
|
exports.STORE_RULE_PREFIXES = [
|
|
86
107
|
'store.repo_root.',
|
|
@@ -91,5 +112,6 @@ exports.STORE_RULE_PREFIXES = [
|
|
|
91
112
|
'store.registry.',
|
|
92
113
|
'store.events.',
|
|
93
114
|
'store.init.',
|
|
115
|
+
'store.leases.',
|
|
94
116
|
];
|
|
95
117
|
//# sourceMappingURL=rules.js.map
|
package/dist/store/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/store/rules.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,wEAAwE;AACxE,wEAAwE;;;AAE3D,QAAA,WAAW,GAAG;IACzB,4EAA4E;IAC5E,wBAAwB,EAAE,gCAAgC;IAC1D,+BAA+B,EAAE,uCAAuC;IACxE,0BAA0B,EAAE,kCAAkC;IAE9D,6EAA6E;IAC7E,+EAA+E;IAC/E,iBAAiB,EAAE,yBAAyB;IAC5C,eAAe,EAAE,uBAAuB;IACxC,cAAc,EAAE,sBAAsB;IACtC,0BAA0B;IAC1B,iBAAiB,EAAE,yBAAyB;IAC5C,0BAA0B;IAC1B,iBAAiB,EAAE,yBAAyB;IAE5C,6EAA6E;IAC7E,eAAe,EAAE,uBAAuB;IACxC,+EAA+E;IAC/E,0BAA0B,EAAE,kCAAkC;IAE9D,6EAA6E;IAC7E,4EAA4E;IAC5E,kBAAkB,EAAE,0BAA0B;IAC9C,2EAA2E;IAC3E,sBAAsB,EAAE,8BAA8B;IACtD,gDAAgD;IAChD,kBAAkB,EAAE,0BAA0B;IAE9C,4EAA4E;IAC5E,sEAAsE;IACtE,mBAAmB,EAAE,2BAA2B;IAEhD,4EAA4E;IAC5E,8EAA8E;IAC9E,oBAAoB,EAAE,4BAA4B;IAClD,kDAAkD;IAClD,wBAAwB,EAAE,gCAAgC;IAC1D,oDAAoD;IACpD,oBAAoB,EAAE,4BAA4B;IAClD,4CAA4C;IAC5C,yBAAyB,EAAE,iCAAiC;IAC5D,sEAAsE;IACtE,sBAAsB,EAAE,8BAA8B;IACtD,2DAA2D;IAC3D,iBAAiB,EAAE,yBAAyB;IAE5C,4EAA4E;IAC5E,mEAAmE;IACnE,8BAA8B,EAAE,sCAAsC;IACtE,6EAA6E;IAC7E,4BAA4B,EAAE,oCAAoC;IAClE,uEAAuE;IACvE,0BAA0B,EAAE,kCAAkC;IAC9D,uEAAuE;IACvE,sBAAsB,EAAE,8BAA8B;IACtD,uEAAuE;IACvE,8BAA8B,EAAE,sCAAsC;IAEtE,4EAA4E;IAC5E,iEAAiE;IACjE,mBAAmB,EAAE,2BAA2B;IAChD,wEAAwE;IACxE,2BAA2B,EAAE,mCAAmC;IAEhE,2EAA2E;IAC3E,yEAAyE;IACzE,yBAAyB,EAAE,iCAAiC;IAC5D,0EAA0E;IAC1E,uBAAuB,EAAE,+BAA+B;IACxD,gFAAgF;IAChF,sBAAsB,EAAE,8BAA8B;IACtD,0EAA0E;IAC1E,mCAAmC,EACjC,2CAA2C;IAC7C;8EAC0E;IAC1E,qCAAqC,EACnC,6CAA6C;IAC/C;2DACuD;IACvD,oBAAoB,EAAE,4BAA4B;IAClD,+EAA+E;IAC/E,wBAAwB,EAAE,gCAAgC;
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/store/rules.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,wEAAwE;AACxE,wEAAwE;;;AAE3D,QAAA,WAAW,GAAG;IACzB,4EAA4E;IAC5E,wBAAwB,EAAE,gCAAgC;IAC1D,+BAA+B,EAAE,uCAAuC;IACxE,0BAA0B,EAAE,kCAAkC;IAE9D,6EAA6E;IAC7E,+EAA+E;IAC/E,iBAAiB,EAAE,yBAAyB;IAC5C,eAAe,EAAE,uBAAuB;IACxC,cAAc,EAAE,sBAAsB;IACtC,0BAA0B;IAC1B,iBAAiB,EAAE,yBAAyB;IAC5C,0BAA0B;IAC1B,iBAAiB,EAAE,yBAAyB;IAE5C,6EAA6E;IAC7E,eAAe,EAAE,uBAAuB;IACxC,+EAA+E;IAC/E,0BAA0B,EAAE,kCAAkC;IAE9D,6EAA6E;IAC7E,4EAA4E;IAC5E,kBAAkB,EAAE,0BAA0B;IAC9C,2EAA2E;IAC3E,sBAAsB,EAAE,8BAA8B;IACtD,gDAAgD;IAChD,kBAAkB,EAAE,0BAA0B;IAE9C,4EAA4E;IAC5E,sEAAsE;IACtE,mBAAmB,EAAE,2BAA2B;IAEhD,4EAA4E;IAC5E,8EAA8E;IAC9E,oBAAoB,EAAE,4BAA4B;IAClD,kDAAkD;IAClD,wBAAwB,EAAE,gCAAgC;IAC1D,oDAAoD;IACpD,oBAAoB,EAAE,4BAA4B;IAClD,4CAA4C;IAC5C,yBAAyB,EAAE,iCAAiC;IAC5D,sEAAsE;IACtE,sBAAsB,EAAE,8BAA8B;IACtD,2DAA2D;IAC3D,iBAAiB,EAAE,yBAAyB;IAE5C,4EAA4E;IAC5E,mEAAmE;IACnE,8BAA8B,EAAE,sCAAsC;IACtE,6EAA6E;IAC7E,4BAA4B,EAAE,oCAAoC;IAClE,uEAAuE;IACvE,0BAA0B,EAAE,kCAAkC;IAC9D,uEAAuE;IACvE,sBAAsB,EAAE,8BAA8B;IACtD,uEAAuE;IACvE,8BAA8B,EAAE,sCAAsC;IAEtE,4EAA4E;IAC5E,iEAAiE;IACjE,mBAAmB,EAAE,2BAA2B;IAChD,wEAAwE;IACxE,2BAA2B,EAAE,mCAAmC;IAEhE,2EAA2E;IAC3E,yEAAyE;IACzE,yBAAyB,EAAE,iCAAiC;IAC5D,0EAA0E;IAC1E,uBAAuB,EAAE,+BAA+B;IACxD,gFAAgF;IAChF,sBAAsB,EAAE,8BAA8B;IACtD,0EAA0E;IAC1E,mCAAmC,EACjC,2CAA2C;IAC7C;8EAC0E;IAC1E,qCAAqC,EACnC,6CAA6C;IAC/C;2DACuD;IACvD,oBAAoB,EAAE,4BAA4B;IAClD,+EAA+E;IAC/E,wBAAwB,EAAE,gCAAgC;IAE1D,4EAA4E;IAC5E;;8CAE0C;IAC1C,oBAAoB,EAAE,6BAA6B;IACnD;;6DAEyD;IACzD,oBAAoB,EAAE,6BAA6B;IACnD,qEAAqE;IACrE,kBAAkB,EAAE,2BAA2B;IAC/C;oDACgD;IAChD,wBAAwB,EAAE,iCAAiC;IAC3D;gFAC4E;IAC5E,uBAAuB,EAAE,gCAAgC;IACzD;;0EAEsE;IACtE,yBAAyB,EAAE,kCAAkC;CACrD,CAAC;AAIE,QAAA,mBAAmB,GAAG;IACjC,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,iBAAiB;IACjB,eAAe;IACf,aAAa;IACb,eAAe;CACP,CAAC"}
|
package/dist/store/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentRegistry, ChainedEvent, Diagnostic, Policy, Spec, Waiver, WorktreeRegistry } from '@paths.design/caws-kernel';
|
|
1
|
+
import type { AgentRegistry, ChainedEvent, Diagnostic, GitWorktreeEntry, Policy, Spec, Waiver, WorktreeRegistry } from '@paths.design/caws-kernel';
|
|
2
2
|
export interface SpecsLoadResult {
|
|
3
3
|
/** Specs that parsed AND validated. Safe to hand to the kernel. */
|
|
4
4
|
readonly specs: readonly Spec[];
|
|
@@ -63,6 +63,20 @@ export interface StoreSnapshot {
|
|
|
63
63
|
* to surface "canonical layout drift" (e.g. specs/ dir missing on a
|
|
64
64
|
* live project). `eventsJsonlExists` is reported but never required:
|
|
65
65
|
* the first append creates it under lock.
|
|
66
|
+
*
|
|
67
|
+
* `worktreeDirByName` (WORKTREE-DOCTOR-HALF-STATE-001): for each name
|
|
68
|
+
* in `worktrees`, whether the canonical worktree directory
|
|
69
|
+
* (`.caws/worktrees/<name>/`) exists on disk. Used by kernel H1
|
|
70
|
+
* detection (registry-scoped).
|
|
71
|
+
*
|
|
72
|
+
* `specClaimedWorktreeDirByName` (WORKTREE-DOCTOR-HALF-STATE-FOLLOWUP-001):
|
|
73
|
+
* for each name appearing in a loaded spec's `worktree:` field, whether
|
|
74
|
+
* the canonical worktree directory exists on disk. Used by kernel H4
|
|
75
|
+
* enrichment. Distinct from `worktreeDirByName` because H4's defining
|
|
76
|
+
* shape is "spec claims X, registry has no X" — so X is by
|
|
77
|
+
* construction NOT a key in the registry-keyed map. The store stats
|
|
78
|
+
* each unique spec-claimed name exactly once; multiple specs claiming
|
|
79
|
+
* the same name share one observation.
|
|
66
80
|
*/
|
|
67
81
|
readonly filesystem: {
|
|
68
82
|
readonly cawsDirExists: boolean;
|
|
@@ -72,7 +86,17 @@ export interface StoreSnapshot {
|
|
|
72
86
|
readonly worktreesJsonExists: boolean;
|
|
73
87
|
readonly agentsJsonExists: boolean;
|
|
74
88
|
readonly eventsJsonlExists: boolean;
|
|
89
|
+
readonly worktreeDirByName: Readonly<Record<string, boolean>>;
|
|
90
|
+
readonly specClaimedWorktreeDirByName: Readonly<Record<string, boolean>>;
|
|
75
91
|
};
|
|
92
|
+
/**
|
|
93
|
+
* WORKTREE-DOCTOR-HALF-STATE-001: linked git worktrees observed via
|
|
94
|
+
* `git worktree list --porcelain`. Main worktree filtered out before
|
|
95
|
+
* delivery. Undefined when observation failed; in that case
|
|
96
|
+
* `gitObservationFailure` carries the reason.
|
|
97
|
+
*/
|
|
98
|
+
readonly gitWorktrees?: readonly GitWorktreeEntry[];
|
|
99
|
+
readonly gitObservationFailure?: string;
|
|
76
100
|
/**
|
|
77
101
|
* Diagnostics from worktrees.json / agents.json load failures that
|
|
78
102
|
* the previous shape silently swallowed (the snapshot fell back to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,MAAM,EACN,IAAI,EACJ,MAAM,EACN,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAMnC,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAMD,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;IACzC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CACxC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAWD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,UAAU,EAAE,CAAC;IAChD,gCAAgC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,uDAAuD;IACvD,QAAQ,CAAC,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9C,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,SAAS,UAAU,EAAE,CAAC;IAUlD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;QAClC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;KACzC,CAAC;IAEF
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { type Diagnostic, type Result } from '@paths.design/caws-kernel';
|
|
2
|
+
export declare const MIGRATION_RULES: {
|
|
3
|
+
/** A10/A1: shape detection — file is in v10.2 envelope shape. */
|
|
4
|
+
readonly LEGACY_ENVELOPE_DETECTED: "store.worktrees_migration.legacy_envelope_detected";
|
|
5
|
+
/** A5: shape detection — ambiguous mix of envelope and flat-map structure. */
|
|
6
|
+
readonly MIXED_SHAPE_REFUSED: "store.worktrees_migration.mixed_shape_refused";
|
|
7
|
+
/** A4: at least one destroyed record blocks omission (spec claims it OR path present). */
|
|
8
|
+
readonly DESTROYED_RECORD_BLOCKS_OMISSION: "store.worktrees_migration.destroyed_record_blocks_omission";
|
|
9
|
+
/** A12: spec load failed in a way that makes the claim check unverifiable. */
|
|
10
|
+
readonly SPEC_LOAD_FAILED_POLICY_UNVERIFIABLE: "store.worktrees_migration.spec_load_failed_policy_unverifiable";
|
|
11
|
+
/** A6: file already in v11 flat-map shape; no-op. */
|
|
12
|
+
readonly ALREADY_MIGRATED: "store.worktrees_migration.already_migrated";
|
|
13
|
+
/** IO/parse error reading the file before classification. */
|
|
14
|
+
readonly READ_FAILED: "store.worktrees_migration.read_failed";
|
|
15
|
+
};
|
|
16
|
+
export type MigrationRule = (typeof MIGRATION_RULES)[keyof typeof MIGRATION_RULES];
|
|
17
|
+
export type RegistryShape = {
|
|
18
|
+
readonly kind: 'flat';
|
|
19
|
+
readonly recordCount: number;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'legacy_envelope';
|
|
22
|
+
readonly version: number;
|
|
23
|
+
readonly nestedRecordCount: number;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: 'mixed';
|
|
26
|
+
readonly reason: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: 'empty';
|
|
29
|
+
readonly reason: 'empty_object';
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Classify the raw .caws/worktrees.json bytes. Pure: no fs access.
|
|
33
|
+
*
|
|
34
|
+
* Recognized shapes:
|
|
35
|
+
* - `flat`: a JSON object with zero or more keys that are NOT
|
|
36
|
+
* `version` (number) AND NOT `worktrees` (object) — i.e., the
|
|
37
|
+
* v11 shape where each top-level key is a worktree name.
|
|
38
|
+
* - `legacy_envelope`: a JSON object whose keys are EXACTLY
|
|
39
|
+
* {version: number, worktrees: object}. No other top-level keys.
|
|
40
|
+
* - `mixed`: a JSON object that has BOTH legacy-envelope keys AND
|
|
41
|
+
* additional keys that look like flat-map records.
|
|
42
|
+
* - `empty`: a JSON object with zero keys (`{}`).
|
|
43
|
+
*
|
|
44
|
+
* A12-relevant note: the classifier does NOT need spec input. The
|
|
45
|
+
* spec-load policy check happens at the planner step.
|
|
46
|
+
*/
|
|
47
|
+
export declare function detectWorktreesRegistryShape(fileContents: string): Result<RegistryShape>;
|
|
48
|
+
/**
|
|
49
|
+
* One spec, narrowed to the fields the migration's policy check
|
|
50
|
+
* actually reads. Avoids depending on the full kernel Spec type for
|
|
51
|
+
* test fixtures.
|
|
52
|
+
*/
|
|
53
|
+
export interface MigrationSpecShape {
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly worktree?: string;
|
|
56
|
+
}
|
|
57
|
+
export type RecordOmissionDecision = {
|
|
58
|
+
readonly record: string;
|
|
59
|
+
readonly status?: string;
|
|
60
|
+
} & ({
|
|
61
|
+
readonly omit: false;
|
|
62
|
+
readonly reason: 'non_terminal' | 'spec_claims' | 'path_present';
|
|
63
|
+
readonly detail: {
|
|
64
|
+
readonly specId?: string;
|
|
65
|
+
readonly path?: string;
|
|
66
|
+
};
|
|
67
|
+
} | {
|
|
68
|
+
readonly omit: true;
|
|
69
|
+
readonly reason: 'destroyed_safe_to_omit';
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Apply the destroyed-record policy to each nested record. Pure: takes
|
|
73
|
+
* the parsed envelope, the loaded specs (just id + worktree?), and a
|
|
74
|
+
* path-existence callback.
|
|
75
|
+
*
|
|
76
|
+
* Policy (invariant 3 of WORKTREE-REGISTRY-LEGACY-ENVELOPE-MIGRATION-001):
|
|
77
|
+
*
|
|
78
|
+
* A record with status: "destroyed" MAY be omitted IFF BOTH:
|
|
79
|
+
* (a) No loaded spec has its `worktree:` field set to the
|
|
80
|
+
* record's key.
|
|
81
|
+
* (b) The record's `path` is undefined/null/empty OR the
|
|
82
|
+
* path does not exist on disk.
|
|
83
|
+
*
|
|
84
|
+
* Otherwise, the migration refuses (whole-file refusal, not
|
|
85
|
+
* partial migration).
|
|
86
|
+
*
|
|
87
|
+
* Non-terminal records (status missing or != "destroyed") are
|
|
88
|
+
* always preserved verbatim.
|
|
89
|
+
*/
|
|
90
|
+
export declare function classifyRecordsForMigration(nestedRecords: Record<string, unknown>, specs: readonly MigrationSpecShape[], pathExistsCheck: (path: string) => boolean): readonly RecordOmissionDecision[];
|
|
91
|
+
export type MigrationPlan = {
|
|
92
|
+
readonly kind: 'no_op';
|
|
93
|
+
readonly reason: 'already_flat';
|
|
94
|
+
readonly recordCount: number;
|
|
95
|
+
} | {
|
|
96
|
+
readonly kind: 'no_op';
|
|
97
|
+
readonly reason: 'empty_object';
|
|
98
|
+
} | {
|
|
99
|
+
readonly kind: 'apply';
|
|
100
|
+
readonly decisions: readonly RecordOmissionDecision[];
|
|
101
|
+
/** The bytes to write. Always JSON.stringify(flatMap, null, 2) + '\n'. */
|
|
102
|
+
readonly outputBytes: string;
|
|
103
|
+
/** Pre-migration nested-record count, for reporting. */
|
|
104
|
+
readonly inputRecordCount: number;
|
|
105
|
+
/** Post-migration record count after omissions. */
|
|
106
|
+
readonly outputRecordCount: number;
|
|
107
|
+
} | {
|
|
108
|
+
readonly kind: 'refuse';
|
|
109
|
+
readonly reason: 'destroyed_blocked' | 'mixed_shape' | 'spec_load_failed' | 'read_failed';
|
|
110
|
+
readonly diagnostic: Diagnostic;
|
|
111
|
+
/** Per-record decisions when refusal is policy-driven. Empty for shape-level refusals. */
|
|
112
|
+
readonly decisions?: readonly RecordOmissionDecision[];
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* A12 gate: detect the precise spec-load failure mode that makes the
|
|
116
|
+
* destroyed-record policy unverifiable. Returns true iff
|
|
117
|
+
* specs.length === 0 AND diagnostics contains READ_IO_FAILED.
|
|
118
|
+
* Other diagnostics (SPECS_NON_YAML_SKIPPED, SPECS_DUPLICATE_ID,
|
|
119
|
+
* SPECS_SPEC_INVALID) MUST NOT cause refusal — those do not make
|
|
120
|
+
* the spec universe unknowable.
|
|
121
|
+
*/
|
|
122
|
+
export declare function isSpecLoadVerifiable(specs: readonly MigrationSpecShape[], diagnostics: readonly Diagnostic[]): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Compose shape detection + record classification into a single plan.
|
|
125
|
+
*
|
|
126
|
+
* Refusal precedence (locked):
|
|
127
|
+
* 1. read_failed (JSON parse / non-object): shape-level refusal.
|
|
128
|
+
* 2. mixed_shape: shape-level refusal.
|
|
129
|
+
* 3. already_flat / empty_object: no_op.
|
|
130
|
+
* 4. legacy_envelope + spec-load unverifiable (A12): refuse.
|
|
131
|
+
* 5. legacy_envelope + any destroyed record blocks omission: refuse.
|
|
132
|
+
* 6. legacy_envelope clean: apply.
|
|
133
|
+
*
|
|
134
|
+
* Note: spec-load verifiability is checked ONLY when the file is in
|
|
135
|
+
* legacy_envelope shape AND at least one destroyed record exists. A
|
|
136
|
+
* legacy envelope with zero destroyed records has no claim check to
|
|
137
|
+
* verify, so a spec-load failure does not block migration. Per the
|
|
138
|
+
* audit, this preserves the narrow refusal posture.
|
|
139
|
+
*/
|
|
140
|
+
export declare function planMigration(fileContents: string, specs: readonly MigrationSpecShape[], specLoadDiagnostics: readonly Diagnostic[], pathExistsCheck: (path: string) => boolean): MigrationPlan;
|
|
141
|
+
//# sourceMappingURL=worktrees-migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktrees-migration.d.ts","sourceRoot":"","sources":["../../src/store/worktrees-migration.ts"],"names":[],"mappings":"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"}
|