@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,232 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const crypto = require('crypto');
|
|
4
|
+
const {
|
|
5
|
+
BUN_PACKAGE_INTEGRITY,
|
|
6
|
+
BUN_PACKAGE_NAME,
|
|
7
|
+
BUN_PLATFORM_ASSET_INTEGRITIES,
|
|
8
|
+
BUN_RUNTIME_VERSION,
|
|
9
|
+
OMP_NATIVE_PACKAGE_INTEGRITY,
|
|
10
|
+
OMP_NATIVE_PACKAGE_NAME,
|
|
11
|
+
OMP_NATIVE_PLATFORM_ASSET_INTEGRITIES,
|
|
12
|
+
OMP_NATIVE_PLATFORM_PACKAGES,
|
|
13
|
+
OMP_PACKAGE_NAME,
|
|
14
|
+
OMP_SDK_PACKAGE_INTEGRITY,
|
|
15
|
+
OMP_SDK_VERSION,
|
|
16
|
+
} = require('./runtime-identities');
|
|
17
|
+
|
|
18
|
+
function packageTarballUrl(packageName, version) {
|
|
19
|
+
const tarballName = packageName.slice(packageName.lastIndexOf('/') + 1);
|
|
20
|
+
return `https://registry.npmjs.org/${packageName}/-/${tarballName}-${version}.tgz`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function assertLockedPackage(
|
|
24
|
+
packageLock,
|
|
25
|
+
packageName,
|
|
26
|
+
identity,
|
|
27
|
+
lockfileName = 'package-lock.json'
|
|
28
|
+
) {
|
|
29
|
+
const { version, integrity, optional = false } = identity;
|
|
30
|
+
const locked = packageLock.packages?.[`node_modules/${packageName}`];
|
|
31
|
+
if (!locked) throw new Error(`${lockfileName} is missing ${packageName}`);
|
|
32
|
+
if (locked.version !== version) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`${lockfileName} ${packageName} version drift: expected ${version}, got ${
|
|
35
|
+
locked.version || 'unknown'
|
|
36
|
+
}`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
if (locked.resolved !== packageTarballUrl(packageName, version)) {
|
|
40
|
+
throw new Error(`${lockfileName} ${packageName} tarball identity drift`);
|
|
41
|
+
}
|
|
42
|
+
if (locked.integrity !== integrity) {
|
|
43
|
+
throw new Error(`${lockfileName} ${packageName} integrity drift`);
|
|
44
|
+
}
|
|
45
|
+
if (optional && locked.optional !== true) {
|
|
46
|
+
throw new Error(`${lockfileName} ${packageName} must remain an optional platform asset`);
|
|
47
|
+
}
|
|
48
|
+
return locked;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function publishAllowlistIncludes(files, relativePath) {
|
|
52
|
+
const normalizedPath = relativePath.replaceAll('\\', '/').replace(/^\.\//, '');
|
|
53
|
+
return (files || []).some((entry) => {
|
|
54
|
+
const normalizedEntry = String(entry).replaceAll('\\', '/').replace(/^\.\//, '');
|
|
55
|
+
if (normalizedEntry.endsWith('/')) return normalizedPath.startsWith(normalizedEntry);
|
|
56
|
+
return normalizedEntry === normalizedPath;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function assertReleaseIdentity(condition, message) {
|
|
61
|
+
if (!condition) throw new Error(message);
|
|
62
|
+
}
|
|
63
|
+
function lockfileDigest(lockfile) {
|
|
64
|
+
return crypto.createHash('sha256').update(JSON.stringify(lockfile)).digest('hex');
|
|
65
|
+
}
|
|
66
|
+
function sourceDigest(source) {
|
|
67
|
+
return crypto.createHash('sha256').update(source).digest('hex');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function runtimeClosureDigest(lockfile) {
|
|
71
|
+
const packages = Object.fromEntries(
|
|
72
|
+
Object.entries(lockfile.packages || {})
|
|
73
|
+
.filter(([packagePath, metadata]) => packagePath === '' || metadata.dev !== true)
|
|
74
|
+
.map(([packagePath, metadata]) => {
|
|
75
|
+
if (packagePath !== '') return [packagePath, metadata];
|
|
76
|
+
const runtimeRoot = { ...metadata };
|
|
77
|
+
delete runtimeRoot.devDependencies;
|
|
78
|
+
return [packagePath, runtimeRoot];
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
return lockfileDigest({
|
|
82
|
+
lockfileVersion: lockfile.lockfileVersion,
|
|
83
|
+
requires: lockfile.requires,
|
|
84
|
+
packages,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function assertRootSpecs(packageJson, lockfile, lockfileName) {
|
|
89
|
+
const root = lockfile.packages?.[''];
|
|
90
|
+
assertReleaseIdentity(root, `${lockfileName} root package metadata is missing`);
|
|
91
|
+
assertReleaseIdentity(
|
|
92
|
+
packageJson.name === root.name,
|
|
93
|
+
`package.json and ${lockfileName} root package names must match`
|
|
94
|
+
);
|
|
95
|
+
assertReleaseIdentity(
|
|
96
|
+
packageJson.version === root.version,
|
|
97
|
+
`package.json and ${lockfileName} root package versions must match`
|
|
98
|
+
);
|
|
99
|
+
for (const field of ['dependencies', 'optionalDependencies', 'devDependencies']) {
|
|
100
|
+
assertReleaseIdentity(
|
|
101
|
+
lockfileDigest(packageJson[field] || {}) === lockfileDigest(root[field] || {}),
|
|
102
|
+
`${lockfileName} root ${field} must exactly match package.json`
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
return root;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function validatePinnedRuntimeLock(packageJson, lockfile, lockfileName) {
|
|
109
|
+
assertReleaseIdentity(
|
|
110
|
+
lockfile.lockfileVersion === 3,
|
|
111
|
+
`OMP SDK release assets require ${lockfileName} lockfileVersion 3`
|
|
112
|
+
);
|
|
113
|
+
const rootLock = assertRootSpecs(packageJson, lockfile, lockfileName);
|
|
114
|
+
|
|
115
|
+
for (const [packageName, version] of [
|
|
116
|
+
[OMP_PACKAGE_NAME, OMP_SDK_VERSION],
|
|
117
|
+
[BUN_PACKAGE_NAME, BUN_RUNTIME_VERSION],
|
|
118
|
+
]) {
|
|
119
|
+
assertReleaseIdentity(
|
|
120
|
+
packageJson.dependencies?.[packageName] === version,
|
|
121
|
+
`package.json must pin ${packageName} exactly to ${version}`
|
|
122
|
+
);
|
|
123
|
+
assertReleaseIdentity(
|
|
124
|
+
rootLock.dependencies?.[packageName] === version,
|
|
125
|
+
`${lockfileName} root must pin ${packageName} exactly to ${version}`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const ompLock = assertLockedPackage(
|
|
130
|
+
lockfile,
|
|
131
|
+
OMP_PACKAGE_NAME,
|
|
132
|
+
{
|
|
133
|
+
version: OMP_SDK_VERSION,
|
|
134
|
+
integrity: OMP_SDK_PACKAGE_INTEGRITY,
|
|
135
|
+
},
|
|
136
|
+
lockfileName
|
|
137
|
+
);
|
|
138
|
+
assertReleaseIdentity(
|
|
139
|
+
ompLock.bin?.omp === 'dist/cli.js',
|
|
140
|
+
`${lockfileName} OMP SDK binary metadata drift`
|
|
141
|
+
);
|
|
142
|
+
assertReleaseIdentity(
|
|
143
|
+
ompLock.engines?.bun === '>=1.3.14',
|
|
144
|
+
`${lockfileName} OMP SDK Bun engine metadata drift`
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
const nativeLock = assertLockedPackage(
|
|
148
|
+
lockfile,
|
|
149
|
+
OMP_NATIVE_PACKAGE_NAME,
|
|
150
|
+
{
|
|
151
|
+
version: OMP_SDK_VERSION,
|
|
152
|
+
integrity: OMP_NATIVE_PACKAGE_INTEGRITY,
|
|
153
|
+
},
|
|
154
|
+
lockfileName
|
|
155
|
+
);
|
|
156
|
+
assertReleaseIdentity(
|
|
157
|
+
nativeLock.engines?.bun === '>=1.3.14',
|
|
158
|
+
`${lockfileName} OMP native Bun engine metadata drift`
|
|
159
|
+
);
|
|
160
|
+
const expectedNativePlatformNames = Object.values(OMP_NATIVE_PLATFORM_PACKAGES).sort();
|
|
161
|
+
const lockedNativePlatformNames = Object.keys(nativeLock.optionalDependencies || {}).sort();
|
|
162
|
+
assertReleaseIdentity(
|
|
163
|
+
lockfileDigest(expectedNativePlatformNames) === lockfileDigest(lockedNativePlatformNames),
|
|
164
|
+
`${lockfileName} OMP native platform asset set drift`
|
|
165
|
+
);
|
|
166
|
+
for (const packageName of expectedNativePlatformNames) {
|
|
167
|
+
assertReleaseIdentity(
|
|
168
|
+
nativeLock.optionalDependencies[packageName] === OMP_SDK_VERSION,
|
|
169
|
+
`${lockfileName} OMP natives must pin ${packageName} exactly`
|
|
170
|
+
);
|
|
171
|
+
assertLockedPackage(
|
|
172
|
+
lockfile,
|
|
173
|
+
packageName,
|
|
174
|
+
{
|
|
175
|
+
version: OMP_SDK_VERSION,
|
|
176
|
+
integrity: OMP_NATIVE_PLATFORM_ASSET_INTEGRITIES[packageName],
|
|
177
|
+
optional: true,
|
|
178
|
+
},
|
|
179
|
+
lockfileName
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const bunLock = assertLockedPackage(
|
|
184
|
+
lockfile,
|
|
185
|
+
BUN_PACKAGE_NAME,
|
|
186
|
+
{
|
|
187
|
+
version: BUN_RUNTIME_VERSION,
|
|
188
|
+
integrity: BUN_PACKAGE_INTEGRITY,
|
|
189
|
+
},
|
|
190
|
+
lockfileName
|
|
191
|
+
);
|
|
192
|
+
assertReleaseIdentity(
|
|
193
|
+
bunLock.bin?.bun === 'bin/bun.exe',
|
|
194
|
+
`${lockfileName} Bun binary metadata drift`
|
|
195
|
+
);
|
|
196
|
+
assertReleaseIdentity(
|
|
197
|
+
bunLock.bin?.bunx === 'bin/bunx.exe',
|
|
198
|
+
`${lockfileName} Bunx binary metadata drift`
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
const expectedBunPlatformNames = Object.keys(BUN_PLATFORM_ASSET_INTEGRITIES).sort();
|
|
202
|
+
const lockedBunPlatformNames = Object.keys(bunLock.optionalDependencies || {}).sort();
|
|
203
|
+
assertReleaseIdentity(
|
|
204
|
+
lockfileDigest(expectedBunPlatformNames) === lockfileDigest(lockedBunPlatformNames),
|
|
205
|
+
`${lockfileName} Bun platform asset set drift`
|
|
206
|
+
);
|
|
207
|
+
for (const packageName of expectedBunPlatformNames) {
|
|
208
|
+
assertReleaseIdentity(
|
|
209
|
+
bunLock.optionalDependencies[packageName] === BUN_RUNTIME_VERSION,
|
|
210
|
+
`${lockfileName} Bun wrapper must pin ${packageName} exactly`
|
|
211
|
+
);
|
|
212
|
+
assertLockedPackage(
|
|
213
|
+
lockfile,
|
|
214
|
+
packageName,
|
|
215
|
+
{
|
|
216
|
+
version: BUN_RUNTIME_VERSION,
|
|
217
|
+
integrity: BUN_PLATFORM_ASSET_INTEGRITIES[packageName],
|
|
218
|
+
optional: true,
|
|
219
|
+
},
|
|
220
|
+
lockfileName
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
module.exports = {
|
|
226
|
+
assertReleaseIdentity,
|
|
227
|
+
lockfileDigest,
|
|
228
|
+
publishAllowlistIncludes,
|
|
229
|
+
runtimeClosureDigest,
|
|
230
|
+
sourceDigest,
|
|
231
|
+
validatePinnedRuntimeLock,
|
|
232
|
+
};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
BUN_PLATFORM_PACKAGES,
|
|
5
|
+
BUN_RUNTIME_VERSION,
|
|
6
|
+
HOST_SDK_PLATFORM_KEYS,
|
|
7
|
+
HOST_SUPERVISOR_RELATIVE_PATH,
|
|
8
|
+
OMP_NATIVE_PLATFORM_PACKAGES,
|
|
9
|
+
OMP_SDK_VERSION,
|
|
10
|
+
REQUIRED_OMP_SDK_SOURCES,
|
|
11
|
+
} = require('./runtime-identities');
|
|
12
|
+
const {
|
|
13
|
+
assertReleaseIdentity,
|
|
14
|
+
lockfileDigest,
|
|
15
|
+
publishAllowlistIncludes,
|
|
16
|
+
runtimeClosureDigest,
|
|
17
|
+
sourceDigest,
|
|
18
|
+
validatePinnedRuntimeLock,
|
|
19
|
+
} = require('./runtime-lock');
|
|
20
|
+
|
|
21
|
+
function validateOmpSdkReleaseAssets(packageJson, packageLock, options = {}) {
|
|
22
|
+
const packageShrinkwrap = options.packageShrinkwrap;
|
|
23
|
+
assertReleaseIdentity(packageJson, 'OMP SDK release assets require package.json');
|
|
24
|
+
assertReleaseIdentity(packageLock, 'OMP SDK release assets require package-lock.json');
|
|
25
|
+
assertReleaseIdentity(
|
|
26
|
+
packageShrinkwrap,
|
|
27
|
+
'OMP SDK release assets require published npm-shrinkwrap.json'
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
validatePinnedRuntimeLock(packageJson, packageLock, 'package-lock.json');
|
|
31
|
+
validatePinnedRuntimeLock(packageJson, packageShrinkwrap, 'npm-shrinkwrap.json');
|
|
32
|
+
|
|
33
|
+
assertReleaseIdentity(
|
|
34
|
+
packageJson.ompSdkHostContainment?.supervisor ===
|
|
35
|
+
HOST_SUPERVISOR_RELATIVE_PATH.replaceAll('\\', '/') &&
|
|
36
|
+
packageJson.ompSdkHostContainment?.protocolVersion === 1 &&
|
|
37
|
+
lockfileDigest(packageJson.ompSdkHostContainment?.platforms || []) ===
|
|
38
|
+
lockfileDigest([...HOST_SDK_PLATFORM_KEYS]),
|
|
39
|
+
'package.json OMP SDK host containment identity drift'
|
|
40
|
+
);
|
|
41
|
+
const packageLockRuntimeDigest = runtimeClosureDigest(packageLock);
|
|
42
|
+
const shrinkwrapRuntimeDigest = runtimeClosureDigest(packageShrinkwrap);
|
|
43
|
+
assertReleaseIdentity(
|
|
44
|
+
packageLockRuntimeDigest === shrinkwrapRuntimeDigest,
|
|
45
|
+
'npm-shrinkwrap.json runtime closure identity must exactly match package-lock.json'
|
|
46
|
+
);
|
|
47
|
+
const packageLockIdentityDigest = lockfileDigest(packageLock);
|
|
48
|
+
const shrinkwrapIdentityDigest = lockfileDigest(packageShrinkwrap);
|
|
49
|
+
assertReleaseIdentity(
|
|
50
|
+
packageLockIdentityDigest === shrinkwrapIdentityDigest,
|
|
51
|
+
'npm-shrinkwrap.json digest must exactly match package-lock.json'
|
|
52
|
+
);
|
|
53
|
+
const packageLockDigest = options.packageLockSource
|
|
54
|
+
? sourceDigest(options.packageLockSource)
|
|
55
|
+
: packageLockIdentityDigest;
|
|
56
|
+
const shrinkwrapDigest = options.packageShrinkwrapSource
|
|
57
|
+
? sourceDigest(options.packageShrinkwrapSource)
|
|
58
|
+
: shrinkwrapIdentityDigest;
|
|
59
|
+
assertReleaseIdentity(
|
|
60
|
+
packageLockDigest === shrinkwrapDigest,
|
|
61
|
+
'published npm-shrinkwrap.json byte digest must exactly match package-lock.json'
|
|
62
|
+
);
|
|
63
|
+
assertReleaseIdentity(
|
|
64
|
+
publishAllowlistIncludes(packageJson.files, 'npm-shrinkwrap.json'),
|
|
65
|
+
'package.json publish allowlist excludes npm-shrinkwrap.json'
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
const supportedPlatformKeys = [...HOST_SDK_PLATFORM_KEYS].sort();
|
|
69
|
+
assertReleaseIdentity(
|
|
70
|
+
supportedPlatformKeys.every(
|
|
71
|
+
(key) =>
|
|
72
|
+
BUN_PLATFORM_PACKAGES[key] !== undefined && OMP_NATIVE_PLATFORM_PACKAGES[key] !== undefined
|
|
73
|
+
),
|
|
74
|
+
'Host OMP SDK runtime platform set must be covered by pinned Bun and OMP native assets'
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const sourceFiles = options.sourceFiles;
|
|
78
|
+
assertReleaseIdentity(
|
|
79
|
+
Array.isArray(sourceFiles),
|
|
80
|
+
'OMP SDK release source file identities are required'
|
|
81
|
+
);
|
|
82
|
+
for (const sourceFile of REQUIRED_OMP_SDK_SOURCES) {
|
|
83
|
+
assertReleaseIdentity(
|
|
84
|
+
sourceFiles.includes(sourceFile),
|
|
85
|
+
`OMP SDK release source is missing: ${sourceFile}`
|
|
86
|
+
);
|
|
87
|
+
assertReleaseIdentity(
|
|
88
|
+
publishAllowlistIncludes(packageJson.files, sourceFile),
|
|
89
|
+
`package.json publish allowlist excludes ${sourceFile}`
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return Object.freeze({
|
|
94
|
+
bunPlatformPackages: Object.freeze(Object.values(BUN_PLATFORM_PACKAGES).sort()),
|
|
95
|
+
bunVersion: BUN_RUNTIME_VERSION,
|
|
96
|
+
ompNativePlatformPackages: Object.freeze(Object.values(OMP_NATIVE_PLATFORM_PACKAGES).sort()),
|
|
97
|
+
ompVersion: OMP_SDK_VERSION,
|
|
98
|
+
runtimeClosureSha256: packageLockRuntimeDigest,
|
|
99
|
+
shrinkwrapSha256: shrinkwrapDigest,
|
|
100
|
+
sourceFiles: REQUIRED_OMP_SDK_SOURCES,
|
|
101
|
+
supportedPlatforms: Object.freeze(supportedPlatformKeys),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
module.exports = { validateOmpSdkReleaseAssets };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
HOST_SUPERVISOR_RELATIVE_PATH,
|
|
5
|
+
BUN_PACKAGE_NAME,
|
|
6
|
+
BUN_PLATFORM_PACKAGES,
|
|
7
|
+
BUN_RUNTIME_VERSION,
|
|
8
|
+
OMP_NATIVE_PACKAGE_NAME,
|
|
9
|
+
OMP_NATIVE_PLATFORM_PACKAGES,
|
|
10
|
+
OMP_PACKAGE_NAME,
|
|
11
|
+
OMP_SDK_VERSION,
|
|
12
|
+
REQUIRED_OMP_SDK_SOURCES,
|
|
13
|
+
SIDECAR_RELATIVE_PATH,
|
|
14
|
+
assertPackageIdentity,
|
|
15
|
+
resolveOmpSdkRuntime,
|
|
16
|
+
} = require('./runtime-identities');
|
|
17
|
+
const { validateOmpSdkReleaseAssets } = require('./runtime-release');
|
|
18
|
+
|
|
19
|
+
module.exports = {
|
|
20
|
+
HOST_SUPERVISOR_RELATIVE_PATH,
|
|
21
|
+
BUN_PACKAGE_NAME,
|
|
22
|
+
BUN_PLATFORM_PACKAGES,
|
|
23
|
+
BUN_RUNTIME_VERSION,
|
|
24
|
+
OMP_NATIVE_PACKAGE_NAME,
|
|
25
|
+
OMP_NATIVE_PLATFORM_PACKAGES,
|
|
26
|
+
OMP_PACKAGE_NAME,
|
|
27
|
+
OMP_SDK_VERSION,
|
|
28
|
+
REQUIRED_OMP_SDK_SOURCES,
|
|
29
|
+
SIDECAR_RELATIVE_PATH,
|
|
30
|
+
assertPackageIdentity,
|
|
31
|
+
resolveOmpSdkRuntime,
|
|
32
|
+
validateOmpSdkReleaseAssets,
|
|
33
|
+
};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
|
|
3
|
+
import { closeSync, promises as fs } from 'node:fs';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
OMP_SDK_BACKEND_VERSION,
|
|
7
|
+
OMP_SDK_BUN_VERSION,
|
|
8
|
+
OMP_SDK_MAX_REQUEST_BYTES,
|
|
9
|
+
parseOmpSdkProtocolFrame,
|
|
10
|
+
type OmpSdkErrorCategory,
|
|
11
|
+
type OmpSdkErrorCode,
|
|
12
|
+
type OmpSdkProtocolFrame,
|
|
13
|
+
} from '../../src/agent-cli-provider/omp/sdk-protocol';
|
|
14
|
+
import {
|
|
15
|
+
executeOmpSdkSidecar,
|
|
16
|
+
serializeOmpSdkFrame,
|
|
17
|
+
} from '../../src/agent-cli-provider/omp/sdk-sidecar';
|
|
18
|
+
|
|
19
|
+
function safeError(
|
|
20
|
+
runId: string,
|
|
21
|
+
code: OmpSdkErrorCode,
|
|
22
|
+
category: OmpSdkErrorCategory
|
|
23
|
+
): OmpSdkProtocolFrame {
|
|
24
|
+
return parseOmpSdkProtocolFrame({
|
|
25
|
+
protocolVersion: 1,
|
|
26
|
+
type: 'error',
|
|
27
|
+
runId,
|
|
28
|
+
backend: { id: 'omp-sdk', version: OMP_SDK_BACKEND_VERSION },
|
|
29
|
+
runtime: { name: 'bun', version: OMP_SDK_BUN_VERSION },
|
|
30
|
+
error: { code, category, retryable: false, redacted: true },
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function runIdFrom(value: unknown): string {
|
|
35
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) return 'unknown';
|
|
36
|
+
const runId = (value as Record<string, unknown>).runId;
|
|
37
|
+
return typeof runId === 'string' &&
|
|
38
|
+
/^[A-Za-z0-9][A-Za-z0-9._:-]*$/.test(runId) &&
|
|
39
|
+
Buffer.byteLength(runId) <= 128
|
|
40
|
+
? runId
|
|
41
|
+
: 'unknown';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function assertPrivateRequest(requestPath: string): Promise<void> {
|
|
45
|
+
const stat = await fs.stat(requestPath);
|
|
46
|
+
if (
|
|
47
|
+
!stat.isFile() ||
|
|
48
|
+
stat.size <= 0 ||
|
|
49
|
+
stat.size > OMP_SDK_MAX_REQUEST_BYTES ||
|
|
50
|
+
(stat.mode & 0o077) !== 0
|
|
51
|
+
) {
|
|
52
|
+
throw new Error('invalid private request file');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const originalConsole = {
|
|
57
|
+
debug: console.debug,
|
|
58
|
+
error: console.error,
|
|
59
|
+
info: console.info,
|
|
60
|
+
log: console.log,
|
|
61
|
+
warn: console.warn,
|
|
62
|
+
};
|
|
63
|
+
const originalStdoutWrite = process.stdout.write.bind(process.stdout);
|
|
64
|
+
const originalStderrWrite = process.stderr.write.bind(process.stderr);
|
|
65
|
+
process.stdout.write = (() => true) as typeof process.stdout.write;
|
|
66
|
+
process.stderr.write = (() => true) as typeof process.stderr.write;
|
|
67
|
+
console.debug = () => undefined;
|
|
68
|
+
console.error = () => undefined;
|
|
69
|
+
console.info = () => undefined;
|
|
70
|
+
console.log = () => undefined;
|
|
71
|
+
console.warn = () => undefined;
|
|
72
|
+
|
|
73
|
+
const abortController = new AbortController();
|
|
74
|
+
const abort = (): void => abortController.abort();
|
|
75
|
+
process.once('SIGINT', abort);
|
|
76
|
+
process.once('SIGTERM', abort);
|
|
77
|
+
|
|
78
|
+
let frame: OmpSdkProtocolFrame;
|
|
79
|
+
let requestPath: string | undefined;
|
|
80
|
+
let request: unknown;
|
|
81
|
+
let removeRequest = false;
|
|
82
|
+
async function main(): Promise<void> {
|
|
83
|
+
try {
|
|
84
|
+
if (process.argv.length !== 3) throw new Error('one request path is required');
|
|
85
|
+
requestPath = process.argv[2];
|
|
86
|
+
if (requestPath === undefined) throw new Error('request path is required');
|
|
87
|
+
await assertPrivateRequest(requestPath);
|
|
88
|
+
removeRequest = true;
|
|
89
|
+
request = JSON.parse(await fs.readFile(requestPath, 'utf8')) as unknown;
|
|
90
|
+
frame = await executeOmpSdkSidecar(request, { signal: abortController.signal });
|
|
91
|
+
} catch {
|
|
92
|
+
try {
|
|
93
|
+
closeSync(3);
|
|
94
|
+
} catch {
|
|
95
|
+
// The credential channel may already have been consumed and closed.
|
|
96
|
+
}
|
|
97
|
+
frame = safeError(runIdFrom(request), 'invalid-request', 'request');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (requestPath !== undefined && removeRequest) {
|
|
101
|
+
try {
|
|
102
|
+
await fs.unlink(requestPath);
|
|
103
|
+
} catch {
|
|
104
|
+
frame = safeError(runIdFrom(request), 'cleanup-error', 'cleanup');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
process.removeListener('SIGINT', abort);
|
|
108
|
+
process.removeListener('SIGTERM', abort);
|
|
109
|
+
if (abortController.signal.aborted) {
|
|
110
|
+
frame = safeError(runIdFrom(request), 'cancelled', 'cancelled');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
console.debug = originalConsole.debug;
|
|
114
|
+
console.error = originalConsole.error;
|
|
115
|
+
console.info = originalConsole.info;
|
|
116
|
+
console.log = originalConsole.log;
|
|
117
|
+
console.warn = originalConsole.warn;
|
|
118
|
+
process.stdout.write = originalStdoutWrite as typeof process.stdout.write;
|
|
119
|
+
process.stderr.write = originalStderrWrite as typeof process.stderr.write;
|
|
120
|
+
originalStdoutWrite(serializeOmpSdkFrame(frame));
|
|
121
|
+
process.exitCode = frame.type === 'result' ? 0 : 1;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
void main();
|
|
@@ -190,12 +190,17 @@ function normalizeBaselineRename(baseline, change) {
|
|
|
190
190
|
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
191
191
|
fs.renameSync(source, target);
|
|
192
192
|
}
|
|
193
|
+
function applyBaselineDeletion(baseline, change) {
|
|
194
|
+
if (change.kind !== 'D') return;
|
|
195
|
+
fs.rmSync(safePath(baseline, change.path), { recursive: true, force: true });
|
|
196
|
+
}
|
|
193
197
|
|
|
194
198
|
function createRequest(repo, baseline, changes, options) {
|
|
195
199
|
const overlays = [];
|
|
196
200
|
const files = [];
|
|
197
201
|
for (const change of changes) {
|
|
198
202
|
normalizeBaselineRename(baseline, change);
|
|
203
|
+
applyBaselineDeletion(baseline, change);
|
|
199
204
|
if (change.kind === 'D') {
|
|
200
205
|
continue;
|
|
201
206
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const https = require('https');
|
|
5
5
|
const { execFileSync } = require('child_process');
|
|
6
|
+
const { REQUIRED_OMP_SDK_SOURCES, validateOmpSdkReleaseAssets } = require('./omp/runtime');
|
|
6
7
|
|
|
7
8
|
const RELEASE_ORDER = ['patch', 'minor', 'major'];
|
|
8
9
|
const REQUIRED_PLUGINS = [
|
|
@@ -218,9 +219,25 @@ async function releaseSignal() {
|
|
|
218
219
|
async function main() {
|
|
219
220
|
const packageJson = readJson('package.json');
|
|
220
221
|
const pluginNames = validateReleaseConfig(packageJson);
|
|
222
|
+
const packageLockSource = fs.readFileSync('package-lock.json');
|
|
223
|
+
const packageLock = JSON.parse(packageLockSource);
|
|
224
|
+
const packageShrinkwrapSource = fs.existsSync('npm-shrinkwrap.json')
|
|
225
|
+
? fs.readFileSync('npm-shrinkwrap.json')
|
|
226
|
+
: null;
|
|
227
|
+
const packageShrinkwrap = packageShrinkwrapSource ? JSON.parse(packageShrinkwrapSource) : null;
|
|
228
|
+
const sourceFiles = REQUIRED_OMP_SDK_SOURCES.filter((sourceFile) => fs.existsSync(sourceFile));
|
|
229
|
+
const runtimeAssets = validateOmpSdkReleaseAssets(packageJson, packageLock, {
|
|
230
|
+
packageLockSource,
|
|
231
|
+
packageShrinkwrap,
|
|
232
|
+
packageShrinkwrapSource,
|
|
233
|
+
sourceFiles,
|
|
234
|
+
});
|
|
221
235
|
const signal = await releaseSignal();
|
|
222
236
|
|
|
223
237
|
console.log(`Effective release plugins: ${pluginNames.join(', ')}`);
|
|
238
|
+
console.log(`Published runtime closure SHA-256: ${runtimeAssets.runtimeClosureSha256}`);
|
|
239
|
+
console.log(`Published shrinkwrap SHA-256: ${runtimeAssets.shrinkwrapSha256}`);
|
|
240
|
+
console.log(`Supported OMP SDK platforms: ${runtimeAssets.supportedPlatforms.join(', ')}`);
|
|
224
241
|
console.log(`Latest release tag: ${signal.latestTag}`);
|
|
225
242
|
console.log(`Commits since tag: ${signal.commitCount}`);
|
|
226
243
|
if (signal.prTitle) console.log(`Release PR title: ${signal.prTitle}`);
|
|
@@ -241,8 +258,10 @@ if (require.main === module) {
|
|
|
241
258
|
}
|
|
242
259
|
|
|
243
260
|
module.exports = {
|
|
261
|
+
REQUIRED_OMP_SDK_SOURCES,
|
|
244
262
|
analyzeMessage,
|
|
245
263
|
maxReleaseType,
|
|
246
264
|
releaseTypeForMessages,
|
|
265
|
+
validateOmpSdkReleaseAssets,
|
|
247
266
|
validateReleaseConfig,
|
|
248
267
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { appendJsonSchemaPrompt } from '../schema';
|
|
2
|
+
import { snapshotDelta } from '../assistant-stream';
|
|
2
3
|
import { contractError } from '../contract-errors';
|
|
3
4
|
import {
|
|
4
5
|
getArray,
|
|
@@ -64,10 +65,7 @@ const DEFAULT_LEVEL_MAPPING: Readonly<Record<ModelLevel, LevelModelSpec>> = {
|
|
|
64
65
|
level3: { rank: 3, model: null },
|
|
65
66
|
};
|
|
66
67
|
|
|
67
|
-
function detectCliFeatures(
|
|
68
|
-
meta: AcpAdapterMetadata,
|
|
69
|
-
helpText?: string | null
|
|
70
|
-
): AcpCliFeatures {
|
|
68
|
+
function detectCliFeatures(meta: AcpAdapterMetadata, helpText?: string | null): AcpCliFeatures {
|
|
71
69
|
const help = helpText ?? '';
|
|
72
70
|
const unknown = !help;
|
|
73
71
|
return {
|
|
@@ -183,17 +181,13 @@ function thinkingSnapshots(state: ProviderParserState): Map<string, string> {
|
|
|
183
181
|
return state.assistantThinkingByMessageId;
|
|
184
182
|
}
|
|
185
183
|
|
|
186
|
-
function toolCalls(
|
|
184
|
+
function toolCalls(
|
|
185
|
+
state: ProviderParserState
|
|
186
|
+
): Map<string, { name: string | null | undefined; input: unknown }> {
|
|
187
187
|
if (!state.toolCalls) state.toolCalls = new Map();
|
|
188
188
|
return state.toolCalls;
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
-
function snapshotDelta(previous: string, current: string): string | null {
|
|
192
|
-
if (!current || previous === current) return null;
|
|
193
|
-
if (current.startsWith(previous)) return current.slice(previous.length) || null;
|
|
194
|
-
return current;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
191
|
function resolveChunkSnapshot(previous: string, chunk: string): string {
|
|
198
192
|
if (!previous) return chunk;
|
|
199
193
|
if (!chunk || previous === chunk) return previous;
|
|
@@ -270,7 +264,9 @@ function parseAssistantChunk(
|
|
|
270
264
|
const textByMessageId = textSnapshots(state);
|
|
271
265
|
const thinkingByMessageId = thinkingSnapshots(state);
|
|
272
266
|
const nextText = options.textTypes ? joinTextBlocks(content, options.textTypes) : null;
|
|
273
|
-
const nextThinking = options.thinkingTypes
|
|
267
|
+
const nextThinking = options.thinkingTypes
|
|
268
|
+
? joinTextBlocks(content, options.thinkingTypes)
|
|
269
|
+
: null;
|
|
274
270
|
|
|
275
271
|
const events: OutputEvent[] = [];
|
|
276
272
|
if (nextText !== null) {
|
|
@@ -331,8 +327,7 @@ function parseToolCallUpdate(
|
|
|
331
327
|
update.rawOutput ?? update.output ?? update.partialResult ?? update.content ?? update.result;
|
|
332
328
|
if (content === undefined) return null;
|
|
333
329
|
const status = getOptionalString(update, 'status');
|
|
334
|
-
const isError =
|
|
335
|
-
getBoolean(update, 'isError') ?? (status === 'failed' || status === 'cancelled');
|
|
330
|
+
const isError = getBoolean(update, 'isError') ?? (status === 'failed' || status === 'cancelled');
|
|
336
331
|
return {
|
|
337
332
|
type: 'tool_result',
|
|
338
333
|
toolId,
|
|
@@ -361,7 +356,7 @@ function resultFromStopReason(
|
|
|
361
356
|
type: 'result',
|
|
362
357
|
success,
|
|
363
358
|
result: success ? resultText : null,
|
|
364
|
-
error: success ? null : explicitError ?? stopReason ?? 'ACP prompt failed.',
|
|
359
|
+
error: success ? null : (explicitError ?? stopReason ?? 'ACP prompt failed.'),
|
|
365
360
|
...(state.usage?.inputTokens === undefined ? {} : { inputTokens: state.usage.inputTokens }),
|
|
366
361
|
...(state.usage?.outputTokens === undefined ? {} : { outputTokens: state.usage.outputTokens }),
|
|
367
362
|
...(state.usage?.cacheReadInputTokens === undefined
|
|
@@ -414,7 +409,10 @@ function parseSessionUpdate(
|
|
|
414
409
|
return null;
|
|
415
410
|
}
|
|
416
411
|
|
|
417
|
-
function parseRpcObject(
|
|
412
|
+
function parseRpcObject(
|
|
413
|
+
parsed: Record<string, unknown>,
|
|
414
|
+
state: ProviderParserState
|
|
415
|
+
): ProviderParseResult {
|
|
418
416
|
const method = getOptionalString(parsed, 'method');
|
|
419
417
|
if (method === 'session/update') {
|
|
420
418
|
const params = getRecord(parsed, 'params') ?? {};
|
|
@@ -430,7 +428,10 @@ function parseRpcObject(parsed: Record<string, unknown>, state: ProviderParserSt
|
|
|
430
428
|
return null;
|
|
431
429
|
}
|
|
432
430
|
|
|
433
|
-
function parseEvent(
|
|
431
|
+
function parseEvent(
|
|
432
|
+
line: string,
|
|
433
|
+
state: ProviderParserState
|
|
434
|
+
): OutputEvent | readonly OutputEvent[] | null {
|
|
434
435
|
const parsed = tryParseJson(line);
|
|
435
436
|
if (!isRecord(parsed)) return null;
|
|
436
437
|
return parseRpcObject(parsed, state);
|