@exla/rudder 4.0.0-alpha.2 → 4.0.0-alpha.7

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 (41) hide show
  1. package/dist/brain.d.ts +7 -5
  2. package/dist/brain.js +32 -22
  3. package/dist/brain.js.map +1 -1
  4. package/dist/claude-sdk-protocol.d.ts +125 -0
  5. package/dist/claude-sdk-protocol.js +491 -0
  6. package/dist/claude-sdk-protocol.js.map +1 -0
  7. package/dist/claude-sdk.d.ts +28 -0
  8. package/dist/claude-sdk.js +425 -0
  9. package/dist/claude-sdk.js.map +1 -0
  10. package/dist/context-audit.js +1 -1
  11. package/dist/context-audit.js.map +1 -1
  12. package/dist/daemon.js +3 -0
  13. package/dist/daemon.js.map +1 -1
  14. package/dist/engine-authority.d.ts +5 -0
  15. package/dist/engine-authority.js +34 -0
  16. package/dist/engine-authority.js.map +1 -0
  17. package/dist/engine.d.ts +33 -0
  18. package/dist/engine.js +154 -0
  19. package/dist/engine.js.map +1 -0
  20. package/dist/fabric-local.d.ts +50 -0
  21. package/dist/fabric-local.js +339 -0
  22. package/dist/fabric-local.js.map +1 -0
  23. package/dist/fabric-remote.d.ts +92 -0
  24. package/dist/fabric-remote.js +402 -0
  25. package/dist/fabric-remote.js.map +1 -0
  26. package/dist/main.js +27 -1
  27. package/dist/main.js.map +1 -1
  28. package/dist/native/darwin-arm64/rudder-native +0 -0
  29. package/dist/native/darwin-x64/rudder-native +0 -0
  30. package/dist/native/linux-x64/rudder-native +0 -0
  31. package/dist/planner.js +1 -1
  32. package/dist/planner.js.map +1 -1
  33. package/dist/run-manager.js +11 -1
  34. package/dist/run-manager.js.map +1 -1
  35. package/dist/scheduler.js +3 -0
  36. package/dist/scheduler.js.map +1 -1
  37. package/dist/surfaces.d.ts +1 -1
  38. package/dist/surfaces.js +6 -7
  39. package/dist/surfaces.js.map +1 -1
  40. package/dist/types.d.ts +3 -0
  41. package/package.json +2 -1
