@antseed/cli 0.1.124 → 0.1.126
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 +5 -15
- package/dist/cli/commands/buyer/connection.d.ts.map +1 -1
- package/dist/cli/commands/buyer/connection.js +8 -36
- package/dist/cli/commands/buyer/connection.js.map +1 -1
- package/dist/cli/commands/buyer/start.d.ts.map +1 -1
- package/dist/cli/commands/buyer/start.js +2 -1
- package/dist/cli/commands/buyer/start.js.map +1 -1
- package/dist/cli/commands/buyer/status.d.ts.map +1 -1
- package/dist/cli/commands/buyer/status.js +1 -2
- package/dist/cli/commands/buyer/status.js.map +1 -1
- package/dist/cli/commands/network/browse.d.ts +8 -0
- package/dist/cli/commands/network/browse.d.ts.map +1 -1
- package/dist/cli/commands/network/browse.js +78 -30
- package/dist/cli/commands/network/browse.js.map +1 -1
- package/dist/cli/commands/network/browse.test.d.ts +2 -0
- package/dist/cli/commands/network/browse.test.d.ts.map +1 -0
- package/dist/cli/commands/network/browse.test.js +32 -0
- package/dist/cli/commands/network/browse.test.js.map +1 -0
- package/dist/cli/commands/network/peer.d.ts.map +1 -1
- package/dist/cli/commands/network/peer.js +19 -0
- package/dist/cli/commands/network/peer.js.map +1 -1
- package/dist/cli/commands/seller/start.d.ts +1 -0
- package/dist/cli/commands/seller/start.d.ts.map +1 -1
- package/dist/cli/commands/seller/start.js +19 -0
- package/dist/cli/commands/seller/start.js.map +1 -1
- package/dist/cli/commands/seller/start.test.js +15 -1
- package/dist/cli/commands/seller/start.test.js.map +1 -1
- package/dist/cli/commands/wrapped-tools.d.ts +18 -0
- package/dist/cli/commands/wrapped-tools.d.ts.map +1 -0
- package/dist/cli/commands/wrapped-tools.js +320 -0
- package/dist/cli/commands/wrapped-tools.js.map +1 -0
- package/dist/cli/commands/wrapped-tools.test.d.ts +2 -0
- package/dist/cli/commands/wrapped-tools.test.d.ts.map +1 -0
- package/dist/cli/commands/wrapped-tools.test.js +185 -0
- package/dist/cli/commands/wrapped-tools.test.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/proxy/buyer-proxy.d.ts +2 -9
- package/dist/proxy/buyer-proxy.d.ts.map +1 -1
- package/dist/proxy/buyer-proxy.js +28 -28
- package/dist/proxy/buyer-proxy.js.map +1 -1
- package/dist/proxy/buyer-proxy.test.js +102 -27
- package/dist/proxy/buyer-proxy.test.js.map +1 -1
- package/dist/proxy/request-utils.d.ts +7 -7
- package/dist/proxy/request-utils.d.ts.map +1 -1
- package/dist/proxy/request-utils.js +41 -12
- package/dist/proxy/request-utils.js.map +1 -1
- package/dist/proxy/routing.d.ts +1 -1
- package/dist/proxy/routing.d.ts.map +1 -1
- package/dist/proxy/routing.js +6 -4
- package/dist/proxy/routing.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { accessSync, constants } from 'node:fs';
|
|
4
|
+
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { delimiter, join } from 'node:path';
|
|
7
|
+
import { getGlobalOptions } from './types.js';
|
|
8
|
+
const DEFAULT_PROXY_ROOT_URL = 'http://localhost:8377';
|
|
9
|
+
const DEFAULT_RUNTIME_API_KEY = 'antseed';
|
|
10
|
+
const OPENCODE_CONFIG_PREFIX = 'antseed-opencode-';
|
|
11
|
+
const TOOL_CONFIGS = {
|
|
12
|
+
codex: {
|
|
13
|
+
executable: 'codex',
|
|
14
|
+
},
|
|
15
|
+
claude: {
|
|
16
|
+
executable: 'claude',
|
|
17
|
+
},
|
|
18
|
+
opencode: {
|
|
19
|
+
executable: 'opencode',
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
const NOOP_CLEANUP = async () => { };
|
|
23
|
+
export function parseWrappedToolArgs(rawArgs) {
|
|
24
|
+
const childArgs = [];
|
|
25
|
+
let model = null;
|
|
26
|
+
let antseedBaseUrl = null;
|
|
27
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
28
|
+
const arg = rawArgs[i];
|
|
29
|
+
if (arg === '--') {
|
|
30
|
+
childArgs.push(...rawArgs.slice(i + 1));
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
const modelFlag = readValueFlag(rawArgs, i, '--model');
|
|
34
|
+
if (modelFlag) {
|
|
35
|
+
model = modelFlag.value;
|
|
36
|
+
i = modelFlag.nextIndex;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const baseUrlFlag = readValueFlag(rawArgs, i, '--antseed-base-url');
|
|
40
|
+
if (baseUrlFlag) {
|
|
41
|
+
antseedBaseUrl = baseUrlFlag.value;
|
|
42
|
+
i = baseUrlFlag.nextIndex;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (arg.startsWith('--antseed-')) {
|
|
46
|
+
throw new Error(`${arg.split('=')[0]} is not supported by this wrapper`);
|
|
47
|
+
}
|
|
48
|
+
childArgs.push(arg);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
childArgs,
|
|
52
|
+
model: normalizeOptionalString(model),
|
|
53
|
+
antseedBaseUrl: normalizeOptionalString(antseedBaseUrl),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function readValueFlag(args, index, flag) {
|
|
57
|
+
const arg = args[index];
|
|
58
|
+
const inlineValue = readInlineValue(arg, flag);
|
|
59
|
+
if (inlineValue !== null) {
|
|
60
|
+
return { value: inlineValue, nextIndex: index };
|
|
61
|
+
}
|
|
62
|
+
if (arg !== flag) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const value = args[index + 1];
|
|
66
|
+
if (!value || value.startsWith('-')) {
|
|
67
|
+
throw new Error(`${flag} requires a value`);
|
|
68
|
+
}
|
|
69
|
+
return { value, nextIndex: index + 1 };
|
|
70
|
+
}
|
|
71
|
+
function readInlineValue(arg, flag) {
|
|
72
|
+
const prefix = `${flag}=`;
|
|
73
|
+
return arg.startsWith(prefix) ? arg.slice(prefix.length) : null;
|
|
74
|
+
}
|
|
75
|
+
export function normalizeAntseedBaseUrl(inputUrl) {
|
|
76
|
+
const raw = normalizeOptionalString(inputUrl) ?? DEFAULT_PROXY_ROOT_URL;
|
|
77
|
+
const withProtocol = /^[a-z][a-z0-9+.-]*:\/\//i.test(raw) ? raw : `http://${raw}`;
|
|
78
|
+
const parsed = new URL(withProtocol);
|
|
79
|
+
parsed.hash = '';
|
|
80
|
+
parsed.search = '';
|
|
81
|
+
parsed.pathname = parsed.pathname.replace(/\/+$/, '');
|
|
82
|
+
const path = parsed.pathname === '/' ? '' : parsed.pathname;
|
|
83
|
+
if (path.toLowerCase() === '/v1') {
|
|
84
|
+
parsed.pathname = '';
|
|
85
|
+
const root = parsed.toString().replace(/\/$/, '');
|
|
86
|
+
return { root, v1: `${root}/v1` };
|
|
87
|
+
}
|
|
88
|
+
const root = parsed.toString().replace(/\/$/, '');
|
|
89
|
+
return { root, v1: `${root}/v1` };
|
|
90
|
+
}
|
|
91
|
+
export async function resolveDefaultAntseedBaseUrl(dataDir, configPath) {
|
|
92
|
+
const statePort = await readJsonPort(join(dataDir, 'buyer.state.json'), ['port']);
|
|
93
|
+
if (statePort !== null) {
|
|
94
|
+
return `http://localhost:${statePort}`;
|
|
95
|
+
}
|
|
96
|
+
const configuredPort = await readJsonPort(configPath, ['buyer', 'proxyPort']);
|
|
97
|
+
if (configuredPort !== null) {
|
|
98
|
+
return `http://localhost:${configuredPort}`;
|
|
99
|
+
}
|
|
100
|
+
return DEFAULT_PROXY_ROOT_URL;
|
|
101
|
+
}
|
|
102
|
+
export function buildCodexConfigArgs(baseUrlV1, model) {
|
|
103
|
+
return [
|
|
104
|
+
'-c',
|
|
105
|
+
`model_providers.antseed.name=${tomlString('AntSeed')}`,
|
|
106
|
+
'-c',
|
|
107
|
+
`model_providers.antseed.base_url=${tomlString(baseUrlV1)}`,
|
|
108
|
+
'-c',
|
|
109
|
+
'model_providers.antseed.wire_api="responses"',
|
|
110
|
+
'-c',
|
|
111
|
+
'model_providers.antseed.env_key="ANTSEED_API_KEY"',
|
|
112
|
+
'-c',
|
|
113
|
+
`model_providers.antseed.env_key_instructions=${tomlString('The AntSeed wrapper sets ANTSEED_API_KEY automatically.')}`,
|
|
114
|
+
'-c',
|
|
115
|
+
`model=${tomlString(model)}`,
|
|
116
|
+
'-c',
|
|
117
|
+
'model_provider="antseed"',
|
|
118
|
+
];
|
|
119
|
+
}
|
|
120
|
+
export function buildOpenCodeConfigContent(baseUrlV1, model) {
|
|
121
|
+
return JSON.stringify({
|
|
122
|
+
provider: {
|
|
123
|
+
antseed: {
|
|
124
|
+
npm: '@ai-sdk/openai-compatible',
|
|
125
|
+
name: 'AntSeed',
|
|
126
|
+
options: {
|
|
127
|
+
baseURL: baseUrlV1,
|
|
128
|
+
apiKey: 'antseed',
|
|
129
|
+
},
|
|
130
|
+
models: {
|
|
131
|
+
[model]: {
|
|
132
|
+
name: `${model} (via AntSeed)`,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
model: `antseed/${model}`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
function tomlString(value) {
|
|
141
|
+
return JSON.stringify(value);
|
|
142
|
+
}
|
|
143
|
+
function normalizeOptionalString(value) {
|
|
144
|
+
if (value === null || value === undefined)
|
|
145
|
+
return null;
|
|
146
|
+
const trimmed = value.trim();
|
|
147
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
148
|
+
}
|
|
149
|
+
async function readJsonPort(filePath, path) {
|
|
150
|
+
try {
|
|
151
|
+
const parsed = JSON.parse(await readFile(filePath, 'utf-8'));
|
|
152
|
+
let current = parsed;
|
|
153
|
+
for (const key of path) {
|
|
154
|
+
if (typeof current !== 'object' || current === null || !(key in current)) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
current = current[key];
|
|
158
|
+
}
|
|
159
|
+
const port = Number(current);
|
|
160
|
+
return Number.isInteger(port) && port > 0 && port <= 65535 ? port : null;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function resolveModel(model, toolName) {
|
|
167
|
+
const resolved = normalizeOptionalString(model) ?? normalizeOptionalString(process.env['ANTSEED_MODEL']);
|
|
168
|
+
if (resolved)
|
|
169
|
+
return resolved;
|
|
170
|
+
throw new Error(`${toolName} requires --model <service-id> or ANTSEED_MODEL`);
|
|
171
|
+
}
|
|
172
|
+
function resolveExecutable(command) {
|
|
173
|
+
if (command.includes('/') || command.includes('\\')) {
|
|
174
|
+
return command;
|
|
175
|
+
}
|
|
176
|
+
const pathEnv = process.env['PATH'] ?? '';
|
|
177
|
+
const extensions = process.platform === 'win32'
|
|
178
|
+
? (process.env['PATHEXT'] ?? '.EXE;.CMD;.BAT;.COM').split(';')
|
|
179
|
+
: [''];
|
|
180
|
+
for (const dir of pathEnv.split(delimiter)) {
|
|
181
|
+
if (!dir)
|
|
182
|
+
continue;
|
|
183
|
+
for (const ext of extensions) {
|
|
184
|
+
const candidate = join(dir, `${command}${ext}`);
|
|
185
|
+
try {
|
|
186
|
+
accessSync(candidate, constants.X_OK);
|
|
187
|
+
return candidate;
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// try next candidate
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
async function spawnInteractive(command, args, env) {
|
|
197
|
+
return await new Promise((resolveExit, reject) => {
|
|
198
|
+
const child = spawn(command, args, {
|
|
199
|
+
stdio: 'inherit',
|
|
200
|
+
env,
|
|
201
|
+
});
|
|
202
|
+
child.once('error', reject);
|
|
203
|
+
child.once('exit', (code, signal) => {
|
|
204
|
+
if (typeof code === 'number') {
|
|
205
|
+
resolveExit(code);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log(chalk.yellow(`Child process exited from signal ${signal ?? 'unknown'}.`));
|
|
209
|
+
resolveExit(1);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async function prepareToolInvocation(toolName, parsed, baseUrl) {
|
|
215
|
+
switch (toolName) {
|
|
216
|
+
case 'codex':
|
|
217
|
+
return prepareCodexInvocation(parsed, baseUrl);
|
|
218
|
+
case 'claude':
|
|
219
|
+
return prepareClaudeInvocation(parsed, baseUrl);
|
|
220
|
+
case 'opencode':
|
|
221
|
+
return await prepareOpenCodeInvocation(parsed, baseUrl);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
function prepareCodexInvocation(parsed, baseUrl) {
|
|
225
|
+
const model = resolveModel(parsed.model, 'codex');
|
|
226
|
+
return {
|
|
227
|
+
args: [...buildCodexConfigArgs(baseUrl.v1, model), ...parsed.childArgs],
|
|
228
|
+
env: withDefaultEnv('ANTSEED_API_KEY', DEFAULT_RUNTIME_API_KEY),
|
|
229
|
+
cleanup: NOOP_CLEANUP,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function prepareClaudeInvocation(parsed, baseUrl) {
|
|
233
|
+
return {
|
|
234
|
+
args: parsed.model ? ['--model', parsed.model, ...parsed.childArgs] : parsed.childArgs,
|
|
235
|
+
env: {
|
|
236
|
+
...withDefaultEnv('ANTHROPIC_API_KEY', DEFAULT_RUNTIME_API_KEY),
|
|
237
|
+
ANTHROPIC_BASE_URL: baseUrl.root,
|
|
238
|
+
},
|
|
239
|
+
cleanup: NOOP_CLEANUP,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
async function prepareOpenCodeInvocation(parsed, baseUrl) {
|
|
243
|
+
const model = resolveModel(parsed.model, 'opencode');
|
|
244
|
+
const configDir = await mkdtemp(join(tmpdir(), OPENCODE_CONFIG_PREFIX));
|
|
245
|
+
const configPath = join(configDir, 'opencode.json');
|
|
246
|
+
await writeFile(configPath, buildOpenCodeConfigContent(baseUrl.v1, model), 'utf-8');
|
|
247
|
+
return {
|
|
248
|
+
args: parsed.childArgs,
|
|
249
|
+
env: {
|
|
250
|
+
...process.env,
|
|
251
|
+
OPENCODE_CONFIG: configPath,
|
|
252
|
+
},
|
|
253
|
+
cleanup: () => rm(configDir, { recursive: true, force: true }),
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function withDefaultEnv(name, fallback) {
|
|
257
|
+
return {
|
|
258
|
+
...process.env,
|
|
259
|
+
[name]: process.env[name] || fallback,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
function proxyDisplayUrl(toolName, baseUrl) {
|
|
263
|
+
return toolName === 'claude' ? baseUrl.root : baseUrl.v1;
|
|
264
|
+
}
|
|
265
|
+
async function runWrappedTool(toolName, rawArgs, dataDir, configPath) {
|
|
266
|
+
const tool = TOOL_CONFIGS[toolName];
|
|
267
|
+
let parsed;
|
|
268
|
+
let baseUrl;
|
|
269
|
+
let prepared;
|
|
270
|
+
try {
|
|
271
|
+
parsed = parseWrappedToolArgs(rawArgs);
|
|
272
|
+
baseUrl = normalizeAntseedBaseUrl(parsed.antseedBaseUrl ?? await resolveDefaultAntseedBaseUrl(dataDir, configPath));
|
|
273
|
+
prepared = await prepareToolInvocation(toolName, parsed, baseUrl);
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
console.error(chalk.red(err.message));
|
|
277
|
+
process.exitCode = 1;
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const executable = resolveExecutable(tool.executable);
|
|
281
|
+
if (!executable) {
|
|
282
|
+
console.error(chalk.red(`"${tool.executable}" is not installed or is not on PATH.`));
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
console.log(chalk.dim(`AntSeed proxy: ${proxyDisplayUrl(toolName, baseUrl)}`));
|
|
286
|
+
const exitCode = await spawnInteractive(executable, prepared.args, prepared.env).catch((err) => {
|
|
287
|
+
console.error(chalk.red(`Failed to run ${toolName}: ${err.message}`));
|
|
288
|
+
return 1;
|
|
289
|
+
}).finally(async () => {
|
|
290
|
+
await prepared.cleanup().catch(() => { });
|
|
291
|
+
});
|
|
292
|
+
process.exitCode = exitCode;
|
|
293
|
+
}
|
|
294
|
+
function registerToolCommand(program, toolName) {
|
|
295
|
+
const tool = TOOL_CONFIGS[toolName];
|
|
296
|
+
program
|
|
297
|
+
.command(toolName)
|
|
298
|
+
.description(`Run ${tool.executable} with AntSeed proxy settings`)
|
|
299
|
+
.allowUnknownOption(true)
|
|
300
|
+
.allowExcessArguments(true)
|
|
301
|
+
.argument('[args...]', `${tool.executable} arguments; AntSeed consumes --model and --antseed-base-url`)
|
|
302
|
+
.addHelpText('after', `
|
|
303
|
+
|
|
304
|
+
AntSeed wrapper flags:
|
|
305
|
+
--model <service-id> Service/model id for the tool
|
|
306
|
+
--antseed-base-url <url> Proxy URL (default: active buyer proxy/config)
|
|
307
|
+
|
|
308
|
+
Unknown flags are forwarded to ${tool.executable}.
|
|
309
|
+
`)
|
|
310
|
+
.action(async (args) => {
|
|
311
|
+
const globalOpts = getGlobalOptions(program);
|
|
312
|
+
await runWrappedTool(toolName, args, globalOpts.dataDir, globalOpts.config);
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
export function registerWrappedToolCommands(program) {
|
|
316
|
+
registerToolCommand(program, 'codex');
|
|
317
|
+
registerToolCommand(program, 'claude');
|
|
318
|
+
registerToolCommand(program, 'opencode');
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=wrapped-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapped-tools.js","sourceRoot":"","sources":["../../../src/cli/commands/wrapped-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapped-tools.test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wrapped-tools.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { chmod, mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import test from 'node:test';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import { buildCodexConfigArgs, buildOpenCodeConfigContent, normalizeAntseedBaseUrl, parseWrappedToolArgs, resolveDefaultAntseedBaseUrl, } from './wrapped-tools.js';
|
|
9
|
+
const ROOT_PROXY_URL = 'http://localhost:8378';
|
|
10
|
+
const V1_PROXY_URL = `${ROOT_PROXY_URL}/v1`;
|
|
11
|
+
const MODEL_ID = 'deepseek-v4-flash';
|
|
12
|
+
const CLI_INDEX = join(dirname(fileURLToPath(import.meta.url)), '..', 'index.js');
|
|
13
|
+
const RECORDED_ENV_KEYS = ['ANTHROPIC_BASE_URL', 'ANTHROPIC_API_KEY', 'ANTSEED_API_KEY', 'OPENCODE_CONFIG'];
|
|
14
|
+
async function withTempWorkspace(fn) {
|
|
15
|
+
const root = await mkdtemp(join(tmpdir(), 'antseed-wrapper-'));
|
|
16
|
+
try {
|
|
17
|
+
const binDir = join(root, 'bin');
|
|
18
|
+
const dataDir = join(root, 'data');
|
|
19
|
+
await mkdir(binDir);
|
|
20
|
+
await mkdir(dataDir);
|
|
21
|
+
return await fn({ binDir, dataDir, configPath: join(dataDir, 'config.json') });
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
await rm(root, { recursive: true, force: true });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function createRecordingChildCli(workspace, executable) {
|
|
28
|
+
const capturePath = join(workspace.dataDir, `${executable}-invocation.json`);
|
|
29
|
+
const envKeys = JSON.stringify(RECORDED_ENV_KEYS);
|
|
30
|
+
const script = `#!/usr/bin/env node
|
|
31
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
32
|
+
|
|
33
|
+
const envKeys = ${envKeys};
|
|
34
|
+
const env = Object.fromEntries(envKeys.map((key) => [key, process.env[key] ?? null]));
|
|
35
|
+
const payload = { argv: process.argv.slice(2), env };
|
|
36
|
+
|
|
37
|
+
if (process.env.OPENCODE_CONFIG) {
|
|
38
|
+
payload.opencodeConfig = JSON.parse(readFileSync(process.env.OPENCODE_CONFIG, 'utf8'));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
writeFileSync(${JSON.stringify(capturePath)}, JSON.stringify(payload, null, 2));
|
|
42
|
+
`;
|
|
43
|
+
const executablePath = join(workspace.binDir, executable);
|
|
44
|
+
await writeFile(executablePath, script, 'utf8');
|
|
45
|
+
await chmod(executablePath, 0o755);
|
|
46
|
+
return {
|
|
47
|
+
readInvocation: async () => JSON.parse(await readFile(capturePath, 'utf8')),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function runWrapper(workspace, args) {
|
|
51
|
+
return spawnSync(process.execPath, [CLI_INDEX, '--data-dir', workspace.dataDir, '--config', workspace.configPath, ...args], {
|
|
52
|
+
encoding: 'utf8',
|
|
53
|
+
env: { ...process.env, PATH: `${workspace.binDir}:${process.env.PATH ?? ''}` },
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
test('parseWrappedToolArgs', async (t) => {
|
|
57
|
+
await t.test('consumes AntSeed flags and forwards child args', () => {
|
|
58
|
+
const parsed = parseWrappedToolArgs([
|
|
59
|
+
'--model',
|
|
60
|
+
'gpt-oss-120b',
|
|
61
|
+
'--sandbox',
|
|
62
|
+
'workspace-write',
|
|
63
|
+
'--antseed-base-url=localhost:8378',
|
|
64
|
+
]);
|
|
65
|
+
assert.equal(parsed.model, 'gpt-oss-120b');
|
|
66
|
+
assert.equal(parsed.antseedBaseUrl, 'localhost:8378');
|
|
67
|
+
assert.deepEqual(parsed.childArgs, ['--sandbox', 'workspace-write']);
|
|
68
|
+
});
|
|
69
|
+
await t.test('keeps -- escape hatch for child args', () => {
|
|
70
|
+
const parsed = parseWrappedToolArgs(['--model=foo', '--', '--model', 'child-model']);
|
|
71
|
+
assert.equal(parsed.model, 'foo');
|
|
72
|
+
assert.deepEqual(parsed.childArgs, ['--model', 'child-model']);
|
|
73
|
+
});
|
|
74
|
+
await t.test('rejects unsupported AntSeed wrapper flags', () => {
|
|
75
|
+
assert.throws(() => parseWrappedToolArgs(['--antseed-peer', 'peer-id']), /--antseed-peer is not supported by this wrapper/);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
test('normalizeAntseedBaseUrl', async (t) => {
|
|
79
|
+
await t.test('adds protocol and /v1 to a root URL', () => {
|
|
80
|
+
assert.deepEqual(normalizeAntseedBaseUrl('localhost:8377'), {
|
|
81
|
+
root: 'http://localhost:8377',
|
|
82
|
+
v1: 'http://localhost:8377/v1',
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
await t.test('derives root from a /v1 URL', () => {
|
|
86
|
+
assert.deepEqual(normalizeAntseedBaseUrl('http://localhost:8377/v1'), {
|
|
87
|
+
root: 'http://localhost:8377',
|
|
88
|
+
v1: 'http://localhost:8377/v1',
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
test('resolveDefaultAntseedBaseUrl prefers active buyer state over config', async () => {
|
|
93
|
+
await withTempWorkspace(async ({ dataDir, configPath }) => {
|
|
94
|
+
await writeFile(configPath, JSON.stringify({ buyer: { proxyPort: 8390 } }));
|
|
95
|
+
assert.equal(await resolveDefaultAntseedBaseUrl(dataDir, configPath), 'http://localhost:8390');
|
|
96
|
+
await writeFile(join(dataDir, 'buyer.state.json'), JSON.stringify({ port: 8378 }));
|
|
97
|
+
assert.equal(await resolveDefaultAntseedBaseUrl(dataDir, configPath), 'http://localhost:8378');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
test('buildCodexConfigArgs uses ephemeral config overrides on the real Codex home', () => {
|
|
101
|
+
const args = buildCodexConfigArgs(V1_PROXY_URL, MODEL_ID);
|
|
102
|
+
assert.equal(args.includes('--profile'), false);
|
|
103
|
+
assert.equal(args.includes('CODEX_HOME'), false);
|
|
104
|
+
assert.ok(args.includes('model_providers.antseed.name="AntSeed"'));
|
|
105
|
+
assert.ok(args.includes(`model_providers.antseed.base_url="${V1_PROXY_URL}"`));
|
|
106
|
+
assert.ok(args.includes('model_providers.antseed.wire_api="responses"'));
|
|
107
|
+
assert.ok(args.includes('model_providers.antseed.env_key="ANTSEED_API_KEY"'));
|
|
108
|
+
assert.ok(args.includes(`model="${MODEL_ID}"`));
|
|
109
|
+
assert.ok(args.includes('model_provider="antseed"'));
|
|
110
|
+
});
|
|
111
|
+
test('buildOpenCodeConfigContent configures AntSeed provider and selected model', () => {
|
|
112
|
+
const model = 'gpt-oss-120b';
|
|
113
|
+
const parsed = JSON.parse(buildOpenCodeConfigContent(V1_PROXY_URL, model));
|
|
114
|
+
assert.ok(parsed.provider.antseed);
|
|
115
|
+
assert.equal(parsed.provider.antseed.options.baseURL, V1_PROXY_URL);
|
|
116
|
+
assert.equal(parsed.model, `antseed/${model}`);
|
|
117
|
+
assert.ok(parsed.provider.antseed.models[model]);
|
|
118
|
+
});
|
|
119
|
+
test('wrapped tool execution', async (t) => {
|
|
120
|
+
await t.test('codex receives AntSeed config overrides and forwarded child args', async () => {
|
|
121
|
+
await withTempWorkspace(async (workspace) => {
|
|
122
|
+
const codex = await createRecordingChildCli(workspace, 'codex');
|
|
123
|
+
const result = runWrapper(workspace, [
|
|
124
|
+
'codex',
|
|
125
|
+
'--model',
|
|
126
|
+
'minimax-m2.5',
|
|
127
|
+
'--antseed-base-url',
|
|
128
|
+
'localhost:8125',
|
|
129
|
+
'--',
|
|
130
|
+
'--version',
|
|
131
|
+
]);
|
|
132
|
+
const invocation = await codex.readInvocation();
|
|
133
|
+
assert.equal(result.status, 0);
|
|
134
|
+
assert.equal(String(result.stderr), '');
|
|
135
|
+
assert.match(String(result.stdout), /AntSeed proxy: http:\/\/localhost:8125\/v1/);
|
|
136
|
+
assert.ok(invocation.argv.includes('model_provider="antseed"'));
|
|
137
|
+
assert.equal(invocation.argv.at(-1), '--version');
|
|
138
|
+
assert.equal(invocation.env.ANTSEED_API_KEY, 'antseed');
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
await t.test('claude receives Anthropic proxy env and model args', async () => {
|
|
142
|
+
await withTempWorkspace(async (workspace) => {
|
|
143
|
+
const claude = await createRecordingChildCli(workspace, 'claude');
|
|
144
|
+
const result = runWrapper(workspace, [
|
|
145
|
+
'claude',
|
|
146
|
+
'--model',
|
|
147
|
+
'claude-sonnet',
|
|
148
|
+
'--antseed-base-url',
|
|
149
|
+
'localhost:8123/v1',
|
|
150
|
+
'--print',
|
|
151
|
+
]);
|
|
152
|
+
const invocation = await claude.readInvocation();
|
|
153
|
+
assert.equal(result.status, 0);
|
|
154
|
+
assert.equal(String(result.stderr), '');
|
|
155
|
+
assert.match(String(result.stdout), /AntSeed proxy: http:\/\/localhost:8123/);
|
|
156
|
+
assert.deepEqual(invocation.argv, ['--model', 'claude-sonnet', '--print']);
|
|
157
|
+
assert.equal(invocation.env.ANTHROPIC_BASE_URL, 'http://localhost:8123');
|
|
158
|
+
assert.equal(invocation.env.ANTHROPIC_API_KEY, 'antseed');
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
await t.test('opencode receives generated config and forwarded child args', async () => {
|
|
162
|
+
await withTempWorkspace(async (workspace) => {
|
|
163
|
+
const opencode = await createRecordingChildCli(workspace, 'opencode');
|
|
164
|
+
const result = runWrapper(workspace, [
|
|
165
|
+
'opencode',
|
|
166
|
+
'--model',
|
|
167
|
+
'gpt-oss-120b',
|
|
168
|
+
'--antseed-base-url',
|
|
169
|
+
'http://localhost:8124/v1',
|
|
170
|
+
'run',
|
|
171
|
+
]);
|
|
172
|
+
const invocation = await opencode.readInvocation();
|
|
173
|
+
const antseedProvider = invocation.opencodeConfig?.provider.antseed;
|
|
174
|
+
assert.equal(result.status, 0);
|
|
175
|
+
assert.equal(String(result.stderr), '');
|
|
176
|
+
assert.match(String(result.stdout), /AntSeed proxy: http:\/\/localhost:8124\/v1/);
|
|
177
|
+
assert.deepEqual(invocation.argv, ['run']);
|
|
178
|
+
assert.equal(invocation.opencodeConfig?.model, 'antseed/gpt-oss-120b');
|
|
179
|
+
assert.ok(antseedProvider);
|
|
180
|
+
assert.equal(antseedProvider.options.baseURL, 'http://localhost:8124/v1');
|
|
181
|
+
assert.ok(antseedProvider.models['gpt-oss-120b']);
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
//# sourceMappingURL=wrapped-tools.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrapped-tools.test.js","sourceRoot":"","sources":["../../../src/cli/commands/wrapped-tools.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { registerAgentCommand } from './commands/agent.js';
|
|
|
10
10
|
import { registerDevCommand } from './commands/dev.js';
|
|
11
11
|
import { registerPaymentsCommand } from './commands/payments.js';
|
|
12
12
|
import { registerMetricsCommand } from './commands/metrics.js';
|
|
13
|
+
import { registerWrappedToolCommands } from './commands/wrapped-tools.js';
|
|
13
14
|
loadEnvFromFiles();
|
|
14
15
|
import pkg from '../../package.json' with { type: 'json' };
|
|
15
16
|
const version = pkg.version;
|
|
@@ -30,5 +31,6 @@ registerDevCommand(program);
|
|
|
30
31
|
registerAgentCommand(program);
|
|
31
32
|
registerPaymentsCommand(program);
|
|
32
33
|
registerMetricsCommand(program);
|
|
34
|
+
registerWrappedToolCommands(program);
|
|
33
35
|
program.parse(process.argv);
|
|
34
36
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE1E,gBAAgB,EAAE,CAAC;AAEnB,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,6BAA6B,CAAC;KAC1C,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,qBAAqB,EAAE,4EAA4E,CAAC;KAC3G,MAAM,CAAC,mBAAmB,EAAE,oFAAoF,CAAC;KACjH,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAE5D,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAErC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type AntseedNode, type PeerInfo } from '@antseed/node';
|
|
2
2
|
export { selectCandidatePeersForRouting, type CandidatePeerRouteSelection } from './routing.js';
|
|
3
|
-
export {
|
|
3
|
+
export { parsePeerPinnedService, rewritePeerPinnedServiceInBody } from './request-utils.js';
|
|
4
4
|
export interface BuyerProxyConfig {
|
|
5
5
|
port: number;
|
|
6
6
|
node: AntseedNode;
|
|
7
|
-
/** Data directory used to persist buyer.state.json (discovered peers, session
|
|
7
|
+
/** Data directory used to persist buyer.state.json (discovered peers, session peer pin). */
|
|
8
8
|
dataDir: string;
|
|
9
9
|
/** How often to refresh the peer list from DHT in the background (ms). Default: 300000 (5 min) */
|
|
10
10
|
backgroundRefreshIntervalMs?: number;
|
|
@@ -21,12 +21,6 @@ export interface BuyerProxyConfig {
|
|
|
21
21
|
* and allowed by the buyer's pricing policy. A 502 is returned if the peer cannot be reached.
|
|
22
22
|
*/
|
|
23
23
|
pinnedPeerId?: string;
|
|
24
|
-
/**
|
|
25
|
-
* Pin all requests to a specific service ID for this session.
|
|
26
|
-
* Overrides the service field in the request body before routing and forwarding.
|
|
27
|
-
* Can be updated at runtime via `antseed buyer connection set --service`.
|
|
28
|
-
*/
|
|
29
|
-
pinnedService?: string;
|
|
30
24
|
}
|
|
31
25
|
/**
|
|
32
26
|
* Parses a buyer.state.json blob into PeerInfo[], dropping entries with
|
|
@@ -51,7 +45,6 @@ export declare class BuyerProxy {
|
|
|
51
45
|
private readonly _stateFile;
|
|
52
46
|
private _stateFileWatching;
|
|
53
47
|
private _pinnedPeer;
|
|
54
|
-
private _pinnedService;
|
|
55
48
|
private _stateWatchDebounce;
|
|
56
49
|
private _stateWriteChain;
|
|
57
50
|
private _cachedPeers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAOd,MAAM,eAAe,CAAA;AA0CtB,OAAO,EAAE,8BAA8B,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAA;AAC/F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"buyer-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/buyer-proxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAOd,MAAM,eAAe,CAAA;AA0CtB,OAAO,EAAE,8BAA8B,EAAE,KAAK,2BAA2B,EAAE,MAAM,cAAc,CAAA;AAC/F,OAAO,EAAE,sBAAsB,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,4FAA4F;IAC5F,OAAO,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAuID;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,KAAK,GAAE,MAAmB,EAC1B,QAAQ,GAAE,MAA6B,GACtC,QAAQ,EAAE,CAqGZ;AAED;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,mBAAmB,CAA6C;IAExE,OAAO,CAAC,gBAAgB,CAAmC;IAE3D,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,qBAAqB,CAAI;IACjC,OAAO,CAAC,mBAAmB,CAAI;IAC/B,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,sBAAsB,CAAI;IAClC,OAAO,CAAC,gBAAgB,CAA8C;IAEtE;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAA2F;gBAEpG,MAAM,EAAE,gBAAgB;IA8B9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA6Bd,0BAA0B;IAuBlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,OAAO,CAAC,eAAe;YAqBT,uBAAuB;IAcrC,0FAA0F;IAC1F,OAAO,CAAC,eAAe;YAsBT,eAAe;IAe7B,OAAO,CAAC,+BAA+B;IAIvC,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,oBAAoB;IA4D5B,OAAO,CAAC,UAAU;IAYlB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IA+B1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;YASjB,yBAAyB;YASzB,gBAAgB;YA+BhB,SAAS;IA2BvB,OAAO,CAAC,+BAA+B;YAsBzB,mBAAmB;YA8HnB,cAAc;IA0S5B,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,6BAA6B;IA4BrC,OAAO,CAAC,YAAY;IASpB;;;;OAIG;YACW,eAAe;CA+T9B"}
|