@tokenfactory/acc-runner 0.44.7 → 0.44.8

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.
@@ -1,3 +1,3 @@
1
- export declare const BUILD_COMMIT_SHA = "49e865f002badc256757c4d42654e6635eb081ed";
1
+ export declare const BUILD_COMMIT_SHA = "5b40ef40fe44b552238ee21cb9d6a1abc3ae2db8";
2
2
  export declare const BUILD_DIST_SHA256 = "pending-build";
3
3
  //# sourceMappingURL=build-info.generated.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Generated by scripts/gen-build-info.mjs. Do not edit by hand.
2
- export const BUILD_COMMIT_SHA = "49e865f002badc256757c4d42654e6635eb081ed";
3
- export const BUILD_DIST_SHA256 = "ec0277436f698957e2ba3cf05ed09b9a2868a5f78eeb7f72b8bf74185c24769c";
2
+ export const BUILD_COMMIT_SHA = "5b40ef40fe44b552238ee21cb9d6a1abc3ae2db8";
3
+ export const BUILD_DIST_SHA256 = "315020a9a7c9ce65e1e35c70a989bb71cc8b577aec47b4091faa53d415352067";
@@ -1,5 +1,6 @@
1
1
  import { type ExecaChildProcess } from "execa";
2
2
  import { type CodexAuthMode } from "../provider-auth.js";
3
+ import { type McpServerEntry } from "../mcp-spawn.js";
3
4
  import { type ParsedChatStreamEvent } from "./chat-stream.js";
4
5
  import type { AccMcpToolBusFence, ConformantAgentEngine, EngineCapabilityMatrix, EngineStreamTurnOptions } from "./types.js";
5
6
  /**
@@ -30,11 +31,21 @@ export declare function accMcpToolBusOnly(): AccMcpToolBusFence;
30
31
  * an approval prompt, is the boundary (mirrors the batch lane rationale).
31
32
  * -c tools.<native>=false → defence-in-depth block-list
32
33
  * -c experimental_use_only_mcp_tools=true → ONLY MCP (acc-mcp) tools may run
34
+ * --ignore-user-config → ambient MCP servers stay excluded
33
35
  * `--model` is forwarded only when the turn pins a non-blank model.
34
36
  */
35
- export declare function buildCodexChatArgs(opts?: {
37
+ export interface CodexChatArgsOptions {
36
38
  modelId?: string | null;
37
- }): string[];
39
+ accMcpServer?: McpServerEntry;
40
+ }
41
+ /**
42
+ * Read the runner-provisioned ACC entry from `<cwd>/.mcp.json`. Claude consumes
43
+ * that file directly; Codex does not, so the Codex adapter converts only the
44
+ * non-secret launch shape into per-process config overrides. A missing or
45
+ * malformed entry fails closed instead of starting an unfenced chat turn.
46
+ */
47
+ export declare function loadAccMcpServerForCodex(cwd: string): McpServerEntry;
48
+ export declare function buildCodexChatArgs(opts?: CodexChatArgsOptions): string[];
38
49
  /**
39
50
  * Augment the base environment for a codex chat turn: resolve the first-attempt
40
51
  * auth channel (subscription vs api-key) via the shared `withOpenAiAuth` (so chat
@@ -42,7 +53,7 @@ export declare function buildCodexChatArgs(opts?: {
42
53
  * per-turn delegation token so the acc-mcp bus acts with the narrowly-scoped
43
54
  * companion delegation rather than the runner token. Never mutates `base`.
44
55
  */
45
- export declare function codexChatEnv(opts: EngineStreamTurnOptions): NodeJS.ProcessEnv;
56
+ export declare function codexChatEnv(opts: EngineStreamTurnOptions, accMcpServer?: McpServerEntry): NodeJS.ProcessEnv;
46
57
  /**
47
58
  * TOLERANT parse of one line of a codex chat stream into a stream event. Reads
48
59
  * TWO shapes so one conformance suite drives both adapters:
@@ -1 +1 @@
1
- {"version":3,"file":"codex-chat.d.ts","sourceRoot":"","sources":["../../src/engines/codex-chat.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAErB,sBAAsB,EAItB,uBAAuB,EAExB,MAAM,YAAY,CAAC;AAIpB;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAOxD,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAE9E;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,CAEtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAAG,MAAM,EAAE,CASnF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAM7E;AAuDD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAmCnF;AAoED,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,sBAOrC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,iBAAiB,CAAC;IACjE,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,aAAa,CAAC;IAC7D,wFAAwF;IACxF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IAChD,mIAAmI;IACnI,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAaD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,aAAkB,GAAG,qBAAqB,CAYrF;AAED,uDAAuD;AACvD,eAAO,MAAM,eAAe,EAAE,qBAA+C,CAAC"}
1
+ {"version":3,"file":"codex-chat.d.ts","sourceRoot":"","sources":["../../src/engines/codex-chat.ts"],"names":[],"mappings":"AA2CA,OAAO,EAAS,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAErB,sBAAsB,EAItB,uBAAuB,EAExB,MAAM,YAAY,CAAC;AAIpB;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAOxD,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAE9E;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,CAEtD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AASD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAiCpE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,oBAAyB,GAAG,MAAM,EAAE,CA+B5E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,uBAAuB,EAC7B,YAAY,CAAC,EAAE,cAAc,GAC5B,MAAM,CAAC,UAAU,CASnB;AAyDD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAmCnF;AAoED,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,EAAE,sBAOrC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,iBAAiB,CAAC;IACjE,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,aAAa,CAAC;IAC7D,wFAAwF;IACxF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IAChD,mIAAmI;IACnI,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAaD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,aAAkB,GAAG,qBAAqB,CAYrF;AAED,uDAAuD;AACvD,eAAO,MAAM,eAAe,EAAE,qBAA+C,CAAC"}
@@ -19,9 +19,10 @@
19
19
  * fence and `buildCodexChatArgs()` enforces it: every native codex tool
20
20
  * (shell / apply_patch / web_search / file IO) is disabled via a
21
21
  * `-c tools.<name>=false` override AND only MCP tools may run
22
- * (`experimental_use_only_mcp_tools=true`). The runner writes a codex config
23
- * listing ONLY the acc-mcp server (the codex analog of the `.mcp.json`
24
- * mcp-spawn writes for claude), so no native tool can escape the fence.
22
+ * (`experimental_use_only_mcp_tools=true`). The adapter ignores ambient
23
+ * Codex config and translates the runner-provisioned ACC `.mcp.json` entry
24
+ * into per-process Codex config overrides, so no native or unrelated MCP
25
+ * tool can escape the fence and no secret is placed in argv.
25
26
  * 3. Credential-tier probe — `credentialProbe()` resolves the OpenAI/Codex auth
26
27
  * channel (api-key OR ChatGPT subscription) and the highest tier it
27
28
  * authorises (`full` with a repo-write grant, else `draft-only`;
@@ -38,9 +39,11 @@
38
39
  * `codexChatEngine` is the wired default built from the production deps.
39
40
  */
40
41
  import os from "node:os";
42
+ import fs from "node:fs";
43
+ import path from "node:path";
41
44
  import { execa } from "execa";
42
45
  import { openaiApiKey, describeCodexAuthMode, withOpenAiAuth, } from "../provider-auth.js";
43
- import { ACC_MCP_KEY } from "../mcp-spawn.js";
46
+ import { ACC_MCP_KEY, MCP_CONFIG_FILENAME, } from "../mcp-spawn.js";
44
47
  import { codexEngine, resolveCodexSpawnMode } from "./codex.js";
45
48
  import { classifyCapacityFromLoad, ACC_MCP_DELEGATION_TOKEN_ENV, } from "./claude-code-chat.js";
46
49
  import { streamChatTurn } from "./chat-stream.js";
@@ -73,24 +76,68 @@ export const CODEX_MCP_ONLY_OVERRIDE = "experimental_use_only_mcp_tools=true";
73
76
  export function accMcpToolBusOnly() {
74
77
  return { enforced: true, allowedServers: [ACC_MCP_KEY] };
75
78
  }
79
+ function tomlValue(value) {
80
+ // JSON string/array syntax is valid TOML for the scalar shapes used here.
81
+ // Keeping this serializer tiny also makes secret-bearing values impossible:
82
+ // only the command, non-secret argv and env VARIABLE NAMES reach argv.
83
+ return JSON.stringify(value);
84
+ }
76
85
  /**
77
- * Build the argv for a headless streaming codex chat turn. Fences the tool bus
78
- * to acc-mcp only and disables every native tool, all through codex's generic
79
- * `-c key=value` config-override mechanism so the fence survives a point-release
80
- * flag rename:
81
- * exec --json → headless structured event stream
82
- * --dangerously-bypass-approvals-and-sandbox → non-interactive; the fence, not
83
- * an approval prompt, is the boundary (mirrors the batch lane rationale).
84
- * -c tools.<native>=false → defence-in-depth block-list
85
- * -c experimental_use_only_mcp_tools=true → ONLY MCP (acc-mcp) tools may run
86
- * `--model` is forwarded only when the turn pins a non-blank model.
86
+ * Read the runner-provisioned ACC entry from `<cwd>/.mcp.json`. Claude consumes
87
+ * that file directly; Codex does not, so the Codex adapter converts only the
88
+ * non-secret launch shape into per-process config overrides. A missing or
89
+ * malformed entry fails closed instead of starting an unfenced chat turn.
87
90
  */
91
+ export function loadAccMcpServerForCodex(cwd) {
92
+ const filePath = path.join(cwd, MCP_CONFIG_FILENAME);
93
+ let parsed;
94
+ try {
95
+ parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
96
+ }
97
+ catch (error) {
98
+ throw new Error(`Codex chat requires a valid runner-provisioned ${MCP_CONFIG_FILENAME}: ${error.message}`);
99
+ }
100
+ const root = parsed && typeof parsed === "object" ? parsed : null;
101
+ const servers = root?.mcpServers;
102
+ const entry = servers && typeof servers === "object"
103
+ ? servers[ACC_MCP_KEY]
104
+ : null;
105
+ if (!entry || typeof entry !== "object") {
106
+ throw new Error(`Codex chat requires ${MCP_CONFIG_FILENAME} to contain mcpServers.${ACC_MCP_KEY}`);
107
+ }
108
+ const candidate = entry;
109
+ if (typeof candidate.command !== "string" ||
110
+ candidate.command.trim().length === 0 ||
111
+ !Array.isArray(candidate.args) ||
112
+ !candidate.args.every((arg) => typeof arg === "string") ||
113
+ !candidate.env ||
114
+ typeof candidate.env !== "object" ||
115
+ !Object.values(candidate.env).every((value) => typeof value === "string")) {
116
+ throw new Error(`Codex chat found an invalid mcpServers.${ACC_MCP_KEY} entry`);
117
+ }
118
+ return {
119
+ command: candidate.command,
120
+ args: candidate.args,
121
+ env: candidate.env,
122
+ };
123
+ }
88
124
  export function buildCodexChatArgs(opts = {}) {
89
- const args = ["exec", "--json", "--dangerously-bypass-approvals-and-sandbox"];
125
+ const args = [
126
+ "exec",
127
+ "--json",
128
+ // Ignore global and project Codex configuration for this invocation. Auth
129
+ // remains available, while unapproved MCP servers cannot join ACC's bus.
130
+ "--ignore-user-config",
131
+ "--dangerously-bypass-approvals-and-sandbox",
132
+ ];
90
133
  for (const tool of NATIVE_TOOLS_DISABLED_CODEX) {
91
134
  args.push("-c", `tools.${tool}=false`);
92
135
  }
93
136
  args.push("-c", CODEX_MCP_ONLY_OVERRIDE);
137
+ if (opts.accMcpServer) {
138
+ const envVars = Object.keys(opts.accMcpServer.env).sort();
139
+ args.push("-c", `mcp_servers.${ACC_MCP_KEY}.command=${tomlValue(opts.accMcpServer.command)}`, "-c", `mcp_servers.${ACC_MCP_KEY}.args=${tomlValue(opts.accMcpServer.args)}`, "-c", `mcp_servers.${ACC_MCP_KEY}.env_vars=${tomlValue(envVars)}`, "-c", `mcp_servers.${ACC_MCP_KEY}.required=true`, "-c", `mcp_servers.${ACC_MCP_KEY}.enabled=true`);
140
+ }
94
141
  const trimmed = (opts.modelId ?? "").trim();
95
142
  if (trimmed)
96
143
  args.push("--model", trimmed);
@@ -103,23 +150,28 @@ export function buildCodexChatArgs(opts = {}) {
103
150
  * per-turn delegation token so the acc-mcp bus acts with the narrowly-scoped
104
151
  * companion delegation rather than the runner token. Never mutates `base`.
105
152
  */
106
- export function codexChatEnv(opts) {
153
+ export function codexChatEnv(opts, accMcpServer) {
107
154
  const base = opts.baseEnv ?? process.env;
108
- const next = { ...withOpenAiAuth(resolveCodexSpawnMode(base), base) };
155
+ const next = {
156
+ ...withOpenAiAuth(resolveCodexSpawnMode(base), base),
157
+ ...(accMcpServer?.env ?? {}),
158
+ };
109
159
  const token = (opts.delegationToken ?? "").trim();
110
160
  if (token)
111
161
  next[ACC_MCP_DELEGATION_TOKEN_ENV] = token;
112
162
  return next;
113
163
  }
114
164
  function spawnCodexChat(opts) {
115
- return execa(BINARY, buildCodexChatArgs({ modelId: opts.modelId }), {
165
+ const cwd = opts.cwd ?? process.cwd();
166
+ const accMcpServer = loadAccMcpServerForCodex(cwd);
167
+ return execa(BINARY, buildCodexChatArgs({ modelId: opts.modelId, accMcpServer }), {
116
168
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
117
169
  ...(opts.signal ? { signal: opts.signal } : {}),
118
170
  stdin: "pipe",
119
171
  stdout: "pipe",
120
172
  stderr: "pipe",
121
173
  reject: false,
122
- env: codexChatEnv(opts),
174
+ env: codexChatEnv(opts, accMcpServer),
123
175
  });
124
176
  }
125
177
  function asRecord(v) {
@@ -1 +1 @@
1
- {"version":3,"file":"codex-chat.js","sourceRoot":"","sources":["../../src/engines/codex-chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-chat.js","sourceRoot":"","sources":["../../src/engines/codex-chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { spawn } from "node:child_process";
2
+ import type { RunnerConfig } from "../config.js";
3
+ import type { RunnerSupabaseClient } from "../supabase.js";
4
+ import { type MachineCommandClassification } from "./policy.js";
5
+ export declare const MACHINE_CONSOLE_ENABLED_ENV = "ACC_RUNNER_MACHINE_CONSOLE";
6
+ export declare const DEFAULT_MACHINE_POLL_MS = 1000;
7
+ export declare const DEFAULT_MACHINE_WALL_MS = 120000;
8
+ export interface ClaimedMachineCommand {
9
+ command_id: string;
10
+ session_id: string;
11
+ project_id: string;
12
+ repo: string;
13
+ command_text: string;
14
+ classification: MachineCommandClassification;
15
+ expires_at: string;
16
+ }
17
+ export interface MachineConsoleHandle {
18
+ stop(): Promise<void>;
19
+ refreshClient(client: RunnerSupabaseClient): void;
20
+ pollOnce(): Promise<void>;
21
+ activeCommands(): number;
22
+ }
23
+ export interface MachineConsoleDeps {
24
+ cfg: RunnerConfig;
25
+ runnerId: string;
26
+ supabase: RunnerSupabaseClient;
27
+ pollMs?: number;
28
+ wallClockMs?: number;
29
+ onLog?: (line: string) => void;
30
+ spawnCommand?: typeof spawn;
31
+ }
32
+ export declare function machineConsoleEnabled(env?: NodeJS.ProcessEnv): boolean;
33
+ /** Resolve only runner-owned, already-present repository roots. */
34
+ export declare function resolveMachineRepoPath(cfg: RunnerConfig, repo: string): string;
35
+ /** Closed, non-secret environment inherited by console children. */
36
+ export declare function machineCommandEnv(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
37
+ export declare function startMachineCommandServing(deps: MachineConsoleDeps): Promise<MachineConsoleHandle | null>;
38
+ export { redactMachineOutput, StreamingMachineRedactor } from "./redact.js";
39
+ export { validateMachineCommand } from "./policy.js";
40
+ export type { MachineCommandClassification } from "./policy.js";
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machine-console/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAA0B,KAAK,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAGxF,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAC7C,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAG/C,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,4BAA4B,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,IAAI,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;CAC7B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEnF;AAQD,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc9E;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAKzF;AA+BD,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAgK/G;AAED,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,256 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { spawn } from "node:child_process";
4
+ import { StringDecoder } from "node:string_decoder";
5
+ import { canServeRepo, localRepoPathFor } from "../config.js";
6
+ import { clonePathForRepo } from "../runtime/clone-cache.js";
7
+ import { validateMachineCommand } from "./policy.js";
8
+ import { StreamingMachineRedactor } from "./redact.js";
9
+ export const MACHINE_CONSOLE_ENABLED_ENV = "ACC_RUNNER_MACHINE_CONSOLE";
10
+ export const DEFAULT_MACHINE_POLL_MS = 1_000;
11
+ export const DEFAULT_MACHINE_WALL_MS = 120_000;
12
+ const OUTPUT_CHUNK_BYTES = 48 * 1024;
13
+ export function machineConsoleEnabled(env = process.env) {
14
+ return (env[MACHINE_CONSOLE_ENABLED_ENV] ?? "").trim() !== "0";
15
+ }
16
+ function expandHome(value) {
17
+ if (value === "~")
18
+ return process.env.HOME ?? value;
19
+ if (value.startsWith("~/"))
20
+ return path.join(process.env.HOME ?? "~", value.slice(2));
21
+ return value;
22
+ }
23
+ /** Resolve only runner-owned, already-present repository roots. */
24
+ export function resolveMachineRepoPath(cfg, repo) {
25
+ const slug = repo.trim().toLowerCase();
26
+ if (!canServeRepo(cfg.repos, slug))
27
+ throw new Error("repo is outside this runner's served scope");
28
+ const local = localRepoPathFor(cfg, slug);
29
+ let candidate = local;
30
+ if (!candidate && cfg.targetRepo.trim().toLowerCase() === slug)
31
+ candidate = cfg.repoPath;
32
+ if (!candidate && cfg.cloneOnDemand)
33
+ candidate = clonePathForRepo(slug);
34
+ if (!candidate)
35
+ throw new Error("repo has no runner-local working copy");
36
+ const resolved = fs.realpathSync(expandHome(candidate));
37
+ if (!fs.statSync(resolved).isDirectory() || !fs.existsSync(path.join(resolved, ".git"))) {
38
+ throw new Error("resolved path is not a git working copy");
39
+ }
40
+ return resolved;
41
+ }
42
+ /** Closed, non-secret environment inherited by console children. */
43
+ export function machineCommandEnv(env = process.env) {
44
+ const names = ["PATH", "HOME", "USER", "LOGNAME", "SHELL", "LANG", "LC_ALL", "TERM", "TMPDIR", "NO_COLOR"];
45
+ const out = { ACC_MACHINE_CONSOLE: "1" };
46
+ for (const name of names)
47
+ if (env[name] !== undefined)
48
+ out[name] = env[name];
49
+ return out;
50
+ }
51
+ function splitByBytes(value, maxBytes = OUTPUT_CHUNK_BYTES) {
52
+ const chunks = [];
53
+ let remaining = value;
54
+ while (Buffer.byteLength(remaining) > maxBytes) {
55
+ let end = Math.min(remaining.length, maxBytes);
56
+ while (end > 1 && Buffer.byteLength(remaining.slice(0, end)) > maxBytes)
57
+ end -= 1;
58
+ chunks.push(remaining.slice(0, end));
59
+ remaining = remaining.slice(end);
60
+ }
61
+ if (remaining)
62
+ chunks.push(remaining);
63
+ return chunks;
64
+ }
65
+ function terminateProcess(child) {
66
+ if (child.exitCode !== null || child.killed)
67
+ return;
68
+ try {
69
+ if (process.platform !== "win32" && child.pid)
70
+ process.kill(-child.pid, "SIGTERM");
71
+ else
72
+ child.kill("SIGTERM");
73
+ }
74
+ catch {
75
+ child.kill("SIGTERM");
76
+ }
77
+ const hardKill = setTimeout(() => {
78
+ if (child.exitCode !== null)
79
+ return;
80
+ try {
81
+ if (process.platform !== "win32" && child.pid)
82
+ process.kill(-child.pid, "SIGKILL");
83
+ else
84
+ child.kill("SIGKILL");
85
+ }
86
+ catch {
87
+ child.kill("SIGKILL");
88
+ }
89
+ }, 2_000);
90
+ hardKill.unref?.();
91
+ }
92
+ export async function startMachineCommandServing(deps) {
93
+ if (!machineConsoleEnabled())
94
+ return null;
95
+ let client = deps.supabase;
96
+ let stopped = false;
97
+ let polling = false;
98
+ let active = null;
99
+ const log = deps.onLog ?? (() => { });
100
+ const spawnImpl = deps.spawnCommand ?? spawn;
101
+ const append = async (id, sequence, stream, content) => {
102
+ const { error } = await client.rpc("append_machine_output", {
103
+ p_command_id: id,
104
+ p_sequence_no: sequence,
105
+ p_stream: stream,
106
+ p_content: content,
107
+ p_runner_id: deps.runnerId,
108
+ });
109
+ if (error)
110
+ throw new Error(error.message);
111
+ };
112
+ const complete = async (id, status, exitCode) => {
113
+ const { error } = await client.rpc("complete_machine_command", {
114
+ p_command_id: id,
115
+ p_status: status,
116
+ p_exit_code: exitCode,
117
+ p_runner_id: deps.runnerId,
118
+ });
119
+ if (error)
120
+ throw new Error(error.message);
121
+ };
122
+ const execute = async (command) => {
123
+ const policy = validateMachineCommand(command.command_text, command.classification);
124
+ if (!policy.allowed) {
125
+ await append(command.command_id, 0, "system", `Command refused: ${policy.reason ?? "policy"}\n`);
126
+ await complete(command.command_id, "failed", 126);
127
+ return;
128
+ }
129
+ let cwd;
130
+ try {
131
+ cwd = resolveMachineRepoPath(deps.cfg, command.repo);
132
+ }
133
+ catch (err) {
134
+ await append(command.command_id, 0, "system", `Command refused: ${err.message}\n`);
135
+ await complete(command.command_id, "failed", 126);
136
+ return;
137
+ }
138
+ const shell = process.platform === "win32" ? (process.env.ComSpec ?? "cmd.exe") : "/bin/sh";
139
+ const args = process.platform === "win32"
140
+ ? ["/d", "/s", "/c", command.command_text]
141
+ : ["-lc", command.command_text];
142
+ const child = spawnImpl(shell, args, {
143
+ cwd,
144
+ env: machineCommandEnv(),
145
+ detached: process.platform !== "win32",
146
+ stdio: ["ignore", "pipe", "pipe"],
147
+ });
148
+ active = { id: command.command_id, child };
149
+ let sequence = 0;
150
+ let outputFailure = null;
151
+ let chain = Promise.resolve();
152
+ const stdoutDecoder = new StringDecoder("utf8");
153
+ const stderrDecoder = new StringDecoder("utf8");
154
+ const stdoutRedactor = new StreamingMachineRedactor();
155
+ const stderrRedactor = new StreamingMachineRedactor();
156
+ const queueOutput = (stream, value) => {
157
+ if (!value || outputFailure)
158
+ return;
159
+ chain = chain.then(async () => {
160
+ for (const chunk of splitByBytes(value))
161
+ await append(command.command_id, sequence++, stream, chunk);
162
+ }).catch((err) => {
163
+ outputFailure = err;
164
+ terminateProcess(child);
165
+ });
166
+ };
167
+ child.stdout?.on("data", (data) => queueOutput("stdout", stdoutRedactor.push(stdoutDecoder.write(data))));
168
+ child.stderr?.on("data", (data) => queueOutput("stderr", stderrRedactor.push(stderrDecoder.write(data))));
169
+ let cancelRequested = false;
170
+ const cancelPoll = setInterval(() => {
171
+ void Promise.resolve(client.rpc("machine_command_status_for_runner", {
172
+ p_command_id: command.command_id,
173
+ p_runner_id: deps.runnerId,
174
+ })).then(({ data, error }) => {
175
+ if (!error && data === "cancel_requested") {
176
+ cancelRequested = true;
177
+ terminateProcess(child);
178
+ }
179
+ }).catch(() => { });
180
+ }, 500);
181
+ cancelPoll.unref?.();
182
+ const remainingLease = Math.max(1_000, Date.parse(command.expires_at) - Date.now());
183
+ const wallMs = Math.min(deps.wallClockMs ?? DEFAULT_MACHINE_WALL_MS, remainingLease);
184
+ let timedOut = false;
185
+ const wallTimer = setTimeout(() => { timedOut = true; terminateProcess(child); }, wallMs);
186
+ wallTimer.unref?.();
187
+ const exit = await new Promise((resolve) => {
188
+ child.once("error", () => resolve({ code: 127, signal: null }));
189
+ child.once("exit", (code, signal) => resolve({ code, signal }));
190
+ });
191
+ clearInterval(cancelPoll);
192
+ clearTimeout(wallTimer);
193
+ queueOutput("stdout", stdoutRedactor.push(stdoutDecoder.end()) + stdoutRedactor.finish());
194
+ queueOutput("stderr", stderrRedactor.push(stderrDecoder.end()) + stderrRedactor.finish());
195
+ if (timedOut)
196
+ queueOutput("system", `Command stopped after ${wallMs}ms wall-clock limit.\n`);
197
+ await chain;
198
+ active = null;
199
+ if (outputFailure) {
200
+ await complete(command.command_id, "failed", exit.code ?? 1).catch(() => { });
201
+ throw outputFailure;
202
+ }
203
+ if (cancelRequested)
204
+ await complete(command.command_id, "cancelled", exit.code);
205
+ else if (timedOut || Date.now() >= Date.parse(command.expires_at)) {
206
+ await complete(command.command_id, "expired", exit.code);
207
+ }
208
+ else {
209
+ await complete(command.command_id, exit.code === 0 ? "succeeded" : "failed", exit.code);
210
+ }
211
+ };
212
+ const pollOnce = async () => {
213
+ if (stopped || polling || active)
214
+ return;
215
+ polling = true;
216
+ try {
217
+ const { data, error } = await client.rpc("claim_machine_command", { p_runner_id: deps.runnerId });
218
+ if (error) {
219
+ // Migration rollout window and transient network errors are non-fatal.
220
+ if (!/could not find|does not exist|schema cache/i.test(error.message)) {
221
+ log(`[acc-runner] machine console claim failed: ${error.message}`);
222
+ }
223
+ return;
224
+ }
225
+ const command = Array.isArray(data) ? data[0] : undefined;
226
+ if (command) {
227
+ log(`[acc-runner] machine console claimed ${command.command_id} for ${command.repo}`);
228
+ await execute(command);
229
+ }
230
+ }
231
+ catch (err) {
232
+ log(`[acc-runner] machine console command failed: ${err.message}`);
233
+ }
234
+ finally {
235
+ polling = false;
236
+ }
237
+ };
238
+ const timer = setInterval(() => void pollOnce(), deps.pollMs ?? DEFAULT_MACHINE_POLL_MS);
239
+ timer.unref?.();
240
+ void pollOnce();
241
+ log("[acc-runner] machine console serving enabled");
242
+ return {
243
+ stop: async () => {
244
+ stopped = true;
245
+ clearInterval(timer);
246
+ if (active)
247
+ terminateProcess(active.child);
248
+ },
249
+ refreshClient: (next) => { client = next; },
250
+ pollOnce,
251
+ activeCommands: () => active ? 1 : 0,
252
+ };
253
+ }
254
+ export { redactMachineOutput, StreamingMachineRedactor } from "./redact.js";
255
+ export { validateMachineCommand } from "./policy.js";
256
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machine-console/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * MA-1 runner-side command policy.
3
+ *
4
+ * The database classifies a request before dispatch. This is the second gate,
5
+ * beside the process that would execute it: a stale or compromised caller does
6
+ * not get a general-purpose shell merely by labelling a command "read".
7
+ * Interactive shell syntax belongs to the later, approval-backed PTY phase.
8
+ */
9
+ export type MachineCommandClassification = "read" | "write" | "destructive";
10
+ export interface MachineCommandPolicyResult {
11
+ allowed: boolean;
12
+ reason?: string;
13
+ }
14
+ /** Fail-closed validation for a command claimed from the control plane. */
15
+ export declare function validateMachineCommand(command: string, classification: MachineCommandClassification): MachineCommandPolicyResult;
16
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/machine-console/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAE5E,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6CD,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,4BAA4B,GAC3C,0BAA0B,CAmC5B"}