opensquid 0.5.395 → 0.5.399

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.
Files changed (38) hide show
  1. package/README.md +7 -13
  2. package/dist/cli.js +15 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/functions/handoff_session_start.d.ts.map +1 -1
  5. package/dist/functions/handoff_session_start.js +12 -0
  6. package/dist/functions/handoff_session_start.js.map +1 -1
  7. package/dist/mcp/tools/workgraph.d.ts +4 -4
  8. package/dist/models/strategies/subscription_cli.d.ts +10 -21
  9. package/dist/models/strategies/subscription_cli.d.ts.map +1 -1
  10. package/dist/models/strategies/subscription_cli.js +24 -80
  11. package/dist/models/strategies/subscription_cli.js.map +1 -1
  12. package/dist/runtime/agent_bridge/agent_loop_subscription.d.ts +1 -1
  13. package/dist/runtime/agent_bridge/agent_loop_subscription.d.ts.map +1 -1
  14. package/dist/runtime/agent_bridge/agent_loop_subscription.js +20 -56
  15. package/dist/runtime/agent_bridge/agent_loop_subscription.js.map +1 -1
  16. package/dist/runtime/hooks/post-tool-use.js +2 -0
  17. package/dist/runtime/hooks/post-tool-use.js.map +1 -1
  18. package/dist/runtime/hooks/pre-tool-use.js +2 -0
  19. package/dist/runtime/hooks/pre-tool-use.js.map +1 -1
  20. package/dist/runtime/hooks/session-end.js +2 -0
  21. package/dist/runtime/hooks/session-end.js.map +1 -1
  22. package/dist/runtime/hooks/session-start.js +2 -0
  23. package/dist/runtime/hooks/session-start.js.map +1 -1
  24. package/dist/runtime/hooks/stop.js +2 -0
  25. package/dist/runtime/hooks/stop.js.map +1 -1
  26. package/dist/runtime/hooks/subagent_guard.d.ts +26 -0
  27. package/dist/runtime/hooks/subagent_guard.d.ts.map +1 -0
  28. package/dist/runtime/hooks/subagent_guard.js +33 -0
  29. package/dist/runtime/hooks/subagent_guard.js.map +1 -0
  30. package/dist/runtime/hooks/user-prompt-submit.d.ts.map +1 -1
  31. package/dist/runtime/hooks/user-prompt-submit.js +2 -0
  32. package/dist/runtime/hooks/user-prompt-submit.js.map +1 -1
  33. package/dist/runtime/spawn_lifecycle.d.ts +61 -0
  34. package/dist/runtime/spawn_lifecycle.d.ts.map +1 -0
  35. package/dist/runtime/spawn_lifecycle.js +137 -0
  36. package/dist/runtime/spawn_lifecycle.js.map +1 -0
  37. package/docs/pack-runtime.md +12 -0
  38. package/package.json +2 -2
package/README.md CHANGED
@@ -3,11 +3,10 @@
3
3
  # OpenSquid
4
4
 
