@elie-laloum/outpost 11.1.2 → 11.2.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 +34 -0
- package/README.md +2 -1
- package/SECURITY.md +5 -1
- package/dist/adapters/agents/antigravity/antigravity-adapter.js +9 -0
- package/dist/adapters/agents/antigravity/antigravity-adapter.js.map +1 -1
- package/dist/adapters/agents/antigravity/antigravity-hook-plan.d.ts +3 -0
- package/dist/adapters/agents/antigravity/antigravity-hook-plan.js +39 -0
- package/dist/adapters/agents/antigravity/antigravity-hook-plan.js.map +1 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.constants.d.ts +3 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.constants.js +394 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.constants.js.map +1 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.d.ts +2 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.js +6 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.js.map +1 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.types.d.ts +114 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.types.js +2 -0
- package/dist/adapters/agents/antigravity/antigravity-hooks.types.js.map +1 -0
- package/dist/adapters/agents/antigravity/antigravity.types.d.ts +1 -0
- package/dist/adapters/agents/antigravity/antigravity.types.js.map +1 -1
- package/dist/adapters/agents/authentication.js +1 -0
- package/dist/adapters/agents/authentication.js.map +1 -1
- package/dist/adapters/agents/claude/claude-adapter.js +15 -0
- package/dist/adapters/agents/claude/claude-adapter.js.map +1 -1
- package/dist/adapters/agents/claude/claude-hook-plan.constants.d.ts +1 -0
- package/dist/adapters/agents/claude/claude-hook-plan.constants.js +20 -0
- package/dist/adapters/agents/claude/claude-hook-plan.constants.js.map +1 -0
- package/dist/adapters/agents/claude/claude-hook-plan.d.ts +4 -0
- package/dist/adapters/agents/claude/claude-hook-plan.js +60 -0
- package/dist/adapters/agents/claude/claude-hook-plan.js.map +1 -0
- package/dist/adapters/agents/claude/claude-hooks.constants.d.ts +3 -0
- package/dist/adapters/agents/claude/claude-hooks.constants.js +2968 -0
- package/dist/adapters/agents/claude/claude-hooks.constants.js.map +1 -0
- package/dist/adapters/agents/claude/claude-hooks.d.ts +2 -0
- package/dist/adapters/agents/claude/claude-hooks.js +6 -0
- package/dist/adapters/agents/claude/claude-hooks.js.map +1 -0
- package/dist/adapters/agents/claude/claude-hooks.types.d.ts +900 -0
- package/dist/adapters/agents/claude/claude-hooks.types.js +2 -0
- package/dist/adapters/agents/claude/claude-hooks.types.js.map +1 -0
- package/dist/adapters/agents/claude/claude-profile.d.ts +1 -0
- package/dist/adapters/agents/claude/claude-profile.js +23 -11
- package/dist/adapters/agents/claude/claude-profile.js.map +1 -1
- package/dist/adapters/agents/codex/codex-adapter.js +17 -1
- package/dist/adapters/agents/codex/codex-adapter.js.map +1 -1
- package/dist/adapters/agents/codex/codex-authentication.js +1 -0
- package/dist/adapters/agents/codex/codex-authentication.js.map +1 -1
- package/dist/adapters/agents/codex/codex-conversations.constants.d.ts +1 -0
- package/dist/adapters/agents/codex/codex-conversations.constants.js +2 -0
- package/dist/adapters/agents/codex/codex-conversations.constants.js.map +1 -0
- package/dist/adapters/agents/codex/codex-conversations.js +8 -5
- package/dist/adapters/agents/codex/codex-conversations.js.map +1 -1
- package/dist/adapters/agents/codex/codex-hook-plan.d.ts +3 -0
- package/dist/adapters/agents/codex/codex-hook-plan.js +72 -0
- package/dist/adapters/agents/codex/codex-hook-plan.js.map +1 -0
- package/dist/adapters/agents/codex/codex-hooks.constants.d.ts +3 -0
- package/dist/adapters/agents/codex/codex-hooks.constants.js +942 -0
- package/dist/adapters/agents/codex/codex-hooks.constants.js.map +1 -0
- package/dist/adapters/agents/codex/codex-hooks.d.ts +2 -0
- package/dist/adapters/agents/codex/codex-hooks.js +6 -0
- package/dist/adapters/agents/codex/codex-hooks.js.map +1 -0
- package/dist/adapters/agents/codex/codex-hooks.types.d.ts +255 -0
- package/dist/adapters/agents/codex/codex-hooks.types.js +2 -0
- package/dist/adapters/agents/codex/codex-hooks.types.js.map +1 -0
- package/dist/adapters/agents/codex/codex-provider.js +2 -2
- package/dist/adapters/agents/codex/codex-provider.js.map +1 -1
- package/dist/adapters/agents/copilot/copilot-adapter.js +14 -0
- package/dist/adapters/agents/copilot/copilot-adapter.js.map +1 -1
- package/dist/adapters/agents/copilot/copilot-hook-plan.d.ts +3 -0
- package/dist/adapters/agents/copilot/copilot-hook-plan.js +26 -0
- package/dist/adapters/agents/copilot/copilot-hook-plan.js.map +1 -0
- package/dist/adapters/agents/copilot/copilot-hooks.constants.d.ts +3 -0
- package/dist/adapters/agents/copilot/copilot-hooks.constants.js +528 -0
- package/dist/adapters/agents/copilot/copilot-hooks.constants.js.map +1 -0
- package/dist/adapters/agents/copilot/copilot-hooks.d.ts +2 -0
- package/dist/adapters/agents/copilot/copilot-hooks.js +6 -0
- package/dist/adapters/agents/copilot/copilot-hooks.js.map +1 -0
- package/dist/adapters/agents/copilot/copilot-hooks.types.d.ts +166 -0
- package/dist/adapters/agents/copilot/copilot-hooks.types.js +2 -0
- package/dist/adapters/agents/copilot/copilot-hooks.types.js.map +1 -0
- package/dist/adapters/agents/copilot/copilot.types.d.ts +1 -0
- package/dist/adapters/agents/copilot/copilot.types.js.map +1 -1
- package/dist/adapters/agents/hook-groups.d.ts +2 -0
- package/dist/adapters/agents/hook-groups.js +17 -0
- package/dist/adapters/agents/hook-groups.js.map +1 -0
- package/dist/adapters/agents/kimi/kimi-adapter.js +16 -1
- package/dist/adapters/agents/kimi/kimi-adapter.js.map +1 -1
- package/dist/adapters/agents/kimi/kimi-hook-plan.d.ts +3 -0
- package/dist/adapters/agents/kimi/kimi-hook-plan.js +33 -0
- package/dist/adapters/agents/kimi/kimi-hook-plan.js.map +1 -0
- package/dist/adapters/agents/kimi/kimi-hooks.constants.d.ts +3 -0
- package/dist/adapters/agents/kimi/kimi-hooks.constants.js +747 -0
- package/dist/adapters/agents/kimi/kimi-hooks.constants.js.map +1 -0
- package/dist/adapters/agents/kimi/kimi-hooks.d.ts +2 -0
- package/dist/adapters/agents/kimi/kimi-hooks.js +6 -0
- package/dist/adapters/agents/kimi/kimi-hooks.js.map +1 -0
- package/dist/adapters/agents/kimi/kimi-hooks.types.d.ts +226 -0
- package/dist/adapters/agents/kimi/kimi-hooks.types.js +2 -0
- package/dist/adapters/agents/kimi/kimi-hooks.types.js.map +1 -0
- package/dist/adapters/agents/kimi/kimi-request.js +2 -0
- package/dist/adapters/agents/kimi/kimi-request.js.map +1 -1
- package/dist/adapters/agents/kimi/kimi.constants.d.ts +1 -0
- package/dist/adapters/agents/kimi/kimi.constants.js +1 -0
- package/dist/adapters/agents/kimi/kimi.constants.js.map +1 -1
- package/dist/adapters/agents/kimi/kimi.types.d.ts +1 -0
- package/dist/adapters/agents/kimi/kimi.types.js.map +1 -1
- package/dist/adapters/agents/native-hooks.d.ts +4 -0
- package/dist/adapters/agents/native-hooks.js +63 -0
- package/dist/adapters/agents/native-hooks.js.map +1 -0
- package/dist/adapters/agents/native-hooks.types.d.ts +22 -0
- package/dist/adapters/agents/native-hooks.types.js +2 -0
- package/dist/adapters/agents/native-hooks.types.js.map +1 -0
- package/dist/adapters/agents/settings.types.d.ts +2 -0
- package/dist/adapters/agents/settings.types.js.map +1 -1
- package/dist/adapters/decisions/system-one-provider.constants.d.ts +1 -1
- package/dist/adapters/decisions/system-one-provider.constants.js +1 -1
- package/dist/adapters/decisions/system-one-provider.constants.js.map +1 -1
- package/dist/adapters/decisions/system-one-provider.js +8 -21
- package/dist/adapters/decisions/system-one-provider.js.map +1 -1
- package/dist/adapters/models/anthropic-model-provider.constants.d.ts +1 -0
- package/dist/adapters/models/anthropic-model-provider.constants.js +4 -0
- package/dist/adapters/models/anthropic-model-provider.constants.js.map +1 -1
- package/dist/adapters/models/anthropic-model-provider.js +7 -1
- package/dist/adapters/models/anthropic-model-provider.js.map +1 -1
- package/dist/adapters/models/http-failure.d.ts +3 -0
- package/dist/adapters/models/http-failure.js +43 -0
- package/dist/adapters/models/http-failure.js.map +1 -0
- package/dist/adapters/models/http-provider.js +14 -20
- package/dist/adapters/models/http-provider.js.map +1 -1
- package/dist/adapters/models/model-protocol.types.d.ts +1 -0
- package/dist/adapters/models/model-protocol.types.js.map +1 -1
- package/dist/adapters/models/model.constants.d.ts +2 -0
- package/dist/adapters/models/model.constants.js +17 -0
- package/dist/adapters/models/model.constants.js.map +1 -1
- package/dist/adapters/models/openai-chat-stream.js +3 -1
- package/dist/adapters/models/openai-chat-stream.js.map +1 -1
- package/dist/adapters/models/openai-responses.js +4 -0
- package/dist/adapters/models/openai-responses.js.map +1 -1
- package/dist/adapters/secrets/aws.js +5 -4
- package/dist/adapters/secrets/aws.js.map +1 -1
- package/dist/adapters/secrets/azure.constants.d.ts +1 -0
- package/dist/adapters/secrets/azure.constants.js +2 -0
- package/dist/adapters/secrets/azure.constants.js.map +1 -0
- package/dist/adapters/secrets/azure.js +2 -1
- package/dist/adapters/secrets/azure.js.map +1 -1
- package/dist/adapters/secrets/gcp.constants.d.ts +1 -0
- package/dist/adapters/secrets/gcp.constants.js +2 -0
- package/dist/adapters/secrets/gcp.constants.js.map +1 -0
- package/dist/adapters/secrets/gcp.js +11 -9
- package/dist/adapters/secrets/gcp.js.map +1 -1
- package/dist/adapters/secrets/infisical.js +3 -2
- package/dist/adapters/secrets/infisical.js.map +1 -1
- package/dist/adapters/secrets/onepassword.constants.d.ts +1 -0
- package/dist/adapters/secrets/onepassword.constants.js +2 -0
- package/dist/adapters/secrets/onepassword.constants.js.map +1 -0
- package/dist/adapters/secrets/onepassword.js +2 -1
- package/dist/adapters/secrets/onepassword.js.map +1 -1
- package/dist/adapters/secrets/secret-source.js +3 -1
- package/dist/adapters/secrets/secret-source.js.map +1 -1
- package/dist/adapters/secrets/vault-response.js +5 -5
- package/dist/adapters/secrets/vault-response.js.map +1 -1
- package/dist/adapters/secrets/vault.js +4 -3
- package/dist/adapters/secrets/vault.js.map +1 -1
- package/dist/adapters/testing/scripted-agent.d.ts +3 -1
- package/dist/adapters/testing/scripted-agent.js +3 -1
- package/dist/adapters/testing/scripted-agent.js.map +1 -1
- package/dist/adapters/tools/edit-tools.js +3 -3
- package/dist/adapters/tools/edit-tools.js.map +1 -1
- package/dist/adapters/tools/git-tools.js +16 -1
- package/dist/adapters/tools/git-tools.js.map +1 -1
- package/dist/adapters/tools/mcp-launcher.constants.d.ts +1 -1
- package/dist/adapters/tools/mcp-launcher.constants.js +29 -7
- package/dist/adapters/tools/mcp-launcher.constants.js.map +1 -1
- package/dist/adapters/tools/mcp-resources.js +5 -1
- package/dist/adapters/tools/mcp-resources.js.map +1 -1
- package/dist/adapters/tools/mcp.constants.d.ts +0 -6
- package/dist/adapters/tools/mcp.constants.js +0 -6
- package/dist/adapters/tools/mcp.constants.js.map +1 -1
- package/dist/adapters/tools/mcp.js +1 -0
- package/dist/adapters/tools/mcp.js.map +1 -1
- package/dist/adapters/tools/sandbox-files.constants.d.ts +1 -0
- package/dist/adapters/tools/sandbox-files.constants.js +17 -0
- package/dist/adapters/tools/sandbox-files.constants.js.map +1 -0
- package/dist/adapters/tools/sandbox-files.d.ts +1 -0
- package/dist/adapters/tools/sandbox-files.js +14 -1
- package/dist/adapters/tools/sandbox-files.js.map +1 -1
- package/dist/adapters/tools/tools.constants.js +1 -0
- package/dist/adapters/tools/tools.constants.js.map +1 -1
- package/dist/adapters/triggers/github-webhook.js +14 -11
- package/dist/adapters/triggers/github-webhook.js.map +1 -1
- package/dist/adapters/triggers/gitlab-webhook.js +16 -13
- package/dist/adapters/triggers/gitlab-webhook.js.map +1 -1
- package/dist/adapters/triggers/slack-request.js +10 -7
- package/dist/adapters/triggers/slack-request.js.map +1 -1
- package/dist/adapters/triggers/standard-webhook.js +10 -7
- package/dist/adapters/triggers/standard-webhook.js.map +1 -1
- package/dist/application/agent-authentication.js +4 -1
- package/dist/application/agent-authentication.js.map +1 -1
- package/dist/application/agent-turn.js +20 -5
- package/dist/application/agent-turn.js.map +1 -1
- package/dist/application/cli-hooks.constants.d.ts +2 -0
- package/dist/application/cli-hooks.constants.js +69 -0
- package/dist/application/cli-hooks.constants.js.map +1 -0
- package/dist/application/cli-hooks.d.ts +3 -0
- package/dist/application/cli-hooks.js +168 -0
- package/dist/application/cli-hooks.js.map +1 -0
- package/dist/application/cli-steering.js +33 -2
- package/dist/application/cli-steering.js.map +1 -1
- package/dist/application/custom-turn.js +10 -1
- package/dist/application/custom-turn.js.map +1 -1
- package/dist/application/diagnostic-probe.d.ts +1 -1
- package/dist/application/diagnostic-probe.js +7 -3
- package/dist/application/diagnostic-probe.js.map +1 -1
- package/dist/application/dispatch-observation.js +4 -0
- package/dist/application/dispatch-observation.js.map +1 -1
- package/dist/application/doctor-agent.d.ts +1 -1
- package/dist/application/doctor-agent.js +2 -2
- package/dist/application/doctor-agent.js.map +1 -1
- package/dist/application/doctor-deadline.d.ts +1 -0
- package/dist/application/doctor-deadline.js +10 -0
- package/dist/application/doctor-deadline.js.map +1 -0
- package/dist/application/doctor-image.js +9 -7
- package/dist/application/doctor-image.js.map +1 -1
- package/dist/application/doctor-sandbox.js +4 -4
- package/dist/application/doctor-sandbox.js.map +1 -1
- package/dist/application/doctor.constants.d.ts +2 -0
- package/dist/application/doctor.constants.js +2 -0
- package/dist/application/doctor.constants.js.map +1 -1
- package/dist/application/doctor.js +12 -8
- package/dist/application/doctor.js.map +1 -1
- package/dist/application/doctor.types.d.ts +2 -0
- package/dist/application/doctor.types.js.map +1 -1
- package/dist/application/file-sandbox.js +49 -11
- package/dist/application/file-sandbox.js.map +1 -1
- package/dist/application/harness-context.js +4 -2
- package/dist/application/harness-context.js.map +1 -1
- package/dist/application/harness-hook-transforms.d.ts +8 -0
- package/dist/application/harness-hook-transforms.js +115 -0
- package/dist/application/harness-hook-transforms.js.map +1 -0
- package/dist/application/harness-hooks.d.ts +5 -3
- package/dist/application/harness-hooks.js +37 -50
- package/dist/application/harness-hooks.js.map +1 -1
- package/dist/application/harness-loop.d.ts +2 -1
- package/dist/application/harness-loop.js +95 -21
- package/dist/application/harness-loop.js.map +1 -1
- package/dist/application/harness-subagent.d.ts +1 -1
- package/dist/application/harness-subagent.js +63 -12
- package/dist/application/harness-subagent.js.map +1 -1
- package/dist/application/harness.types.d.ts +3 -0
- package/dist/application/harness.types.js.map +1 -1
- package/dist/application/hook-invocation.d.ts +4 -0
- package/dist/application/hook-invocation.js +59 -0
- package/dist/application/hook-invocation.js.map +1 -0
- package/dist/application/queue-worker.js +51 -9
- 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/recipes/native-schemas.constants.js +1439 -218
- package/dist/application/recipes/native-schemas.constants.js.map +1 -1
- package/dist/application/recovery-inspection.js +4 -1
- package/dist/application/recovery-inspection.js.map +1 -1
- package/dist/application/remote-download.js +15 -5
- package/dist/application/remote-download.js.map +1 -1
- package/dist/application/remote-paths.d.ts +1 -0
- package/dist/application/remote-paths.js +7 -0
- package/dist/application/remote-paths.js.map +1 -0
- package/dist/application/remote-validation.js +40 -9
- package/dist/application/remote-validation.js.map +1 -1
- package/dist/application/remote-workspace.js +17 -2
- package/dist/application/remote-workspace.js.map +1 -1
- package/dist/application/repetition-watchdog.js +3 -1
- package/dist/application/repetition-watchdog.js.map +1 -1
- package/dist/application/sandbox-attach.js +38 -9
- package/dist/application/sandbox-attach.js.map +1 -1
- package/dist/application/sandbox-dispatch.js +7 -1
- package/dist/application/sandbox-dispatch.js.map +1 -1
- package/dist/application/schedules.js +2 -0
- package/dist/application/schedules.js.map +1 -1
- package/dist/application/secrets.js +4 -0
- package/dist/application/secrets.js.map +1 -1
- package/dist/application/tool-execution.js +28 -8
- package/dist/application/tool-execution.js.map +1 -1
- package/dist/application/transport-retention.js +3 -3
- package/dist/application/transport-retention.js.map +1 -1
- package/dist/application/workspace-fingerprint.d.ts +1 -0
- package/dist/application/workspace-fingerprint.js +19 -4
- package/dist/application/workspace-fingerprint.js.map +1 -1
- package/dist/cli/doctor-command.js +12 -2
- package/dist/cli/doctor-command.js.map +1 -1
- package/dist/cli/image.js +2 -0
- package/dist/cli/image.js.map +1 -1
- package/dist/cli/main.constants.d.ts +14 -2
- package/dist/cli/main.constants.js +27 -1
- package/dist/cli/main.constants.js.map +1 -1
- package/dist/cli/project-settings.js +7 -1
- package/dist/cli/project-settings.js.map +1 -1
- package/dist/cli/recipe-yaml.js +8 -0
- package/dist/cli/recipe-yaml.js.map +1 -1
- package/dist/cli/recovery-command.js +3 -0
- package/dist/cli/recovery-command.js.map +1 -1
- package/dist/cli/recovery-unlock-command.d.ts +2 -0
- package/dist/cli/recovery-unlock-command.js +19 -0
- package/dist/cli/recovery-unlock-command.js.map +1 -0
- package/dist/cli/scaffold-files.js +4 -1
- package/dist/cli/scaffold-files.js.map +1 -1
- package/dist/cli/scaffold-validation.js +3 -0
- package/dist/cli/scaffold-validation.js.map +1 -1
- package/dist/cli/scaffold.js +2 -0
- package/dist/cli/scaffold.js.map +1 -1
- package/dist/domain/agent-hook.types.d.ts +28 -0
- package/dist/domain/agent-hook.types.js +2 -0
- package/dist/domain/agent-hook.types.js.map +1 -0
- package/dist/domain/agent-profile-hooks.d.ts +2 -0
- package/dist/domain/agent-profile-hooks.js +52 -0
- package/dist/domain/agent-profile-hooks.js.map +1 -0
- package/dist/domain/agent-profile-permissions.js +11 -1
- package/dist/domain/agent-profile-permissions.js.map +1 -1
- package/dist/domain/agent-profile.constants.d.ts +1 -0
- package/dist/domain/agent-profile.constants.js +9 -0
- package/dist/domain/agent-profile.constants.js.map +1 -1
- package/dist/domain/agent-profile.js +6 -1
- package/dist/domain/agent-profile.js.map +1 -1
- package/dist/domain/agent-profile.types.d.ts +11 -0
- package/dist/domain/agent-profile.types.js.map +1 -1
- package/dist/domain/agent.types.d.ts +2 -0
- package/dist/domain/agent.types.js.map +1 -1
- package/dist/domain/container-image.d.ts +1 -0
- package/dist/domain/container-image.js +8 -0
- package/dist/domain/container-image.js.map +1 -0
- package/dist/domain/context.constants.d.ts +1 -0
- package/dist/domain/context.constants.js +1 -0
- package/dist/domain/context.constants.js.map +1 -1
- package/dist/domain/context.js +6 -1
- package/dist/domain/context.js.map +1 -1
- package/dist/domain/egress.js +6 -1
- package/dist/domain/egress.js.map +1 -1
- package/dist/domain/glob.js +1 -1
- package/dist/domain/glob.js.map +1 -1
- package/dist/domain/harness.js +4 -1
- package/dist/domain/harness.js.map +1 -1
- package/dist/domain/hook-command.d.ts +2 -0
- package/dist/domain/hook-command.js +26 -0
- package/dist/domain/hook-command.js.map +1 -0
- package/dist/domain/hook-command.types.d.ts +7 -0
- package/dist/domain/hook-command.types.js +2 -0
- package/dist/domain/hook-command.types.js.map +1 -0
- package/dist/domain/hook-decision.d.ts +2 -0
- package/dist/domain/hook-decision.js +38 -0
- package/dist/domain/hook-decision.js.map +1 -0
- package/dist/domain/hook.constants.d.ts +3 -0
- package/dist/domain/hook.constants.js +31 -1
- package/dist/domain/hook.constants.js.map +1 -1
- package/dist/domain/hook.js +49 -5
- package/dist/domain/hook.js.map +1 -1
- package/dist/domain/hook.types.d.ts +82 -5
- package/dist/domain/hook.types.js.map +1 -1
- package/dist/domain/mcp-server.constants.d.ts +6 -0
- package/dist/domain/mcp-server.constants.js +6 -0
- package/dist/domain/mcp-server.constants.js.map +1 -1
- package/dist/domain/mcp-server.js +1 -0
- package/dist/domain/mcp-server.js.map +1 -1
- package/dist/domain/permissions.types.d.ts +1 -0
- package/dist/domain/permissions.types.js.map +1 -1
- package/dist/domain/pricing.js +4 -2
- package/dist/domain/pricing.js.map +1 -1
- package/dist/domain/redaction.js +6 -3
- package/dist/domain/redaction.js.map +1 -1
- package/dist/domain/secret-fault.d.ts +4 -0
- package/dist/domain/secret-fault.js +11 -0
- package/dist/domain/secret-fault.js.map +1 -0
- package/dist/domain/secrets.js +3 -2
- package/dist/domain/secrets.js.map +1 -1
- package/dist/domain/steering.js +2 -0
- package/dist/domain/steering.js.map +1 -1
- package/dist/domain/steering.types.d.ts +1 -1
- package/dist/domain/steering.types.js.map +1 -1
- package/dist/domain/transport.js +5 -1
- package/dist/domain/transport.js.map +1 -1
- package/dist/domain/trigger-payload.d.ts +4 -0
- package/dist/domain/trigger-payload.js +15 -0
- package/dist/domain/trigger-payload.js.map +1 -0
- package/dist/domain/workflow/checkpoint.js +19 -2
- package/dist/domain/workflow/checkpoint.js.map +1 -1
- package/dist/domain/workflow/retry.constants.d.ts +1 -0
- package/dist/domain/workflow/retry.constants.js +1 -0
- package/dist/domain/workflow/retry.constants.js.map +1 -1
- package/dist/domain/workflow/retry.js +6 -2
- package/dist/domain/workflow/retry.js.map +1 -1
- package/dist/domain/workflow/task-runner.js +5 -3
- package/dist/domain/workflow/task-runner.js.map +1 -1
- package/dist/domain/workflow/workflow-state.js +2 -1
- package/dist/domain/workflow/workflow-state.js.map +1 -1
- package/dist/domain/workflow.types.d.ts +1 -0
- package/dist/domain/workflow.types.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/conversations/transcript-store.js +32 -5
- package/dist/infrastructure/conversations/transcript-store.js.map +1 -1
- package/dist/infrastructure/files.d.ts +1 -0
- package/dist/infrastructure/files.js +8 -4
- package/dist/infrastructure/files.js.map +1 -1
- package/dist/infrastructure/git/integration-candidate.js +3 -2
- package/dist/infrastructure/git/integration-candidate.js.map +1 -1
- package/dist/infrastructure/git/lock-recovery.d.ts +3 -0
- package/dist/infrastructure/git/lock-recovery.js +58 -0
- package/dist/infrastructure/git/lock-recovery.js.map +1 -0
- package/dist/infrastructure/git/lock-recovery.types.d.ts +11 -0
- package/dist/infrastructure/git/lock-recovery.types.js +2 -0
- package/dist/infrastructure/git/lock-recovery.types.js.map +1 -0
- package/dist/infrastructure/git/managed-worktree.js +5 -8
- package/dist/infrastructure/git/managed-worktree.js.map +1 -1
- package/dist/infrastructure/git/verification-command.js +35 -30
- package/dist/infrastructure/git/verification-command.js.map +1 -1
- package/dist/infrastructure/git/workspace-lease.js +12 -5
- package/dist/infrastructure/git/workspace-lease.js.map +1 -1
- package/dist/infrastructure/hook-configuration.constants.d.ts +1 -0
- package/dist/infrastructure/hook-configuration.constants.js +59 -0
- package/dist/infrastructure/hook-configuration.constants.js.map +1 -0
- package/dist/infrastructure/hook-configuration.d.ts +3 -0
- package/dist/infrastructure/hook-configuration.js +16 -0
- package/dist/infrastructure/hook-configuration.js.map +1 -0
- package/dist/infrastructure/hook-configuration.types.d.ts +14 -0
- package/dist/infrastructure/hook-configuration.types.js +2 -0
- package/dist/infrastructure/hook-configuration.types.js.map +1 -0
- package/dist/infrastructure/http-transport.constants.d.ts +1 -0
- package/dist/infrastructure/http-transport.constants.js +14 -0
- package/dist/infrastructure/http-transport.constants.js.map +1 -0
- package/dist/infrastructure/http-transport.d.ts +7 -0
- package/dist/infrastructure/http-transport.js +19 -0
- package/dist/infrastructure/http-transport.js.map +1 -0
- package/dist/infrastructure/input-failure.d.ts +4 -0
- package/dist/infrastructure/input-failure.js +14 -0
- package/dist/infrastructure/input-failure.js.map +1 -0
- package/dist/infrastructure/inspection-file.d.ts +1 -0
- package/dist/infrastructure/inspection-file.js +8 -2
- package/dist/infrastructure/inspection-file.js.map +1 -1
- package/dist/infrastructure/local-transport.js +16 -11
- package/dist/infrastructure/local-transport.js.map +1 -1
- package/dist/infrastructure/process.constants.d.ts +1 -0
- package/dist/infrastructure/process.constants.js +1 -0
- package/dist/infrastructure/process.constants.js.map +1 -1
- package/dist/infrastructure/process.d.ts +1 -0
- package/dist/infrastructure/process.js +48 -8
- package/dist/infrastructure/process.js.map +1 -1
- package/dist/infrastructure/reservation-ledger.d.ts +2 -0
- package/dist/infrastructure/reservation-ledger.js +84 -0
- package/dist/infrastructure/reservation-ledger.js.map +1 -0
- package/dist/infrastructure/reservation-recovery.d.ts +4 -0
- package/dist/infrastructure/reservation-recovery.js +28 -0
- package/dist/infrastructure/reservation-recovery.js.map +1 -0
- package/dist/infrastructure/s3-tombstones.d.ts +3 -0
- package/dist/infrastructure/s3-tombstones.js +46 -0
- package/dist/infrastructure/s3-tombstones.js.map +1 -0
- package/dist/infrastructure/s3-tombstones.types.d.ts +6 -0
- package/dist/infrastructure/s3-tombstones.types.js +2 -0
- package/dist/infrastructure/s3-tombstones.types.js.map +1 -0
- package/dist/infrastructure/s3-transport.d.ts +2 -0
- package/dist/infrastructure/s3-transport.js +4 -2
- package/dist/infrastructure/s3-transport.js.map +1 -1
- package/dist/infrastructure/sse.js +6 -3
- package/dist/infrastructure/sse.js.map +1 -1
- package/dist/infrastructure/task-queue-bullmq-connection.d.ts +3 -0
- package/dist/infrastructure/task-queue-bullmq-connection.js +32 -0
- package/dist/infrastructure/task-queue-bullmq-connection.js.map +1 -0
- package/dist/infrastructure/task-queue-bullmq-connection.types.d.ts +8 -0
- package/dist/infrastructure/task-queue-bullmq-connection.types.js +2 -0
- package/dist/infrastructure/task-queue-bullmq-connection.types.js.map +1 -0
- package/dist/infrastructure/task-queue-bullmq-resources.js +21 -15
- package/dist/infrastructure/task-queue-bullmq-resources.js.map +1 -1
- package/dist/infrastructure/task-queue-bullmq-state.d.ts +1 -0
- package/dist/infrastructure/task-queue-bullmq-state.js +1 -0
- package/dist/infrastructure/task-queue-bullmq-state.js.map +1 -1
- package/dist/infrastructure/task-queue-bullmq.constants.d.ts +2 -1
- package/dist/infrastructure/task-queue-bullmq.constants.js +2 -1
- package/dist/infrastructure/task-queue-bullmq.constants.js.map +1 -1
- package/dist/infrastructure/task-queue-bullmq.js +10 -1
- package/dist/infrastructure/task-queue-bullmq.js.map +1 -1
- package/dist/infrastructure/task-queue.js +13 -4
- package/dist/infrastructure/task-queue.js.map +1 -1
- package/dist/infrastructure/transfer-copy.d.ts +1 -0
- package/dist/infrastructure/transfer-copy.js +16 -1
- package/dist/infrastructure/transfer-copy.js.map +1 -1
- package/dist/infrastructure/transport-archive.d.ts +3 -3
- package/dist/infrastructure/transport-archive.js +71 -48
- package/dist/infrastructure/transport-archive.js.map +1 -1
- package/dist/infrastructure/transport-archive.types.d.ts +3 -0
- package/dist/infrastructure/transport-archive.types.js.map +1 -1
- package/dist/infrastructure/transport-checkpoint.js +14 -4
- package/dist/infrastructure/transport-checkpoint.js.map +1 -1
- package/dist/infrastructure/transport-envelope.d.ts +1 -0
- package/dist/infrastructure/transport-envelope.js +22 -5
- package/dist/infrastructure/transport-envelope.js.map +1 -1
- package/dist/infrastructure/transport-reservations.constants.d.ts +2 -0
- package/dist/infrastructure/transport-reservations.constants.js +3 -0
- package/dist/infrastructure/transport-reservations.constants.js.map +1 -0
- package/dist/infrastructure/transport-reservations.d.ts +1 -2
- package/dist/infrastructure/transport-reservations.js +18 -22
- package/dist/infrastructure/transport-reservations.js.map +1 -1
- package/dist/infrastructure/transport-reservations.types.d.ts +23 -2
- package/dist/infrastructure/transport-reservations.types.js.map +1 -1
- package/dist/infrastructure/trigger-server.js +12 -9
- package/dist/infrastructure/trigger-server.js.map +1 -1
- package/dist/infrastructure/trigger-server.types.d.ts +1 -1
- package/dist/infrastructure/trigger-server.types.js.map +1 -1
- package/dist/infrastructure/workflow-checkpoint.constants.d.ts +1 -0
- package/dist/infrastructure/workflow-checkpoint.constants.js +1 -0
- package/dist/infrastructure/workflow-checkpoint.constants.js.map +1 -1
- package/dist/infrastructure/workspace-lock.constants.d.ts +2 -1
- package/dist/infrastructure/workspace-lock.constants.js +2 -1
- package/dist/infrastructure/workspace-lock.constants.js.map +1 -1
- package/dist/infrastructure/workspace-lock.js +48 -10
- package/dist/infrastructure/workspace-lock.js.map +1 -1
- package/dist/providers/cloud-cache.js +14 -9
- package/dist/providers/cloud-cache.js.map +1 -1
- package/dist/providers/cloud-cache.types.d.ts +1 -0
- package/dist/providers/cloud-cache.types.js.map +1 -1
- package/dist/providers/cloud-files.js +3 -4
- package/dist/providers/cloud-files.js.map +1 -1
- package/dist/providers/cloud-input.constants.d.ts +2 -2
- package/dist/providers/cloud-input.constants.js +2 -1
- package/dist/providers/cloud-input.constants.js.map +1 -1
- package/dist/providers/cloud-input.d.ts +2 -2
- package/dist/providers/cloud-input.js +14 -3
- package/dist/providers/cloud-input.js.map +1 -1
- package/dist/providers/container-command.js +30 -5
- package/dist/providers/container-command.js.map +1 -1
- package/dist/providers/container-egress.constants.d.ts +7 -0
- package/dist/providers/container-egress.constants.js +8 -0
- package/dist/providers/container-egress.constants.js.map +1 -0
- package/dist/providers/container-egress.d.ts +7 -0
- package/dist/providers/container-egress.js +101 -0
- package/dist/providers/container-egress.js.map +1 -0
- package/dist/providers/container-files.js +10 -11
- package/dist/providers/container-files.js.map +1 -1
- package/dist/providers/container-mounts.js +3 -0
- package/dist/providers/container-mounts.js.map +1 -1
- package/dist/providers/container-network.js +16 -1
- package/dist/providers/container-network.js.map +1 -1
- package/dist/providers/container-plan.js +7 -10
- package/dist/providers/container-plan.js.map +1 -1
- package/dist/providers/container-recovery.js +8 -3
- package/dist/providers/container-recovery.js.map +1 -1
- package/dist/providers/container.js +36 -5
- package/dist/providers/container.js.map +1 -1
- package/dist/providers/container.types.d.ts +1 -0
- package/dist/providers/container.types.js.map +1 -1
- package/dist/providers/daytona-command.constants.js +4 -1
- package/dist/providers/daytona-command.constants.js.map +1 -1
- package/dist/providers/daytona-command.js +39 -16
- package/dist/providers/daytona-command.js.map +1 -1
- package/dist/providers/daytona-files.js +5 -5
- package/dist/providers/daytona-files.js.map +1 -1
- package/dist/providers/daytona-output.js +11 -3
- package/dist/providers/daytona-output.js.map +1 -1
- package/dist/providers/daytona.js +11 -9
- package/dist/providers/daytona.js.map +1 -1
- package/dist/providers/egress/address.d.ts +3 -0
- package/dist/providers/egress/address.js +26 -0
- package/dist/providers/egress/address.js.map +1 -0
- package/dist/providers/egress/egress.constants.d.ts +22 -0
- package/dist/providers/egress/egress.constants.js +23 -0
- package/dist/providers/egress/egress.constants.js.map +1 -0
- package/dist/providers/egress/egress.types.d.ts +11 -0
- package/dist/providers/egress/egress.types.js +2 -0
- package/dist/providers/egress/egress.types.js.map +1 -0
- package/dist/providers/egress/firewall.d.ts +3 -0
- package/dist/providers/egress/firewall.js +29 -0
- package/dist/providers/egress/firewall.js.map +1 -0
- package/dist/providers/egress/main.d.ts +1 -0
- package/dist/providers/egress/main.js +90 -0
- package/dist/providers/egress/main.js.map +1 -0
- package/dist/providers/egress/policy.d.ts +5 -0
- package/dist/providers/egress/policy.js +54 -0
- package/dist/providers/egress/policy.js.map +1 -0
- package/dist/providers/egress/proxy.d.ts +2 -0
- package/dist/providers/egress/proxy.js +129 -0
- package/dist/providers/egress/proxy.js.map +1 -0
- package/dist/providers/egress/tls-hello.d.ts +1 -0
- package/dist/providers/egress/tls-hello.js +75 -0
- package/dist/providers/egress/tls-hello.js.map +1 -0
- package/dist/providers/firecracker-command.js +12 -6
- package/dist/providers/firecracker-command.js.map +1 -1
- package/dist/providers/local-files.d.ts +2 -0
- package/dist/providers/local-files.js +24 -0
- package/dist/providers/local-files.js.map +1 -0
- package/dist/providers/local.js +2 -20
- package/dist/providers/local.js.map +1 -1
- package/dist/providers/vercel-command.js +33 -9
- package/dist/providers/vercel-command.js.map +1 -1
- package/dist/providers/vercel.js +11 -9
- package/dist/providers/vercel.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/package.json +2 -2
- package/recipe-configuration.schema.json +2164 -35
- package/recipe.schema.json +2512 -404
package/dist/providers/local.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { cp, mkdir } from "node:fs/promises";
|
|
2
1
|
import { homedir } from "node:os";
|
|
3
|
-
import { dirname, resolve } from "node:path";
|
|
4
2
|
import { invariant, OutpostError } from "../domain/errors.js";
|
|
5
3
|
import { executeProcess } from "../infrastructure/process.js";
|
|
4
|
+
import { localFiles } from "./local-files.js";
|
|
6
5
|
export function createLocalSandboxProvider(options = {}) {
|
|
7
6
|
invariant(!("egress" in options) || options.egress === undefined, "Local execution cannot enforce egress policies");
|
|
8
7
|
const provider = {
|
|
@@ -14,22 +13,6 @@ export function createLocalSandboxProvider(options = {}) {
|
|
|
14
13
|
const stop = new AbortController();
|
|
15
14
|
const active = new Set();
|
|
16
15
|
let disposed = false;
|
|
17
|
-
const copy = async (source, destination, options = {}) => {
|
|
18
|
-
options.signal?.throwIfAborted();
|
|
19
|
-
if (disposed)
|
|
20
|
-
throw new OutpostError("provider", "Local sandbox is closed");
|
|
21
|
-
if (resolve(source) === resolve(destination))
|
|
22
|
-
return;
|
|
23
|
-
await mkdir(dirname(destination), { recursive: true });
|
|
24
|
-
await cp(source, destination, {
|
|
25
|
-
recursive: true,
|
|
26
|
-
force: true,
|
|
27
|
-
filter: () => {
|
|
28
|
-
options.signal?.throwIfAborted();
|
|
29
|
-
return true;
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
16
|
return {
|
|
34
17
|
root: context.directory,
|
|
35
18
|
home: homedir(),
|
|
@@ -50,8 +33,7 @@ export function createLocalSandboxProvider(options = {}) {
|
|
|
50
33
|
void pending.then(() => active.delete(pending), () => active.delete(pending));
|
|
51
34
|
return pending;
|
|
52
35
|
},
|
|
53
|
-
|
|
54
|
-
download: copy,
|
|
36
|
+
...localFiles(context.directory, () => disposed),
|
|
55
37
|
async release() {
|
|
56
38
|
if (disposed)
|
|
57
39
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/providers/local.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Command } from \"../domain/command.types.ts\";\nimport { invariant, OutpostError } from \"../domain/errors.ts\";\nimport type { SandboxProvider } from \"../domain/sandbox.types.ts\";\nimport { executeProcess } from \"../infrastructure/process.ts\";\nimport { localFiles } from \"./local-files.ts\";\nimport type { LocalOptions } from \"./local.types.ts\";\n\nexport function createLocalSandboxProvider(\n options: LocalOptions = {},\n): SandboxProvider {\n invariant(\n !(\"egress\" in options) || options.egress === undefined,\n \"Local execution cannot enforce egress policies\",\n );\n const provider: SandboxProvider = {\n name: \"local\",\n placement: \"host\",\n variables: { ...options.variables },\n async acquire(context) {\n context.signal?.throwIfAborted();\n const stop = new AbortController();\n const active = new Set<Promise<unknown>>();\n let disposed = false;\n return {\n root: context.directory,\n home: homedir(),\n liveInput: true,\n invoke(command: Command) {\n if (disposed)\n return Promise.reject(\n new OutpostError(\"provider\", \"Local sandbox is closed\"),\n );\n const signal = command.signal\n ? AbortSignal.any([command.signal, stop.signal])\n : stop.signal;\n const pending = executeProcess({\n ...command,\n directory: command.directory ?? context.directory,\n variables: { ...context.variables, ...command.variables },\n signal,\n });\n active.add(pending);\n void pending.then(\n () => active.delete(pending),\n () => active.delete(pending),\n );\n return pending;\n },\n ...localFiles(context.directory, () => disposed),\n async release() {\n if (disposed) return;\n disposed = true;\n stop.abort(new OutpostError(\"aborted\", \"Sandbox disposed\"));\n await Promise.allSettled(active);\n },\n };\n },\n };\n return {\n ...provider,\n workspaces: {\n bindings: [\"copy\", \"ephemeral\"],\n acquire(context) {\n return provider.acquire({\n directory: context.workspace.directory,\n repository: context.runtime.directory,\n gitDirectories: [],\n variables: context.variables,\n ...(context.signal ? { signal: context.signal } : {}),\n });\n },\n },\n };\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { OutpostError } from "../domain/errors.js";
|
|
3
3
|
import { quote } from "../infrastructure/process.js";
|
|
4
|
+
import { reportInputFailure } from "../infrastructure/input-failure.js";
|
|
4
5
|
import { cloudDefaults } from "./cloud.constants.js";
|
|
5
6
|
import { cloudInputFeed, cloudInputFrames, cloudInputProgram, } from "./cloud-input.js";
|
|
6
7
|
export function vercelCommand(runtime) {
|
|
@@ -45,8 +46,8 @@ export function vercelCommand(runtime) {
|
|
|
45
46
|
cmd: "sh",
|
|
46
47
|
args: ["-c", `exec ${program} < ${quote(inputPath)}`],
|
|
47
48
|
};
|
|
48
|
-
const
|
|
49
|
-
|
|
49
|
+
const stopped = signal;
|
|
50
|
+
let inputFailure;
|
|
50
51
|
let feed;
|
|
51
52
|
try {
|
|
52
53
|
const running = await sandbox.runCommand({
|
|
@@ -61,13 +62,21 @@ export function vercelCommand(runtime) {
|
|
|
61
62
|
});
|
|
62
63
|
if (live)
|
|
63
64
|
feed = cloudInputFeed(live, async (line) => {
|
|
65
|
+
await sandbox.writeFiles([
|
|
66
|
+
{ path: inputPath + ".chunk", content: Buffer.from(line) },
|
|
67
|
+
]);
|
|
64
68
|
const appended = await sandbox.runCommand("sh", [
|
|
65
69
|
"-c",
|
|
66
|
-
`
|
|
70
|
+
`cat ${quote(inputPath + ".chunk")} >> ${quote(inputPath)}`,
|
|
67
71
|
]);
|
|
68
72
|
if (appended.exitCode !== 0)
|
|
69
73
|
throw new OutpostError("provider", "Cloud live input could not be appended");
|
|
70
|
-
}, (cause) =>
|
|
74
|
+
}, (cause) => {
|
|
75
|
+
if (!reportInputFailure(live, cause))
|
|
76
|
+
inputFailure = new OutpostError("steering", "Cloud live input delivery failed", {}, cause);
|
|
77
|
+
}, () => sandbox.writeFiles([
|
|
78
|
+
{ path: inputPath + ".closed", content: Buffer.alloc(0) },
|
|
79
|
+
]));
|
|
71
80
|
try {
|
|
72
81
|
for await (const log of running.logs({ signal: stopped })) {
|
|
73
82
|
const channel = log.stream;
|
|
@@ -77,19 +86,28 @@ export function vercelCommand(runtime) {
|
|
|
77
86
|
command.observe?.(channel, log.data);
|
|
78
87
|
}
|
|
79
88
|
const result = await running.wait({ signal: stopped });
|
|
89
|
+
await feed?.finish();
|
|
90
|
+
if (inputFailure)
|
|
91
|
+
throw inputFailure;
|
|
80
92
|
return { status: result.exitCode, ...output };
|
|
81
93
|
}
|
|
82
94
|
catch (cause) {
|
|
95
|
+
if (inputFailure && cause === inputFailure)
|
|
96
|
+
throw cause;
|
|
83
97
|
await running.kill("SIGKILL", {
|
|
84
98
|
abortSignal: AbortSignal.timeout(cloudDefaults.cancellationMs),
|
|
85
99
|
});
|
|
86
100
|
// The input wrapper runs the agent as a child; stop its whole process group.
|
|
87
101
|
if (live)
|
|
88
102
|
await sandbox
|
|
89
|
-
.runCommand(
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
|
|
103
|
+
.runCommand({
|
|
104
|
+
cmd: "sh",
|
|
105
|
+
args: [
|
|
106
|
+
"-c",
|
|
107
|
+
`kill -KILL -$(cat ${quote(pidPath)}) 2>/dev/null || true`,
|
|
108
|
+
],
|
|
109
|
+
sudo: command.elevated ?? false,
|
|
110
|
+
})
|
|
93
111
|
.catch(() => undefined);
|
|
94
112
|
throw cause;
|
|
95
113
|
}
|
|
@@ -98,7 +116,13 @@ export function vercelCommand(runtime) {
|
|
|
98
116
|
await feed?.finish();
|
|
99
117
|
if (staged !== undefined)
|
|
100
118
|
await sandbox
|
|
101
|
-
.runCommand("rm", [
|
|
119
|
+
.runCommand("rm", [
|
|
120
|
+
"-f",
|
|
121
|
+
inputPath,
|
|
122
|
+
inputPath + ".chunk",
|
|
123
|
+
inputPath + ".closed",
|
|
124
|
+
pidPath,
|
|
125
|
+
])
|
|
102
126
|
.catch(() => undefined);
|
|
103
127
|
}
|
|
104
128
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-command.js","sourceRoot":"","sources":["../../src/providers/vercel-command.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { OutpostError } from \"../domain/errors.ts\";\nimport type { SandboxLease } from \"../domain/sandbox.types.ts\";\nimport { quote } from \"../infrastructure/process.ts\";\nimport { cloudDefaults } from \"./cloud.constants.ts\";\nimport {\n cloudInputFeed,\n cloudInputFrames,\n cloudInputProgram,\n} from \"./cloud-input.ts\";\nimport type { CloudInputFeed } from \"./cloud-input.types.ts\";\nimport type { VercelRuntime } from \"./vercel.types.ts\";\n\nexport function vercelCommand(runtime: VercelRuntime): SandboxLease[\"invoke\"] {\n const { sandbox, root, options, context, isClosed } = runtime;\n return async (command) => {\n if (isClosed())\n throw new OutpostError(\"provider\", \"Cloud sandbox is closed\");\n if (command.interactive)\n throw new OutpostError(\n \"provider\",\n \"Interactive terminals require a mounted or local provider\",\n );\n const signal = command.signal\n ? AbortSignal.any([\n command.signal,\n AbortSignal.timeout(command.deadlineMs ?? cloudDefaults.deadlineMs),\n ])\n : AbortSignal.timeout(command.deadlineMs ?? cloudDefaults.deadlineMs);\n signal.throwIfAborted();\n const inputPath = `/tmp/outpost-${randomUUID()}.stdin`;\n const pidPath = `${inputPath}.pid`;\n const live = command.input;\n const staged = live ? cloudInputFrames(command.stdin) : command.stdin;\n if (staged !== undefined)\n await sandbox.writeFiles([\n { path: inputPath, content: Buffer.from(staged) },\n ]);\n const output = { stdout: \"\", stderr: \"\" };\n const program = [command.executable, ...(command.arguments ?? [])]\n .map(quote)\n .join(\" \");\n const { cmd, args } = live\n ? {\n cmd: \"setsid\",\n args: [\n \"--wait\",\n \"sh\",\n \"-c\",\n `echo $$ > ${quote(pidPath)}; exec ${cloudInputProgram(inputPath, program)}`,\n ],\n }\n : command.stdin === undefined\n ? { cmd: command.executable, args: [...(command.arguments ?? [])] }\n : {\n cmd: \"sh\",\n args: [\"-c\", `exec ${program} < ${quote(inputPath)}`],\n };\n const failure = new AbortController();\n const stopped = AbortSignal.any([signal, failure.signal]);\n let feed: CloudInputFeed | undefined;\n try {\n const running = await sandbox.runCommand({\n cmd,\n args,\n cwd: command.directory ?? root,\n env: { ...context.variables, ...command.variables },\n sudo: command.elevated ?? false,\n detached: true,\n signal: stopped,\n timeoutMs: command.deadlineMs ?? cloudDefaults.deadlineMs,\n });\n if (live)\n feed = cloudInputFeed(\n live,\n async (line) => {\n const appended = await sandbox.runCommand(\"sh\", [\n \"-c\",\n `printf '%s' ${quote(line)} >> ${quote(inputPath)}`,\n ]);\n if (appended.exitCode !== 0)\n throw new OutpostError(\n \"provider\",\n \"Cloud live input could not be appended\",\n );\n },\n (cause) => failure.abort(cause),\n );\n try {\n for await (const log of running.logs({ signal: stopped })) {\n const channel = log.stream;\n if (channel !== \"stdout\" && channel !== \"stderr\") continue;\n output[channel] = (output[channel] + log.data).slice(\n -(command.retain ?? options.retain ?? cloudDefaults.retainBytes),\n );\n command.observe?.(channel, log.data);\n }\n const result = await running.wait({ signal: stopped });\n return { status: result.exitCode, ...output };\n } catch (cause) {\n await running.kill(\"SIGKILL\", {\n abortSignal: AbortSignal.timeout(cloudDefaults.cancellationMs),\n });\n // The input wrapper runs the agent as a child; stop its whole process group.\n if (live)\n await sandbox\n .runCommand(\"sh\", [\n \"-c\",\n `kill -KILL -$(cat ${quote(pidPath)}) 2>/dev/null || true`,\n ])\n .catch(() => undefined);\n throw cause;\n }\n } finally {\n await feed?.finish();\n if (staged !== undefined)\n await sandbox\n .runCommand(\"rm\", [\"-f\", inputPath, pidPath])\n .catch(() => undefined);\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vercel-command.js","sourceRoot":"","sources":["../../src/providers/vercel-command.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { OutpostError } from \"../domain/errors.ts\";\nimport type { SandboxLease } from \"../domain/sandbox.types.ts\";\nimport { quote } from \"../infrastructure/process.ts\";\nimport { reportInputFailure } from \"../infrastructure/input-failure.ts\";\nimport { cloudDefaults } from \"./cloud.constants.ts\";\nimport {\n cloudInputFeed,\n cloudInputFrames,\n cloudInputProgram,\n} from \"./cloud-input.ts\";\nimport type { CloudInputFeed } from \"./cloud-input.types.ts\";\nimport type { VercelRuntime } from \"./vercel.types.ts\";\n\nexport function vercelCommand(runtime: VercelRuntime): SandboxLease[\"invoke\"] {\n const { sandbox, root, options, context, isClosed } = runtime;\n return async (command) => {\n if (isClosed())\n throw new OutpostError(\"provider\", \"Cloud sandbox is closed\");\n if (command.interactive)\n throw new OutpostError(\n \"provider\",\n \"Interactive terminals require a mounted or local provider\",\n );\n const signal = command.signal\n ? AbortSignal.any([\n command.signal,\n AbortSignal.timeout(command.deadlineMs ?? cloudDefaults.deadlineMs),\n ])\n : AbortSignal.timeout(command.deadlineMs ?? cloudDefaults.deadlineMs);\n signal.throwIfAborted();\n const inputPath = `/tmp/outpost-${randomUUID()}.stdin`;\n const pidPath = `${inputPath}.pid`;\n const live = command.input;\n const staged = live ? cloudInputFrames(command.stdin) : command.stdin;\n if (staged !== undefined)\n await sandbox.writeFiles([\n { path: inputPath, content: Buffer.from(staged) },\n ]);\n const output = { stdout: \"\", stderr: \"\" };\n const program = [command.executable, ...(command.arguments ?? [])]\n .map(quote)\n .join(\" \");\n const { cmd, args } = live\n ? {\n cmd: \"setsid\",\n args: [\n \"--wait\",\n \"sh\",\n \"-c\",\n `echo $$ > ${quote(pidPath)}; exec ${cloudInputProgram(inputPath, program)}`,\n ],\n }\n : command.stdin === undefined\n ? { cmd: command.executable, args: [...(command.arguments ?? [])] }\n : {\n cmd: \"sh\",\n args: [\"-c\", `exec ${program} < ${quote(inputPath)}`],\n };\n const stopped = signal;\n let inputFailure: OutpostError | undefined;\n let feed: CloudInputFeed | undefined;\n try {\n const running = await sandbox.runCommand({\n cmd,\n args,\n cwd: command.directory ?? root,\n env: { ...context.variables, ...command.variables },\n sudo: command.elevated ?? false,\n detached: true,\n signal: stopped,\n timeoutMs: command.deadlineMs ?? cloudDefaults.deadlineMs,\n });\n if (live)\n feed = cloudInputFeed(\n live,\n async (line) => {\n await sandbox.writeFiles([\n { path: inputPath + \".chunk\", content: Buffer.from(line) },\n ]);\n const appended = await sandbox.runCommand(\"sh\", [\n \"-c\",\n `cat ${quote(inputPath + \".chunk\")} >> ${quote(inputPath)}`,\n ]);\n if (appended.exitCode !== 0)\n throw new OutpostError(\n \"provider\",\n \"Cloud live input could not be appended\",\n );\n },\n (cause) => {\n if (!reportInputFailure(live, cause))\n inputFailure = new OutpostError(\n \"steering\",\n \"Cloud live input delivery failed\",\n {},\n cause,\n );\n },\n () =>\n sandbox.writeFiles([\n { path: inputPath + \".closed\", content: Buffer.alloc(0) },\n ]),\n );\n try {\n for await (const log of running.logs({ signal: stopped })) {\n const channel = log.stream;\n if (channel !== \"stdout\" && channel !== \"stderr\") continue;\n output[channel] = (output[channel] + log.data).slice(\n -(command.retain ?? options.retain ?? cloudDefaults.retainBytes),\n );\n command.observe?.(channel, log.data);\n }\n const result = await running.wait({ signal: stopped });\n await feed?.finish();\n if (inputFailure) throw inputFailure;\n return { status: result.exitCode, ...output };\n } catch (cause) {\n if (inputFailure && cause === inputFailure) throw cause;\n await running.kill(\"SIGKILL\", {\n abortSignal: AbortSignal.timeout(cloudDefaults.cancellationMs),\n });\n // The input wrapper runs the agent as a child; stop its whole process group.\n if (live)\n await sandbox\n .runCommand({\n cmd: \"sh\",\n args: [\n \"-c\",\n `kill -KILL -$(cat ${quote(pidPath)}) 2>/dev/null || true`,\n ],\n sudo: command.elevated ?? false,\n })\n .catch(() => undefined);\n throw cause;\n }\n } finally {\n await feed?.finish();\n if (staged !== undefined)\n await sandbox\n .runCommand(\"rm\", [\n \"-f\",\n inputPath,\n inputPath + \".chunk\",\n inputPath + \".closed\",\n pidPath,\n ])\n .catch(() => undefined);\n }\n };\n}\n"]}
|
package/dist/providers/vercel.js
CHANGED
|
@@ -33,15 +33,17 @@ export function createVercelSandboxProvider(options = {}, connect = async (confi
|
|
|
33
33
|
let releasing;
|
|
34
34
|
let saveCaches = async () => { };
|
|
35
35
|
let unregister = () => { };
|
|
36
|
-
const release = () =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
const release = () => closed
|
|
37
|
+
? Promise.resolve()
|
|
38
|
+
: (releasing ??= releaseCloudSandbox(() => saveCaches(), async () => {
|
|
39
|
+
await sandbox.stop();
|
|
40
|
+
closed = true;
|
|
41
|
+
unregister();
|
|
42
|
+
}).catch((error) => {
|
|
43
|
+
if (!closed)
|
|
44
|
+
releasing = undefined;
|
|
45
|
+
throw error;
|
|
46
|
+
}));
|
|
45
47
|
unregister = registerCleanup(release);
|
|
46
48
|
let home;
|
|
47
49
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/providers/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAMnE,MAAM,UAAU,2BAA2B,CACzC,UAAyB,EAAE,EAC3B,UAAiE,KAAK,EACpE,MAAM,EACN,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAE7D,SAAS,CACP,OAAO,CAAC,cAAc,KAAK,SAAS;QAClC,OAAO,CAAC,cAAc,KAAK,UAAU,EACvC,wCAAwC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IACrE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAyC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3E,OAAO,yBAAyB,CAAC;QAC/B,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;QACnC,KAAK,CAAC,OAAO,CAAC,OAAO;YACnB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;gBAC5B,GAAG,MAAM;gBACT,GAAG,CAAC,aAAa,KAAK,SAAS;oBAC7B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;gBACtD,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;aAC7C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC;YAC/C,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,SAAoC,CAAC;YACzC,IAAI,UAAU,GAAwB,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC;YACrD,IAAI,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,CAAC,SAAS,KAAK,mBAAmB,CAChC,GAAG,EAAE,CAAC,UAAU,EAAE,EAClB,KAAK,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/providers/vercel.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n prepareCloudCaches,\n validateCloudCaches,\n releaseCloudSandbox,\n} from \"./cloud-cache.ts\";\nimport type { Sandbox } from \"@vercel/sandbox\";\nimport { invariant, OutpostError } from \"../domain/errors.ts\";\nimport type { SandboxProvider } from \"../domain/sandbox.types.ts\";\nimport { fileBatches } from \"./file-batches.ts\";\nimport { registerCleanup } from \"../infrastructure/shutdown.ts\";\nimport { cloudRoots } from \"./cloud.constants.ts\";\nimport { vercelCommand } from \"./vercel-command.ts\";\nimport { vercelNetworkPolicy } from \"./vercel-network.ts\";\nimport { vercelDirectory } from \"./vercel-directory.ts\";\nimport { vercelFiles } from \"./vercel-files.ts\";\nimport type { VercelOptions } from \"./vercel.types.ts\";\nimport { withTransferredWorkspaces } from \"./workspace-context.ts\";\n\nexport type { CloudDependencyCache } from \"./cloud-cache.types.ts\";\n\nexport type { VercelOptions } from \"./vercel.types.ts\";\n\nexport function createVercelSandboxProvider(\n options: VercelOptions = {},\n connect: (config: VercelOptions[\"create\"]) => Promise<Sandbox> = async (\n config,\n ) => (await import(\"@vercel/sandbox\")).Sandbox.create(config),\n): SandboxProvider {\n invariant(\n options.repositoryMode === undefined ||\n options.repositoryMode === \"isolated\",\n \"Vercel repositoryMode must be isolated\",\n );\n const caches = (options.caches ?? []).map((cache) => ({ ...cache }));\n validateCloudCaches(caches);\n const networkPolicy = vercelNetworkPolicy(options);\n const create: NonNullable<VercelOptions[\"create\"]> = { ...options.create };\n return withTransferredWorkspaces({\n name: \"vercel\",\n placement: \"remote\",\n variables: { ...options.variables },\n async acquire(context) {\n context.signal?.throwIfAborted();\n const sandbox = await connect({\n ...create,\n ...(networkPolicy === undefined\n ? {}\n : { networkPolicy: structuredClone(networkPolicy) }),\n env: { ...create.env, ...context.variables },\n });\n const root = options.root ?? cloudRoots.vercel;\n let closed = false;\n let releasing: Promise<void> | undefined;\n let saveCaches: () => Promise<void> = async () => {};\n let unregister = () => {};\n const release = () =>\n closed\n ? Promise.resolve()\n : (releasing ??= releaseCloudSandbox(\n () => saveCaches(),\n async () => {\n await sandbox.stop();\n closed = true;\n unregister();\n },\n ).catch((error) => {\n if (!closed) releasing = undefined;\n throw error;\n }));\n unregister = registerCleanup(release);\n let home: string;\n try {\n await vercelDirectory(sandbox, root);\n home = (\n await (await sandbox.runCommand(\"printenv\", [\"HOME\"])).stdout()\n ).trim();\n if (!home.startsWith(\"/\"))\n throw new OutpostError(\n \"provider\",\n \"Cloud sandbox returned an invalid home directory\",\n );\n } catch (cause) {\n await release();\n throw cause;\n }\n const lease = {\n root,\n home,\n invoke: vercelCommand({\n sandbox,\n root,\n options,\n context,\n isClosed: () => closed,\n }),\n ...vercelFiles(sandbox),\n release,\n };\n try {\n saveCaches = await prepareCloudCaches(\n lease,\n caches,\n context,\n JSON.stringify([\n \"vercel\",\n create.runtime ?? create.image ?? \"vercel/sandbox/universal:latest\",\n create.source ?? null,\n ]),\n );\n } catch (cause) {\n try {\n await release();\n } catch (cleanup) {\n throw new AggregateError(\n [cause, cleanup],\n \"Cloud cache setup and cleanup failed\",\n );\n }\n throw cause;\n }\n return { ...lease, liveInput: true, fileTransfers: fileBatches(lease) };\n },\n });\n}\n\nexport type { EgressPolicy } from \"../domain/egress.types.ts\";\n"]}
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { scriptedAgent } from "./adapters/testing/scripted-agent.ts";
|
|
1
|
+
export { createScriptedAgent, scriptedAgent, } from "./adapters/testing/scripted-agent.ts";
|
|
2
2
|
export type { ScriptedAgentOptions, ScriptedTurn, ScriptedCommit, } from "./adapters/testing/scripted-agent.types.ts";
|
|
3
3
|
export { createMemorySandboxProvider } from "./providers/memory.ts";
|
|
4
4
|
export type { MemorySandboxOptions, MemoryCommand, } from "./providers/memory.types.ts";
|
package/dist/testing.js
CHANGED
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export {\n createScriptedAgent,\n scriptedAgent,\n} from \"./adapters/testing/scripted-agent.ts\";\nexport type {\n ScriptedAgentOptions,\n ScriptedTurn,\n ScriptedCommit,\n} from \"./adapters/testing/scripted-agent.types.ts\";\nexport { createMemorySandboxProvider } from \"./providers/memory.ts\";\nexport type {\n MemorySandboxOptions,\n MemoryCommand,\n} from \"./providers/memory.types.ts\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elie-laloum/outpost",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.2.0",
|
|
4
4
|
"description": "Programmable sandboxes, coding agents and typed workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"format:check": "prettier --check .",
|
|
112
112
|
"prepack": "bun run build",
|
|
113
113
|
"test:package": "node scripts/package-smoke.mjs",
|
|
114
|
-
"test:container": "node --test test/container.test.ts",
|
|
114
|
+
"test:container": "node --test test/container.test.ts test/session-bundles-container.test.ts",
|
|
115
115
|
"architecture": "node scripts/check-architecture.mjs",
|
|
116
116
|
"docs:sync": "bun run build && node scripts/recipe-component-docs.mjs --write && node docs/scripts/sync-reference.mjs",
|
|
117
117
|
"docs:check": "node scripts/recipe-component-docs.mjs && node docs/scripts/sync-reference.mjs --check && bun run --cwd docs check",
|