@the-open-engine/zeroshot 6.30.2 → 6.31.1
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/cli/index.js +1 -2
- package/lib/agent-cli-provider/adapters/acp.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/acp.js +7 -11
- package/lib/agent-cli-provider/adapters/acp.js.map +1 -1
- package/lib/agent-cli-provider/adapters/omp-policy.d.ts +4 -0
- package/lib/agent-cli-provider/adapters/omp-policy.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/omp-policy.js +47 -0
- package/lib/agent-cli-provider/adapters/omp-policy.js.map +1 -0
- package/lib/agent-cli-provider/adapters/omp.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/omp.js +8 -158
- package/lib/agent-cli-provider/adapters/omp.js.map +1 -1
- package/lib/agent-cli-provider/adapters/pi.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/pi.js +12 -124
- package/lib/agent-cli-provider/adapters/pi.js.map +1 -1
- package/lib/agent-cli-provider/assistant-stream.d.ts +27 -0
- package/lib/agent-cli-provider/assistant-stream.d.ts.map +1 -0
- package/lib/agent-cli-provider/assistant-stream.js +119 -0
- package/lib/agent-cli-provider/assistant-stream.js.map +1 -0
- package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-actions.js +42 -1
- package/lib/agent-cli-provider/contract-actions.js.map +1 -1
- package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-invoke.js +68 -38
- package/lib/agent-cli-provider/contract-invoke.js.map +1 -1
- package/lib/agent-cli-provider/contract-support.d.ts +5 -6
- package/lib/agent-cli-provider/contract-support.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-support.js +99 -6
- package/lib/agent-cli-provider/contract-support.js.map +1 -1
- package/lib/agent-cli-provider/index.d.ts +8 -6
- package/lib/agent-cli-provider/index.d.ts.map +1 -1
- package/lib/agent-cli-provider/index.js +34 -10
- package/lib/agent-cli-provider/index.js.map +1 -1
- package/lib/agent-cli-provider/omp/auth-policy.d.ts +31 -0
- package/lib/agent-cli-provider/omp/auth-policy.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/auth-policy.js +98 -0
- package/lib/agent-cli-provider/omp/auth-policy.js.map +1 -0
- package/lib/agent-cli-provider/{omp-release.d.ts → omp/release.d.ts} +1 -1
- package/lib/agent-cli-provider/omp/release.d.ts.map +1 -0
- package/lib/agent-cli-provider/{omp-release.js → omp/release.js} +1 -1
- package/lib/agent-cli-provider/omp/release.js.map +1 -0
- package/lib/agent-cli-provider/{omp-rpc-bounds.d.ts → omp/rpc-bounds.d.ts} +1 -1
- package/lib/agent-cli-provider/omp/rpc-bounds.d.ts.map +1 -0
- package/lib/agent-cli-provider/{omp-rpc-bounds.js → omp/rpc-bounds.js} +1 -1
- package/lib/agent-cli-provider/omp/rpc-bounds.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-channel.d.ts +19 -0
- package/lib/agent-cli-provider/omp/rpc-driver-channel.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-channel.js +109 -0
- package/lib/agent-cli-provider/omp/rpc-driver-channel.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-dispatch.d.ts +27 -0
- package/lib/agent-cli-provider/omp/rpc-driver-dispatch.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-dispatch.js +135 -0
- package/lib/agent-cli-provider/omp/rpc-driver-dispatch.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-runner.d.ts +3 -0
- package/lib/agent-cli-provider/omp/rpc-driver-runner.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-runner.js +205 -0
- package/lib/agent-cli-provider/omp/rpc-driver-runner.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-state.d.ts +80 -0
- package/lib/agent-cli-provider/omp/rpc-driver-state.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver-state.js +86 -0
- package/lib/agent-cli-provider/omp/rpc-driver-state.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver.d.ts +3 -0
- package/lib/agent-cli-provider/omp/rpc-driver.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-driver.js +6 -0
- package/lib/agent-cli-provider/omp/rpc-driver.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-event-lines.d.ts +8 -0
- package/lib/agent-cli-provider/omp/rpc-event-lines.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-event-lines.js +59 -0
- package/lib/agent-cli-provider/omp/rpc-event-lines.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-events.d.ts +16 -0
- package/lib/agent-cli-provider/omp/rpc-events.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-events.js +115 -0
- package/lib/agent-cli-provider/omp/rpc-events.js.map +1 -0
- package/lib/agent-cli-provider/{omp-rpc-protocol.d.ts → omp/rpc-protocol-contract.d.ts} +1 -13
- package/lib/agent-cli-provider/omp/rpc-protocol-contract.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-protocol-contract.js +54 -0
- package/lib/agent-cli-provider/omp/rpc-protocol-contract.js.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-protocol.d.ts +15 -0
- package/lib/agent-cli-provider/omp/rpc-protocol.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/rpc-protocol.js +208 -0
- package/lib/agent-cli-provider/omp/rpc-protocol.js.map +1 -0
- package/lib/agent-cli-provider/{omp-rpc-session.d.ts → omp/rpc-session.d.ts} +1 -1
- package/lib/agent-cli-provider/omp/rpc-session.d.ts.map +1 -0
- package/lib/agent-cli-provider/{omp-rpc-session.js → omp/rpc-session.js} +1 -1
- package/lib/agent-cli-provider/omp/rpc-session.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-contract.d.ts +34 -0
- package/lib/agent-cli-provider/omp/sdk-contract.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-contract.js +81 -0
- package/lib/agent-cli-provider/omp/sdk-contract.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-credentials.d.ts +6 -0
- package/lib/agent-cli-provider/omp/sdk-process-credentials.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-credentials.js +44 -0
- package/lib/agent-cli-provider/omp/sdk-process-credentials.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-error.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-process-error.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-error.js +13 -0
- package/lib/agent-cli-provider/omp/sdk-process-error.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-io.d.ts +18 -0
- package/lib/agent-cli-provider/omp/sdk-process-io.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-io.js +80 -0
- package/lib/agent-cli-provider/omp/sdk-process-io.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-private-runtime.d.ts +51 -0
- package/lib/agent-cli-provider/omp/sdk-process-private-runtime.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-private-runtime.js +154 -0
- package/lib/agent-cli-provider/omp/sdk-process-private-runtime.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-result.d.ts +26 -0
- package/lib/agent-cli-provider/omp/sdk-process-result.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-result.js +117 -0
- package/lib/agent-cli-provider/omp/sdk-process-result.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-runner.d.ts +7 -0
- package/lib/agent-cli-provider/omp/sdk-process-runner.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-process-runner.js +204 -0
- package/lib/agent-cli-provider/omp/sdk-process-runner.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-collector.d.ts +3 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-collector.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-collector.js +145 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-collector.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-frame.d.ts +4 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-frame.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-frame.js +183 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-frame.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-request.d.ts +8 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-request.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-request.js +170 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-request.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-result.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-result.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-result.js +74 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-result.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-types.d.ts +94 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-types.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-types.js +54 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-types.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-value.d.ts +18 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-value.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-value.js +229 -0
- package/lib/agent-cli-provider/omp/sdk-protocol-value.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol.d.ts +7 -0
- package/lib/agent-cli-provider/omp/sdk-protocol.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-protocol.js +28 -0
- package/lib/agent-cli-provider/omp/sdk-protocol.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-runtime.d.ts +29 -0
- package/lib/agent-cli-provider/omp/sdk-runtime.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-runtime.js +110 -0
- package/lib/agent-cli-provider/omp/sdk-runtime.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-auth.d.ts +3 -0
- package/lib/agent-cli-provider/omp/sdk-settings-auth.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-auth.js +86 -0
- package/lib/agent-cli-provider/omp/sdk-settings-auth.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-constants.d.ts +26 -0
- package/lib/agent-cli-provider/omp/sdk-settings-constants.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-constants.js +148 -0
- package/lib/agent-cli-provider/omp/sdk-settings-constants.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model-fields.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model-fields.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model-fields.js +198 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model-fields.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model.d.ts +4 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model.js +163 -0
- package/lib/agent-cli-provider/omp/sdk-settings-model.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-normalize.d.ts +18 -0
- package/lib/agent-cli-provider/omp/sdk-settings-normalize.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-normalize.js +148 -0
- package/lib/agent-cli-provider/omp/sdk-settings-normalize.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-selector.d.ts +3 -0
- package/lib/agent-cli-provider/omp/sdk-settings-selector.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-selector.js +22 -0
- package/lib/agent-cli-provider/omp/sdk-settings-selector.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-types.d.ts +68 -0
- package/lib/agent-cli-provider/omp/sdk-settings-types.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-types.js +19 -0
- package/lib/agent-cli-provider/omp/sdk-settings-types.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-values.d.ts +14 -0
- package/lib/agent-cli-provider/omp/sdk-settings-values.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings-values.js +112 -0
- package/lib/agent-cli-provider/omp/sdk-settings-values.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-settings.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-settings.js +16 -0
- package/lib/agent-cli-provider/omp/sdk-settings.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-context.d.ts +11 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-context.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-context.js +171 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-context.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.js +94 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-credentials.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-execute.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-execute.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-execute.js +175 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-execute.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-output.d.ts +5 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-output.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-output.js +216 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-output.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.d.ts +11 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.js +265 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-runtime.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-types.d.ts +148 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-types.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-types.js +84 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar-types.js.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar.d.ts +4 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar.d.ts.map +1 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar.js +9 -0
- package/lib/agent-cli-provider/omp/sdk-sidecar.js.map +1 -0
- package/lib/agent-cli-provider/process-runner.d.ts +1 -0
- package/lib/agent-cli-provider/process-runner.d.ts.map +1 -1
- package/lib/agent-cli-provider/process-runner.js +19 -6
- package/lib/agent-cli-provider/process-runner.js.map +1 -1
- package/lib/agent-cli-provider/provider-registry.d.ts +18 -4
- package/lib/agent-cli-provider/provider-registry.d.ts.map +1 -1
- package/lib/agent-cli-provider/provider-registry.js +21 -7
- package/lib/agent-cli-provider/provider-registry.js.map +1 -1
- package/lib/agent-cli-provider/single-agent-runtime.d.ts +10 -1
- package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -1
- package/lib/agent-cli-provider/single-agent-runtime.js +378 -11
- package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -1
- package/lib/agent-cli-provider/types.d.ts +110 -2
- package/lib/agent-cli-provider/types.d.ts.map +1 -1
- package/lib/agent-cli-provider/types.js.map +1 -1
- package/npm-shrinkwrap.json +18116 -0
- package/package.json +16 -3
- package/scripts/omp/bun-ffi.d.ts +28 -0
- package/scripts/omp/host-supervisor-cleanup.ts +100 -0
- package/scripts/omp/host-supervisor-launch.ts +38 -0
- package/scripts/omp/host-supervisor-native.ts +181 -0
- package/scripts/omp/host-supervisor-tracker.ts +258 -0
- package/scripts/omp/host-supervisor.ts +298 -0
- package/scripts/omp/promise-gate.ts +13 -0
- package/scripts/omp/runtime-identities.js +283 -0
- package/scripts/omp/runtime-lock.js +232 -0
- package/scripts/omp/runtime-release.js +105 -0
- package/scripts/omp/runtime.js +33 -0
- package/scripts/omp/sidecar.ts +124 -0
- package/scripts/opcore-introduced-check.js +5 -0
- package/scripts/release-preflight.js +19 -0
- package/src/agent-cli-provider/adapters/acp.ts +18 -17
- package/src/agent-cli-provider/adapters/omp-policy.ts +45 -0
- package/src/agent-cli-provider/adapters/omp.ts +9 -155
- package/src/agent-cli-provider/adapters/pi.ts +15 -145
- package/src/agent-cli-provider/assistant-stream.ts +155 -0
- package/src/agent-cli-provider/contract-actions.ts +14 -2
- package/src/agent-cli-provider/contract-invoke.ts +77 -40
- package/src/agent-cli-provider/contract-support.ts +83 -12
- package/src/agent-cli-provider/index.ts +60 -5
- package/src/agent-cli-provider/omp/auth-policy.ts +126 -0
- package/src/agent-cli-provider/omp/rpc-driver-channel.ts +144 -0
- package/src/agent-cli-provider/omp/rpc-driver-dispatch.ts +177 -0
- package/src/agent-cli-provider/omp/rpc-driver-runner.ts +199 -0
- package/src/agent-cli-provider/omp/rpc-driver-state.ts +165 -0
- package/src/agent-cli-provider/omp/rpc-driver.ts +8 -0
- package/src/agent-cli-provider/omp/rpc-event-lines.ts +58 -0
- package/src/agent-cli-provider/omp/rpc-events.ts +154 -0
- package/src/agent-cli-provider/omp/rpc-protocol-contract.ts +77 -0
- package/src/agent-cli-provider/{omp-rpc-protocol.ts → omp/rpc-protocol.ts} +9 -111
- package/src/agent-cli-provider/omp/sdk-contract.ts +123 -0
- package/src/agent-cli-provider/omp/sdk-process-credentials.ts +55 -0
- package/src/agent-cli-provider/omp/sdk-process-error.ts +9 -0
- package/src/agent-cli-provider/omp/sdk-process-io.ts +92 -0
- package/src/agent-cli-provider/omp/sdk-process-private-runtime.ts +249 -0
- package/src/agent-cli-provider/omp/sdk-process-result.ts +181 -0
- package/src/agent-cli-provider/omp/sdk-process-runner.ts +281 -0
- package/src/agent-cli-provider/omp/sdk-protocol-collector.ts +140 -0
- package/src/agent-cli-provider/omp/sdk-protocol-frame.ts +260 -0
- package/src/agent-cli-provider/omp/sdk-protocol-request.ts +181 -0
- package/src/agent-cli-provider/omp/sdk-protocol-result.ts +80 -0
- package/src/agent-cli-provider/omp/sdk-protocol-types.ts +156 -0
- package/src/agent-cli-provider/omp/sdk-protocol-value.ts +234 -0
- package/src/agent-cli-provider/omp/sdk-protocol.ts +46 -0
- package/src/agent-cli-provider/omp/sdk-runtime.ts +159 -0
- package/src/agent-cli-provider/omp/sdk-settings-auth.ts +78 -0
- package/src/agent-cli-provider/omp/sdk-settings-constants.ts +147 -0
- package/src/agent-cli-provider/omp/sdk-settings-model-fields.ts +233 -0
- package/src/agent-cli-provider/omp/sdk-settings-model.ts +238 -0
- package/src/agent-cli-provider/omp/sdk-settings-normalize.ts +242 -0
- package/src/agent-cli-provider/omp/sdk-settings-selector.ts +28 -0
- package/src/agent-cli-provider/omp/sdk-settings-types.ts +88 -0
- package/src/agent-cli-provider/omp/sdk-settings-values.ts +118 -0
- package/src/agent-cli-provider/omp/sdk-settings.ts +33 -0
- package/src/agent-cli-provider/omp/sdk-sidecar-context.ts +199 -0
- package/src/agent-cli-provider/omp/sdk-sidecar-credentials.ts +100 -0
- package/src/agent-cli-provider/omp/sdk-sidecar-execute.ts +201 -0
- package/src/agent-cli-provider/omp/sdk-sidecar-output.ts +235 -0
- package/src/agent-cli-provider/omp/sdk-sidecar-runtime.ts +244 -0
- package/src/agent-cli-provider/omp/sdk-sidecar-types.ts +173 -0
- package/src/agent-cli-provider/omp/sdk-sidecar.ts +3 -0
- package/src/agent-cli-provider/process-runner.ts +22 -8
- package/src/agent-cli-provider/provider-registry.ts +29 -10
- package/src/agent-cli-provider/single-agent-runtime.ts +444 -18
- package/src/agent-cli-provider/types.ts +131 -3
- package/src/command-cleanup-ownership.js +15 -0
- package/task-lib/omp-sdk-runtime.js +8 -0
- package/task-lib/runner.js +121 -40
- package/task-lib/sdk-watcher.js +154 -0
- package/cli/lib/first-run.js +0 -223
- package/lib/agent-cli-provider/omp-release.d.ts.map +0 -1
- package/lib/agent-cli-provider/omp-release.js.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-bounds.d.ts.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-bounds.js.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-driver.d.ts +0 -40
- package/lib/agent-cli-provider/omp-rpc-driver.d.ts.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-driver.js +0 -519
- package/lib/agent-cli-provider/omp-rpc-driver.js.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-events.d.ts +0 -28
- package/lib/agent-cli-provider/omp-rpc-events.d.ts.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-events.js +0 -264
- package/lib/agent-cli-provider/omp-rpc-events.js.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-protocol.d.ts.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-protocol.js +0 -272
- package/lib/agent-cli-provider/omp-rpc-protocol.js.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-session.d.ts.map +0 -1
- package/lib/agent-cli-provider/omp-rpc-session.js.map +0 -1
- package/src/agent-cli-provider/omp-rpc-driver.ts +0 -639
- package/src/agent-cli-provider/omp-rpc-events.ts +0 -318
- /package/src/agent-cli-provider/{omp-release.ts → omp/release.ts} +0 -0
- /package/src/agent-cli-provider/{omp-rpc-bounds.ts → omp/rpc-bounds.ts} +0 -0
- /package/src/agent-cli-provider/{omp-rpc-session.ts → omp/rpc-session.ts} +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
|
|
5
|
+
import type { OmpSdkSidecarRequest } from './sdk-protocol';
|
|
6
|
+
import { openOmpAuthStorage } from './auth-policy';
|
|
7
|
+
import {
|
|
8
|
+
PRIVATE_BASE_ENV_KEYS,
|
|
9
|
+
SidecarFailure,
|
|
10
|
+
isRecord,
|
|
11
|
+
isUnknownArray,
|
|
12
|
+
type CredentialChannel,
|
|
13
|
+
type OmpAuthStorage,
|
|
14
|
+
type OmpModel,
|
|
15
|
+
type OmpModelRegistry,
|
|
16
|
+
type OmpSdkBindings,
|
|
17
|
+
type PrivateState,
|
|
18
|
+
} from './sdk-sidecar-types';
|
|
19
|
+
|
|
20
|
+
export async function privateState(): Promise<PrivateState> {
|
|
21
|
+
const root = await fs.mkdtemp(join(tmpdir(), 'zeroshot-omp-sdk-'));
|
|
22
|
+
try {
|
|
23
|
+
await fs.chmod(root, 0o700);
|
|
24
|
+
const directories = [
|
|
25
|
+
'home',
|
|
26
|
+
'xdg-config',
|
|
27
|
+
'xdg-cache',
|
|
28
|
+
'xdg-data',
|
|
29
|
+
'xdg-state',
|
|
30
|
+
'agent',
|
|
31
|
+
'discovery-cwd',
|
|
32
|
+
];
|
|
33
|
+
await Promise.all(directories.map((name) => fs.mkdir(join(root, name), { mode: 0o700 })));
|
|
34
|
+
return {
|
|
35
|
+
root,
|
|
36
|
+
agentDirectory: join(root, 'agent'),
|
|
37
|
+
authDatabasePath: join(root, 'agent', 'auth.db'),
|
|
38
|
+
brokerCachePath: join(root, 'agent', 'broker-snapshot.json'),
|
|
39
|
+
discoveryCwd: join(root, 'discovery-cwd'),
|
|
40
|
+
modelsPath: join(root, 'agent', 'models.yml'),
|
|
41
|
+
};
|
|
42
|
+
} catch {
|
|
43
|
+
await fs.rm(root, { force: true, maxRetries: 3, recursive: true });
|
|
44
|
+
throw new SidecarFailure('cleanup-error', 'cleanup', false);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function isolateEnvironment(
|
|
48
|
+
state: PrivateState,
|
|
49
|
+
auth: OmpSdkSidecarRequest['auth']
|
|
50
|
+
): Map<string, string | undefined> {
|
|
51
|
+
const original = new Map<string, string | undefined>();
|
|
52
|
+
const privateNames = new Set<string>(PRIVATE_BASE_ENV_KEYS);
|
|
53
|
+
for (const name of Object.keys(process.env)) {
|
|
54
|
+
if (name.startsWith('PI_') || name.startsWith('OMP_')) privateNames.add(name);
|
|
55
|
+
}
|
|
56
|
+
if (auth.mode === 'environment') {
|
|
57
|
+
Object.values(auth.credentials).forEach(({ env }) => privateNames.add(env));
|
|
58
|
+
}
|
|
59
|
+
for (const name of privateNames) {
|
|
60
|
+
original.set(name, process.env[name]);
|
|
61
|
+
delete process.env[name];
|
|
62
|
+
}
|
|
63
|
+
process.env.HOME = join(state.root, 'home');
|
|
64
|
+
process.env.XDG_CONFIG_HOME = join(state.root, 'xdg-config');
|
|
65
|
+
process.env.XDG_CACHE_HOME = join(state.root, 'xdg-cache');
|
|
66
|
+
process.env.XDG_DATA_HOME = join(state.root, 'xdg-data');
|
|
67
|
+
process.env.XDG_STATE_HOME = join(state.root, 'xdg-state');
|
|
68
|
+
process.env.PI_CODING_AGENT_DIR = state.agentDirectory;
|
|
69
|
+
return original;
|
|
70
|
+
}
|
|
71
|
+
export function restoreEnvironment(original: ReadonlyMap<string, string | undefined>): void {
|
|
72
|
+
for (const name of Object.keys(process.env)) {
|
|
73
|
+
if (name.startsWith('PI_') || name.startsWith('OMP_')) delete process.env[name];
|
|
74
|
+
}
|
|
75
|
+
original.forEach((value, key) => {
|
|
76
|
+
if (!PRIVATE_BASE_ENV_KEYS.some((name) => name === key)) {
|
|
77
|
+
delete process.env[key];
|
|
78
|
+
} else if (value === undefined) {
|
|
79
|
+
delete process.env[key];
|
|
80
|
+
} else {
|
|
81
|
+
process.env[key] = value;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
export async function authStorage(
|
|
86
|
+
sdk: OmpSdkBindings,
|
|
87
|
+
request: OmpSdkSidecarRequest,
|
|
88
|
+
state: PrivateState,
|
|
89
|
+
provider: string,
|
|
90
|
+
credentials: CredentialChannel
|
|
91
|
+
): Promise<OmpAuthStorage> {
|
|
92
|
+
const environmentSecret =
|
|
93
|
+
request.auth.mode === 'environment'
|
|
94
|
+
? credentials.values[request.auth.credentials[provider]?.env ?? '']
|
|
95
|
+
: undefined;
|
|
96
|
+
if (request.auth.mode === 'environment' && !environmentSecret) {
|
|
97
|
+
throw new SidecarFailure('provider-auth', 'auth', false);
|
|
98
|
+
}
|
|
99
|
+
const brokerCredentials =
|
|
100
|
+
request.auth.mode === 'broker'
|
|
101
|
+
? {
|
|
102
|
+
url: credentials.values.OMP_AUTH_BROKER_URL,
|
|
103
|
+
token: credentials.values.OMP_AUTH_BROKER_TOKEN,
|
|
104
|
+
}
|
|
105
|
+
: undefined;
|
|
106
|
+
if (request.auth.mode === 'broker' && (!brokerCredentials?.url || !brokerCredentials.token)) {
|
|
107
|
+
throw new SidecarFailure('provider-auth', 'auth', false);
|
|
108
|
+
}
|
|
109
|
+
const storage = await openOmpAuthStorage({
|
|
110
|
+
mode: request.auth.mode,
|
|
111
|
+
privateAgentDirectory: state.agentDirectory,
|
|
112
|
+
privateDatabasePath: state.authDatabasePath,
|
|
113
|
+
brokerCachePath: state.brokerCachePath,
|
|
114
|
+
sourceLabel: 'zeroshot omp sdk broker',
|
|
115
|
+
createDatabase: (databasePath) => sdk.AuthStorage.create(databasePath),
|
|
116
|
+
discoverBroker: (agentDirectory, options) =>
|
|
117
|
+
sdk.discoverBrokerAuthStorage(agentDirectory, options),
|
|
118
|
+
...(request.auth.mode === 'omp-home' ? { sourceDirectory: request.auth.path } : {}),
|
|
119
|
+
...(brokerCredentials === undefined ? {} : { brokerCredentials }),
|
|
120
|
+
});
|
|
121
|
+
if (typeof environmentSecret === 'string') {
|
|
122
|
+
storage.setRuntimeApiKey(provider, environmentSecret);
|
|
123
|
+
}
|
|
124
|
+
return storage;
|
|
125
|
+
}
|
|
126
|
+
export function exactModel(
|
|
127
|
+
sdk: OmpSdkBindings,
|
|
128
|
+
registry: OmpModelRegistry,
|
|
129
|
+
storage: OmpAuthStorage,
|
|
130
|
+
request: OmpSdkSidecarRequest
|
|
131
|
+
): Readonly<OmpModel> {
|
|
132
|
+
const parsed = sdk.parseModelString(request.modelSelector);
|
|
133
|
+
const model = parsed === undefined ? undefined : registry.find(parsed.provider, parsed.id);
|
|
134
|
+
if (
|
|
135
|
+
parsed === undefined ||
|
|
136
|
+
`${parsed.provider}/${parsed.id}` !== request.modelSelector ||
|
|
137
|
+
model?.provider !== parsed.provider ||
|
|
138
|
+
model.id !== parsed.id
|
|
139
|
+
) {
|
|
140
|
+
throw new SidecarFailure('model-resolution', 'model', false);
|
|
141
|
+
}
|
|
142
|
+
const available = registry
|
|
143
|
+
.getAvailable()
|
|
144
|
+
.find((candidate) => candidate.provider === parsed.provider && candidate.id === parsed.id);
|
|
145
|
+
if (
|
|
146
|
+
available === undefined ||
|
|
147
|
+
(request.auth.mode === 'none') === storage.hasAuth(parsed.provider)
|
|
148
|
+
) {
|
|
149
|
+
throw new SidecarFailure('provider-auth', 'auth', false);
|
|
150
|
+
}
|
|
151
|
+
const providerConfig = request.modelsConfig.providers[parsed.provider];
|
|
152
|
+
const models = isUnknownArray(providerConfig?.models) ? providerConfig.models : [];
|
|
153
|
+
const declaredModel = models.find(
|
|
154
|
+
(candidate) => isRecord(candidate) && candidate.id === parsed.id
|
|
155
|
+
);
|
|
156
|
+
const declaredBaseUrl =
|
|
157
|
+
isRecord(declaredModel) && typeof declaredModel.baseUrl === 'string'
|
|
158
|
+
? declaredModel.baseUrl
|
|
159
|
+
: typeof providerConfig?.baseUrl === 'string'
|
|
160
|
+
? providerConfig.baseUrl
|
|
161
|
+
: undefined;
|
|
162
|
+
const declaredApi =
|
|
163
|
+
isRecord(declaredModel) && typeof declaredModel.api === 'string'
|
|
164
|
+
? declaredModel.api
|
|
165
|
+
: typeof providerConfig?.api === 'string'
|
|
166
|
+
? providerConfig.api
|
|
167
|
+
: undefined;
|
|
168
|
+
const routeExposed = model.api !== undefined || model.baseUrl !== undefined;
|
|
169
|
+
const availableRouteExposed = available.api !== undefined || available.baseUrl !== undefined;
|
|
170
|
+
if (
|
|
171
|
+
routeExposed !== availableRouteExposed ||
|
|
172
|
+
(routeExposed && (model.api === undefined || model.baseUrl === undefined)) ||
|
|
173
|
+
(availableRouteExposed && (available.api === undefined || available.baseUrl === undefined)) ||
|
|
174
|
+
(routeExposed && declaredBaseUrl !== undefined && model.baseUrl !== declaredBaseUrl) ||
|
|
175
|
+
(routeExposed && declaredApi !== undefined && model.api !== declaredApi) ||
|
|
176
|
+
model.api !== available.api ||
|
|
177
|
+
model.baseUrl !== available.baseUrl
|
|
178
|
+
) {
|
|
179
|
+
throw new SidecarFailure('model-resolution', 'model', false);
|
|
180
|
+
}
|
|
181
|
+
return Object.freeze({
|
|
182
|
+
provider: model.provider,
|
|
183
|
+
id: model.id,
|
|
184
|
+
...(model.api === undefined ? {} : { api: model.api }),
|
|
185
|
+
...(model.baseUrl === undefined ? {} : { baseUrl: model.baseUrl }),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
export function privateModelsConfig(request: OmpSdkSidecarRequest): {
|
|
189
|
+
readonly providers: Readonly<Record<string, Record<string, unknown>>>;
|
|
190
|
+
} {
|
|
191
|
+
const providers: Record<string, Record<string, unknown>> = {};
|
|
192
|
+
for (const [provider, config] of Object.entries(request.modelsConfig.providers)) {
|
|
193
|
+
const copy: unknown = JSON.parse(JSON.stringify(config));
|
|
194
|
+
if (!isRecord(copy)) throw new SidecarFailure('invalid-request', 'request', false);
|
|
195
|
+
delete copy.apiKey;
|
|
196
|
+
providers[provider] = copy;
|
|
197
|
+
}
|
|
198
|
+
return { providers };
|
|
199
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { closeSync, readSync } from 'node:fs';
|
|
2
|
+
import { TextDecoder } from 'node:util';
|
|
3
|
+
|
|
4
|
+
import { OMP_SDK_MAX_CREDENTIAL_BYTES, type OmpSdkSidecarRequest } from './sdk-protocol';
|
|
5
|
+
import {
|
|
6
|
+
CREDENTIAL_NAME,
|
|
7
|
+
MAX_CREDENTIAL_COUNT,
|
|
8
|
+
MAX_CREDENTIAL_NAME_BYTES,
|
|
9
|
+
MAX_CREDENTIAL_VALUE_BYTES,
|
|
10
|
+
SidecarFailure,
|
|
11
|
+
isRecord,
|
|
12
|
+
type CredentialChannel,
|
|
13
|
+
} from './sdk-sidecar-types';
|
|
14
|
+
|
|
15
|
+
function closeCredentialChannel(fd: number): void {
|
|
16
|
+
try {
|
|
17
|
+
closeSync(fd);
|
|
18
|
+
} catch {
|
|
19
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function readCredentialChannel(fd: number): CredentialChannel {
|
|
23
|
+
if (!Number.isInteger(fd) || fd < 3) {
|
|
24
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
25
|
+
}
|
|
26
|
+
const buffer = Buffer.allocUnsafe(OMP_SDK_MAX_CREDENTIAL_BYTES + 1);
|
|
27
|
+
let offset = 0;
|
|
28
|
+
try {
|
|
29
|
+
while (offset <= OMP_SDK_MAX_CREDENTIAL_BYTES) {
|
|
30
|
+
const count = readSync(fd, buffer, offset, buffer.byteLength - offset, null);
|
|
31
|
+
if (count === 0) break;
|
|
32
|
+
offset += count;
|
|
33
|
+
}
|
|
34
|
+
} catch {
|
|
35
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
36
|
+
} finally {
|
|
37
|
+
closeCredentialChannel(fd);
|
|
38
|
+
}
|
|
39
|
+
if (offset === 0 || offset > OMP_SDK_MAX_CREDENTIAL_BYTES) {
|
|
40
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
41
|
+
}
|
|
42
|
+
let parsed: unknown;
|
|
43
|
+
try {
|
|
44
|
+
const text = new TextDecoder('utf-8', { fatal: true }).decode(buffer.subarray(0, offset));
|
|
45
|
+
parsed = JSON.parse(text);
|
|
46
|
+
} catch {
|
|
47
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
48
|
+
}
|
|
49
|
+
if (
|
|
50
|
+
!isRecord(parsed) ||
|
|
51
|
+
Object.keys(parsed).length !== 2 ||
|
|
52
|
+
parsed.protocolVersion !== 1 ||
|
|
53
|
+
!isRecord(parsed.values)
|
|
54
|
+
) {
|
|
55
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
56
|
+
}
|
|
57
|
+
const entries = Object.entries(parsed.values);
|
|
58
|
+
if (entries.length > MAX_CREDENTIAL_COUNT) {
|
|
59
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
60
|
+
}
|
|
61
|
+
const values: Record<string, string> = {};
|
|
62
|
+
for (const [name, value] of entries) {
|
|
63
|
+
if (
|
|
64
|
+
!CREDENTIAL_NAME.test(name) ||
|
|
65
|
+
Buffer.byteLength(name) > MAX_CREDENTIAL_NAME_BYTES ||
|
|
66
|
+
typeof value !== 'string' ||
|
|
67
|
+
value.length === 0 ||
|
|
68
|
+
Buffer.byteLength(value) > MAX_CREDENTIAL_VALUE_BYTES
|
|
69
|
+
) {
|
|
70
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
71
|
+
}
|
|
72
|
+
values[name] = value;
|
|
73
|
+
}
|
|
74
|
+
return { values: Object.freeze(values) };
|
|
75
|
+
}
|
|
76
|
+
export function credentialsForRequest(
|
|
77
|
+
request: OmpSdkSidecarRequest,
|
|
78
|
+
channel: CredentialChannel
|
|
79
|
+
): CredentialChannel {
|
|
80
|
+
const provider = request.modelSelector.slice(0, request.modelSelector.indexOf('/'));
|
|
81
|
+
let expected: readonly string[];
|
|
82
|
+
if (request.auth.mode === 'environment') {
|
|
83
|
+
const reference = request.auth.credentials[provider];
|
|
84
|
+
if (reference === undefined) throw new SidecarFailure('provider-auth', 'auth', false);
|
|
85
|
+
expected = [reference.env];
|
|
86
|
+
} else if (request.auth.mode === 'broker') {
|
|
87
|
+
expected = ['OMP_AUTH_BROKER_TOKEN', 'OMP_AUTH_BROKER_URL'];
|
|
88
|
+
} else {
|
|
89
|
+
expected = [];
|
|
90
|
+
}
|
|
91
|
+
const actual = Object.keys(channel.values).sort((left, right) => left.localeCompare(right));
|
|
92
|
+
const sortedExpected = [...expected].sort((left, right) => left.localeCompare(right));
|
|
93
|
+
if (
|
|
94
|
+
actual.length !== sortedExpected.length ||
|
|
95
|
+
actual.some((name, index) => name !== sortedExpected[index])
|
|
96
|
+
) {
|
|
97
|
+
throw new SidecarFailure('provider-auth', 'auth', false);
|
|
98
|
+
}
|
|
99
|
+
return channel;
|
|
100
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
OMP_SDK_BUN_VERSION,
|
|
6
|
+
OMP_SDK_MAX_FRAME_BYTES,
|
|
7
|
+
OMP_SDK_TEXT_OUTPUT_SCHEMA,
|
|
8
|
+
parseOmpSdkSidecarRequest,
|
|
9
|
+
type OmpSdkProtocolFrame,
|
|
10
|
+
type OmpSdkSidecarRequest,
|
|
11
|
+
} from './sdk-protocol';
|
|
12
|
+
import { compilePrivateOmpModelsYaml } from './sdk-settings';
|
|
13
|
+
import { credentialsForRequest, readCredentialChannel } from './sdk-sidecar-credentials';
|
|
14
|
+
import {
|
|
15
|
+
authStorage,
|
|
16
|
+
exactModel,
|
|
17
|
+
isolateEnvironment,
|
|
18
|
+
privateModelsConfig,
|
|
19
|
+
privateState,
|
|
20
|
+
restoreEnvironment,
|
|
21
|
+
} from './sdk-sidecar-context';
|
|
22
|
+
import { resultFrame, successfulValue } from './sdk-sidecar-output';
|
|
23
|
+
import {
|
|
24
|
+
bunVersion,
|
|
25
|
+
createOmpSdkErrorFrame,
|
|
26
|
+
loadOmpSdk,
|
|
27
|
+
requireOmpModelRegistry,
|
|
28
|
+
runIdFrom,
|
|
29
|
+
} from './sdk-sidecar-runtime';
|
|
30
|
+
import {
|
|
31
|
+
ISOLATED_SETTINGS,
|
|
32
|
+
SidecarFailure,
|
|
33
|
+
type CredentialChannel,
|
|
34
|
+
type OmpAuthStorage,
|
|
35
|
+
type OmpSdkSidecarOptions,
|
|
36
|
+
} from './sdk-sidecar-types';
|
|
37
|
+
|
|
38
|
+
async function execute(
|
|
39
|
+
request: OmpSdkSidecarRequest,
|
|
40
|
+
credentials: CredentialChannel,
|
|
41
|
+
options: OmpSdkSidecarOptions
|
|
42
|
+
): Promise<OmpSdkProtocolFrame> {
|
|
43
|
+
if ((options.runtimeVersion ?? bunVersion)() !== OMP_SDK_BUN_VERSION) {
|
|
44
|
+
throw new SidecarFailure('sdk-error', 'sdk', false);
|
|
45
|
+
}
|
|
46
|
+
const state = await privateState();
|
|
47
|
+
const originalCwd = process.cwd();
|
|
48
|
+
const original = isolateEnvironment(state, request.auth);
|
|
49
|
+
let storage: OmpAuthStorage | undefined;
|
|
50
|
+
let candidate: OmpSdkProtocolFrame | undefined;
|
|
51
|
+
let failure: unknown;
|
|
52
|
+
let changedCwd = false;
|
|
53
|
+
try {
|
|
54
|
+
process.chdir(state.discoveryCwd);
|
|
55
|
+
changedCwd = true;
|
|
56
|
+
await fs.writeFile(
|
|
57
|
+
state.modelsPath,
|
|
58
|
+
compilePrivateOmpModelsYaml(privateModelsConfig(request)),
|
|
59
|
+
{
|
|
60
|
+
encoding: 'utf8',
|
|
61
|
+
flag: 'wx',
|
|
62
|
+
mode: 0o600,
|
|
63
|
+
}
|
|
64
|
+
);
|
|
65
|
+
await fs.chmod(state.modelsPath, 0o600);
|
|
66
|
+
const sdk = await (options.loadOmpSdk ?? loadOmpSdk)();
|
|
67
|
+
const parsed = sdk.parseModelString(request.modelSelector);
|
|
68
|
+
if (parsed === undefined) throw new SidecarFailure('model-resolution', 'model', false);
|
|
69
|
+
storage = await authStorage(sdk, request, state, parsed.provider, credentials);
|
|
70
|
+
const registry = requireOmpModelRegistry(new sdk.ModelRegistry(storage, state.modelsPath));
|
|
71
|
+
if (registry.getError() !== undefined) {
|
|
72
|
+
throw new SidecarFailure('invalid-request', 'request', false);
|
|
73
|
+
}
|
|
74
|
+
const effectiveModel = exactModel(sdk, registry, storage, request);
|
|
75
|
+
const base = sdk.getBundledAgent('task');
|
|
76
|
+
if (base === undefined) throw new SidecarFailure('sdk-error', 'sdk', false);
|
|
77
|
+
const settings = sdk.Settings.isolated({
|
|
78
|
+
...ISOLATED_SETTINGS,
|
|
79
|
+
enabledModels: [request.modelSelector],
|
|
80
|
+
});
|
|
81
|
+
const agent = {
|
|
82
|
+
...base,
|
|
83
|
+
tools: [...request.tools],
|
|
84
|
+
spawns: [],
|
|
85
|
+
model: [request.modelSelector],
|
|
86
|
+
thinkingLevel: request.reasoningEffort,
|
|
87
|
+
autoloadSkills: [],
|
|
88
|
+
prewalk: false,
|
|
89
|
+
};
|
|
90
|
+
const schema =
|
|
91
|
+
request.outputMode === 'text' ? OMP_SDK_TEXT_OUTPUT_SCHEMA : request.outputSchema;
|
|
92
|
+
const result = await sdk.runSubprocess({
|
|
93
|
+
cwd: request.cwd,
|
|
94
|
+
agent,
|
|
95
|
+
task: request.prompt,
|
|
96
|
+
context: request.context,
|
|
97
|
+
description: 'Zeroshot strict SDK execution',
|
|
98
|
+
index: 0,
|
|
99
|
+
id: request.runId,
|
|
100
|
+
modelOverride: request.modelSelector,
|
|
101
|
+
thinkingLevel: request.reasoningEffort,
|
|
102
|
+
outputSchema: schema,
|
|
103
|
+
outputSchemaMode: 'strict',
|
|
104
|
+
outputSchemaSource: 'caller',
|
|
105
|
+
outputSchemaOverridesAgent: true,
|
|
106
|
+
settings,
|
|
107
|
+
authStorage: storage,
|
|
108
|
+
modelRegistry: registry,
|
|
109
|
+
restrictToolNames: true,
|
|
110
|
+
enableMCP: false,
|
|
111
|
+
enableIrc: false,
|
|
112
|
+
enableLsp: request.tools.includes('lsp'),
|
|
113
|
+
contextFiles: [],
|
|
114
|
+
skills: [],
|
|
115
|
+
promptTemplates: [],
|
|
116
|
+
workspaceTree: {
|
|
117
|
+
rootPath: request.cwd,
|
|
118
|
+
rendered: '',
|
|
119
|
+
truncated: false,
|
|
120
|
+
totalLines: 0,
|
|
121
|
+
agentsMdFiles: [],
|
|
122
|
+
},
|
|
123
|
+
rules: [],
|
|
124
|
+
preloadedExtensionPaths: [],
|
|
125
|
+
preloadedCustomToolPaths: [],
|
|
126
|
+
keepAlive: false,
|
|
127
|
+
signal: options.signal,
|
|
128
|
+
});
|
|
129
|
+
const rawValue = successfulValue(result, request, schema, options.signal);
|
|
130
|
+
if (
|
|
131
|
+
registry.getError() !== undefined ||
|
|
132
|
+
!isDeepStrictEqual(effectiveModel, exactModel(sdk, registry, storage, request))
|
|
133
|
+
) {
|
|
134
|
+
throw new SidecarFailure('model-resolution', 'model', false);
|
|
135
|
+
}
|
|
136
|
+
candidate = resultFrame(request, result, rawValue);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
failure = error;
|
|
139
|
+
} finally {
|
|
140
|
+
try {
|
|
141
|
+
storage?.close();
|
|
142
|
+
} catch {
|
|
143
|
+
failure = new SidecarFailure('cleanup-error', 'cleanup', false);
|
|
144
|
+
}
|
|
145
|
+
if (changedCwd) {
|
|
146
|
+
try {
|
|
147
|
+
process.chdir(originalCwd);
|
|
148
|
+
} catch {
|
|
149
|
+
failure = new SidecarFailure('cleanup-error', 'cleanup', false);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
restoreEnvironment(original);
|
|
153
|
+
try {
|
|
154
|
+
await fs.rm(state.root, { force: true, maxRetries: 3, recursive: true });
|
|
155
|
+
} catch {
|
|
156
|
+
failure = new SidecarFailure('cleanup-error', 'cleanup', false);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (options.signal?.aborted) {
|
|
160
|
+
throw new SidecarFailure('cancelled', 'cancelled', false);
|
|
161
|
+
}
|
|
162
|
+
if (failure !== undefined) throw failure;
|
|
163
|
+
if (candidate === undefined) throw new SidecarFailure('internal-error', 'internal', false);
|
|
164
|
+
return candidate;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export async function executeOmpSdkSidecar(
|
|
168
|
+
input: unknown,
|
|
169
|
+
options: OmpSdkSidecarOptions = {}
|
|
170
|
+
): Promise<OmpSdkProtocolFrame> {
|
|
171
|
+
const runId = runIdFrom(input);
|
|
172
|
+
let channel: CredentialChannel;
|
|
173
|
+
try {
|
|
174
|
+
channel = readCredentialChannel(options.credentialChannelFd ?? 3);
|
|
175
|
+
} catch (error) {
|
|
176
|
+
return createOmpSdkErrorFrame(runId, error);
|
|
177
|
+
}
|
|
178
|
+
let request: OmpSdkSidecarRequest;
|
|
179
|
+
try {
|
|
180
|
+
request = parseOmpSdkSidecarRequest(input);
|
|
181
|
+
} catch {
|
|
182
|
+
return createOmpSdkErrorFrame(runId, new SidecarFailure('invalid-request', 'request', false));
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
channel = credentialsForRequest(request, channel);
|
|
186
|
+
} catch (error) {
|
|
187
|
+
return createOmpSdkErrorFrame(runId, error);
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
return await execute(request, channel, options);
|
|
191
|
+
} catch (error) {
|
|
192
|
+
return createOmpSdkErrorFrame(runId, error);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
export function serializeOmpSdkFrame(frame: OmpSdkProtocolFrame): string {
|
|
196
|
+
const serialized = `${JSON.stringify(frame)}\n`;
|
|
197
|
+
if (Buffer.byteLength(serialized) <= OMP_SDK_MAX_FRAME_BYTES) return serialized;
|
|
198
|
+
return `${JSON.stringify(
|
|
199
|
+
createOmpSdkErrorFrame(frame.runId, new SidecarFailure('invalid-request', 'request', false))
|
|
200
|
+
)}\n`;
|
|
201
|
+
}
|