@elie-laloum/outpost 5.0.0 → 7.0.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/CHANGELOG.md +54 -0
- package/README.md +11 -11
- package/SECURITY.md +10 -0
- package/dist/adapters/agents/antigravity-adapter.d.ts +3 -0
- package/dist/adapters/agents/antigravity-adapter.js +41 -0
- package/dist/adapters/agents/antigravity-adapter.js.map +1 -0
- package/dist/adapters/agents/antigravity-authentication.d.ts +2 -0
- package/dist/adapters/agents/antigravity-authentication.js +27 -0
- package/dist/adapters/agents/antigravity-authentication.js.map +1 -0
- package/dist/adapters/agents/antigravity-diagnostics.d.ts +1 -0
- package/dist/adapters/agents/antigravity-diagnostics.js +6 -0
- package/dist/adapters/agents/antigravity-diagnostics.js.map +1 -0
- package/dist/adapters/agents/antigravity-events.d.ts +2 -0
- package/dist/adapters/agents/antigravity-events.js +75 -0
- package/dist/adapters/agents/antigravity-events.js.map +1 -0
- package/dist/adapters/agents/antigravity-request.d.ts +5 -0
- package/dist/adapters/agents/antigravity-request.js +37 -0
- package/dist/adapters/agents/antigravity-request.js.map +1 -0
- package/dist/adapters/agents/antigravity.constants.d.ts +3 -0
- package/dist/adapters/agents/antigravity.constants.js +4 -0
- package/dist/adapters/agents/antigravity.constants.js.map +1 -0
- package/dist/adapters/agents/{gemini.types.d.ts → antigravity.types.d.ts} +2 -2
- package/dist/adapters/agents/antigravity.types.js +2 -0
- package/dist/adapters/agents/antigravity.types.js.map +1 -0
- package/dist/adapters/agents/authentication.constants.d.ts +19 -9
- package/dist/adapters/agents/authentication.constants.js +12 -9
- package/dist/adapters/agents/authentication.constants.js.map +1 -1
- package/dist/adapters/agents/authentication.d.ts +11 -2
- package/dist/adapters/agents/authentication.js +70 -47
- package/dist/adapters/agents/authentication.js.map +1 -1
- package/dist/adapters/agents/authentication.types.d.ts +20 -0
- package/dist/adapters/agents/authentication.types.js +2 -0
- package/dist/adapters/agents/authentication.types.js.map +1 -0
- package/dist/adapters/agents/claude-adapter.js +4 -2
- package/dist/adapters/agents/claude-adapter.js.map +1 -1
- package/dist/adapters/agents/claude-authentication.d.ts +2 -0
- package/dist/adapters/agents/claude-authentication.js +34 -0
- package/dist/adapters/agents/claude-authentication.js.map +1 -0
- package/dist/adapters/agents/claude-events.js +52 -9
- package/dist/adapters/agents/claude-events.js.map +1 -1
- package/dist/adapters/agents/claude-request.js +2 -0
- package/dist/adapters/agents/claude-request.js.map +1 -1
- package/dist/adapters/agents/cli-diagnostics.constants.d.ts +6 -6
- package/dist/adapters/agents/cli-diagnostics.constants.js +6 -6
- package/dist/adapters/agents/cli-diagnostics.constants.js.map +1 -1
- package/dist/adapters/agents/cli-diagnostics.d.ts +1 -0
- package/dist/adapters/agents/cli-diagnostics.js +18 -0
- package/dist/adapters/agents/cli-diagnostics.js.map +1 -1
- package/dist/adapters/agents/codex-adapter.js +4 -2
- package/dist/adapters/agents/codex-adapter.js.map +1 -1
- package/dist/adapters/agents/codex-authentication.d.ts +3 -0
- package/dist/adapters/agents/codex-authentication.js +47 -0
- package/dist/adapters/agents/codex-authentication.js.map +1 -0
- package/dist/adapters/agents/codex-events.js +28 -2
- package/dist/adapters/agents/codex-events.js.map +1 -1
- package/dist/adapters/agents/copilot-adapter.d.ts +3 -0
- package/dist/adapters/agents/copilot-adapter.js +45 -0
- package/dist/adapters/agents/copilot-adapter.js.map +1 -0
- package/dist/adapters/agents/copilot-authentication.d.ts +2 -0
- package/dist/adapters/agents/copilot-authentication.js +46 -0
- package/dist/adapters/agents/copilot-authentication.js.map +1 -0
- package/dist/adapters/agents/copilot-diagnostics.d.ts +1 -0
- package/dist/adapters/agents/copilot-diagnostics.js +6 -0
- package/dist/adapters/agents/copilot-diagnostics.js.map +1 -0
- package/dist/adapters/agents/copilot-events.d.ts +2 -0
- package/dist/adapters/agents/copilot-events.js +66 -0
- package/dist/adapters/agents/copilot-events.js.map +1 -0
- package/dist/adapters/agents/copilot-request.d.ts +5 -0
- package/dist/adapters/agents/copilot-request.js +24 -0
- package/dist/adapters/agents/copilot-request.js.map +1 -0
- package/dist/adapters/agents/copilot-usage.d.ts +3 -0
- package/dist/adapters/agents/copilot-usage.js +19 -0
- package/dist/adapters/agents/copilot-usage.js.map +1 -0
- package/dist/adapters/agents/copilot.types.d.ts +6 -0
- package/dist/adapters/agents/copilot.types.js +2 -0
- package/dist/adapters/agents/copilot.types.js.map +1 -0
- package/dist/adapters/agents/event-decoder.d.ts +2 -2
- package/dist/adapters/agents/event-decoder.js +6 -5
- package/dist/adapters/agents/event-decoder.js.map +1 -1
- package/dist/adapters/agents/kimi-adapter.d.ts +3 -0
- package/dist/adapters/agents/kimi-adapter.js +51 -0
- package/dist/adapters/agents/kimi-adapter.js.map +1 -0
- package/dist/adapters/agents/kimi-authentication.d.ts +3 -0
- package/dist/adapters/agents/kimi-authentication.js +63 -0
- package/dist/adapters/agents/kimi-authentication.js.map +1 -0
- package/dist/adapters/agents/kimi-diagnostics.d.ts +2 -0
- package/dist/adapters/agents/kimi-diagnostics.js +14 -0
- package/dist/adapters/agents/kimi-diagnostics.js.map +1 -0
- package/dist/adapters/agents/kimi-events.d.ts +2 -0
- package/dist/adapters/agents/kimi-events.js +55 -0
- package/dist/adapters/agents/kimi-events.js.map +1 -0
- package/dist/adapters/agents/kimi-fork.d.ts +2 -0
- package/dist/adapters/agents/kimi-fork.js +11 -0
- package/dist/adapters/agents/kimi-fork.js.map +1 -0
- package/dist/adapters/agents/{gemini-request.d.ts → kimi-request.d.ts} +2 -2
- package/dist/adapters/agents/kimi-request.js +33 -0
- package/dist/adapters/agents/kimi-request.js.map +1 -0
- package/dist/adapters/agents/kimi-usage.d.ts +2 -0
- package/dist/adapters/agents/kimi-usage.js +7 -0
- package/dist/adapters/agents/kimi-usage.js.map +1 -0
- package/dist/adapters/agents/kimi.constants.d.ts +13 -0
- package/dist/adapters/agents/kimi.constants.js +14 -0
- package/dist/adapters/agents/kimi.constants.js.map +1 -0
- package/dist/adapters/agents/kimi.types.d.ts +7 -0
- package/dist/adapters/agents/kimi.types.js +2 -0
- package/dist/adapters/agents/kimi.types.js.map +1 -0
- package/dist/adapters/agents/model-support.constants.d.ts +3 -1
- package/dist/adapters/agents/model-support.constants.js +12 -2
- package/dist/adapters/agents/model-support.constants.js.map +1 -1
- package/dist/adapters/agents/protocol-fixtures.constants.d.ts +2 -2
- package/dist/adapters/agents/protocol-fixtures.constants.js +131 -9
- package/dist/adapters/agents/protocol-fixtures.constants.js.map +1 -1
- package/dist/adapters/agents/protocol-fixtures.types.d.ts +1 -0
- package/dist/adapters/agents/protocol-fixtures.types.js.map +1 -1
- package/dist/adapters/agents/protocol.d.ts +1 -0
- package/dist/adapters/agents/protocol.js +9 -0
- package/dist/adapters/agents/protocol.js.map +1 -1
- package/dist/adapters/agents/session-usage.constants.d.ts +10 -0
- package/dist/adapters/agents/session-usage.constants.js +110 -0
- package/dist/adapters/agents/session-usage.constants.js.map +1 -0
- package/dist/adapters/agents/session-usage.d.ts +5 -0
- package/dist/adapters/agents/session-usage.js +45 -0
- package/dist/adapters/agents/session-usage.js.map +1 -0
- package/dist/adapters/agents/settings.types.d.ts +1 -0
- package/dist/adapters/agents/settings.types.js.map +1 -1
- package/dist/adapters/agents/tool-result.d.ts +2 -0
- package/dist/adapters/agents/tool-result.js +17 -0
- package/dist/adapters/agents/tool-result.js.map +1 -0
- package/dist/adapters/models/anthropic-response.js +3 -0
- package/dist/adapters/models/anthropic-response.js.map +1 -1
- package/dist/adapters/models/http-provider.js +6 -1
- package/dist/adapters/models/http-provider.js.map +1 -1
- package/dist/adapters/models/openai-responses.js +10 -0
- package/dist/adapters/models/openai-responses.js.map +1 -1
- package/dist/adapters/models/retry-after.d.ts +1 -0
- package/dist/adapters/models/retry-after.js +16 -0
- package/dist/adapters/models/retry-after.js.map +1 -0
- package/dist/application/activity-watchdog.js +1 -2
- package/dist/application/activity-watchdog.js.map +1 -1
- package/dist/application/agent-authentication.d.ts +4 -0
- package/dist/application/agent-authentication.js +32 -0
- package/dist/application/agent-authentication.js.map +1 -0
- package/dist/application/agent-bootstrap.constants.d.ts +2 -5
- package/dist/application/agent-bootstrap.constants.js +27 -4
- package/dist/application/agent-bootstrap.constants.js.map +1 -1
- package/dist/application/agent-bootstrap.js +39 -12
- package/dist/application/agent-bootstrap.js.map +1 -1
- package/dist/application/agent-bootstrap.types.d.ts +19 -0
- package/dist/application/agent-bootstrap.types.js +2 -0
- package/dist/application/agent-bootstrap.types.js.map +1 -0
- package/dist/application/agent-output.js +74 -8
- package/dist/application/agent-output.js.map +1 -1
- package/dist/application/agent-request.d.ts +3 -0
- package/dist/application/agent-request.js +11 -0
- package/dist/application/agent-request.js.map +1 -0
- package/dist/application/agent-turn.js +74 -6
- package/dist/application/agent-turn.js.map +1 -1
- package/dist/application/agent-usage.d.ts +6 -0
- package/dist/application/agent-usage.js +57 -0
- package/dist/application/agent-usage.js.map +1 -0
- package/dist/application/attach.js +2 -0
- package/dist/application/attach.js.map +1 -1
- package/dist/application/credential-installer.constants.d.ts +1 -0
- package/dist/application/credential-installer.constants.js +22 -0
- package/dist/application/credential-installer.constants.js.map +1 -0
- package/dist/application/custom-turn.js +44 -49
- package/dist/application/custom-turn.js.map +1 -1
- package/dist/application/dispatch-observation.d.ts +1 -1
- package/dist/application/dispatch-observation.js +141 -21
- package/dist/application/dispatch-observation.js.map +1 -1
- package/dist/application/dispatch-observation.types.d.ts +2 -0
- package/dist/application/dispatch-observation.types.js.map +1 -1
- package/dist/application/dispatch-validation.js +2 -0
- package/dist/application/dispatch-validation.js.map +1 -1
- package/dist/application/dispatch.js +1 -1
- package/dist/application/dispatch.js.map +1 -1
- package/dist/application/doctor-agent.constants.d.ts +2 -8
- package/dist/application/doctor-agent.constants.js +43 -6
- package/dist/application/doctor-agent.constants.js.map +1 -1
- package/dist/application/doctor-agent.d.ts +2 -1
- package/dist/application/doctor-agent.js +15 -3
- package/dist/application/doctor-agent.js.map +1 -1
- package/dist/application/doctor-image.js +4 -6
- package/dist/application/doctor-image.js.map +1 -1
- package/dist/application/doctor-protocol.js +6 -11
- package/dist/application/doctor-protocol.js.map +1 -1
- package/dist/application/doctor-protocol.types.d.ts +1 -1
- package/dist/application/doctor-protocol.types.js.map +1 -1
- package/dist/application/doctor-sandbox.js +2 -5
- package/dist/application/doctor-sandbox.js.map +1 -1
- package/dist/application/doctor.js +28 -10
- package/dist/application/doctor.js.map +1 -1
- package/dist/application/doctor.types.d.ts +10 -1
- package/dist/application/doctor.types.js.map +1 -1
- package/dist/application/execution.constants.d.ts +2 -0
- package/dist/application/execution.constants.js +2 -0
- package/dist/application/execution.constants.js.map +1 -1
- package/dist/application/execution.types.d.ts +8 -0
- package/dist/application/execution.types.js.map +1 -1
- package/dist/application/harness-budget.d.ts +3 -0
- package/dist/application/harness-budget.js +42 -0
- package/dist/application/harness-budget.js.map +1 -0
- package/dist/application/harness-budget.types.d.ts +5 -0
- package/dist/application/harness-budget.types.js +2 -0
- package/dist/application/harness-budget.types.js.map +1 -0
- package/dist/application/harness-hooks.js +34 -3
- package/dist/application/harness-hooks.js.map +1 -1
- package/dist/application/harness-loop.js +52 -24
- package/dist/application/harness-loop.js.map +1 -1
- package/dist/application/harness-model-provider.d.ts +3 -0
- package/dist/application/harness-model-provider.js +49 -0
- package/dist/application/harness-model-provider.js.map +1 -0
- package/dist/application/harness-model-provider.types.d.ts +10 -0
- package/dist/application/harness-model-provider.types.js +2 -0
- package/dist/application/harness-model-provider.types.js.map +1 -0
- package/dist/application/harness-subagent.d.ts +4 -0
- package/dist/application/harness-subagent.js +110 -0
- package/dist/application/harness-subagent.js.map +1 -0
- package/dist/application/harness.types.d.ts +11 -0
- package/dist/application/harness.types.js.map +1 -1
- package/dist/application/lifecycle-hooks.d.ts +1 -1
- package/dist/application/lifecycle-hooks.js +5 -4
- package/dist/application/lifecycle-hooks.js.map +1 -1
- package/dist/application/observed-lease.d.ts +3 -0
- package/dist/application/observed-lease.js +26 -0
- package/dist/application/observed-lease.js.map +1 -0
- package/dist/application/outpost.types.d.ts +3 -1
- package/dist/application/outpost.types.js.map +1 -1
- package/dist/application/output-lines.d.ts +4 -0
- package/dist/application/output-lines.js +28 -0
- package/dist/application/output-lines.js.map +1 -0
- package/dist/application/queue-worker.js +1 -1
- package/dist/application/queue-worker.js.map +1 -1
- package/dist/application/queue-worker.types.d.ts +1 -0
- package/dist/application/queue-worker.types.js.map +1 -1
- package/dist/application/queued-task.js +24 -5
- package/dist/application/queued-task.js.map +1 -1
- package/dist/application/recovery-archive.d.ts +3 -2
- package/dist/application/recovery-archive.js +9 -2
- package/dist/application/recovery-archive.js.map +1 -1
- package/dist/application/recovery-restore.d.ts +3 -2
- package/dist/application/recovery-restore.js +9 -2
- package/dist/application/recovery-restore.js.map +1 -1
- package/dist/application/recovery-retention.d.ts +3 -2
- package/dist/application/recovery-retention.js +74 -26
- package/dist/application/recovery-retention.js.map +1 -1
- package/dist/application/remote-workspace.js +5 -4
- package/dist/application/remote-workspace.js.map +1 -1
- package/dist/application/remote-workspace.types.d.ts +1 -0
- package/dist/application/remote-workspace.types.js.map +1 -1
- package/dist/application/sandbox-agents.js +19 -19
- package/dist/application/sandbox-agents.js.map +1 -1
- package/dist/application/sandbox-attach.js +12 -3
- package/dist/application/sandbox-attach.js.map +1 -1
- package/dist/application/sandbox-dispatch.js +13 -27
- package/dist/application/sandbox-dispatch.js.map +1 -1
- package/dist/application/sandbox-provision.js +15 -9
- package/dist/application/sandbox-provision.js.map +1 -1
- package/dist/application/sandbox-session.types.d.ts +7 -2
- package/dist/application/sandbox-session.types.js.map +1 -1
- package/dist/application/sandbox.js +13 -6
- package/dist/application/sandbox.js.map +1 -1
- package/dist/application/speculation-checkpoint.d.ts +6 -0
- package/dist/application/speculation-checkpoint.js +206 -0
- package/dist/application/speculation-checkpoint.js.map +1 -0
- package/dist/application/speculation-checkpoint.types.d.ts +24 -0
- package/dist/application/speculation-checkpoint.types.js +2 -0
- package/dist/application/speculation-checkpoint.types.js.map +1 -0
- package/dist/application/speculation-integration.constants.d.ts +4 -0
- package/dist/application/speculation-integration.constants.js +5 -0
- package/dist/application/speculation-integration.constants.js.map +1 -0
- package/dist/application/speculation-integration.d.ts +2 -0
- package/dist/application/speculation-integration.js +67 -0
- package/dist/application/speculation-integration.js.map +1 -0
- package/dist/application/speculation-resume.d.ts +4 -0
- package/dist/application/speculation-resume.js +71 -0
- package/dist/application/speculation-resume.js.map +1 -0
- package/dist/application/speculation-run.d.ts +4 -0
- package/dist/application/speculation-run.js +320 -0
- package/dist/application/speculation-run.js.map +1 -0
- package/dist/application/speculation-timeout.d.ts +1 -0
- package/dist/application/speculation-timeout.js +15 -0
- package/dist/application/speculation-timeout.js.map +1 -0
- package/dist/application/speculation.constants.d.ts +1 -0
- package/dist/application/speculation.constants.js +5 -1
- package/dist/application/speculation.constants.js.map +1 -1
- package/dist/application/speculation.js +41 -149
- package/dist/application/speculation.js.map +1 -1
- package/dist/application/speculation.types.d.ts +23 -0
- package/dist/application/speculation.types.js.map +1 -1
- package/dist/application/startup-recovery.js +14 -1
- package/dist/application/startup-recovery.js.map +1 -1
- package/dist/application/startup-recovery.types.d.ts +1 -0
- package/dist/application/startup-recovery.types.js.map +1 -1
- package/dist/application/stop-reason.d.ts +2 -0
- package/dist/application/stop-reason.js +21 -0
- package/dist/application/stop-reason.js.map +1 -0
- package/dist/application/stop-reason.types.d.ts +4 -0
- package/dist/application/stop-reason.types.js +2 -0
- package/dist/application/stop-reason.types.js.map +1 -0
- package/dist/application/storage-reservation.js +9 -2
- package/dist/application/storage-reservation.js.map +1 -1
- package/dist/application/task-observation.d.ts +3 -0
- package/dist/application/task-observation.js +22 -0
- package/dist/application/task-observation.js.map +1 -0
- package/dist/application/task-usage.js +5 -12
- package/dist/application/task-usage.js.map +1 -1
- package/dist/application/tasks.js +41 -16
- package/dist/application/tasks.js.map +1 -1
- package/dist/application/tool-execution.js +42 -19
- package/dist/application/tool-execution.js.map +1 -1
- package/dist/application/workspace.js +6 -4
- package/dist/application/workspace.js.map +1 -1
- package/dist/cli/doctor-command.js +6 -2
- package/dist/cli/doctor-command.js.map +1 -1
- package/dist/cli/init-authentication.d.ts +4 -1
- package/dist/cli/init-authentication.js +28 -33
- package/dist/cli/init-authentication.js.map +1 -1
- package/dist/cli/init-command.js +3 -3
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/main.constants.d.ts +50 -13
- package/dist/cli/main.constants.js +70 -8
- package/dist/cli/main.constants.js.map +1 -1
- package/dist/cli/main.js +2 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/scaffold-files.js +1 -1
- package/dist/cli/scaffold-files.js.map +1 -1
- package/dist/cli/scaffold-validation.js +29 -22
- package/dist/cli/scaffold-validation.js.map +1 -1
- package/dist/cli/scaffold.constants.d.ts +0 -1
- package/dist/cli/scaffold.constants.js +6 -2
- package/dist/cli/scaffold.constants.js.map +1 -1
- package/dist/cli/scaffold.types.d.ts +8 -2
- package/dist/cli/scaffold.types.js.map +1 -1
- package/dist/cli/starters.js +1 -3
- package/dist/cli/starters.js.map +1 -1
- package/dist/domain/agent-observation.d.ts +4 -0
- package/dist/domain/agent-observation.js +27 -0
- package/dist/domain/agent-observation.js.map +1 -0
- package/dist/domain/agent.types.d.ts +122 -14
- package/dist/domain/agent.types.js.map +1 -1
- package/dist/domain/authentication.constants.d.ts +3 -0
- package/dist/domain/authentication.constants.js +11 -0
- package/dist/domain/authentication.constants.js.map +1 -0
- package/dist/domain/authentication.d.ts +3 -0
- package/dist/domain/authentication.js +22 -0
- package/dist/domain/authentication.js.map +1 -0
- package/dist/domain/authentication.types.d.ts +5 -0
- package/dist/domain/authentication.types.js +2 -0
- package/dist/domain/authentication.types.js.map +1 -0
- package/dist/domain/harness.d.ts +2 -2
- package/dist/domain/harness.js +6 -0
- package/dist/domain/harness.js.map +1 -1
- package/dist/domain/harness.types.d.ts +4 -3
- package/dist/domain/harness.types.js.map +1 -1
- package/dist/domain/model.types.d.ts +8 -0
- package/dist/domain/model.types.js.map +1 -1
- package/dist/domain/observation.constants.d.ts +8 -0
- package/dist/domain/observation.constants.js +9 -0
- package/dist/domain/observation.constants.js.map +1 -0
- package/dist/domain/observation.d.ts +2 -0
- package/dist/domain/observation.js +190 -0
- package/dist/domain/observation.js.map +1 -0
- package/dist/domain/observation.types.d.ts +84 -0
- package/dist/domain/observation.types.js +2 -0
- package/dist/domain/observation.types.js.map +1 -0
- package/dist/domain/observed-operation.d.ts +2 -0
- package/dist/domain/observed-operation.js +30 -0
- package/dist/domain/observed-operation.js.map +1 -0
- package/dist/domain/sandbox.types.d.ts +2 -0
- package/dist/domain/sandbox.types.js.map +1 -1
- package/dist/domain/subagent.constants.d.ts +13 -0
- package/dist/domain/subagent.constants.js +9 -0
- package/dist/domain/subagent.constants.js.map +1 -0
- package/dist/domain/subagent.d.ts +4 -0
- package/dist/domain/subagent.js +28 -0
- package/dist/domain/subagent.js.map +1 -0
- package/dist/domain/subagent.types.d.ts +13 -0
- package/dist/domain/subagent.types.js +2 -0
- package/dist/domain/subagent.types.js.map +1 -0
- package/dist/domain/transcript.types.d.ts +2 -0
- package/dist/domain/transcript.types.js.map +1 -1
- package/dist/domain/usage.d.ts +1 -0
- package/dist/domain/usage.js +16 -0
- package/dist/domain/usage.js.map +1 -1
- package/dist/domain/workflow/budget.d.ts +7 -3
- package/dist/domain/workflow/budget.js +26 -0
- package/dist/domain/workflow/budget.js.map +1 -1
- package/dist/domain/workflow/budget.types.d.ts +1 -1
- package/dist/domain/workflow/budget.types.js.map +1 -1
- package/dist/domain/workflow/checkpoint-validation.js +7 -1
- package/dist/domain/workflow/checkpoint-validation.js.map +1 -1
- package/dist/domain/workflow/checkpoint.js +3 -0
- package/dist/domain/workflow/checkpoint.js.map +1 -1
- package/dist/domain/workflow/gate-validation.js +14 -1
- package/dist/domain/workflow/gate-validation.js.map +1 -1
- package/dist/domain/workflow/gates.d.ts +1 -1
- package/dist/domain/workflow/gates.js +52 -4
- package/dist/domain/workflow/gates.js.map +1 -1
- package/dist/domain/workflow/gates.types.d.ts +15 -1
- package/dist/domain/workflow/gates.types.js.map +1 -1
- package/dist/domain/workflow/idempotency.d.ts +1 -0
- package/dist/domain/workflow/idempotency.js +7 -0
- package/dist/domain/workflow/idempotency.js.map +1 -0
- package/dist/domain/workflow/retry.constants.d.ts +2 -0
- package/dist/domain/workflow/retry.constants.js +3 -0
- package/dist/domain/workflow/retry.constants.js.map +1 -0
- package/dist/domain/workflow/retry.d.ts +4 -0
- package/dist/domain/workflow/retry.js +49 -0
- package/dist/domain/workflow/retry.js.map +1 -0
- package/dist/domain/workflow/task-runner.js +9 -5
- package/dist/domain/workflow/task-runner.js.map +1 -1
- package/dist/domain/workflow/task.js +6 -6
- package/dist/domain/workflow/task.js.map +1 -1
- package/dist/domain/workflow/workflow-scheduler.js +110 -72
- package/dist/domain/workflow/workflow-scheduler.js.map +1 -1
- package/dist/domain/workflow/workflow-state.js +28 -12
- package/dist/domain/workflow/workflow-state.js.map +1 -1
- package/dist/domain/workflow.d.ts +1 -1
- package/dist/domain/workflow.js +1 -1
- package/dist/domain/workflow.js.map +1 -1
- package/dist/domain/workflow.types.d.ts +13 -2
- package/dist/domain/workflow.types.js.map +1 -1
- package/dist/index.d.ts +16 -11
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/conversations/capture.js +10 -0
- package/dist/infrastructure/conversations/capture.js.map +1 -1
- package/dist/infrastructure/conversations/harness-transcript.js +6 -0
- package/dist/infrastructure/conversations/harness-transcript.js.map +1 -1
- package/dist/infrastructure/conversations/harness-transcript.types.d.ts +2 -0
- package/dist/infrastructure/conversations/harness-transcript.types.js.map +1 -1
- package/dist/infrastructure/conversations/layout.js +2 -0
- package/dist/infrastructure/conversations/layout.js.map +1 -1
- package/dist/infrastructure/conversations/locate.js +7 -1
- package/dist/infrastructure/conversations/locate.js.map +1 -1
- package/dist/infrastructure/conversations/native-store.js +8 -1
- package/dist/infrastructure/conversations/native-store.js.map +1 -1
- package/dist/infrastructure/conversations/paths.js +3 -0
- package/dist/infrastructure/conversations/paths.js.map +1 -1
- package/dist/infrastructure/conversations/restore.js +7 -0
- package/dist/infrastructure/conversations/restore.js.map +1 -1
- package/dist/infrastructure/conversations/session-bundle.constants.d.ts +5 -0
- package/dist/infrastructure/conversations/session-bundle.constants.js +173 -0
- package/dist/infrastructure/conversations/session-bundle.constants.js.map +1 -0
- package/dist/infrastructure/conversations/session-bundle.d.ts +6 -0
- package/dist/infrastructure/conversations/session-bundle.js +98 -0
- package/dist/infrastructure/conversations/session-bundle.js.map +1 -0
- package/dist/infrastructure/conversations/session-bundle.types.d.ts +1 -0
- package/dist/infrastructure/conversations/session-bundle.types.js +2 -0
- package/dist/infrastructure/conversations/session-bundle.types.js.map +1 -0
- package/dist/infrastructure/conversations.js +4 -2
- package/dist/infrastructure/conversations.js.map +1 -1
- package/dist/infrastructure/conversations.types.d.ts +1 -1
- package/dist/infrastructure/conversations.types.js.map +1 -1
- package/dist/infrastructure/custom-reporter.js +32 -24
- package/dist/infrastructure/custom-reporter.js.map +1 -1
- package/dist/infrastructure/custom-reporter.types.d.ts +2 -0
- package/dist/infrastructure/custom-reporter.types.js.map +1 -1
- package/dist/infrastructure/git/git.constants.d.ts +1 -1
- package/dist/infrastructure/git/git.constants.js +1 -0
- package/dist/infrastructure/git/git.constants.js.map +1 -1
- package/dist/infrastructure/git/workspace-lease.js +4 -3
- package/dist/infrastructure/git/workspace-lease.js.map +1 -1
- package/dist/infrastructure/git/workspace.js +7 -6
- package/dist/infrastructure/git/workspace.js.map +1 -1
- package/dist/infrastructure/git/workspace.types.d.ts +1 -0
- package/dist/infrastructure/git/workspace.types.js.map +1 -1
- package/dist/infrastructure/host-credentials.constants.d.ts +1 -0
- package/dist/infrastructure/host-credentials.constants.js +2 -0
- package/dist/infrastructure/host-credentials.constants.js.map +1 -0
- package/dist/infrastructure/host-credentials.d.ts +4 -0
- package/dist/infrastructure/host-credentials.js +89 -0
- package/dist/infrastructure/host-credentials.js.map +1 -0
- package/dist/infrastructure/inspection-path.js +4 -3
- package/dist/infrastructure/inspection-path.js.map +1 -1
- package/dist/infrastructure/journal.constants.js +10 -1
- package/dist/infrastructure/journal.constants.js.map +1 -1
- package/dist/infrastructure/journal.d.ts +1 -1
- package/dist/infrastructure/journal.js +8 -75
- package/dist/infrastructure/journal.js.map +1 -1
- package/dist/infrastructure/journal.types.d.ts +2 -4
- package/dist/infrastructure/journal.types.js.map +1 -1
- package/dist/infrastructure/local-transport.js +9 -4
- package/dist/infrastructure/local-transport.js.map +1 -1
- package/dist/infrastructure/opentelemetry-dispatch.d.ts +3 -3
- package/dist/infrastructure/opentelemetry-dispatch.js +5 -4
- package/dist/infrastructure/opentelemetry-dispatch.js.map +1 -1
- package/dist/infrastructure/opentelemetry-observation.d.ts +5 -0
- package/dist/infrastructure/opentelemetry-observation.js +59 -0
- package/dist/infrastructure/opentelemetry-observation.js.map +1 -0
- package/dist/infrastructure/opentelemetry.js +15 -1
- package/dist/infrastructure/opentelemetry.js.map +1 -1
- package/dist/infrastructure/opentelemetry.types.d.ts +9 -1
- package/dist/infrastructure/opentelemetry.types.js.map +1 -1
- package/dist/infrastructure/reporter.d.ts +2 -2
- package/dist/infrastructure/reporter.js +5 -1
- package/dist/infrastructure/reporter.js.map +1 -1
- package/dist/infrastructure/repository-transport.constants.d.ts +1 -0
- package/dist/infrastructure/repository-transport.constants.js +2 -0
- package/dist/infrastructure/repository-transport.constants.js.map +1 -0
- package/dist/infrastructure/repository-transport.d.ts +2 -0
- package/dist/infrastructure/repository-transport.js +9 -0
- package/dist/infrastructure/repository-transport.js.map +1 -0
- package/dist/infrastructure/resource-activity-inspection.js +19 -24
- package/dist/infrastructure/resource-activity-inspection.js.map +1 -1
- package/dist/infrastructure/resource-activity.constants.d.ts +0 -1
- package/dist/infrastructure/resource-activity.constants.js +0 -1
- package/dist/infrastructure/resource-activity.constants.js.map +1 -1
- package/dist/infrastructure/resource-activity.js +20 -83
- package/dist/infrastructure/resource-activity.js.map +1 -1
- package/dist/infrastructure/s3-transport.constants.d.ts +2 -0
- package/dist/infrastructure/s3-transport.constants.js +3 -0
- package/dist/infrastructure/s3-transport.constants.js.map +1 -0
- package/dist/infrastructure/s3-transport.js +57 -3
- package/dist/infrastructure/s3-transport.js.map +1 -1
- package/dist/infrastructure/s3-transport.types.d.ts +1 -0
- package/dist/infrastructure/s3-transport.types.js.map +1 -1
- package/dist/infrastructure/speculation-store.constants.d.ts +3 -0
- package/dist/infrastructure/speculation-store.constants.js +2 -0
- package/dist/infrastructure/speculation-store.constants.js.map +1 -0
- package/dist/infrastructure/speculation-store.d.ts +4 -0
- package/dist/infrastructure/speculation-store.js +73 -0
- package/dist/infrastructure/speculation-store.js.map +1 -0
- package/dist/infrastructure/speculation-store.types.d.ts +12 -0
- package/dist/infrastructure/speculation-store.types.js +2 -0
- package/dist/infrastructure/speculation-store.types.js.map +1 -0
- package/dist/infrastructure/storage-inventory.constants.js +1 -0
- package/dist/infrastructure/storage-inventory.constants.js.map +1 -1
- package/dist/infrastructure/storage-inventory.types.d.ts +1 -1
- package/dist/infrastructure/storage-inventory.types.js.map +1 -1
- package/dist/infrastructure/storage-reservations.types.d.ts +0 -8
- package/dist/infrastructure/storage-reservations.types.js.map +1 -1
- package/dist/infrastructure/task-queue-bullmq-resources.js +3 -0
- package/dist/infrastructure/task-queue-bullmq-resources.js.map +1 -1
- package/dist/infrastructure/task-queue-http.js +29 -4
- package/dist/infrastructure/task-queue-http.js.map +1 -1
- package/dist/infrastructure/task-queue-http.types.d.ts +2 -2
- package/dist/infrastructure/task-queue-http.types.js.map +1 -1
- package/dist/infrastructure/transport-conversations.js +2 -0
- package/dist/infrastructure/transport-conversations.js.map +1 -1
- package/dist/infrastructure/transport-journal.d.ts +1 -1
- package/dist/infrastructure/transport-journal.js +8 -2
- package/dist/infrastructure/transport-journal.js.map +1 -1
- package/dist/infrastructure/transport-reservations.d.ts +1 -1
- package/dist/infrastructure/transport-reservations.js +14 -8
- package/dist/infrastructure/transport-reservations.js.map +1 -1
- package/dist/infrastructure/workflow-decision-signature.constants.d.ts +4 -0
- package/dist/infrastructure/workflow-decision-signature.constants.js +5 -0
- package/dist/infrastructure/workflow-decision-signature.constants.js.map +1 -0
- package/dist/infrastructure/workflow-decision-signature.d.ts +4 -0
- package/dist/infrastructure/workflow-decision-signature.js +83 -0
- package/dist/infrastructure/workflow-decision-signature.js.map +1 -0
- package/dist/infrastructure/workflow-decision-signature.types.d.ts +16 -0
- package/dist/infrastructure/workflow-decision-signature.types.js +2 -0
- package/dist/infrastructure/workflow-decision-signature.types.js.map +1 -0
- package/dist/providers/agents.d.ts +7 -2
- package/dist/providers/agents.js +4 -1
- package/dist/providers/agents.js.map +1 -1
- package/dist/providers/antigravity-install.constants.d.ts +2 -0
- package/dist/providers/antigravity-install.constants.js +28 -0
- package/dist/providers/antigravity-install.constants.js.map +1 -0
- package/dist/providers/antigravity-install.d.ts +2 -0
- package/dist/providers/antigravity-install.js +29 -0
- package/dist/providers/antigravity-install.js.map +1 -0
- package/dist/providers/antigravity-install.types.d.ts +4 -0
- package/dist/providers/antigravity-install.types.js +2 -0
- package/dist/providers/antigravity-install.types.js.map +1 -0
- package/dist/providers/container-recovery.d.ts +4 -0
- package/dist/providers/container-recovery.js +28 -0
- package/dist/providers/container-recovery.js.map +1 -0
- package/dist/providers/container.js +8 -0
- package/dist/providers/container.js.map +1 -1
- package/dist/providers/daytona-network.constants.d.ts +5 -0
- package/dist/providers/daytona-network.constants.js +8 -0
- package/dist/providers/daytona-network.constants.js.map +1 -0
- package/dist/providers/daytona-network.d.ts +4 -0
- package/dist/providers/daytona-network.js +33 -0
- package/dist/providers/daytona-network.js.map +1 -0
- package/dist/providers/daytona.d.ts +1 -0
- package/dist/providers/daytona.js +9 -3
- package/dist/providers/daytona.js.map +1 -1
- package/dist/providers/daytona.types.d.ts +2 -0
- package/dist/providers/daytona.types.js.map +1 -1
- package/dist/providers/firecracker-command.js +1 -1
- package/dist/providers/firecracker-command.js.map +1 -1
- package/dist/providers/firecracker-jailer.constants.d.ts +9 -0
- package/dist/providers/firecracker-jailer.constants.js +10 -0
- package/dist/providers/firecracker-jailer.constants.js.map +1 -0
- package/dist/providers/firecracker-jailer.d.ts +4 -0
- package/dist/providers/firecracker-jailer.js +171 -0
- package/dist/providers/firecracker-jailer.js.map +1 -0
- package/dist/providers/firecracker-machine.js +30 -8
- package/dist/providers/firecracker-machine.js.map +1 -1
- package/dist/providers/firecracker.types.d.ts +16 -0
- package/dist/providers/firecracker.types.js.map +1 -1
- package/dist/providers/vercel-network.js +1 -1
- package/dist/providers/vercel-network.js.map +1 -1
- package/dist/providers/vercel.js +6 -3
- package/dist/providers/vercel.js.map +1 -1
- package/dist/providers/versions.constants.d.ts +3 -1
- package/dist/providers/versions.constants.js +3 -1
- package/dist/providers/versions.constants.js.map +1 -1
- package/package.json +3 -3
- package/dist/adapters/agents/gemini-adapter.d.ts +0 -3
- package/dist/adapters/agents/gemini-adapter.js +0 -34
- package/dist/adapters/agents/gemini-adapter.js.map +0 -1
- package/dist/adapters/agents/gemini-diagnostics.d.ts +0 -2
- package/dist/adapters/agents/gemini-diagnostics.js +0 -15
- package/dist/adapters/agents/gemini-diagnostics.js.map +0 -1
- package/dist/adapters/agents/gemini-events.d.ts +0 -2
- package/dist/adapters/agents/gemini-events.js +0 -50
- package/dist/adapters/agents/gemini-events.js.map +0 -1
- package/dist/adapters/agents/gemini-request.js +0 -23
- package/dist/adapters/agents/gemini-request.js.map +0 -1
- package/dist/adapters/agents/gemini.types.js +0 -2
- package/dist/adapters/agents/gemini.types.js.map +0 -1
- package/dist/infrastructure/artifact-store.d.ts +0 -3
- package/dist/infrastructure/artifact-store.js +0 -110
- package/dist/infrastructure/artifact-store.js.map +0 -1
- package/dist/infrastructure/artifact-store.types.d.ts +0 -6
- package/dist/infrastructure/artifact-store.types.js +0 -2
- package/dist/infrastructure/artifact-store.types.js.map +0 -1
- package/dist/infrastructure/journal-retention.constants.d.ts +0 -4
- package/dist/infrastructure/journal-retention.constants.js +0 -5
- package/dist/infrastructure/journal-retention.constants.js.map +0 -1
- package/dist/infrastructure/journal-retention.d.ts +0 -2
- package/dist/infrastructure/journal-retention.js +0 -51
- package/dist/infrastructure/journal-retention.js.map +0 -1
- package/dist/infrastructure/storage-mutation-lock.constants.d.ts +0 -5
- package/dist/infrastructure/storage-mutation-lock.constants.js +0 -6
- package/dist/infrastructure/storage-mutation-lock.constants.js.map +0 -1
- package/dist/infrastructure/storage-mutation-lock.d.ts +0 -1
- package/dist/infrastructure/storage-mutation-lock.js +0 -21
- package/dist/infrastructure/storage-mutation-lock.js.map +0 -1
- package/dist/infrastructure/storage-reservations.constants.d.ts +0 -4
- package/dist/infrastructure/storage-reservations.constants.js +0 -5
- package/dist/infrastructure/storage-reservations.constants.js.map +0 -1
- package/dist/infrastructure/storage-reservations.d.ts +0 -2
- package/dist/infrastructure/storage-reservations.js +0 -150
- package/dist/infrastructure/storage-reservations.js.map +0 -1
- package/dist/infrastructure/workflow-checkpoint.d.ts +0 -3
- package/dist/infrastructure/workflow-checkpoint.js +0 -84
- package/dist/infrastructure/workflow-checkpoint.js.map +0 -1
- package/dist/infrastructure/workflow-checkpoint.types.d.ts +0 -6
- package/dist/infrastructure/workflow-checkpoint.types.js +0 -2
- package/dist/infrastructure/workflow-checkpoint.types.js.map +0 -1
|
@@ -1,14 +1,73 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Harness } from "./harness.types.ts";
|
|
2
2
|
import type { AgentModel, ModelSpec } from "./model.types.ts";
|
|
3
|
-
import type { Command, Variables } from "./command.types.ts";
|
|
3
|
+
import type { Command, CommandResult, Variables } from "./command.types.ts";
|
|
4
4
|
import type { ConversationStore } from "./conversation.types.ts";
|
|
5
5
|
export interface Usage {
|
|
6
|
+
readonly complete?: boolean;
|
|
6
7
|
readonly input: number;
|
|
7
8
|
readonly cached: number;
|
|
8
9
|
readonly cacheCreated?: number;
|
|
9
10
|
readonly output: number;
|
|
10
11
|
}
|
|
11
|
-
export type AgentEvent = {
|
|
12
|
+
export type AgentEvent = AgentEventDetails & {
|
|
13
|
+
readonly subagentId?: string;
|
|
14
|
+
};
|
|
15
|
+
export type AgentEventDetails = {
|
|
16
|
+
readonly kind: "subagent";
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly callId: string;
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly status: "started" | "finished" | "failed";
|
|
21
|
+
readonly conversation?: string;
|
|
22
|
+
} | {
|
|
23
|
+
readonly kind: "message-usage";
|
|
24
|
+
readonly tokens: Usage;
|
|
25
|
+
readonly messageId?: string;
|
|
26
|
+
readonly parentCallId?: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: "stderr";
|
|
29
|
+
readonly text: string;
|
|
30
|
+
readonly truncated?: boolean;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "stopped";
|
|
33
|
+
readonly reason: "completion" | "idle-timeout" | "deadline" | "aborted" | "oversized-event";
|
|
34
|
+
} | {
|
|
35
|
+
readonly kind: "reasoning";
|
|
36
|
+
readonly text: string;
|
|
37
|
+
readonly parentCallId?: string;
|
|
38
|
+
} | {
|
|
39
|
+
readonly kind: "file-change";
|
|
40
|
+
readonly changes: unknown;
|
|
41
|
+
readonly callId?: string;
|
|
42
|
+
} | {
|
|
43
|
+
readonly kind: "model-request";
|
|
44
|
+
readonly request: unknown;
|
|
45
|
+
} | {
|
|
46
|
+
readonly kind: "model-response";
|
|
47
|
+
readonly response: unknown;
|
|
48
|
+
} | {
|
|
49
|
+
readonly kind: "model-retry";
|
|
50
|
+
readonly attempt: number;
|
|
51
|
+
readonly message?: string;
|
|
52
|
+
} | {
|
|
53
|
+
readonly kind: "model-error";
|
|
54
|
+
readonly message: string;
|
|
55
|
+
} | {
|
|
56
|
+
readonly kind: "hook";
|
|
57
|
+
readonly phase: string;
|
|
58
|
+
readonly changed: boolean;
|
|
59
|
+
} | {
|
|
60
|
+
readonly kind: "instructions-loaded";
|
|
61
|
+
readonly count: number;
|
|
62
|
+
} | {
|
|
63
|
+
readonly kind: "skills-loaded";
|
|
64
|
+
readonly names: readonly string[];
|
|
65
|
+
} | {
|
|
66
|
+
readonly kind: "tool-output";
|
|
67
|
+
readonly callId: string;
|
|
68
|
+
readonly channel: "stdout" | "stderr";
|
|
69
|
+
readonly text: string;
|
|
70
|
+
} | {
|
|
12
71
|
readonly kind: "phase";
|
|
13
72
|
readonly name: string;
|
|
14
73
|
readonly agent?: string;
|
|
@@ -39,6 +98,7 @@ export type AgentEvent = {
|
|
|
39
98
|
readonly name: string;
|
|
40
99
|
readonly input: unknown;
|
|
41
100
|
readonly callId?: string;
|
|
101
|
+
readonly parentCallId?: string;
|
|
42
102
|
} | {
|
|
43
103
|
readonly kind: "tool-result";
|
|
44
104
|
readonly callId: string;
|
|
@@ -46,6 +106,7 @@ export type AgentEvent = {
|
|
|
46
106
|
readonly isError: boolean;
|
|
47
107
|
readonly preview: string;
|
|
48
108
|
readonly characters: number;
|
|
109
|
+
readonly parentCallId?: string;
|
|
49
110
|
} | {
|
|
50
111
|
readonly kind: "step";
|
|
51
112
|
readonly index: number;
|
|
@@ -67,6 +128,7 @@ export type AgentEvent = {
|
|
|
67
128
|
} | {
|
|
68
129
|
readonly kind: "usage";
|
|
69
130
|
readonly tokens: Usage;
|
|
131
|
+
readonly cumulative?: boolean;
|
|
70
132
|
} | {
|
|
71
133
|
readonly kind: "failure";
|
|
72
134
|
readonly message: string;
|
|
@@ -75,10 +137,15 @@ export type AgentEvent = {
|
|
|
75
137
|
} | {
|
|
76
138
|
readonly kind: "raw";
|
|
77
139
|
readonly value: unknown;
|
|
140
|
+
readonly bytes?: number;
|
|
141
|
+
readonly truncated?: boolean;
|
|
78
142
|
};
|
|
79
143
|
export type AgentObservation = AgentEvent & {
|
|
80
144
|
readonly pass: number;
|
|
81
145
|
readonly at: string;
|
|
146
|
+
readonly seq?: number;
|
|
147
|
+
readonly source?: import("./observation.types.ts").ObservationSource;
|
|
148
|
+
readonly scope?: import("./observation.types.ts").ObservationScope;
|
|
82
149
|
};
|
|
83
150
|
export type AgentEventHandlers = {
|
|
84
151
|
readonly [Kind in AgentEvent["kind"]]?: (event: Extract<AgentEvent, {
|
|
@@ -97,17 +164,22 @@ export interface AgentFeatures {
|
|
|
97
164
|
readonly name: string;
|
|
98
165
|
readonly bootstrap?: string;
|
|
99
166
|
readonly requiresFinishedEvent?: boolean;
|
|
167
|
+
readonly usage?: "events" | "session" | "unavailable";
|
|
100
168
|
readonly variables?: Variables;
|
|
101
|
-
readonly conversations?: "claude" | "codex";
|
|
169
|
+
readonly conversations?: "claude" | "codex" | "copilot" | "kimi";
|
|
102
170
|
readonly storage?: ConversationStore;
|
|
103
171
|
readonly capture?: boolean;
|
|
104
172
|
readonly resumable?: boolean;
|
|
173
|
+
readonly forkable?: boolean;
|
|
105
174
|
transcriptUsage?(text: string): Usage | undefined;
|
|
106
175
|
}
|
|
107
176
|
export interface AgentAdapter extends AgentFeatures {
|
|
108
|
-
|
|
177
|
+
fork?(id: string, invoke: (command: Command) => Promise<CommandResult>): Promise<string>;
|
|
178
|
+
credentials?(variables: Variables): CredentialPlan;
|
|
109
179
|
request(input: AgentInput): Command;
|
|
110
180
|
events(line: string): readonly AgentEvent[];
|
|
181
|
+
usageCommand?(conversation: string): Command | undefined;
|
|
182
|
+
usageResult?(text: string): Usage | undefined;
|
|
111
183
|
}
|
|
112
184
|
export interface RequiredAgent {
|
|
113
185
|
readonly agent: Agent;
|
|
@@ -116,7 +188,7 @@ export interface CliHarness {
|
|
|
116
188
|
readonly kind: "cli";
|
|
117
189
|
bind(model?: AgentModel): AgentAdapter;
|
|
118
190
|
}
|
|
119
|
-
export type
|
|
191
|
+
export type AgentHarness = CliHarness | Harness;
|
|
120
192
|
export interface CliAgent extends AgentAdapter {
|
|
121
193
|
readonly kind: "cli";
|
|
122
194
|
readonly harness: CliHarness;
|
|
@@ -126,7 +198,7 @@ export interface CustomAgent extends AgentFeatures {
|
|
|
126
198
|
readonly resumable: boolean;
|
|
127
199
|
readonly capture: boolean;
|
|
128
200
|
readonly kind: "custom";
|
|
129
|
-
readonly harness:
|
|
201
|
+
readonly harness: Harness;
|
|
130
202
|
readonly model: AgentModel;
|
|
131
203
|
}
|
|
132
204
|
export type Agent = CliAgent | CustomAgent;
|
|
@@ -135,16 +207,52 @@ export interface CliAgentOptions {
|
|
|
135
207
|
readonly model?: ModelSpec;
|
|
136
208
|
}
|
|
137
209
|
export interface CustomAgentOptions {
|
|
138
|
-
readonly harness:
|
|
210
|
+
readonly harness: Harness;
|
|
139
211
|
readonly model: ModelSpec;
|
|
140
212
|
}
|
|
141
213
|
export type AgentOptions = CliAgentOptions | CustomAgentOptions;
|
|
142
|
-
export type
|
|
143
|
-
readonly
|
|
144
|
-
readonly environment?: string;
|
|
214
|
+
export type AccountCredential = {
|
|
215
|
+
readonly file: string;
|
|
145
216
|
} | {
|
|
146
|
-
readonly
|
|
217
|
+
readonly key: string;
|
|
218
|
+
} | {
|
|
219
|
+
readonly variable: string;
|
|
220
|
+
};
|
|
221
|
+
export type UsageCredential = {
|
|
222
|
+
readonly key: string;
|
|
147
223
|
} | {
|
|
148
|
-
readonly
|
|
149
|
-
readonly credentials?: string;
|
|
224
|
+
readonly variable: string;
|
|
150
225
|
};
|
|
226
|
+
export type AgentAuthentication = "account" | "usage" | {
|
|
227
|
+
readonly account: AccountCredential;
|
|
228
|
+
} | {
|
|
229
|
+
readonly usage: UsageCredential;
|
|
230
|
+
};
|
|
231
|
+
export interface HostCredentialPath {
|
|
232
|
+
readonly path: string;
|
|
233
|
+
readonly home?: {
|
|
234
|
+
readonly variable: string;
|
|
235
|
+
readonly path: string;
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
export interface HostCredential {
|
|
239
|
+
readonly source: HostCredentialPath;
|
|
240
|
+
readonly destination: {
|
|
241
|
+
readonly file: string;
|
|
242
|
+
} | {
|
|
243
|
+
readonly variable: string;
|
|
244
|
+
};
|
|
245
|
+
readonly login: string;
|
|
246
|
+
readonly alternative?: string;
|
|
247
|
+
select?(content: string): string;
|
|
248
|
+
}
|
|
249
|
+
export interface GeneratedCredential {
|
|
250
|
+
readonly path: string;
|
|
251
|
+
readonly content: string;
|
|
252
|
+
}
|
|
253
|
+
export interface CredentialPlan {
|
|
254
|
+
readonly variables: Variables;
|
|
255
|
+
readonly host: readonly HostCredential[];
|
|
256
|
+
readonly files: readonly GeneratedCredential[];
|
|
257
|
+
readonly commands: readonly Command[];
|
|
258
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.types.js","sourceRoot":"","sources":["../../src/domain/agent.types.ts"],"names":[],"mappings":"","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"agent.types.js","sourceRoot":"","sources":["../../src/domain/agent.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Harness } from \"./harness.types.ts\";\nimport type { AgentModel, ModelSpec } from \"./model.types.ts\";\nimport type { Command, CommandResult, Variables } from \"./command.types.ts\";\nimport type { ConversationStore } from \"./conversation.types.ts\";\n\nexport interface Usage {\n readonly complete?: boolean;\n readonly input: number;\n readonly cached: number;\n readonly cacheCreated?: number;\n readonly output: number;\n}\n\nexport type AgentEvent = AgentEventDetails & {\n readonly subagentId?: string;\n};\n\nexport type AgentEventDetails =\n | {\n readonly kind: \"subagent\";\n readonly id: string;\n readonly callId: string;\n readonly name: string;\n readonly status: \"started\" | \"finished\" | \"failed\";\n readonly conversation?: string;\n }\n | {\n readonly kind: \"message-usage\";\n readonly tokens: Usage;\n readonly messageId?: string;\n readonly parentCallId?: string;\n }\n | {\n readonly kind: \"stderr\";\n readonly text: string;\n readonly truncated?: boolean;\n }\n | {\n readonly kind: \"stopped\";\n readonly reason:\n | \"completion\"\n | \"idle-timeout\"\n | \"deadline\"\n | \"aborted\"\n | \"oversized-event\";\n }\n | {\n readonly kind: \"reasoning\";\n readonly text: string;\n readonly parentCallId?: string;\n }\n | {\n readonly kind: \"file-change\";\n readonly changes: unknown;\n readonly callId?: string;\n }\n | { readonly kind: \"model-request\"; readonly request: unknown }\n | { readonly kind: \"model-response\"; readonly response: unknown }\n | {\n readonly kind: \"model-retry\";\n readonly attempt: number;\n readonly message?: string;\n }\n | { readonly kind: \"model-error\"; readonly message: string }\n | { readonly kind: \"hook\"; readonly phase: string; readonly changed: boolean }\n | { readonly kind: \"instructions-loaded\"; readonly count: number }\n | { readonly kind: \"skills-loaded\"; readonly names: readonly string[] }\n | {\n readonly kind: \"tool-output\";\n readonly callId: string;\n readonly channel: \"stdout\" | \"stderr\";\n readonly text: string;\n }\n | {\n readonly kind: \"phase\";\n readonly name: string;\n readonly agent?: string;\n readonly branch?: string;\n readonly directory?: string;\n }\n | {\n readonly kind: \"summary\";\n readonly durationMs: number;\n readonly status: number;\n readonly tokens: Usage;\n }\n | { readonly kind: \"warning\"; readonly message: string }\n | { readonly kind: \"text\"; readonly text: string }\n | { readonly kind: \"text-delta\"; readonly text: string }\n | { readonly kind: \"result\"; readonly text: string }\n | { readonly kind: \"prompt\"; readonly text: string }\n | {\n readonly kind: \"tool\";\n readonly name: string;\n readonly input: unknown;\n readonly callId?: string;\n readonly parentCallId?: string;\n }\n | {\n readonly kind: \"tool-result\";\n readonly callId: string;\n readonly name: string;\n readonly isError: boolean;\n readonly preview: string;\n readonly characters: number;\n readonly parentCallId?: string;\n }\n | { readonly kind: \"step\"; readonly index: number }\n | {\n readonly kind: \"tool-denied\";\n readonly callId: string;\n readonly name: string;\n readonly reason: string;\n }\n | { readonly kind: \"stop-prevented\"; readonly message: string }\n | {\n readonly kind: \"compaction\";\n readonly strategy: string;\n readonly messages: number;\n }\n | { readonly kind: \"conversation\"; readonly id: string }\n | {\n readonly kind: \"usage\";\n readonly tokens: Usage;\n readonly cumulative?: boolean;\n }\n | { readonly kind: \"failure\"; readonly message: string }\n | { readonly kind: \"finished\" }\n | {\n readonly kind: \"raw\";\n readonly value: unknown;\n readonly bytes?: number;\n readonly truncated?: boolean;\n };\n\nexport type AgentObservation = AgentEvent & {\n readonly pass: number;\n readonly at: string;\n readonly seq?: number;\n readonly source?: import(\"./observation.types.ts\").ObservationSource;\n readonly scope?: import(\"./observation.types.ts\").ObservationScope;\n};\n\nexport type AgentEventHandlers = {\n readonly [Kind in AgentEvent[\"kind\"]]?: (\n event: Extract<AgentEvent, { kind: Kind }>,\n ) => void;\n};\n\nexport interface AgentInput {\n readonly text?: string;\n readonly interactive?: boolean;\n readonly continuation?: { readonly id: string; readonly fork?: boolean };\n}\n\nexport interface AgentFeatures {\n readonly name: string;\n readonly bootstrap?: string;\n readonly requiresFinishedEvent?: boolean;\n readonly usage?: \"events\" | \"session\" | \"unavailable\";\n readonly variables?: Variables;\n readonly conversations?: \"claude\" | \"codex\" | \"copilot\" | \"kimi\";\n readonly storage?: ConversationStore;\n readonly capture?: boolean;\n readonly resumable?: boolean;\n readonly forkable?: boolean;\n transcriptUsage?(text: string): Usage | undefined;\n}\n\nexport interface AgentAdapter extends AgentFeatures {\n fork?(\n id: string,\n invoke: (command: Command) => Promise<CommandResult>,\n ): Promise<string>;\n credentials?(variables: Variables): CredentialPlan;\n request(input: AgentInput): Command;\n events(line: string): readonly AgentEvent[];\n usageCommand?(conversation: string): Command | undefined;\n usageResult?(text: string): Usage | undefined;\n}\n\nexport interface RequiredAgent {\n readonly agent: Agent;\n}\n\nexport interface CliHarness {\n readonly kind: \"cli\";\n bind(model?: AgentModel): AgentAdapter;\n}\n\nexport type AgentHarness = CliHarness | Harness;\n\nexport interface CliAgent extends AgentAdapter {\n readonly kind: \"cli\";\n readonly harness: CliHarness;\n readonly model?: AgentModel;\n}\n\nexport interface CustomAgent extends AgentFeatures {\n readonly resumable: boolean;\n readonly capture: boolean;\n readonly kind: \"custom\";\n readonly harness: Harness;\n readonly model: AgentModel;\n}\n\nexport type Agent = CliAgent | CustomAgent;\n\nexport interface CliAgentOptions {\n readonly harness: CliHarness;\n readonly model?: ModelSpec;\n}\nexport interface CustomAgentOptions {\n readonly harness: Harness;\n readonly model: ModelSpec;\n}\nexport type AgentOptions = CliAgentOptions | CustomAgentOptions;\n\nexport type AccountCredential =\n | { readonly file: string }\n | { readonly key: string }\n | { readonly variable: string };\n\nexport type UsageCredential =\n { readonly key: string } | { readonly variable: string };\n\nexport type AgentAuthentication =\n | \"account\"\n | \"usage\"\n | { readonly account: AccountCredential }\n | { readonly usage: UsageCredential };\n\nexport interface HostCredentialPath {\n readonly path: string;\n readonly home?: { readonly variable: string; readonly path: string };\n}\n\nexport interface HostCredential {\n readonly source: HostCredentialPath;\n readonly destination:\n { readonly file: string } | { readonly variable: string };\n readonly login: string;\n readonly alternative?: string;\n select?(content: string): string;\n}\n\nexport interface GeneratedCredential {\n readonly path: string;\n readonly content: string;\n}\n\nexport interface CredentialPlan {\n readonly variables: Variables;\n readonly host: readonly HostCredential[];\n readonly files: readonly GeneratedCredential[];\n readonly commands: readonly Command[];\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const authenticationForms = [
|
|
2
|
+
"account",
|
|
3
|
+
"account.file",
|
|
4
|
+
"account.key",
|
|
5
|
+
"account.variable",
|
|
6
|
+
"usage",
|
|
7
|
+
"usage.key",
|
|
8
|
+
"usage.variable",
|
|
9
|
+
];
|
|
10
|
+
export const VARIABLE_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
11
|
+
//# sourceMappingURL=authentication.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication.constants.js","sourceRoot":"","sources":["../../src/domain/authentication.constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAkC;IAChE,SAAS;IACT,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,OAAO;IACP,WAAW;IACX,gBAAgB;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAC","sourcesContent":["import type { AuthenticationForm } from \"./authentication.types.ts\";\n\nexport const authenticationForms: readonly AuthenticationForm[] = [\n \"account\",\n \"account.file\",\n \"account.key\",\n \"account.variable\",\n \"usage\",\n \"usage.key\",\n \"usage.variable\",\n];\n\nexport const VARIABLE_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { VARIABLE_NAME, authenticationForms, } from "./authentication.constants.js";
|
|
2
|
+
import { invariant } from "./errors.js";
|
|
3
|
+
const expected = 'Use "account", "usage", { account: { file | key | variable } } or { usage: { key | variable } }';
|
|
4
|
+
function singleEntry(value, label) {
|
|
5
|
+
invariant(value !== null && typeof value === "object" && !Array.isArray(value), `${label} must be "account", "usage" or an object. ${expected}`);
|
|
6
|
+
const entries = Object.entries(value);
|
|
7
|
+
invariant(entries.length === 1, `${label} must have exactly one key. ${expected}`);
|
|
8
|
+
return entries[0];
|
|
9
|
+
}
|
|
10
|
+
export function authenticationForm(value) {
|
|
11
|
+
if (value === "account" || value === "usage")
|
|
12
|
+
return { form: value };
|
|
13
|
+
const [kind, credential] = singleEntry(value, "Authentication");
|
|
14
|
+
invariant(kind === "account" || kind === "usage", `Unknown authentication "${kind}". ${expected}`);
|
|
15
|
+
const [source, text] = singleEntry(credential, `Authentication ${kind}`);
|
|
16
|
+
const form = authenticationForms.find((candidate) => candidate === `${kind}.${source}`);
|
|
17
|
+
invariant(form, `${kind} authentication does not accept "${source}". ${expected}`);
|
|
18
|
+
invariant(typeof text === "string" && text.trim() !== "", `${form} must be a nonempty string`);
|
|
19
|
+
invariant(source !== "variable" || VARIABLE_NAME.test(text), `Invalid authentication environment variable: ${text}`);
|
|
20
|
+
return { form, value: text };
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=authentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../src/domain/authentication.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,QAAQ,GACZ,iGAAiG,CAAC;AAEpG,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa;IAChD,SAAS,CACP,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACpE,GAAG,KAAK,6CAA6C,QAAQ,EAAE,CAChE,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,SAAS,CACP,OAAO,CAAC,MAAM,KAAK,CAAC,EACpB,GAAG,KAAK,+BAA+B,QAAQ,EAAE,CAClD,CAAC;IACF,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAA0B;IAE1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACrE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAChE,SAAS,CACP,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,EACtC,2BAA2B,IAAI,MAAM,QAAQ,EAAE,CAChD,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CACnC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,GAAG,IAAI,IAAI,MAAM,EAAE,CACjD,CAAC;IACF,SAAS,CACP,IAAI,EACJ,GAAG,IAAI,oCAAoC,MAAM,MAAM,QAAQ,EAAE,CAClE,CAAC;IACF,SAAS,CACP,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAC9C,GAAG,IAAI,4BAA4B,CACpC,CAAC;IACF,SAAS,CACP,MAAM,KAAK,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EACjD,gDAAgD,IAAI,EAAE,CACvD,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC","sourcesContent":["import type { AgentAuthentication } from \"./agent.types.ts\";\nimport {\n VARIABLE_NAME,\n authenticationForms,\n} from \"./authentication.constants.ts\";\nimport type { AuthenticationSelection } from \"./authentication.types.ts\";\nimport { invariant } from \"./errors.ts\";\n\nconst expected =\n 'Use \"account\", \"usage\", { account: { file | key | variable } } or { usage: { key | variable } }';\n\nfunction singleEntry(value: unknown, label: string): [string, unknown] {\n invariant(\n value !== null && typeof value === \"object\" && !Array.isArray(value),\n `${label} must be \"account\", \"usage\" or an object. ${expected}`,\n );\n const entries = Object.entries(value);\n invariant(\n entries.length === 1,\n `${label} must have exactly one key. ${expected}`,\n );\n return entries[0]!;\n}\n\nexport function authenticationForm(\n value: AgentAuthentication,\n): AuthenticationSelection {\n if (value === \"account\" || value === \"usage\") return { form: value };\n const [kind, credential] = singleEntry(value, \"Authentication\");\n invariant(\n kind === \"account\" || kind === \"usage\",\n `Unknown authentication \"${kind}\". ${expected}`,\n );\n const [source, text] = singleEntry(credential, `Authentication ${kind}`);\n const form = authenticationForms.find(\n (candidate) => candidate === `${kind}.${source}`,\n );\n invariant(\n form,\n `${kind} authentication does not accept \"${source}\". ${expected}`,\n );\n invariant(\n typeof text === \"string\" && text.trim() !== \"\",\n `${form} must be a nonempty string`,\n );\n invariant(\n source !== \"variable\" || VARIABLE_NAME.test(text),\n `Invalid authentication environment variable: ${text}`,\n );\n return { form, value: text };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authentication.types.js","sourceRoot":"","sources":["../../src/domain/authentication.types.ts"],"names":[],"mappings":"","sourcesContent":["export type AuthenticationForm =\n | \"account\"\n | \"account.file\"\n | \"account.key\"\n | \"account.variable\"\n | \"usage\"\n | \"usage.key\"\n | \"usage.variable\";\n\nexport interface AuthenticationSelection {\n readonly form: AuthenticationForm;\n readonly value?: string;\n}\n"]}
|
package/dist/domain/harness.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function harness(options:
|
|
1
|
+
import type { Harness, HarnessOptions } from "./harness.types.ts";
|
|
2
|
+
export declare function harness(options: HarnessOptions): Harness;
|
package/dist/domain/harness.js
CHANGED
|
@@ -48,6 +48,9 @@ export function harness(options) {
|
|
|
48
48
|
}
|
|
49
49
|
function limits(value) {
|
|
50
50
|
invariant(value !== null && typeof value === "object", "Harness limits must be an object");
|
|
51
|
+
if (value.maxDelegationDepth !== undefined)
|
|
52
|
+
invariant(Number.isSafeInteger(value.maxDelegationDepth) &&
|
|
53
|
+
value.maxDelegationDepth >= 0, "Harness maxDelegationDepth must be a nonnegative integer");
|
|
51
54
|
const maxSteps = positive(value.maxSteps ?? HARNESS_DEFAULTS.maxSteps, "Harness maxSteps");
|
|
52
55
|
if (value.maxToolCalls !== undefined)
|
|
53
56
|
positive(value.maxToolCalls, "Harness maxToolCalls");
|
|
@@ -60,6 +63,9 @@ function limits(value) {
|
|
|
60
63
|
}
|
|
61
64
|
return Object.freeze({
|
|
62
65
|
maxSteps,
|
|
66
|
+
...(value.maxDelegationDepth === undefined
|
|
67
|
+
? {}
|
|
68
|
+
: { maxDelegationDepth: value.maxDelegationDepth }),
|
|
63
69
|
...(value.maxToolCalls === undefined
|
|
64
70
|
? {}
|
|
65
71
|
: { maxToolCalls: value.maxToolCalls }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/domain/harness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,UAAU,OAAO,CAAC,OAA6B;IACnD,SAAS,CACP,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAC/C,mCAAmC,CACpC,CAAC;IACF,SAAS,CACP,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,EACnB,yEAAyE,CAC1E,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,SAAS,CACP,WAAW,CAAC,MAAM,KAAK,CAAC,EACxB,+BAA+B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxD,CAAC;IACF,SAAS,CACP,OAAO,OAAO,CAAC,aAAa,EAAE,OAAO,KAAK,UAAU,EACpD,0CAA0C,CAC3C,CAAC;IACF,SAAS,CACP,OAAO,CAAC,aAAa,CAAC,QAAQ,KAAK,SAAS;QAC1C,OAAO,OAAO,CAAC,aAAa,CAAC,QAAQ,KAAK,UAAU,EACtD,4CAA4C,CAC7C,CAAC;IACF,SAAS,CACP,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,EACjE,+BAA+B,CAChC,CAAC;IACF,SAAS,CACP,OAAO,CAAC,WAAW,KAAK,SAAS;QAC/B,OAAO,CAAC,WAAW,EAAE,IAAI,KAAK,aAAa,EAC7C,mDAAmD,CACpD,CAAC;IACF,SAAS,CACP,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,EACpE,8DAA8D,CAC/D,CAAC;IACF,SAAS,CACP,OAAO,CAAC,aAAa,KAAK,SAAS;QACjC,OAAO,CAAC,aAAa,KAAK,KAAK;QAC/B,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,EAC1C,6DAA6D,CAC9D,CAAC;IACF,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;YAC1B,GAAG,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC;YAC5C,GAAG,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,CAAC,yBAAyB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,KAAK,EAAE,YAAY,CAAC;YAClB,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;YACxB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC;QACF,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;QACzD,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QAC7C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,KAAoB;IAClC,SAAS,CACP,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAC3C,kCAAkC,CACnC,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CACvB,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,EAC3C,kBAAkB,CACnB,CAAC;IACF,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAClC,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,SAAS,CACP,KAAK,CAAC,KAAK,KAAK,IAAI;YAClB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACrE,oEAAoE,CACrE,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5C,SAAS,CACP,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EACzC,mDAAmD,CACpD,CAAC;IACN,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ;QACR,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;QACzC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;KAClD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,KAA2B;IAE3B,SAAS,CACP,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAC3C,yCAAyC,CAC1C,CAAC;IACF,SAAS,CACP,KAAK,CAAC,OAAO,KAAK,SAAS;QACzB,KAAK,CAAC,OAAO,KAAK,iBAAiB;QACnC,KAAK,CAAC,OAAO,KAAK,MAAM,EAC1B,kDAAkD,CACnD,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,QAAQ,CACnB,KAAK,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,EACjD,kBAAkB,CACnB;QACD,UAAU,EAAE,QAAQ,CAClB,KAAK,CAAC,UAAU,IAAI,gBAAgB,CAAC,cAAc,EACnD,iBAAiB,CAClB;QACD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,OAAO;KACnD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAwB;IACjD,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;QAClC,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;QACnC,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU,CACpC,CAAC;AACJ,CAAC","sourcesContent":["import type { ConversationStore } from \"./conversation.types.ts\";\nimport { invariant, positive } from \"./errors.ts\";\nimport {\n HARNESS_DEFAULTS,\n HARNESS_FIELDS,\n USAGE_FIELDS,\n} from \"./harness.constants.ts\";\nimport type {\n CustomHarness,\n CustomHarnessOptions,\n HarnessLimits,\n HarnessToolExecution,\n ResolvedHarnessLimits,\n} from \"./harness.types.ts\";\nimport { harnessHooks } from \"./hook.ts\";\nimport {\n defineHarnessInstructions,\n harnessInstructions,\n} from \"./instructions.ts\";\nimport { harnessSkills, skillCatalog, skillLoader } from \"./skill.ts\";\nimport { harnessTools } from \"./tool.ts\";\n\nexport function harness(options: CustomHarnessOptions): CustomHarness {\n invariant(\n options !== null && typeof options === \"object\",\n \"Harness options must be an object\",\n );\n invariant(\n !(\"run\" in options),\n \"harness() no longer accepts run; declare tools, instructions and limits\",\n );\n const unsupported = Object.keys(options).filter(\n (key) => !HARNESS_FIELDS.has(key),\n );\n invariant(\n unsupported.length === 0,\n `Unsupported harness option: ${unsupported.join(\", \")}`,\n );\n invariant(\n typeof options.modelProvider?.request === \"function\",\n \"Custom harness requires a model provider\",\n );\n invariant(\n options.modelProvider.validate === undefined ||\n typeof options.modelProvider.validate === \"function\",\n \"Model provider validate must be a function\",\n );\n invariant(\n options.cache === undefined || typeof options.cache === \"boolean\",\n \"Harness cache must be boolean\",\n );\n invariant(\n options.permissions === undefined ||\n options.permissions?.kind === \"permissions\",\n \"Declare permissions with defineHarnessPermissions\",\n );\n invariant(\n options.context === undefined || options.context?.kind === \"context\",\n \"Declare context strategies with defineHarnessContextStrategy\",\n );\n invariant(\n options.conversations === undefined ||\n options.conversations === false ||\n conversationStore(options.conversations),\n \"Harness conversations must be a conversation store or false\",\n );\n const skills = harnessSkills(options.skills);\n return Object.freeze({\n kind: \"custom\",\n modelProvider: options.modelProvider,\n instructions: Object.freeze([\n ...harnessInstructions(options.instructions),\n ...(skills.length\n ? [defineHarnessInstructions(skillCatalog(skills))]\n : []),\n ]),\n tools: harnessTools([\n ...(options.tools ?? []),\n ...skills.flatMap((skill) => skill.tools),\n ...(skills.length ? [skillLoader(skills)] : []),\n ]),\n skills,\n limits: limits(options.limits ?? {}),\n toolExecution: toolExecution(options.toolExecution ?? {}),\n hooks: harnessHooks(options.hooks),\n ...(options.permissions ? { permissions: options.permissions } : {}),\n ...(options.context ? { context: options.context } : {}),\n ...(options.conversations === undefined\n ? {}\n : { conversations: options.conversations }),\n cache: options.cache ?? HARNESS_DEFAULTS.cache,\n });\n}\n\nfunction limits(value: HarnessLimits): ResolvedHarnessLimits {\n invariant(\n value !== null && typeof value === \"object\",\n \"Harness limits must be an object\",\n );\n const maxSteps = positive(\n value.maxSteps ?? HARNESS_DEFAULTS.maxSteps,\n \"Harness maxSteps\",\n );\n if (value.maxToolCalls !== undefined)\n positive(value.maxToolCalls, \"Harness maxToolCalls\");\n if (value.usage !== undefined) {\n invariant(\n value.usage !== null &&\n typeof value.usage === \"object\" &&\n Object.keys(value.usage).every((key) => USAGE_FIELDS.includes(key)),\n \"Harness usage limits accept input, cached, cacheCreated and output\",\n );\n for (const limit of Object.values(value.usage))\n invariant(\n Number.isSafeInteger(limit) && limit >= 0,\n \"Harness usage limits must be nonnegative integers\",\n );\n }\n return Object.freeze({\n maxSteps,\n ...(value.maxToolCalls === undefined\n ? {}\n : { maxToolCalls: value.maxToolCalls }),\n ...(value.usage === undefined\n ? {}\n : { usage: Object.freeze({ ...value.usage }) }),\n });\n}\n\nfunction toolExecution(\n value: HarnessToolExecution,\n): Required<HarnessToolExecution> {\n invariant(\n value !== null && typeof value === \"object\",\n \"Harness toolExecution must be an object\",\n );\n invariant(\n value.onError === undefined ||\n value.onError === \"return-to-model\" ||\n value.onError === \"fail\",\n 'Tool onError must be \"return-to-model\" or \"fail\"',\n );\n return Object.freeze({\n concurrency: positive(\n value.concurrency ?? HARNESS_DEFAULTS.concurrency,\n \"Tool concurrency\",\n ),\n deadlineMs: positive(\n value.deadlineMs ?? HARNESS_DEFAULTS.toolDeadlineMs,\n \"Tool deadlineMs\",\n ),\n onError: value.onError ?? HARNESS_DEFAULTS.onError,\n });\n}\n\nfunction conversationStore(value: ConversationStore): boolean {\n return (\n value !== null &&\n typeof value === \"object\" &&\n typeof value.locate === \"function\" &&\n typeof value.capture === \"function\" &&\n typeof value.restore === \"function\"\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/domain/harness.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ConversationStore } from \"./conversation.types.ts\";\nimport { invariant, positive } from \"./errors.ts\";\nimport {\n HARNESS_DEFAULTS,\n HARNESS_FIELDS,\n USAGE_FIELDS,\n} from \"./harness.constants.ts\";\nimport type {\n Harness,\n HarnessOptions,\n HarnessLimits,\n HarnessToolExecution,\n ResolvedHarnessLimits,\n} from \"./harness.types.ts\";\nimport { harnessHooks } from \"./hook.ts\";\nimport {\n defineHarnessInstructions,\n harnessInstructions,\n} from \"./instructions.ts\";\nimport { harnessSkills, skillCatalog, skillLoader } from \"./skill.ts\";\nimport { harnessTools } from \"./tool.ts\";\n\nexport function harness(options: HarnessOptions): Harness {\n invariant(\n options !== null && typeof options === \"object\",\n \"Harness options must be an object\",\n );\n invariant(\n !(\"run\" in options),\n \"harness() no longer accepts run; declare tools, instructions and limits\",\n );\n const unsupported = Object.keys(options).filter(\n (key) => !HARNESS_FIELDS.has(key),\n );\n invariant(\n unsupported.length === 0,\n `Unsupported harness option: ${unsupported.join(\", \")}`,\n );\n invariant(\n typeof options.modelProvider?.request === \"function\",\n \"Custom harness requires a model provider\",\n );\n invariant(\n options.modelProvider.validate === undefined ||\n typeof options.modelProvider.validate === \"function\",\n \"Model provider validate must be a function\",\n );\n invariant(\n options.cache === undefined || typeof options.cache === \"boolean\",\n \"Harness cache must be boolean\",\n );\n invariant(\n options.permissions === undefined ||\n options.permissions?.kind === \"permissions\",\n \"Declare permissions with defineHarnessPermissions\",\n );\n invariant(\n options.context === undefined || options.context?.kind === \"context\",\n \"Declare context strategies with defineHarnessContextStrategy\",\n );\n invariant(\n options.conversations === undefined ||\n options.conversations === false ||\n conversationStore(options.conversations),\n \"Harness conversations must be a conversation store or false\",\n );\n const skills = harnessSkills(options.skills);\n return Object.freeze({\n kind: \"custom\",\n modelProvider: options.modelProvider,\n instructions: Object.freeze([\n ...harnessInstructions(options.instructions),\n ...(skills.length\n ? [defineHarnessInstructions(skillCatalog(skills))]\n : []),\n ]),\n tools: harnessTools([\n ...(options.tools ?? []),\n ...skills.flatMap((skill) => skill.tools),\n ...(skills.length ? [skillLoader(skills)] : []),\n ]),\n skills,\n limits: limits(options.limits ?? {}),\n toolExecution: toolExecution(options.toolExecution ?? {}),\n hooks: harnessHooks(options.hooks),\n ...(options.permissions ? { permissions: options.permissions } : {}),\n ...(options.context ? { context: options.context } : {}),\n ...(options.conversations === undefined\n ? {}\n : { conversations: options.conversations }),\n cache: options.cache ?? HARNESS_DEFAULTS.cache,\n });\n}\n\nfunction limits(value: HarnessLimits): ResolvedHarnessLimits {\n invariant(\n value !== null && typeof value === \"object\",\n \"Harness limits must be an object\",\n );\n if (value.maxDelegationDepth !== undefined)\n invariant(\n Number.isSafeInteger(value.maxDelegationDepth) &&\n value.maxDelegationDepth >= 0,\n \"Harness maxDelegationDepth must be a nonnegative integer\",\n );\n const maxSteps = positive(\n value.maxSteps ?? HARNESS_DEFAULTS.maxSteps,\n \"Harness maxSteps\",\n );\n if (value.maxToolCalls !== undefined)\n positive(value.maxToolCalls, \"Harness maxToolCalls\");\n if (value.usage !== undefined) {\n invariant(\n value.usage !== null &&\n typeof value.usage === \"object\" &&\n Object.keys(value.usage).every((key) => USAGE_FIELDS.includes(key)),\n \"Harness usage limits accept input, cached, cacheCreated and output\",\n );\n for (const limit of Object.values(value.usage))\n invariant(\n Number.isSafeInteger(limit) && limit >= 0,\n \"Harness usage limits must be nonnegative integers\",\n );\n }\n return Object.freeze({\n maxSteps,\n ...(value.maxDelegationDepth === undefined\n ? {}\n : { maxDelegationDepth: value.maxDelegationDepth }),\n ...(value.maxToolCalls === undefined\n ? {}\n : { maxToolCalls: value.maxToolCalls }),\n ...(value.usage === undefined\n ? {}\n : { usage: Object.freeze({ ...value.usage }) }),\n });\n}\n\nfunction toolExecution(\n value: HarnessToolExecution,\n): Required<HarnessToolExecution> {\n invariant(\n value !== null && typeof value === \"object\",\n \"Harness toolExecution must be an object\",\n );\n invariant(\n value.onError === undefined ||\n value.onError === \"return-to-model\" ||\n value.onError === \"fail\",\n 'Tool onError must be \"return-to-model\" or \"fail\"',\n );\n return Object.freeze({\n concurrency: positive(\n value.concurrency ?? HARNESS_DEFAULTS.concurrency,\n \"Tool concurrency\",\n ),\n deadlineMs: positive(\n value.deadlineMs ?? HARNESS_DEFAULTS.toolDeadlineMs,\n \"Tool deadlineMs\",\n ),\n onError: value.onError ?? HARNESS_DEFAULTS.onError,\n });\n}\n\nfunction conversationStore(value: ConversationStore): boolean {\n return (\n value !== null &&\n typeof value === \"object\" &&\n typeof value.locate === \"function\" &&\n typeof value.capture === \"function\" &&\n typeof value.restore === \"function\"\n );\n}\n"]}
|
|
@@ -20,8 +20,9 @@ export interface HarnessInstructions {
|
|
|
20
20
|
export type HarnessInstructionsOption = string | HarnessInstructions | readonly (string | HarnessInstructions)[];
|
|
21
21
|
export interface HarnessLimits {
|
|
22
22
|
readonly maxSteps?: number;
|
|
23
|
+
readonly maxDelegationDepth?: number;
|
|
23
24
|
readonly maxToolCalls?: number;
|
|
24
|
-
readonly usage?: Partial<Usage
|
|
25
|
+
readonly usage?: Partial<Omit<Usage, "complete">>;
|
|
25
26
|
}
|
|
26
27
|
export interface ResolvedHarnessLimits extends HarnessLimits {
|
|
27
28
|
readonly maxSteps: number;
|
|
@@ -31,7 +32,7 @@ export interface HarnessToolExecution {
|
|
|
31
32
|
readonly deadlineMs?: number;
|
|
32
33
|
readonly onError?: "return-to-model" | "fail";
|
|
33
34
|
}
|
|
34
|
-
export interface
|
|
35
|
+
export interface HarnessOptions {
|
|
35
36
|
readonly modelProvider: ModelProvider;
|
|
36
37
|
readonly instructions?: HarnessInstructionsOption;
|
|
37
38
|
readonly tools?: readonly (HarnessTool | HarnessToolset)[];
|
|
@@ -44,7 +45,7 @@ export interface CustomHarnessOptions {
|
|
|
44
45
|
readonly skills?: readonly HarnessSkill[];
|
|
45
46
|
readonly cache?: boolean;
|
|
46
47
|
}
|
|
47
|
-
export interface
|
|
48
|
+
export interface Harness {
|
|
48
49
|
readonly kind: "custom";
|
|
49
50
|
readonly modelProvider: ModelProvider;
|
|
50
51
|
readonly instructions: readonly HarnessInstructions[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.types.js","sourceRoot":"","sources":["../../src/domain/harness.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Usage } from \"./agent.types.ts\";\nimport type { HarnessContextStrategy } from \"./context.types.ts\";\nimport type { ConversationStore } from \"./conversation.types.ts\";\nimport type { HarnessHook } from \"./hook.types.ts\";\nimport type { AgentModel, ModelProvider } from \"./model.types.ts\";\nimport type { HarnessPermissions } from \"./permissions.types.ts\";\nimport type { HarnessSkill } from \"./skill.types.ts\";\nimport type { SandboxLease } from \"./sandbox.types.ts\";\nimport type { HarnessTool, HarnessToolset } from \"./tool.types.ts\";\n\nexport interface HarnessInstructionContext {\n readonly sandbox: SandboxLease;\n readonly signal: AbortSignal;\n readonly model: AgentModel;\n}\n\nexport type HarnessInstructionSource =\n string | ((context: HarnessInstructionContext) => string | Promise<string>);\n\nexport interface HarnessInstructions {\n readonly kind: \"instructions\";\n resolve(context: HarnessInstructionContext): Promise<string>;\n}\n\nexport type HarnessInstructionsOption =\n string | HarnessInstructions | readonly (string | HarnessInstructions)[];\n\nexport interface HarnessLimits {\n readonly maxSteps?: number;\n readonly maxToolCalls?: number;\n readonly usage?: Partial<Usage
|
|
1
|
+
{"version":3,"file":"harness.types.js","sourceRoot":"","sources":["../../src/domain/harness.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Usage } from \"./agent.types.ts\";\nimport type { HarnessContextStrategy } from \"./context.types.ts\";\nimport type { ConversationStore } from \"./conversation.types.ts\";\nimport type { HarnessHook } from \"./hook.types.ts\";\nimport type { AgentModel, ModelProvider } from \"./model.types.ts\";\nimport type { HarnessPermissions } from \"./permissions.types.ts\";\nimport type { HarnessSkill } from \"./skill.types.ts\";\nimport type { SandboxLease } from \"./sandbox.types.ts\";\nimport type { HarnessTool, HarnessToolset } from \"./tool.types.ts\";\n\nexport interface HarnessInstructionContext {\n readonly sandbox: SandboxLease;\n readonly signal: AbortSignal;\n readonly model: AgentModel;\n}\n\nexport type HarnessInstructionSource =\n string | ((context: HarnessInstructionContext) => string | Promise<string>);\n\nexport interface HarnessInstructions {\n readonly kind: \"instructions\";\n resolve(context: HarnessInstructionContext): Promise<string>;\n}\n\nexport type HarnessInstructionsOption =\n string | HarnessInstructions | readonly (string | HarnessInstructions)[];\n\nexport interface HarnessLimits {\n readonly maxSteps?: number;\n readonly maxDelegationDepth?: number;\n readonly maxToolCalls?: number;\n readonly usage?: Partial<Omit<Usage, \"complete\">>;\n}\n\nexport interface ResolvedHarnessLimits extends HarnessLimits {\n readonly maxSteps: number;\n}\n\nexport interface HarnessToolExecution {\n readonly concurrency?: number;\n readonly deadlineMs?: number;\n readonly onError?: \"return-to-model\" | \"fail\";\n}\n\nexport interface HarnessOptions {\n readonly modelProvider: ModelProvider;\n readonly instructions?: HarnessInstructionsOption;\n readonly tools?: readonly (HarnessTool | HarnessToolset)[];\n readonly limits?: HarnessLimits;\n readonly toolExecution?: HarnessToolExecution;\n readonly hooks?: readonly HarnessHook[];\n readonly permissions?: HarnessPermissions;\n readonly context?: HarnessContextStrategy;\n readonly conversations?: ConversationStore | false;\n readonly skills?: readonly HarnessSkill[];\n readonly cache?: boolean;\n}\n\nexport interface Harness {\n readonly kind: \"custom\";\n readonly modelProvider: ModelProvider;\n readonly instructions: readonly HarnessInstructions[];\n readonly tools: readonly HarnessTool[];\n readonly limits: ResolvedHarnessLimits;\n readonly toolExecution: Required<HarnessToolExecution>;\n readonly hooks: readonly HarnessHook[];\n readonly permissions?: HarnessPermissions;\n readonly context?: HarnessContextStrategy;\n readonly conversations?: ConversationStore | false;\n readonly skills: readonly HarnessSkill[];\n readonly cache: boolean;\n}\n"]}
|
|
@@ -23,6 +23,7 @@ export interface ModelToolResultBlock {
|
|
|
23
23
|
readonly isError?: boolean;
|
|
24
24
|
}
|
|
25
25
|
export interface ModelReasoningBlock {
|
|
26
|
+
readonly text?: string;
|
|
26
27
|
readonly type: "reasoning";
|
|
27
28
|
readonly provider: string;
|
|
28
29
|
readonly model: string;
|
|
@@ -57,6 +58,13 @@ export interface ModelResult {
|
|
|
57
58
|
readonly usage?: Usage;
|
|
58
59
|
}
|
|
59
60
|
export type ModelStreamEvent = {
|
|
61
|
+
readonly type: "reasoning";
|
|
62
|
+
readonly text: string;
|
|
63
|
+
} | {
|
|
64
|
+
readonly type: "retry";
|
|
65
|
+
readonly attempt: number;
|
|
66
|
+
readonly message?: string;
|
|
67
|
+
} | {
|
|
60
68
|
readonly type: "text-delta";
|
|
61
69
|
readonly text: string;
|
|
62
70
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.types.js","sourceRoot":"","sources":["../../src/domain/model.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Usage } from \"./agent.types.ts\";\n\nexport type ModelReasoning =\n \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\nexport interface AgentModel {\n readonly name: string;\n readonly reasoning?: ModelReasoning;\n readonly maxOutputTokens?: number;\n}\n\nexport type ModelSpec = string | AgentModel;\n\nexport interface ModelTextBlock {\n readonly type: \"text\";\n readonly text: string;\n}\n\nexport interface ModelToolCallBlock {\n readonly type: \"tool-call\";\n readonly id: string;\n readonly name: string;\n readonly input: unknown;\n}\n\nexport interface ModelToolResultBlock {\n readonly type: \"tool-result\";\n readonly callId: string;\n readonly content: string;\n readonly isError?: boolean;\n}\n\nexport interface ModelReasoningBlock {\n readonly type: \"reasoning\";\n readonly provider: string;\n readonly model: string;\n readonly data: unknown;\n}\n\nexport type ModelContentBlock =\n | ModelTextBlock\n | ModelToolCallBlock\n | ModelToolResultBlock\n | ModelReasoningBlock;\n\nexport interface ModelMessage {\n readonly role: \"user\" | \"assistant\";\n readonly content: readonly ModelContentBlock[];\n}\n\nexport interface ModelToolSpec {\n readonly name: string;\n readonly description: string;\n readonly inputSchema: Readonly<Record<string, unknown>>;\n}\n\nexport type ModelStopReason = \"end\" | \"tool-calls\" | \"max-tokens\" | \"refusal\";\n\nexport interface ModelRequest {\n readonly model: string;\n readonly prompt?: string;\n readonly messages?: readonly ModelMessage[];\n readonly system?: string;\n readonly tools?: readonly ModelToolSpec[];\n readonly maxOutputTokens?: number;\n readonly reasoning?: ModelReasoning;\n readonly cache?: boolean;\n readonly signal?: AbortSignal;\n}\n\nexport interface ModelResult {\n readonly text: string;\n readonly content?: readonly ModelContentBlock[];\n readonly stopReason?: ModelStopReason;\n readonly usage?: Usage;\n}\n\nexport type ModelStreamEvent =\n | { readonly type: \"text-delta\"; readonly text: string }\n | { readonly type: \"result\"; readonly result: ModelResult };\n\nexport interface ModelProvider {\n readonly name: string;\n readonly identity?: string;\n validate?(model: AgentModel): void;\n request(request: ModelRequest): Promise<ModelResult>;\n stream?(request: ModelRequest): AsyncIterable<ModelStreamEvent>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"model.types.js","sourceRoot":"","sources":["../../src/domain/model.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Usage } from \"./agent.types.ts\";\n\nexport type ModelReasoning =\n \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"max\";\n\nexport interface AgentModel {\n readonly name: string;\n readonly reasoning?: ModelReasoning;\n readonly maxOutputTokens?: number;\n}\n\nexport type ModelSpec = string | AgentModel;\n\nexport interface ModelTextBlock {\n readonly type: \"text\";\n readonly text: string;\n}\n\nexport interface ModelToolCallBlock {\n readonly type: \"tool-call\";\n readonly id: string;\n readonly name: string;\n readonly input: unknown;\n}\n\nexport interface ModelToolResultBlock {\n readonly type: \"tool-result\";\n readonly callId: string;\n readonly content: string;\n readonly isError?: boolean;\n}\n\nexport interface ModelReasoningBlock {\n readonly text?: string;\n readonly type: \"reasoning\";\n readonly provider: string;\n readonly model: string;\n readonly data: unknown;\n}\n\nexport type ModelContentBlock =\n | ModelTextBlock\n | ModelToolCallBlock\n | ModelToolResultBlock\n | ModelReasoningBlock;\n\nexport interface ModelMessage {\n readonly role: \"user\" | \"assistant\";\n readonly content: readonly ModelContentBlock[];\n}\n\nexport interface ModelToolSpec {\n readonly name: string;\n readonly description: string;\n readonly inputSchema: Readonly<Record<string, unknown>>;\n}\n\nexport type ModelStopReason = \"end\" | \"tool-calls\" | \"max-tokens\" | \"refusal\";\n\nexport interface ModelRequest {\n readonly model: string;\n readonly prompt?: string;\n readonly messages?: readonly ModelMessage[];\n readonly system?: string;\n readonly tools?: readonly ModelToolSpec[];\n readonly maxOutputTokens?: number;\n readonly reasoning?: ModelReasoning;\n readonly cache?: boolean;\n readonly signal?: AbortSignal;\n}\n\nexport interface ModelResult {\n readonly text: string;\n readonly content?: readonly ModelContentBlock[];\n readonly stopReason?: ModelStopReason;\n readonly usage?: Usage;\n}\n\nexport type ModelStreamEvent =\n | { readonly type: \"reasoning\"; readonly text: string }\n | {\n readonly type: \"retry\";\n readonly attempt: number;\n readonly message?: string;\n }\n | { readonly type: \"text-delta\"; readonly text: string }\n | { readonly type: \"result\"; readonly result: ModelResult };\n\nexport interface ModelProvider {\n readonly name: string;\n readonly identity?: string;\n validate?(model: AgentModel): void;\n request(request: ModelRequest): Promise<ModelResult>;\n stream?(request: ModelRequest): AsyncIterable<ModelStreamEvent>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation.constants.js","sourceRoot":"","sources":["../../src/domain/observation.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,IAAI;IACvB,UAAU,EAAE,GAAG;IACf,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,IAAI;CACX,CAAC","sourcesContent":["export const observationDefaults = {\n capacity: 1024,\n deliveryTimeoutMs: 5000,\n errorLimit: 100,\n outputCharacters: 8192,\n previewCharacters: 2000,\n toolCallLimit: 1024,\n} as const;\n"]}
|