@@ -0,0 +1,425 @@
1
+ /** Explicit managed Claude renderer + local control transport. Agent JSON stays
2
+ * on the child pipes; only rendered text reaches the engine-owned terminal. */
3
+ import { spawn } from "node:child_process";
4
+ import fs from "node:fs/promises";
5
+ import { constants } from "node:fs";
6
+ import http from "node:http";
7
+ import path from "node:path";
8
+ import readline from "node:readline";
9
+ import { Transform } from "node:stream";
10
+ import { WebSocket, WebSocketServer } from "ws";
11
+ import { ClaudeSdkProtocol, SDK_FRAME_LIMIT, SDK_PROFILE, SDK_TEXT_LIMIT, SdkControlError, id, object, text } from "./claude-sdk-protocol.js";
12
+ export async function readClaudeSdkLaunch(file) {
13
+ const handle = await fs.open(file, constants.O_RDONLY | constants.O_NOFOLLOW);
14
+ try {
15
+ const stat = await handle.stat();
16
+ if (!stat.isFile() || stat.size > 256 * 1024 || stat.mode & 0o077 || process.getuid && stat.uid !== process.getuid())
17
+ throw new Error("Managed Claude launch must be a private regular file");
18
+ const raw = JSON.parse(await handle.readFile("utf8"));
19
+ const allowed = ["format_version", "run_id", "attempt_id", "socket_path", "claude_program", "claude_args", "initial_prompt"];
20
+ if (!object(raw) || Object.keys(raw).some((key) => !allowed.includes(key)) || raw.format_version !== 1 || !id(raw.run_id) || !id(raw.attempt_id)
21
+ || typeof raw.socket_path !== "string" || !path.isAbsolute(raw.socket_path) || path.basename(raw.socket_path) !== "cx.sock" || Buffer.byteLength(raw.socket_path) >= 104
22
+ || typeof raw.claude_program !== "string" || !raw.claude_program || raw.claude_program.includes("\0") || raw.claude_program.length > 4096
23
+ || !Array.isArray(raw.claude_args) || raw.claude_args.length > 1024 || raw.claude_args.some((arg) => typeof arg !== "string" || arg.includes("\0"))
24
+ || !(raw.initial_prompt === null || text(raw.initial_prompt)))
25
+ throw new Error("Invalid managed Claude launch");
26
+ const parent = await fs.lstat(path.dirname(raw.socket_path));
27
+ if (!parent.isDirectory() || parent.mode & 0o077 || process.getuid && parent.uid !== process.getuid())
28
+ throw new Error("Managed Claude socket directory must be private");
29
+ if (process.env.RUDDER_FABRIC_ATTEMPT_ID && process.env.RUDDER_FABRIC_ATTEMPT_ID !== raw.attempt_id)
30
+ throw new Error("Managed Claude launch has a stale attempt identity");
31
+ return raw;
32
+ }
33
+ finally {
34
+ await handle.close();
35
+ }
36
+ }
37
+ export function claudeSdkArgv(original) {
38
+ const args = [];
39
+ for (let at = 0; at < original.length; at++) {
40
+ const arg = original[at];
41
+ if (["--dangerously-load-development-channels", "--channels", "--remote-control"].includes(arg))
42
+ throw new Error("This Claude launch requires the interactive profile");
43
+ if (["--input-format", "--output-format"].includes(arg)) {
44
+ if (!original[++at])
45
+ throw new Error("Missing Claude format option");
46
+ continue;
47
+ }
48
+ if (["-p", "--print", "--verbose", "--replay-user-messages", "--include-partial-messages"].includes(arg))
49
+ continue;
50
+ if (arg.startsWith("--input-format=") || arg.startsWith("--output-format="))
51
+ continue;
52
+ args.push(arg);
53
+ }
54
+ args.push("--print", "--input-format", "stream-json", "--output-format", "stream-json", "--verbose", "--replay-user-messages", "--include-partial-messages");
55
+ return args;
56
+ }
57
+ /** Identity comes from the engine's explicit CLI selection, never peer text.
58
+ * A fork without an explicit new id waits for the backend's own init event. */
59
+ export function selectedClaudeSdkSession(args) {
60
+ const selected = [], resumed = [];
61
+ for (let at = 0; at < args.length; at++) {
62
+ if (args[at] === "--session-id" || args[at] === "--resume" || args[at] === "-r") {
63
+ const flag = args[at], value = args[++at];
64
+ if (!id(value) || value.startsWith("-"))
65
+ throw new Error("Managed Claude needs an explicit session id");
66
+ (flag === "--session-id" ? selected : resumed).push(value);
67
+ }
68
+ }
69
+ if (new Set(selected).size > 1 || new Set(resumed).size > 1)
70
+ throw new Error("Ambiguous managed Claude session selection");
71
+ if (args.includes("--fork-session"))
72
+ return selected[0] ?? null;
73
+ if (selected.length && resumed.length && selected[0] !== resumed[0])
74
+ throw new Error("Conflicting managed Claude session selection");
75
+ return selected[0] ?? resumed[0] ?? null;
76
+ }
77
+ /** Complete JSON frames are bounded before parsing, even without newlines. */
78
+ export class SdkJsonLines {
79
+ frame;
80
+ failed;
81
+ pending = Buffer.alloc(0);
82
+ constructor(frame, failed) {
83
+ this.frame = frame;
84
+ this.failed = failed;
85
+ }
86
+ broken = false;
87
+ push(chunk) {
88
+ if (this.broken)
89
+ return;
90
+ let start = 0;
91
+ while (start < chunk.length) {
92
+ const end = chunk.indexOf(10, start);
93
+ const part = chunk.subarray(start, end < 0 ? chunk.length : end);
94
+ if (this.pending.length + part.length > SDK_FRAME_LIMIT) {
95
+ this.fail(new Error("Claude JSON frame exceeds 1 MiB"));
96
+ return;
97
+ }
98
+ this.pending = Buffer.concat([this.pending, part]);
99
+ if (end < 0)
100
+ return;
101
+ this.consume();
102
+ if (this.broken)
103
+ return;
104
+ start = end + 1;
105
+ }
106
+ }
107
+ end() { if (this.pending.length && !this.broken)
108
+ this.consume(); }
109
+ consume() {
110
+ const raw = this.pending;
111
+ this.pending = Buffer.alloc(0);
112
+ if (!raw.toString("utf8").trim())
113
+ return;
114
+ try {
115
+ this.frame(JSON.parse(raw.toString("utf8")));
116
+ }
117
+ catch (error) {
118
+ this.fail(error instanceof Error ? error : new Error("Invalid Claude JSON"));
119
+ }
120
+ }
121
+ fail(error) { this.broken = true; this.failed(error); }
122
+ }
123
+ function safeDisplay(value, limit = 8192) {
124
+ return String(value ?? "").slice(0, limit).replace(/[\x00-\x08\x0b-\x1f\x7f]/g, "");
125
+ }
126
+ class SdkRenderer {
127
+ output;
128
+ streamed = false;
129
+ constructor(output) {
130
+ this.output = output;
131
+ }
132
+ write(value) {
133
+ // A detached/slow surface cannot cause an unbounded Node stdout queue.
134
+ if ((this.output.writableLength ?? 0) < SDK_FRAME_LIMIT)
135
+ this.output.write(value);
136
+ }
137
+ notice(value) { this.write(`\n[rudder] ${safeDisplay(value)}\n`); }
138
+ frame(value) {
139
+ if (!object(value))
140
+ return;
141
+ if (value.type === "stream_event" && object(value.event) && object(value.event.delta) && value.event.delta.type === "text_delta") {
142
+ this.streamed = true;
143
+ this.write(safeDisplay(value.event.delta.text));
144
+ return;
145
+ }
146
+ if (value.type === "assistant" && object(value.message) && Array.isArray(value.message.content)) {
147
+ for (const block of value.message.content)
148
+ if (object(block)) {
149
+ if (block.type === "text" && !this.streamed)
150
+ this.write(`${safeDisplay(block.text)}\n`);
151
+ else if (block.type === "tool_use")
152
+ this.write(`\n[tool] ${safeDisplay(block.name, 128)}\n`);
153
+ }
154
+ this.streamed = false;
155
+ }
156
+ else if (value.type === "tool_progress")
157
+ this.write(`\n[tool] ${safeDisplay(value.tool_name, 128)} running\n`);
158
+ else if (value.type === "result") {
159
+ this.streamed = false;
160
+ if (value.terminal_reason === "aborted_streaming" || value.terminal_reason === "aborted_tools")
161
+ this.notice("Turn interrupted.");
162
+ else if (value.is_error === true)
163
+ this.notice(`Claude reported a failed turn: ${safeDisplay(Array.isArray(value.errors) ? value.errors.join("; ") : value.result, 2048)}`);
164
+ else if (value.num_turns === 0 && value.terminal_reason == null && typeof value.result === "string")
165
+ this.write(`${safeDisplay(value.result)}\n`);
166
+ else
167
+ this.write("\n");
168
+ }
169
+ }
170
+ }
171
+ function boundedHumanInput(input, oversize, boundary) {
172
+ let count = 0, dropping = false, previousCR = false;
173
+ const guarded = new Transform({ transform(chunk, _encoding, callback) {
174
+ let begin = 0;
175
+ for (let at = 0; at < chunk.length; at++) {
176
+ if (chunk[at] === 10 || chunk[at] === 13 || chunk[at] === 3) {
177
+ if (!dropping)
178
+ this.push(chunk.subarray(begin, at));
179
+ if (chunk[at] !== 3 && !(chunk[at] === 10 && previousCR))
180
+ boundary(dropping);
181
+ previousCR = chunk[at] === 13;
182
+ this.push(chunk.subarray(at, at + 1));
183
+ begin = at + 1;
184
+ count = 0;
185
+ dropping = false;
186
+ }
187
+ else if (!dropping && ++count > SDK_TEXT_LIMIT) {
188
+ previousCR = false;
189
+ this.push(chunk.subarray(begin, at));
190
+ begin = at + 1;
191
+ dropping = true;
192
+ oversize();
193
+ }
194
+ else
195
+ previousCR = false;
196
+ }
197
+ if (!dropping)
198
+ this.push(chunk.subarray(begin));
199
+ callback();
200
+ } });
201
+ // readline retains the normal terminal editing/key behavior while the guard
202
+ // caps a pasted line before readline can accumulate it without a bound.
203
+ Object.assign(guarded, { isTTY: input.isTTY, setRawMode: input.setRawMode?.bind(input) });
204
+ input.pipe(guarded);
205
+ return guarded;
206
+ }
207
+ function rpcError(kind, message) {
208
+ return { code: kind === "unsupported" ? -32011 : -32010, message };
209
+ }
210
+ /** Hidden CLI: rudder __claude-sdk --launch-file <private JSON>. */
211
+ export async function runClaudeSdkBridge(args) {
212
+ if (args.length !== 2 || args[0] !== "--launch-file")
213
+ throw new Error("usage: rudder __claude-sdk --launch-file <path>");
214
+ const launch = await readClaudeSdkLaunch(args[1]);
215
+ const cwd = await fs.realpath(process.cwd());
216
+ const renderer = new SdkRenderer(process.stdout);
217
+ const peers = new Set();
218
+ let controller = null, closing = false, stopTimer = null;
219
+ const server = http.createServer((_request, response) => { response.writeHead(404); response.end(); });
220
+ const sockets = new WebSocketServer({ noServer: true, maxPayload: SDK_FRAME_LIMIT, perMessageDeflate: false });
221
+ const child = spawn(launch.claude_program, claudeSdkArgv(launch.claude_args), { cwd, env: process.env, stdio: ["pipe", "pipe", "pipe"] });
222
+ let childError = null, childExit = null;
223
+ const exited = new Promise((resolve) => {
224
+ child.once("error", (error) => { childError = error; resolve(); });
225
+ child.once("exit", (code) => { childExit = code; resolve(); });
226
+ });
227
+ const protocol = new ClaudeSdkProtocol(launch.run_id, launch.attempt_id, cwd, (frame) => {
228
+ if (!child.stdin.writable)
229
+ throw new Error("Claude stdin is closed");
230
+ const bytes = `${JSON.stringify(frame)}\n`;
231
+ if (Buffer.byteLength(bytes) > SDK_FRAME_LIMIT || child.stdin.writableLength > 2 * SDK_FRAME_LIMIT)
232
+ throw new Error("Claude stdin queue is full");
233
+ child.stdin.write(bytes, (error) => { if (error)
234
+ protocol.failTransport("Claude stdin write failed; do not replay"); });
235
+ }, (frame) => {
236
+ for (const peer of peers)
237
+ if (peer.readyState === WebSocket.OPEN) {
238
+ if (peer.bufferedAmount >= SDK_FRAME_LIMIT)
239
+ peer.close(1013, "Adapter observer fell behind");
240
+ else
241
+ peer.send(JSON.stringify(frame));
242
+ }
243
+ }, (message) => renderer.notice(message), 30_000, selectedClaudeSdkSession(launch.claude_args));
244
+ child.stdin.on("error", () => protocol.failTransport("Claude stdin transport closed"));
245
+ const parser = new SdkJsonLines((frame) => { protocol.ingest(frame); renderer.frame(frame); }, (error) => {
246
+ protocol.failTransport(error.message);
247
+ child.kill("SIGTERM");
248
+ });
249
+ child.stdout.on("data", (chunk) => parser.push(chunk));
250
+ child.stdout.on("end", () => parser.end());
251
+ child.stderr.on("data", (chunk) => renderer.notice(safeDisplay(chunk.toString("utf8"), 4096)));
252
+ server.on("upgrade", (request, socket, head) => {
253
+ if (request.headers.origin || controller || closing) {
254
+ socket.end("HTTP/1.1 403 Forbidden\r\nConnection: close\r\n\r\n");
255
+ return;
256
+ }
257
+ sockets.handleUpgrade(request, socket, head, (peer) => sockets.emit("connection", peer));
258
+ });
259
+ sockets.on("connection", (peer) => {
260
+ controller = peer;
261
+ peers.add(peer);
262
+ let initialized = false, inFlight = 0;
263
+ peer.on("error", () => { });
264
+ peer.on("close", () => { peers.delete(peer); if (controller === peer)
265
+ controller = null; });
266
+ const reply = (value) => {
267
+ if (peer.readyState === WebSocket.OPEN) {
268
+ if (peer.bufferedAmount >= SDK_FRAME_LIMIT)
269
+ peer.close(1013, "Adapter observer fell behind");
270
+ else
271
+ peer.send(JSON.stringify(value));
272
+ }
273
+ };
274
+ peer.on("message", (data) => {
275
+ void (async () => {
276
+ let raw;
277
+ try {
278
+ raw = JSON.parse(data.toString());
279
+ }
280
+ catch {
281
+ reply({ id: null, error: { code: -32700, message: "Invalid JSON" } });
282
+ return;
283
+ }
284
+ if (!object(raw) || !id(raw.method) || !(Number.isSafeInteger(raw.id) || id(raw.id) || raw.id === undefined)) {
285
+ reply({ id: null, error: { code: -32600, message: "Invalid local adapter request" } });
286
+ return;
287
+ }
288
+ if (raw.method === "initialized" && raw.id === undefined)
289
+ return;
290
+ if (inFlight >= 4) {
291
+ reply({ id: raw.id, error: rpcError("rejected", "Too many adapter requests") });
292
+ return;
293
+ }
294
+ inFlight++;
295
+ try {
296
+ if (raw.method === "initialize") {
297
+ if (initialized)
298
+ throw new SdkControlError("rejected", "Adapter connection is already initialized");
299
+ initialized = true;
300
+ reply({ id: raw.id, result: { profile: SDK_PROFILE, format_version: 1, run_id: launch.run_id, attempt_id: launch.attempt_id, steer_mode: "interrupt_then_replace" } });
301
+ return;
302
+ }
303
+ if (!initialized)
304
+ throw new SdkControlError("rejected", "Initialize the adapter connection first");
305
+ const params = object(raw.params) ? raw.params : {};
306
+ const thread = protocol.thread();
307
+ if (raw.method === "thread/loaded/list") {
308
+ reply({ id: raw.id, result: { data: thread ? [thread.id] : [], rudder_uncertain: protocol.snapshot().uncertain } });
309
+ return;
310
+ }
311
+ if (!thread || params.threadId !== thread.id)
312
+ throw new SdkControlError("rejected", "Managed Claude session is not qualified or does not match");
313
+ if (raw.method === "thread/read" || raw.method === "thread/resume") {
314
+ reply({ id: raw.id, result: { thread } });
315
+ return;
316
+ }
317
+ if (raw.method === "thread/turns/list") {
318
+ reply({ id: raw.id, result: { data: thread.turns, nextCursor: null } });
319
+ return;
320
+ }
321
+ if (!["turn/start", "turn/steer", "turn/interrupt"].includes(raw.method))
322
+ throw new SdkControlError("unsupported", "Unsupported managed Claude adapter method");
323
+ if (!object(params._rudder) || !object(params._rudder.operation))
324
+ throw new SdkControlError("rejected", "Authenticated engine command metadata is required");
325
+ const op = params._rudder.operation.kind;
326
+ if (raw.method === "turn/interrupt" && op !== "interrupt" || raw.method === "turn/steer" && op !== "steer" || raw.method === "turn/start" && op !== "deliver" && op !== "resume")
327
+ throw new SdkControlError("rejected", "Adapter method and operation disagree");
328
+ if (raw.method === "turn/interrupt" && params.turnId !== params._rudder.expected_turn_id || raw.method === "turn/steer" && params.expectedTurnId !== params._rudder.expected_turn_id)
329
+ throw new SdkControlError("rejected", "Adapter turn identities disagree");
330
+ const result = await protocol.execute(params._rudder, String(params.threadId));
331
+ reply({ id: raw.id, result });
332
+ }
333
+ catch (error) {
334
+ const failure = error instanceof SdkControlError ? error : new SdkControlError("uncertain", error instanceof Error ? error.message : "Managed Claude command failed");
335
+ reply(failure.kind === "uncertain" ? { id: raw.id, result: { rudderUncertain: failure.message } } : { id: raw.id, error: rpcError(failure.kind, failure.message) });
336
+ }
337
+ finally {
338
+ inFlight--;
339
+ }
340
+ })();
341
+ });
342
+ });
343
+ let rl = null, guarded = null;
344
+ const stop = () => {
345
+ if (!closing) {
346
+ closing = true;
347
+ child.kill("SIGTERM");
348
+ stopTimer = setTimeout(() => {
349
+ if (child.exitCode === null && child.signalCode === null)
350
+ child.kill("SIGKILL");
351
+ }, 2000);
352
+ stopTimer.unref();
353
+ }
354
+ };
355
+ const onTerm = () => stop();
356
+ process.on("SIGTERM", onTerm);
357
+ process.on("SIGHUP", onTerm);
358
+ try {
359
+ await new Promise((resolve, reject) => { server.once("error", reject); server.listen(launch.socket_path, () => { server.removeListener("error", reject); resolve(); }); });
360
+ await fs.chmod(launch.socket_path, 0o600);
361
+ renderer.notice("Claude managed session. Enter sends; /interrupt stops a turn; /approve or /deny answers a permission request.");
362
+ await Promise.race([protocol.initialize(), exited.then(() => { throw childError ?? new Error("Claude exited before initialization"); })]);
363
+ const discardedLines = [];
364
+ guarded = boundedHumanInput(process.stdin, () => renderer.notice("Input exceeds 64 KiB; that line was discarded."), (discard) => discardedLines.push(discard));
365
+ rl = readline.createInterface({ input: guarded, output: process.stdout, terminal: !!process.stdin.isTTY, prompt: "> ", crlfDelay: Infinity });
366
+ rl.on("line", (line) => {
367
+ if (discardedLines.shift())
368
+ return;
369
+ const body = line.trim();
370
+ if (!body)
371
+ return;
372
+ const answer = /^\/(approve|deny) ([a-zA-Z0-9-]+)$/.exec(body);
373
+ if (answer) {
374
+ try {
375
+ protocol.answerPermission(answer[2], answer[1] === "approve");
376
+ }
377
+ catch (error) {
378
+ renderer.notice(error.message);
379
+ }
380
+ }
381
+ else if (body === "/interrupt")
382
+ void protocol.humanInterrupt().catch((error) => renderer.notice(error.message));
383
+ else if (body === "/quit")
384
+ stop();
385
+ else
386
+ void protocol.humanInput(body).catch((error) => renderer.notice(error.message));
387
+ if (process.stdin.isTTY)
388
+ rl?.prompt();
389
+ });
390
+ rl.on("SIGINT", () => { void protocol.humanInterrupt().catch((error) => renderer.notice(error.message)); });
391
+ rl.on("close", stop);
392
+ if (process.stdin.isTTY)
393
+ rl.prompt();
394
+ if (launch.initial_prompt)
395
+ void protocol.humanInput(launch.initial_prompt).catch((error) => renderer.notice(error.message));
396
+ await exited;
397
+ if (childError)
398
+ throw childError;
399
+ if (!closing && childExit !== 0)
400
+ throw new Error(`Claude managed process exited with code ${childExit ?? "unknown"}`);
401
+ }
402
+ finally {
403
+ closing = true;
404
+ protocol.close();
405
+ if (stopTimer)
406
+ clearTimeout(stopTimer);
407
+ rl?.close();
408
+ if (guarded) {
409
+ process.stdin.unpipe(guarded);
410
+ guarded.destroy();
411
+ }
412
+ for (const peer of peers)
413
+ peer.terminate();
414
+ sockets.close();
415
+ server.close();
416
+ process.off("SIGTERM", onTerm);
417
+ process.off("SIGHUP", onTerm);
418
+ if (child.exitCode === null && child.signalCode === null) {
419
+ child.kill("SIGTERM");
420
+ await Promise.race([exited, new Promise((resolve) => { const timer = setTimeout(() => { child.kill("SIGKILL"); resolve(); }, 2000); timer.unref(); })]);
421
+ }
422
+ await fs.unlink(launch.socket_path).catch(() => { });
423
+ }
424
+ }
425
+ //# sourceMappingURL=claude-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-sdk.js","sourceRoot":"","sources":["../src/claude-sdk.ts"],"names":[],"mappings":"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"}
@@ -101,7 +101,7 @@ async function collectContextFiles(repoRoot) {
101
101
  return [...files].sort();
102
102
  }
