@the-open-engine/zeroshot 6.28.0 → 6.29.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/README.md +3 -3
- package/cli/index.js +21 -223
- package/docker/zeroshot-cluster/Dockerfile +2 -3
- package/docker/zeroshot-oecp/Cargo.toml +12 -0
- package/docker/zeroshot-oecp/Dockerfile +65 -0
- package/docker/zeroshot-oecp/src/main.rs +32 -0
- package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/codex.js +1 -0
- package/lib/agent-cli-provider/adapters/codex.js.map +1 -1
- package/lib/cluster-worker/engine-adapter.js +11 -15
- package/lib/cluster-worker/engine-input.js +14 -0
- package/lib/cluster-worker/profiles.js +42 -1
- package/lib/start-cluster.js +3 -3
- package/lib/target/bounded-json.d.ts +6 -0
- package/lib/target/bounded-json.js +43 -0
- package/lib/target/device-flow.d.ts +5 -1
- package/lib/target/device-flow.js +6 -1
- package/lib/target/discovery.d.ts +1 -0
- package/lib/target/discovery.js +12 -35
- package/lib/target/hosted-run/client.d.ts +26 -0
- package/lib/target/hosted-run/client.js +158 -0
- package/lib/target/hosted-run/commands.d.ts +4 -0
- package/lib/target/hosted-run/commands.js +113 -0
- package/lib/target/hosted-run/contracts.d.ts +49 -0
- package/lib/target/hosted-run/contracts.js +3 -0
- package/lib/target/hosted-run/input.d.ts +5 -0
- package/lib/target/hosted-run/input.js +200 -0
- package/lib/target/hosted-run.d.ts +4 -0
- package/lib/target/hosted-run.js +12 -0
- package/lib/target/target-session.d.ts +1 -0
- package/lib/target/target-session.js +2 -1
- package/package.json +16 -3
- package/scripts/audit-production-dependencies.js +150 -0
- package/scripts/opcore-agent-gate.js +159 -0
- package/scripts/opcore-agent-tool-overlays.js +154 -0
- package/scripts/opcore-introduced-check.js +290 -0
- package/src/agent-cli-provider/adapters/codex.ts +1 -0
- package/src/isolation-manager.js +16 -1
- package/src/target/bounded-json.ts +48 -0
- package/src/target/device-flow.ts +14 -3
- package/src/target/discovery.ts +17 -35
- package/src/target/hosted-run/client.ts +198 -0
- package/src/target/hosted-run/commands.ts +140 -0
- package/src/target/hosted-run/contracts.ts +53 -0
- package/src/target/hosted-run/input.ts +199 -0
- package/src/target/hosted-run.ts +8 -0
- package/src/target/target-session.ts +5 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
[](https://www.npmjs.com/package/@the-open-engine/zeroshot)
|
|
16
16
|
[](https://github.com/the-open-engine/zeroshot/actions/workflows/ci.yml)
|
|
17
17
|
[](LICENSE)
|
|
18
|
-
[](#install)
|
|
19
19
|
[](#install)
|
|
20
20
|
[](https://github.com/the-open-engine/zeroshot)
|
|
21
21
|
[](#the-open-engine)
|
|
@@ -43,7 +43,7 @@ Zeroshot is an open-source, multi-agent orchestration engine for autonomous soft
|
|
|
43
43
|
npm install -g @the-open-engine/zeroshot
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Requires **Node ≥
|
|
46
|
+
Requires **Node ≥ 22** and at least one provider CLI (Claude Code, Codex, Gemini, or OpenCode). The package includes the pinned Opcore constraints CLI; repository hook activation remains explicit. Linux and macOS today; Windows is deferred.
|
|
47
47
|
|
|
48
48
|
<div align="center">
|
|
49
49
|
<img src="docs/assets/zeroshot-demo.gif" alt="Zeroshot resolving an issue through the executor-verifier loop" width="760">
|
|
@@ -207,7 +207,7 @@ Zeroshot is **Layer 01 · Verification** of [The Open Engine](https://theopeneng
|
|
|
207
207
|
| 02 | Constraints: **Opcore** | Sibling · alpha |
|
|
208
208
|
| 03-05 | Intent · Context · Runtime | In development |
|
|
209
209
|
|
|
210
|
-
Zeroshot runs the loop: an agent writes the change, and an **independent** verifier decides whether it holds: approve, or a reproducible failure. **Opcore** is the sibling layer, a deterministic, local, read-only **constraints** gate for coding agents
|
|
210
|
+
Zeroshot runs the loop: an agent writes the change, and an **independent** verifier decides whether it holds: approve, or a reproducible failure. **Opcore** is the sibling layer, a deterministic, local, read-only **constraints** gate for coding agents. Zeroshot packages Opcore `0.2.1` and uses introduced-change validation so existing repository debt never blocks an otherwise clean change. Verification asks _"does this meet the goal?"_; constraints ask _"is this within tolerance?"_
|
|
211
211
|
|
|
212
212
|
Each layer ships the same way: extracted from the platform we run, then opened. **Trust nothing. Verify everything.**
|
|
213
213
|
|
package/cli/index.js
CHANGED
|
@@ -2647,6 +2647,7 @@ Shell completion:
|
|
|
2647
2647
|
);
|
|
2648
2648
|
|
|
2649
2649
|
// Run command - CLUSTER with auto-detection
|
|
2650
|
+
|
|
2650
2651
|
program
|
|
2651
2652
|
.command('run <input>')
|
|
2652
2653
|
.description(
|
|
@@ -3959,6 +3960,11 @@ for (const providerName of VALID_PROVIDERS) {
|
|
|
3959
3960
|
// Settings management
|
|
3960
3961
|
const settingsCmd = program.command('settings').description('Manage zeroshot settings');
|
|
3961
3962
|
const INTERNAL_SETTINGS_KEYS = new Set(['lastUpdateCheckClaim', '_targets']);
|
|
3963
|
+
// Fail closed while hosted commands are unpublished. Keeping these names out of the
|
|
3964
|
+
// default `run` rewrite makes them unknown commands rather than local task input.
|
|
3965
|
+
// Do not add a registration import, environment gate, or preview path here; the only
|
|
3966
|
+
// hosted parser constructor lives in src/target/register-hosted-commands.ts.
|
|
3967
|
+
const UNREGISTERED_HOSTED_COMMAND_NAMES = new Set(['target', 'capsule']);
|
|
3962
3968
|
|
|
3963
3969
|
function visibleSettingKeys() {
|
|
3964
3970
|
return Object.keys(DEFAULT_SETTINGS).filter((key) => !INTERNAL_SETTINGS_KEYS.has(key));
|
|
@@ -4490,210 +4496,7 @@ settingsCmd.action(() => {
|
|
|
4490
4496
|
formatSettingsList(settings, true);
|
|
4491
4497
|
});
|
|
4492
4498
|
|
|
4493
|
-
//
|
|
4494
|
-
// Target modules are compiled during install/package preparation for the Node 18+ CLI.
|
|
4495
|
-
const importTarget = (mod) => import(`../lib/target/${mod}.js`);
|
|
4496
|
-
const targetCmd = program.command('target').description('Manage named remote targets');
|
|
4497
|
-
|
|
4498
|
-
targetCmd
|
|
4499
|
-
.command('add <name>')
|
|
4500
|
-
.description('Register a named remote target')
|
|
4501
|
-
.requiredOption('--url <url>', 'Service URL for the target')
|
|
4502
|
-
.action(async (name, options) => {
|
|
4503
|
-
try {
|
|
4504
|
-
const { addTarget } = await importTarget('target-registry');
|
|
4505
|
-
const settingsPort = {
|
|
4506
|
-
load: () => loadSettings(),
|
|
4507
|
-
mutate: (fn) => mutateSettings(fn),
|
|
4508
|
-
};
|
|
4509
|
-
const record = addTarget(name, options.url, settingsPort);
|
|
4510
|
-
console.log(chalk.green(`✓ Target "${name}" added (${record.url})`));
|
|
4511
|
-
} catch (error) {
|
|
4512
|
-
console.error(chalk.red(error.message));
|
|
4513
|
-
process.exit(1);
|
|
4514
|
-
}
|
|
4515
|
-
});
|
|
4516
|
-
|
|
4517
|
-
targetCmd
|
|
4518
|
-
.command('login <name>')
|
|
4519
|
-
.description('Authenticate with a remote target via device login')
|
|
4520
|
-
.action(async (name) => {
|
|
4521
|
-
try {
|
|
4522
|
-
const { getTarget } = await importTarget('target-registry');
|
|
4523
|
-
const { targetLogin } = await importTarget('target-session');
|
|
4524
|
-
const { KeyringCredentialStore } = await importTarget('credential-store');
|
|
4525
|
-
const { acquireTargetLock } = await importTarget('credential-lock');
|
|
4526
|
-
const { discoverTargetSessionEndpoints } = await importTarget('discovery');
|
|
4527
|
-
|
|
4528
|
-
const settingsPort = {
|
|
4529
|
-
load: () => loadSettings(),
|
|
4530
|
-
mutate: (fn) => mutateSettings(fn),
|
|
4531
|
-
};
|
|
4532
|
-
|
|
4533
|
-
const target = getTarget(name, settingsPort);
|
|
4534
|
-
if (!target) {
|
|
4535
|
-
console.error(chalk.red(`Target "${name}" not found.`));
|
|
4536
|
-
process.exit(1);
|
|
4537
|
-
}
|
|
4538
|
-
|
|
4539
|
-
const http = { fetch: (url, init) => fetch(url, init) };
|
|
4540
|
-
const discoveryEndpoints = await discoverTargetSessionEndpoints(target.url, http);
|
|
4541
|
-
|
|
4542
|
-
const credentialStore = await KeyringCredentialStore.create();
|
|
4543
|
-
const openPkg = await import('open');
|
|
4544
|
-
const browserOpen = openPkg.default || openPkg;
|
|
4545
|
-
|
|
4546
|
-
const result = await targetLogin(
|
|
4547
|
-
name,
|
|
4548
|
-
target,
|
|
4549
|
-
credentialStore,
|
|
4550
|
-
() => acquireTargetLock(target.id),
|
|
4551
|
-
settingsPort,
|
|
4552
|
-
{
|
|
4553
|
-
http,
|
|
4554
|
-
clock: { now: () => Date.now() },
|
|
4555
|
-
browserOpener: {
|
|
4556
|
-
open: async (url) => {
|
|
4557
|
-
await browserOpen(url);
|
|
4558
|
-
},
|
|
4559
|
-
},
|
|
4560
|
-
stderr: process.stderr,
|
|
4561
|
-
discoveryEndpoints,
|
|
4562
|
-
}
|
|
4563
|
-
);
|
|
4564
|
-
|
|
4565
|
-
console.log(
|
|
4566
|
-
chalk.green(`✓ Logged in to "${name}" (organization: ${result.organization.name})`)
|
|
4567
|
-
);
|
|
4568
|
-
} catch (error) {
|
|
4569
|
-
console.error(chalk.red(error.message));
|
|
4570
|
-
process.exit(1);
|
|
4571
|
-
}
|
|
4572
|
-
});
|
|
4573
|
-
|
|
4574
|
-
targetCmd
|
|
4575
|
-
.command('list')
|
|
4576
|
-
.description('List registered remote targets')
|
|
4577
|
-
.option('--json', 'Output as JSON')
|
|
4578
|
-
.action(async (options) => {
|
|
4579
|
-
try {
|
|
4580
|
-
const { listTargets } = await importTarget('target-registry');
|
|
4581
|
-
const settingsPort = {
|
|
4582
|
-
load: () => loadSettings(),
|
|
4583
|
-
mutate: (fn) => mutateSettings(fn),
|
|
4584
|
-
};
|
|
4585
|
-
|
|
4586
|
-
const targets = listTargets(settingsPort);
|
|
4587
|
-
|
|
4588
|
-
if (options.json) {
|
|
4589
|
-
const output = targets.map(({ name, record }) => ({
|
|
4590
|
-
name,
|
|
4591
|
-
id: record.id,
|
|
4592
|
-
url: record.url,
|
|
4593
|
-
organization: record.organization ?? null,
|
|
4594
|
-
loggedIn: false,
|
|
4595
|
-
createdAt: record.createdAt,
|
|
4596
|
-
}));
|
|
4597
|
-
|
|
4598
|
-
// Try to check keyring presence for each target
|
|
4599
|
-
try {
|
|
4600
|
-
const { KeyringCredentialStore } = await importTarget('credential-store');
|
|
4601
|
-
const { targetServiceKey, TARGET_ACCOUNT } = await importTarget('credential-store');
|
|
4602
|
-
const store = await KeyringCredentialStore.create();
|
|
4603
|
-
for (const item of output) {
|
|
4604
|
-
const matchingTarget = targets.find((t) => t.name === item.name);
|
|
4605
|
-
if (matchingTarget) {
|
|
4606
|
-
const cred = await store.get(
|
|
4607
|
-
targetServiceKey(matchingTarget.record.id),
|
|
4608
|
-
TARGET_ACCOUNT
|
|
4609
|
-
);
|
|
4610
|
-
item.loggedIn = cred !== null;
|
|
4611
|
-
}
|
|
4612
|
-
}
|
|
4613
|
-
} catch {
|
|
4614
|
-
// Keyring unavailable, all show as not logged in
|
|
4615
|
-
}
|
|
4616
|
-
|
|
4617
|
-
console.log(JSON.stringify(output, null, 2));
|
|
4618
|
-
return;
|
|
4619
|
-
}
|
|
4620
|
-
|
|
4621
|
-
if (targets.length === 0) {
|
|
4622
|
-
console.log(
|
|
4623
|
-
chalk.dim(
|
|
4624
|
-
'No targets registered. Use `zeroshot target add <name> --url <url>` to add one.'
|
|
4625
|
-
)
|
|
4626
|
-
);
|
|
4627
|
-
return;
|
|
4628
|
-
}
|
|
4629
|
-
|
|
4630
|
-
for (const { name, record } of targets) {
|
|
4631
|
-
const org = record.organization ? ` (org: ${record.organization.name})` : '';
|
|
4632
|
-
console.log(` ${chalk.bold(name)} ${record.url}${org}`);
|
|
4633
|
-
}
|
|
4634
|
-
} catch (error) {
|
|
4635
|
-
console.error(chalk.red(error.message));
|
|
4636
|
-
process.exit(1);
|
|
4637
|
-
}
|
|
4638
|
-
});
|
|
4639
|
-
|
|
4640
|
-
targetCmd
|
|
4641
|
-
.command('remove <name>')
|
|
4642
|
-
.description('Remove a named remote target')
|
|
4643
|
-
.option('--force', 'Remove even if remote revocation fails')
|
|
4644
|
-
.action(async (name, options) => {
|
|
4645
|
-
try {
|
|
4646
|
-
const { getTarget, removeTarget } = await importTarget('target-registry');
|
|
4647
|
-
const { revokeAndCleanup } = await importTarget('target-session');
|
|
4648
|
-
const { acquireTargetLock } = await importTarget('credential-lock');
|
|
4649
|
-
const { discoverTargetSessionEndpoints } = await importTarget('discovery');
|
|
4650
|
-
|
|
4651
|
-
const settingsPort = {
|
|
4652
|
-
load: () => loadSettings(),
|
|
4653
|
-
mutate: (fn) => mutateSettings(fn),
|
|
4654
|
-
};
|
|
4655
|
-
|
|
4656
|
-
const target = getTarget(name, settingsPort);
|
|
4657
|
-
if (!target) {
|
|
4658
|
-
console.error(chalk.red(`Target "${name}" not found.`));
|
|
4659
|
-
process.exit(1);
|
|
4660
|
-
}
|
|
4661
|
-
|
|
4662
|
-
// Try to revoke and cleanup keyring
|
|
4663
|
-
try {
|
|
4664
|
-
const { KeyringCredentialStore } = await importTarget('credential-store');
|
|
4665
|
-
const credentialStore = await KeyringCredentialStore.create();
|
|
4666
|
-
const http = { fetch: (url, init) => fetch(url, init) };
|
|
4667
|
-
const discoveryEndpoints = await discoverTargetSessionEndpoints(target.url, http);
|
|
4668
|
-
await revokeAndCleanup(
|
|
4669
|
-
target,
|
|
4670
|
-
credentialStore,
|
|
4671
|
-
() => acquireTargetLock(target.id),
|
|
4672
|
-
{
|
|
4673
|
-
http,
|
|
4674
|
-
discoveryEndpoints,
|
|
4675
|
-
},
|
|
4676
|
-
!!options.force
|
|
4677
|
-
);
|
|
4678
|
-
} catch (error) {
|
|
4679
|
-
if (!options.force) {
|
|
4680
|
-
console.error(chalk.red(error.message));
|
|
4681
|
-
process.exit(1);
|
|
4682
|
-
}
|
|
4683
|
-
// Force mode: continue with removal
|
|
4684
|
-
}
|
|
4685
|
-
|
|
4686
|
-
removeTarget(name, settingsPort);
|
|
4687
|
-
console.log(chalk.green(`✓ Target "${name}" removed`));
|
|
4688
|
-
} catch (error) {
|
|
4689
|
-
console.error(chalk.red(error.message));
|
|
4690
|
-
process.exit(1);
|
|
4691
|
-
}
|
|
4692
|
-
});
|
|
4693
|
-
|
|
4694
|
-
targetCmd.action(() => {
|
|
4695
|
-
targetCmd.help();
|
|
4696
|
-
});
|
|
4499
|
+
// Hosted target commands intentionally NOT registered here — see src/target/register-hosted-commands.ts
|
|
4697
4500
|
|
|
4698
4501
|
// Providers management
|
|
4699
4502
|
const providersCmd = program.command('providers').description('Manage AI providers');
|
|
@@ -6255,6 +6058,16 @@ function isStartupUpdateEligible(argv, options = {}) {
|
|
|
6255
6058
|
});
|
|
6256
6059
|
}
|
|
6257
6060
|
|
|
6061
|
+
function applyDefaultCommand(args) {
|
|
6062
|
+
const firstArg = args[0];
|
|
6063
|
+
if (!firstArg || firstArg.startsWith('-')) return;
|
|
6064
|
+
|
|
6065
|
+
const commandNames = program.commands.map((command) => command.name());
|
|
6066
|
+
if (commandNames.includes(firstArg) || UNREGISTERED_HOSTED_COMMAND_NAMES.has(firstArg)) return;
|
|
6067
|
+
|
|
6068
|
+
process.argv.splice(2, 0, 'run');
|
|
6069
|
+
}
|
|
6070
|
+
|
|
6258
6071
|
// Main entry point
|
|
6259
6072
|
async function main() {
|
|
6260
6073
|
printLegacyDistroNotice();
|
|
@@ -6280,31 +6093,16 @@ async function main() {
|
|
|
6280
6093
|
checkForUpdates({ argv: startupArgs, eligibilityChecked: true });
|
|
6281
6094
|
}
|
|
6282
6095
|
|
|
6283
|
-
|
|
6096
|
+
const args = startupArgs;
|
|
6284
6097
|
|
|
6285
6098
|
if (args.length === 0) {
|
|
6286
6099
|
program.outputHelp();
|
|
6287
6100
|
return;
|
|
6288
6101
|
}
|
|
6289
6102
|
|
|
6290
|
-
//
|
|
6291
|
-
//
|
|
6292
|
-
args
|
|
6293
|
-
if (args.length > 0) {
|
|
6294
|
-
const firstArg = args[0];
|
|
6295
|
-
|
|
6296
|
-
// Skip if it's a flag/option (starts with -)
|
|
6297
|
-
// Skip if it's --help or --version (these are handled by commander)
|
|
6298
|
-
if (!firstArg.startsWith('-')) {
|
|
6299
|
-
// Get all registered command names
|
|
6300
|
-
const commandNames = program.commands.map((cmd) => cmd.name());
|
|
6301
|
-
|
|
6302
|
-
// If first arg is not a known command, prepend 'run'
|
|
6303
|
-
if (!commandNames.includes(firstArg)) {
|
|
6304
|
-
process.argv.splice(2, 0, 'run');
|
|
6305
|
-
}
|
|
6306
|
-
}
|
|
6307
|
-
}
|
|
6103
|
+
// Preserve the default local run shorthand without treating hosted-only command
|
|
6104
|
+
// names as task input in the stable parser.
|
|
6105
|
+
applyDefaultCommand(args);
|
|
6308
6106
|
|
|
6309
6107
|
program.parse();
|
|
6310
6108
|
}
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
# Build: docker build -t vibe-cluster-base vibe/cluster/docker/vibe-cluster/
|
|
5
5
|
# Usage: zeroshot run <task> --docker
|
|
6
6
|
|
|
7
|
-
FROM node:
|
|
7
|
+
FROM node:22-slim
|
|
8
8
|
|
|
9
9
|
# Upgrade npm to fix Arborist isDescendantOf bug (npm 10.x crash on complex peer deps)
|
|
10
10
|
# See: https://github.com/npm/cli/issues/7682
|
|
11
|
-
# Pinned to npm@11
|
|
12
|
-
# now requires node >=22 and breaks the build with EBADENGINE.
|
|
11
|
+
# Pinned to npm@11 to keep the container toolchain reproducible with the supported Node 22 line.
|
|
13
12
|
RUN npm install -g npm@11
|
|
14
13
|
|
|
15
14
|
# Version pinning for infrastructure tools
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "zeroshot-oecp-server"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition.workspace = true
|
|
5
|
+
rust-version.workspace = true
|
|
6
|
+
license.workspace = true
|
|
7
|
+
repository.workspace = true
|
|
8
|
+
publish = false
|
|
9
|
+
|
|
10
|
+
[dependencies]
|
|
11
|
+
tokio.workspace = true
|
|
12
|
+
zeroshot-engine = { package = "zeroshot-rust", path = "../../zeroshot-rust" }
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1
|
|
2
|
+
|
|
3
|
+
# The server and the existing Node worker ship together because OECP is the
|
|
4
|
+
# in-capsule process boundary. Capsule allocation and termination remain owned
|
|
5
|
+
# by Zero Cloud's control plane and capsule agent.
|
|
6
|
+
FROM rust@sha256:14b9b5f47dcc6644d0f0c1b35a2c2c5d0124f67159aaee28a348627523459b55 AS rust-builder
|
|
7
|
+
# Security package revisions intentionally follow the pinned Alpine release repositories.
|
|
8
|
+
# hadolint ignore=DL3018
|
|
9
|
+
RUN apk add --no-cache musl-dev
|
|
10
|
+
WORKDIR /build
|
|
11
|
+
COPY Cargo.toml Cargo.lock rust-toolchain.toml ./
|
|
12
|
+
COPY crates ./crates
|
|
13
|
+
COPY zeroshot-rust ./zeroshot-rust
|
|
14
|
+
COPY docker/zeroshot-oecp ./docker/zeroshot-oecp
|
|
15
|
+
# musl does not expose renameat2 through libc, although the Linux syscall is
|
|
16
|
+
# available. Keep the portable source API on glibc and use the syscall binding
|
|
17
|
+
# only for this musl image build.
|
|
18
|
+
RUN sed -i 's/libc::renameat2(/libc::syscall(libc::SYS_renameat2,/' \
|
|
19
|
+
zeroshot-rust/src/workspace_lease/types.rs \
|
|
20
|
+
&& grep -Fq 'libc::syscall(libc::SYS_renameat2,' \
|
|
21
|
+
zeroshot-rust/src/workspace_lease/types.rs
|
|
22
|
+
RUN rustup component add --toolchain 1.97.0 rustfmt clippy \
|
|
23
|
+
&& cargo +1.97.0 build --locked --release -p zeroshot-oecp-server \
|
|
24
|
+
&& rustup default 1.97.0 \
|
|
25
|
+
&& rustup toolchain uninstall 1.96.0 1.96.1
|
|
26
|
+
|
|
27
|
+
FROM node@sha256:c2cc26d8f991c2db236ad51a61efee843c482372d6d22570787309d511694110 AS node-builder
|
|
28
|
+
ARG CODEX_VERSION=0.146.0
|
|
29
|
+
# Security package revisions intentionally follow the pinned Alpine release repositories.
|
|
30
|
+
# hadolint ignore=DL3018
|
|
31
|
+
RUN apk add --no-cache build-base python3
|
|
32
|
+
WORKDIR /opt/zeroshot
|
|
33
|
+
COPY package.json package-lock.json ./
|
|
34
|
+
RUN npm ci --omit=dev --ignore-scripts --no-audit --no-fund \
|
|
35
|
+
&& npm rebuild better-sqlite3 node-pty \
|
|
36
|
+
&& npm install --global --no-audit --no-fund "@openai/codex@${CODEX_VERSION}"
|
|
37
|
+
COPY . .
|
|
38
|
+
|
|
39
|
+
FROM node@sha256:c2cc26d8f991c2db236ad51a61efee843c482372d6d22570787309d511694110 AS runtime
|
|
40
|
+
ARG ZEROSHOT_MIN_DISK_GB=10
|
|
41
|
+
ENV ZEROSHOT_MIN_DISK_GB=${ZEROSHOT_MIN_DISK_GB}
|
|
42
|
+
# Security package revisions intentionally follow the pinned Alpine release repositories.
|
|
43
|
+
# hadolint ignore=DL3018
|
|
44
|
+
RUN apk add --no-cache bash build-base ca-certificates git github-cli openssl python3 tini \
|
|
45
|
+
&& install -d -m 1777 /tmp \
|
|
46
|
+
&& install -d -m 0750 -o node -g node /workspace
|
|
47
|
+
COPY --from=node-builder --chown=node:node /opt/zeroshot /opt/zeroshot
|
|
48
|
+
COPY --from=node-builder /usr/local/lib/node_modules/@openai /usr/local/lib/node_modules/@openai
|
|
49
|
+
COPY --from=rust-builder --chown=node:node /usr/local/cargo/bin /usr/local/cargo/bin
|
|
50
|
+
COPY --from=rust-builder --chown=node:node /usr/local/rustup /usr/local/rustup
|
|
51
|
+
COPY --from=rust-builder /build/target/release/zeroshot-oecp-server /usr/local/bin/zeroshot-oecp-server
|
|
52
|
+
RUN ln -s /opt/zeroshot/bin/zeroshot-cluster-worker.js /usr/local/bin/zeroshot-cluster-worker \
|
|
53
|
+
&& ln -s /opt/zeroshot/cli/index.js /usr/local/bin/zeroshot \
|
|
54
|
+
&& ln -s /usr/local/lib/node_modules/@openai/codex/bin/codex.js /usr/local/bin/codex \
|
|
55
|
+
&& for command in cargo cargo-clippy cargo-fmt clippy-driver rustc rustdoc rustfmt rustup; do \
|
|
56
|
+
ln -s "/usr/local/cargo/bin/${command}" "/usr/local/bin/${command}"; \
|
|
57
|
+
done
|
|
58
|
+
ENV RUSTUP_HOME=/usr/local/rustup
|
|
59
|
+
ENV PATH=/usr/local/cargo/bin:${PATH}
|
|
60
|
+
# The official Node image defines this stable application user.
|
|
61
|
+
# hadolint ignore=DL3066
|
|
62
|
+
USER node
|
|
63
|
+
WORKDIR /workspace
|
|
64
|
+
EXPOSE 8083 8084
|
|
65
|
+
ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/zeroshot-oecp-server"]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
use std::{error::Error, net::SocketAddr, sync::Arc};
|
|
2
|
+
|
|
3
|
+
use tokio::net::TcpListener;
|
|
4
|
+
use zeroshot_engine::hosted_oecp::{serve, HostedBackend, OECP_PORT};
|
|
5
|
+
|
|
6
|
+
#[tokio::main]
|
|
7
|
+
async fn main() -> Result<(), Box<dyn Error>> {
|
|
8
|
+
if std::env::args().nth(1).as_deref() == Some("--healthcheck") {
|
|
9
|
+
println!("zeroshot OECP server ready");
|
|
10
|
+
return Ok(());
|
|
11
|
+
}
|
|
12
|
+
let backend = Arc::new(HostedBackend::new());
|
|
13
|
+
let listener = TcpListener::bind(SocketAddr::from(([127, 0, 0, 1], OECP_PORT))).await?;
|
|
14
|
+
serve(listener, backend, shutdown_signal()).await?;
|
|
15
|
+
Ok(())
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
#[cfg(unix)]
|
|
19
|
+
async fn shutdown_signal() {
|
|
20
|
+
use tokio::signal::unix::{signal, SignalKind};
|
|
21
|
+
|
|
22
|
+
let mut terminate = signal(SignalKind::terminate()).expect("SIGTERM handler must install");
|
|
23
|
+
tokio::select! {
|
|
24
|
+
_ = tokio::signal::ctrl_c() => {}
|
|
25
|
+
_ = terminate.recv() => {}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
#[cfg(not(unix))]
|
|
30
|
+
async fn shutdown_signal() {
|
|
31
|
+
let _result = tokio::signal::ctrl_c().await;
|
|
32
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agent-cli-provider/adapters/codex.ts"],"names":[],"mappings":"AAGA,OAAO,EASL,KAAK,+BAA+B,EAGrC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agent-cli-provider/adapters/codex.ts"],"names":[],"mappings":"AAGA,OAAO,EASL,KAAK,+BAA+B,EAGrC,MAAM,UAAU,CAAC;AAoTlB,eAAO,MAAM,YAAY,EAAE,+BAoB1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agent-cli-provider/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agent-cli-provider/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const { cloneJson } = require('./object-utils');
|
|
4
|
+
const { inputFromRequest } = require('./engine-input');
|
|
4
5
|
|
|
5
6
|
const TERMINAL_TOPICS = new Set(['CLUSTER_COMPLETE', 'CLUSTER_FAILED']);
|
|
6
7
|
|
|
@@ -11,9 +12,14 @@ function messageKey(message) {
|
|
|
11
12
|
function terminalEventFromMessage(message) {
|
|
12
13
|
const data = message.content?.data || {};
|
|
13
14
|
if (message.topic === 'CLUSTER_COMPLETE') {
|
|
15
|
+
let prSummary = null;
|
|
16
|
+
if (typeof data.pr_url === 'string' && data.pr_url) {
|
|
17
|
+
const number = Number.isSafeInteger(data.pr_number) ? ` #${data.pr_number}` : '';
|
|
18
|
+
prSummary = `Pull request${number} created: ${data.pr_url}`;
|
|
19
|
+
}
|
|
14
20
|
return {
|
|
15
21
|
type: 'complete',
|
|
16
|
-
summary: data.reason || message.content?.text,
|
|
22
|
+
summary: prSummary || data.reason || message.content?.text,
|
|
17
23
|
...(Object.prototype.hasOwnProperty.call(data, 'result') ? { result: data.result } : {}),
|
|
18
24
|
...(Object.prototype.hasOwnProperty.call(data, 'artifacts')
|
|
19
25
|
? { artifacts: data.artifacts }
|
|
@@ -28,17 +34,6 @@ function terminalEventFromMessage(message) {
|
|
|
28
34
|
};
|
|
29
35
|
}
|
|
30
36
|
|
|
31
|
-
function inputFromRequest(request, artifactManifest) {
|
|
32
|
-
if (request.source === 'issue') return { issue: request.issue };
|
|
33
|
-
if (request.source === 'prompt') return { text: request.prompt };
|
|
34
|
-
return {
|
|
35
|
-
text:
|
|
36
|
-
'Execute the task described by this registry-staged, byte-free artifact manifest. ' +
|
|
37
|
-
'Do not request interactive input.\n' +
|
|
38
|
-
JSON.stringify(artifactManifest),
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
37
|
function resolveOrchestrator(options) {
|
|
43
38
|
if (options.orchestrator) return options.orchestrator;
|
|
44
39
|
const Orchestrator = options.Orchestrator || require('../../src/orchestrator');
|
|
@@ -238,16 +233,16 @@ class CurrentEngineAdapter {
|
|
|
238
233
|
this.stopPromise ||= this.stopResource();
|
|
239
234
|
return this.stopPromise;
|
|
240
235
|
}
|
|
236
|
+
|
|
241
237
|
async waitForAllocatedCluster() {
|
|
242
238
|
let cluster = this.orchestrator.getCluster(this.resource.clusterId);
|
|
243
239
|
while (!cluster && !this.startSettled && !this.closed) {
|
|
244
|
-
await new Promise((resolve) =>
|
|
245
|
-
setTimeout(resolve, 10);
|
|
246
|
-
});
|
|
240
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
247
241
|
cluster = this.orchestrator.getCluster(this.resource.clusterId);
|
|
248
242
|
}
|
|
249
243
|
return cluster;
|
|
250
244
|
}
|
|
245
|
+
|
|
251
246
|
stopAllocatedCluster(cluster = this.orchestrator.getCluster(this.resource.clusterId)) {
|
|
252
247
|
if (!cluster) return Promise.resolve(false);
|
|
253
248
|
if (cluster.state === 'stopped' || cluster.state === 'killed') return Promise.resolve(true);
|
|
@@ -256,6 +251,7 @@ class CurrentEngineAdapter {
|
|
|
256
251
|
.then(() => true);
|
|
257
252
|
return this.allocatedStopPromise;
|
|
258
253
|
}
|
|
254
|
+
|
|
259
255
|
async stopResource() {
|
|
260
256
|
this.cleanupPromise ||= this.waitForAllocatedCluster()
|
|
261
257
|
.then((cluster) => this.stopAllocatedCluster(cluster))
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function inputFromRequest(request, artifactManifest) {
|
|
4
|
+
if (request.source === 'issue') return { issue: request.issue };
|
|
5
|
+
if (request.source === 'prompt') return { text: request.prompt };
|
|
6
|
+
return {
|
|
7
|
+
text:
|
|
8
|
+
'Execute the task described by this registry-staged, byte-free artifact manifest. ' +
|
|
9
|
+
'Do not request interactive input.\n' +
|
|
10
|
+
JSON.stringify(artifactManifest),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
module.exports = { inputFromRequest };
|
|
@@ -24,6 +24,44 @@ const DEFAULT_PROVIDER_PROFILES = Object.freeze({
|
|
|
24
24
|
}),
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
+
const HOSTED_CODEX_OPENROUTER_PROFILE = 'provider.codex-openrouter@1';
|
|
28
|
+
const HOSTED_CODEX_OPENROUTER_PR_PROFILE = 'provider.codex-openrouter-pr@1';
|
|
29
|
+
const DEFAULT_HOSTED_MODEL = 'openai/gpt-5.4';
|
|
30
|
+
|
|
31
|
+
function providerProfilesFromEnvironment(environment = process.env) {
|
|
32
|
+
if (environment.ZEROSHOT_HOSTED_CODEX_OPENROUTER !== '1') {
|
|
33
|
+
return DEFAULT_PROVIDER_PROFILES;
|
|
34
|
+
}
|
|
35
|
+
const model = environment.ZEROSHOT_HOSTED_MODEL || DEFAULT_HOSTED_MODEL;
|
|
36
|
+
const levelOverrides = Object.freeze({
|
|
37
|
+
level1: Object.freeze({ model, reasoningEffort: 'medium' }),
|
|
38
|
+
level2: Object.freeze({ model, reasoningEffort: 'high' }),
|
|
39
|
+
level3: Object.freeze({ model, reasoningEffort: 'xhigh' }),
|
|
40
|
+
});
|
|
41
|
+
const hostedSettings = {
|
|
42
|
+
templateParams: { task_type: 'TASK' },
|
|
43
|
+
providerSettings: {
|
|
44
|
+
codex: {
|
|
45
|
+
defaultLevel: 'level2',
|
|
46
|
+
levelOverrides,
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
return deepFreeze({
|
|
51
|
+
...DEFAULT_PROVIDER_PROFILES,
|
|
52
|
+
[HOSTED_CODEX_OPENROUTER_PROFILE]: {
|
|
53
|
+
configName: 'base-templates/single-worker',
|
|
54
|
+
providerOverride: 'codex',
|
|
55
|
+
settings: hostedSettings,
|
|
56
|
+
},
|
|
57
|
+
[HOSTED_CODEX_OPENROUTER_PR_PROFILE]: {
|
|
58
|
+
configName: 'base-templates/worker-validator',
|
|
59
|
+
providerOverride: 'codex',
|
|
60
|
+
settings: hostedSettings,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
27
65
|
function own(map, key) {
|
|
28
66
|
return Object.prototype.hasOwnProperty.call(map, key) ? map[key] : null;
|
|
29
67
|
}
|
|
@@ -38,7 +76,7 @@ function validateBounds(bounds) {
|
|
|
38
76
|
|
|
39
77
|
function createDeploymentProfileRegistry(options = {}) {
|
|
40
78
|
const isolationProfiles = options.isolationProfiles || DEFAULT_ISOLATION_PROFILES;
|
|
41
|
-
const providerProfiles = options.providerProfiles ||
|
|
79
|
+
const providerProfiles = options.providerProfiles || providerProfilesFromEnvironment();
|
|
42
80
|
const defaultBounds = { ...DEFAULT_BOUNDS, ...(options.bounds || {}) };
|
|
43
81
|
validateBounds(defaultBounds);
|
|
44
82
|
const bounds = deepFreeze(defaultBounds);
|
|
@@ -77,5 +115,8 @@ module.exports = {
|
|
|
77
115
|
DEFAULT_BOUNDS,
|
|
78
116
|
DEFAULT_ISOLATION_PROFILES,
|
|
79
117
|
DEFAULT_PROVIDER_PROFILES,
|
|
118
|
+
HOSTED_CODEX_OPENROUTER_PROFILE,
|
|
119
|
+
HOSTED_CODEX_OPENROUTER_PR_PROFILE,
|
|
80
120
|
createDeploymentProfileRegistry,
|
|
121
|
+
providerProfilesFromEnvironment,
|
|
81
122
|
};
|
package/lib/start-cluster.js
CHANGED
|
@@ -176,17 +176,17 @@ function applyProviderOverrideToConfig(config, providerOverride, settings) {
|
|
|
176
176
|
console.log(chalk.dim(`Provider override: ${providerOverride} (all agents)`));
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
function resolveParameterizedConfigFile(config) {
|
|
179
|
+
function resolveParameterizedConfigFile(config, templateParams = {}) {
|
|
180
180
|
if (!config?.params || Object.keys(config.params).length === 0) {
|
|
181
181
|
return config;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
const resolver = new TemplateResolver(path.join(PACKAGE_ROOT, 'cluster-templates'));
|
|
185
|
-
return resolver.resolveTemplate(config,
|
|
185
|
+
return resolver.resolveTemplate(config, templateParams);
|
|
186
186
|
}
|
|
187
187
|
|
|
188
188
|
function prepareClusterConfig(config, settings = {}, providerOverride) {
|
|
189
|
-
const prepared = resolveParameterizedConfigFile(config);
|
|
189
|
+
const prepared = resolveParameterizedConfigFile(config, settings.templateParams || {});
|
|
190
190
|
ensureConfigProviderDefaults(prepared, settings);
|
|
191
191
|
if (providerOverride) {
|
|
192
192
|
applyProviderOverrideToConfig(prepared, providerOverride, settings);
|