@paths.design/caws-cli 11.1.6 → 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/README.md +1 -1
- 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 +317 -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/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 +48 -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 +16 -0
- package/dist/shell/commands/claim.d.ts.map +1 -1
- package/dist/shell/commands/claim.js +88 -30
- 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/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 +353 -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 +14 -6
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +32 -1
- 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 +350 -165
- package/dist/shell/register.js.map +1 -1
- package/dist/shell/registered-command-groups.js +48 -0
- 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/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/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 +169 -3
- 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/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 +6 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +16 -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 +427 -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 +74 -1
- package/dist/store/rules.d.ts.map +1 -1
- package/dist/store/rules.js +76 -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 +31 -1
- 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-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 +28 -0
- package/dist/store/worktrees-writer.d.ts.map +1 -1
- package/dist/store/worktrees-writer.js +147 -13
- package/dist/store/worktrees-writer.js.map +1 -1
- package/package.json +5 -2
- package/templates/hook-packs/claude-code/CLAUDE.md +11 -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/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 +19 -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/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 +7 -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 +130 -4
- package/templates/hook-packs/claude-code/worktree-write-guard.sh +133 -18
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Agent-lease store — the SOLE I/O surface for .caws/leases/.
|
|
3
|
+
//
|
|
4
|
+
// MULTI-AGENT-ACTIVITY-REGISTRY-001 acceptance A5–A8, A12.
|
|
5
|
+
//
|
|
6
|
+
// Architectural separation (load-bearing — see spec invariant 2):
|
|
7
|
+
//
|
|
8
|
+
// - This module owns ALL lease I/O. apply-patch.ts is NOT extended to
|
|
9
|
+
// handle LeasePatch. Lease writes never flow through applyRegistryPatch.
|
|
10
|
+
// Routing lease writes through the governance apply path would re-merge
|
|
11
|
+
// the operational-cache / governance-state boundary this slice exists
|
|
12
|
+
// to preserve.
|
|
13
|
+
//
|
|
14
|
+
// - Lease writes are NEVER inside lifecycle-transaction. They never block
|
|
15
|
+
// work, never corrupt governance state, and a write failure is warn-
|
|
16
|
+
// and-continue (per doctrine §6 invariant 11).
|
|
17
|
+
//
|
|
18
|
+
// - Lease writes NEVER append events.jsonl (per doctrine §6 invariant 10).
|
|
19
|
+
// Events are durable governance facts; leases are operational cache.
|
|
20
|
+
//
|
|
21
|
+
// - loadLeases is LENIENT per file. A single malformed lease file
|
|
22
|
+
// produces a diagnostic and is excluded from the returned registry;
|
|
23
|
+
// the call still returns ok. Only an unreadable lease directory
|
|
24
|
+
// causes the call to fail.
|
|
25
|
+
//
|
|
26
|
+
// - safeLeaseFilename enforces a strict character allowlist
|
|
27
|
+
// (^[A-Za-z0-9._:-]+$) at the I/O boundary. The kernel constructs
|
|
28
|
+
// records; the store decides what is filesystem-safe. The literal
|
|
29
|
+
// 'unknown' is REFUSED (would collide across all anonymous sessions).
|
|
30
|
+
//
|
|
31
|
+
// - mark_stopped against a missing lease is a warn no-op, NOT a
|
|
32
|
+
// fabricated record. Stopping a session we never registered is
|
|
33
|
+
// evidence of a lifecycle mismatch, not a write opportunity.
|
|
34
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
35
|
+
if (k2 === undefined) k2 = k;
|
|
36
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
37
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
38
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
39
|
+
}
|
|
40
|
+
Object.defineProperty(o, k2, desc);
|
|
41
|
+
}) : (function(o, m, k, k2) {
|
|
42
|
+
if (k2 === undefined) k2 = k;
|
|
43
|
+
o[k2] = m[k];
|
|
44
|
+
}));
|
|
45
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
46
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
47
|
+
}) : function(o, v) {
|
|
48
|
+
o["default"] = v;
|
|
49
|
+
});
|
|
50
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
51
|
+
var ownKeys = function(o) {
|
|
52
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
53
|
+
var ar = [];
|
|
54
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
55
|
+
return ar;
|
|
56
|
+
};
|
|
57
|
+
return ownKeys(o);
|
|
58
|
+
};
|
|
59
|
+
return function (mod) {
|
|
60
|
+
if (mod && mod.__esModule) return mod;
|
|
61
|
+
var result = {};
|
|
62
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
63
|
+
__setModuleDefault(result, mod);
|
|
64
|
+
return result;
|
|
65
|
+
};
|
|
66
|
+
})();
|
|
67
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
68
|
+
exports.safeLeaseFilename = safeLeaseFilename;
|
|
69
|
+
exports.loadLeases = loadLeases;
|
|
70
|
+
exports.applyLeasePatch = applyLeasePatch;
|
|
71
|
+
exports.applyLeasePatches = applyLeasePatches;
|
|
72
|
+
exports.pruneLeasesByStatus = pruneLeasesByStatus;
|
|
73
|
+
const fs = __importStar(require("node:fs"));
|
|
74
|
+
const path = __importStar(require("node:path"));
|
|
75
|
+
const caws_kernel_1 = require("@paths.design/caws-kernel");
|
|
76
|
+
const atomic_write_1 = require("./atomic-write");
|
|
77
|
+
const repo_root_1 = require("./repo-root");
|
|
78
|
+
const rules_1 = require("./rules");
|
|
79
|
+
const LEASES_DIRNAME = 'leases';
|
|
80
|
+
/**
|
|
81
|
+
* Strict-allowlist regex for lease filenames.
|
|
82
|
+
*
|
|
83
|
+
* Allowed characters: ASCII letters, digits, dot, underscore, colon,
|
|
84
|
+
* hyphen. This intentionally rejects:
|
|
85
|
+
* - empty string
|
|
86
|
+
* - 'unknown' (parse-input.sh's fallback when hook payload has no
|
|
87
|
+
* session_id; writing 'unknown.json' would collide across every
|
|
88
|
+
* anonymous session)
|
|
89
|
+
* - whitespace
|
|
90
|
+
* - path separators ('/', '\')
|
|
91
|
+
* - parent-directory references ('..')
|
|
92
|
+
* - shell-meta characters
|
|
93
|
+
*
|
|
94
|
+
* UUIDs (8-4-4-4-12 with hyphens) and `caws-<hex>` (resolveSession's mint
|
|
95
|
+
* format) both pass. The regex is the single source of truth; both the
|
|
96
|
+
* kernel and shell layers MUST route filename derivation through
|
|
97
|
+
* safeLeaseFilename, never direct path joins on raw session_id.
|
|
98
|
+
*/
|
|
99
|
+
const LEASE_FILENAME_RE = /^[A-Za-z0-9._:-]+$/;
|
|
100
|
+
/**
|
|
101
|
+
* Validate a session_id for filesystem safety, returning the filename
|
|
102
|
+
* to use (with .json suffix) on success.
|
|
103
|
+
*/
|
|
104
|
+
function safeLeaseFilename(sessionId) {
|
|
105
|
+
if (typeof sessionId !== 'string') {
|
|
106
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_SESSION_ID_INVALID, 'Lease session_id must be a string.', { data: { actual_type: typeof sessionId } }));
|
|
107
|
+
}
|
|
108
|
+
if (sessionId.length === 0) {
|
|
109
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_SESSION_ID_INVALID, 'Lease session_id must be a non-empty string.'));
|
|
110
|
+
}
|
|
111
|
+
if (sessionId === 'unknown') {
|
|
112
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_SESSION_ID_INVALID, "Lease session_id 'unknown' is refused — it would collide across anonymous sessions. " +
|
|
113
|
+
'Hook scripts MUST guard [ -z "$HOOK_SESSION_ID" ] || [ "$HOOK_SESSION_ID" = "unknown" ] before invoking the CLI.', { data: { session_id: sessionId } }));
|
|
114
|
+
}
|
|
115
|
+
if (!LEASE_FILENAME_RE.test(sessionId)) {
|
|
116
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_SESSION_ID_UNSAFE, `Lease session_id "${sessionId}" contains characters outside the strict allowlist ` +
|
|
117
|
+
'^[A-Za-z0-9._:-]+$. Path separators, whitespace, and shell metacharacters are forbidden.', { data: { session_id: sessionId } }));
|
|
118
|
+
}
|
|
119
|
+
return (0, caws_kernel_1.ok)(`${sessionId}.json`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Load all lease files under .caws/leases/.
|
|
123
|
+
*
|
|
124
|
+
* LENIENT per file: a malformed individual lease produces a diagnostic
|
|
125
|
+
* in the returned diagnostics array and is excluded from the registry;
|
|
126
|
+
* the call returns ok with the parseable subset.
|
|
127
|
+
*
|
|
128
|
+
* STRICT on directory: an unreadable .caws/leases/ directory returns
|
|
129
|
+
* err with LEASE_DIR_UNREADABLE. A missing directory returns
|
|
130
|
+
* ok({ leases: {}, diagnostics: [] }) — leases are operational cache;
|
|
131
|
+
* absence is normal.
|
|
132
|
+
*
|
|
133
|
+
* Per-file failure classes (each emits one diagnostic, excludes the file):
|
|
134
|
+
* - filename does not match the lease pattern (skipped silently —
|
|
135
|
+
* these are not lease files, just other content in the dir)
|
|
136
|
+
* - JSON parse failure → LEASE_FILE_MALFORMED
|
|
137
|
+
* - JSON parses but is not an object → LEASE_FILE_MALFORMED
|
|
138
|
+
* - session_id mismatch between filename and content → LEASE_FILE_MALFORMED
|
|
139
|
+
*/
|
|
140
|
+
function loadLeases(cawsDir) {
|
|
141
|
+
const leasesDir = path.join(cawsDir, LEASES_DIRNAME);
|
|
142
|
+
if (!fs.existsSync(leasesDir)) {
|
|
143
|
+
return (0, caws_kernel_1.ok)({ leases: {}, diagnostics: [] });
|
|
144
|
+
}
|
|
145
|
+
let entries;
|
|
146
|
+
try {
|
|
147
|
+
entries = fs.readdirSync(leasesDir);
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_DIR_UNREADABLE, `Lease directory unreadable: ${e.message}`, { subject: leasesDir }));
|
|
151
|
+
}
|
|
152
|
+
const leases = {};
|
|
153
|
+
const diagnostics = [];
|
|
154
|
+
for (const entry of entries) {
|
|
155
|
+
if (!entry.endsWith('.json'))
|
|
156
|
+
continue;
|
|
157
|
+
const sessionId = entry.slice(0, -'.json'.length);
|
|
158
|
+
if (!LEASE_FILENAME_RE.test(sessionId)) {
|
|
159
|
+
// Not a lease file by our naming convention; ignore silently
|
|
160
|
+
// rather than fabricate a malformed diagnostic for unrelated
|
|
161
|
+
// files an operator may have dropped here.
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const filePath = path.join(leasesDir, entry);
|
|
165
|
+
let raw;
|
|
166
|
+
try {
|
|
167
|
+
raw = fs.readFileSync(filePath, 'utf8');
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
diagnostics.push((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_FILE_MALFORMED, `Lease file unreadable: ${e.message}`, { subject: filePath, data: { session_id: sessionId } }));
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
let parsed;
|
|
174
|
+
try {
|
|
175
|
+
parsed = JSON.parse(raw);
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
diagnostics.push((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_FILE_MALFORMED, `Lease file is not valid JSON: ${e.message}`, { subject: filePath, data: { session_id: sessionId } }));
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
182
|
+
diagnostics.push((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_FILE_MALFORMED, 'Lease file root is not a JSON object.', { subject: filePath, data: { session_id: sessionId } }));
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const obj = parsed;
|
|
186
|
+
if (typeof obj['session_id'] !== 'string' || obj['session_id'] !== sessionId) {
|
|
187
|
+
diagnostics.push((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_FILE_MALFORMED, `Lease file session_id "${obj['session_id']}" does not match filename "${sessionId}".`, { subject: filePath, data: { filename_session_id: sessionId, payload_session_id: obj['session_id'] } }));
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
// Treat the parsed object as an AgentLease. Field-level shape
|
|
191
|
+
// validation is deferred to a future kernel-side validateAgentLease
|
|
192
|
+
// function; for now, the kernel's TypeScript shape is the structural
|
|
193
|
+
// contract, and ill-typed-but-parseable files load successfully.
|
|
194
|
+
leases[sessionId] = obj;
|
|
195
|
+
}
|
|
196
|
+
return (0, caws_kernel_1.ok)({ leases, diagnostics });
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Apply a single LeasePatch via atomic per-file write.
|
|
200
|
+
*
|
|
201
|
+
* Creates the leases directory if missing. No lock acquired (per spec
|
|
202
|
+
* invariant 11). No event emitted (per spec invariant 10 and doctrine
|
|
203
|
+
* §6 invariant 10).
|
|
204
|
+
*
|
|
205
|
+
* Patch semantics:
|
|
206
|
+
* - write_lease: serialize patch.lease as JSON, atomic-write to
|
|
207
|
+
* <cawsDir>/leases/<safe-session-id>.json.
|
|
208
|
+
* - mark_stopped: read existing lease file; if absent, return ok with
|
|
209
|
+
* a warning diagnostic (NOT a fabricated record); if present,
|
|
210
|
+
* update status='stopped', stopped_at=patch.transitioned_at,
|
|
211
|
+
* last_seen_reason='session_stop'; atomic-write back.
|
|
212
|
+
* - delete_lease: fs.unlinkSync the lease file; idempotent on absence.
|
|
213
|
+
*/
|
|
214
|
+
function applyLeasePatch(cawsDir, patch) {
|
|
215
|
+
const filenameRes = safeLeaseFilename(patch.session_id);
|
|
216
|
+
if (filenameRes.ok === false)
|
|
217
|
+
return filenameRes;
|
|
218
|
+
const filename = filenameRes.value;
|
|
219
|
+
const leasesDir = path.join(cawsDir, LEASES_DIRNAME);
|
|
220
|
+
const filePath = path.join(leasesDir, filename);
|
|
221
|
+
try {
|
|
222
|
+
fs.mkdirSync(leasesDir, { recursive: true });
|
|
223
|
+
}
|
|
224
|
+
catch (e) {
|
|
225
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_WRITE_FAILED, `Failed to create lease directory: ${e.message}`, { subject: leasesDir }));
|
|
226
|
+
}
|
|
227
|
+
if (patch.kind === 'write_lease') {
|
|
228
|
+
const contents = JSON.stringify(patch.lease, null, 2) + '\n';
|
|
229
|
+
const w = (0, atomic_write_1.writeFileAtomic)(filePath, contents);
|
|
230
|
+
if (w.ok === false)
|
|
231
|
+
return (0, caws_kernel_1.err)(w.errors);
|
|
232
|
+
return (0, caws_kernel_1.ok)({ wrote: true, diagnostics: [] });
|
|
233
|
+
}
|
|
234
|
+
if (patch.kind === 'mark_stopped') {
|
|
235
|
+
if (!fs.existsSync(filePath)) {
|
|
236
|
+
// Stopping a session we never registered is a lifecycle mismatch,
|
|
237
|
+
// not a write opportunity. Surface as a warning diagnostic; do
|
|
238
|
+
// NOT fabricate a historical record.
|
|
239
|
+
const warn = (0, caws_kernel_1.diagnostic)({
|
|
240
|
+
rule: rules_1.STORE_RULES.LEASE_STOP_NO_PRIOR_LEASE,
|
|
241
|
+
authority: 'kernel/diagnostics',
|
|
242
|
+
severity: 'warning',
|
|
243
|
+
message: `mark_stopped: no existing lease for session "${patch.session_id}" — nothing to update.`,
|
|
244
|
+
subject: filePath,
|
|
245
|
+
data: { session_id: patch.session_id },
|
|
246
|
+
});
|
|
247
|
+
return (0, caws_kernel_1.ok)({ wrote: false, diagnostics: [warn] });
|
|
248
|
+
}
|
|
249
|
+
let raw;
|
|
250
|
+
try {
|
|
251
|
+
raw = fs.readFileSync(filePath, 'utf8');
|
|
252
|
+
}
|
|
253
|
+
catch (e) {
|
|
254
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_WRITE_FAILED, `Failed to read existing lease for mark_stopped: ${e.message}`, { subject: filePath }));
|
|
255
|
+
}
|
|
256
|
+
let prior;
|
|
257
|
+
try {
|
|
258
|
+
prior = JSON.parse(raw);
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_FILE_MALFORMED, `Existing lease file is not valid JSON: ${e.message}`, { subject: filePath }));
|
|
262
|
+
}
|
|
263
|
+
const updated = {
|
|
264
|
+
...prior,
|
|
265
|
+
status: 'stopped',
|
|
266
|
+
stopped_at: patch.transitioned_at,
|
|
267
|
+
last_seen_reason: 'session_stop',
|
|
268
|
+
};
|
|
269
|
+
const contents = JSON.stringify(updated, null, 2) + '\n';
|
|
270
|
+
const w = (0, atomic_write_1.writeFileAtomic)(filePath, contents);
|
|
271
|
+
if (w.ok === false)
|
|
272
|
+
return (0, caws_kernel_1.err)(w.errors);
|
|
273
|
+
return (0, caws_kernel_1.ok)({ wrote: true, diagnostics: [] });
|
|
274
|
+
}
|
|
275
|
+
if (patch.kind === 'update_lease_paths') {
|
|
276
|
+
// SESSION-OWNERSHIP-METADATA-001 commit 2 — partial update of
|
|
277
|
+
// working-tree ownership metadata. The kernel has already
|
|
278
|
+
// validated and truncated; the store reads the prior lease,
|
|
279
|
+
// overlays only the named keys (claimed_paths/last_modified_paths),
|
|
280
|
+
// and atomic-writes back. last_active, status, last_seen_reason,
|
|
281
|
+
// and all context fields are preserved byte-semantically from the
|
|
282
|
+
// prior lease.
|
|
283
|
+
//
|
|
284
|
+
// Defensive refusal: if the target lease file is absent, this is
|
|
285
|
+
// a lifecycle mismatch (the kernel's existence check is on the
|
|
286
|
+
// in-memory LeaseRegistry; the on-disk file MAY have been deleted
|
|
287
|
+
// between load and apply). Surface as LEASE_STOP_NO_PRIOR_LEASE-
|
|
288
|
+
// class (the same diagnostic shape mark_stopped uses for the
|
|
289
|
+
// missing-lease case). No partial write.
|
|
290
|
+
if (!fs.existsSync(filePath)) {
|
|
291
|
+
const warn = (0, caws_kernel_1.diagnostic)({
|
|
292
|
+
rule: rules_1.STORE_RULES.LEASE_STOP_NO_PRIOR_LEASE,
|
|
293
|
+
authority: 'kernel/diagnostics',
|
|
294
|
+
severity: 'warning',
|
|
295
|
+
message: `update_lease_paths: no existing lease file for session "${patch.session_id}" — nothing to update.`,
|
|
296
|
+
subject: filePath,
|
|
297
|
+
data: { session_id: patch.session_id },
|
|
298
|
+
});
|
|
299
|
+
return (0, caws_kernel_1.ok)({ wrote: false, diagnostics: [warn] });
|
|
300
|
+
}
|
|
301
|
+
let raw;
|
|
302
|
+
try {
|
|
303
|
+
raw = fs.readFileSync(filePath, 'utf8');
|
|
304
|
+
}
|
|
305
|
+
catch (e) {
|
|
306
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_WRITE_FAILED, `Failed to read existing lease for update_lease_paths: ${e.message}`, { subject: filePath }));
|
|
307
|
+
}
|
|
308
|
+
let prior;
|
|
309
|
+
try {
|
|
310
|
+
prior = JSON.parse(raw);
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_FILE_MALFORMED, `Existing lease file is not valid JSON: ${e.message}`, { subject: filePath }));
|
|
314
|
+
}
|
|
315
|
+
// Build the merged lease. Spread the prior first, then overlay
|
|
316
|
+
// only the keys explicitly present in the patch (per the
|
|
317
|
+
// documented per-field undefined = leave-alone semantic). This
|
|
318
|
+
// means a patch with claimed_paths absent does NOT delete the
|
|
319
|
+
// prior claimed_paths; an explicit empty array DOES set it to [].
|
|
320
|
+
const updated = {
|
|
321
|
+
...prior,
|
|
322
|
+
...(patch.claimed_paths !== undefined ? { claimed_paths: patch.claimed_paths } : {}),
|
|
323
|
+
...(patch.last_modified_paths !== undefined
|
|
324
|
+
? { last_modified_paths: patch.last_modified_paths }
|
|
325
|
+
: {}),
|
|
326
|
+
};
|
|
327
|
+
const contents = JSON.stringify(updated, null, 2) + '\n';
|
|
328
|
+
const w = (0, atomic_write_1.writeFileAtomic)(filePath, contents);
|
|
329
|
+
if (w.ok === false)
|
|
330
|
+
return (0, caws_kernel_1.err)(w.errors);
|
|
331
|
+
return (0, caws_kernel_1.ok)({ wrote: true, diagnostics: [] });
|
|
332
|
+
}
|
|
333
|
+
// delete_lease
|
|
334
|
+
if (!fs.existsSync(filePath)) {
|
|
335
|
+
// Idempotent: deleting an absent lease is a no-op success.
|
|
336
|
+
return (0, caws_kernel_1.ok)({ wrote: false, diagnostics: [] });
|
|
337
|
+
}
|
|
338
|
+
try {
|
|
339
|
+
fs.unlinkSync(filePath);
|
|
340
|
+
}
|
|
341
|
+
catch (e) {
|
|
342
|
+
return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.LEASE_WRITE_FAILED, `Failed to delete lease file: ${e.message}`, { subject: filePath }));
|
|
343
|
+
}
|
|
344
|
+
return (0, caws_kernel_1.ok)({ wrote: true, diagnostics: [] });
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Apply a batch of lease patches. Per-patch failures do NOT abort the
|
|
348
|
+
* batch — each patch's diagnostics are aggregated into the return.
|
|
349
|
+
*
|
|
350
|
+
* Use for operator commands like prune that emit multiple delete_lease
|
|
351
|
+
* patches. Single-session register/heartbeat/stop go through
|
|
352
|
+
* applyLeasePatch directly.
|
|
353
|
+
*/
|
|
354
|
+
function applyLeasePatches(cawsDir, patches) {
|
|
355
|
+
let applied = 0;
|
|
356
|
+
const diagnostics = [];
|
|
357
|
+
for (const patch of patches) {
|
|
358
|
+
const r = applyLeasePatch(cawsDir, patch);
|
|
359
|
+
if (r.ok === false) {
|
|
360
|
+
diagnostics.push(...r.errors);
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
if (r.value.wrote)
|
|
364
|
+
applied++;
|
|
365
|
+
diagnostics.push(...r.value.diagnostics);
|
|
366
|
+
}
|
|
367
|
+
return (0, caws_kernel_1.ok)({ applied, diagnostics });
|
|
368
|
+
}
|
|
369
|
+
function pruneLeasesByStatus(cawsDir, opts) {
|
|
370
|
+
const dryRun = opts.dryRun ?? true;
|
|
371
|
+
const staleTtlMs = opts.staleTtlMs ?? 30 * 60 * 1000; // 30m default
|
|
372
|
+
const loadRes = loadLeases(cawsDir);
|
|
373
|
+
if (loadRes.ok === false)
|
|
374
|
+
return (0, caws_kernel_1.err)(loadRes.errors);
|
|
375
|
+
const { leases, diagnostics: loadDiags } = loadRes.value;
|
|
376
|
+
const nowMs = opts.now.getTime();
|
|
377
|
+
const candidates = [];
|
|
378
|
+
// Object.values widens index-signature types to unknown[] under
|
|
379
|
+
// strict TS; coerce back to the kernel-declared element type so the
|
|
380
|
+
// loop body can read fields without per-line casts.
|
|
381
|
+
for (const lease of Object.values(leases)) {
|
|
382
|
+
if (opts.status === 'stopped') {
|
|
383
|
+
if (lease.status !== 'stopped')
|
|
384
|
+
continue;
|
|
385
|
+
const stoppedAtMs = lease.stopped_at ? Date.parse(lease.stopped_at) : NaN;
|
|
386
|
+
const reference = Number.isFinite(stoppedAtMs)
|
|
387
|
+
? stoppedAtMs
|
|
388
|
+
: Date.parse(lease.last_active);
|
|
389
|
+
if (!Number.isFinite(reference))
|
|
390
|
+
continue;
|
|
391
|
+
if (nowMs - reference > opts.retentionMs)
|
|
392
|
+
candidates.push(lease.session_id);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// status === 'stale'
|
|
396
|
+
if (lease.status !== 'active' && lease.status !== 'stopping')
|
|
397
|
+
continue;
|
|
398
|
+
const lastActiveMs = Date.parse(lease.last_active);
|
|
399
|
+
if (!Number.isFinite(lastActiveMs)) {
|
|
400
|
+
// Unparseable → treat as stale for prune purposes.
|
|
401
|
+
candidates.push(lease.session_id);
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
const age = nowMs - lastActiveMs;
|
|
405
|
+
// Must be stale (age > staleTtl) AND have been stale long enough
|
|
406
|
+
// (age > staleTtl + retention).
|
|
407
|
+
if (age > staleTtlMs && age - staleTtlMs > opts.retentionMs) {
|
|
408
|
+
candidates.push(lease.session_id);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
const diagnostics = [...loadDiags];
|
|
413
|
+
const deleted = [];
|
|
414
|
+
if (!dryRun) {
|
|
415
|
+
for (const sessionId of candidates) {
|
|
416
|
+
const r = applyLeasePatch(cawsDir, { kind: 'delete_lease', session_id: sessionId });
|
|
417
|
+
if (r.ok === false) {
|
|
418
|
+
diagnostics.push(...r.errors);
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
deleted.push(sessionId);
|
|
422
|
+
diagnostics.push(...r.value.diagnostics);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return (0, caws_kernel_1.ok)({ candidates, deleted, diagnostics });
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=leases-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leases-store.js","sourceRoot":"","sources":["../../src/store/leases-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
@@ -43,6 +43,59 @@ export declare const STORE_RULES: {
|
|
|
43
43
|
readonly EVENTS_LOCK_CONTENTION: "store.events.lock_contention";
|
|
44
44
|
/** prepareAppend rejected the body. Carries the kernel diagnostics. */
|
|
45
45
|
readonly EVENTS_PREPARE_APPEND_REJECTED: "store.events.prepare_append_rejected";
|
|
46
|
+
/** rotateEvents was called against a missing or empty events.jsonl.
|
|
47
|
+
* There is nothing to archive; the operation refuses. */
|
|
48
|
+
readonly EVENTS_ROTATE_NOTHING_TO_ROTATE: "store.events.rotate.nothing_to_rotate";
|
|
49
|
+
/** rotateEvents was called against a clean v11 chain (all entries have
|
|
50
|
+
* structured actor) without the explicit --allow-clean / allowClean
|
|
51
|
+
* flag. Friction guard to prevent casual log rotation that could hide
|
|
52
|
+
* evidence behind an archive boundary. */
|
|
53
|
+
readonly EVENTS_ROTATE_CLEAN_CHAIN_REQUIRES_ALLOW_CLEAN: "store.events.rotate.clean_chain_requires_allow_clean";
|
|
54
|
+
/** rotateEvents was called against a log that has some unparseable
|
|
55
|
+
* lines alongside parseable ones. 'parseable_unverified' cannot
|
|
56
|
+
* honestly label such a chain; rotating would archive a partially
|
|
57
|
+
* corrupt log under a status that implies all lines parsed.
|
|
58
|
+
* Refuses by default. A future operator-facing escape hatch (e.g.
|
|
59
|
+
* --allow-corrupt-archive paired with a new schema enum value) may
|
|
60
|
+
* be added in a later slice if recovery from partial corruption is
|
|
61
|
+
* needed; not in v11.2 scope. The fully-unparseable case is
|
|
62
|
+
* handled separately (the planner refuses earlier with its own
|
|
63
|
+
* diagnostic). */
|
|
64
|
+
readonly EVENTS_ROTATE_PARTIAL_CORRUPTION: "store.events.rotate.partial_corruption";
|
|
65
|
+
/** verify-archive recomputed the archive file's sha256 and it did not
|
|
66
|
+
* match the prior_file_digest committed in the most recent
|
|
67
|
+
* chain_rotated event. Tamper detection trip. */
|
|
68
|
+
readonly EVENTS_ARCHIVE_DIGEST_MISMATCH: "store.events.archive.digest_mismatch";
|
|
69
|
+
/** verify-archive recomputed the archive file's line count and it did
|
|
70
|
+
* not match the prior_line_count committed in the most recent
|
|
71
|
+
* chain_rotated event. */
|
|
72
|
+
readonly EVENTS_ARCHIVE_LINE_COUNT_MISMATCH: "store.events.archive.line_count_mismatch";
|
|
73
|
+
/** events migrate --apply refused because v10 spec YAMLs were detected
|
|
74
|
+
* and --allow-partial-upgrade was not passed. The half-upgrade refusal
|
|
75
|
+
* is structural (see CAWS-MIGRATE-V10-EVENTS-001 A10 invariant). */
|
|
76
|
+
readonly EVENTS_MIGRATE_PARTIAL_UPGRADE_REFUSED: "store.events.migrate.partial_upgrade_refused";
|
|
77
|
+
/** Scan failed to read .caws/specs/ directory. Structural — refuses
|
|
78
|
+
* rather than silently returning an empty scan (so apply-default
|
|
79
|
+
* bypass can't masquerade as "no v10 specs found"). */
|
|
80
|
+
readonly SPECS_MIGRATE_SCAN_FAILED: "store.specs.migrate.scan_failed";
|
|
81
|
+
/** A YAML file in .caws/specs/ could not be parsed during scan;
|
|
82
|
+
* recorded per-file but does not stop the scan. */
|
|
83
|
+
readonly SPECS_MIGRATE_PARSE_FAILED: "store.specs.migrate.parse_failed";
|
|
84
|
+
/** --apply (no --partial) refused because at least one spec hit a
|
|
85
|
+
* refused verdict; ZERO files were written. */
|
|
86
|
+
readonly SPECS_MIGRATE_REFUSALS_PRESENT: "store.specs.migrate.refusals_present";
|
|
87
|
+
/** A post-write validation of the transformer's output rejected the
|
|
88
|
+
* spec; the write for that file was rolled back. Other files in
|
|
89
|
+
* the batch are NOT rolled back per non_functional reliability rule. */
|
|
90
|
+
readonly SPECS_MIGRATE_POST_WRITE_VALIDATION_FAILED: "store.specs.migrate.post_write_validation_failed";
|
|
91
|
+
/** Writing a migrated spec file to disk failed (atomic write rejected
|
|
92
|
+
* by filesystem). The other writes proceeded; the report records
|
|
93
|
+
* which files were skipped. */
|
|
94
|
+
readonly SPECS_MIGRATE_WRITE_FAILED: "store.specs.migrate.write_failed";
|
|
95
|
+
/** Writing the durable migration report to disk failed AFTER spec
|
|
96
|
+
* writes succeeded. The migrations are on disk; only the audit
|
|
97
|
+
* trail failed. Operator must investigate. */
|
|
98
|
+
readonly SPECS_MIGRATE_REPORT_WRITE_FAILED: "store.specs.migrate.report_write_failed";
|
|
46
99
|
/** A legacy file (e.g., working-spec.yaml) blocks vNext init. */
|
|
47
100
|
readonly INIT_LEGACY_RESIDUE: "store.init.legacy_residue";
|
|
48
101
|
/** init seeded a default policy that did not pass kernel validation. */
|
|
@@ -63,7 +116,27 @@ export declare const STORE_RULES: {
|
|
|
63
116
|
readonly YAML_PATCH_AMBIGUOUS: "store.yaml_patch.ambiguous";
|
|
64
117
|
/** yaml-patch refused because the target key was not found in the document. */
|
|
65
118
|
readonly YAML_PATCH_KEY_NOT_FOUND: "store.yaml_patch.key_not_found";
|
|
119
|
+
/** Lease directory exists but is unreadable (permission denied, etc).
|
|
120
|
+
* Only failure mode for loadLeases — per-file failures are degraded
|
|
121
|
+
* to diagnostics inside an ok result. */
|
|
122
|
+
readonly LEASE_DIR_UNREADABLE: "store.leases.dir_unreadable";
|
|
123
|
+
/** Per-file lease load failure: JSON parse, not-an-object, filename/payload
|
|
124
|
+
* session_id mismatch, or unreadable file. The file is excluded from the
|
|
125
|
+
* returned registry but loadLeases still returns ok. */
|
|
126
|
+
readonly LEASE_FILE_MALFORMED: "store.leases.file_malformed";
|
|
127
|
+
/** Atomic lease write failed (directory creation, write, rename). */
|
|
128
|
+
readonly LEASE_WRITE_FAILED: "store.leases.write_failed";
|
|
129
|
+
/** session_id is empty, the literal 'unknown', or not a string. Refused
|
|
130
|
+
* at the I/O boundary by safeLeaseFilename. */
|
|
131
|
+
readonly LEASE_SESSION_ID_INVALID: "store.leases.session_id_invalid";
|
|
132
|
+
/** session_id contains characters outside the strict allowlist
|
|
133
|
+
* ^[A-Za-z0-9._:-]+$. Refused at the I/O boundary by safeLeaseFilename. */
|
|
134
|
+
readonly LEASE_SESSION_ID_UNSAFE: "store.leases.session_id_unsafe";
|
|
135
|
+
/** mark_stopped patch received but no prior lease exists for the session.
|
|
136
|
+
* Warning, not error — the store does NOT fabricate a historical record;
|
|
137
|
+
* the caller is told that the stop is a lifecycle mismatch no-op. */
|
|
138
|
+
readonly LEASE_STOP_NO_PRIOR_LEASE: "store.leases.stop_no_prior_lease";
|
|
66
139
|
};
|
|
67
140
|
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."];
|
|
141
|
+
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
142
|
//# sourceMappingURL=rules.d.ts.map
|