@shardworks/claude-code-apparatus 0.1.270 → 0.1.271
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/babysitter.d.ts +10 -153
- package/dist/babysitter.d.ts.map +1 -1
- package/dist/babysitter.js +11 -342
- package/dist/babysitter.js.map +1 -1
- package/dist/index.d.ts +14 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +165 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +357 -0
- package/dist/runtime.js.map +1 -0
- package/package.json +5 -5
package/dist/babysitter.d.ts
CHANGED
|
@@ -13,71 +13,25 @@
|
|
|
13
13
|
* The babysitter is a detached process: it survives guild restarts.
|
|
14
14
|
* All guild communication is via HTTP (tool server) and SQLite (transcripts).
|
|
15
15
|
*
|
|
16
|
+
* The single-purpose primitives (stdin parsing, retrying HTTP, DLQ writes,
|
|
17
|
+
* the SQLite trio, lifecycle reporters, stderr redirect) live in
|
|
18
|
+
* `runtime.ts`. This file owns the orchestrator (`runBabysitter`), the
|
|
19
|
+
* MCP/SSE proxy, and the script entry point. The previously-exported
|
|
20
|
+
* primitives are re-exported below to preserve the package's public
|
|
21
|
+
* surface.
|
|
22
|
+
*
|
|
16
23
|
* See: docs/architecture/detached-sessions.md
|
|
17
24
|
*/
|
|
18
25
|
import { spawn } from 'node:child_process';
|
|
19
|
-
import { type
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export interface SerializedTool {
|
|
23
|
-
/** Tool name (e.g. 'writ-list'). */
|
|
24
|
-
name: string;
|
|
25
|
-
/** Tool description. */
|
|
26
|
-
description: string;
|
|
27
|
-
/** JSON Schema for the tool's input parameters. */
|
|
28
|
-
params: Record<string, unknown>;
|
|
29
|
-
/**
|
|
30
|
-
* HTTP method the guild tool server routes this tool under. The MCP proxy
|
|
31
|
-
* uses this to avoid POSTing to a GET-only read-tool route (which would
|
|
32
|
-
* 404). Derived from the tool's `permission` by `permissionToMethod()`.
|
|
33
|
-
*/
|
|
34
|
-
method: 'GET' | 'POST' | 'DELETE';
|
|
35
|
-
}
|
|
36
|
-
/** Config written to the babysitter's stdin by the spawning process. */
|
|
37
|
-
export interface BabysitterConfig {
|
|
38
|
-
sessionId: string;
|
|
39
|
-
guildToolUrl: string;
|
|
40
|
-
dbPath: string;
|
|
41
|
-
logDir: string;
|
|
42
|
-
claudeArgs: string[];
|
|
43
|
-
cwd: string;
|
|
44
|
-
env: Record<string, string>;
|
|
45
|
-
prompt: string;
|
|
46
|
-
tools: SerializedTool[];
|
|
47
|
-
startedAt: string;
|
|
48
|
-
provider: string;
|
|
49
|
-
metadata?: Record<string, unknown>;
|
|
50
|
-
/** Temp directory for the system prompt file. Cleaned up in finally block. */
|
|
51
|
-
systemPromptTmpDir?: string;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Walk an error's cause chain looking for a retryable error code.
|
|
55
|
-
* Returns the first retryable code found, or null if none.
|
|
56
|
-
* Caps traversal depth to prevent infinite loops from circular cause chains.
|
|
57
|
-
*/
|
|
58
|
-
export declare function findRetryableCode(err: unknown, maxDepth?: number): string | null;
|
|
26
|
+
import { type BabysitterConfig, type SerializedTool, type TranscriptDb } from './runtime.ts';
|
|
27
|
+
export { callGuildHttpApi, findRetryableCode, initTranscriptDb, openTranscriptDb, readConfigFromStdin, redirectStderrToFile, reportResult, reportRunning, resolveTerminalStatus, STDERR_DIAGNOSTIC_TAIL_LIMIT, writeToDlq, writeTranscript, } from './runtime.ts';
|
|
28
|
+
export type { BabysitterConfig, SerializedTool, TranscriptDb, } from './runtime.ts';
|
|
59
29
|
export interface McpProxyHandle {
|
|
60
30
|
/** URL for --mcp-config (e.g. "http://127.0.0.1:PORT/sse"). */
|
|
61
31
|
url: string;
|
|
62
32
|
/** Shut down the HTTP server and MCP transport. */
|
|
63
33
|
close(): Promise<void>;
|
|
64
34
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Read the babysitter config from stdin.
|
|
67
|
-
*
|
|
68
|
-
* Reads stdin to completion, parses the JSON, and validates required fields.
|
|
69
|
-
* The spawning process writes config and closes the write end.
|
|
70
|
-
*/
|
|
71
|
-
export declare function readConfigFromStdin(stream?: NodeJS.ReadableStream): Promise<BabysitterConfig>;
|
|
72
|
-
export declare function callGuildHttpApi(url: string, sessionId: string, body: unknown, timeoutMs?: number, method?: 'GET' | 'POST' | 'DELETE'): Promise<unknown>;
|
|
73
|
-
/**
|
|
74
|
-
* Write a payload to the Dead Letter Queue.
|
|
75
|
-
*
|
|
76
|
-
* Creates the DLQ directory if it doesn't exist. Writes the payload as
|
|
77
|
-
* pretty-printed JSON. Used as a fallback when the guild HTTP API is
|
|
78
|
-
* unreachable for lifecycle calls.
|
|
79
|
-
*/
|
|
80
|
-
export declare function writeToDlq(cwd: string, filename: string, payload: unknown): void;
|
|
81
35
|
/**
|
|
82
36
|
* Create an MCP/SSE HTTP server that proxies tool calls to the guild.
|
|
83
37
|
*
|
|
@@ -88,103 +42,6 @@ export declare function writeToDlq(cwd: string, filename: string, payload: unkno
|
|
|
88
42
|
* JSON Schema (the serialized params from the config).
|
|
89
43
|
*/
|
|
90
44
|
export declare function createProxyMcpHttpServer(tools: SerializedTool[], guildToolUrl: string, sessionId: string): Promise<McpProxyHandle>;
|
|
91
|
-
/** Minimal interface for the SQLite database used by the babysitter. */
|
|
92
|
-
export interface TranscriptDb {
|
|
93
|
-
/** Write a transcript entry (id, content JSON). */
|
|
94
|
-
writeTranscript(sessionId: string, content: string): void;
|
|
95
|
-
/** Close the database connection. */
|
|
96
|
-
close(): void;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Open the guild's SQLite database for transcript streaming.
|
|
100
|
-
*
|
|
101
|
-
* Creates the database file and table if they don't exist.
|
|
102
|
-
* Enables WAL mode for concurrent read access by other processes
|
|
103
|
-
* (Oculus, CLI queries, other agents).
|
|
104
|
-
*
|
|
105
|
-
* Uses dynamic import() to load better-sqlite3 at runtime. This avoids
|
|
106
|
-
* requiring the native module at import time (beneficial for type-checking
|
|
107
|
-
* and testing).
|
|
108
|
-
*/
|
|
109
|
-
export declare function openTranscriptDb(dbPath: string): Promise<TranscriptDb>;
|
|
110
|
-
/**
|
|
111
|
-
* Initialize a TranscriptDb from a Database constructor.
|
|
112
|
-
*
|
|
113
|
-
* Shared logic between openTranscriptDb() and test injection.
|
|
114
|
-
* Exported for testing — allows injecting a mock Database constructor.
|
|
115
|
-
*/
|
|
116
|
-
export declare function initTranscriptDb(DatabaseConstructor: new (path: string) => {
|
|
117
|
-
pragma(stmt: string): unknown;
|
|
118
|
-
prepare(sql: string): {
|
|
119
|
-
run(...params: unknown[]): void;
|
|
120
|
-
};
|
|
121
|
-
exec(sql: string): void;
|
|
122
|
-
close(): void;
|
|
123
|
-
}, dbPath: string): TranscriptDb;
|
|
124
|
-
/**
|
|
125
|
-
* Write the current transcript to SQLite.
|
|
126
|
-
*/
|
|
127
|
-
export declare function writeTranscript(db: TranscriptDb, sessionId: string, messages: Record<string, unknown>[]): void;
|
|
128
|
-
/**
|
|
129
|
-
* Report "running" status to the guild via the session-running tool.
|
|
130
|
-
*
|
|
131
|
-
* If the guild is unreachable, writes the payload to the DLQ.
|
|
132
|
-
*/
|
|
133
|
-
export declare function reportRunning(config: BabysitterConfig, cancelHandle: Record<string, unknown>, timeoutMs?: number): Promise<void>;
|
|
134
|
-
/**
|
|
135
|
-
* Resolve the terminal status and error text for a terminated session.
|
|
136
|
-
*
|
|
137
|
-
* Cascade order:
|
|
138
|
-
* 1. A `'cancelled'` override (SIGTERM path) — short-circuits.
|
|
139
|
-
* 2. A `terminationTag` already carried on the StreamJsonResult —
|
|
140
|
-
* set by the NDJSON detection cascade inside
|
|
141
|
-
* `parseStreamJsonMessage` (the only active detector).
|
|
142
|
-
* 3. Generic exit-code mapping (0 → completed, non-zero → failed).
|
|
143
|
-
*
|
|
144
|
-
* Generic non-zero exit codes surface as `'failed'`; the Animator's
|
|
145
|
-
* back-off machine only reacts to structured rate-limit terminals, and
|
|
146
|
-
* exit-code-based detection was retired because it produced
|
|
147
|
-
* false-positive pauses.
|
|
148
|
-
*
|
|
149
|
-
* Returns the payload status, a human-readable error string (only
|
|
150
|
-
* populated for the failed branches), and the tag that informed the
|
|
151
|
-
* decision (if any). The tag is forwarded to the guild so the Animator's
|
|
152
|
-
* back-off machine can disambiguate rate-limit terminations without
|
|
153
|
-
* pattern-matching on error text.
|
|
154
|
-
*/
|
|
155
|
-
export declare function resolveTerminalStatus(result: StreamJsonResult, statusOverride?: 'cancelled'): {
|
|
156
|
-
status: 'completed' | 'failed' | 'cancelled' | 'rate-limited';
|
|
157
|
-
error?: string;
|
|
158
|
-
terminationTag?: SessionTerminationTag;
|
|
159
|
-
};
|
|
160
|
-
/** Maximum number of characters to retain for the diagnostic stderr tail. */
|
|
161
|
-
export declare const STDERR_DIAGNOSTIC_TAIL_LIMIT = 200;
|
|
162
|
-
/**
|
|
163
|
-
* Report the final session result to the guild via the session-record tool.
|
|
164
|
-
*
|
|
165
|
-
* When the resolved terminal status is exactly `'failed'` (non-zero exit,
|
|
166
|
-
* no structured termination tag, no cancel override), attach a passive
|
|
167
|
-
* `terminationDiagnostic: { exitCode, stderrExcerpt? }` to the payload.
|
|
168
|
-
* The diagnostic is informational only — the Animator's back-off
|
|
169
|
-
* machine never consumes it. The stderr excerpt is only present when
|
|
170
|
-
* the caller supplied a non-empty tail.
|
|
171
|
-
*
|
|
172
|
-
* If the guild is unreachable, writes the payload to the DLQ.
|
|
173
|
-
*/
|
|
174
|
-
export declare function reportResult(config: BabysitterConfig, result: StreamJsonResult, transcript: Record<string, unknown>[], timeoutMs?: number, statusOverride?: 'cancelled', stderrTail?: string): Promise<void>;
|
|
175
|
-
/**
|
|
176
|
-
* Open a per-session log file and redirect process.stderr.write to it.
|
|
177
|
-
*
|
|
178
|
-
* Creates the logDir (recursive) and opens `<logDir>/<sessionId>.log`
|
|
179
|
-
* for append-writing. Replaces process.stderr.write with a function
|
|
180
|
-
* that calls fs.writeSync on the owned fd. Writes the startup banner
|
|
181
|
-
* as the first line.
|
|
182
|
-
*
|
|
183
|
-
* Returns the owned fd so the caller can close it in a finally block.
|
|
184
|
-
*
|
|
185
|
-
* @internal Exported for testing only.
|
|
186
|
-
*/
|
|
187
|
-
export declare function redirectStderrToFile(logDir: string, sessionId: string): number;
|
|
188
45
|
/**
|
|
189
46
|
* Run the session babysitter.
|
|
190
47
|
*
|
package/dist/babysitter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babysitter.d.ts","sourceRoot":"","sources":["../src/babysitter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"babysitter.d.ts","sourceRoot":"","sources":["../src/babysitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAwB9D,OAAO,EAUL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,4BAA4B,EAC5B,UAAU,EACV,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAID;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,cAAc,EAAE,EACvB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAmLzB;AAID;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE;IACL,yEAAyE;IACzE,EAAE,CAAC,EAAE,YAAY,CAAC;IAClB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,OAAO,CAAC,IAAI,CAAC,CAqOf"}
|
package/dist/babysitter.js
CHANGED
|
@@ -13,6 +13,13 @@
|
|
|
13
13
|
* The babysitter is a detached process: it survives guild restarts.
|
|
14
14
|
* All guild communication is via HTTP (tool server) and SQLite (transcripts).
|
|
15
15
|
*
|
|
16
|
+
* The single-purpose primitives (stdin parsing, retrying HTTP, DLQ writes,
|
|
17
|
+
* the SQLite trio, lifecycle reporters, stderr redirect) live in
|
|
18
|
+
* `runtime.ts`. This file owns the orchestrator (`runBabysitter`), the
|
|
19
|
+
* MCP/SSE proxy, and the script entry point. The previously-exported
|
|
20
|
+
* primitives are re-exported below to preserve the package's public
|
|
21
|
+
* surface.
|
|
22
|
+
*
|
|
16
23
|
* See: docs/architecture/detached-sessions.md
|
|
17
24
|
*/
|
|
18
25
|
import { spawn } from 'node:child_process';
|
|
@@ -25,153 +32,10 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
25
32
|
import { ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
26
33
|
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
27
34
|
import { toolNameToRoute } from '@shardworks/tools-apparatus';
|
|
28
|
-
import { processNdjsonBuffer, parseStreamJsonMessage,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const RETRY_TIMEOUT_MS = 60_000;
|
|
33
|
-
const RETRYABLE_CODES = new Set(['ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT']);
|
|
34
|
-
/**
|
|
35
|
-
* Walk an error's cause chain looking for a retryable error code.
|
|
36
|
-
* Returns the first retryable code found, or null if none.
|
|
37
|
-
* Caps traversal depth to prevent infinite loops from circular cause chains.
|
|
38
|
-
*/
|
|
39
|
-
export function findRetryableCode(err, maxDepth = 5) {
|
|
40
|
-
let current = err;
|
|
41
|
-
for (let i = 0; i < maxDepth && current != null; i++) {
|
|
42
|
-
const code = current.code;
|
|
43
|
-
if (code && RETRYABLE_CODES.has(code)) {
|
|
44
|
-
return code;
|
|
45
|
-
}
|
|
46
|
-
current = current.cause;
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
// ── stdin config reader ─────────────────────────────────────────────────
|
|
51
|
-
/**
|
|
52
|
-
* Read the babysitter config from stdin.
|
|
53
|
-
*
|
|
54
|
-
* Reads stdin to completion, parses the JSON, and validates required fields.
|
|
55
|
-
* The spawning process writes config and closes the write end.
|
|
56
|
-
*/
|
|
57
|
-
export async function readConfigFromStdin(stream = process.stdin) {
|
|
58
|
-
const chunks = [];
|
|
59
|
-
for await (const chunk of stream) {
|
|
60
|
-
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
61
|
-
}
|
|
62
|
-
const raw = Buffer.concat(chunks).toString('utf-8');
|
|
63
|
-
if (!raw.trim()) {
|
|
64
|
-
throw new Error('Empty config received on stdin');
|
|
65
|
-
}
|
|
66
|
-
let parsed;
|
|
67
|
-
try {
|
|
68
|
-
parsed = JSON.parse(raw);
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
throw new Error(`Invalid JSON config on stdin: ${raw.slice(0, 200)}`);
|
|
72
|
-
}
|
|
73
|
-
const config = parsed;
|
|
74
|
-
// Validate required fields
|
|
75
|
-
const required = [
|
|
76
|
-
'sessionId', 'guildToolUrl', 'dbPath', 'logDir', 'claudeArgs',
|
|
77
|
-
'cwd', 'env', 'prompt', 'tools', 'startedAt', 'provider',
|
|
78
|
-
];
|
|
79
|
-
for (const field of required) {
|
|
80
|
-
if (config[field] === undefined || config[field] === null) {
|
|
81
|
-
throw new Error(`Missing required config field: ${field}`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return config;
|
|
85
|
-
}
|
|
86
|
-
// ── HTTP retry helper ───────────────────────────────────────────────────
|
|
87
|
-
/**
|
|
88
|
-
* Call a guild HTTP API endpoint with exponential backoff retry.
|
|
89
|
-
*
|
|
90
|
-
* Retries on connection errors (ECONNREFUSED, ECONNRESET, ETIMEDOUT).
|
|
91
|
-
* Returns the parsed JSON response on success.
|
|
92
|
-
* Throws after RETRY_TIMEOUT_MS of retrying.
|
|
93
|
-
*/
|
|
94
|
-
/**
|
|
95
|
-
* Encode a params object as a query string for GET requests.
|
|
96
|
-
*
|
|
97
|
-
* Scalars (string/number/boolean) become their string form. Arrays and
|
|
98
|
-
* objects are JSON-encoded so the tool-server can still parse them after
|
|
99
|
-
* its param coercion pass (though read-tools generally take scalar
|
|
100
|
-
* inputs). null/undefined values are skipped.
|
|
101
|
-
*/
|
|
102
|
-
function encodeParamsAsQuery(params) {
|
|
103
|
-
if (params == null || typeof params !== 'object')
|
|
104
|
-
return '';
|
|
105
|
-
const usp = new URLSearchParams();
|
|
106
|
-
for (const [key, value] of Object.entries(params)) {
|
|
107
|
-
if (value == null)
|
|
108
|
-
continue;
|
|
109
|
-
if (typeof value === 'string') {
|
|
110
|
-
usp.set(key, value);
|
|
111
|
-
}
|
|
112
|
-
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
113
|
-
usp.set(key, String(value));
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
usp.set(key, JSON.stringify(value));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
const s = usp.toString();
|
|
120
|
-
return s.length > 0 ? `?${s}` : '';
|
|
121
|
-
}
|
|
122
|
-
export async function callGuildHttpApi(url, sessionId, body, timeoutMs = RETRY_TIMEOUT_MS, method = 'POST') {
|
|
123
|
-
const startTime = Date.now();
|
|
124
|
-
let delay = RETRY_INITIAL_DELAY_MS;
|
|
125
|
-
let lastError;
|
|
126
|
-
// GET can't carry a body — encode params as query string instead.
|
|
127
|
-
const targetUrl = method === 'GET' ? `${url}${encodeParamsAsQuery(body)}` : url;
|
|
128
|
-
const requestBody = method === 'GET' ? undefined : JSON.stringify(body);
|
|
129
|
-
while (Date.now() - startTime < timeoutMs) {
|
|
130
|
-
try {
|
|
131
|
-
const response = await fetch(targetUrl, {
|
|
132
|
-
method,
|
|
133
|
-
headers: {
|
|
134
|
-
'Content-Type': 'application/json',
|
|
135
|
-
'X-Session-Id': sessionId,
|
|
136
|
-
},
|
|
137
|
-
...(requestBody !== undefined ? { body: requestBody } : {}),
|
|
138
|
-
});
|
|
139
|
-
if (!response.ok) {
|
|
140
|
-
const text = await response.text().catch(() => '');
|
|
141
|
-
throw new Error(`HTTP ${response.status}: ${text.slice(0, 500)}`);
|
|
142
|
-
}
|
|
143
|
-
return await response.json();
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
lastError = err instanceof Error ? err : new Error(String(err));
|
|
147
|
-
// Check if the error is retryable (connection-level error in the cause chain)
|
|
148
|
-
const isRetryable = findRetryableCode(err) !== null;
|
|
149
|
-
if (!isRetryable) {
|
|
150
|
-
throw lastError;
|
|
151
|
-
}
|
|
152
|
-
// Wait before retrying
|
|
153
|
-
const remaining = timeoutMs - (Date.now() - startTime);
|
|
154
|
-
if (remaining <= 0)
|
|
155
|
-
break;
|
|
156
|
-
await new Promise((resolve) => setTimeout(resolve, Math.min(delay, remaining)));
|
|
157
|
-
delay = Math.min(delay * 2, RETRY_MAX_DELAY_MS);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
throw new Error(`Guild HTTP API unreachable after ${timeoutMs}ms: ${lastError?.message ?? 'unknown error'}`);
|
|
161
|
-
}
|
|
162
|
-
// ── DLQ writer ──────────────────────────────────────────────────────────
|
|
163
|
-
/**
|
|
164
|
-
* Write a payload to the Dead Letter Queue.
|
|
165
|
-
*
|
|
166
|
-
* Creates the DLQ directory if it doesn't exist. Writes the payload as
|
|
167
|
-
* pretty-printed JSON. Used as a fallback when the guild HTTP API is
|
|
168
|
-
* unreachable for lifecycle calls.
|
|
169
|
-
*/
|
|
170
|
-
export function writeToDlq(cwd, filename, payload) {
|
|
171
|
-
const dlqDir = path.join(cwd, '.nexus', 'dlq');
|
|
172
|
-
fs.mkdirSync(dlqDir, { recursive: true });
|
|
173
|
-
fs.writeFileSync(path.join(dlqDir, filename), JSON.stringify(payload, null, 2));
|
|
174
|
-
}
|
|
35
|
+
import { processNdjsonBuffer, parseStreamJsonMessage, } from "./index.js";
|
|
36
|
+
import { callGuildHttpApi, openTranscriptDb, readConfigFromStdin, redirectStderrToFile, reportRunning, reportResult, STDERR_DIAGNOSTIC_TAIL_LIMIT, writeToDlq, writeTranscript, } from "./runtime.js";
|
|
37
|
+
// ── Re-exports (preserves the pre-extraction public surface) ────────────
|
|
38
|
+
export { callGuildHttpApi, findRetryableCode, initTranscriptDb, openTranscriptDb, readConfigFromStdin, redirectStderrToFile, reportResult, reportRunning, resolveTerminalStatus, STDERR_DIAGNOSTIC_TAIL_LIMIT, writeToDlq, writeTranscript, } from "./runtime.js";
|
|
175
39
|
// ── MCP proxy server ────────────────────────────────────────────────────
|
|
176
40
|
/**
|
|
177
41
|
* Create an MCP/SSE HTTP server that proxies tool calls to the guild.
|
|
@@ -342,201 +206,6 @@ export async function createProxyMcpHttpServer(tools, guildToolUrl, sessionId) {
|
|
|
342
206
|
},
|
|
343
207
|
};
|
|
344
208
|
}
|
|
345
|
-
/**
|
|
346
|
-
* Open the guild's SQLite database for transcript streaming.
|
|
347
|
-
*
|
|
348
|
-
* Creates the database file and table if they don't exist.
|
|
349
|
-
* Enables WAL mode for concurrent read access by other processes
|
|
350
|
-
* (Oculus, CLI queries, other agents).
|
|
351
|
-
*
|
|
352
|
-
* Uses dynamic import() to load better-sqlite3 at runtime. This avoids
|
|
353
|
-
* requiring the native module at import time (beneficial for type-checking
|
|
354
|
-
* and testing).
|
|
355
|
-
*/
|
|
356
|
-
export async function openTranscriptDb(dbPath) {
|
|
357
|
-
const { default: Database } = await import('better-sqlite3');
|
|
358
|
-
return initTranscriptDb(Database, dbPath);
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Initialize a TranscriptDb from a Database constructor.
|
|
362
|
-
*
|
|
363
|
-
* Shared logic between openTranscriptDb() and test injection.
|
|
364
|
-
* Exported for testing — allows injecting a mock Database constructor.
|
|
365
|
-
*/
|
|
366
|
-
export function initTranscriptDb(DatabaseConstructor, dbPath) {
|
|
367
|
-
const raw = new DatabaseConstructor(dbPath);
|
|
368
|
-
raw.pragma('journal_mode = WAL');
|
|
369
|
-
raw.exec(`
|
|
370
|
-
CREATE TABLE IF NOT EXISTS books_animator_transcripts (
|
|
371
|
-
id TEXT PRIMARY KEY,
|
|
372
|
-
content TEXT NOT NULL
|
|
373
|
-
)
|
|
374
|
-
`);
|
|
375
|
-
const stmt = raw.prepare('INSERT OR REPLACE INTO books_animator_transcripts (id, content) VALUES (?, ?)');
|
|
376
|
-
return {
|
|
377
|
-
writeTranscript(sessionId, content) {
|
|
378
|
-
stmt.run(sessionId, content);
|
|
379
|
-
},
|
|
380
|
-
close() {
|
|
381
|
-
raw.close();
|
|
382
|
-
},
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Write the current transcript to SQLite.
|
|
387
|
-
*/
|
|
388
|
-
export function writeTranscript(db, sessionId, messages) {
|
|
389
|
-
const content = JSON.stringify({ id: sessionId, messages });
|
|
390
|
-
db.writeTranscript(sessionId, content);
|
|
391
|
-
}
|
|
392
|
-
// ── Session lifecycle reporting ─────────────────────────────────────────
|
|
393
|
-
/**
|
|
394
|
-
* Report "running" status to the guild via the session-running tool.
|
|
395
|
-
*
|
|
396
|
-
* If the guild is unreachable, writes the payload to the DLQ.
|
|
397
|
-
*/
|
|
398
|
-
export async function reportRunning(config, cancelHandle, timeoutMs) {
|
|
399
|
-
const route = toolNameToRoute('session-running');
|
|
400
|
-
const url = `${config.guildToolUrl}${route}`;
|
|
401
|
-
const payload = {
|
|
402
|
-
sessionId: config.sessionId,
|
|
403
|
-
startedAt: config.startedAt,
|
|
404
|
-
provider: config.provider,
|
|
405
|
-
metadata: config.metadata,
|
|
406
|
-
cancelHandle,
|
|
407
|
-
};
|
|
408
|
-
try {
|
|
409
|
-
await callGuildHttpApi(url, config.sessionId, payload, timeoutMs);
|
|
410
|
-
}
|
|
411
|
-
catch {
|
|
412
|
-
writeToDlq(config.cwd, `${config.sessionId}-running.json`, payload);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Resolve the terminal status and error text for a terminated session.
|
|
417
|
-
*
|
|
418
|
-
* Cascade order:
|
|
419
|
-
* 1. A `'cancelled'` override (SIGTERM path) — short-circuits.
|
|
420
|
-
* 2. A `terminationTag` already carried on the StreamJsonResult —
|
|
421
|
-
* set by the NDJSON detection cascade inside
|
|
422
|
-
* `parseStreamJsonMessage` (the only active detector).
|
|
423
|
-
* 3. Generic exit-code mapping (0 → completed, non-zero → failed).
|
|
424
|
-
*
|
|
425
|
-
* Generic non-zero exit codes surface as `'failed'`; the Animator's
|
|
426
|
-
* back-off machine only reacts to structured rate-limit terminals, and
|
|
427
|
-
* exit-code-based detection was retired because it produced
|
|
428
|
-
* false-positive pauses.
|
|
429
|
-
*
|
|
430
|
-
* Returns the payload status, a human-readable error string (only
|
|
431
|
-
* populated for the failed branches), and the tag that informed the
|
|
432
|
-
* decision (if any). The tag is forwarded to the guild so the Animator's
|
|
433
|
-
* back-off machine can disambiguate rate-limit terminations without
|
|
434
|
-
* pattern-matching on error text.
|
|
435
|
-
*/
|
|
436
|
-
export function resolveTerminalStatus(result, statusOverride) {
|
|
437
|
-
if (statusOverride === 'cancelled') {
|
|
438
|
-
return { status: 'cancelled' };
|
|
439
|
-
}
|
|
440
|
-
// Second priority: a structural NDJSON tag observed during stream
|
|
441
|
-
// parsing. Fire even on exit code 0 because claude may emit the
|
|
442
|
-
// rate-limit signal and still exit cleanly.
|
|
443
|
-
if (result.terminationTag) {
|
|
444
|
-
return {
|
|
445
|
-
status: 'rate-limited',
|
|
446
|
-
error: result.terminationTag.detail ?? `Anima provider reported a rate limit (source: ${result.terminationTag.source})`,
|
|
447
|
-
terminationTag: result.terminationTag,
|
|
448
|
-
};
|
|
449
|
-
}
|
|
450
|
-
if (result.exitCode === 0) {
|
|
451
|
-
return { status: 'completed' };
|
|
452
|
-
}
|
|
453
|
-
return {
|
|
454
|
-
status: 'failed',
|
|
455
|
-
error: `claude exited with code ${result.exitCode}`,
|
|
456
|
-
};
|
|
457
|
-
}
|
|
458
|
-
/** Maximum number of characters to retain for the diagnostic stderr tail. */
|
|
459
|
-
export const STDERR_DIAGNOSTIC_TAIL_LIMIT = 200;
|
|
460
|
-
/**
|
|
461
|
-
* Report the final session result to the guild via the session-record tool.
|
|
462
|
-
*
|
|
463
|
-
* When the resolved terminal status is exactly `'failed'` (non-zero exit,
|
|
464
|
-
* no structured termination tag, no cancel override), attach a passive
|
|
465
|
-
* `terminationDiagnostic: { exitCode, stderrExcerpt? }` to the payload.
|
|
466
|
-
* The diagnostic is informational only — the Animator's back-off
|
|
467
|
-
* machine never consumes it. The stderr excerpt is only present when
|
|
468
|
-
* the caller supplied a non-empty tail.
|
|
469
|
-
*
|
|
470
|
-
* If the guild is unreachable, writes the payload to the DLQ.
|
|
471
|
-
*/
|
|
472
|
-
export async function reportResult(config, result, transcript, timeoutMs, statusOverride, stderrTail) {
|
|
473
|
-
const route = toolNameToRoute('session-record');
|
|
474
|
-
const url = `${config.guildToolUrl}${route}`;
|
|
475
|
-
const resolved = resolveTerminalStatus(result, statusOverride);
|
|
476
|
-
const output = extractFinalAssistantText(transcript);
|
|
477
|
-
// Only attach the passive diagnostic on a clean `'failed'` bucket —
|
|
478
|
-
// timeout / cancelled / rate-limited are already well-classified.
|
|
479
|
-
const terminationDiagnostic = resolved.status === 'failed'
|
|
480
|
-
? {
|
|
481
|
-
exitCode: result.exitCode,
|
|
482
|
-
...(stderrTail && stderrTail.length > 0 ? { stderrExcerpt: stderrTail } : {}),
|
|
483
|
-
}
|
|
484
|
-
: undefined;
|
|
485
|
-
const payload = {
|
|
486
|
-
sessionId: config.sessionId,
|
|
487
|
-
status: resolved.status,
|
|
488
|
-
exitCode: result.exitCode,
|
|
489
|
-
signal: result.signal,
|
|
490
|
-
error: resolved.error,
|
|
491
|
-
costUsd: result.costUsd,
|
|
492
|
-
tokenUsage: result.tokenUsage,
|
|
493
|
-
output,
|
|
494
|
-
providerSessionId: result.providerSessionId,
|
|
495
|
-
transcript,
|
|
496
|
-
...(resolved.terminationTag ? { terminationTag: resolved.terminationTag } : {}),
|
|
497
|
-
...(terminationDiagnostic ? { terminationDiagnostic } : {}),
|
|
498
|
-
};
|
|
499
|
-
try {
|
|
500
|
-
await callGuildHttpApi(url, config.sessionId, payload, timeoutMs);
|
|
501
|
-
}
|
|
502
|
-
catch {
|
|
503
|
-
writeToDlq(config.cwd, `${config.sessionId}.json`, payload);
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
// ── Stderr redirect ────────────────────────────────────────────────────
|
|
507
|
-
/**
|
|
508
|
-
* Open a per-session log file and redirect process.stderr.write to it.
|
|
509
|
-
*
|
|
510
|
-
* Creates the logDir (recursive) and opens `<logDir>/<sessionId>.log`
|
|
511
|
-
* for append-writing. Replaces process.stderr.write with a function
|
|
512
|
-
* that calls fs.writeSync on the owned fd. Writes the startup banner
|
|
513
|
-
* as the first line.
|
|
514
|
-
*
|
|
515
|
-
* Returns the owned fd so the caller can close it in a finally block.
|
|
516
|
-
*
|
|
517
|
-
* @internal Exported for testing only.
|
|
518
|
-
*/
|
|
519
|
-
export function redirectStderrToFile(logDir, sessionId) {
|
|
520
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
521
|
-
const logFilePath = path.join(logDir, `${sessionId}.log`);
|
|
522
|
-
const fd = fs.openSync(logFilePath, 'a');
|
|
523
|
-
// Replace process.stderr.write with a function that writes to our fd.
|
|
524
|
-
process.stderr.write = function (chunk, encodingOrCallback, callback) {
|
|
525
|
-
const encoding = typeof encodingOrCallback === 'string' ? encodingOrCallback : 'utf8';
|
|
526
|
-
const cb = typeof encodingOrCallback === 'function' ? encodingOrCallback : callback;
|
|
527
|
-
const buffer = typeof chunk === 'string'
|
|
528
|
-
? Buffer.from(chunk, encoding)
|
|
529
|
-
: chunk;
|
|
530
|
-
fs.writeSync(fd, buffer);
|
|
531
|
-
if (cb)
|
|
532
|
-
cb();
|
|
533
|
-
return true;
|
|
534
|
-
};
|
|
535
|
-
// Write the startup banner (now goes to the log file).
|
|
536
|
-
const pgid = process.getgid?.() ?? process.pid;
|
|
537
|
-
process.stderr.write(`[babysitter] session=${sessionId} pid=${process.pid} pgid=${pgid} log=${logFilePath} started at ${new Date().toISOString()}\n`);
|
|
538
|
-
return fd;
|
|
539
|
-
}
|
|
540
209
|
// ── Main babysitter function ────────────────────────────────────────────
|
|
541
210
|
/**
|
|
542
211
|
* Run the session babysitter.
|
package/dist/babysitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babysitter.js","sourceRoot":"","sources":["../src/babysitter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"babysitter.js","sourceRoot":"","sources":["../src/babysitter.ts"],"names":[],"mappings":"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"}
|