@rubytech/create-maxy-code 0.1.200 → 0.1.203
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/package.json +2 -2
- package/payload/platform/scripts/check-no-esm-require.mjs +3 -0
- package/payload/platform/scripts/check-specialist-tool-surface.mjs +323 -0
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +7 -7
- package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts +13 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +73 -10
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +9 -1
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +2 -12
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +14 -67
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +6 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +30 -0
- package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +4 -0
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts +15 -3
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +66 -45
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts +19 -0
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.js +42 -0
- package/payload/platform/services/claude-session-manager/dist/session-sidecar.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts +62 -0
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js +173 -0
- package/payload/platform/services/claude-session-manager/dist/systemd-spawn.js.map +1 -0
- package/payload/platform/templates/specialists/agents/coding-assistant.md +73 -0
- package/payload/server/public/assets/{AdminShell-OJlDJakR.js → AdminShell-BcxEZnpu.js} +1 -1
- package/payload/server/public/assets/{Checkbox-DE_tsDq_.js → Checkbox-DL-HdT29.js} +1 -1
- package/payload/server/public/assets/{admin-DbQw1TyC.js → admin-DMo5DWKH.js} +1 -1
- package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-DfZVWJVr.js → architectureDiagram-Q4EWVU46-BoUw4oYz.js} +1 -1
- package/payload/server/public/assets/{blockDiagram-DXYQGD6D-Cd9vcTYg.js → blockDiagram-DXYQGD6D-DOscnO3m.js} +1 -1
- package/payload/server/public/assets/{brand-Ed5R2W5J.css → brand-SZW-27T7.css} +1 -1
- package/payload/server/public/assets/{c4Diagram-AHTNJAMY-zmNCfJ5F.js → c4Diagram-AHTNJAMY-aZ1IuZ_F.js} +1 -1
- package/payload/server/public/assets/channel-CzcSNxDm.js +1 -0
- package/payload/server/public/assets/{chunk-336JU56O-DvHeoV7B.js → chunk-336JU56O-DS3ksXBG.js} +2 -2
- package/payload/server/public/assets/{chunk-426QAEUC-IZknbXMM.js → chunk-426QAEUC-BLRn2STO.js} +1 -1
- package/payload/server/public/assets/{chunk-4TB4RGXK-DN_qw6Oi.js → chunk-4TB4RGXK-BrhOvJ01.js} +1 -1
- package/payload/server/public/assets/{chunk-5FUZZQ4R-tt-46Rcq.js → chunk-5FUZZQ4R-BZZwZX5Q.js} +1 -1
- package/payload/server/public/assets/{chunk-5PVQY5BW-Bl0mxmQP.js → chunk-5PVQY5BW-YXZKnPCz.js} +1 -1
- package/payload/server/public/assets/{chunk-EDXVE4YY-v31HwKDb.js → chunk-EDXVE4YY-DAMCJHKQ.js} +1 -1
- package/payload/server/public/assets/{chunk-ENJZ2VHE-D6T1RStj.js → chunk-ENJZ2VHE-DsD95Bqn.js} +1 -1
- package/payload/server/public/assets/{chunk-ICPOFSXX-DVnIs_5A.js → chunk-ICPOFSXX-DxtrRClx.js} +1 -1
- package/payload/server/public/assets/{chunk-OYMX7WX6-DiZNprr1.js → chunk-OYMX7WX6-CN4kLK-H.js} +1 -1
- package/payload/server/public/assets/{chunk-U2HBQHQK-Cy0qH3H0.js → chunk-U2HBQHQK-BPTv3Oj1.js} +1 -1
- package/payload/server/public/assets/{chunk-X2U36JSP-wR3wBPyu.js → chunk-X2U36JSP-DxBry33v.js} +1 -1
- package/payload/server/public/assets/{chunk-YZCP3GAM-BGOVJLky.js → chunk-YZCP3GAM-BZ4N75oy.js} +1 -1
- package/payload/server/public/assets/{chunk-ZZ45TVLE-14vtIjRh.js → chunk-ZZ45TVLE-Dqr161Q1.js} +1 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-DFOM3vCn.js +1 -0
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-HplDfaL1.js +1 -0
- package/payload/server/public/assets/clone-G-2rqnSR.js +1 -0
- package/payload/server/public/assets/{dagre-CG1l6rfK.js → dagre-DtZ0wKkH.js} +1 -1
- package/payload/server/public/assets/{dagre-KV5264BT-DKFDl1Nz.js → dagre-KV5264BT-BPKhT-ZX.js} +1 -1
- package/payload/server/public/assets/{data-b1v7Pjly.js → data-D6IQdm0R.js} +1 -1
- package/payload/server/public/assets/{diagram-5BDNPKRD-PJd29fkg.js → diagram-5BDNPKRD-CATnafi7.js} +1 -1
- package/payload/server/public/assets/{diagram-G4DWMVQ6-Bz7_SWJH.js → diagram-G4DWMVQ6-ChZYQfji.js} +1 -1
- package/payload/server/public/assets/{diagram-MMDJMWI5-CmWknm9v.js → diagram-MMDJMWI5-DHW6kYd3.js} +1 -1
- package/payload/server/public/assets/{diagram-TYMM5635-CLYRluM2.js → diagram-TYMM5635-CnS4Zci8.js} +1 -1
- package/payload/server/public/assets/{erDiagram-SMLLAGMA-EWVKGrgT.js → erDiagram-SMLLAGMA-DKYv2YWp.js} +1 -1
- package/payload/server/public/assets/{flowDiagram-DWJPFMVM-CNtfJIG7.js → flowDiagram-DWJPFMVM-BWvoZWlh.js} +1 -1
- package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-SIlymJ6A.js → ganttDiagram-T4ZO3ILL-CpCb-xKy.js} +1 -1
- package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DWVl6CUl.js → gitGraphDiagram-UUTBAWPF-CvHrDKQ-.js} +1 -1
- package/payload/server/public/assets/{graph-BOcblKu9.js → graph-PkZKVkWD.js} +1 -1
- package/payload/server/public/assets/{graph-labels-CH-Tffon.js → graph-labels-CWJy0O4w.js} +1 -1
- package/payload/server/public/assets/{graphlib-i-qJjJM7.js → graphlib-DjnyHqGy.js} +1 -1
- package/payload/server/public/assets/{infoDiagram-42DDH7IO-D66Yr_7b.js → infoDiagram-42DDH7IO-D_MywcVn.js} +1 -1
- package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-C4mQi7AB.js → ishikawaDiagram-UXIWVN3A-N9m-f-Eb.js} +1 -1
- package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-7Vp2UBlF.js → journeyDiagram-VCZTEJTY-DE0q7uSM.js} +1 -1
- package/payload/server/public/assets/{kanban-definition-6JOO6SKY-nEDANSe9.js → kanban-definition-6JOO6SKY-Dj5hb9Bq.js} +1 -1
- package/payload/server/public/assets/{line-BxGbTwly.js → line-C6ph0i4M.js} +1 -1
- package/payload/server/public/assets/{mermaid-parser.core-CAG4AdDd.js → mermaid-parser.core-BrfmEvCA.js} +1 -1
- package/payload/server/public/assets/{mermaid.core-prtUaAsI.js → mermaid.core-DYnHKfDv.js} +3 -3
- package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-Dvcph8zi.js → mindmap-definition-QFDTVHPH-DaSaZfhR.js} +1 -1
- package/payload/server/public/assets/{pieDiagram-DEJITSTG-C4qHs6Vb.js → pieDiagram-DEJITSTG-BAu9Ezbv.js} +1 -1
- package/payload/server/public/assets/{public-DIyn-De4.js → public-UKgkJxKv.js} +3 -3
- package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-I9Et2l2H.js → quadrantDiagram-34T5L4WZ-DRsbL1Xd.js} +1 -1
- package/payload/server/public/assets/{requirementDiagram-MS252O5E-DLKlY81v.js → requirementDiagram-MS252O5E-B9QcsXV6.js} +1 -1
- package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-dX3pgMv_.js → sankeyDiagram-XADWPNL6-DsZbvIlD.js} +1 -1
- package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-C4qTAl3F.js → sequenceDiagram-FGHM5R23-BlT4O2N8.js} +1 -1
- package/payload/server/public/assets/{stateDiagram-FHFEXIEX-DzA0NObk.js → stateDiagram-FHFEXIEX-JFgk1K3Y.js} +1 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-NXz27DaV.js +1 -0
- package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-D-DPUQCU.js → timeline-definition-GMOUNBTQ-DOsHw1ip.js} +1 -1
- package/payload/server/public/assets/{useSelectionMode-C4HDuwDT.js → useSelectionMode-JDGvwvIk.js} +1 -1
- package/payload/server/public/assets/{vennDiagram-DHZGUBPP-C_RwTsUi.js → vennDiagram-DHZGUBPP-CQWIhqZY.js} +1 -1
- package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-BAftlsC2.js → wardleyDiagram-NUSXRM2D-D5Fh7YVL.js} +1 -1
- package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-C_tKMCMd.js → xychartDiagram-5P7HB3ND-C-tINQEs.js} +1 -1
- package/payload/server/public/data.html +5 -5
- package/payload/server/public/graph.html +6 -6
- package/payload/server/public/index.html +6 -6
- package/payload/server/public/public.html +5 -5
- package/payload/server/server.js +235 -79
- package/payload/server/public/assets/channel-DCJza6li.js +0 -1
- package/payload/server/public/assets/classDiagram-6PBFFD2Q-DEo4goqG.js +0 -1
- package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-CoAVCeH7.js +0 -1
- package/payload/server/public/assets/clone-CLnBlH9n.js +0 -1
- package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-Dsgd5hEe.js +0 -1
- /package/payload/server/public/assets/{brand-CCOPpjM4.js → brand-SzZmKKjz.js} +0 -0
|
@@ -200,28 +200,41 @@ export function startRcDaemon(deps) {
|
|
|
200
200
|
let backoffMs = BACKOFF_BASE_MS;
|
|
201
201
|
let consecutiveFastFailures = 0;
|
|
202
202
|
let permanentlyFailed = false;
|
|
203
|
-
const spawnOnce = () => {
|
|
203
|
+
const spawnOnce = async () => {
|
|
204
204
|
if (stopped || permanentlyFailed)
|
|
205
205
|
return;
|
|
206
206
|
const startedAt = now();
|
|
207
207
|
let handle;
|
|
208
|
+
// Task 531 — unique unitToken per spawn attempt. A fixed token
|
|
209
|
+
// (`'rc-daemon'`) reused on a fast restart races systemd's cleanup of
|
|
210
|
+
// the prior transient scope: the next `systemd-run --user --scope
|
|
211
|
+
// --unit=claude-session-rc-daemon.scope` fails with "Unit … was
|
|
212
|
+
// already loaded or has a fragment file", the child exits at
|
|
213
|
+
// `ranMs=5-6`, and the supervisor counts it toward
|
|
214
|
+
// MAX_FAST_FAILURES. The `rc-daemon-` prefix is preserved so the
|
|
215
|
+
// boot-seed `claude-session-*.scope` reconciler and operator log
|
|
216
|
+
// greps still recognise the scope as the rc-daemon's.
|
|
217
|
+
const unitToken = `rc-daemon-${randomUUID()}`;
|
|
208
218
|
try {
|
|
209
|
-
// Task
|
|
210
|
-
//
|
|
211
|
-
//
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
219
|
+
// Task 552 — filter env to strings; systemdSpawn's contract is
|
|
220
|
+
// Record<string,string> and buildRcChildEnv may pass undefineds
|
|
221
|
+
// through from the spread of process.env.
|
|
222
|
+
const cleanEnv = {};
|
|
223
|
+
for (const [k, v] of Object.entries(daemonEnv)) {
|
|
224
|
+
if (typeof v === 'string')
|
|
225
|
+
cleanEnv[k] = v;
|
|
226
|
+
}
|
|
227
|
+
handle = await deps.systemdSpawn({
|
|
228
|
+
claudeBin: deps.claudeBin,
|
|
229
|
+
// --no-create-session-in-dir: do not pre-create the daemon's in-dir
|
|
230
|
+
// session. The daemon starts at platform boot, ahead of any operator
|
|
231
|
+
// intent, so a pre-created session would sit idle until composer
|
|
232
|
+
// creates a real on-demand session anyway.
|
|
233
|
+
claudeArgs: ['rc', '--spawn', 'same-dir', '--no-create-session-in-dir', '--remote-control-session-name-prefix', deps.brandProductName],
|
|
234
|
+
env: cleanEnv,
|
|
235
|
+
cwd: deps.spawnCwd,
|
|
236
|
+
unitToken,
|
|
237
|
+
});
|
|
225
238
|
}
|
|
226
239
|
catch (err) {
|
|
227
240
|
deps.logger(`${TAG} rc-daemon spawn-failed err=${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -229,34 +242,40 @@ export function startRcDaemon(deps) {
|
|
|
229
242
|
return;
|
|
230
243
|
}
|
|
231
244
|
current = handle;
|
|
232
|
-
deps.logger(`${TAG} rc-daemon start accountId=${deps.accountId} cwd=${deps.spawnCwd} pid=${handle.pid} model=${adminModel ?? 'default'} name-prefix=${deps.brandProductName}`);
|
|
233
|
-
// Task
|
|
234
|
-
//
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
outputRing += chunk;
|
|
241
|
-
if (outputRing.length > FAST_EXIT_OUTPUT_MAX_BYTES) {
|
|
242
|
-
outputRing = outputRing.slice(outputRing.length - FAST_EXIT_OUTPUT_MAX_BYTES);
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
handle.onExit((e) => {
|
|
246
|
-
try {
|
|
247
|
-
dataSub.dispose();
|
|
248
|
-
}
|
|
249
|
-
catch { /* already disposed */ }
|
|
245
|
+
deps.logger(`${TAG} rc-daemon start accountId=${deps.accountId} cwd=${deps.spawnCwd} pid=${handle.pid} model=${adminModel ?? 'default'} name-prefix=${deps.brandProductName} spawnMethod=systemd-scope`);
|
|
246
|
+
// Task 552 — exit detection via `handle.waitForExit()` polls
|
|
247
|
+
// `systemctl --user is-active` and reads Result/ExecMainStatus on
|
|
248
|
+
// exit. On fast-exit, `handle.readJournalTail` reads the scope's
|
|
249
|
+
// journal output for the self-diagnosing log line (was a node-pty
|
|
250
|
+
// onData ring buffer pre-552).
|
|
251
|
+
void handle.waitForExit()
|
|
252
|
+
.then(async (exit) => {
|
|
250
253
|
if (current === handle)
|
|
251
254
|
current = null;
|
|
252
255
|
const ranMs = now() - startedAt;
|
|
253
|
-
deps.logger(`${TAG} rc-daemon exit accountId=${deps.accountId} pid=${handle.pid} exitCode=${
|
|
256
|
+
deps.logger(`${TAG} rc-daemon exit accountId=${deps.accountId} pid=${handle.pid} result=${exit.result} exitCode=${exit.exitCode ?? 'null'} execCode=${exit.code ?? 'null'} ranMs=${ranMs}`);
|
|
254
257
|
if (ranMs < FAST_EXIT_THRESHOLD_MS) {
|
|
255
|
-
|
|
256
|
-
|
|
258
|
+
let tail = '';
|
|
259
|
+
try {
|
|
260
|
+
tail = await handle.readJournalTail(FAST_EXIT_OUTPUT_MAX_BYTES);
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
tail = `<readJournalTail failed: ${err instanceof Error ? err.message : String(err)}>`;
|
|
264
|
+
}
|
|
265
|
+
const bytes = tail.length;
|
|
266
|
+
const body = bytes > 0 ? tail : '<no child output captured>';
|
|
257
267
|
deps.logger(`${TAG} rc-daemon fast-exit-output accountId=${deps.accountId} pid=${handle.pid} ranMs=${ranMs} bytes=${bytes} output<<<\n${body}\n>>>`);
|
|
258
268
|
}
|
|
259
269
|
scheduleRestart(startedAt);
|
|
270
|
+
})
|
|
271
|
+
.catch((err) => {
|
|
272
|
+
// waitForExit polls until inactive; the only way it throws is a
|
|
273
|
+
// systemctl runner that itself throws. Log and treat as exit so
|
|
274
|
+
// supervision continues.
|
|
275
|
+
if (current === handle)
|
|
276
|
+
current = null;
|
|
277
|
+
deps.logger(`${TAG} rc-daemon waitForExit-failed accountId=${deps.accountId} pid=${handle.pid} err=${err instanceof Error ? err.message : String(err)}`);
|
|
278
|
+
scheduleRestart(startedAt);
|
|
260
279
|
});
|
|
261
280
|
};
|
|
262
281
|
const scheduleRestart = (startedAt) => {
|
|
@@ -279,7 +298,7 @@ export function startRcDaemon(deps) {
|
|
|
279
298
|
const delay = backoffMs;
|
|
280
299
|
deps.logger(`${TAG} rc-daemon restart-scheduled accountId=${deps.accountId} delayMs=${delay} fastFailures=${consecutiveFastFailures}`);
|
|
281
300
|
backoffMs = Math.min(backoffMs * 2, BACKOFF_MAX_MS);
|
|
282
|
-
setTimer(() => spawnOnce(), delay);
|
|
301
|
+
setTimer(() => { void spawnOnce(); }, delay);
|
|
283
302
|
};
|
|
284
303
|
// Task 523 — gate the eager first spawn on Neo4j readiness. On a host
|
|
285
304
|
// reboot the session-manager (a systemd USER unit) restarts before
|
|
@@ -307,7 +326,7 @@ export function startRcDaemon(deps) {
|
|
|
307
326
|
// guessed port (could falsely pass against another brand's Neo4j).
|
|
308
327
|
if (!hostPort && !deps.checkNeo4jReady) {
|
|
309
328
|
deps.logger(`${TAG} rc-daemon neo4j-readiness-skipped reason=unparseable-uri uri=${deps.brandedNeo4jUri} — spawning without gate`);
|
|
310
|
-
spawnOnce();
|
|
329
|
+
void spawnOnce();
|
|
311
330
|
return;
|
|
312
331
|
}
|
|
313
332
|
const target = hostPort ? `${hostPort.host}:${hostPort.port}` : deps.brandedNeo4jUri;
|
|
@@ -330,7 +349,7 @@ export function startRcDaemon(deps) {
|
|
|
330
349
|
if (waited) {
|
|
331
350
|
deps.logger(`${TAG} rc-daemon neo4j-ready target=${target} waitedMs=${now() - startedWait} — spawning`);
|
|
332
351
|
}
|
|
333
|
-
spawnOnce();
|
|
352
|
+
void spawnOnce();
|
|
334
353
|
return;
|
|
335
354
|
}
|
|
336
355
|
waited = true;
|
|
@@ -352,10 +371,12 @@ export function startRcDaemon(deps) {
|
|
|
352
371
|
stop() {
|
|
353
372
|
stopped = true;
|
|
354
373
|
if (current) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
374
|
+
// Task 552 — `handle.stop()` invokes `systemctl --user stop --no-block`
|
|
375
|
+
// and (when the pid was captured) runs the SIGTERM→SIGKILL escalation
|
|
376
|
+
// against the reparented pid if the scope was already collapsed. Fire
|
|
377
|
+
// and forget: the manager is shutting down; the scope's
|
|
378
|
+
// TimeoutStopSec=5 caps the in-cgroup escalation.
|
|
379
|
+
void current.stop().catch(() => { });
|
|
359
380
|
current = null;
|
|
360
381
|
}
|
|
361
382
|
deps.logger(`${TAG} rc-daemon stopped accountId=${deps.accountId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rc-daemon.js","sourceRoot":"","sources":["../src/rc-daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rc-daemon.js","sourceRoot":"","sources":["../src/rc-daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,14 @@ export interface SessionSidecar {
|
|
|
41
41
|
* random UUID that does not match claude's intrinsic sessionId. Null
|
|
42
42
|
* on pre-Task-451 sidecars and on any non-scope spawn path. */
|
|
43
43
|
scopeUnitToken: string | null;
|
|
44
|
+
/** Task 550 — composer bridge ULIDs (suffix only, no "session_" prefix)
|
|
45
|
+
* that have been bound to this conversation across its lifetime. Every
|
|
46
|
+
* `/rc-spawn` resume against an existing JSONL learns a new bridge ULID
|
|
47
|
+
* from the PID file once claude registers with the composer; the
|
|
48
|
+
* http-server appends it here so a future composer-URL → row lookup is
|
|
49
|
+
* a direct match. Defaults to `[]` on pre-Task-550 sidecars (missing
|
|
50
|
+
* key). Append-only, duplicates suppressed. */
|
|
51
|
+
bridgeIds: string[];
|
|
44
52
|
}
|
|
45
53
|
export interface SidecarReadOutcome {
|
|
46
54
|
sidecar: SessionSidecar | null;
|
|
@@ -69,4 +77,15 @@ export declare function writeSidecar(path: string, sidecar: SessionSidecar, logg
|
|
|
69
77
|
* the other fields would be invented). Single-writer assumption applies
|
|
70
78
|
* — concurrent updates may race and lose the latest value. */
|
|
71
79
|
export declare function updateSidecar(path: string, patch: Partial<SessionSidecar>, logger: Logger): boolean;
|
|
80
|
+
/** Task 550 — append a bridge ULID suffix to `bridgeIds` on the sidecar.
|
|
81
|
+
* Read-modify-write; the atomic rename pattern matches the rest of this
|
|
82
|
+
* module. Returns `'ok'` when written, `'duplicate'` when the suffix was
|
|
83
|
+
* already present (no write performed), and `'no-sidecar'` when the
|
|
84
|
+
* sidecar is missing or unparseable (caller logs and skips — legacy
|
|
85
|
+
* rows without a sidecar are out of scope per the task brief).
|
|
86
|
+
* Single-writer assumption is shared with url-capture's updateSidecar:
|
|
87
|
+
* both are read-modify-write and could race, but they touch disjoint
|
|
88
|
+
* fields, so the rename-loses-write window is the existing limitation
|
|
89
|
+
* rather than a new one. */
|
|
90
|
+
export declare function appendBridgeId(path: string, bridgeSuffix: string, logger: Logger): 'ok' | 'duplicate' | 'no-sidecar';
|
|
72
91
|
//# sourceMappingURL=session-sidecar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sidecar.d.ts","sourceRoot":"","sources":["../src/session-sidecar.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB;;;0BAGsB;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB;;;2CAGuC;IACvC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B;;;;;;uCAMmC;IACnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC;;;yEAGqE;IACrE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;0DACsD;IACtD,MAAM,EAAE,OAAO,CAAA;IACf;4DACwD;IACxD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;;oEAKgE;IAChE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"session-sidecar.d.ts","sourceRoot":"","sources":["../src/session-sidecar.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,OAAO,CAAA;IAChB;;;0BAGsB;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB;;;2CAGuC;IACvC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B;;;;;;uCAMmC;IACnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC;;;yEAGqE;IACrE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;0DACsD;IACtD,MAAM,EAAE,OAAO,CAAA;IACf;4DACwD;IACxD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;;;;oEAKgE;IAChE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B;;;;;;oDAMgD;IAChD,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IAC9B;;;sDAGkD;IAClD,OAAO,EAAE,IAAI,GAAG,SAAS,GAAG,cAAc,CAAA;IAC1C,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;CACd;AAMD;;;;6BAI6B;AAC7B,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA+B5E;AAED;;;qCAGqC;AACrC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBxF;AAED;;;;+DAI+D;AAC/D,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAmBT;AAED;;;;;;;;;6BAS6B;AAC7B,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,IAAI,GAAG,WAAW,GAAG,YAAY,CAmBnC"}
|
|
@@ -121,6 +121,41 @@ export function updateSidecar(path, patch, logger) {
|
|
|
121
121
|
}
|
|
122
122
|
return true;
|
|
123
123
|
}
|
|
124
|
+
/** Task 550 — append a bridge ULID suffix to `bridgeIds` on the sidecar.
|
|
125
|
+
* Read-modify-write; the atomic rename pattern matches the rest of this
|
|
126
|
+
* module. Returns `'ok'` when written, `'duplicate'` when the suffix was
|
|
127
|
+
* already present (no write performed), and `'no-sidecar'` when the
|
|
128
|
+
* sidecar is missing or unparseable (caller logs and skips — legacy
|
|
129
|
+
* rows without a sidecar are out of scope per the task brief).
|
|
130
|
+
* Single-writer assumption is shared with url-capture's updateSidecar:
|
|
131
|
+
* both are read-modify-write and could race, but they touch disjoint
|
|
132
|
+
* fields, so the rename-loses-write window is the existing limitation
|
|
133
|
+
* rather than a new one. */
|
|
134
|
+
export function appendBridgeId(path, bridgeSuffix, logger) {
|
|
135
|
+
const { sidecar } = readSidecar(path, logger);
|
|
136
|
+
if (!sidecar)
|
|
137
|
+
return 'no-sidecar';
|
|
138
|
+
if (sidecar.bridgeIds.includes(bridgeSuffix))
|
|
139
|
+
return 'duplicate';
|
|
140
|
+
const next = { ...sidecar, bridgeIds: [...sidecar.bridgeIds, bridgeSuffix] };
|
|
141
|
+
const tmp = `${path}.tmp.${process.pid}.${Date.now()}`;
|
|
142
|
+
const json = JSON.stringify(next, null, 2);
|
|
143
|
+
const bytes = Buffer.byteLength(json, 'utf8');
|
|
144
|
+
try {
|
|
145
|
+
writeFileSync(tmp, json, 'utf8');
|
|
146
|
+
renameSync(tmp, path);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
try {
|
|
150
|
+
if (existsSync(tmp))
|
|
151
|
+
unlinkSync(tmp);
|
|
152
|
+
}
|
|
153
|
+
catch { /* ignore */ }
|
|
154
|
+
throw err;
|
|
155
|
+
}
|
|
156
|
+
logger(`[session-sidecar] append-bridge sessionId=${basenameShort(path)} bridgeId=${bridgeSuffix} count=${next.bridgeIds.length} bytes=${bytes}`);
|
|
157
|
+
return 'ok';
|
|
158
|
+
}
|
|
124
159
|
const ROLES = ['admin', 'public'];
|
|
125
160
|
const CHANNELS = ['browser', 'whatsapp', 'telegram', 'webchat', 'email'];
|
|
126
161
|
function parseSidecar(raw) {
|
|
@@ -167,6 +202,12 @@ function parseSidecar(raw) {
|
|
|
167
202
|
: typeof r.scopeUnitToken === 'string'
|
|
168
203
|
? r.scopeUnitToken
|
|
169
204
|
: null;
|
|
205
|
+
// Task 550 — `bridgeIds` is optional on disk so pre-550 sidecars (no key)
|
|
206
|
+
// load with `[]`. Non-string entries are dropped silently; the file may
|
|
207
|
+
// have been hand-edited or pre-dates the strict-string contract.
|
|
208
|
+
const bridgeIds = Array.isArray(r.bridgeIds)
|
|
209
|
+
? r.bridgeIds.filter((b) => typeof b === 'string' && b.length > 0)
|
|
210
|
+
: [];
|
|
170
211
|
return {
|
|
171
212
|
senderId: r.senderId,
|
|
172
213
|
role: r.role,
|
|
@@ -179,6 +220,7 @@ function parseSidecar(raw) {
|
|
|
179
220
|
hidden: r.hidden,
|
|
180
221
|
specialist,
|
|
181
222
|
scopeUnitToken,
|
|
223
|
+
bridgeIds,
|
|
182
224
|
};
|
|
183
225
|
}
|
|
184
226
|
function basenameShort(path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-sidecar.js","sourceRoot":"","sources":["../src/session-sidecar.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,sEAAsE;AACtE,kEAAkE;AAClE,uEAAuE;AACvE,sEAAsE;AACtE,uEAAuE;AACvE,uDAAuD;AACvD,EAAE;AACF,iEAAiE;AACjE,uEAAuE;AACvE,wEAAwE;AACxE,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,sEAAsE;AACtE,uDAAuD;AACvD,EAAE;AACF,qEAAqE;AACrE,+DAA+D;AAC/D,qEAAqE;AACrE,+DAA+D;AAC/D,+CAA+C;AAE/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"session-sidecar.js","sourceRoot":"","sources":["../src/session-sidecar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type SystemctlRunner } from './systemd-scope.js';
|
|
2
|
+
export interface SystemdSpawnParams {
|
|
3
|
+
claudeBin: string;
|
|
4
|
+
claudeArgs: readonly string[];
|
|
5
|
+
/** Env stamped onto the scope via `--setenv=KEY=VAL` flags. Manager-side
|
|
6
|
+
* vars (XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS) needed to reach user
|
|
7
|
+
* systemd are read from process.env separately. */
|
|
8
|
+
env: Readonly<Record<string, string>>;
|
|
9
|
+
cwd: string;
|
|
10
|
+
unitToken: string;
|
|
11
|
+
/** systemctl runner — production uses spawnSync; tests inject a stub. */
|
|
12
|
+
runSystemctl?: SystemctlRunner;
|
|
13
|
+
/** Injected child-process spawner for tests. Production uses node:child_process spawn. */
|
|
14
|
+
spawnChild?: (cmd: string, args: readonly string[], opts: SpawnOpts) => SpawnedChild;
|
|
15
|
+
/** Maximum wait for the scope's MainPID to become non-zero. Default 5000. */
|
|
16
|
+
activationTimeoutMs?: number;
|
|
17
|
+
/** Inter-poll interval while resolving MainPID. Default 50. */
|
|
18
|
+
activationPollIntervalMs?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface SpawnOpts {
|
|
21
|
+
cwd: string;
|
|
22
|
+
env: NodeJS.ProcessEnv;
|
|
23
|
+
stdio: 'ignore';
|
|
24
|
+
detached: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface SpawnedChild {
|
|
27
|
+
pid: number | undefined;
|
|
28
|
+
unref(): void;
|
|
29
|
+
on(event: 'error', cb: (err: Error) => void): void;
|
|
30
|
+
}
|
|
31
|
+
export interface ScopeExit {
|
|
32
|
+
/** systemd's Result string: "success", "exit-code", "signal", "timeout", "core-dump", "watchdog", "start-limit-hit", "resources". */
|
|
33
|
+
result: string;
|
|
34
|
+
/** ExecMainStatus — process exit code or signal number depending on `result`. */
|
|
35
|
+
exitCode: number | null;
|
|
36
|
+
/** ExecMainCode — "exited" / "killed" / "dumped", from systemd's process-exit classification. */
|
|
37
|
+
code: string | null;
|
|
38
|
+
}
|
|
39
|
+
export interface WaitForExitOpts {
|
|
40
|
+
pollIntervalMs?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface SystemdScopeHandle {
|
|
43
|
+
pid: number;
|
|
44
|
+
unitToken: string;
|
|
45
|
+
/** Resolves once the scope unit's `ActiveState` is no longer in the
|
|
46
|
+
* set { 'active', 'activating', 'reloading' }. Reads the unit's
|
|
47
|
+
* `Result`, `ExecMainStatus`, and `ExecMainCode` to populate
|
|
48
|
+
* the returned `ScopeExit`. */
|
|
49
|
+
waitForExit(opts?: WaitForExitOpts): Promise<ScopeExit>;
|
|
50
|
+
/** Read the scope's journal tail (default `--output=cat`, last 200 lines).
|
|
51
|
+
* Trimmed to `maxBytes` from the end so the line preceding exit wins. */
|
|
52
|
+
readJournalTail(maxBytes: number): Promise<string>;
|
|
53
|
+
/** Stop the scope via `systemctl --user stop --no-block` (delegates to
|
|
54
|
+
* systemd-scope.stopScopeUnit so the existing escalation path applies). */
|
|
55
|
+
stop(): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
/** Spawn `systemd-run --user --scope ... <claudeBin> <claudeArgs>` so the
|
|
58
|
+
* manager holds no file descriptors for the resulting claude process.
|
|
59
|
+
* Returns once MainPID is available; on activation timeout, rejects with
|
|
60
|
+
* a deterministic Error so the caller can log / restart. */
|
|
61
|
+
export declare function systemdSpawn(p: SystemdSpawnParams): Promise<SystemdScopeHandle>;
|
|
62
|
+
//# sourceMappingURL=systemd-spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemd-spawn.d.ts","sourceRoot":"","sources":["../src/systemd-spawn.ts"],"names":[],"mappings":"AAwBA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B;;wDAEoD;IACpD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B,0FAA0F;IAC1F,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,YAAY,CAAA;IACpF,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,+DAA+D;IAC/D,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,KAAK,IAAI,IAAI,CAAA;IACb,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,SAAS;IACxB,qIAAqI;IACrI,MAAM,EAAE,MAAM,CAAA;IACd,iFAAiF;IACjF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iGAAiG;IACjG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB;;;oCAGgC;IAChC,WAAW,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACvD;8EAC0E;IAC1E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD;gFAC4E;IAC5E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAID;;;6DAG6D;AAC7D,wBAAsB,YAAY,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmErF"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// Task 552 — non-PTY spawn primitive for claude scope units.
|
|
2
|
+
//
|
|
3
|
+
// Wraps `child_process.spawn` around `systemd-run --user --scope ...` so
|
|
4
|
+
// the manager allocates ZERO file descriptors per spawn (stdio: 'ignore',
|
|
5
|
+
// detached + unref). The previous `spawnPty` adapter wrapped node-pty
|
|
6
|
+
// around the same systemd-run argv, which opened a master pty fd in the
|
|
7
|
+
// manager process — one fd leaked per /rc-spawn click and one per
|
|
8
|
+
// rc-daemon respawn until V8 GC fired.
|
|
9
|
+
//
|
|
10
|
+
// This primitive is for spawns the manager never talks to: `/rc-spawn`
|
|
11
|
+
// (fire-and-forget, the route never writes back to the child) and the
|
|
12
|
+
// rc-daemon supervisor (stdout via journal, exit detection via
|
|
13
|
+
// systemctl). Channel-bridge spawns (`/spawn`, `:sessionId/input`,
|
|
14
|
+
// WhatsApp / public-agent / channel-pty-bridge) keep node-pty because
|
|
15
|
+
// they genuinely need bidirectional IO with the manager.
|
|
16
|
+
//
|
|
17
|
+
// Argv composition reuses `buildSystemdRunArgv` from systemd-scope.ts so
|
|
18
|
+
// the SIGHUP wrap, per-spawn unit token, slice membership, and
|
|
19
|
+
// `--setenv=KEY=VAL` env block are byte-identical with the PTY spawn
|
|
20
|
+
// path. The pid is read back via `systemctl --user show -p MainPID`
|
|
21
|
+
// once the scope activates — authoritative even if a future systemd
|
|
22
|
+
// version forks before execve.
|
|
23
|
+
import { spawn } from 'node:child_process';
|
|
24
|
+
import { buildSystemdRunArgv, defaultSystemctlRunner, scopeUnitName, stopScopeUnit, } from './systemd-scope.js';
|
|
25
|
+
const ACTIVE_STATES = new Set(['active', 'activating', 'reloading']);
|
|
26
|
+
/** Spawn `systemd-run --user --scope ... <claudeBin> <claudeArgs>` so the
|
|
27
|
+
* manager holds no file descriptors for the resulting claude process.
|
|
28
|
+
* Returns once MainPID is available; on activation timeout, rejects with
|
|
29
|
+
* a deterministic Error so the caller can log / restart. */
|
|
30
|
+
export async function systemdSpawn(p) {
|
|
31
|
+
const run = p.runSystemctl ?? defaultSystemctlRunner;
|
|
32
|
+
const spawnChild = p.spawnChild ?? defaultSpawnChild;
|
|
33
|
+
const activationTimeoutMs = p.activationTimeoutMs ?? 5_000;
|
|
34
|
+
const pollIntervalMs = p.activationPollIntervalMs ?? 50;
|
|
35
|
+
const wrapped = buildSystemdRunArgv({
|
|
36
|
+
unitToken: p.unitToken,
|
|
37
|
+
claudeBin: p.claudeBin,
|
|
38
|
+
claudeArgs: p.claudeArgs,
|
|
39
|
+
env: p.env,
|
|
40
|
+
cwd: p.cwd,
|
|
41
|
+
});
|
|
42
|
+
// Spawn systemd-run as a detached child with stdio:'ignore'. The manager
|
|
43
|
+
// process holds zero fds to it; user systemd owns the scope cgroup's
|
|
44
|
+
// lifetime. `detached: true` puts the child in its own process group so
|
|
45
|
+
// it survives manager exit (systemd already owns it once registered, but
|
|
46
|
+
// the detach is belt-and-braces against PG signal forwarding).
|
|
47
|
+
let child;
|
|
48
|
+
const errorBox = { err: null };
|
|
49
|
+
try {
|
|
50
|
+
child = spawnChild(wrapped.cmd, wrapped.args, {
|
|
51
|
+
cwd: p.cwd,
|
|
52
|
+
env: process.env,
|
|
53
|
+
stdio: 'ignore',
|
|
54
|
+
detached: true,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new Error(`[systemd-spawn] spawn-failed unitToken=${p.unitToken} err=${err instanceof Error ? err.message : String(err)}`);
|
|
59
|
+
}
|
|
60
|
+
child.on('error', (err) => {
|
|
61
|
+
errorBox.err = err;
|
|
62
|
+
});
|
|
63
|
+
child.unref();
|
|
64
|
+
// Poll `systemctl show -p MainPID --value <unit>` until non-zero or
|
|
65
|
+
// timeout. systemd-run --scope registers with PID1 before execve'ing
|
|
66
|
+
// into the wrapped command; MainPID is the canonical pid of the
|
|
67
|
+
// scope's runner (claude), authoritative across any fork the
|
|
68
|
+
// systemd-run binary may introduce.
|
|
69
|
+
const unit = scopeUnitName(p.unitToken);
|
|
70
|
+
const deadline = Date.now() + activationTimeoutMs;
|
|
71
|
+
while (Date.now() < deadline) {
|
|
72
|
+
if (errorBox.err) {
|
|
73
|
+
throw new Error(`[systemd-spawn] child-error unitToken=${p.unitToken} err=${errorBox.err.message}`);
|
|
74
|
+
}
|
|
75
|
+
const r = run(['--user', 'show', '-p', 'MainPID', '--value', unit]);
|
|
76
|
+
if (r.exitCode === 0) {
|
|
77
|
+
const raw = r.stdout.trim();
|
|
78
|
+
if (raw && raw !== '0') {
|
|
79
|
+
const n = Number.parseInt(raw, 10);
|
|
80
|
+
if (Number.isFinite(n) && n > 0) {
|
|
81
|
+
return buildHandle(n, p.unitToken, run);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
await sleep(pollIntervalMs);
|
|
86
|
+
}
|
|
87
|
+
throw new Error(`[systemd-spawn] activation-timeout unitToken=${p.unitToken} timeoutMs=${activationTimeoutMs}`);
|
|
88
|
+
}
|
|
89
|
+
function buildHandle(pid, unitToken, run) {
|
|
90
|
+
const unit = scopeUnitName(unitToken);
|
|
91
|
+
return {
|
|
92
|
+
pid,
|
|
93
|
+
unitToken,
|
|
94
|
+
async waitForExit(opts) {
|
|
95
|
+
const interval = opts?.pollIntervalMs ?? 250;
|
|
96
|
+
while (true) {
|
|
97
|
+
const r = run(['--user', 'show', '-p', 'ActiveState', '--value', unit]);
|
|
98
|
+
const state = r.exitCode === 0 ? r.stdout.trim() : '';
|
|
99
|
+
// Empty state OR exit code 4 (unit not loaded) means the transient
|
|
100
|
+
// unit has been collected — treat as exited.
|
|
101
|
+
if (!state || !ACTIVE_STATES.has(state)) {
|
|
102
|
+
return readScopeExit(run, unit);
|
|
103
|
+
}
|
|
104
|
+
await sleep(interval);
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
async readJournalTail(maxBytes) {
|
|
108
|
+
return readJournal(unit, maxBytes);
|
|
109
|
+
},
|
|
110
|
+
async stop() {
|
|
111
|
+
await stopScopeUnit(run, unitToken, { pid });
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function readScopeExit(run, unit) {
|
|
116
|
+
const r = run([
|
|
117
|
+
'--user',
|
|
118
|
+
'show',
|
|
119
|
+
'-p', 'Result',
|
|
120
|
+
'-p', 'ExecMainStatus',
|
|
121
|
+
'-p', 'ExecMainCode',
|
|
122
|
+
unit,
|
|
123
|
+
]);
|
|
124
|
+
if (r.exitCode !== 0) {
|
|
125
|
+
return { result: 'unknown', exitCode: null, code: null };
|
|
126
|
+
}
|
|
127
|
+
const fields = {};
|
|
128
|
+
for (const line of r.stdout.split('\n')) {
|
|
129
|
+
const eq = line.indexOf('=');
|
|
130
|
+
if (eq < 0)
|
|
131
|
+
continue;
|
|
132
|
+
fields[line.slice(0, eq)] = line.slice(eq + 1);
|
|
133
|
+
}
|
|
134
|
+
const statusRaw = fields.ExecMainStatus ?? '';
|
|
135
|
+
const status = statusRaw === '' ? null : Number.parseInt(statusRaw, 10);
|
|
136
|
+
return {
|
|
137
|
+
result: fields.Result || 'unknown',
|
|
138
|
+
exitCode: Number.isFinite(status) ? status : null,
|
|
139
|
+
code: fields.ExecMainCode || null,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
async function readJournal(unit, maxBytes) {
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
let buf = '';
|
|
145
|
+
try {
|
|
146
|
+
const child = spawn('journalctl', ['--user', '-u', unit, '-n', '200', '--no-pager', '--output=cat'], { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
147
|
+
child.stdout?.on('data', (chunk) => {
|
|
148
|
+
buf += chunk.toString('utf8');
|
|
149
|
+
if (buf.length > maxBytes * 2)
|
|
150
|
+
buf = buf.slice(buf.length - maxBytes);
|
|
151
|
+
});
|
|
152
|
+
child.on('error', () => resolve(''));
|
|
153
|
+
child.on('close', () => {
|
|
154
|
+
resolve(buf.length > maxBytes ? buf.slice(buf.length - maxBytes) : buf);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
resolve('');
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function defaultSpawnChild(cmd, args, opts) {
|
|
163
|
+
const child = spawn(cmd, [...args], opts);
|
|
164
|
+
return {
|
|
165
|
+
pid: child.pid,
|
|
166
|
+
unref: () => child.unref(),
|
|
167
|
+
on: (event, cb) => { child.on(event, cb); },
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function sleep(ms) {
|
|
171
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=systemd-spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"systemd-spawn.js","sourceRoot":"","sources":["../src/systemd-spawn.ts"],"names":[],"mappings":"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"}
|