@agentqueue/worker 0.0.0 → 0.3.1-ci.g02c90ca5cd192c5a75a7d1d19329683cefb22d6e
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/README.md +159 -0
- package/THIRD_PARTY_NOTICES.md +27 -0
- package/dist/bin/aq-askpass.d.ts +2 -0
- package/dist/bin/aq-askpass.js +5 -0
- package/dist/bin/aq-askpass.js.map +1 -0
- package/dist/bin/aq.d.ts +2 -0
- package/dist/bin/aq.js +9 -0
- package/dist/bin/aq.js.map +1 -0
- package/dist/release.json +16 -0
- package/dist/src/app-server/checkpoint-codec.d.ts +4 -0
- package/dist/src/app-server/checkpoint-codec.js +31 -0
- package/dist/src/app-server/checkpoint-codec.js.map +1 -0
- package/dist/src/app-server/codex-token-snapshot.d.ts +11 -0
- package/dist/src/app-server/codex-token-snapshot.js +45 -0
- package/dist/src/app-server/codex-token-snapshot.js.map +1 -0
- package/dist/src/app-server/index.d.ts +70 -0
- package/dist/src/app-server/index.js +319 -0
- package/dist/src/app-server/index.js.map +1 -0
- package/dist/src/app-server/native-checkpoint.d.ts +12 -0
- package/dist/src/app-server/native-checkpoint.js +179 -0
- package/dist/src/app-server/native-checkpoint.js.map +1 -0
- package/dist/src/app-server/process-group.d.ts +6 -0
- package/dist/src/app-server/process-group.js +122 -0
- package/dist/src/app-server/process-group.js.map +1 -0
- package/dist/src/app-server/transports.d.ts +68 -0
- package/dist/src/app-server/transports.js +228 -0
- package/dist/src/app-server/transports.js.map +1 -0
- package/dist/src/app-server/worker-checkpoint.d.ts +15 -0
- package/dist/src/app-server/worker-checkpoint.js +76 -0
- package/dist/src/app-server/worker-checkpoint.js.map +1 -0
- package/dist/src/broker.d.ts +4 -0
- package/dist/src/broker.js +104 -0
- package/dist/src/broker.js.map +1 -0
- package/dist/src/cli.d.ts +14 -0
- package/dist/src/cli.js +212 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/client.d.ts +19 -0
- package/dist/src/client.js +116 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/codex-owner-auth.d.ts +14 -0
- package/dist/src/codex-owner-auth.js +155 -0
- package/dist/src/codex-owner-auth.js.map +1 -0
- package/dist/src/codex-runtime.d.ts +32 -0
- package/dist/src/codex-runtime.js +383 -0
- package/dist/src/codex-runtime.js.map +1 -0
- package/dist/src/completion-outbox.d.ts +38 -0
- package/dist/src/completion-outbox.js +90 -0
- package/dist/src/completion-outbox.js.map +1 -0
- package/dist/src/config.d.ts +16 -0
- package/dist/src/config.js +57 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/diagnostics.d.ts +3 -0
- package/dist/src/diagnostics.js +40 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/isolation.d.ts +34 -0
- package/dist/src/isolation.js +690 -0
- package/dist/src/isolation.js.map +1 -0
- package/dist/src/planning-dev/analysis-runtime.d.ts +6 -0
- package/dist/src/planning-dev/analysis-runtime.js +65 -0
- package/dist/src/planning-dev/analysis-runtime.js.map +1 -0
- package/dist/src/planning-dev/index.d.ts +35 -0
- package/dist/src/planning-dev/index.js +244 -0
- package/dist/src/planning-dev/index.js.map +1 -0
- package/dist/src/planning-dev/native-binary.d.ts +1 -0
- package/dist/src/planning-dev/native-binary.js +67 -0
- package/dist/src/planning-dev/native-binary.js.map +1 -0
- package/dist/src/planning-dev/protocol.d.ts +30 -0
- package/dist/src/planning-dev/protocol.js +43 -0
- package/dist/src/planning-dev/protocol.js.map +1 -0
- package/dist/src/planning-dev/runtime.d.ts +11 -0
- package/dist/src/planning-dev/runtime.js +437 -0
- package/dist/src/planning-dev/runtime.js.map +1 -0
- package/dist/src/process-lock.d.ts +4 -0
- package/dist/src/process-lock.js +44 -0
- package/dist/src/process-lock.js.map +1 -0
- package/dist/src/provider-status.d.ts +21 -0
- package/dist/src/provider-status.js +73 -0
- package/dist/src/provider-status.js.map +1 -0
- package/dist/src/readiness.d.ts +15 -0
- package/dist/src/readiness.js +145 -0
- package/dist/src/readiness.js.map +1 -0
- package/dist/src/register.d.ts +5 -0
- package/dist/src/register.js +178 -0
- package/dist/src/register.js.map +1 -0
- package/dist/src/runtime.d.ts +100 -0
- package/dist/src/runtime.js +2288 -0
- package/dist/src/runtime.js.map +1 -0
- package/dist/src/service.d.ts +11 -0
- package/dist/src/service.js +119 -0
- package/dist/src/service.js.map +1 -0
- package/dist/src/supervisor.d.ts +9 -0
- package/dist/src/supervisor.js +157 -0
- package/dist/src/supervisor.js.map +1 -0
- package/dist/src/turn-checkpoint.d.ts +58 -0
- package/dist/src/turn-checkpoint.js +314 -0
- package/dist/src/turn-checkpoint.js.map +1 -0
- package/dist/src/types.d.ts +168 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/usage-limit.d.ts +13 -0
- package/dist/src/usage-limit.js +75 -0
- package/dist/src/usage-limit.js.map +1 -0
- package/dist/src/version.d.ts +6 -0
- package/dist/src/version.js +49 -0
- package/dist/src/version.js.map +1 -0
- package/dist/src/worker-types.d.ts +12 -0
- package/dist/src/worker-types.js +2 -0
- package/dist/src/worker-types.js.map +1 -0
- package/package.json +56 -4
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { claudeAuthPath, loadClaudeAuth } from "./config.js";
|
|
6
|
+
import { WORKER_CODEX_FEATURES, CODEX_RESUMES_OLDER_FEATURE, WORKER_CODEX_VERSION, codexVersionFeature, codexWorkspaceRootFeature, } from "./app-server/worker-checkpoint.js";
|
|
7
|
+
import { workspacesPath } from "./config.js";
|
|
8
|
+
import { WORKER_COMMIT, WORKER_PROTOCOL_VERSION } from "./version.js";
|
|
9
|
+
const RUNTIMES = ["pi", "opencode", "codex", "claude"];
|
|
10
|
+
export const CODEX_FILE_AUTH_CONFIG = 'cli_auth_credentials_store="file"';
|
|
11
|
+
export const WORKER_CLAUDE_MINIMUM_VERSION = "2.1.303";
|
|
12
|
+
export function validModelPattern(value) {
|
|
13
|
+
return /^(?:\*|[^*]+\*?)$/.test(value.trim());
|
|
14
|
+
}
|
|
15
|
+
export function codexFileAuthAvailable(home = homedir(), environment = process.env) {
|
|
16
|
+
return Boolean(environment.OPENAI_API_KEY) || existsSync(join(home, ".codex", "auth.json"));
|
|
17
|
+
}
|
|
18
|
+
export function claudeWorkerAuthAvailable(path = claudeAuthPath()) {
|
|
19
|
+
return Boolean(loadClaudeAuth({}, path));
|
|
20
|
+
}
|
|
21
|
+
export function claudeVersionSupported(output) {
|
|
22
|
+
const installed = /^(\d+)\.(\d+)\.(\d+)(?:\s|$)/
|
|
23
|
+
.exec(output?.trim() ?? "")
|
|
24
|
+
?.slice(1)
|
|
25
|
+
.map(Number);
|
|
26
|
+
if (!installed)
|
|
27
|
+
return false;
|
|
28
|
+
const minimum = WORKER_CLAUDE_MINIMUM_VERSION.split(".").map(Number);
|
|
29
|
+
for (const [index, part] of installed.entries()) {
|
|
30
|
+
const floor = minimum[index] ?? 0;
|
|
31
|
+
if (part !== floor)
|
|
32
|
+
return part > floor;
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
export function harnessVersion(command) {
|
|
37
|
+
const version = spawnSync(command, ["--version"], { encoding: "utf8", timeout: 5000 });
|
|
38
|
+
return version.status === 0 ? version.stdout : null;
|
|
39
|
+
}
|
|
40
|
+
function authenticated(command) {
|
|
41
|
+
const version = harnessVersion(command);
|
|
42
|
+
if (version === null)
|
|
43
|
+
return false;
|
|
44
|
+
if (command === "codex") {
|
|
45
|
+
if (version.trim() !== `codex-cli ${WORKER_CODEX_VERSION}`)
|
|
46
|
+
return false;
|
|
47
|
+
if (process.env.OPENAI_API_KEY)
|
|
48
|
+
return true;
|
|
49
|
+
return (codexFileAuthAvailable() &&
|
|
50
|
+
spawnSync(command, ["--config", CODEX_FILE_AUTH_CONFIG, "login", "status"], { stdio: "ignore" }).status === 0);
|
|
51
|
+
}
|
|
52
|
+
if (command === "claude") {
|
|
53
|
+
return claudeVersionSupported(version) && claudeWorkerAuthAvailable();
|
|
54
|
+
}
|
|
55
|
+
if (command === "opencode") {
|
|
56
|
+
return existsSync(join(homedir(), ".local", "share", "opencode", "auth.json"));
|
|
57
|
+
}
|
|
58
|
+
return existsSync(join(homedir(), ".pi", "agent", "auth.json"));
|
|
59
|
+
}
|
|
60
|
+
function models(harness, persisted) {
|
|
61
|
+
const saved = persisted?.[harness];
|
|
62
|
+
if (saved?.length)
|
|
63
|
+
return [...new Set(saved.map((value) => value.trim()).filter(validModelPattern))].sort();
|
|
64
|
+
const configured = process.env[`AQ_WORKER_${harness.toUpperCase()}_MODELS`];
|
|
65
|
+
if (configured) {
|
|
66
|
+
return [
|
|
67
|
+
...new Set(configured
|
|
68
|
+
.split(",")
|
|
69
|
+
.map((value) => value.trim())
|
|
70
|
+
.filter(validModelPattern)),
|
|
71
|
+
].sort();
|
|
72
|
+
}
|
|
73
|
+
if (harness === "codex")
|
|
74
|
+
return ["codex-*", "gpt-*", "o1*", "o3*", "o4*", "openai/*"];
|
|
75
|
+
if (harness === "claude")
|
|
76
|
+
return ["anthropic/*", "claude-*"];
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
export function installedHarnesses() {
|
|
80
|
+
return RUNTIMES.filter(authenticated);
|
|
81
|
+
}
|
|
82
|
+
export function readiness(version, persistedModels) {
|
|
83
|
+
const harnesses = installedHarnesses();
|
|
84
|
+
const features = [
|
|
85
|
+
"brokerIpc",
|
|
86
|
+
"brokered_tools",
|
|
87
|
+
"isolated",
|
|
88
|
+
"local_model_auth",
|
|
89
|
+
"setup",
|
|
90
|
+
"skills",
|
|
91
|
+
"structuredEvents",
|
|
92
|
+
"thinkingLevel",
|
|
93
|
+
"transcript",
|
|
94
|
+
"workingDirectory",
|
|
95
|
+
"workspaceCheckpoint",
|
|
96
|
+
"assignmentV2",
|
|
97
|
+
"agentMode",
|
|
98
|
+
];
|
|
99
|
+
return {
|
|
100
|
+
harnesses,
|
|
101
|
+
modelsByHarness: Object.fromEntries(harnesses.map((harness) => [harness, models(harness, persistedModels)])),
|
|
102
|
+
featuresByHarness: Object.fromEntries(harnesses.map((harness) => [
|
|
103
|
+
harness,
|
|
104
|
+
[
|
|
105
|
+
...features,
|
|
106
|
+
...(harness === "codex"
|
|
107
|
+
? [
|
|
108
|
+
...WORKER_CODEX_FEATURES,
|
|
109
|
+
"fastMode",
|
|
110
|
+
codexWorkspaceRootFeature(workspacesPath()),
|
|
111
|
+
codexVersionFeature(WORKER_CODEX_VERSION),
|
|
112
|
+
CODEX_RESUMES_OLDER_FEATURE,
|
|
113
|
+
]
|
|
114
|
+
: []),
|
|
115
|
+
],
|
|
116
|
+
])),
|
|
117
|
+
trustCapabilities: ["brokered_tools", "local_model_auth"],
|
|
118
|
+
platform: process.platform === "darwin" ? "darwin" : "linux",
|
|
119
|
+
version,
|
|
120
|
+
buildCommit: WORKER_COMMIT,
|
|
121
|
+
protocolVersion: WORKER_PROTOCOL_VERSION,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export function authStatus() {
|
|
125
|
+
const installed = new Set(installedHarnesses());
|
|
126
|
+
return [
|
|
127
|
+
{
|
|
128
|
+
harness: "codex",
|
|
129
|
+
ready: installed.has("codex"),
|
|
130
|
+
guidance: `Install official @openai/codex@${WORKER_CODEX_VERSION}, then run aq auth codex. This worker release requires that qualified App Server version.`,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
harness: "claude",
|
|
134
|
+
ready: installed.has("claude"),
|
|
135
|
+
guidance: `Install Claude Code ${WORKER_CLAUDE_MINIMUM_VERSION} or newer (run \`claude update\` to upgrade; older builds trust a compromised certificate authority), then run \`aq auth claude --setup-token\` so Agent Queue can create and persist only its isolated Claude credential.`,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
harness: "opencode",
|
|
139
|
+
ready: installed.has("opencode"),
|
|
140
|
+
guidance: "Install OpenCode, then run `opencode auth login` on this machine.",
|
|
141
|
+
},
|
|
142
|
+
{ harness: "pi", ready: installed.has("pi"), guidance: "Configure Pi model authentication on this machine." },
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { authStatus } from "./readiness.ts";
|
|
2
|
+
export declare function registrationAuthMessages(auth: ReturnType<typeof authStatus>): string[];
|
|
3
|
+
export declare function workerServerUrl(value: string): string;
|
|
4
|
+
export declare function workerTenantServerUrl(server: string, value?: string): string;
|
|
5
|
+
export declare function register(serverInput?: string, tenantInput?: string, maxConcurrentAssignments?: number, development?: boolean, configRoot?: string, signal?: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { generateKeyPairSync } from "node:crypto";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { createInterface } from "node:readline/promises";
|
|
4
|
+
import { stdin, stdout } from "node:process";
|
|
5
|
+
import { saveConfig } from "./config.js";
|
|
6
|
+
import { installService } from "./service.js";
|
|
7
|
+
import { authStatus, validModelPattern } from "./readiness.js";
|
|
8
|
+
import { isolationStatus } from "./isolation.js";
|
|
9
|
+
async function prompt(question) {
|
|
10
|
+
const terminal = createInterface({ input: stdin, output: stdout });
|
|
11
|
+
try {
|
|
12
|
+
return (await terminal.question(question)).trim();
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
terminal.close();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function open(url) {
|
|
19
|
+
const command = process.platform === "darwin" ? "open" : "xdg-open";
|
|
20
|
+
const opened = spawnSync(command, [url], { stdio: "ignore" });
|
|
21
|
+
if (opened.status !== 0)
|
|
22
|
+
process.stdout.write(`Open this URL to finish registration:\n${url}\n`);
|
|
23
|
+
}
|
|
24
|
+
export function registrationAuthMessages(auth) {
|
|
25
|
+
const ready = auth.filter((runtime) => runtime.ready);
|
|
26
|
+
if (!ready.length)
|
|
27
|
+
return auth.map((runtime) => runtime.guidance);
|
|
28
|
+
const unavailable = auth.filter((runtime) => !runtime.ready);
|
|
29
|
+
return [
|
|
30
|
+
`Ready runtimes: ${ready.map((runtime) => runtime.harness).join(", ")}`,
|
|
31
|
+
...(unavailable.length
|
|
32
|
+
? [`Optional runtimes unavailable: ${unavailable.map((runtime) => runtime.harness).join(", ")}`]
|
|
33
|
+
: []),
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
export function workerServerUrl(value) {
|
|
37
|
+
const server = value.replace(/\/$/, "");
|
|
38
|
+
let serverUrl;
|
|
39
|
+
try {
|
|
40
|
+
serverUrl = new URL(server);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new Error("Agent Queue URL is invalid");
|
|
44
|
+
}
|
|
45
|
+
const loopback = ["localhost", "127.0.0.1", "::1", "[::1]"].includes(serverUrl.hostname);
|
|
46
|
+
if (serverUrl.protocol !== "https:" && !(serverUrl.protocol === "http:" && loopback)) {
|
|
47
|
+
throw new Error("Agent Queue URL must use HTTPS");
|
|
48
|
+
}
|
|
49
|
+
return server;
|
|
50
|
+
}
|
|
51
|
+
export function workerTenantServerUrl(server, value) {
|
|
52
|
+
if (value === undefined)
|
|
53
|
+
return workerServerUrl(server);
|
|
54
|
+
const tenantId = value.trim();
|
|
55
|
+
if (!/^org_[A-Za-z0-9]+$/.test(tenantId))
|
|
56
|
+
throw new Error("Clerk organization ID is invalid");
|
|
57
|
+
return `${workerServerUrl(server).replace(/\/+$/, "")}/t/${tenantId}`;
|
|
58
|
+
}
|
|
59
|
+
function selectedMode(value, defaultMode) {
|
|
60
|
+
const mode = value.trim().toLowerCase();
|
|
61
|
+
if (!mode)
|
|
62
|
+
return { mode: defaultMode };
|
|
63
|
+
if (mode === "all" || mode === "a")
|
|
64
|
+
return { mode: "all" };
|
|
65
|
+
if (mode === "select" || mode === "selected" || mode === "s")
|
|
66
|
+
return { mode: "selected", ids: [] };
|
|
67
|
+
return { mode: "none" };
|
|
68
|
+
}
|
|
69
|
+
export async function register(serverInput, tenantInput, maxConcurrentAssignments = 1, development = false, configRoot, signal) {
|
|
70
|
+
signal?.throwIfAborted();
|
|
71
|
+
const isolation = isolationStatus();
|
|
72
|
+
if (!isolation.ready)
|
|
73
|
+
throw new Error(isolation.guidance);
|
|
74
|
+
const auth = development ? [] : authStatus();
|
|
75
|
+
for (const message of registrationAuthMessages(auth))
|
|
76
|
+
process.stdout.write(`${message}\n`);
|
|
77
|
+
if (!development && !auth.some((candidate) => candidate.ready)) {
|
|
78
|
+
throw new Error("install and authenticate at least one supported runtime before registering");
|
|
79
|
+
}
|
|
80
|
+
const runtimeModels = {};
|
|
81
|
+
for (const runtime of (development ? [] : auth).filter((candidate) => candidate.ready && (candidate.harness === "pi" || candidate.harness === "opencode"))) {
|
|
82
|
+
const configured = process.env[`AQ_WORKER_${runtime.harness.toUpperCase()}_MODELS`]?.trim();
|
|
83
|
+
const value = configured || (await prompt(`${runtime.harness} model IDs or patterns, comma-separated: `));
|
|
84
|
+
const selected = [
|
|
85
|
+
...new Set(value
|
|
86
|
+
.split(",")
|
|
87
|
+
.map((entry) => entry.trim())
|
|
88
|
+
.filter(Boolean)),
|
|
89
|
+
];
|
|
90
|
+
if (!selected.length)
|
|
91
|
+
throw new Error(`${runtime.harness} model eligibility is required`);
|
|
92
|
+
if (selected.some((model) => !validModelPattern(model))) {
|
|
93
|
+
throw new Error(`${runtime.harness} model eligibility accepts exact IDs, *, or one trailing wildcard`);
|
|
94
|
+
}
|
|
95
|
+
runtimeModels[runtime.harness] = selected;
|
|
96
|
+
}
|
|
97
|
+
const server = workerTenantServerUrl(serverInput || (await prompt("Agent Queue URL: ")), tenantInput);
|
|
98
|
+
const name = development
|
|
99
|
+
? `Ontra development (${process.env.HOSTNAME || "developer"})`
|
|
100
|
+
: await prompt(`Machine name [${process.env.HOSTNAME || "self-hosted-worker"}]: `);
|
|
101
|
+
const personalAnswer = (development
|
|
102
|
+
? "no"
|
|
103
|
+
: await prompt("Accept all users' personal chats and personal automations? [yes/no, default yes]: "))
|
|
104
|
+
.trim()
|
|
105
|
+
.toLowerCase();
|
|
106
|
+
const personal = !personalAnswer.startsWith("n");
|
|
107
|
+
const projects = selectedMode(development
|
|
108
|
+
? "none"
|
|
109
|
+
: await prompt("Accept Project chats from none, all accessible, or selected Projects? [all/select/none]: "), "all");
|
|
110
|
+
const workflows = selectedMode(development
|
|
111
|
+
? "none"
|
|
112
|
+
: await prompt("Accept provider workflows from none, all accessible, or selected workflows? [all/select/none]: "), "all");
|
|
113
|
+
const shared = selectedMode(development
|
|
114
|
+
? "none"
|
|
115
|
+
: await prompt("Accept shared chats from none, all accessible, or selected contexts? [none/all/select]: "), "none");
|
|
116
|
+
const organization = (development ? "no" : await prompt("Accept organization automation? [yes/no]: "))
|
|
117
|
+
.toLowerCase()
|
|
118
|
+
.startsWith("y");
|
|
119
|
+
const { privateKey, publicKey } = generateKeyPairSync("ed25519");
|
|
120
|
+
const started = await fetch(`${server}/v1/${development ? "development-worker-enrollments" : "self-hosted-worker-enrollments"}`, {
|
|
121
|
+
method: "POST",
|
|
122
|
+
signal: signal ?? null,
|
|
123
|
+
headers: { "content-type": "application/json" },
|
|
124
|
+
body: JSON.stringify({
|
|
125
|
+
name: name || process.env.HOSTNAME || "self-hosted-worker",
|
|
126
|
+
publicKey: publicKey.export({ type: "spki", format: "pem" }).toString(),
|
|
127
|
+
eligibility: {
|
|
128
|
+
personal: { mode: personal ? "all_users" : "none" },
|
|
129
|
+
projects,
|
|
130
|
+
workflows,
|
|
131
|
+
shared,
|
|
132
|
+
organization: { mode: organization ? "all" : "none" },
|
|
133
|
+
},
|
|
134
|
+
maxConcurrentAssignments,
|
|
135
|
+
}),
|
|
136
|
+
});
|
|
137
|
+
if (!started.ok)
|
|
138
|
+
throw new Error(`registration failed with HTTP ${started.status}`);
|
|
139
|
+
const enrollment = (await started.json());
|
|
140
|
+
process.stdout.write(`Machine fingerprint: ${enrollment.fingerprint}\n`);
|
|
141
|
+
open(enrollment.verificationUrl);
|
|
142
|
+
let approved = false;
|
|
143
|
+
while (Date.now() < enrollment.expiresAt) {
|
|
144
|
+
signal?.throwIfAborted();
|
|
145
|
+
const response = await fetch(`${server}/v1/self-hosted-worker-enrollments/${encodeURIComponent(enrollment.enrollmentId)}`, { signal: signal ?? null });
|
|
146
|
+
if (response.ok) {
|
|
147
|
+
const value = (await response.json());
|
|
148
|
+
approved = value.enrollment?.status === "approved";
|
|
149
|
+
if (approved)
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
await new Promise((resolve) => setTimeout(resolve, 2_000));
|
|
153
|
+
}
|
|
154
|
+
if (!approved)
|
|
155
|
+
throw new Error("registration approval expired");
|
|
156
|
+
const exchanged = await fetch(`${server}/v1/self-hosted-worker-enrollments/${encodeURIComponent(enrollment.enrollmentId)}/exchange`, {
|
|
157
|
+
method: "POST",
|
|
158
|
+
signal: AbortSignal.any([AbortSignal.timeout(30000), ...(signal ? [signal] : [])]),
|
|
159
|
+
headers: { "content-type": "application/json" },
|
|
160
|
+
body: JSON.stringify({ enrollmentSecret: enrollment.enrollmentSecret }),
|
|
161
|
+
});
|
|
162
|
+
if (!exchanged.ok)
|
|
163
|
+
throw new Error(`registration exchange failed with HTTP ${exchanged.status}`);
|
|
164
|
+
const { worker } = (await exchanged.json());
|
|
165
|
+
await saveConfig({
|
|
166
|
+
server,
|
|
167
|
+
worker,
|
|
168
|
+
privateKey: privateKey.export({ type: "pkcs8", format: "pem" }).toString(),
|
|
169
|
+
installedAt: Date.now(),
|
|
170
|
+
runtimeModels,
|
|
171
|
+
}, configRoot);
|
|
172
|
+
if (!development)
|
|
173
|
+
await installService();
|
|
174
|
+
process.stdout.write(development
|
|
175
|
+
? `Registered ${worker.name} for isolated development.\n`
|
|
176
|
+
: `Registered ${worker.name} and started the Agent Queue worker service.\n`);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,KAAK,UAAU,MAAM,CAAC,QAAgB;IACpC,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,GAAG,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAmC;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO;QACL,mBAAmB,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACvE,GAAG,CAAC,WAAW,CAAC,MAAM;YACpB,CAAC,CAAC,CAAC,kCAAkC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChG,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzF,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,KAAc;IAClE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC9F,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,QAAQ,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CACnB,KAAa,EACb,WAA2B;IAE3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACxC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACnG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,WAAoB,EACpB,WAAoB,EACpB,wBAAwB,GAAG,CAAC,EAC5B,WAAW,GAAG,KAAK,EACnB,UAAmB,EACnB,MAAoB;IAEpB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7C,KAAK,MAAM,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IAC3F,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,aAAa,GAA6B,EAAE,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CACpD,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,CACnG,EAAE,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,MAAM,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,2CAA2C,CAAC,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG;YACf,GAAG,IAAI,GAAG,CACR,KAAK;iBACF,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;iBAC5B,MAAM,CAAC,OAAO,CAAC,CACnB;SACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,gCAAgC,CAAC,CAAC;QAC1F,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,mEAAmE,CAAC,CAAC;QACzG,CAAC;QACD,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,IAAI,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACtG,MAAM,IAAI,GAAG,WAAW;QACtB,CAAC,CAAC,sBAAsB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,GAAG;QAC9D,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,oBAAoB,KAAK,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,CACrB,WAAW;QACT,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,MAAM,CAAC,oFAAoF,CAAC,CACvG;SACE,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,YAAY,CAC3B,WAAW;QACT,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,MAAM,CAAC,2FAA2F,CAAC,EAC7G,KAAK,CACN,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAC5B,WAAW;QACT,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,MAAM,CAAC,iGAAiG,CAAC,EACnH,KAAK,CACN,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CACzB,WAAW;QACT,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,MAAM,CAAC,0FAA0F,CAAC,EAC5G,MAAM,CACP,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,4CAA4C,CAAC,CAAC;SACnG,WAAW,EAAE;SACb,UAAU,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,KAAK,CACzB,GAAG,MAAM,OAAO,WAAW,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,gCAAgC,EAAE,EACnG;QACE,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM,IAAI,IAAI;QACtB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,oBAAoB;YAC1D,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;YACvE,WAAW,EAAE;gBACX,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE;gBACnD,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;aACtD;YACD,wBAAwB;SACzB,CAAC;KACH,CACF,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAMvC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,MAAM,sCAAsC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAC5F,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAC3B,CAAC;QACF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyC,CAAC;YAC9E,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,KAAK,UAAU,CAAC;YACnD,IAAI,QAAQ;gBAAE,MAAM;QACtB,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,KAAK,CAC3B,GAAG,MAAM,sCAAsC,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,EACrG;QACE,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC;KACxE,CACF,CAAC;IACF,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAEzC,CAAC;IACF,MAAM,UAAU,CACd;QACE,MAAM;QACN,MAAM;QACN,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC1E,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;QACvB,aAAa;KACd,EACD,UAAU,CACX,CAAC;IACF,IAAI,CAAC,WAAW;QAAE,MAAM,cAAc,EAAE,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW;QACT,CAAC,CAAC,cAAc,MAAM,CAAC,IAAI,8BAA8B;QACzD,CAAC,CAAC,cAAc,MAAM,CAAC,IAAI,gDAAgD,CAC9E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { AgentQueueClient } from "./client.ts";
|
|
2
|
+
import type { Assignment, CheckpointUpload, WorkerConfig, WorkerOutgoingAttachment } from "./types.ts";
|
|
3
|
+
import { type CompletionEnvelope } from "./completion-outbox.ts";
|
|
4
|
+
export declare function workspaceCheckpointingSupported(platform?: NodeJS.Platform): boolean;
|
|
5
|
+
export declare class StreamRedactor {
|
|
6
|
+
private pending;
|
|
7
|
+
private readonly decoder;
|
|
8
|
+
private readonly assignment;
|
|
9
|
+
private readonly environmentValues;
|
|
10
|
+
private readonly observe;
|
|
11
|
+
private readonly observedValues;
|
|
12
|
+
constructor(assignment: Assignment, localSecrets?: string[], observe?: () => readonly string[]);
|
|
13
|
+
private values;
|
|
14
|
+
private redact;
|
|
15
|
+
private redactValue;
|
|
16
|
+
redactJson(text: string): string;
|
|
17
|
+
push(chunk: Buffer): string;
|
|
18
|
+
flush(): string;
|
|
19
|
+
}
|
|
20
|
+
export declare class HarnessOutputRedactor {
|
|
21
|
+
private pending;
|
|
22
|
+
private structured;
|
|
23
|
+
private readonly decoder;
|
|
24
|
+
private readonly redactor;
|
|
25
|
+
constructor(assignment: Assignment, localSecrets?: string[], observe?: () => readonly string[]);
|
|
26
|
+
private record;
|
|
27
|
+
push(chunk: Buffer): string;
|
|
28
|
+
flush(): string;
|
|
29
|
+
}
|
|
30
|
+
export declare function materializeSkills(home: string, assignment: Assignment): Promise<void>;
|
|
31
|
+
export declare function removeAgentRuntime(runtime: string): Promise<void>;
|
|
32
|
+
export declare function failureBody(assignment: Assignment, thrown: unknown): Extract<CompletionEnvelope, {
|
|
33
|
+
version: 3;
|
|
34
|
+
}>["body"];
|
|
35
|
+
export declare function harnessCommand(assignment: Assignment, input?: string): {
|
|
36
|
+
command: string;
|
|
37
|
+
args: string[];
|
|
38
|
+
};
|
|
39
|
+
export declare function auxiliaryResult(value: string): {
|
|
40
|
+
title?: string;
|
|
41
|
+
facts: string[];
|
|
42
|
+
};
|
|
43
|
+
export declare function securityResult(value: string): {
|
|
44
|
+
decision: "auto" | "strict";
|
|
45
|
+
reason?: string;
|
|
46
|
+
} | null;
|
|
47
|
+
export declare function auxiliaryPrompt(assignment: Assignment, reply: string): string;
|
|
48
|
+
export declare function harnessEvent(line: string): {
|
|
49
|
+
type: string;
|
|
50
|
+
payload: unknown;
|
|
51
|
+
assistantText?: string;
|
|
52
|
+
};
|
|
53
|
+
export declare function harnessEvents(line: string): Array<{
|
|
54
|
+
type: string;
|
|
55
|
+
payload: unknown;
|
|
56
|
+
assistantText?: string;
|
|
57
|
+
}>;
|
|
58
|
+
export declare function boundedWorkerEventPayload(payload: unknown): unknown;
|
|
59
|
+
export declare function postEvents(client: AgentQueueClient, assignment: Assignment, seq: number, type: string, payload: unknown): Promise<void>;
|
|
60
|
+
export declare function checkpointArchive(workspace: string, secrets: readonly string[], excludedRoots?: ReadonlySet<string>): Promise<CheckpointUpload>;
|
|
61
|
+
export declare function restoreCheckpoint(workspace: string, checkpoint: Assignment["checkpoint"], nativeIdentity?: string | null): Promise<void>;
|
|
62
|
+
type WorkerTurnCheckpoint = {
|
|
63
|
+
capturedAt: number;
|
|
64
|
+
} & ({
|
|
65
|
+
failure: string;
|
|
66
|
+
} | {
|
|
67
|
+
nonce: string;
|
|
68
|
+
output: string;
|
|
69
|
+
ref: string;
|
|
70
|
+
pushFailure: string | null;
|
|
71
|
+
});
|
|
72
|
+
export declare function bestEffortCheckpoint<T>(create: () => Promise<T>): Promise<T | null>;
|
|
73
|
+
export declare function repositoryPreparationLayout(workspace: string, agentRuntime: string, repositoryReady: boolean): {
|
|
74
|
+
repositoryWorkspace: string;
|
|
75
|
+
gitWorkspace: string;
|
|
76
|
+
isolationWorkspace: string;
|
|
77
|
+
};
|
|
78
|
+
declare function execute(config: WorkerConfig, assignment: Assignment): Promise<{
|
|
79
|
+
result: {
|
|
80
|
+
status: "ok";
|
|
81
|
+
reply: string;
|
|
82
|
+
attachments?: WorkerOutgoingAttachment[];
|
|
83
|
+
} | {
|
|
84
|
+
status: "refused";
|
|
85
|
+
reason: string;
|
|
86
|
+
} | {
|
|
87
|
+
status: "silent";
|
|
88
|
+
};
|
|
89
|
+
checkpoint: CheckpointUpload | null;
|
|
90
|
+
auxiliary: {
|
|
91
|
+
title?: string;
|
|
92
|
+
facts: string[];
|
|
93
|
+
};
|
|
94
|
+
turnCheckpoint?: WorkerTurnCheckpoint;
|
|
95
|
+
}>;
|
|
96
|
+
export declare function runWorker(config: WorkerConfig, options?: {
|
|
97
|
+
execute?: typeof execute;
|
|
98
|
+
capabilities?: import("./worker-types.ts").WorkerCapabilities;
|
|
99
|
+
}): Promise<void>;
|
|
100
|
+
export {};
|