103
103
  function secretPattern() {
104
- return /(sk-[A-Za-z0-9_-]{16,}|ghp_[A-Za-z0-9_]{16,}|github_pat_[A-Za-z0-9_]{16,}|xox[baprs]-[A-Za-z0-9-]{16,}|api[_-]?key\s*=\s*[A-Za-z0-9_.-]{16,})/i;
104
+ return /(?<![A-Za-z0-9_])(sk-[A-Za-z0-9_-]{16,}|ghp_[A-Za-z0-9_]{16,}|github_pat_[A-Za-z0-9_]{16,}|xox[baprs]-[A-Za-z0-9-]{16,}|(?:AKIA|ASIA)[A-Z0-9]{16}|api[_-]?key\s*=\s*[A-Za-z0-9_.-]{16,})/i;
105
105
  }
106
106
  function promptInjectionPattern() {
107
107
  return /(ignore (all )?(previous|prior) instructions|you are now|developer mode|<\/system>|<<SYS>>|\[INST\])/i;
@@ -1 +1 @@
1
- {"version":3,"file":"context-audit.js","sourceRoot":"","sources":["../src/context-audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-audit.js","sourceRoot":"","sources":["../src/context-audit.ts"],"names":[],"mappings":"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"}
package/dist/daemon.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import fs from "node:fs";
2
+ import { assertLegacyWriterAllowed } from "./engine-authority.js";
2
3
  import fsp from "node:fs/promises";
3
4
  import path from "node:path";
4
5
  import { processAlive } from "./git.js";
@@ -29,6 +30,8 @@ async function readPidFile(repoRoot) {
29
30
  * starts the board daemon in-process and writes the pid file.
30
31
  */
31
32
  export async function ensureBoardRunning(repoRoot, opts) {
33
+ if (opts?.scheduler !== false)
34
+ assertLegacyWriterAllowed(repoRoot);
32
35
  // registerProject is idempotent and returns this repo's stable slug, which we use
33
36
  // to deep-link the browser straight to this project's board.
34
37
  const project = await registerProject(repoRoot).catch(() => null);
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** A projection selects the project's migration mode. It is not a lease or
2
+ * proof that the owner is alive; native verifies the lock, epoch and socket.
3
+ */
4
+ export declare function projectEngineAuthority(repo: string): "fabric" | "legacy-native" | "legacy-ts" | undefined;
5
+ export declare function assertLegacyWriterAllowed(repo: string): void;
@@ -0,0 +1,34 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ /** A projection selects the project's migration mode. It is not a lease or
4
+ * proof that the owner is alive; native verifies the lock, epoch and socket.
5
+ */
6
+ export function projectEngineAuthority(repo) {
7
+ let raw;
8
+ try {
9
+ raw = fs.readFileSync(path.join(repo, ".rudder", "engine", "owner.json"), "utf8");
10
+ }
11
+ catch (error) {
12
+ if (error.code === "ENOENT")
13
+ return undefined;
14
+ throw error;
15
+ }
16
+ let value;
17
+ try {
18
+ value = JSON.parse(raw);
19
+ }
20
+ catch {
21
+ throw new Error("Project engine ownership record is unreadable; recover the engine before starting a writer.");
22
+ }
23
+ const data = value;
24
+ if (!data || data.format_version !== 1 || !["fabric", "legacy-native", "legacy-ts"].includes(String(data.authority))) {
25
+ throw new Error("Unsupported project engine authority; use a compatible Rudder engine.");
26
+ }
27
+ return data.authority;
28
+ }
29
+ export function assertLegacyWriterAllowed(repo) {
30
+ if (projectEngineAuthority(repo) === "fabric") {
31
+ throw new Error("This project uses the persistent engine. Use its dashboard or machine API so commands retain the current owner epoch.");
32
+ }
33
+ }
34
+ //# sourceMappingURL=engine-authority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-authority.js","sourceRoot":"","sources":["../src/engine-authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QAAC,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;IAC1F,OAAO,KAAK,EAAE,CAAC;QACb,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACzE,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;IAAC,CAAC;IAC1J,MAAM,IAAI,GAAG,KAAiE,CAAC;IAC/E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACrH,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,IAAI,CAAC,SAAqD,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uHAAuH,CAAC,CAAC;IAC3I,CAAC;AACH,CAAC"}
@@ -0,0 +1,33 @@
1
+ export type EngineStatus = {
2
+ format_version: 1;
3
+ running: boolean;
4
+ repo: string;
5
+ authority: "fabric" | "legacy-native" | "legacy-ts";
6
+ implementation?: string;
7
+ state: string;
8
+ pid?: number | null;
9
+ owner?: {
10
+ project_id: string;
11
+ owner_id: string;
12
+ epoch: number;
13
+ } | null;
14
+ instance_id?: string | null;
15
+ attach_socket?: string;
16
+ control_socket?: string;
17
+ started_at?: string;
18
+ };
19
+ type EngineOptions = {
20
+ nativeBinary?: string;
21
+ env?: NodeJS.ProcessEnv;
22
+ timeoutMs?: number;
23
+ };
24
+ export declare function parseEngineStatus(raw: string): EngineStatus;
25
+ export declare function readEngineStatus(repo: string, options?: EngineOptions): Promise<EngineStatus>;
26
+ export declare function shutdownEngine(repo: string, options?: EngineOptions): Promise<EngineStatus>;
27
+ /** The child owns the lifecycle. Closing the caller's terminal only closes a view. */
28
+ export declare function ensureEngineRunning(repo: string, options?: EngineOptions): Promise<EngineStatus>;
29
+ /** Explicit migration opt-in until the remaining legacy ingress paths are fenced. */
30
+ export declare function persistentEngineRequested(env?: NodeJS.ProcessEnv): boolean;
31
+ export declare function persistentProjectEngineRequested(repo: string, env?: NodeJS.ProcessEnv): boolean;
32
+ export declare function runEngineCommand(action: string | undefined, repo: string, json?: boolean): Promise<void>;
33
+ export {};