@the-open-engine/zeroshot 6.30.2 → 6.31.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/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/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,45 @@
|
|
|
1
|
+
export const OMP_CREDENTIAL_ENV_KEYS: readonly string[] = [
|
|
2
|
+
'AIMLAPI_API_KEY', 'AI_GATEWAY_API_KEY', 'ALIBABA_CODING_PLAN_API_KEY', 'ALIBABA_TOKEN_PLAN_API_KEY',
|
|
3
|
+
'ANTHROPIC_API_KEY', 'ANTHROPIC_FOUNDRY_API_KEY', 'ANTHROPIC_OAUTH_TOKEN', 'ANTHROPIC_SEARCH_API_KEY',
|
|
4
|
+
'AWS_ACCESS_KEY_ID', 'AWS_BEARER_TOKEN_BEDROCK', 'AWS_SECRET_ACCESS_KEY', 'AZURE_OPENAI_API_KEY',
|
|
5
|
+
'BAILIAN_TOKEN_PLAN_API_KEY', 'BRAVE_API_KEY', 'CEREBRAS_API_KEY', 'CLAUDE_CODE_CLIENT_CERT',
|
|
6
|
+
'CLAUDE_CODE_CLIENT_KEY', 'CLOUDFLARE_AI_GATEWAY_API_KEY', 'COPILOT_GITHUB_TOKEN', 'CURSOR_ACCESS_TOKEN',
|
|
7
|
+
'DEEPSEEK_API_KEY', 'EXA_API_KEY', 'FIREPASS_API_KEY', 'FIREWORKS_API_KEY', 'GEMINI_API_KEY', 'GH_TOKEN',
|
|
8
|
+
'GITHUB_TOKEN', 'GITLAB_TOKEN', 'GOOGLE_API_KEY', 'GOOGLE_APPLICATION_CREDENTIALS', 'GOOGLE_CLOUD_API_KEY',
|
|
9
|
+
'GROQ_API_KEY', 'HF_TOKEN', 'HUGGINGFACE_HUB_TOKEN', 'JINA_API_KEY', 'KAGI_API_KEY', 'KILO_API_KEY',
|
|
10
|
+
'KIMI_SEARCH_API_KEY', 'LITELLM_API_KEY', 'LLAMA_CPP_API_KEY', 'LM_STUDIO_API_KEY', 'MINIMAX_API_KEY',
|
|
11
|
+
'MINIMAX_CODE_API_KEY', 'MINIMAX_CODE_CN_API_KEY', 'MISTRAL_API_KEY', 'MOONSHOT_API_KEY',
|
|
12
|
+
'MOONSHOT_SEARCH_API_KEY', 'NANO_GPT_API_KEY', 'NOVITA_API_KEY', 'NVIDIA_API_KEY', 'OLLAMA_API_KEY',
|
|
13
|
+
'OLLAMA_CLOUD_API_KEY', 'OMP_AUTH_BROKER_TOKEN', 'OPENAI_API_KEY', 'OPENCODE_API_KEY', 'OPENROUTER_API_KEY',
|
|
14
|
+
'PARALLEL_API_KEY', 'PERPLEXITY_API_KEY', 'PERPLEXITY_COOKIES', 'QIANFAN_API_KEY', 'QWEN_OAUTH_TOKEN',
|
|
15
|
+
'QWEN_PORTAL_API_KEY', 'SEARXNG_BASIC_PASSWORD', 'SEARXNG_TOKEN', 'SILICONFLOW_API_KEY',
|
|
16
|
+
'SILICONFLOW_CN_API_KEY', 'SMITHERY_API_KEY', 'SYNTHETIC_API_KEY', 'TAVILY_API_KEY',
|
|
17
|
+
'TOGETHER_API_KEY', 'UMANS_AI_CODING_PLAN_API_KEY', 'VENICE_API_KEY', 'VLLM_API_KEY',
|
|
18
|
+
'WAFER_SERVERLESS_API_KEY', 'XAI_API_KEY', 'XAI_OAUTH_TOKEN', 'XIAOMI_API_KEY',
|
|
19
|
+
'XIAOMI_TOKEN_PLAN_AMS_API_KEY', 'XIAOMI_TOKEN_PLAN_CN_API_KEY', 'XIAOMI_TOKEN_PLAN_SGP_API_KEY',
|
|
20
|
+
'ZAI_API_KEY', 'ZENMUX_API_KEY', 'ZHIPU_API_KEY',
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
export const OMP_RETRYABLE_PATTERNS: readonly RegExp[] = [
|
|
24
|
+
/\brate(?:[_ -]?limit| limited)\b/i, /\bquota\b/i, /\bresource[_ -]?exhausted\b/i,
|
|
25
|
+
/\btemporar(?:y|ily)\b/i, /\boverloaded\b/i, /\bservice unavailable\b/i,
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
export const OMP_PERMANENT_PATTERNS: readonly RegExp[] = [
|
|
29
|
+
/\bunsupported-protocol\b/i, /\bunsupported-limits\b/i, /\bunsupported-provider-cli\b/i,
|
|
30
|
+
/\bunsupported-ui-method\b/i, /\bunsupported-capability\b/i, /\bunsafe-config\b/i,
|
|
31
|
+
/\bmalformed-response\b/i, /\bmalformed-extension-ui-request\b/i, /\bmalformed-host-tool-call\b/i,
|
|
32
|
+
/\bmalformed-host-uri-request\b/i, /\bextension-error\b/i, /\blocal-only-prompt\b/i,
|
|
33
|
+
/\blifetime-request-id-exceeded\b/i, /\bpending-request-exceeded\b/i, /\bspawn-hook-failed\b/i,
|
|
34
|
+
/\bphysical-frame-too-large\b/i, /\bmalformed-physical-frame\b/i, /\binvalid-chunk-metadata\b/i,
|
|
35
|
+
/\binvalid-chunk-data\b/i, /\bchunk-sequence-must-start-at-zero\b/i, /\bchunk-sequence-mismatch\b/i,
|
|
36
|
+
/\bchunk-sequence-exceeds-declared-length\b/i, /\bchunk-sequence-length-mismatch\b/i,
|
|
37
|
+
/\bmalformed-json-in-reassembled-frame\b/i, /\bnon-object-reassembled-frame\b/i,
|
|
38
|
+
/\binvalid-utf8-in-reassembled-frame\b/i, /\binflight-reassembly-bytes-exceeded\b/i,
|
|
39
|
+
/\binterleaved-chunk-sequence\b/i, /\binterrupted-chunk-sequence\b/i,
|
|
40
|
+
/\bincomplete-physical-frame\b/i, /\bincomplete-chunk-sequence\b/i, /\boutbound-frame-too-large\b/i,
|
|
41
|
+
/\bpre-negotiation-rpc-chunk\b/i, /\b[\w-]+-bound-exceeded\b/i, /\bno available authenticated\b/i,
|
|
42
|
+
/\bno keyless model\b/i, /\bno valid authentication\b/i, /\bmissing api key\b/i,
|
|
43
|
+
/\brun\s*\/login\b/i, /\bunknown option\b/i, /\bfailed to load\b/i,
|
|
44
|
+
/\bcannot find module\b/i, /\bno such file or directory\b/i,
|
|
45
|
+
];
|
|
@@ -2,9 +2,9 @@ import { contractError } from '../contract-errors';
|
|
|
2
2
|
import { UnsupportedProviderCapabilityError } from '../errors';
|
|
3
3
|
import { appendJsonSchemaPrompt } from '../schema';
|
|
4
4
|
import { isRecord, unknownToMessage } from '../json';
|
|
5
|
-
import { OMP_REMEDIATION, OMP_SUPPORTED_VERSION } from '../omp
|
|
6
|
-
import { parseNormalizedOmpRpcEventLine } from '../omp
|
|
7
|
-
import type { OmpSessionLaunch } from '../omp
|
|
5
|
+
import { OMP_REMEDIATION, OMP_SUPPORTED_VERSION } from '../omp/release';
|
|
6
|
+
import { parseNormalizedOmpRpcEventLine } from '../omp/rpc-events';
|
|
7
|
+
import type { OmpSessionLaunch } from '../omp/rpc-session';
|
|
8
8
|
import {
|
|
9
9
|
InvalidProviderModelError,
|
|
10
10
|
type BuildProviderCommandOptions,
|
|
@@ -29,6 +29,11 @@ import {
|
|
|
29
29
|
resolveModelSpecWithConfig,
|
|
30
30
|
warning,
|
|
31
31
|
} from './common';
|
|
32
|
+
import {
|
|
33
|
+
OMP_CREDENTIAL_ENV_KEYS,
|
|
34
|
+
OMP_PERMANENT_PATTERNS,
|
|
35
|
+
OMP_RETRYABLE_PATTERNS,
|
|
36
|
+
} from './omp-policy';
|
|
32
37
|
|
|
33
38
|
interface OmpConfigOverlay {
|
|
34
39
|
readonly dir: string;
|
|
@@ -65,99 +70,7 @@ const LEVEL_MAPPING: Readonly<Record<ModelLevel, LevelModelSpec>> = {
|
|
|
65
70
|
level3: { rank: 3, model: '@slow' },
|
|
66
71
|
};
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
// authentication", "GitHub/Copilot tokens", "Auth broker", web-search credentials, Bedrock,
|
|
70
|
-
// Azure, Vertex sections) plus docs/providers.md's provider/env-var map. This is the full
|
|
71
|
-
// official host credential inventory OMP itself resolves credentials from — distinct from
|
|
72
|
-
// (and broader than) any narrower automatic Docker env-passthrough allowlist — because OMP
|
|
73
|
-
// routes to 70+ downstream model/search providers and every one of their credential env vars
|
|
74
|
-
// must be detected and redacted from Zeroshot logs/output, not just the handful Zeroshot's
|
|
75
|
-
// own cluster config commonly sets.
|
|
76
|
-
const CREDENTIAL_ENV_KEYS: readonly string[] = [
|
|
77
|
-
'AIMLAPI_API_KEY',
|
|
78
|
-
'AI_GATEWAY_API_KEY',
|
|
79
|
-
'ALIBABA_CODING_PLAN_API_KEY',
|
|
80
|
-
'ALIBABA_TOKEN_PLAN_API_KEY',
|
|
81
|
-
'ANTHROPIC_API_KEY',
|
|
82
|
-
'ANTHROPIC_FOUNDRY_API_KEY',
|
|
83
|
-
'ANTHROPIC_OAUTH_TOKEN',
|
|
84
|
-
'ANTHROPIC_SEARCH_API_KEY',
|
|
85
|
-
'AWS_ACCESS_KEY_ID',
|
|
86
|
-
'AWS_BEARER_TOKEN_BEDROCK',
|
|
87
|
-
'AWS_SECRET_ACCESS_KEY',
|
|
88
|
-
'AZURE_OPENAI_API_KEY',
|
|
89
|
-
'BAILIAN_TOKEN_PLAN_API_KEY',
|
|
90
|
-
'BRAVE_API_KEY',
|
|
91
|
-
'CEREBRAS_API_KEY',
|
|
92
|
-
'CLAUDE_CODE_CLIENT_CERT',
|
|
93
|
-
'CLAUDE_CODE_CLIENT_KEY',
|
|
94
|
-
'CLOUDFLARE_AI_GATEWAY_API_KEY',
|
|
95
|
-
'COPILOT_GITHUB_TOKEN',
|
|
96
|
-
'CURSOR_ACCESS_TOKEN',
|
|
97
|
-
'DEEPSEEK_API_KEY',
|
|
98
|
-
'EXA_API_KEY',
|
|
99
|
-
'FIREPASS_API_KEY',
|
|
100
|
-
'FIREWORKS_API_KEY',
|
|
101
|
-
'GEMINI_API_KEY',
|
|
102
|
-
'GH_TOKEN',
|
|
103
|
-
'GITHUB_TOKEN',
|
|
104
|
-
'GITLAB_TOKEN',
|
|
105
|
-
'GOOGLE_API_KEY',
|
|
106
|
-
'GOOGLE_APPLICATION_CREDENTIALS',
|
|
107
|
-
'GOOGLE_CLOUD_API_KEY',
|
|
108
|
-
'GROQ_API_KEY',
|
|
109
|
-
'HF_TOKEN',
|
|
110
|
-
'HUGGINGFACE_HUB_TOKEN',
|
|
111
|
-
'JINA_API_KEY',
|
|
112
|
-
'KAGI_API_KEY',
|
|
113
|
-
'KILO_API_KEY',
|
|
114
|
-
'KIMI_SEARCH_API_KEY',
|
|
115
|
-
'LITELLM_API_KEY',
|
|
116
|
-
'LLAMA_CPP_API_KEY',
|
|
117
|
-
'LM_STUDIO_API_KEY',
|
|
118
|
-
'MINIMAX_API_KEY',
|
|
119
|
-
'MINIMAX_CODE_API_KEY',
|
|
120
|
-
'MINIMAX_CODE_CN_API_KEY',
|
|
121
|
-
'MISTRAL_API_KEY',
|
|
122
|
-
'MOONSHOT_API_KEY',
|
|
123
|
-
'MOONSHOT_SEARCH_API_KEY',
|
|
124
|
-
'NANO_GPT_API_KEY',
|
|
125
|
-
'NOVITA_API_KEY',
|
|
126
|
-
'NVIDIA_API_KEY',
|
|
127
|
-
'OLLAMA_API_KEY',
|
|
128
|
-
'OLLAMA_CLOUD_API_KEY',
|
|
129
|
-
'OMP_AUTH_BROKER_TOKEN',
|
|
130
|
-
'OPENAI_API_KEY',
|
|
131
|
-
'OPENCODE_API_KEY',
|
|
132
|
-
'OPENROUTER_API_KEY',
|
|
133
|
-
'PARALLEL_API_KEY',
|
|
134
|
-
'PERPLEXITY_API_KEY',
|
|
135
|
-
'PERPLEXITY_COOKIES',
|
|
136
|
-
'QIANFAN_API_KEY',
|
|
137
|
-
'QWEN_OAUTH_TOKEN',
|
|
138
|
-
'QWEN_PORTAL_API_KEY',
|
|
139
|
-
'SEARXNG_BASIC_PASSWORD',
|
|
140
|
-
'SEARXNG_TOKEN',
|
|
141
|
-
'SILICONFLOW_API_KEY',
|
|
142
|
-
'SILICONFLOW_CN_API_KEY',
|
|
143
|
-
'SMITHERY_API_KEY',
|
|
144
|
-
'SYNTHETIC_API_KEY',
|
|
145
|
-
'TAVILY_API_KEY',
|
|
146
|
-
'TOGETHER_API_KEY',
|
|
147
|
-
'UMANS_AI_CODING_PLAN_API_KEY',
|
|
148
|
-
'VENICE_API_KEY',
|
|
149
|
-
'VLLM_API_KEY',
|
|
150
|
-
'WAFER_SERVERLESS_API_KEY',
|
|
151
|
-
'XAI_API_KEY',
|
|
152
|
-
'XAI_OAUTH_TOKEN',
|
|
153
|
-
'XIAOMI_API_KEY',
|
|
154
|
-
'XIAOMI_TOKEN_PLAN_AMS_API_KEY',
|
|
155
|
-
'XIAOMI_TOKEN_PLAN_CN_API_KEY',
|
|
156
|
-
'XIAOMI_TOKEN_PLAN_SGP_API_KEY',
|
|
157
|
-
'ZAI_API_KEY',
|
|
158
|
-
'ZENMUX_API_KEY',
|
|
159
|
-
'ZHIPU_API_KEY',
|
|
160
|
-
];
|
|
73
|
+
const CREDENTIAL_ENV_KEYS = OMP_CREDENTIAL_ENV_KEYS;
|
|
161
74
|
|
|
162
75
|
const VERSION_TOKEN_PATTERN = /(?<![\w.])17\.2\.1(?![\w.])/;
|
|
163
76
|
const MODEL_ID_PATTERN = /^@?[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u;
|
|
@@ -335,66 +248,7 @@ function validateModelId(modelId: string | null | undefined): string | null | un
|
|
|
335
248
|
return modelId;
|
|
336
249
|
}
|
|
337
250
|
|
|
338
|
-
const OMP_RETRYABLE_PATTERNS: readonly RegExp[] = [
|
|
339
|
-
/\brate(?:[_ -]?limit| limited)\b/i,
|
|
340
|
-
/\bquota\b/i,
|
|
341
|
-
/\bresource[_ -]?exhausted\b/i,
|
|
342
|
-
/\btemporar(?:y|ily)\b/i,
|
|
343
|
-
/\boverloaded\b/i,
|
|
344
|
-
/\bservice unavailable\b/i,
|
|
345
|
-
];
|
|
346
251
|
|
|
347
|
-
const OMP_PERMANENT_PATTERNS: readonly RegExp[] = [
|
|
348
|
-
// Driver stopReason tokens (see omp-rpc-driver.ts) that always indicate a permanent,
|
|
349
|
-
// non-retryable failure: bad binary/protocol/version/limits/selector/config, malformed or
|
|
350
|
-
// over-bound frames, and missing auth/model evidence.
|
|
351
|
-
/\bunsupported-protocol\b/i,
|
|
352
|
-
/\bunsupported-limits\b/i,
|
|
353
|
-
/\bunsupported-provider-cli\b/i,
|
|
354
|
-
/\bunsupported-ui-method\b/i,
|
|
355
|
-
/\bunsupported-capability\b/i,
|
|
356
|
-
/\bunsafe-config\b/i,
|
|
357
|
-
/\bmalformed-response\b/i,
|
|
358
|
-
/\bmalformed-extension-ui-request\b/i,
|
|
359
|
-
/\bmalformed-host-tool-call\b/i,
|
|
360
|
-
/\bmalformed-host-uri-request\b/i,
|
|
361
|
-
/\bextension-error\b/i,
|
|
362
|
-
/\blocal-only-prompt\b/i,
|
|
363
|
-
/\blifetime-request-id-exceeded\b/i,
|
|
364
|
-
/\bpending-request-exceeded\b/i,
|
|
365
|
-
/\bspawn-hook-failed\b/i,
|
|
366
|
-
// Frame decoder codes (omp-rpc-protocol.ts OmpRpcProtocolError.code values) — every one of
|
|
367
|
-
// these means the wire traffic itself is invalid or out-of-bounds, never a transient condition.
|
|
368
|
-
/\bphysical-frame-too-large\b/i,
|
|
369
|
-
/\bmalformed-physical-frame\b/i,
|
|
370
|
-
/\binvalid-chunk-metadata\b/i,
|
|
371
|
-
/\binvalid-chunk-data\b/i,
|
|
372
|
-
/\bchunk-sequence-must-start-at-zero\b/i,
|
|
373
|
-
/\bchunk-sequence-mismatch\b/i,
|
|
374
|
-
/\bchunk-sequence-exceeds-declared-length\b/i,
|
|
375
|
-
/\bchunk-sequence-length-mismatch\b/i,
|
|
376
|
-
/\bmalformed-json-in-reassembled-frame\b/i,
|
|
377
|
-
/\bnon-object-reassembled-frame\b/i,
|
|
378
|
-
/\binvalid-utf8-in-reassembled-frame\b/i,
|
|
379
|
-
/\binflight-reassembly-bytes-exceeded\b/i,
|
|
380
|
-
/\binterleaved-chunk-sequence\b/i,
|
|
381
|
-
/\binterrupted-chunk-sequence\b/i,
|
|
382
|
-
/\bincomplete-physical-frame\b/i,
|
|
383
|
-
/\bincomplete-chunk-sequence\b/i,
|
|
384
|
-
/\boutbound-frame-too-large\b/i,
|
|
385
|
-
/\bpre-negotiation-rpc-chunk\b/i,
|
|
386
|
-
/\b[\w-]+-bound-exceeded\b/i,
|
|
387
|
-
// Auth/model absence and permission/usage errors surfaced verbatim in OMP output.
|
|
388
|
-
/\bno available authenticated\b/i,
|
|
389
|
-
/\bno keyless model\b/i,
|
|
390
|
-
/\bno valid authentication\b/i,
|
|
391
|
-
/\bmissing api key\b/i,
|
|
392
|
-
/\brun\s*\/login\b/i,
|
|
393
|
-
/\bunknown option\b/i,
|
|
394
|
-
/\bfailed to load\b/i,
|
|
395
|
-
/\bcannot find module\b/i,
|
|
396
|
-
/\bno such file or directory\b/i,
|
|
397
|
-
];
|
|
398
252
|
|
|
399
253
|
function classifyError(error: unknown): ErrorClassification {
|
|
400
254
|
const message = unknownToMessage(error);
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { appendJsonSchemaPrompt } from '../schema';
|
|
2
2
|
import { contractError } from '../contract-errors';
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from '../json';
|
|
4
|
+
emitAssistantSnapshot,
|
|
5
|
+
parseAssistantDelta,
|
|
6
|
+
parseToolExecutionEnd,
|
|
7
|
+
parseToolExecutionStart,
|
|
8
|
+
parseToolExecutionUpdate,
|
|
9
|
+
parseTurnEndResult,
|
|
10
|
+
resetAssistantSnapshot,
|
|
11
|
+
} from '../assistant-stream';
|
|
12
|
+
import { getRecord, getString, isRecord, tryParseJson, unknownToMessage } from '../json';
|
|
14
13
|
import {
|
|
15
14
|
type BuildProviderCommandOptions,
|
|
16
15
|
type CommandSpec,
|
|
@@ -152,138 +151,13 @@ function createPiState(): ProviderParserState {
|
|
|
152
151
|
};
|
|
153
152
|
}
|
|
154
153
|
|
|
155
|
-
function
|
|
156
|
-
if (getString(message, 'role') !== 'assistant') return { text: '', thinking: '' };
|
|
157
|
-
|
|
158
|
-
let text = '';
|
|
159
|
-
let thinking = '';
|
|
160
|
-
for (const item of getArray(message, 'content')) {
|
|
161
|
-
if (!isRecord(item)) continue;
|
|
162
|
-
const type = getString(item, 'type');
|
|
163
|
-
if (type === 'text') {
|
|
164
|
-
text += getString(item, 'text') ?? '';
|
|
165
|
-
} else if (type === 'thinking') {
|
|
166
|
-
thinking += getString(item, 'thinking') ?? '';
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return { text, thinking };
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
function snapshotDelta(previous: string, current: string): string | null {
|
|
174
|
-
if (!current) return null;
|
|
175
|
-
if (previous === current) return null;
|
|
176
|
-
if (current.startsWith(previous)) return current.slice(previous.length) || null;
|
|
177
|
-
return current;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function emitAssistantSnapshot(
|
|
181
|
-
message: Record<string, unknown>,
|
|
182
|
-
state: ProviderParserState
|
|
183
|
-
): readonly OutputEvent[] {
|
|
184
|
-
const snapshot = assistantSnapshot(message);
|
|
185
|
-
const events: OutputEvent[] = [];
|
|
186
|
-
|
|
187
|
-
const textDelta = snapshotDelta(state.lastAssistantText ?? '', snapshot.text);
|
|
188
|
-
if (textDelta) events.push({ type: 'text', text: textDelta });
|
|
189
|
-
state.lastAssistantText = snapshot.text;
|
|
190
|
-
|
|
191
|
-
const thinkingDelta = snapshotDelta(state.lastAssistantThinking ?? '', snapshot.thinking);
|
|
192
|
-
if (thinkingDelta) events.push({ type: 'thinking', text: thinkingDelta });
|
|
193
|
-
state.lastAssistantThinking = snapshot.thinking;
|
|
194
|
-
|
|
195
|
-
return events;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function parseAssistantEvent(
|
|
199
|
-
event: Record<string, unknown>,
|
|
200
|
-
state: ProviderParserState
|
|
201
|
-
): OutputEvent | null {
|
|
202
|
-
const type = getString(event, 'type');
|
|
203
|
-
if (type === 'text_delta') {
|
|
204
|
-
const delta = getString(event, 'delta');
|
|
205
|
-
if (!delta) return null;
|
|
206
|
-
state.lastAssistantText += delta;
|
|
207
|
-
return { type: 'text', text: delta };
|
|
208
|
-
}
|
|
209
|
-
if (type === 'thinking_delta') {
|
|
210
|
-
const delta = getString(event, 'delta');
|
|
211
|
-
if (!delta) return null;
|
|
212
|
-
state.lastAssistantThinking += delta;
|
|
213
|
-
return { type: 'thinking', text: delta };
|
|
214
|
-
}
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
function parseToolExecutionStart(
|
|
219
|
-
event: Record<string, unknown>,
|
|
220
|
-
state: ProviderParserState
|
|
221
|
-
): OutputEvent {
|
|
222
|
-
const toolId = getOptionalString(event, 'toolCallId');
|
|
223
|
-
state.lastToolId = toolId;
|
|
224
|
-
return {
|
|
225
|
-
type: 'tool_call',
|
|
226
|
-
toolName: getOptionalString(event, 'toolName'),
|
|
227
|
-
toolId,
|
|
228
|
-
input: event.args ?? {},
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
function parseToolExecutionUpdate(
|
|
233
|
-
event: Record<string, unknown>,
|
|
234
|
-
state: ProviderParserState
|
|
235
|
-
): OutputEvent | null {
|
|
236
|
-
const toolId = getOptionalString(event, 'toolCallId') ?? state.lastToolId;
|
|
237
|
-
if (toolId !== undefined) state.lastToolId = toolId;
|
|
238
|
-
if (!Object.prototype.hasOwnProperty.call(event, 'partialResult')) return null;
|
|
239
|
-
return {
|
|
240
|
-
type: 'tool_result',
|
|
241
|
-
toolId,
|
|
242
|
-
content: event.partialResult,
|
|
243
|
-
isError: false,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
function parseToolExecutionEnd(
|
|
248
|
-
event: Record<string, unknown>,
|
|
249
|
-
state: ProviderParserState
|
|
250
|
-
): OutputEvent {
|
|
251
|
-
const toolId = getOptionalString(event, 'toolCallId') ?? state.lastToolId;
|
|
252
|
-
return {
|
|
253
|
-
type: 'tool_result',
|
|
254
|
-
toolId,
|
|
255
|
-
content: event.result ?? '',
|
|
256
|
-
isError: getBoolean(event, 'isError') ?? false,
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
function parseTurnEnd(
|
|
154
|
+
function parsePiTurnEnd(
|
|
261
155
|
event: Record<string, unknown>,
|
|
262
156
|
state: ProviderParserState
|
|
263
157
|
): readonly OutputEvent[] {
|
|
264
158
|
const message = getRecord(event, 'message');
|
|
265
|
-
const events
|
|
266
|
-
|
|
267
|
-
events.push(...emitAssistantSnapshot(message, state));
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
const usage = message ? getRecord(message, 'usage') ?? {} : {};
|
|
271
|
-
const stopReason = message ? getString(message, 'stopReason') : null;
|
|
272
|
-
const errorMessage = message ? getString(message, 'errorMessage') : null;
|
|
273
|
-
const snapshot = message ? assistantSnapshot(message) : { text: '', thinking: '' };
|
|
274
|
-
const success = stopReason !== 'error' && stopReason !== 'aborted' && !errorMessage;
|
|
275
|
-
events.push({
|
|
276
|
-
type: 'result',
|
|
277
|
-
success,
|
|
278
|
-
result: success ? snapshot.text || null : null,
|
|
279
|
-
error: success ? null : (errorMessage ?? stopReason ?? 'Pi turn failed'),
|
|
280
|
-
inputTokens: getNumber(usage, 'input') ?? 0,
|
|
281
|
-
outputTokens: getNumber(usage, 'output') ?? 0,
|
|
282
|
-
cacheReadInputTokens: getNumber(usage, 'cacheRead') ?? 0,
|
|
283
|
-
cacheCreationInputTokens: getNumber(usage, 'cacheWrite') ?? 0,
|
|
284
|
-
cost: getRecord(usage, 'cost') ?? null,
|
|
285
|
-
modelUsage: usage,
|
|
286
|
-
});
|
|
159
|
+
const events = message === null ? [] : [...emitAssistantSnapshot(message, state)];
|
|
160
|
+
events.push(parseTurnEndResult(event, { failureMessage: 'Pi turn failed' }));
|
|
287
161
|
return events;
|
|
288
162
|
}
|
|
289
163
|
|
|
@@ -293,18 +167,14 @@ function parseMessageEvent(
|
|
|
293
167
|
state: ProviderParserState
|
|
294
168
|
): readonly OutputEvent[] | OutputEvent | null | undefined {
|
|
295
169
|
if (type === 'message_start') {
|
|
296
|
-
|
|
297
|
-
if (message !== null && getString(message, 'role') === 'assistant') {
|
|
298
|
-
state.lastAssistantText = '';
|
|
299
|
-
state.lastAssistantThinking = '';
|
|
300
|
-
}
|
|
170
|
+
resetAssistantSnapshot(getRecord(event, 'message'), state);
|
|
301
171
|
return null;
|
|
302
172
|
}
|
|
303
173
|
|
|
304
174
|
if (type === 'message_update') {
|
|
305
175
|
const assistantMessageEvent = getRecord(event, 'assistantMessageEvent');
|
|
306
176
|
if (assistantMessageEvent !== null) {
|
|
307
|
-
const assistantEvent =
|
|
177
|
+
const assistantEvent = parseAssistantDelta(assistantMessageEvent, state);
|
|
308
178
|
if (assistantEvent !== null) return assistantEvent;
|
|
309
179
|
}
|
|
310
180
|
const message = getRecord(event, 'message');
|
|
@@ -343,7 +213,7 @@ function parseEvent(
|
|
|
343
213
|
const toolEvent = parseToolEvent(type, parsed, state);
|
|
344
214
|
if (toolEvent !== undefined) return toolEvent;
|
|
345
215
|
|
|
346
|
-
if (type === 'turn_end') return
|
|
216
|
+
if (type === 'turn_end') return parsePiTurnEnd(parsed, state);
|
|
347
217
|
return null;
|
|
348
218
|
}
|
|
349
219
|
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getArray,
|
|
3
|
+
getBoolean,
|
|
4
|
+
getNumber,
|
|
5
|
+
getOptionalString,
|
|
6
|
+
getRecord,
|
|
7
|
+
getString,
|
|
8
|
+
isRecord,
|
|
9
|
+
} from './json';
|
|
10
|
+
import type { OutputEvent, ResultEvent } from './types';
|
|
11
|
+
export interface AssistantStreamState {
|
|
12
|
+
lastAssistantText?: string | undefined;
|
|
13
|
+
lastAssistantThinking?: string | undefined;
|
|
14
|
+
lastToolId?: string | null | undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface AssistantSnapshot {
|
|
18
|
+
readonly text: string;
|
|
19
|
+
readonly thinking: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function assistantSnapshot(message: Record<string, unknown>): AssistantSnapshot {
|
|
23
|
+
if (getString(message, 'role') !== 'assistant') return { text: '', thinking: '' };
|
|
24
|
+
|
|
25
|
+
let text = '';
|
|
26
|
+
let thinking = '';
|
|
27
|
+
for (const item of getArray(message, 'content')) {
|
|
28
|
+
if (!isRecord(item)) continue;
|
|
29
|
+
const type = getString(item, 'type');
|
|
30
|
+
if (type === 'text') text += getString(item, 'text') ?? '';
|
|
31
|
+
else if (type === 'thinking') thinking += getString(item, 'thinking') ?? '';
|
|
32
|
+
}
|
|
33
|
+
return { text, thinking };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function snapshotDelta(previous: string, current: string): string | null {
|
|
37
|
+
if (!current || previous === current) return null;
|
|
38
|
+
if (current.startsWith(previous)) return current.slice(previous.length) || null;
|
|
39
|
+
return current;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function resetAssistantSnapshot(
|
|
43
|
+
message: Record<string, unknown> | null,
|
|
44
|
+
state: AssistantStreamState
|
|
45
|
+
): void {
|
|
46
|
+
if (message !== null && getString(message, 'role') === 'assistant') {
|
|
47
|
+
state.lastAssistantText = '';
|
|
48
|
+
state.lastAssistantThinking = '';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function parseAssistantDelta(
|
|
53
|
+
event: Record<string, unknown>,
|
|
54
|
+
state: AssistantStreamState
|
|
55
|
+
): OutputEvent | null {
|
|
56
|
+
const type = getString(event, 'type');
|
|
57
|
+
const delta = getString(event, 'delta');
|
|
58
|
+
if (!delta) return null;
|
|
59
|
+
if (type === 'text_delta') {
|
|
60
|
+
state.lastAssistantText = (state.lastAssistantText ?? '') + delta;
|
|
61
|
+
return { type: 'text', text: delta };
|
|
62
|
+
}
|
|
63
|
+
if (type === 'thinking_delta') {
|
|
64
|
+
state.lastAssistantThinking = (state.lastAssistantThinking ?? '') + delta;
|
|
65
|
+
return { type: 'thinking', text: delta };
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface AssistantSnapshotOptions {
|
|
71
|
+
readonly retainPreviousOnEmpty?: boolean;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function emitAssistantSnapshot(
|
|
75
|
+
message: Record<string, unknown>,
|
|
76
|
+
state: AssistantStreamState,
|
|
77
|
+
options: AssistantSnapshotOptions = {}
|
|
78
|
+
): readonly OutputEvent[] {
|
|
79
|
+
const snapshot = assistantSnapshot(message);
|
|
80
|
+
const events: OutputEvent[] = [];
|
|
81
|
+
const textDelta = snapshotDelta(state.lastAssistantText ?? '', snapshot.text);
|
|
82
|
+
if (textDelta) events.push({ type: 'text', text: textDelta });
|
|
83
|
+
if (!options.retainPreviousOnEmpty || snapshot.text) state.lastAssistantText = snapshot.text;
|
|
84
|
+
const thinkingDelta = snapshotDelta(state.lastAssistantThinking ?? '', snapshot.thinking);
|
|
85
|
+
if (thinkingDelta) events.push({ type: 'thinking', text: thinkingDelta });
|
|
86
|
+
if (!options.retainPreviousOnEmpty || snapshot.thinking) {
|
|
87
|
+
state.lastAssistantThinking = snapshot.thinking;
|
|
88
|
+
}
|
|
89
|
+
return events;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function parseToolExecutionStart(
|
|
93
|
+
event: Record<string, unknown>,
|
|
94
|
+
state: AssistantStreamState
|
|
95
|
+
): OutputEvent {
|
|
96
|
+
const toolId = getOptionalString(event, 'toolCallId');
|
|
97
|
+
state.lastToolId = toolId;
|
|
98
|
+
return {
|
|
99
|
+
type: 'tool_call',
|
|
100
|
+
toolName: getOptionalString(event, 'toolName'),
|
|
101
|
+
toolId,
|
|
102
|
+
input: event.args ?? {},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function parseToolExecutionUpdate(
|
|
107
|
+
event: Record<string, unknown>,
|
|
108
|
+
state: AssistantStreamState
|
|
109
|
+
): OutputEvent | null {
|
|
110
|
+
const toolId = getOptionalString(event, 'toolCallId') ?? state.lastToolId;
|
|
111
|
+
if (toolId !== undefined) state.lastToolId = toolId;
|
|
112
|
+
if (!Object.prototype.hasOwnProperty.call(event, 'partialResult')) return null;
|
|
113
|
+
return { type: 'tool_result', toolId, content: event.partialResult, isError: false };
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function parseToolExecutionEnd(
|
|
117
|
+
event: Record<string, unknown>,
|
|
118
|
+
state: AssistantStreamState
|
|
119
|
+
): OutputEvent {
|
|
120
|
+
return {
|
|
121
|
+
type: 'tool_result',
|
|
122
|
+
toolId: getOptionalString(event, 'toolCallId') ?? state.lastToolId,
|
|
123
|
+
content: event.result ?? '',
|
|
124
|
+
isError: getBoolean(event, 'isError') ?? false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface TurnEndOptions {
|
|
129
|
+
readonly failureMessage: string;
|
|
130
|
+
readonly resultFallback?: string | null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function parseTurnEndResult(
|
|
134
|
+
event: Record<string, unknown>,
|
|
135
|
+
options: TurnEndOptions
|
|
136
|
+
): ResultEvent {
|
|
137
|
+
const message = getRecord(event, 'message');
|
|
138
|
+
const usage = message ? (getRecord(message, 'usage') ?? {}) : {};
|
|
139
|
+
const stopReason = message ? getString(message, 'stopReason') : null;
|
|
140
|
+
const errorMessage = message ? getString(message, 'errorMessage') : null;
|
|
141
|
+
const snapshot = message ? assistantSnapshot(message) : { text: '', thinking: '' };
|
|
142
|
+
const success = stopReason !== 'error' && stopReason !== 'aborted' && !errorMessage;
|
|
143
|
+
return {
|
|
144
|
+
type: 'result',
|
|
145
|
+
success,
|
|
146
|
+
result: success ? snapshot.text || options.resultFallback || null : null,
|
|
147
|
+
error: success ? null : (errorMessage ?? stopReason ?? options.failureMessage),
|
|
148
|
+
inputTokens: getNumber(usage, 'input') ?? 0,
|
|
149
|
+
outputTokens: getNumber(usage, 'output') ?? 0,
|
|
150
|
+
cacheReadInputTokens: getNumber(usage, 'cacheRead') ?? 0,
|
|
151
|
+
cacheCreationInputTokens: getNumber(usage, 'cacheWrite') ?? 0,
|
|
152
|
+
cost: getRecord(usage, 'cost') ?? null,
|
|
153
|
+
modelUsage: usage,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
|
|
1
3
|
import { classifyProviderError } from './adapters';
|
|
2
4
|
import { envRedactions, commandRedactions } from './contract-env';
|
|
3
5
|
import { contractError } from './contract-errors';
|
|
@@ -15,7 +17,7 @@ import {
|
|
|
15
17
|
schemaMode,
|
|
16
18
|
type RequestData,
|
|
17
19
|
} from './contract-support';
|
|
18
|
-
import { extractErrorStatus } from './errors';
|
|
20
|
+
import { extractErrorStatus, UnsupportedProviderCapabilityError } from './errors';
|
|
19
21
|
import { probeRuntimeProviderCli } from './single-agent-runtime';
|
|
20
22
|
import { getString, isRecord, unknownToMessage } from './json';
|
|
21
23
|
import type { ErrorClassification } from './types';
|
|
@@ -25,7 +27,17 @@ function runBuildCommand(
|
|
|
25
27
|
request: RequestData,
|
|
26
28
|
runtimeSettings?: Record<string, unknown>
|
|
27
29
|
): ContractEnvelope {
|
|
28
|
-
const
|
|
30
|
+
const prepared = buildCommandSpec(request, runtimeSettings);
|
|
31
|
+
if (prepared.invoke.parser === 'omp-sdk-ndjson') {
|
|
32
|
+
const privateRoot = prepared.privateArtifacts?.root;
|
|
33
|
+
if (privateRoot !== undefined) fs.rmSync(privateRoot, { recursive: true, force: true });
|
|
34
|
+
throw new UnsupportedProviderCapabilityError(
|
|
35
|
+
'omp',
|
|
36
|
+
'buildCommand',
|
|
37
|
+
'OMP SDK invocations cannot be exported by build-command because invoke owns the private request, minimal environment, protocol, containment, and cleanup. Use invoke instead.'
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
const { adapter, commandSpec, options } = prepared;
|
|
29
41
|
const webSearch = {
|
|
30
42
|
requested: options.webSearch === true,
|
|
31
43
|
effective: options.webSearch === true && options.cliFeatures?.supportsWebSearch === true,
|