5
5
  [![CI](https://github.com/smlee/opensquid/actions/workflows/ci.yml/badge.svg)](https://github.com/smlee/opensquid/actions/workflows/ci.yml)
6
+ [![npm](https://img.shields.io/npm/v/opensquid)](https://www.npmjs.com/package/opensquid)
6
7
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
7
8
  ![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen)
8
9
 
9
- <!-- [![npm](https://img.shields.io/npm/v/opensquid)](https://www.npmjs.com/package/opensquid) — uncomment once published -->
10
-
11
10
  OpenSquid gives your coding agent continuity: memory, ready work, gates, and a path across devices.
12
11
 
13
12
  It is an MCP operating layer that adds durable memory, dependency-aware task state, workflow gates, inspectable packs, and chat bridges to the agent you already use. The agent still writes code. OpenSquid keeps the state it should not be inventing in prose: what it remembers, what is ready, what is blocked, which process gates passed, and which lessons are still only proposals. The long-term direction is to carry that same continuity across devices, models, and local capabilities.
@@ -18,33 +17,28 @@ It is an MCP operating layer that adds durable memory, dependency-aware task sta
18
17
 
19
18
  ## Quickstart
20
19
 
21
- OpenSquid is not published to npm yet. For now, build from the repo:
22
-
23
20
  ```bash
24
- git clone git@github.com:smlee/opensquid.git
25
- cd opensquid
26
- pnpm install
27
- pnpm build
21
+ npm install -g opensquid
28
22
  ```
29
23
 
30
24
  Register the MCP server with Claude Code:
31
25
 
32
26
  ```bash
33
- node dist/cli.js setup wizard mcp
27
+ opensquid setup wizard mcp
34
28
  ```
35
29
 
36
30
  Optional hooks:
37
31
 
38
32
  ```bash
39
- node dist/cli.js setup wizard hooks
40
- node dist/cli.js doctor hooks
33
+ opensquid setup wizard hooks
34
+ opensquid doctor hooks
41
35
  ```
42
36
 
43
37
  Using codex? The same gates install inside codex CLI (its hook protocol is Claude Code-compatible):
44
38
 
45
39
  ```bash
46
- node dist/cli.js setup wizard codex-hooks # then trust the entries via /hooks inside codex
47
- node dist/cli.js doctor codex-hooks
40
+ opensquid setup wizard codex-hooks # then trust the entries via /hooks inside codex
41
+ opensquid doctor codex-hooks
48
42
  ```
49
43
 
50
44
  Restart your MCP host. Your agent now has tools for memory, task graph state, pack inspection, workflow phase logs, and lesson capture.
package/dist/cli.js CHANGED
@@ -14,6 +14,7 @@
14
14
  * launchd / systemd integration (UI track) — running it inline would block
15
15
  * the CLI invocation forever, which is a foot-gun for first-time users.
16
16
  */
17
+ import { readFileSync } from 'node:fs';
17
18
  import { join } from 'node:path';
18
19
  import { Command } from 'commander';
19
20
  import { registerChatDaemon, runChatDaemonWorkerEntry } from './channels/daemon/cli.js';
@@ -57,11 +58,24 @@ if (process.argv[2] === 'chat-daemon-worker') {
57
58
  else {
58
59
  runCli();
59
60
  }
61
+ /** The live package.json version (same idiom as mcp/server.ts) — this file
62
+ * lives at <root>/{dist,src}/cli.{js,ts}; package.json is one level up. A
63
+ * hardcoded literal here went stale for 311 releases (0.5.85 → 0.5.396). */
64
+ function readPackageVersion() {
65
+ try {
66
+ const pkgJsonPath = new URL('../package.json', import.meta.url);
67
+ const parsed = JSON.parse(readFileSync(pkgJsonPath, 'utf8'));
68
+ return parsed.version ?? '0.0.0';
69
+ }
70
+ catch {
71
+ return '0.0.0';
72
+ }
73
+ }
60
74
  function runCli() {
61
75
  const program = new Command()
62
76
  .name('opensquid')
63
77
  .description('Tracks for your AI agent — destination-first.')
64
- .version('0.5.85');
78
+ .version(readPackageVersion());
65
79
  const daemon = program.command('daemon').description('Background daemon lifecycle');
66
80
  daemon
67
81
  .command('status')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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;AAaxB,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,CA4CxF,CAAC"}
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,CAuDxF,CAAC"}
@@ -20,6 +20,7 @@ import { dirname } from 'node:path';
20
20
  import { z } from 'zod';
21
21
  import { handoverDocPath, renderInjection, runHandoff, umbrellaRootFor, } from '../runtime/handoff/index.js';
22
22
  import { hasResumableState } from '../runtime/handoff/substance.js';
23
+ import { isSessionPlausible } from '../runtime/hooks/session_liveness.js';
23
24
  import { readProjectCurrentSession } from '../runtime/hooks/session_id.js';
24
25
  import { resolveProjectUuid, sessionStateFile } from '../runtime/paths.js';
25
26
  import { ok } from '../runtime/result.js';
@@ -51,6 +52,17 @@ export const HandoffSessionStart = {
51
52
  const stamp = sessionStateFile(ctx.sessionId, 'handoff-read');
52
53
  if ((await mtimeOf(stamp)) !== null)
53
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);
54
66
  const umbrellaRoot = await umbrellaRootFor(cwd);
55
67
  const fsmPath = sessionStateFile(deadSid, 'fsm-coding-flow');
56
68
  const fsmM = await mtimeOf(fsmPath);
@@ -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,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,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,wEAAwE;YACxE,yEAAyE;YACzE,IAAI,OAAO,GAAkB,IAAI,CAAC;YAClC,IAAI,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,kEAAkE;gBAClE,uEAAuE;gBACvE,OAAO,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;oBAClD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB;oBACpE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;QAC5D,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"handoff_session_start.js","sourceRoot":"","sources":["../../src/functions/handoff_session_start.ts"],"names":[],"mappings":"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"}
@@ -27,12 +27,12 @@ export declare const WgUpdateSchema: z.ZodObject<{
27
27
  body: z.ZodOptional<z.ZodString>;
28
28
  }, "strip", z.ZodTypeAny, {
29
29
  id: string;
30
- status?: "in_progress" | "open" | "closed" | undefined;
30
+ status?: "closed" | "in_progress" | "open" | undefined;
31
31
  body?: string | undefined;
32
32
  title?: string | undefined;
33
33
  }, {
34
34
  id: string;
35
- status?: "in_progress" | "open" | "closed" | undefined;
35
+ status?: "closed" | "in_progress" | "open" | undefined;
36
36
  body?: string | undefined;
37
37
  title?: string | undefined;
38
38
  }>;
@@ -59,9 +59,9 @@ export declare const WgIdSchema: z.ZodObject<{
59
59
  export declare const WgListSchema: z.ZodObject<{
60
60
  status: z.ZodOptional<z.ZodEnum<["open", "in_progress", "closed"]>>;
61
61
  }, "strip", z.ZodTypeAny, {
62
- status?: "in_progress" | "open" | "closed" | undefined;
62
+ status?: "closed" | "in_progress" | "open" | undefined;
63
63
  }, {
64
- status?: "in_progress" | "open" | "closed" | undefined;
64
+ status?: "closed" | "in_progress" | "open" | undefined;
65
65
  }>;
66
66
  export declare const WgReadySchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
67
67
  export declare const handleWgCreate: (a: z.infer<typeof WgCreateSchema>, s: WorkGraphStore) => Promise<string>;
@@ -8,31 +8,20 @@
8
8
  * `models.yaml`; opensquid treats it as an opaque string. The audit-grep
9
9
  * defined in the task spec must return empty against this file.
10
10
  *
11
- * Lifecycle:
12
- * 1. spawn(cli, args) with stdio: ['pipe', 'pipe', 'pipe']
13
- * 2. setTimeout(timeoutMs ?? 30_000) on fire, SIGTERM the child + reject
14
- * 3. write the prompt to stdin and end it (signals EOF to the binary)
15
- * 4. accumulate stdout / stderr
16
- * 5. on close: clearTimeout; exit 0 resolve stdout.trim(); else reject
17
- * with stderr-tagged message
11
+ * Lifecycle (SUB.2, wg-627effbb2c38): owned by the SHARED helper
12
+ * `runtime/spawn_lifecycle.ts` explicit lifecycle FSM, detached group
13
+ * leadership, SIGTERM ref'd 5s grace process-group SIGKILL, and the
14
+ * SUB.1 `OPENSQUID_SUBAGENT` hook-silencing marker (this site spawns
15
+ * REVIEWERS they must never own coding-flow state). The >64KB
16
+ * stdin-pipe deadlock limitation is documented there (Phase-2 scope).
18
17
  *
19
- * Phase-1 limitation stdin/stdout deadlock for >64KB prompts:
20
- * Node's pipe stdio uses OS pipe buffers (~64KB on Linux/macOS). For a
21
- * very large prompt, `proc.stdin.write(prompt)` can fill the kernel buffer
22
- * before the child has read enough, and the child may concurrently fill
23
- * its stdout buffer waiting for us to drain — classic mutual-deadlock.
24
- * Phase 1 documents this limit; Phase 2 (cross-cutting LLM track) adds a
25
- * temp-file fallback for prompts above the threshold. Do NOT add a stdin
26
- * `drain` handler here without the temp-file path landing — partial
27
- * mitigations have hidden failure modes.
28
- *
29
- * Exit-code contract:
18
+ * Exit-code contract (preserved through the helper):
30
19
  * - exit 0 → resolve(stdout.trim())
31
20
  * - exit ≠ 0 → reject(Error(`exit ${code}: ${stderr.trim()}`))
32
- * - spawn error (ENOENT etc.) → reject via `proc.on('error')`
33
- * - timeout → SIGTERM + reject(Error('timeout after Xms'))
21
+ * - spawn error (ENOENT etc.) → reject(Error('spawn failed: '))
22
+ * - timeout → SIGTERM + reject(CliTimeoutError('timeout after Xms'))
34
23
  *
35
- * Imports from: node:child_process, ../types.js.
24
+ * Imports from: ../../runtime/spawn_lifecycle.js, ../types.js.
36
25
  * Imported by: models/dispatcher.ts.
37
26
  */
38
27
  import type { ModelAliasConfig, ModelStrategy } from '../types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"subscription_cli.d.ts","sourceRoot":"","sources":["../../../src/models/strategies/subscription_cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAInE;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,SAAS,EAAE,MAAM;CAI9B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CA2E5E"}
1
+ {"version":3,"file":"subscription_cli.d.ts","sourceRoot":"","sources":["../../../src/models/strategies/subscription_cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAInE;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,SAAS,EAAE,MAAM;CAI9B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,aAAa,CA0B5E"}
@@ -8,34 +8,23 @@
8
8
  * `models.yaml`; opensquid treats it as an opaque string. The audit-grep
9
9
  * defined in the task spec must return empty against this file.
10
10
  *
11
- * Lifecycle:
12
- * 1. spawn(cli, args) with stdio: ['pipe', 'pipe', 'pipe']
13
- * 2. setTimeout(timeoutMs ?? 30_000) on fire, SIGTERM the child + reject
14
- * 3. write the prompt to stdin and end it (signals EOF to the binary)
15
- * 4. accumulate stdout / stderr
16
- * 5. on close: clearTimeout; exit 0 resolve stdout.trim(); else reject
17
- * with stderr-tagged message
11
+ * Lifecycle (SUB.2, wg-627effbb2c38): owned by the SHARED helper
12
+ * `runtime/spawn_lifecycle.ts` explicit lifecycle FSM, detached group
13
+ * leadership, SIGTERM ref'd 5s grace process-group SIGKILL, and the
14
+ * SUB.1 `OPENSQUID_SUBAGENT` hook-silencing marker (this site spawns
15
+ * REVIEWERS they must never own coding-flow state). The >64KB
16
+ * stdin-pipe deadlock limitation is documented there (Phase-2 scope).
18
17
  *
19
- * Phase-1 limitation stdin/stdout deadlock for >64KB prompts:
20
- * Node's pipe stdio uses OS pipe buffers (~64KB on Linux/macOS). For a
21
- * very large prompt, `proc.stdin.write(prompt)` can fill the kernel buffer
22
- * before the child has read enough, and the child may concurrently fill
23
- * its stdout buffer waiting for us to drain — classic mutual-deadlock.
24
- * Phase 1 documents this limit; Phase 2 (cross-cutting LLM track) adds a
25
- * temp-file fallback for prompts above the threshold. Do NOT add a stdin
26
- * `drain` handler here without the temp-file path landing — partial
27
- * mitigations have hidden failure modes.
28
- *
29
- * Exit-code contract:
18
+ * Exit-code contract (preserved through the helper):
30
19
  * - exit 0 → resolve(stdout.trim())
31
20
  * - exit ≠ 0 → reject(Error(`exit ${code}: ${stderr.trim()}`))
32
- * - spawn error (ENOENT etc.) → reject via `proc.on('error')`
33
- * - timeout → SIGTERM + reject(Error('timeout after Xms'))
21
+ * - spawn error (ENOENT etc.) → reject(Error('spawn failed: '))
22
+ * - timeout → SIGTERM + reject(CliTimeoutError('timeout after Xms'))
34
23
  *
35
- * Imports from: node:child_process, ../types.js.
24
+ * Imports from: ../../runtime/spawn_lifecycle.js, ../types.js.
36
25
  * Imported by: models/dispatcher.ts.
37
26
  */
38
- import { spawn } from 'node:child_process';
27
+ import { runOneShotCli } from '../../runtime/spawn_lifecycle.js';
39
28
  const DEFAULT_TIMEOUT_MS = 30_000;
40
29
  /**
41
30
  * Typed timeout rejection so callers classify by TYPE, never by message text
@@ -57,65 +46,20 @@ export function subscriptionCliStrategy(cfg) {
57
46
  const cliBin = cfg.cli;
58
47
  const args = cfg.args ?? [];
59
48
  const timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
60
- return new Promise((resolve, reject) => {
61
- const proc = spawn(cliBin, args, {
62
- stdio: ['pipe', 'pipe', 'pipe'],
63
- });
64
- let stdout = '';
65
- let stderr = '';
66
- let settled = false;
67
- // Idempotent settlement: spawn-error, exit, and timeout can race
68
- // (e.g. timer fires while close is already in flight); first one
69
- // wins, the others are no-ops.
70
- const settle = (fn) => {
71
- if (settled)
72
- return;
73
- settled = true;
74
- clearTimeout(timer);
75
- fn();
76
- };
77
- const timer = setTimeout(() => {
78
- // SIGTERM lets the child clean up; if it ignores SIGTERM the
79
- // process leaks until OS kills it — acceptable Phase 1 trade-off
80
- // (the kernel reaps eventually, and we've already rejected the
81
- // promise so the caller is unblocked).
82
- proc.kill('SIGTERM');
83
- settle(() => reject(new CliTimeoutError(timeoutMs)));
84
- }, timeoutMs);
85
- proc.stdout.on('data', (d) => {
86
- stdout += d.toString('utf8');
87
- });
88
- proc.stderr.on('data', (d) => {
89
- stderr += d.toString('utf8');
90
- });
91
- proc.on('error', (e) => {
92
- // ENOENT (cli not on PATH), EACCES (not executable), etc. The
93
- // 'close' event may or may not fire after 'error' — settle here
94
- // to avoid both firing.
95
- settle(() => reject(new Error(`spawn failed: ${e.message}`)));
96
- });
97
- proc.on('close', (code) => {
98
- settle(() => {
99
- if (code === 0) {
100
- resolve(stdout.trim());
101
- }
102
- else {
103
- reject(new Error(`exit ${code}: ${stderr.trim()}`));
104
- }
105
- });
106
- });
107
- // stdin.end() flushes the prompt and signals EOF to the binary.
108
- // Wrapped in try/catch because the child may have already exited
109
- // (e.g. spawn error fired synchronously on Windows) and writing
110
- // to a closed stream throws EPIPE.
111
- try {
112
- proc.stdin.write(prompt);
113
- proc.stdin.end();
114
- }
115
- catch (e) {
116
- settle(() => reject(new Error(`stdin write failed: ${String(e)}`)));
117
- }
49
+ // SUB.2 (wg-627effbb2c38): the spawn lifecycle (detached group
50
+ // leadership, SIGTERM -> ref'd grace -> group SIGKILL, the SUB.1
51
+ // OPENSQUID_SUBAGENT marker) lives in the SHARED helper — one
52
+ // implementation for this site and the agent-bridge client. The
53
+ // reviewer child tree is hook-silenced via markSubagent.
54
+ const out = await runOneShotCli({
55
+ cli: cliBin,
56
+ args,
57
+ prompt,
58
+ timeoutMs,
59
+ markSubagent: true,
60
+ timeoutError: (ms) => new CliTimeoutError(ms),
118
61
  });
62
+ return out.trim();
119
63
  },
120
64
  };
121
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subscription_cli.js","sourceRoot":"","sources":["../../../src/models/strategies/subscription_cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription_cli.js","sourceRoot":"","sources":["../../../src/models/strategies/subscription_cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAIjE,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,SAAiB;QAC3B,KAAK,CAAC,iBAAiB,SAAS,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAqB;IAC3D,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,IAA6B;YACtD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC7F,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,kBAAkB,CAAC;YAExD,+DAA+D;YAC/D,iEAAiE;YACjE,8DAA8D;YAC9D,gEAAgE;YAChE,yDAAyD;YACzD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC;gBAC9B,GAAG,EAAE,MAAM;gBACX,IAAI;gBACJ,MAAM;gBACN,SAAS;gBACT,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,CAAC;aAC9C,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -67,7 +67,7 @@
67
67
  *
68
68
  * Imports from: node:child_process, ./types.js.
69
69
  * Imported by: ./index.ts (barrel), ./agent_loop_subscription.test.ts.
70
- * Future: dispatcher.ts (WAB-SUB.2) when the daemon path is wired.
70
+ * dispatcher.ts (WAB-SUB.2 wired live; runAgentTurnSubscription at :397).
71
71
  */
72
72
  import type { ChatHistoryEntry, SessionState } from './types.js';
73
73
  /** Default subprocess timeout. claude --print can take 30-90s for tool work. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent_loop_subscription.d.ts","sourceRoot":"","sources":["../../../src/runtime/agent_bridge/agent_loop_subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAIH,OAAO,KAAK,EAA2B,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1F,gFAAgF;AAChF,eAAO,MAAM,+BAA+B,SAAU,CAAC;AAEvD,4DAA4D;AAC5D,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAYlD,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAMD,MAAM,WAAW,+BAA+B;IAC9C,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,8BAA8B;IAC7C,4DAA4D;IAC5D,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,8BAA8B,CAAC,CAiDzC;AAYD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR;AAuBD,eAAO,MAAM,sBAAsB,EAAE,eAuDpC,CAAC"}
1
+ {"version":3,"file":"agent_loop_subscription.d.ts","sourceRoot":"","sources":["../../../src/runtime/agent_bridge/agent_loop_subscription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAIH,OAAO,KAAK,EAA2B,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1F,gFAAgF;AAChF,eAAO,MAAM,+BAA+B,SAAU,CAAC;AAEvD,4DAA4D;AAC5D,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAYlD,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAMD,MAAM,WAAW,+BAA+B;IAC9C,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,8BAA8B;IAC7C,4DAA4D;IAC5D,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,8BAA8B,CAAC,CAiDzC;AAYD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR;AAoBD,eAAO,MAAM,sBAAsB,EAAE,eAkBpC,CAAC"}
@@ -67,9 +67,9 @@
67
67
  *
68
68
  * Imports from: node:child_process, ./types.js.
69
69
  * Imported by: ./index.ts (barrel), ./agent_loop_subscription.test.ts.
70
- * Future: dispatcher.ts (WAB-SUB.2) when the daemon path is wired.
70
+ * dispatcher.ts (WAB-SUB.2 wired live; runAgentTurnSubscription at :397).
71
71
  */
72
- import { spawn } from 'node:child_process';
72
+ import { runOneShotCli } from '../spawn_lifecycle.js';
73
73
  // ---------------------------------------------------------------------------
74
74
  // Tunables
75
75
  // ---------------------------------------------------------------------------
@@ -156,14 +156,11 @@ function hasTextBlock(entry) {
156
156
  // ---------------------------------------------------------------------------
157
157
  // defaultClaudeCliClient — production spawn-based impl.
158
158
  //
159
- // Mirrors src/models/strategies/subscription_cli.ts lifecycle:
160
- // 1. spawn(cli, args, stdio=['pipe','pipe','pipe'])
161
- // 2. setTimeout(timeoutMs) SIGTERM + reject on fire
162
- // 3. write stdin + end()
163
- // 4. accumulate stdout / stderr
164
- // 5. on close: clearTimeout; exit 0 → resolve stdout; else reject with stderr
159
+ // Lifecycle owned by runtime/spawn_lifecycle.ts (SUB.2) — the same shared
160
+ // helper as models/strategies/subscription_cli.ts (explicit lifecycle FSM,
161
+ // detached group leadership, SIGTERM -> ref'd grace -> group SIGKILL).
165
162
  //
166
- // Differences from subscription_cli.ts:
163
+ // Differences from subscription_cli.ts (preserved through the helper):
167
164
  // - Does NOT call .trim() on stdout — caller trims (lets tests assert
168
165
  // exact bytes when needed).
169
166
  // - Caller-supplied timeoutMs is required (no DEFAULT_TIMEOUT_MS fallback
@@ -171,53 +168,20 @@ function hasTextBlock(entry) {
171
168
  // ---------------------------------------------------------------------------
172
169
  export const defaultClaudeCliClient = {
173
170
  run(req) {
174
- return new Promise((resolve, reject) => {
175
- const proc = spawn(req.cli, req.args, {
176
- stdio: ['pipe', 'pipe', 'pipe'],
177
- });
178
- let stdout = '';
179
- let stderr = '';
180
- let settled = false;
181
- const settle = (fn) => {
182
- if (settled)
183
- return;
184
- settled = true;
185
- clearTimeout(timer);
186
- fn();
187
- };
188
- const timer = setTimeout(() => {
189
- proc.kill('SIGTERM');
190
- settle(() => reject(new Error(`subscription cli timeout after ${req.timeoutMs}ms`)));
191
- }, req.timeoutMs);
192
- proc.stdout?.on('data', (d) => {
193
- stdout += d.toString('utf8');
194
- });
195
- proc.stderr?.on('data', (d) => {
196
- stderr += d.toString('utf8');
197
- });
198
- proc.on('error', (e) => {
199
- settle(() => reject(new Error(`subscription cli spawn failed: ${e.message}`)));
200
- });
201
- proc.on('close', (code) => {
202
- settle(() => {
203
- if (code === 0) {
204
- resolve(stdout);
205
- }
206
- else {
207
- reject(new Error(`subscription cli exit ${code}: ${stderr.trim()}`));
208
- }
209
- });
210
- });
211
- // stdin.end() flushes the prompt and signals EOF. Wrapped in
212
- // try/catch because synchronous spawn errors (e.g. Windows
213
- // ENOENT) can close stdin before this write lands.
214
- try {
215
- proc.stdin?.write(req.stdin);
216
- proc.stdin?.end();
217
- }
218
- catch (e) {
219
- settle(() => reject(new Error(`subscription cli stdin write failed: ${String(e)}`)));
220
- }
171
+ // SUB.2 (wg-627effbb2c38): lifecycle delegated to the SHARED helper
172
+ // (explicit FSM, SIGTERM -> ref'd grace -> group SIGKILL). Bridge
173
+ // children are WORKING AGENTS acting on the user's behalf — they stay
174
+ // fully hooked/gated, so markSubagent is false (the GDC design lock);
175
+ // they are still SUPERVISED (kill-tree membership) like every helper
176
+ // spawn. Stdout is intentionally NOT trimmed — caller trims.
177
+ return runOneShotCli({
178
+ cli: req.cli,
179
+ args: req.args,
180
+ prompt: req.stdin,
181
+ timeoutMs: req.timeoutMs,
182
+ markSubagent: false,
183
+ timeoutError: (ms) => new Error(`subscription cli timeout after ${ms}ms`),
184
+ errorPrefix: 'subscription cli ',
221
185
  });
222
186
  },
223
187
  };
@@ -1 +1 @@
1
- {"version":3,"file":"agent_loop_subscription.js","sourceRoot":"","sources":["../../../src/runtime/agent_bridge/agent_loop_subscription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent_loop_subscription.js","sourceRoot":"","sources":["../../../src/runtime/agent_bridge/agent_loop_subscription.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@
28
28
  * Fail-open: any internal crash exits 0 with a stderr message.
29
29
  */
30
30
  import { buildRegistry, loadActivePacks } from '../bootstrap.js';
31
+ import { exitIfSubagent } from './subagent_guard.js';
31
32
  import { Event } from '../types.js';
32
33
  import { dispatchEvent } from './dispatch.js';
33
34
  import { extractSessionId } from './session_id.js';
@@ -62,6 +63,7 @@ async function readStdin() {
62
63
  return data;
63
64
  }
64
65
  async function main() {
66
+ exitIfSubagent('post-tool-use'); // SUB.1: before stdin read / any state write
65
67
  const raw = await readStdin();
66
68
  if (!raw.trim()) {
67
69
  process.stderr.write('opensquid: empty PostToolUse payload — proceeding\n');
@@ -1 +1 @@
1
- {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/runtime/hooks/post-tool-use.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoBnD,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB,CAAC;IAClD,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,uDAAuD;IACvD,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IACrC,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE;QACrC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE;QACtC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YACzD,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YACzD,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;YACnE,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,EAAE;YACxD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,IAAI,IAAI,KAAe,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1F,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD,0EAA0E;IAC1E,8CAA8C;IAC9C,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/runtime/hooks/post-tool-use.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@
20
20
  * bottom is the last line of defense.
21
21
  */
22
22
  import { buildRegistry, loadActivePacks } from '../bootstrap.js';
23
+ import { exitIfSubagent } from './subagent_guard.js';
23
24
  import { parseApplyPatch } from './apply_patch.js';
24
25
  import { appendTool, recordSessionCwd } from '../session_state.js';
25
26
  import { Event } from '../types.js';
@@ -56,6 +57,7 @@ async function readStdin() {
56
57
  return data;
57
58
  }
58
59
  async function main() {
60
+ exitIfSubagent('pre-tool-use'); // SUB.1: before stdin read / any state write
59
61
  const raw = await readStdin();
60
62
  if (!raw.trim()) {
61
63
  process.stderr.write('opensquid: empty PreToolUse payload — proceeding\n');
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/runtime/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../../src/runtime/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@
18
18
  * Fail-open on any internal error.
19
19
  */
20
20
  import { buildRegistry, loadActivePacks } from '../bootstrap.js';
21
+ import { exitIfSubagent } from './subagent_guard.js';
21
22
  import { clearFsmState } from '../fsm_state.js';
22
23
  import { runCompression } from '../compression_orchestrator.js';
23
24
  import { makeConsolidateRunner } from '../wedge/compression_deps.js';
@@ -40,6 +41,7 @@ async function readStdin() {
40
41
  return data;
41
42
  }
42
43
  async function main() {
44
+ exitIfSubagent('session-end'); // SUB.1: before stdin read / any state write
43
45
  const raw = await readStdin();
44
46
  if (!raw.trim()) {
45
47
  process.stderr.write('opensquid: empty SessionEnd payload — proceeding\n');
@@ -1 +1 @@
1
- {"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/runtime/hooks/session-end.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/runtime/hooks/session-end.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAOpE,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;IACjD,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS;KACzF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,IAAI,IAAI,KAAe,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,6CAA6C;IAC5E,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,gFAAgF;IAChF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1F,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEhD,gFAAgF;IAChF,MAAM,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAE7C,uEAAuE;IACvE,uEAAuE;IACvE,qEAAqE;IACrE,kEAAkE;IAClE,sEAAsE;IACtE,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,6EAA6E;IAC7E,uEAAuE;IACvE,sEAAsE;IACtE,gFAAgF;IAChF,kFAAkF;IAClF,2EAA2E;IAC3E,mFAAmF;IACnF,oDAAoD;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,wBAAwB,KAAK,IAAI,CACrF,CAAC;gBACJ,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,iEAAiE;IACjE,2EAA2E;IAC3E,0EAA0E;IAC1E,gDAAgD;IAChD,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,4BAA4B;IAC5B,IAAI,CAAC;QACH,uEAAuE;QACvE,uEAAuE;QACvE,2DAA2D;QAC3D,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACtE,IAAI,MAAM,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEnC,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,6DAA6D;IAC7D,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -31,6 +31,7 @@
31
31
  * inject_context on `session_start`, this bin produces no stdout.
32
32
  */
33
33
  import { buildRegistry, loadActivePacks } from '../bootstrap.js';
34
+ import { exitIfSubagent } from './subagent_guard.js';
34
35
  import { claimUmbrellaLeaseForSession } from '../chat/claim_lease.js';
35
36
  import { Event } from '../types.js';
36
37
  import { dispatchEvent } from './dispatch.js';
@@ -53,6 +54,7 @@ async function readStdin() {
53
54
  return data;
54
55
  }
55
56
  async function main() {
57
+ exitIfSubagent('session-start'); // SUB.1: before stdin read / any state write
56
58
  const raw = await readStdin();
57
59
  if (!raw.trim()) {
58
60
  process.stderr.write('opensquid: empty SessionStart payload — proceeding\n');
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../src/runtime/hooks/session-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../../src/runtime/hooks/session-start.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@
18
18
  * Fail-open on any internal error — see `main().catch()` below.
19
19
  */
20
20
  import { buildRegistry, loadActivePacks } from '../bootstrap.js';
21
+ import { exitIfSubagent } from './subagent_guard.js';
21
22
  import { Event } from '../types.js';
22
23
  import { dispatchEvent } from './dispatch.js';
23
24
  import { extractSessionId } from './session_id.js';
@@ -53,6 +54,7 @@ async function readStdin() {
53
54
  return data;
54
55
  }
55
56
  async function main() {
57
+ exitIfSubagent('stop'); // SUB.1: before stdin read / any state write
56
58
  const raw = await readStdin();
57
59
  if (!raw.trim()) {
58
60
  process.stderr.write('opensquid: empty Stop payload — proceeding\n');
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/runtime/hooks/stop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/runtime/hooks/stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * T-handoff-nested-session-spam SUB.1 — opensquid-spawned reviewer subagents
3
+ * (subscription_cli sets OPENSQUID_SUBAGENT=1 at the spawn boundary) must
4
+ * never run the hook pipeline: no FSM mint, no tool-ledger, no SessionEnd
5
+ * handoff dump, no nested cached_audit (the observed recursion class —
6
+ * wg-627effbb2c38: a timed-out audit child re-ran the coding flow on the
7
+ * artifact embedded in its prompt and spawned its own grandchild audit).
8
+ *
9
+ * Pure read of process.env — no I/O, no side effects. NOTE: this is the
10
+ * HOOK-POLICY marker; the kill-tree marker (OPENSQUID_SUPERVISED, SUB.2) is
11
+ * deliberately separate — agent-bridge children are supervised but fully
12
+ * hooked (GDC lock: working agents stay gated).
13
+ *
14
+ * Imports from: (none — node globals only).
15
+ * Imported by: the six hook bins (pre-tool-use, post-tool-use,
16
+ * session-start, session-end, stop, user-prompt-submit).
17
+ */
18
+ export declare function isOpensquidSubagent(env?: NodeJS.ProcessEnv): boolean;
19
+ /**
20
+ * Exit-0 short-circuit for hook bins — called BEFORE stdin is read so a
21
+ * marked child's hook performs zero reads and zero state writes. Exit 0 is
22
+ * the "allow" code for every Claude Code hook type, so the ordering is safe
23
+ * across all six bins. Returns only when NOT a subagent.
24
+ */
25
+ export declare function exitIfSubagent(hookName: string): void;
26
+ //# sourceMappingURL=subagent_guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent_guard.d.ts","sourceRoot":"","sources":["../../../src/runtime/hooks/subagent_guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKrD"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * T-handoff-nested-session-spam SUB.1 — opensquid-spawned reviewer subagents
3
+ * (subscription_cli sets OPENSQUID_SUBAGENT=1 at the spawn boundary) must
4
+ * never run the hook pipeline: no FSM mint, no tool-ledger, no SessionEnd
5
+ * handoff dump, no nested cached_audit (the observed recursion class —
6
+ * wg-627effbb2c38: a timed-out audit child re-ran the coding flow on the
7
+ * artifact embedded in its prompt and spawned its own grandchild audit).
8
+ *
9
+ * Pure read of process.env — no I/O, no side effects. NOTE: this is the
10
+ * HOOK-POLICY marker; the kill-tree marker (OPENSQUID_SUPERVISED, SUB.2) is
11
+ * deliberately separate — agent-bridge children are supervised but fully
12
+ * hooked (GDC lock: working agents stay gated).
13
+ *
14
+ * Imports from: (none — node globals only).
15
+ * Imported by: the six hook bins (pre-tool-use, post-tool-use,
16
+ * session-start, session-end, stop, user-prompt-submit).
17
+ */
18
+ export function isOpensquidSubagent(env = process.env) {
19
+ return env.OPENSQUID_SUBAGENT === '1';
20
+ }
21
+ /**
22
+ * Exit-0 short-circuit for hook bins — called BEFORE stdin is read so a
23
+ * marked child's hook performs zero reads and zero state writes. Exit 0 is
24
+ * the "allow" code for every Claude Code hook type, so the ordering is safe
25
+ * across all six bins. Returns only when NOT a subagent.
26
+ */
27
+ export function exitIfSubagent(hookName) {
28
+ if (isOpensquidSubagent()) {
29
+ process.stderr.write(`opensquid: ${hookName} skipped (OPENSQUID_SUBAGENT)\n`);
30
+ process.exit(0);
31
+ }
32
+ }
33
+ //# sourceMappingURL=subagent_guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent_guard.js","sourceRoot":"","sources":["../../../src/runtime/hooks/subagent_guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,OAAO,GAAG,CAAC,kBAAkB,KAAK,GAAG,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,QAAQ,iCAAiC,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../../src/runtime/hooks/user-prompt-submit.ts"],"names":[],"mappings":";AAkDA,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE"}
1
+ {"version":3,"file":"user-prompt-submit.d.ts","sourceRoot":"","sources":["../../../src/runtime/hooks/user-prompt-submit.ts"],"names":[],"mappings":";AAmDA,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE"}
@@ -17,6 +17,7 @@
17
17
  * Fail-open on any internal error.
18
18
  */
19
19
  import { buildRegistry, loadActivePacks } from '../bootstrap.js';
20
+ import { exitIfSubagent } from './subagent_guard.js';
20
21
  import { claimUmbrellaLeaseForSession } from '../chat/claim_lease.js';
21
22
  import { drainUmbrellaInbox } from '../chat/inbox_drain.js';
22
23
  import { resetTurnLedger } from '../session_state.js';
@@ -55,6 +56,7 @@ async function readStdin() {
55
56
  return data;
56
57
  }
57
58
  async function main() {
59
+ exitIfSubagent('user-prompt-submit'); // SUB.1: before stdin read / any state write
58
60
  const raw = await readStdin();
59
61
  if (!raw.trim()) {
60
62
  process.stderr.write('opensquid: empty UserPromptSubmit payload — proceeding\n');
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../../src/runtime/hooks/user-prompt-submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-prompt-submit.js","sourceRoot":"","sources":["../../../src/runtime/hooks/user-prompt-submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * T-handoff-nested-session-spam SUB.2 (wg-627effbb2c38) — the ONE spawn
3
+ * lifecycle for one-shot CLI children, shared by both spawn sites
4
+ * (models/strategies/subscription_cli.ts — the audit reviewer — and
5
+ * runtime/agent_bridge/agent_loop_subscription.ts — the chat working
6
+ * agent), replacing their deliberately-mirrored copies.
7
+ *
8
+ * Lifecycle FSM (lexicon: explicit total transitions; the promise settles
9
+ * exactly once, on the FIRST transition out of `running`):
10
+ *
11
+ * running ──close──────────────► closed (resolve/reject by exit code)
12
+ * running ──spawn 'error'──────► spawn_failed (reject)
13
+ * running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D)
14
+ * term_sent ──close────────────► closed_late (clear grace; child obeyed SIGTERM)
15
+ * term_sent ──grace expiry─────► group_killed (kill(-pid) sweep; ESRCH = already gone)
16
+ *
17
+ * `term_sent → supervisor SIGKILLed externally` leaks the child by design —
18
+ * enumerated residual: the REF'D grace timer holds the supervisor alive
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.
24
+ *
25
+ * Two ORTHOGONAL env markers — never merge them:
26
+ * - OPENSQUID_SUBAGENT (hook policy, SUB.1): set only when
27
+ * `markSubagent: true` (reviewer spawns). Hook bins short-circuit.
28
+ * - OPENSQUID_SUPERVISED (kill-tree, THIS module): set on EVERY helper
29
+ * spawn. The OUTERMOST helper spawn in a tree detaches as group leader;
30
+ * every deeper helper spawn joins the ancestor's group — a reviewer
31
+ * spawned from a bridge child's hooks must NOT escape the bridge
32
+ * group's sweep (spec-audit finding 1).
33
+ *
34
+ * Phase-1 limitation carried over verbatim from subscription_cli.ts: pipe
35
+ * stdio can mutually deadlock on prompts >64KB (kernel pipe buffer); the
36
+ * temp-file fallback is Phase-2 scope — do NOT bolt on a partial drain
37
+ * handler here.
38
+ *
39
+ * Imports from: node:child_process.
40
+ * Imported by: models/strategies/subscription_cli.ts,
41
+ * runtime/agent_bridge/agent_loop_subscription.ts.
42
+ */
43
+ export interface OneShotOpts {
44
+ cli: string;
45
+ args: string[];
46
+ /** Prompt body written to the child's stdin then EOF. */
47
+ prompt: string;
48
+ timeoutMs: number;
49
+ /** SUB.1 hook-policy marker: reviewer spawns mark the child tree; bridge spawns do not. */
50
+ markSubagent: boolean;
51
+ /** Typed rejection factory — each site keeps its own timeout error contract. */
52
+ timeoutError: (timeoutMs: number) => Error;
53
+ /** Prefix for spawn/exit/stdin error messages (bridge: 'subscription cli '). */
54
+ errorPrefix?: string;
55
+ /** Grace before the group SIGKILL. Default 5_000. */
56
+ graceMs?: number;
57
+ }
58
+ /** Kill-tree marker: true when THIS process already runs under a helper-supervised tree. */
59
+ export declare const insideSupervisedTree: (env?: NodeJS.ProcessEnv) => boolean;
60
+ export declare function runOneShotCli(opts: OneShotOpts): Promise<string>;
61
+ //# sourceMappingURL=spawn_lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn_lifecycle.d.ts","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;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,CAwFhE"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * T-handoff-nested-session-spam SUB.2 (wg-627effbb2c38) — the ONE spawn
3
+ * lifecycle for one-shot CLI children, shared by both spawn sites
4
+ * (models/strategies/subscription_cli.ts — the audit reviewer — and
5
+ * runtime/agent_bridge/agent_loop_subscription.ts — the chat working
6
+ * agent), replacing their deliberately-mirrored copies.
7
+ *
8
+ * Lifecycle FSM (lexicon: explicit total transitions; the promise settles
9
+ * exactly once, on the FIRST transition out of `running`):
10
+ *
11
+ * running ──close──────────────► closed (resolve/reject by exit code)
12
+ * running ──spawn 'error'──────► spawn_failed (reject)
13
+ * running ──timeout────────────► term_sent (reject NOW; grace timer armed, REF'D)
14
+ * term_sent ──close────────────► closed_late (clear grace; child obeyed SIGTERM)
15
+ * term_sent ──grace expiry─────► group_killed (kill(-pid) sweep; ESRCH = already gone)
16
+ *
17
+ * `term_sent → supervisor SIGKILLed externally` leaks the child by design —
18
+ * enumerated residual: the REF'D grace timer holds the supervisor alive
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.
24
+ *
25
+ * Two ORTHOGONAL env markers — never merge them:
26
+ * - OPENSQUID_SUBAGENT (hook policy, SUB.1): set only when
27
+ * `markSubagent: true` (reviewer spawns). Hook bins short-circuit.
28
+ * - OPENSQUID_SUPERVISED (kill-tree, THIS module): set on EVERY helper
29
+ * spawn. The OUTERMOST helper spawn in a tree detaches as group leader;
30
+ * every deeper helper spawn joins the ancestor's group — a reviewer
31
+ * spawned from a bridge child's hooks must NOT escape the bridge
32
+ * group's sweep (spec-audit finding 1).
33
+ *
34
+ * Phase-1 limitation carried over verbatim from subscription_cli.ts: pipe
35
+ * stdio can mutually deadlock on prompts >64KB (kernel pipe buffer); the
36
+ * temp-file fallback is Phase-2 scope — do NOT bolt on a partial drain
37
+ * handler here.
38
+ *
39
+ * Imports from: node:child_process.
40
+ * Imported by: models/strategies/subscription_cli.ts,
41
+ * runtime/agent_bridge/agent_loop_subscription.ts.
42
+ */
43
+ import { spawn } from 'node:child_process';
44
+ /** Kill-tree marker: true when THIS process already runs under a helper-supervised tree. */
45
+ export const insideSupervisedTree = (env = process.env) => env.OPENSQUID_SUPERVISED === '1';
46
+ export function runOneShotCli(opts) {
47
+ const prefix = opts.errorPrefix ?? '';
48
+ return new Promise((resolve, reject) => {
49
+ // Detach predicate = the SUPERVISED marker, NOT the hook-policy marker
50
+ // (spec-audit finding 1): a reviewer spawned from an UNMARKED bridge
51
+ // tree must still join the bridge group, or it escapes the sweep. Every
52
+ // helper spawn sets SUPERVISED; only the outermost detaches.
53
+ const detached = !insideSupervisedTree();
54
+ const env = {
55
+ ...process.env,
56
+ OPENSQUID_SUPERVISED: '1',
57
+ ...(opts.markSubagent ? { OPENSQUID_SUBAGENT: '1' } : {}),
58
+ };
59
+ const proc = spawn(opts.cli, opts.args, {
60
+ stdio: ['pipe', 'pipe', 'pipe'],
61
+ detached,
62
+ env,
63
+ });
64
+ let state = { phase: 'running' };
65
+ let stdout = '';
66
+ let stderr = '';
67
+ let graceTimer;
68
+ const groupKill = () => {
69
+ state = { phase: 'group_killed' };
70
+ try {
71
+ if (detached && typeof proc.pid === 'number') {
72
+ process.kill(-proc.pid, 'SIGKILL');
73
+ }
74
+ else {
75
+ proc.kill('SIGKILL'); // nested: the ancestor's group sweep covers the rest
76
+ }
77
+ }
78
+ catch {
79
+ /* ESRCH — already reaped */
80
+ }
81
+ };
82
+ const timer = setTimeout(() => {
83
+ if (state.phase !== 'running')
84
+ return;
85
+ state = { phase: 'term_sent' };
86
+ proc.kill('SIGTERM');
87
+ // REF'D on purpose: an unref'd timer is destroyed when the hook bin
88
+ // exits right after this rejection — SIGKILL would never fire exactly
89
+ // where SIGTERM-ignoring orphans were observed. The ≤graceMs tail
90
+ // sits far inside the 360s outer hook cap; 'closed_late' clears it
91
+ // for well-behaved children.
92
+ graceTimer = setTimeout(groupKill, opts.graceMs ?? 5_000);
93
+ reject(opts.timeoutError(opts.timeoutMs));
94
+ }, opts.timeoutMs);
95
+ proc.stdout.on('data', (d) => {
96
+ stdout += d.toString('utf8');
97
+ });
98
+ proc.stderr.on('data', (d) => {
99
+ stderr += d.toString('utf8');
100
+ });
101
+ proc.on('error', (e) => {
102
+ if (state.phase !== 'running')
103
+ return;
104
+ state = { phase: 'spawn_failed' };
105
+ clearTimeout(timer);
106
+ reject(new Error(`${prefix}spawn failed: ${e.message}`));
107
+ });
108
+ proc.on('close', (code) => {
109
+ if (state.phase === 'running') {
110
+ state = { phase: 'closed' };
111
+ clearTimeout(timer);
112
+ if (code === 0)
113
+ resolve(stdout);
114
+ else
115
+ reject(new Error(`${prefix}exit ${code}: ${stderr.trim()}`));
116
+ }
117
+ else if (state.phase === 'term_sent') {
118
+ state = { phase: 'closed_late' }; // child obeyed SIGTERM inside grace
119
+ if (graceTimer !== undefined)
120
+ clearTimeout(graceTimer);
121
+ }
122
+ // closed / spawn_failed / group_killed: terminal — nothing to do.
123
+ });
124
+ try {
125
+ proc.stdin.write(opts.prompt);
126
+ proc.stdin.end();
127
+ }
128
+ catch (e) {
129
+ if (state.phase === 'running') {
130
+ state = { phase: 'spawn_failed' };
131
+ clearTimeout(timer);
132
+ reject(new Error(`${prefix}stdin write failed: ${String(e)}`));
133
+ }
134
+ }
135
+ });
136
+ }
137
+ //# sourceMappingURL=spawn_lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn_lifecycle.js","sourceRoot":"","sources":["../../src/runtime/spawn_lifecycle.ts"],"names":[],"mappings":"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"}
@@ -975,6 +975,18 @@ names in source per `feedback_stop_haiku_drift`).
975
975
  | `spawn_subagent` | `{id: string}` | Long-running subagent spawn |
976
976
  | `check_destination` | `{state: …}` | Destination_check rule body |
977
977
 
978
+ **Reviewer subagents are hook-silenced (`OPENSQUID_SUBAGENT`).** Every
979
+ `subscription`/`cli` spawn marks its child tree with `OPENSQUID_SUBAGENT=1`;
980
+ the opensquid hook bins exit 0 immediately inside a marked tree
981
+ (`src/runtime/hooks/subagent_guard.ts`). A reviewer one-shot therefore mints
982
+ no session state, writes no handoff dump, and can never spawn a nested
983
+ audit of its own (the recursion class observed in wg-627effbb2c38). The
984
+ agent-bridge's working agents are deliberately NOT marked — they act on the
985
+ user's behalf and stay fully gated. Optionally, users can also restrict the
986
+ reviewer's tool surface at the alias level via `models.yaml` `args` (e.g.
987
+ the host CLI's own tool-allowlist flags) — that knob is user-owned config;
988
+ opensquid never hardcodes vendor flags in source.
989
+
978
990
  ### 5.7 Verdict + control (`src/functions/verdict.ts`)
979
991
 
980
992
  | Primitive | Returns | Use |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opensquid",
3
- "version": "0.5.395",
3
+ "version": "0.5.399",
4
4
  "description": "Continuity layer for coding agents: durable memory, dependency-aware task state, workflow gates, and inspectable packs over MCP.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -111,7 +111,7 @@
111
111
  },
112
112
  "peerDependencies": {
113
113
  "@anthropic-ai/claude-agent-sdk": "^0.3.0",
114
- "@anthropic-ai/sdk": "^0.30.0",
114
+ "@anthropic-ai/sdk": ">=0.30.0 <1.0.0",
115
115
  "@slack/socket-mode": "^2.0.0",
116
116
  "@slack/web-api": "^7.0.0",
117
117
  "discord.js": "^14.16.0",