@farmslot/agent-runtime 0.8.1 → 0.10.0
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/CHANGELOG.md +26 -1
- package/README.md +2 -2
- package/bin/farmslot-agent.mjs +3 -43
- package/dist/execution-template/create.d.ts.map +1 -1
- package/dist/execution-template/create.js +4 -9
- package/dist/execution-template/create.js.map +1 -1
- package/dist/execution-template/execution-template.test.js +85 -34
- package/dist/execution-template/execution-template.test.js.map +1 -1
- package/dist/execution-template/frontmatter.d.ts +6 -3
- package/dist/execution-template/frontmatter.d.ts.map +1 -1
- package/dist/execution-template/frontmatter.js +8 -10
- package/dist/execution-template/frontmatter.js.map +1 -1
- package/dist/execution-template/index.d.ts +2 -2
- package/dist/execution-template/index.d.ts.map +1 -1
- package/dist/execution-template/index.js +2 -2
- package/dist/execution-template/index.js.map +1 -1
- package/dist/execution-template/infer.d.ts +2 -3
- package/dist/execution-template/infer.d.ts.map +1 -1
- package/dist/execution-template/infer.js +2 -19
- package/dist/execution-template/infer.js.map +1 -1
- package/dist/execution-template/lint.d.ts.map +1 -1
- package/dist/execution-template/lint.js +12 -14
- package/dist/execution-template/lint.js.map +1 -1
- package/dist/execution-template/resolve.d.ts.map +1 -1
- package/dist/execution-template/resolve.js +0 -2
- package/dist/execution-template/resolve.js.map +1 -1
- package/dist/execution-template/select.d.ts.map +1 -1
- package/dist/execution-template/select.js +4 -8
- package/dist/execution-template/select.js.map +1 -1
- package/dist/execution-template/snapshot.d.ts.map +1 -1
- package/dist/execution-template/snapshot.js +0 -1
- package/dist/execution-template/snapshot.js.map +1 -1
- package/dist/execution-template/types.d.ts +10 -5
- package/dist/execution-template/types.d.ts.map +1 -1
- package/dist/execution-template/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/native/account-claude.d.ts +5 -0
- package/dist/native/account-claude.d.ts.map +1 -0
- package/dist/native/account-claude.js +42 -0
- package/dist/native/account-claude.js.map +1 -0
- package/dist/native/account-codex.d.ts +4 -0
- package/dist/native/account-codex.d.ts.map +1 -0
- package/dist/native/account-codex.js +51 -0
- package/dist/native/account-codex.js.map +1 -0
- package/dist/native/account-common.d.ts +30 -0
- package/dist/native/account-common.d.ts.map +1 -0
- package/dist/native/account-common.js +155 -0
- package/dist/native/account-common.js.map +1 -0
- package/dist/native/account-cursor.d.ts +5 -0
- package/dist/native/account-cursor.d.ts.map +1 -0
- package/dist/native/account-cursor.js +48 -0
- package/dist/native/account-cursor.js.map +1 -0
- package/dist/native/account-grok.d.ts +4 -0
- package/dist/native/account-grok.d.ts.map +1 -0
- package/dist/native/account-grok.js +55 -0
- package/dist/native/account-grok.js.map +1 -0
- package/dist/native/account-observation.test.d.ts +2 -0
- package/dist/native/account-observation.test.d.ts.map +1 -0
- package/dist/native/account-observation.test.js +256 -0
- package/dist/native/account-observation.test.js.map +1 -0
- package/dist/native/account-profiles.d.ts +11 -0
- package/dist/native/account-profiles.d.ts.map +1 -0
- package/dist/native/account-profiles.js +172 -0
- package/dist/native/account-profiles.js.map +1 -0
- package/dist/native/account-profiles.test.d.ts +2 -0
- package/dist/native/account-profiles.test.d.ts.map +1 -0
- package/dist/native/account-profiles.test.js +172 -0
- package/dist/native/account-profiles.test.js.map +1 -0
- package/dist/native/account-types.d.ts +11 -0
- package/dist/native/account-types.d.ts.map +1 -0
- package/dist/native/account-types.js +2 -0
- package/dist/native/account-types.js.map +1 -0
- package/dist/native/acp-requests.d.ts +11 -0
- package/dist/native/acp-requests.d.ts.map +1 -0
- package/dist/native/acp-requests.js +109 -0
- package/dist/native/acp-requests.js.map +1 -0
- package/dist/native/acp-rpc.d.ts +15 -0
- package/dist/native/acp-rpc.d.ts.map +1 -0
- package/dist/native/acp-rpc.js +73 -0
- package/dist/native/acp-rpc.js.map +1 -0
- package/dist/native/acp.d.ts +15 -0
- package/dist/native/acp.d.ts.map +1 -0
- package/dist/native/acp.js +285 -0
- package/dist/native/acp.js.map +1 -0
- package/dist/native/acp.test.d.ts +2 -0
- package/dist/native/acp.test.d.ts.map +1 -0
- package/dist/native/acp.test.js +257 -0
- package/dist/native/acp.test.js.map +1 -0
- package/dist/native/affinity.test.d.ts +2 -0
- package/dist/native/affinity.test.d.ts.map +1 -0
- package/dist/native/affinity.test.js +30 -0
- package/dist/native/affinity.test.js.map +1 -0
- package/dist/native/claude.d.ts +11 -0
- package/dist/native/claude.d.ts.map +1 -0
- package/dist/native/claude.js +504 -0
- package/dist/native/claude.js.map +1 -0
- package/dist/native/client.d.ts +34 -0
- package/dist/native/client.d.ts.map +1 -0
- package/dist/native/client.js +217 -0
- package/dist/native/client.js.map +1 -0
- package/dist/native/codex.d.ts +3 -0
- package/dist/native/codex.d.ts.map +1 -0
- package/dist/native/codex.js +324 -0
- package/dist/native/codex.js.map +1 -0
- package/dist/native/cursor-model.d.ts +6 -0
- package/dist/native/cursor-model.d.ts.map +1 -0
- package/dist/native/cursor-model.js +74 -0
- package/dist/native/cursor-model.js.map +1 -0
- package/dist/native/cursor-model.test.d.ts +2 -0
- package/dist/native/cursor-model.test.d.ts.map +1 -0
- package/dist/native/cursor-model.test.js +40 -0
- package/dist/native/cursor-model.test.js.map +1 -0
- package/dist/native/cursor.d.ts +2 -0
- package/dist/native/cursor.d.ts.map +1 -0
- package/dist/native/cursor.js +30 -0
- package/dist/native/cursor.js.map +1 -0
- package/dist/native/durability.test.d.ts +2 -0
- package/dist/native/durability.test.d.ts.map +1 -0
- package/dist/native/durability.test.js +976 -0
- package/dist/native/durability.test.js.map +1 -0
- package/dist/native/filesystem-policy.test.d.ts +2 -0
- package/dist/native/filesystem-policy.test.d.ts.map +1 -0
- package/dist/native/filesystem-policy.test.js +136 -0
- package/dist/native/filesystem-policy.test.js.map +1 -0
- package/dist/native/grok.d.ts +2 -0
- package/dist/native/grok.d.ts.map +1 -0
- package/dist/native/grok.js +17 -0
- package/dist/native/grok.js.map +1 -0
- package/dist/native/host.d.ts +2 -0
- package/dist/native/host.d.ts.map +1 -0
- package/dist/native/host.js +129 -0
- package/dist/native/host.js.map +1 -0
- package/dist/native/index.d.ts +7 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +6 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/ipc.d.ts +108 -0
- package/dist/native/ipc.d.ts.map +1 -0
- package/dist/native/ipc.js +181 -0
- package/dist/native/ipc.js.map +1 -0
- package/dist/native/manager.d.ts +61 -0
- package/dist/native/manager.d.ts.map +1 -0
- package/dist/native/manager.js +850 -0
- package/dist/native/manager.js.map +1 -0
- package/dist/native/process-tree.d.ts +26 -0
- package/dist/native/process-tree.d.ts.map +1 -0
- package/dist/native/process-tree.js +231 -0
- package/dist/native/process-tree.js.map +1 -0
- package/dist/native/process-tree.test.d.ts +2 -0
- package/dist/native/process-tree.test.d.ts.map +1 -0
- package/dist/native/process-tree.test.js +174 -0
- package/dist/native/process-tree.test.js.map +1 -0
- package/dist/native/process.d.ts +38 -0
- package/dist/native/process.d.ts.map +1 -0
- package/dist/native/process.js +246 -0
- package/dist/native/process.js.map +1 -0
- package/dist/native/process.test.d.ts +2 -0
- package/dist/native/process.test.d.ts.map +1 -0
- package/dist/native/process.test.js +56 -0
- package/dist/native/process.test.js.map +1 -0
- package/dist/native/profile-service.d.ts +5 -0
- package/dist/native/profile-service.d.ts.map +1 -0
- package/dist/native/profile-service.js +76 -0
- package/dist/native/profile-service.js.map +1 -0
- package/dist/native/registry.d.ts +20 -0
- package/dist/native/registry.d.ts.map +1 -0
- package/dist/native/registry.js +89 -0
- package/dist/native/registry.js.map +1 -0
- package/dist/native/registry.test.d.ts +2 -0
- package/dist/native/registry.test.d.ts.map +1 -0
- package/dist/native/registry.test.js +13 -0
- package/dist/native/registry.test.js.map +1 -0
- package/dist/native/review-sandbox.d.ts +12 -0
- package/dist/native/review-sandbox.d.ts.map +1 -0
- package/dist/native/review-sandbox.js +6 -0
- package/dist/native/review-sandbox.js.map +1 -0
- package/dist/native/review-sandbox.test.d.ts +2 -0
- package/dist/native/review-sandbox.test.d.ts.map +1 -0
- package/dist/native/review-sandbox.test.js +40 -0
- package/dist/native/review-sandbox.test.js.map +1 -0
- package/dist/native/service.d.ts +7 -0
- package/dist/native/service.d.ts.map +1 -0
- package/dist/native/service.js +151 -0
- package/dist/native/service.js.map +1 -0
- package/dist/native/storage.d.ts +11 -0
- package/dist/native/storage.d.ts.map +1 -0
- package/dist/native/storage.js +102 -0
- package/dist/native/storage.js.map +1 -0
- package/dist/native/supervisor.d.ts +2 -0
- package/dist/native/supervisor.d.ts.map +1 -0
- package/dist/native/supervisor.js +215 -0
- package/dist/native/supervisor.js.map +1 -0
- package/dist/native/types.d.ts +36 -0
- package/dist/native/types.d.ts.map +1 -0
- package/dist/native/types.js +2 -0
- package/dist/native/types.js.map +1 -0
- package/dist/native/worker-history.d.ts +16 -0
- package/dist/native/worker-history.d.ts.map +1 -0
- package/dist/native/worker-history.js +77 -0
- package/dist/native/worker-history.js.map +1 -0
- package/dist/native/worker-history.test.d.ts +2 -0
- package/dist/native/worker-history.test.d.ts.map +1 -0
- package/dist/native/worker-history.test.js +195 -0
- package/dist/native/worker-history.test.js.map +1 -0
- package/dist/native/worker-launch.d.ts +72 -0
- package/dist/native/worker-launch.d.ts.map +1 -0
- package/dist/native/worker-launch.js +134 -0
- package/dist/native/worker-launch.js.map +1 -0
- package/dist/native/worker-launch.test.d.ts +2 -0
- package/dist/native/worker-launch.test.d.ts.map +1 -0
- package/dist/native/worker-launch.test.js +61 -0
- package/dist/native/worker-launch.test.js.map +1 -0
- package/dist/native/worker-relocation.test.d.ts +2 -0
- package/dist/native/worker-relocation.test.d.ts.map +1 -0
- package/dist/native/worker-relocation.test.js +110 -0
- package/dist/native/worker-relocation.test.js.map +1 -0
- package/dist/native/worker-service.d.ts +4 -0
- package/dist/native/worker-service.d.ts.map +1 -0
- package/dist/native/worker-service.js +85 -0
- package/dist/native/worker-service.js.map +1 -0
- package/dist/native/workspace-files.d.ts +6 -0
- package/dist/native/workspace-files.d.ts.map +1 -0
- package/dist/native/workspace-files.js +62 -0
- package/dist/native/workspace-files.js.map +1 -0
- package/dist/native/workspace.d.ts +5 -0
- package/dist/native/workspace.d.ts.map +1 -0
- package/dist/native/workspace.js +120 -0
- package/dist/native/workspace.js.map +1 -0
- package/dist/task-init/index.d.ts +70 -0
- package/dist/task-init/index.d.ts.map +1 -0
- package/dist/task-init/index.js +124 -0
- package/dist/task-init/index.js.map +1 -0
- package/dist/task-init/task-document.d.ts +98 -0
- package/dist/task-init/task-document.d.ts.map +1 -0
- package/dist/task-init/task-document.js +184 -0
- package/dist/task-init/task-document.js.map +1 -0
- package/dist/task-init/write.d.ts +42 -0
- package/dist/task-init/write.d.ts.map +1 -0
- package/dist/task-init/write.js +63 -0
- package/dist/task-init/write.js.map +1 -0
- package/package.json +13 -4
- package/scripts/checklist-target.cjs +5 -3
- package/scripts/cursor-session-discovery.cjs +48 -0
- package/scripts/execution-template-cli.mjs +17 -18
- package/scripts/mark-checklist-step.cjs +1 -1
- package/scripts/review-filesystem.cjs +39 -0
- package/scripts/review-session.cjs +45 -0
- package/scripts/review-terminal.cjs +134 -0
- package/scripts/task-init-cli.mjs +166 -0
- package/scripts/worker-terminal-contract.cjs +15 -3
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { closeSync, existsSync, openSync } from 'node:fs';
|
|
4
|
+
import { join, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { farmslotHome } from '@farmslot/protocol/node/farmslot-home';
|
|
7
|
+
import { requestHost } from './ipc.js';
|
|
8
|
+
import { alive, privateDirectory, readJson } from './storage.js';
|
|
9
|
+
import { NATIVE_WORKER_CANCEL, NATIVE_WORKER_CLOSE, NATIVE_WORKER_ENSURE, NATIVE_WORKER_INTERRUPT, NATIVE_WORKER_METHODS, NATIVE_WORKER_READ, NATIVE_WORKER_RESPOND, NATIVE_WORKER_RESUME, NATIVE_WORKER_SEND, NATIVE_WORKER_TRANSFER, } from './worker-launch.js';
|
|
10
|
+
/** The same client is usable by gateway and execution-node services. */
|
|
11
|
+
export class NativeSessionClient {
|
|
12
|
+
constructor(root = process.env.FARMSLOT_NATIVE_STATE_DIR ?? join(farmslotHome(), 'native-sessions'), executionNodeId = 'local') {
|
|
13
|
+
this.executionNodeId = executionNodeId;
|
|
14
|
+
this.root = resolve(root);
|
|
15
|
+
}
|
|
16
|
+
workerStateDirectory(owner, sessionId) {
|
|
17
|
+
return join(this.root, 'workers', createHash('sha256').update(owner).digest('hex'), sessionId);
|
|
18
|
+
}
|
|
19
|
+
prepareWorkerState(owner, sessionId) {
|
|
20
|
+
const state = this.workerStateDirectory(owner, sessionId);
|
|
21
|
+
for (const directory of [this.root, join(this.root, 'workers'), resolve(state, '..'), state])
|
|
22
|
+
privateDirectory(directory);
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
25
|
+
async host() {
|
|
26
|
+
privateDirectory(this.root);
|
|
27
|
+
const path = join(this.root, 'host.json');
|
|
28
|
+
if (existsSync(path)) {
|
|
29
|
+
const host = readJson(path);
|
|
30
|
+
this.assertHostNode(host);
|
|
31
|
+
if (alive(host.pid) && existsSync(join(this.root, 'ready.json')) && existsSync(host.socket))
|
|
32
|
+
return host;
|
|
33
|
+
}
|
|
34
|
+
if (this.starting)
|
|
35
|
+
return this.starting;
|
|
36
|
+
this.starting = this.start();
|
|
37
|
+
try {
|
|
38
|
+
return await this.starting;
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
this.starting = undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
assertHostNode(host) {
|
|
45
|
+
if ((host.executionNodeId ?? 'local') !== this.executionNodeId)
|
|
46
|
+
throw new Error('Native state directory belongs to another execution node');
|
|
47
|
+
}
|
|
48
|
+
async start() {
|
|
49
|
+
privateDirectory(this.root);
|
|
50
|
+
const source = import.meta.url.endsWith('.ts');
|
|
51
|
+
const entry = fileURLToPath(new URL(`./supervisor.${source ? 'ts' : 'js'}`, import.meta.url));
|
|
52
|
+
const args = source
|
|
53
|
+
? ['--import', import.meta.resolve('tsx'), entry, this.root]
|
|
54
|
+
: [entry, this.root];
|
|
55
|
+
const log = openSync(join(this.root, 'host.log'), 'a', 0o600);
|
|
56
|
+
const child = spawn(process.execPath, args, {
|
|
57
|
+
detached: true,
|
|
58
|
+
stdio: ['ignore', log, log],
|
|
59
|
+
env: { ...process.env, FARMSLOT_NATIVE_EXECUTION_NODE_ID: this.executionNodeId },
|
|
60
|
+
});
|
|
61
|
+
closeSync(log);
|
|
62
|
+
child.unref();
|
|
63
|
+
let spawnError;
|
|
64
|
+
child.on('error', (error) => {
|
|
65
|
+
spawnError = error;
|
|
66
|
+
});
|
|
67
|
+
const deadline = Date.now() + 10_000;
|
|
68
|
+
while (Date.now() < deadline) {
|
|
69
|
+
if (spawnError)
|
|
70
|
+
throw spawnError;
|
|
71
|
+
const path = join(this.root, 'host.json');
|
|
72
|
+
if (existsSync(path)) {
|
|
73
|
+
const host = readJson(path);
|
|
74
|
+
this.assertHostNode(host);
|
|
75
|
+
if (alive(host.pid) && existsSync(join(this.root, 'ready.json')) && existsSync(host.socket))
|
|
76
|
+
return host;
|
|
77
|
+
}
|
|
78
|
+
await new Promise((resolve) => setTimeout(resolve, 25));
|
|
79
|
+
}
|
|
80
|
+
throw new Error(`Native host unavailable; inspect ${join(this.root, 'host.log')}. No command was retried.`);
|
|
81
|
+
}
|
|
82
|
+
async call(request) {
|
|
83
|
+
const host = await this.host();
|
|
84
|
+
if ('params' in request &&
|
|
85
|
+
'profileId' in request.params &&
|
|
86
|
+
request.params.profileId &&
|
|
87
|
+
!host.supportsProfiles)
|
|
88
|
+
throw new Error('Native host upgrade required for account profiles; existing sessions remain available');
|
|
89
|
+
if (request.method === NATIVE_WORKER_RESUME &&
|
|
90
|
+
request.params.relocation &&
|
|
91
|
+
!host.supportsWorkerRelocation)
|
|
92
|
+
throw new Error('Native host upgrade required for worker relocation');
|
|
93
|
+
if ((request.method === NATIVE_WORKER_RESUME ||
|
|
94
|
+
(request.method === NATIVE_WORKER_CANCEL && request.resumeCommandId)) &&
|
|
95
|
+
!host.supportsWorkerResumeFence)
|
|
96
|
+
throw new Error('Native host upgrade required for durable worker resume cancellation');
|
|
97
|
+
if (NATIVE_WORKER_METHODS.includes(request.method) && !host.supportsWorkers)
|
|
98
|
+
throw new Error('Native host upgrade required for worker launch configuration; existing sessions remain available');
|
|
99
|
+
if (request.method === 'ensure' && !host.supportsEnsure)
|
|
100
|
+
throw new Error('Native host upgrade required for idempotent creation; existing sessions remain available');
|
|
101
|
+
const result = await requestHost(host, request);
|
|
102
|
+
if ('params' in request && request.params.profileId) {
|
|
103
|
+
const session = result;
|
|
104
|
+
if (session.profileId !== request.params.profileId ||
|
|
105
|
+
session.accountContextId !== request.params.accountContextId)
|
|
106
|
+
throw new Error('Native host returned a different account profile binding');
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
create(owner, params) {
|
|
111
|
+
if (params.executionNodeId !== undefined && params.executionNodeId !== this.executionNodeId)
|
|
112
|
+
throw new Error('Native session targets another execution node');
|
|
113
|
+
return this.call({ method: 'create', owner, params });
|
|
114
|
+
}
|
|
115
|
+
ensure(owner, params) {
|
|
116
|
+
if (params.executionNodeId !== undefined && params.executionNodeId !== this.executionNodeId)
|
|
117
|
+
throw new Error('Native session targets another execution node');
|
|
118
|
+
return this.call({ method: 'ensure', owner, params });
|
|
119
|
+
}
|
|
120
|
+
ensureWorker(owner, params, launch) {
|
|
121
|
+
if (params.executionNodeId !== undefined && params.executionNodeId !== this.executionNodeId)
|
|
122
|
+
throw new Error('Native worker targets another execution node');
|
|
123
|
+
return this.call({ method: NATIVE_WORKER_ENSURE, owner, params, launch });
|
|
124
|
+
}
|
|
125
|
+
resumeWorker(owner, params, launch) {
|
|
126
|
+
if (params.executionNodeId !== undefined && params.executionNodeId !== this.executionNodeId)
|
|
127
|
+
throw new Error('Native worker targets another execution node');
|
|
128
|
+
return this.call({ method: NATIVE_WORKER_RESUME, owner, params, launch });
|
|
129
|
+
}
|
|
130
|
+
workerTarget(target) {
|
|
131
|
+
if (target.executionNodeId !== undefined && target.executionNodeId !== this.executionNodeId)
|
|
132
|
+
throw new Error('Native worker targets another execution node');
|
|
133
|
+
return { id: target.sessionId, generation: target.generation, leaseId: target.leaseId };
|
|
134
|
+
}
|
|
135
|
+
transferWorker(owner, target, launch) {
|
|
136
|
+
return this.call({
|
|
137
|
+
method: NATIVE_WORKER_TRANSFER,
|
|
138
|
+
owner,
|
|
139
|
+
...this.workerTarget(target),
|
|
140
|
+
launch,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
sendWorker(owner, target, commandId, text) {
|
|
144
|
+
return this.call({
|
|
145
|
+
method: NATIVE_WORKER_SEND,
|
|
146
|
+
owner,
|
|
147
|
+
...this.workerTarget(target),
|
|
148
|
+
commandId,
|
|
149
|
+
text,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
closeWorker(owner, target) {
|
|
153
|
+
return this.call({
|
|
154
|
+
method: NATIVE_WORKER_CLOSE,
|
|
155
|
+
owner,
|
|
156
|
+
...this.workerTarget(target),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
interruptWorker(owner, target) {
|
|
160
|
+
return this.call({
|
|
161
|
+
method: NATIVE_WORKER_INTERRUPT,
|
|
162
|
+
owner,
|
|
163
|
+
...this.workerTarget(target),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
cancelWorker(owner, target) {
|
|
167
|
+
if (target.executionNodeId !== undefined && target.executionNodeId !== this.executionNodeId)
|
|
168
|
+
throw new Error('Native worker targets another execution node');
|
|
169
|
+
return this.call({
|
|
170
|
+
method: NATIVE_WORKER_CANCEL,
|
|
171
|
+
owner,
|
|
172
|
+
id: target.sessionId,
|
|
173
|
+
generation: target.generation,
|
|
174
|
+
leaseId: target.leaseId,
|
|
175
|
+
sourceLeaseId: target.sourceLeaseId,
|
|
176
|
+
resumeCommandId: target.resumeCommandId,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
respondWorker(owner, target, requestId, response) {
|
|
180
|
+
return this.call({
|
|
181
|
+
method: NATIVE_WORKER_RESPOND,
|
|
182
|
+
owner,
|
|
183
|
+
...this.workerTarget(target),
|
|
184
|
+
requestId,
|
|
185
|
+
response,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
list(owner) {
|
|
189
|
+
return this.call({ method: 'list', owner });
|
|
190
|
+
}
|
|
191
|
+
read(owner, id, after, limit) {
|
|
192
|
+
return this.call({ method: 'read', owner, id, after, limit });
|
|
193
|
+
}
|
|
194
|
+
readWorker(owner, id, leaseId, after, limit) {
|
|
195
|
+
return this.call({
|
|
196
|
+
method: NATIVE_WORKER_READ,
|
|
197
|
+
owner,
|
|
198
|
+
id,
|
|
199
|
+
leaseId,
|
|
200
|
+
after,
|
|
201
|
+
limit,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
send(owner, id, commandId, text) {
|
|
205
|
+
return this.call({ method: 'send', owner, id, commandId, text });
|
|
206
|
+
}
|
|
207
|
+
respond(owner, id, requestId, response) {
|
|
208
|
+
return this.call({ method: 'respond', owner, id, requestId, response });
|
|
209
|
+
}
|
|
210
|
+
interrupt(owner, id) {
|
|
211
|
+
return this.call({ method: 'interrupt', owner, id });
|
|
212
|
+
}
|
|
213
|
+
close(owner, id) {
|
|
214
|
+
return this.call({ method: 'close', owner, id });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/native/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/native/codex.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AA0DlE,eAAO,MAAM,kBAAkB,EAAE,aAwRhC,CAAC"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { realpath } from 'node:fs/promises';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
import { JsonLineProcess } from './process.js';
|
|
5
|
+
import { validateNativeWorkerFilesystemPolicy } from './worker-launch.js';
|
|
6
|
+
const READ_ONLY_PROFILE = 'farmslot-read-only-source';
|
|
7
|
+
/** Git's shared metadata can live outside a linked worktree's writable root. */
|
|
8
|
+
async function gitWritableRoot(cwd, env) {
|
|
9
|
+
let common;
|
|
10
|
+
try {
|
|
11
|
+
const result = await promisify(execFile)('git', ['rev-parse', '--path-format=absolute', '--git-common-dir'], { cwd, env, timeout: 10000 });
|
|
12
|
+
common = result.stdout.trim();
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
// Non-repository conversations need no extra write grant. Git's refusal
|
|
16
|
+
// leaves the ordinary workspace sandbox in place rather than broadening it.
|
|
17
|
+
if (error.code === 128)
|
|
18
|
+
return undefined;
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
return realpath(common);
|
|
22
|
+
}
|
|
23
|
+
function wireObject(value) {
|
|
24
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
25
|
+
throw new Error('Expected a native protocol object');
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function wireString(value) {
|
|
29
|
+
if (typeof value !== 'string')
|
|
30
|
+
throw new Error('Expected a native protocol string');
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function optionalString(value) {
|
|
34
|
+
return typeof value === 'string' ? value : undefined;
|
|
35
|
+
}
|
|
36
|
+
function questions(value) {
|
|
37
|
+
if (value === undefined)
|
|
38
|
+
return undefined;
|
|
39
|
+
if (!Array.isArray(value))
|
|
40
|
+
throw new Error('Expected native question list');
|
|
41
|
+
return value.map((entry) => {
|
|
42
|
+
const question = wireObject(entry);
|
|
43
|
+
const options = question.options ?? [];
|
|
44
|
+
if (!Array.isArray(options))
|
|
45
|
+
throw new Error('Expected native question options');
|
|
46
|
+
return {
|
|
47
|
+
id: wireString(question.id),
|
|
48
|
+
prompt: wireString(question.question),
|
|
49
|
+
multiSelect: false,
|
|
50
|
+
options: options.map((entry) => {
|
|
51
|
+
const option = wireObject(entry);
|
|
52
|
+
return { label: wireString(option.label), description: optionalString(option.description) };
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export const codexNativeAdapter = {
|
|
58
|
+
filesystemPolicyUnavailableReason: (version) => {
|
|
59
|
+
const parsed = /\b(\d+)\.(\d+)\.(\d+)\b/.exec(version);
|
|
60
|
+
return parsed && (Number(parsed[1]) > 0 || Number(parsed[2]) >= 154)
|
|
61
|
+
? undefined
|
|
62
|
+
: 'Read-only source review requires Codex 0.154.0 or newer';
|
|
63
|
+
},
|
|
64
|
+
capabilities: {
|
|
65
|
+
modes: ['default', 'plan'],
|
|
66
|
+
streaming: true,
|
|
67
|
+
tools: true,
|
|
68
|
+
approvals: true,
|
|
69
|
+
questions: false,
|
|
70
|
+
interrupt: true,
|
|
71
|
+
resume: true,
|
|
72
|
+
resumeAcrossWorkspaces: true,
|
|
73
|
+
},
|
|
74
|
+
async start(options, emit) {
|
|
75
|
+
let nativeSessionId = '';
|
|
76
|
+
let resolvedModel = options.model;
|
|
77
|
+
let turnId;
|
|
78
|
+
let commandId;
|
|
79
|
+
let startingTurn;
|
|
80
|
+
const requests = new Map();
|
|
81
|
+
const publish = (event) => emit({ commandId, turnId, ...event });
|
|
82
|
+
const pendingTools = new Map();
|
|
83
|
+
const process = new JsonLineProcess(options.executable, ['app-server'], options, (message) => {
|
|
84
|
+
const params = wireObject(message.params ?? {});
|
|
85
|
+
const method = optionalString(message.method);
|
|
86
|
+
if (params.threadId && nativeSessionId && params.threadId !== nativeSessionId)
|
|
87
|
+
return;
|
|
88
|
+
if (message.id !== undefined && method) {
|
|
89
|
+
if (typeof message.id !== 'string' && typeof message.id !== 'number')
|
|
90
|
+
throw new Error('Expected a native request ID');
|
|
91
|
+
const requestId = String(message.id);
|
|
92
|
+
if ([
|
|
93
|
+
'item/commandExecution/requestApproval',
|
|
94
|
+
'item/fileChange/requestApproval',
|
|
95
|
+
'item/permissions/requestApproval',
|
|
96
|
+
'item/tool/requestUserInput',
|
|
97
|
+
].includes(method)) {
|
|
98
|
+
requests.set(requestId, { id: message.id, method, params });
|
|
99
|
+
publish({
|
|
100
|
+
type: message.method === 'item/tool/requestUserInput'
|
|
101
|
+
? 'question.requested'
|
|
102
|
+
: 'approval.requested',
|
|
103
|
+
nativeId: requestId,
|
|
104
|
+
request: {
|
|
105
|
+
id: requestId,
|
|
106
|
+
title: message.method === 'item/tool/requestUserInput'
|
|
107
|
+
? 'Answer runner questions'
|
|
108
|
+
: 'Allow runner action?',
|
|
109
|
+
detail: optionalString(params.reason) ?? optionalString(params.command),
|
|
110
|
+
tool: pendingTools.get(optionalString(params.itemId) ?? ''),
|
|
111
|
+
questions: questions(params.questions),
|
|
112
|
+
},
|
|
113
|
+
data: { ...params, method: message.method },
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Unsupported server requests fail closed instead of silently granting access.
|
|
118
|
+
process.write({
|
|
119
|
+
id: message.id,
|
|
120
|
+
error: { code: -32601, message: `Unsupported native request: ${message.method}` },
|
|
121
|
+
});
|
|
122
|
+
publish({ type: 'error', text: `Unsupported native request: ${message.method}` });
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
switch (method) {
|
|
127
|
+
case 'turn/started':
|
|
128
|
+
turnId = wireString(wireObject(params.turn).id);
|
|
129
|
+
publish({ type: 'turn.started', data: { turn: params.turn } });
|
|
130
|
+
break;
|
|
131
|
+
case 'item/agentMessage/delta':
|
|
132
|
+
publish({
|
|
133
|
+
type: 'text.delta',
|
|
134
|
+
nativeId: wireString(params.itemId),
|
|
135
|
+
text: wireString(params.delta),
|
|
136
|
+
});
|
|
137
|
+
break;
|
|
138
|
+
case 'item/started':
|
|
139
|
+
case 'item/completed': {
|
|
140
|
+
const item = wireObject(params.item);
|
|
141
|
+
const itemType = wireString(item.type);
|
|
142
|
+
if (!['userMessage', 'agentMessage', 'reasoning', 'plan'].includes(itemType)) {
|
|
143
|
+
const tool = {
|
|
144
|
+
name: itemType,
|
|
145
|
+
input: item.command ?? item.arguments ?? item.changes,
|
|
146
|
+
output: item.aggregatedOutput ?? item.result,
|
|
147
|
+
status: optionalString(item.status),
|
|
148
|
+
};
|
|
149
|
+
const itemId = wireString(item.id);
|
|
150
|
+
if (message.method === 'item/started')
|
|
151
|
+
pendingTools.set(itemId, tool);
|
|
152
|
+
else
|
|
153
|
+
pendingTools.delete(itemId);
|
|
154
|
+
publish({
|
|
155
|
+
type: message.method === 'item/started' ? 'tool.started' : 'tool.completed',
|
|
156
|
+
nativeId: itemId,
|
|
157
|
+
tool,
|
|
158
|
+
data: item,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case 'serverRequest/resolved':
|
|
164
|
+
requests.delete(String(params.requestId));
|
|
165
|
+
publish({ type: 'approval.resolved', nativeId: String(params.requestId) });
|
|
166
|
+
break;
|
|
167
|
+
case 'turn/completed': {
|
|
168
|
+
const turn = wireObject(params.turn);
|
|
169
|
+
const status = turn.status;
|
|
170
|
+
if (status !== 'completed' && status !== 'interrupted' && status !== 'failed')
|
|
171
|
+
throw new Error('Unknown native terminal turn status');
|
|
172
|
+
publish({
|
|
173
|
+
type: 'turn.completed',
|
|
174
|
+
status,
|
|
175
|
+
data: { status, error: turn.error },
|
|
176
|
+
});
|
|
177
|
+
requests.clear();
|
|
178
|
+
pendingTools.clear();
|
|
179
|
+
turnId = undefined;
|
|
180
|
+
commandId = undefined;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
case 'error':
|
|
184
|
+
publish({
|
|
185
|
+
type: 'error',
|
|
186
|
+
data: params,
|
|
187
|
+
text: optionalString(wireObject(params.error ?? {}).message),
|
|
188
|
+
});
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}, (error, processStopped) => publish({
|
|
192
|
+
type: 'session.closed',
|
|
193
|
+
...(error ? { status: 'failed' } : {}),
|
|
194
|
+
data: { processStopped, ...(error ? { error: error.message } : {}) },
|
|
195
|
+
}));
|
|
196
|
+
try {
|
|
197
|
+
await process.request('initialize', {
|
|
198
|
+
clientInfo: { name: 'farmslot', version: '0.1.0' },
|
|
199
|
+
capabilities: { experimentalApi: true },
|
|
200
|
+
});
|
|
201
|
+
process.write({ method: 'initialized', params: {} });
|
|
202
|
+
const gitRoot = options.safetyTier === 'dangerous'
|
|
203
|
+
? undefined
|
|
204
|
+
: await gitWritableRoot(options.cwd, options.env);
|
|
205
|
+
const filesystemPolicy = options.filesystemPolicy &&
|
|
206
|
+
validateNativeWorkerFilesystemPolicy({
|
|
207
|
+
...options.filesystemPolicy,
|
|
208
|
+
readOnlyRoots: [...options.filesystemPolicy.readOnlyRoots, ...(gitRoot ? [gitRoot] : [])],
|
|
209
|
+
});
|
|
210
|
+
const result = wireObject(await process.request(options.resumeSessionId ? 'thread/resume' : 'thread/start', {
|
|
211
|
+
...(options.resumeSessionId ? { threadId: options.resumeSessionId } : {}),
|
|
212
|
+
cwd: options.cwd,
|
|
213
|
+
model: options.model,
|
|
214
|
+
...(options.filesystemPolicy
|
|
215
|
+
? {
|
|
216
|
+
approvalPolicy: 'never',
|
|
217
|
+
config: {
|
|
218
|
+
default_permissions: READ_ONLY_PROFILE,
|
|
219
|
+
[`permissions.${READ_ONLY_PROFILE}`]: {
|
|
220
|
+
filesystem: Object.fromEntries([
|
|
221
|
+
['/', 'read'],
|
|
222
|
+
...filesystemPolicy.writableRoots.map((root) => [root, 'write']),
|
|
223
|
+
]),
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
}
|
|
227
|
+
: {
|
|
228
|
+
approvalPolicy: options.safetyTier && options.safetyTier !== 'sandboxed' ? 'never' : 'untrusted',
|
|
229
|
+
sandbox: options.safetyTier === 'dangerous' ? 'danger-full-access' : 'workspace-write',
|
|
230
|
+
...(gitRoot
|
|
231
|
+
? { config: { 'sandbox_workspace_write.writable_roots': [gitRoot] } }
|
|
232
|
+
: {}),
|
|
233
|
+
}),
|
|
234
|
+
}));
|
|
235
|
+
if (options.filesystemPolicy &&
|
|
236
|
+
wireObject(result.activePermissionProfile).id !== READ_ONLY_PROFILE)
|
|
237
|
+
throw new Error('Native runner did not confirm the read-only source permissions profile');
|
|
238
|
+
nativeSessionId = wireString(wireObject(result.thread).id);
|
|
239
|
+
resolvedModel = optionalString(result.model) ?? options.model;
|
|
240
|
+
if (options.mode === 'plan' && !resolvedModel)
|
|
241
|
+
throw new Error('Native planning mode requires the resolved model');
|
|
242
|
+
if (options.resumeSessionId && nativeSessionId !== options.resumeSessionId)
|
|
243
|
+
throw new Error('Codex resumed a different native session');
|
|
244
|
+
publish({ type: 'session.started', nativeId: nativeSessionId });
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
await process.close();
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
nativeSessionId,
|
|
252
|
+
capabilities: { ...codexNativeAdapter.capabilities, questions: options.mode === 'plan' },
|
|
253
|
+
async send(text, id) {
|
|
254
|
+
commandId = id;
|
|
255
|
+
// A response proves acceptance; turn/started independently proves execution.
|
|
256
|
+
const result = wireObject(await (startingTurn = process.request('turn/start', {
|
|
257
|
+
threadId: nativeSessionId,
|
|
258
|
+
input: [{ type: 'text', text }],
|
|
259
|
+
...(options.effort ? { effort: options.effort } : {}),
|
|
260
|
+
...(options.mode === 'plan'
|
|
261
|
+
? {
|
|
262
|
+
collaborationMode: {
|
|
263
|
+
mode: 'plan',
|
|
264
|
+
settings: {
|
|
265
|
+
model: resolvedModel,
|
|
266
|
+
reasoning_effort: options.effort ?? 'low',
|
|
267
|
+
developer_instructions: null,
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
}
|
|
271
|
+
: {}),
|
|
272
|
+
})));
|
|
273
|
+
if (commandId === id && !turnId)
|
|
274
|
+
turnId = wireString(wireObject(result.turn).id);
|
|
275
|
+
publish({
|
|
276
|
+
type: 'command.accepted',
|
|
277
|
+
commandId: id,
|
|
278
|
+
turnId: wireString(wireObject(result.turn).id),
|
|
279
|
+
text,
|
|
280
|
+
});
|
|
281
|
+
},
|
|
282
|
+
async respond(requestId, response) {
|
|
283
|
+
const request = requests.get(requestId);
|
|
284
|
+
if (!request)
|
|
285
|
+
throw new Error('Native request is stale or belongs to another session');
|
|
286
|
+
let result;
|
|
287
|
+
if (request.method === 'item/tool/requestUserInput') {
|
|
288
|
+
if (!response.answers)
|
|
289
|
+
throw new Error('Question response requires answers');
|
|
290
|
+
result = {
|
|
291
|
+
answers: Object.fromEntries(Object.entries(response.answers).map(([id, answers]) => [id, { answers }])),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
if (!response.decision)
|
|
296
|
+
throw new Error('Approval response requires a decision');
|
|
297
|
+
result =
|
|
298
|
+
request.method === 'item/permissions/requestApproval'
|
|
299
|
+
? {
|
|
300
|
+
permissions: response.decision === 'approve' ? request.params.permissions : {},
|
|
301
|
+
scope: 'turn',
|
|
302
|
+
}
|
|
303
|
+
: { decision: response.decision === 'approve' ? 'accept' : 'decline' };
|
|
304
|
+
}
|
|
305
|
+
process.write({ id: request.id, result });
|
|
306
|
+
requests.delete(requestId);
|
|
307
|
+
publish({
|
|
308
|
+
type: 'approval.resolved',
|
|
309
|
+
nativeId: requestId,
|
|
310
|
+
data: { decision: response.decision },
|
|
311
|
+
});
|
|
312
|
+
},
|
|
313
|
+
async interrupt() {
|
|
314
|
+
if (!turnId && startingTurn)
|
|
315
|
+
await startingTurn;
|
|
316
|
+
if (!turnId)
|
|
317
|
+
throw new Error('No active native turn to interrupt');
|
|
318
|
+
await process.request('turn/interrupt', { threadId: nativeSessionId, turnId });
|
|
319
|
+
},
|
|
320
|
+
close: () => process.close(),
|
|
321
|
+
};
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
//# sourceMappingURL=codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/native/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type AcpObject } from './acp-rpc.js';
|
|
2
|
+
type Request = (method: string, params: AcpObject) => Promise<unknown>;
|
|
3
|
+
/** Cursor ACP's parameterized model API; CLI --model is ignored by its ACP command. */
|
|
4
|
+
export declare function configureCursorModel(sessionId: string, session: AcpObject, requested: string, request: Request): Promise<void>;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=cursor-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-model.d.ts","sourceRoot":"","sources":["../../src/native/cursor-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,cAAc,CAAC;AAEpE,KAAK,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvE,uFAAuF;AACvF,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAqEf"}
|