@the-open-engine/zeroshot 6.27.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.
Files changed (59) hide show
  1. package/README.md +3 -3
  2. package/cli/index.js +28 -21
  3. package/docker/zeroshot-cluster/Dockerfile +2 -3
  4. package/docker/zeroshot-oecp/Cargo.toml +12 -0
  5. package/docker/zeroshot-oecp/Dockerfile +65 -0
  6. package/docker/zeroshot-oecp/src/main.rs +32 -0
  7. package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -1
  8. package/lib/agent-cli-provider/adapters/codex.js +1 -0
  9. package/lib/agent-cli-provider/adapters/codex.js.map +1 -1
  10. package/lib/cluster-worker/engine-adapter.js +11 -15
  11. package/lib/cluster-worker/engine-input.js +14 -0
  12. package/lib/cluster-worker/profiles.js +42 -1
  13. package/lib/start-cluster.js +3 -3
  14. package/lib/target/bounded-json.d.ts +6 -0
  15. package/lib/target/bounded-json.js +43 -0
  16. package/lib/target/credential-lock.d.ts +1 -0
  17. package/lib/target/credential-lock.js +38 -0
  18. package/lib/target/credential-store.d.ts +27 -0
  19. package/lib/target/credential-store.js +113 -0
  20. package/lib/target/device-flow.d.ts +42 -0
  21. package/lib/target/device-flow.js +109 -0
  22. package/lib/target/discovery.d.ts +12 -0
  23. package/lib/target/discovery.js +97 -0
  24. package/lib/target/hosted-run/client.d.ts +26 -0
  25. package/lib/target/hosted-run/client.js +158 -0
  26. package/lib/target/hosted-run/commands.d.ts +4 -0
  27. package/lib/target/hosted-run/commands.js +113 -0
  28. package/lib/target/hosted-run/contracts.d.ts +49 -0
  29. package/lib/target/hosted-run/contracts.js +3 -0
  30. package/lib/target/hosted-run/input.d.ts +5 -0
  31. package/lib/target/hosted-run/input.js +200 -0
  32. package/lib/target/hosted-run.d.ts +4 -0
  33. package/lib/target/hosted-run.js +12 -0
  34. package/lib/target/index.d.ts +6 -0
  35. package/lib/target/index.js +38 -0
  36. package/lib/target/target-registry.d.ts +45 -0
  37. package/lib/target/target-registry.js +132 -0
  38. package/lib/target/target-session.d.ts +40 -0
  39. package/lib/target/target-session.js +163 -0
  40. package/package.json +25 -7
  41. package/scripts/audit-production-dependencies.js +150 -0
  42. package/scripts/opcore-agent-gate.js +159 -0
  43. package/scripts/opcore-agent-tool-overlays.js +154 -0
  44. package/scripts/opcore-introduced-check.js +290 -0
  45. package/src/agent-cli-provider/adapters/codex.ts +1 -0
  46. package/src/isolation-manager.js +16 -1
  47. package/src/target/bounded-json.ts +48 -0
  48. package/src/target/credential-lock.ts +35 -0
  49. package/src/target/credential-store.ts +107 -0
  50. package/src/target/device-flow.ts +168 -0
  51. package/src/target/discovery.ts +131 -0
  52. package/src/target/hosted-run/client.ts +198 -0
  53. package/src/target/hosted-run/commands.ts +140 -0
  54. package/src/target/hosted-run/contracts.ts +53 -0
  55. package/src/target/hosted-run/input.ts +199 -0
  56. package/src/target/hosted-run.ts +8 -0
  57. package/src/target/index.ts +55 -0
  58. package/src/target/target-registry.ts +174 -0
  59. package/src/target/target-session.ts +253 -0
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  [![npm](https://img.shields.io/npm/v/@the-open-engine/zeroshot?style=flat&labelColor=171411&color=171411)](https://www.npmjs.com/package/@the-open-engine/zeroshot)
16
16
  [![CI](https://img.shields.io/github/actions/workflow/status/the-open-engine/zeroshot/ci.yml?style=flat&labelColor=171411&label=CI)](https://github.com/the-open-engine/zeroshot/actions/workflows/ci.yml)
17
17
  [![License: MIT](https://img.shields.io/badge/license-MIT-171411?style=flat)](LICENSE)
18
- [![node](https://img.shields.io/badge/node-%E2%89%A5%2018-171411?style=flat)](#install)
18
+ [![node](https://img.shields.io/badge/node-%E2%89%A5%2022-171411?style=flat)](#install)
19
19
  [![platforms](https://img.shields.io/badge/platforms-linux%20%C2%B7%20macos-171411?style=flat)](#install)
20
20
  [![stars](https://img.shields.io/github/stars/the-open-engine/zeroshot?style=flat&labelColor=171411&color=171411)](https://github.com/the-open-engine/zeroshot)
21
21
  [![Layer 01 · The Open Engine](https://img.shields.io/badge/Layer_01-The_Open_Engine-C2240C?style=flat&labelColor=171411)](#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 ≥ 18** and at least one provider CLI (Claude Code, Codex, Gemini, or OpenCode). Linux and macOS today; Windows is deferred.
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 (currently private alpha `0.1.0-alpha.0`, built in the open, not yet published). Verification asks _"does this meet the goal?"_; constraints ask _"is this within tolerance?"_
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(
@@ -3958,7 +3959,12 @@ for (const providerName of VALID_PROVIDERS) {
3958
3959
 
3959
3960
  // Settings management
3960
3961
  const settingsCmd = program.command('settings').description('Manage zeroshot settings');
3961
- const INTERNAL_SETTINGS_KEYS = new Set(['lastUpdateCheckClaim']);
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));
@@ -4339,8 +4345,12 @@ function parseSettingValue(value) {
4339
4345
 
4340
4346
  function resetGlobalSettings() {
4341
4347
  mutateSettings((settings) => {
4348
+ const preserved = {};
4349
+ for (const key of INTERNAL_SETTINGS_KEYS) {
4350
+ if (key in settings) preserved[key] = settings[key];
4351
+ }
4342
4352
  for (const key of Object.keys(settings)) delete settings[key];
4343
- Object.assign(settings, JSON.parse(JSON.stringify({ ...DEFAULT_SETTINGS })));
4353
+ Object.assign(settings, JSON.parse(JSON.stringify({ ...DEFAULT_SETTINGS })), preserved);
4344
4354
  });
4345
4355
  }
4346
4356
 
@@ -4486,6 +4496,8 @@ settingsCmd.action(() => {
4486
4496
  formatSettingsList(settings, true);
4487
4497
  });
4488
4498
 
4499
+ // Hosted target commands intentionally NOT registered here — see src/target/register-hosted-commands.ts
4500
+
4489
4501
  // Providers management
4490
4502
  const providersCmd = program.command('providers').description('Manage AI providers');
4491
4503
  providersCmd.action(async () => {
@@ -6046,6 +6058,16 @@ function isStartupUpdateEligible(argv, options = {}) {
6046
6058
  });
6047
6059
  }
6048
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
+
6049
6071
  // Main entry point
6050
6072
  async function main() {
6051
6073
  printLegacyDistroNotice();
@@ -6071,31 +6093,16 @@ async function main() {
6071
6093
  checkForUpdates({ argv: startupArgs, eligibilityChecked: true });
6072
6094
  }
6073
6095
 
6074
- let args = startupArgs;
6096
+ const args = startupArgs;
6075
6097
 
6076
6098
  if (args.length === 0) {
6077
6099
  program.outputHelp();
6078
6100
  return;
6079
6101
  }
6080
6102
 
6081
- // Default command handling: if first arg doesn't match a known command, treat it as 'run'
6082
- // This allows `zeroshot "task"` to work the same as `zeroshot run "task"`
6083
- args = process.argv.slice(2);
6084
- if (args.length > 0) {
6085
- const firstArg = args[0];
6086
-
6087
- // Skip if it's a flag/option (starts with -)
6088
- // Skip if it's --help or --version (these are handled by commander)
6089
- if (!firstArg.startsWith('-')) {
6090
- // Get all registered command names
6091
- const commandNames = program.commands.map((cmd) => cmd.name());
6092
-
6093
- // If first arg is not a known command, prepend 'run'
6094
- if (!commandNames.includes(firstArg)) {
6095
- process.argv.splice(2, 0, 'run');
6096
- }
6097
- }
6098
- }
6103
+ // Preserve the default local run shorthand without treating hosted-only command
6104
+ // names as task input in the stable parser.
6105
+ applyDefaultCommand(args);
6099
6106
 
6100
6107
  program.parse();
6101
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:20-slim
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 (the latest line that still supports the node:20-slim base); npm@latest (12.x)
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;AAmTlB,eAAO,MAAM,YAAY,EAAE,+BAoB1B,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"}
@@ -8,6 +8,7 @@ const common_1 = require("./common");
8
8
  const codex_parser_1 = require("./codex-parser");
9
9
  const MODEL_CATALOG = {
10
10
  'gpt-5.4': { rank: 2 },
11
+ 'openai/gpt-5.4': { rank: 2 },
11
12
  'gpt-5.5': { rank: 3 },
12
13
  'gpt-5.6': { rank: 3 },
13
14
  'gpt-5.6-sol': { rank: 3 },
@@ -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 || DEFAULT_PROVIDER_PROFILES;
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
  };
@@ -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);
@@ -0,0 +1,6 @@
1
+ interface BoundedJsonErrors {
2
+ readonly tooLarge: () => Error;
3
+ readonly invalid: () => Error;
4
+ }
5
+ export declare function readBoundedJson(response: Response, maxBytes: number, errors: BoundedJsonErrors): Promise<unknown>;
6
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readBoundedJson = readBoundedJson;
4
+ async function readBoundedJson(response, maxBytes, errors) {
5
+ const declared = response.headers.get('content-length');
6
+ if (declared !== null && Number(declared) > maxBytes)
7
+ throw errors.tooLarge();
8
+ const reader = response.body?.getReader();
9
+ if (!reader) {
10
+ const bytes = new Uint8Array(await response.arrayBuffer());
11
+ if (bytes.byteLength > maxBytes)
12
+ throw errors.tooLarge();
13
+ return parseJson(bytes, errors);
14
+ }
15
+ const chunks = [];
16
+ let total = 0;
17
+ for (;;) {
18
+ const { done, value } = await reader.read();
19
+ if (done)
20
+ break;
21
+ total += value.byteLength;
22
+ if (total > maxBytes) {
23
+ await reader.cancel();
24
+ throw errors.tooLarge();
25
+ }
26
+ chunks.push(value);
27
+ }
28
+ const bytes = new Uint8Array(total);
29
+ let offset = 0;
30
+ for (const chunk of chunks) {
31
+ bytes.set(chunk, offset);
32
+ offset += chunk.byteLength;
33
+ }
34
+ return parseJson(bytes, errors);
35
+ }
36
+ function parseJson(bytes, errors) {
37
+ try {
38
+ return JSON.parse(new TextDecoder().decode(bytes));
39
+ }
40
+ catch {
41
+ throw errors.invalid();
42
+ }
43
+ }
@@ -0,0 +1 @@
1
+ export declare function acquireTargetLock(targetId: string): Promise<() => Promise<void>>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.acquireTargetLock = acquireTargetLock;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ // @ts-expect-error no declaration file for proper-lockfile
11
+ const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
12
+ const LOCK_STALE_MS = 10_000;
13
+ const LOCK_RETRIES = 100;
14
+ const LOCK_RETRY_MIN_TIMEOUT_MS = 50;
15
+ const LOCK_RETRY_MAX_TIMEOUT_MS = 5_000;
16
+ async function acquireTargetLock(targetId) {
17
+ const lockDir = node_path_1.default.join(node_os_1.default.homedir(), '.zeroshot');
18
+ await node_fs_1.promises.mkdir(lockDir, { recursive: true });
19
+ const lockTarget = node_path_1.default.join(lockDir, `target-${targetId}.lock`);
20
+ try {
21
+ await node_fs_1.promises.writeFile(lockTarget, '', { flag: 'wx' });
22
+ }
23
+ catch (err) {
24
+ if (err.code !== 'EEXIST')
25
+ throw err;
26
+ }
27
+ const release = await proper_lockfile_1.default.lock(lockTarget, {
28
+ stale: LOCK_STALE_MS,
29
+ retries: {
30
+ retries: LOCK_RETRIES,
31
+ minTimeout: LOCK_RETRY_MIN_TIMEOUT_MS,
32
+ maxTimeout: LOCK_RETRY_MAX_TIMEOUT_MS,
33
+ },
34
+ });
35
+ return async () => {
36
+ await release();
37
+ };
38
+ }
@@ -0,0 +1,27 @@
1
+ export declare class CredentialStoreUnavailableError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ export interface TargetCredentialStore {
5
+ get(service: string, account: string): Promise<string | null>;
6
+ set(service: string, account: string, token: string): Promise<void>;
7
+ delete(service: string, account: string): Promise<void>;
8
+ }
9
+ export declare function targetServiceKey(targetId: string): string;
10
+ export declare const TARGET_ACCOUNT = "refresh-token";
11
+ export declare class KeyringCredentialStore implements TargetCredentialStore {
12
+ private readonly Entry;
13
+ private constructor();
14
+ static create(): Promise<KeyringCredentialStore>;
15
+ get(service: string, account: string): Promise<string | null>;
16
+ set(service: string, account: string, token: string): Promise<void>;
17
+ delete(service: string, account: string): Promise<void>;
18
+ }
19
+ export declare class FakeCredentialStore implements TargetCredentialStore {
20
+ private readonly store;
21
+ private key;
22
+ get(service: string, account: string): Promise<string | null>;
23
+ set(service: string, account: string, token: string): Promise<void>;
24
+ delete(service: string, account: string): Promise<void>;
25
+ has(service: string, account: string): boolean;
26
+ clear(): void;
27
+ }