opensquid 0.5.401 → 0.5.405
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/functions/handoff_session_start.d.ts.map +1 -1
- package/dist/functions/handoff_session_start.js +15 -12
- package/dist/functions/handoff_session_start.js.map +1 -1
- package/dist/runtime/handoff/render.d.ts +11 -1
- package/dist/runtime/handoff/render.d.ts.map +1 -1
- package/dist/runtime/handoff/render.js +20 -8
- package/dist/runtime/handoff/render.js.map +1 -1
- package/dist/runtime/handoff/write.d.ts +19 -0
- package/dist/runtime/handoff/write.d.ts.map +1 -1
- package/dist/runtime/handoff/write.js +91 -10
- package/dist/runtime/handoff/write.js.map +1 -1
- package/dist/runtime/spawn_lifecycle.d.ts +14 -9
- package/dist/runtime/spawn_lifecycle.d.ts.map +1 -1
- package/dist/runtime/spawn_lifecycle.js +32 -15
- package/dist/runtime/spawn_lifecycle.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff_session_start.d.ts","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,QAAA,MAAM,MAAM,iDAAwB,CAAC;AAErC,UAAU,YAAY;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"handoff_session_start.d.ts","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,QAAA,MAAM,MAAM,iDAAwB,CAAC;AAErC,UAAU,YAAY;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAyDxF,CAAC"}
|
|
@@ -52,17 +52,6 @@ export const HandoffSessionStart = {
|
|
|
52
52
|
const stamp = sessionStateFile(ctx.sessionId, 'handoff-read');
|
|
53
53
|
if ((await mtimeOf(stamp)) !== null)
|
|
54
54
|
return ok(null);
|
|
55
|
-
// SUB.3 (wg-627effbb2c38): a "dead" sid with a fresh tool-ledger /
|
|
56
|
-
// active-task mtime is a LIVE session (nested child, second terminal)
|
|
57
|
-
// — dumping it would clobber its in-flight resume surfaces (observed
|
|
58
|
-
// live 2026-06-11: the MEMORY.md managed block overwritten twice
|
|
59
|
-
// mid-run by exactly this path). Skip WITHOUT writing the
|
|
60
|
-
// handoff-read stamp: if the session actually just crashed, the next
|
|
61
|
-
// fresh session retries once FRESH_MS lapses — the loss is transient
|
|
62
|
-
// by construction, never pinned by a stale stamp.
|
|
63
|
-
const liveness = await isSessionPlausible(deadSid);
|
|
64
|
-
if (liveness.plausible)
|
|
65
|
-
return ok(null);
|
|
66
55
|
const umbrellaRoot = await umbrellaRootFor(cwd);
|
|
67
56
|
const fsmPath = sessionStateFile(deadSid, 'fsm-coding-flow');
|
|
68
57
|
const fsmM = await mtimeOf(fsmPath);
|
|
@@ -74,7 +63,21 @@ export const HandoffSessionStart = {
|
|
|
74
63
|
// which day it was generated (the date-keyed path missed yesterday's).
|
|
75
64
|
docPath = handoverDocPath(umbrellaRoot, deadSid);
|
|
76
65
|
const docM = await mtimeOf(docPath);
|
|
77
|
-
|
|
66
|
+
const docCurrent = docM !== null && fsmM !== null && docM >= fsmM;
|
|
67
|
+
if (!docCurrent) {
|
|
68
|
+
// SUB.3 refined by FXK.2 (0.5.403): liveness gates GENERATION
|
|
69
|
+
// ONLY — injecting a CURRENT doc clobbers nothing (the observed
|
|
70
|
+
// MEMORY.md overwrites were regeneration writes), so graceful-
|
|
71
|
+
// death quick restarts inject instantly. A plausibly-LIVE "dead"
|
|
72
|
+
// sid (nested child, second terminal) skips WITHOUT writing the
|
|
73
|
+
// handoff-read stamp, so a later session retries once the window
|
|
74
|
+
// lapses. freshMs = 10min: the longest a LIVE session goes quiet
|
|
75
|
+
// on its probed files is the 340s audit wait (wg-bc291cb0cef4's
|
|
76
|
+
// inner-window sizing) + margin — 5min would re-open the clobber,
|
|
77
|
+
// 30min over-suppressed kill-9 resumes (the shipped SUB.3 flaw).
|
|
78
|
+
const liveness = await isSessionPlausible(deadSid, { freshMs: 10 * 60_000 });
|
|
79
|
+
if (liveness.plausible)
|
|
80
|
+
return ok(null);
|
|
78
81
|
const result = await runHandoff(deadSid, cwd); // generate from disk
|
|
79
82
|
docPath = result.docPath;
|
|
80
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff_session_start.js","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,eAAe,EACf,UAAU,EACV,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAI1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAOrC,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA6D;IAC3F,IAAI,EAAE,uBAAuB;IAC7B,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,cAAc,EAAE,EAAE;IAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GACP,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACxF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,GAAG,CAAC,SAAS;gBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YAEnE,0BAA0B;YAC1B,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YAErD,
|
|
1
|
+
{"version":3,"file":"handoff_session_start.js","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,10 +16,20 @@ import type { HandoffState } from './collect.js';
|
|
|
16
16
|
/** The mechanical resume steps (research-flow-first; commit-doc last). */
|
|
17
17
|
export declare function renderResumeSteps(state: HandoffState): string[];
|
|
18
18
|
export declare function renderHandoverDoc(state: HandoffState): string;
|
|
19
|
+
/** HPB.1 (wg-c34349377f81) — a POINTER-ONLY projection. The project's locked
|
|
20
|
+
* thesis (event-sourced work-graph; the memory axiom): disk state is the
|
|
21
|
+
* truth; shared-mutable surfaces carry pointers, never content. The inline
|
|
22
|
+
* steps this used to carry were a stale-prone duplicate of what the
|
|
23
|
+
* SessionStart directive injection (0.5.404) renders fresh — and an
|
|
24
|
+
* overwritten POINTER loses nothing, because the doc it names is lazily
|
|
25
|
+
* regenerated to currency at read time. */
|
|
19
26
|
export declare function renderResumeBlock(state: HandoffState): string;
|
|
20
27
|
export declare function renderWgDigest(state: HandoffState): string;
|
|
21
28
|
export declare function renderChatDigest(state: HandoffState): string;
|
|
22
29
|
export declare function spliceNarrative(doc: string, narrative: string): string;
|
|
23
|
-
/** SessionStart injection text (reader side).
|
|
30
|
+
/** SessionStart injection text (reader side). HRA.1 (wg-c34349377f81): a
|
|
31
|
+
* DIRECTIVE, not an FYI — the user's bar is "resume on ANY first prompt"
|
|
32
|
+
* (their morning words: "i thought it would be automatic"). The yield
|
|
33
|
+
* clause keeps the user's actual ask sovereign. */
|
|
24
34
|
export declare function renderInjection(docPath: string): string;
|
|
25
35
|
//# sourceMappingURL=render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/runtime/handoff/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsCjD,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAqC/D;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAkD7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/runtime/handoff/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsCjD,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAqC/D;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAkD7D;AAED;;;;;;4CAM4C;AAC5C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAO7D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAQ1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAO5D;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED;;;oDAGoD;AACpD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASvD"}
|
|
@@ -123,12 +123,18 @@ ${section('Git', git || '_(no repos swept)_')}
|
|
|
123
123
|
${section('Open work-graph issues', issues)}
|
|
124
124
|
`;
|
|
125
125
|
}
|
|
126
|
+
/** HPB.1 (wg-c34349377f81) — a POINTER-ONLY projection. The project's locked
|
|
127
|
+
* thesis (event-sourced work-graph; the memory axiom): disk state is the
|
|
128
|
+
* truth; shared-mutable surfaces carry pointers, never content. The inline
|
|
129
|
+
* steps this used to carry were a stale-prone duplicate of what the
|
|
130
|
+
* SessionStart directive injection (0.5.404) renders fresh — and an
|
|
131
|
+
* overwritten POINTER loses nothing, because the doc it names is lazily
|
|
132
|
+
* regenerated to currency at read time. */
|
|
126
133
|
export function renderResumeBlock(state) {
|
|
127
134
|
const sid8 = state.sessionId.slice(0, 8);
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
`
|
|
131
|
-
`First step: ${steps[0] ?? '(none)'} Final step: commit the handover doc(s).`);
|
|
135
|
+
return (`## 📦 AUTO-HANDOFF pointer (session ${sid8}, ${state.generatedAt}) — FSM ${fsmStateOf(state)}\n` +
|
|
136
|
+
`Full record: \`docs/handover-session-${sid8}-auto.md\` under the umbrella root. ` +
|
|
137
|
+
`The next session AUTO-RESUMES from it on any first prompt (0.5.404 directive) — no manual action needed.`);
|
|
132
138
|
}
|
|
133
139
|
export function renderWgDigest(state) {
|
|
134
140
|
return (`AUTO-HANDOFF for session ${state.sessionId} (${state.generatedAt}). ` +
|
|
@@ -153,10 +159,16 @@ export function spliceNarrative(doc, narrative) {
|
|
|
153
159
|
return `${doc}\n${section}`; // defensive — append
|
|
154
160
|
return `${doc.slice(0, at)}${section}${doc.slice(at)}`;
|
|
155
161
|
}
|
|
156
|
-
/** SessionStart injection text (reader side).
|
|
162
|
+
/** SessionStart injection text (reader side). HRA.1 (wg-c34349377f81): a
|
|
163
|
+
* DIRECTIVE, not an FYI — the user's bar is "resume on ANY first prompt"
|
|
164
|
+
* (their morning words: "i thought it would be automatic"). The yield
|
|
165
|
+
* clause keeps the user's actual ask sovereign. */
|
|
157
166
|
export function renderInjection(docPath) {
|
|
158
|
-
return (`📦 AUTO-HANDOFF
|
|
159
|
-
`
|
|
160
|
-
`
|
|
167
|
+
return (`📦 AUTO-HANDOFF PENDING from the previous session: ${docPath}\n` +
|
|
168
|
+
`This is an ACTIVE task, not background context: read that doc and execute its ` +
|
|
169
|
+
`RESUME steps NOW — announce in one line that you are resuming, then drive the ` +
|
|
170
|
+
`steps to completion. Yield ONLY if the user's first prompt explicitly requests ` +
|
|
171
|
+
`different work (their ask always wins); otherwise any first prompt — including a ` +
|
|
172
|
+
`greeting — starts the resume.`);
|
|
161
173
|
}
|
|
162
174
|
//# sourceMappingURL=render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/runtime/handoff/render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/runtime/handoff/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,25 @@ export declare function memoryMdPathFor(umbrellaRoot: string): string;
|
|
|
29
29
|
/** Replace the managed region; insert after the first H1 when absent; prepend
|
|
30
30
|
* when no H1. Bytes outside the markers are NEVER touched. */
|
|
31
31
|
export declare function spliceResumeBlock(memoryMd: string, block: string): string;
|
|
32
|
+
export interface SiblingFact {
|
|
33
|
+
sid: string;
|
|
34
|
+
/** recorded cwd (session_state.readSessionCwd), realpath-canonicalized; null when unattributable. */
|
|
35
|
+
cwd: string | null;
|
|
36
|
+
/** tool-ledger mtime ms, null when absent/unreadable. */
|
|
37
|
+
ledgerMtimeMs: number | null;
|
|
38
|
+
}
|
|
39
|
+
/** The first OTHER session of THIS umbrella with a fresh ledger, or null.
|
|
40
|
+
* freshMs default 10min = the FXK.2 live-session quiet-gap bound (the 340s
|
|
41
|
+
* audit wait + margin). Pure — all facts injected. */
|
|
42
|
+
export declare function inFlightSibling(args: {
|
|
43
|
+
siblings: SiblingFact[];
|
|
44
|
+
umbrellaRoot: string;
|
|
45
|
+
dyingSid: string;
|
|
46
|
+
nowMs: number;
|
|
47
|
+
freshMs?: number;
|
|
48
|
+
}): string | null;
|
|
49
|
+
/** Exported for the impure-shell test (tmp OPENSQUID_HOME + symlink pin). */
|
|
50
|
+
export declare function gatherSiblingFacts(): Promise<SiblingFact[]>;
|
|
32
51
|
export interface WriteHandoffResult {
|
|
33
52
|
docPath: string;
|
|
34
53
|
outcomes: SurfaceOutcome[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/runtime/handoff/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/runtime/handoff/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmBH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AASlE,eAAO,MAAM,aAAa,qCAAqC,CAAC;AAChE,eAAO,MAAM,WAAW,mCAAmC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IACjD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;mFACmF;AACnF,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED;+DAC+D;AAC/D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAazE;AAoBD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,qGAAqG;IACrG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,yDAAyD;IACzD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;uDAEuD;AACvD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,GAAG,IAAI,CAWhB;AAaD,6EAA6E;AAC7E,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CA0BjE;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,YAAY,EACnB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA2F7B"}
|
|
@@ -14,9 +14,11 @@
|
|
|
14
14
|
* ../../chat_daemon/client.js.
|
|
15
15
|
* Imported by: handoff/index.ts.
|
|
16
16
|
*/
|
|
17
|
-
import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
17
|
+
import { mkdir, readdir, readFile, realpath, rename, stat, writeFile } from 'node:fs/promises';
|
|
18
18
|
import { homedir } from 'node:os';
|
|
19
19
|
import { dirname, join } from 'node:path';
|
|
20
|
+
import { readSessionCwd } from '../session_state.js';
|
|
21
|
+
import { sessionStateFile } from '../paths.js';
|
|
20
22
|
import { sendChat } from '../../chat_daemon/client.js';
|
|
21
23
|
import { GENERAL_UMBRELLA, loadChannelsConfig, resolveOutbound, resolveUmbrellaForCwd, } from '../../channels/routing.js';
|
|
22
24
|
import { workGraphStore } from '../../workgraph/store.js';
|
|
@@ -55,6 +57,67 @@ async function atomicWrite(path, content) {
|
|
|
55
57
|
await writeFile(tmp, content, 'utf8');
|
|
56
58
|
await rename(tmp, path);
|
|
57
59
|
}
|
|
60
|
+
/** The first OTHER session of THIS umbrella with a fresh ledger, or null.
|
|
61
|
+
* freshMs default 10min = the FXK.2 live-session quiet-gap bound (the 340s
|
|
62
|
+
* audit wait + margin). Pure — all facts injected. */
|
|
63
|
+
export function inFlightSibling(args) {
|
|
64
|
+
const fresh = args.freshMs ?? 10 * 60_000;
|
|
65
|
+
const root = args.umbrellaRoot.endsWith('/') ? args.umbrellaRoot : `${args.umbrellaRoot}/`;
|
|
66
|
+
for (const s of args.siblings) {
|
|
67
|
+
if (s.sid === args.dyingSid)
|
|
68
|
+
continue;
|
|
69
|
+
if (s.cwd === null || s.ledgerMtimeMs === null)
|
|
70
|
+
continue; // unattributable → fail-open
|
|
71
|
+
const cwd = s.cwd.endsWith('/') ? s.cwd : `${s.cwd}/`;
|
|
72
|
+
if (!cwd.startsWith(root))
|
|
73
|
+
continue; // other umbrella → never suppresses
|
|
74
|
+
if (args.nowMs - s.ledgerMtimeMs <= fresh)
|
|
75
|
+
return s.sid;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
/** realpath-or-identity: a symlink-alias cwd of the umbrella root must still
|
|
80
|
+
* match the prefix test; unresolvable paths return as-is (fail-open at the
|
|
81
|
+
* comparison). */
|
|
82
|
+
async function canonical(p) {
|
|
83
|
+
try {
|
|
84
|
+
return await realpath(p);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return p;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** Exported for the impure-shell test (tmp OPENSQUID_HOME + symlink pin). */
|
|
91
|
+
export async function gatherSiblingFacts() {
|
|
92
|
+
const dir = join(OPENSQUID_HOME(), 'sessions');
|
|
93
|
+
const out = [];
|
|
94
|
+
let entries;
|
|
95
|
+
try {
|
|
96
|
+
entries = await readdir(dir);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return out; // no sessions dir → no siblings → fail-open
|
|
100
|
+
}
|
|
101
|
+
for (const sid of entries) {
|
|
102
|
+
let cwd = null;
|
|
103
|
+
let ledgerMtimeMs = null;
|
|
104
|
+
try {
|
|
105
|
+
const recorded = await readSessionCwd(sid);
|
|
106
|
+
cwd = recorded === null ? null : await canonical(recorded);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
/* unattributable */
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
ledgerMtimeMs = (await stat(sessionStateFile(sid, 'tool-ledger'))).mtimeMs;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
/* absent */
|
|
116
|
+
}
|
|
117
|
+
out.push({ sid, cwd, ledgerMtimeMs });
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
58
121
|
export async function writeHandoffSurfaces(state, opts = {}) {
|
|
59
122
|
const outcomes = [];
|
|
60
123
|
const docPath = handoverDocPath(state.umbrellaRoot, state.sessionId);
|
|
@@ -62,20 +125,38 @@ export async function writeHandoffSurfaces(state, opts = {}) {
|
|
|
62
125
|
const docBody = renderHandoverDoc(state);
|
|
63
126
|
await atomicWrite(docPath, opts.narrative === undefined ? docBody : spliceNarrative(docBody, opts.narrative));
|
|
64
127
|
outcomes.push({ surface: 'doc', ok: true, detail: docPath });
|
|
65
|
-
// (b) MEMORY.md managed region — absent file → skip (not all hosts run
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
128
|
+
// (b) MEMORY.md managed region — absent file → skip (not all hosts run
|
|
129
|
+
// auto-memory). HRA.1: a fresh same-umbrella sibling owns the resume
|
|
130
|
+
// block — a dying nested/sibling session must not overwrite the live
|
|
131
|
+
// session's resume surface (observed twice on 2026-06-11 pre-fix).
|
|
132
|
+
const sibling = inFlightSibling({
|
|
133
|
+
siblings: await gatherSiblingFacts(),
|
|
134
|
+
umbrellaRoot: await canonical(state.umbrellaRoot),
|
|
135
|
+
dyingSid: state.sessionId,
|
|
136
|
+
nowMs: Date.now(),
|
|
137
|
+
});
|
|
138
|
+
if (sibling !== null) {
|
|
73
139
|
outcomes.push({
|
|
74
140
|
surface: 'memory',
|
|
75
141
|
ok: false,
|
|
76
|
-
detail: `skipped: ${
|
|
142
|
+
detail: `skipped: in-flight sibling ${sibling.slice(0, 8)} owns this umbrella's resume block`,
|
|
77
143
|
});
|
|
78
144
|
}
|
|
145
|
+
else {
|
|
146
|
+
const memPath = memoryMdPathFor(state.umbrellaRoot);
|
|
147
|
+
try {
|
|
148
|
+
const current = await readFile(memPath, 'utf8');
|
|
149
|
+
await atomicWrite(memPath, spliceResumeBlock(current, renderResumeBlock(state)));
|
|
150
|
+
outcomes.push({ surface: 'memory', ok: true, detail: memPath });
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
outcomes.push({
|
|
154
|
+
surface: 'memory',
|
|
155
|
+
ok: false,
|
|
156
|
+
detail: `skipped: ${e instanceof Error ? e.message : String(e)}`,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
79
160
|
// (c) work-graph upsert — stable title key; update-or-create.
|
|
80
161
|
try {
|
|
81
162
|
const store = workGraphStore({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/runtime/handoff/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/runtime/handoff/write.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,22 @@
|
|
|
10
10
|
*
|
|
11
11
|
* running ──close──────────────► closed (resolve/reject by exit code)
|
|
12
12
|
* running ──spawn 'error'──────► spawn_failed (reject)
|
|
13
|
-
* running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D
|
|
14
|
-
*
|
|
13
|
+
* running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D;
|
|
14
|
+
* sync 'exit' kill handler registered)
|
|
15
|
+
* term_sent ──close────────────► closed_late (clear grace + remove the exit handler;
|
|
16
|
+
* child obeyed SIGTERM)
|
|
15
17
|
* term_sent ──grace expiry─────► group_killed (kill(-pid) sweep; ESRCH = already gone)
|
|
18
|
+
* term_sent ──supervisor exit──► group_killed (FXK.1, 0.5.402: the sync 'exit' handler
|
|
19
|
+
* — hook bins call process.exit() ms after
|
|
20
|
+
* the rejection, which destroys ANY timer,
|
|
21
|
+
* ref'd or not; reproduced in isolation
|
|
22
|
+
* before this fix. 'exit' listeners run
|
|
23
|
+
* synchronously under explicit exit and
|
|
24
|
+
* process.kill is sync — spiked, not
|
|
25
|
+
* assumed.)
|
|
16
26
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* through grace in every non-forced teardown (an unref'd timer dies when a
|
|
20
|
-
* hook bin exits right after the rejection — observed live as SIGTERM-
|
|
21
|
-
* ignoring `claude -p` orphans piling up on the subscription bucket), and a
|
|
22
|
-
* forced external SIGKILL of the supervisor is outside any in-process
|
|
23
|
-
* guarantee.
|
|
27
|
+
* Only a forced external SIGKILL of the supervisor leaks the child now —
|
|
28
|
+
* outside any in-process guarantee, enumerated residual.
|
|
24
29
|
*
|
|
25
30
|
* Two ORTHOGONAL env markers — never merge them:
|
|
26
31
|
* - OPENSQUID_SUBAGENT (hook policy, SUB.1): set only when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn_lifecycle.d.ts","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"spawn_lifecycle.d.ts","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAIH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,YAAY,EAAE,OAAO,CAAC;IACtB,gFAAgF;IAChF,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC;IAC3C,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,OAC1C,CAAC;AAEnC,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoGhE"}
|
|
@@ -10,17 +10,22 @@
|
|
|
10
10
|
*
|
|
11
11
|
* running ──close──────────────► closed (resolve/reject by exit code)
|
|
12
12
|
* running ──spawn 'error'──────► spawn_failed (reject)
|
|
13
|
-
* running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D
|
|
14
|
-
*
|
|
13
|
+
* running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D;
|
|
14
|
+
* sync 'exit' kill handler registered)
|
|
15
|
+
* term_sent ──close────────────► closed_late (clear grace + remove the exit handler;
|
|
16
|
+
* child obeyed SIGTERM)
|
|
15
17
|
* term_sent ──grace expiry─────► group_killed (kill(-pid) sweep; ESRCH = already gone)
|
|
18
|
+
* term_sent ──supervisor exit──► group_killed (FXK.1, 0.5.402: the sync 'exit' handler
|
|
19
|
+
* — hook bins call process.exit() ms after
|
|
20
|
+
* the rejection, which destroys ANY timer,
|
|
21
|
+
* ref'd or not; reproduced in isolation
|
|
22
|
+
* before this fix. 'exit' listeners run
|
|
23
|
+
* synchronously under explicit exit and
|
|
24
|
+
* process.kill is sync — spiked, not
|
|
25
|
+
* assumed.)
|
|
16
26
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* through grace in every non-forced teardown (an unref'd timer dies when a
|
|
20
|
-
* hook bin exits right after the rejection — observed live as SIGTERM-
|
|
21
|
-
* ignoring `claude -p` orphans piling up on the subscription bucket), and a
|
|
22
|
-
* forced external SIGKILL of the supervisor is outside any in-process
|
|
23
|
-
* guarantee.
|
|
27
|
+
* Only a forced external SIGKILL of the supervisor leaks the child now —
|
|
28
|
+
* outside any in-process guarantee, enumerated residual.
|
|
24
29
|
*
|
|
25
30
|
* Two ORTHOGONAL env markers — never merge them:
|
|
26
31
|
* - OPENSQUID_SUBAGENT (hook policy, SUB.1): set only when
|
|
@@ -79,17 +84,28 @@ export function runOneShotCli(opts) {
|
|
|
79
84
|
/* ESRCH — already reaped */
|
|
80
85
|
}
|
|
81
86
|
};
|
|
87
|
+
// FXK.1 (0.5.402): the supervisor-exit escalation path. Sync-only body
|
|
88
|
+
// — the process is dying; state check + sync kill, nothing else.
|
|
89
|
+
const exitKill = () => {
|
|
90
|
+
if (state.phase === 'term_sent')
|
|
91
|
+
groupKill();
|
|
92
|
+
};
|
|
82
93
|
const timer = setTimeout(() => {
|
|
83
94
|
if (state.phase !== 'running')
|
|
84
95
|
return;
|
|
85
96
|
state = { phase: 'term_sent' };
|
|
86
97
|
proc.kill('SIGTERM');
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
|
|
98
|
+
// BOTH escalation paths are required (FXK.1, spiked): the REF'D timer
|
|
99
|
+
// covers long-lived supervisors (bridge daemon — prompt 5s kill); the
|
|
100
|
+
// sync 'exit' handler covers supervisors that exit before grace (hook
|
|
101
|
+
// bins call process.exit() milliseconds after this rejection, which
|
|
102
|
+
// destroys ANY timer, ref'd or not — the 0.5.398 hole). 'closed_late'
|
|
103
|
+
// clears both for well-behaved children.
|
|
104
|
+
process.once('exit', exitKill);
|
|
105
|
+
graceTimer = setTimeout(() => {
|
|
106
|
+
process.removeListener('exit', exitKill);
|
|
107
|
+
groupKill();
|
|
108
|
+
}, opts.graceMs ?? 5_000);
|
|
93
109
|
reject(opts.timeoutError(opts.timeoutMs));
|
|
94
110
|
}, opts.timeoutMs);
|
|
95
111
|
proc.stdout.on('data', (d) => {
|
|
@@ -118,6 +134,7 @@ export function runOneShotCli(opts) {
|
|
|
118
134
|
state = { phase: 'closed_late' }; // child obeyed SIGTERM inside grace
|
|
119
135
|
if (graceTimer !== undefined)
|
|
120
136
|
clearTimeout(graceTimer);
|
|
137
|
+
process.removeListener('exit', exitKill); // hygiene: long-lived callers
|
|
121
138
|
}
|
|
122
139
|
// closed / spawn_failed / group_killed: terminal — nothing to do.
|
|
123
140
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn_lifecycle.js","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"spawn_lifecycle.js","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED