@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.
- package/dist/build-info.generated.d.ts +1 -1
- package/dist/build-info.generated.js +2 -2
- package/dist/engines/codex-chat.d.ts +14 -3
- package/dist/engines/codex-chat.d.ts.map +1 -1
- package/dist/engines/codex-chat.js +71 -19
- package/dist/engines/codex-chat.js.map +1 -1
- package/dist/machine-console/index.d.ts +41 -0
- package/dist/machine-console/index.d.ts.map +1 -0
- package/dist/machine-console/index.js +256 -0
- package/dist/machine-console/index.js.map +1 -0
- package/dist/machine-console/policy.d.ts +16 -0
- package/dist/machine-console/policy.d.ts.map +1 -0
- package/dist/machine-console/policy.js +83 -0
- package/dist/machine-console/policy.js.map +1 -0
- package/dist/machine-console/redact.d.ts +12 -0
- package/dist/machine-console/redact.d.ts.map +1 -0
- package/dist/machine-console/redact.js +48 -0
- package/dist/machine-console/redact.js.map +1 -0
- package/dist/mcp-spawn.d.ts +2 -1
- package/dist/mcp-spawn.d.ts.map +1 -1
- package/dist/mcp-spawn.js +2 -2
- package/dist/mcp-spawn.js.map +1 -1
- package/dist/watch.d.ts +3 -0
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +25 -0
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const BUILD_COMMIT_SHA = "
|
|
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 = "
|
|
3
|
-
export const BUILD_DIST_SHA256 = "
|
|
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
|
|
37
|
+
export interface CodexChatArgsOptions {
|
|
36
38
|
modelId?: string | null;
|
|
37
|
-
|
|
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":"
|
|
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
|
|
23
|
-
*
|
|
24
|
-
*
|
|
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
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
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 = [
|
|
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 = {
|
|
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
|
-
|
|
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"}
|