lastlight 0.16.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -692
- package/dist/cli-config.js.map +1 -0
- package/dist/cli-format.js.map +1 -0
- package/dist/{cli/cli-server.d.ts → cli-server.d.ts} +26 -1
- package/dist/{cli/cli-server.js → cli-server.js} +40 -5
- package/dist/cli-server.js.map +1 -0
- package/dist/cli-timeline.js.map +1 -0
- package/dist/{cli/cli.js → cli.js} +4 -3
- package/dist/cli.js.map +1 -0
- package/dist/{cli/fork-cli.d.ts → fork-cli.d.ts} +3 -3
- package/dist/{cli/fork-cli.js → fork-cli.js} +28 -27
- package/dist/fork-cli.js.map +1 -0
- package/dist/{cli/oauth-cli.js → oauth-cli.js} +1 -1
- package/dist/oauth-cli.js.map +1 -0
- package/dist/{cli/setup.js → setup.js} +10 -4
- package/dist/setup.js.map +1 -0
- package/dist/{cli/skills-install.d.ts → skills-install.d.ts} +6 -0
- package/dist/{cli/skills-install.js → skills-install.js} +6 -2
- package/dist/skills-install.js.map +1 -0
- package/package.json +20 -65
- package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
- package/agent-context/rules.md +0 -80
- package/agent-context/security.md +0 -69
- package/agent-context/soul.md +0 -21
- package/config/default.yaml +0 -119
- package/deploy/.env.production.example +0 -100
- package/deploy/entrypoint.sh +0 -82
- package/deploy/native/README.md +0 -160
- package/deploy/native/install.sh +0 -110
- package/deploy/native/lastlight.env.example +0 -95
- package/deploy/native/lastlight.service +0 -50
- package/deploy/sandbox-entrypoint.sh +0 -93
- package/dist/admin/auth.d.ts +0 -51
- package/dist/admin/auth.js +0 -121
- package/dist/admin/auth.js.map +0 -1
- package/dist/admin/chat-session-reader.d.ts +0 -39
- package/dist/admin/chat-session-reader.js +0 -84
- package/dist/admin/chat-session-reader.js.map +0 -1
- package/dist/admin/docker.d.ts +0 -61
- package/dist/admin/docker.js +0 -187
- package/dist/admin/docker.js.map +0 -1
- package/dist/admin/index.d.ts +0 -9
- package/dist/admin/index.js +0 -59
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/routes.d.ts +0 -81
- package/dist/admin/routes.js +0 -1381
- package/dist/admin/routes.js.map +0 -1
- package/dist/admin/sessions.d.ts +0 -89
- package/dist/admin/sessions.js +0 -204
- package/dist/admin/sessions.js.map +0 -1
- package/dist/admin/tail.d.ts +0 -12
- package/dist/admin/tail.js +0 -145
- package/dist/admin/tail.js.map +0 -1
- package/dist/admin/version.d.ts +0 -22
- package/dist/admin/version.js +0 -92
- package/dist/admin/version.js.map +0 -1
- package/dist/cli/cli-config.js.map +0 -1
- package/dist/cli/cli-format.js.map +0 -1
- package/dist/cli/cli-server.js.map +0 -1
- package/dist/cli/cli-timeline.js.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/fork-cli.js.map +0 -1
- package/dist/cli/oauth-cli.js.map +0 -1
- package/dist/cli/setup.js.map +0 -1
- package/dist/cli/skills-install.js.map +0 -1
- package/dist/config/config-resolve.d.ts +0 -28
- package/dist/config/config-resolve.js +0 -47
- package/dist/config/config-resolve.js.map +0 -1
- package/dist/config/config.d.ts +0 -157
- package/dist/config/config.js +0 -581
- package/dist/config/config.js.map +0 -1
- package/dist/config/core-pin.d.ts +0 -16
- package/dist/config/core-pin.js +0 -85
- package/dist/config/core-pin.js.map +0 -1
- package/dist/config/overlay-assets.d.ts +0 -20
- package/dist/config/overlay-assets.js +0 -114
- package/dist/config/overlay-assets.js.map +0 -1
- package/dist/config/overlay-bootstrap.d.ts +0 -44
- package/dist/config/overlay-bootstrap.js +0 -304
- package/dist/config/overlay-bootstrap.js.map +0 -1
- package/dist/connectors/github-webhook.d.ts +0 -45
- package/dist/connectors/github-webhook.js +0 -321
- package/dist/connectors/github-webhook.js.map +0 -1
- package/dist/connectors/index.d.ts +0 -18
- package/dist/connectors/index.js +0 -41
- package/dist/connectors/index.js.map +0 -1
- package/dist/connectors/messaging/base.d.ts +0 -42
- package/dist/connectors/messaging/base.js +0 -139
- package/dist/connectors/messaging/base.js.map +0 -1
- package/dist/connectors/messaging/delivery.d.ts +0 -14
- package/dist/connectors/messaging/delivery.js +0 -38
- package/dist/connectors/messaging/delivery.js.map +0 -1
- package/dist/connectors/messaging/index.d.ts +0 -4
- package/dist/connectors/messaging/index.js +0 -4
- package/dist/connectors/messaging/index.js.map +0 -1
- package/dist/connectors/messaging/session-manager.d.ts +0 -53
- package/dist/connectors/messaging/session-manager.js +0 -255
- package/dist/connectors/messaging/session-manager.js.map +0 -1
- package/dist/connectors/messaging/types.d.ts +0 -58
- package/dist/connectors/messaging/types.js +0 -7
- package/dist/connectors/messaging/types.js.map +0 -1
- package/dist/connectors/slack/connector.d.ts +0 -142
- package/dist/connectors/slack/connector.js +0 -494
- package/dist/connectors/slack/connector.js.map +0 -1
- package/dist/connectors/slack/index.d.ts +0 -2
- package/dist/connectors/slack/index.js +0 -3
- package/dist/connectors/slack/index.js.map +0 -1
- package/dist/connectors/slack/mrkdwn.d.ts +0 -19
- package/dist/connectors/slack/mrkdwn.js +0 -240
- package/dist/connectors/slack/mrkdwn.js.map +0 -1
- package/dist/connectors/types.d.ts +0 -61
- package/dist/connectors/types.js +0 -2
- package/dist/connectors/types.js.map +0 -1
- package/dist/cron/fanout.d.ts +0 -33
- package/dist/cron/fanout.js +0 -55
- package/dist/cron/fanout.js.map +0 -1
- package/dist/cron/jobs.d.ts +0 -18
- package/dist/cron/jobs.js +0 -37
- package/dist/cron/jobs.js.map +0 -1
- package/dist/cron/scheduler.d.ts +0 -45
- package/dist/cron/scheduler.js +0 -105
- package/dist/cron/scheduler.js.map +0 -1
- package/dist/engine/agent-executor.d.ts +0 -34
- package/dist/engine/agent-executor.js +0 -246
- package/dist/engine/agent-executor.js.map +0 -1
- package/dist/engine/chat/chat-runner.d.ts +0 -132
- package/dist/engine/chat/chat-runner.js +0 -424
- package/dist/engine/chat/chat-runner.js.map +0 -1
- package/dist/engine/chat/chat-skills.d.ts +0 -45
- package/dist/engine/chat/chat-skills.js +0 -184
- package/dist/engine/chat/chat-skills.js.map +0 -1
- package/dist/engine/chat/chat.d.ts +0 -54
- package/dist/engine/chat/chat.js +0 -316
- package/dist/engine/chat/chat.js.map +0 -1
- package/dist/engine/chat/message-batcher.d.ts +0 -32
- package/dist/engine/chat/message-batcher.js +0 -109
- package/dist/engine/chat/message-batcher.js.map +0 -1
- package/dist/engine/dispatcher.d.ts +0 -73
- package/dist/engine/dispatcher.js +0 -663
- package/dist/engine/dispatcher.js.map +0 -1
- package/dist/engine/event-shim.d.ts +0 -117
- package/dist/engine/event-shim.js +0 -435
- package/dist/engine/event-shim.js.map +0 -1
- package/dist/engine/executors/orchestrator.d.ts +0 -81
- package/dist/engine/executors/orchestrator.js +0 -365
- package/dist/engine/executors/orchestrator.js.map +0 -1
- package/dist/engine/executors/shared.d.ts +0 -189
- package/dist/engine/executors/shared.js +0 -616
- package/dist/engine/executors/shared.js.map +0 -1
- package/dist/engine/github/git-auth.d.ts +0 -62
- package/dist/engine/github/git-auth.js +0 -161
- package/dist/engine/github/git-auth.js.map +0 -1
- package/dist/engine/github/github-app-client.d.ts +0 -23
- package/dist/engine/github/github-app-client.js +0 -33
- package/dist/engine/github/github-app-client.js.map +0 -1
- package/dist/engine/github/github-tools.d.ts +0 -18
- package/dist/engine/github/github-tools.js +0 -263
- package/dist/engine/github/github-tools.js.map +0 -1
- package/dist/engine/github/github.d.ts +0 -1193
- package/dist/engine/github/github.js +0 -357
- package/dist/engine/github/github.js.map +0 -1
- package/dist/engine/github/profiles.d.ts +0 -279
- package/dist/engine/github/profiles.js +0 -42
- package/dist/engine/github/profiles.js.map +0 -1
- package/dist/engine/github/review-poster.d.ts +0 -98
- package/dist/engine/github/review-poster.js +0 -177
- package/dist/engine/github/review-poster.js.map +0 -1
- package/dist/engine/llm.d.ts +0 -79
- package/dist/engine/llm.js +0 -269
- package/dist/engine/llm.js.map +0 -1
- package/dist/engine/oauth.d.ts +0 -43
- package/dist/engine/oauth.js +0 -103
- package/dist/engine/oauth.js.map +0 -1
- package/dist/engine/router.d.ts +0 -29
- package/dist/engine/router.js +0 -680
- package/dist/engine/router.js.map +0 -1
- package/dist/engine/screen/classifier.d.ts +0 -93
- package/dist/engine/screen/classifier.js +0 -215
- package/dist/engine/screen/classifier.js.map +0 -1
- package/dist/engine/screen/screen.d.ts +0 -41
- package/dist/engine/screen/screen.js +0 -93
- package/dist/engine/screen/screen.js.map +0 -1
- package/dist/evals-api.d.ts +0 -24
- package/dist/evals-api.js +0 -22
- package/dist/evals-api.js.map +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -940
- package/dist/index.js.map +0 -1
- package/dist/managed-repos.d.ts +0 -30
- package/dist/managed-repos.js +0 -72
- package/dist/managed-repos.js.map +0 -1
- package/dist/notify/blocks.d.ts +0 -23
- package/dist/notify/blocks.js +0 -118
- package/dist/notify/blocks.js.map +0 -1
- package/dist/notify/index.d.ts +0 -17
- package/dist/notify/index.js +0 -7
- package/dist/notify/index.js.map +0 -1
- package/dist/notify/model.d.ts +0 -57
- package/dist/notify/model.js +0 -89
- package/dist/notify/model.js.map +0 -1
- package/dist/notify/notifier.d.ts +0 -18
- package/dist/notify/notifier.js +0 -100
- package/dist/notify/notifier.js.map +0 -1
- package/dist/notify/render.d.ts +0 -21
- package/dist/notify/render.js +0 -59
- package/dist/notify/render.js.map +0 -1
- package/dist/notify/transports/github.d.ts +0 -26
- package/dist/notify/transports/github.js +0 -27
- package/dist/notify/transports/github.js.map +0 -1
- package/dist/notify/transports/slack.d.ts +0 -27
- package/dist/notify/transports/slack.js +0 -37
- package/dist/notify/transports/slack.js.map +0 -1
- package/dist/notify/types.d.ts +0 -119
- package/dist/notify/types.js +0 -16
- package/dist/notify/types.js.map +0 -1
- package/dist/providers.d.ts +0 -125
- package/dist/providers.js +0 -279
- package/dist/providers.js.map +0 -1
- package/dist/sandbox/docker.d.ts +0 -180
- package/dist/sandbox/docker.js +0 -517
- package/dist/sandbox/docker.js.map +0 -1
- package/dist/sandbox/egress-allowlist.d.ts +0 -74
- package/dist/sandbox/egress-allowlist.js +0 -164
- package/dist/sandbox/egress-allowlist.js.map +0 -1
- package/dist/sandbox/egress-firewall-config.d.ts +0 -127
- package/dist/sandbox/egress-firewall-config.js +0 -434
- package/dist/sandbox/egress-firewall-config.js.map +0 -1
- package/dist/sandbox/images.d.ts +0 -23
- package/dist/sandbox/images.js +0 -55
- package/dist/sandbox/images.js.map +0 -1
- package/dist/sandbox/index.d.ts +0 -112
- package/dist/sandbox/index.js +0 -332
- package/dist/sandbox/index.js.map +0 -1
- package/dist/sandbox/sandbox.d.ts +0 -214
- package/dist/sandbox/sandbox.js +0 -453
- package/dist/sandbox/sandbox.js.map +0 -1
- package/dist/sandbox/smol.d.ts +0 -162
- package/dist/sandbox/smol.js +0 -485
- package/dist/sandbox/smol.js.map +0 -1
- package/dist/session-log.d.ts +0 -63
- package/dist/session-log.js +0 -290
- package/dist/session-log.js.map +0 -1
- package/dist/state/approval-store.d.ts +0 -88
- package/dist/state/approval-store.js +0 -149
- package/dist/state/approval-store.js.map +0 -1
- package/dist/state/build-assets.d.ts +0 -50
- package/dist/state/build-assets.js +0 -154
- package/dist/state/build-assets.js.map +0 -1
- package/dist/state/db.d.ts +0 -81
- package/dist/state/db.js +0 -155
- package/dist/state/db.js.map +0 -1
- package/dist/state/execution-store.d.ts +0 -257
- package/dist/state/execution-store.js +0 -527
- package/dist/state/execution-store.js.map +0 -1
- package/dist/state/migrate.d.ts +0 -15
- package/dist/state/migrate.js +0 -175
- package/dist/state/migrate.js.map +0 -1
- package/dist/state/workflow-run-store.d.ts +0 -216
- package/dist/state/workflow-run-store.js +0 -403
- package/dist/state/workflow-run-store.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -38
- package/dist/telemetry/index.js +0 -253
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/pi-events.d.ts +0 -12
- package/dist/telemetry/pi-events.js +0 -134
- package/dist/telemetry/pi-events.js.map +0 -1
- package/dist/workflows/dag.d.ts +0 -37
- package/dist/workflows/dag.js +0 -118
- package/dist/workflows/dag.js.map +0 -1
- package/dist/workflows/loader.d.ts +0 -53
- package/dist/workflows/loader.js +0 -421
- package/dist/workflows/loader.js.map +0 -1
- package/dist/workflows/loop-eval.d.ts +0 -28
- package/dist/workflows/loop-eval.js +0 -74
- package/dist/workflows/loop-eval.js.map +0 -1
- package/dist/workflows/phase-executor.d.ts +0 -222
- package/dist/workflows/phase-executor.js +0 -1153
- package/dist/workflows/phase-executor.js.map +0 -1
- package/dist/workflows/phase-ref.d.ts +0 -50
- package/dist/workflows/phase-ref.js +0 -91
- package/dist/workflows/phase-ref.js.map +0 -1
- package/dist/workflows/resume.d.ts +0 -58
- package/dist/workflows/resume.js +0 -313
- package/dist/workflows/resume.js.map +0 -1
- package/dist/workflows/runner.d.ts +0 -63
- package/dist/workflows/runner.js +0 -381
- package/dist/workflows/runner.js.map +0 -1
- package/dist/workflows/schema.d.ts +0 -344
- package/dist/workflows/schema.js +0 -460
- package/dist/workflows/schema.js.map +0 -1
- package/dist/workflows/simple.d.ts +0 -90
- package/dist/workflows/simple.js +0 -393
- package/dist/workflows/simple.js.map +0 -1
- package/dist/workflows/target-policy.d.ts +0 -74
- package/dist/workflows/target-policy.js +0 -80
- package/dist/workflows/target-policy.js.map +0 -1
- package/dist/workflows/templates.d.ts +0 -88
- package/dist/workflows/templates.js +0 -127
- package/dist/workflows/templates.js.map +0 -1
- package/dist/workflows/triggers.d.ts +0 -21
- package/dist/workflows/triggers.js +0 -45
- package/dist/workflows/triggers.js.map +0 -1
- package/dist/workflows/verdict.d.ts +0 -19
- package/dist/workflows/verdict.js +0 -30
- package/dist/workflows/verdict.js.map +0 -1
- package/dist/worktree/manager.d.ts +0 -43
- package/dist/worktree/manager.js +0 -127
- package/dist/worktree/manager.js.map +0 -1
- package/docker-compose.yml +0 -274
- package/sandbox.Dockerfile +0 -68
- package/skills/README.md +0 -42
- package/skills/browser-qa/SKILL.md +0 -208
- package/skills/browser-qa/scripts/agent-browser.mjs +0 -531
- package/skills/building/SKILL.md +0 -95
- package/skills/chat/SKILL.md +0 -36
- package/skills/code-review/SKILL.md +0 -82
- package/skills/debug-production/SKILL.md +0 -108
- package/skills/demo/SKILL.md +0 -228
- package/skills/demo/scripts/compose-demo.sh +0 -243
- package/skills/issue-answer/SKILL.md +0 -91
- package/skills/issue-comment/SKILL.md +0 -49
- package/skills/issue-triage/SKILL.md +0 -149
- package/skills/issue-triage/references/AGENT-BRIEF.md +0 -65
- package/skills/pr-comment/SKILL.md +0 -64
- package/skills/pr-review/SKILL.md +0 -148
- package/skills/pr-review/references/findings-schema.md +0 -89
- package/skills/qa-test/SKILL.md +0 -97
- package/skills/repo-health/SKILL.md +0 -67
- package/skills/security-feedback/SKILL.md +0 -173
- package/skills/security-feedback/references/templates.md +0 -77
- package/skills/security-review/SKILL.md +0 -215
- package/skills/security-review/references/issue-format.md +0 -302
- package/skills/verify/SKILL.md +0 -118
- package/workflows/answer.yaml +0 -44
- package/workflows/build.yaml +0 -129
- package/workflows/cron-health.yaml +0 -6
- package/workflows/cron-review.yaml +0 -8
- package/workflows/cron-security.yaml +0 -6
- package/workflows/cron-triage.yaml +0 -8
- package/workflows/demo.yaml +0 -62
- package/workflows/examples/bash-smoke.yaml +0 -41
- package/workflows/examples/parallel-review.yaml +0 -36
- package/workflows/examples/tdd-loop.yaml +0 -17
- package/workflows/explore.yaml +0 -80
- package/workflows/issue-comment.yaml +0 -15
- package/workflows/issue-triage.yaml +0 -22
- package/workflows/pr-comment.yaml +0 -16
- package/workflows/pr-fix.yaml +0 -17
- package/workflows/pr-review.yaml +0 -50
- package/workflows/prompts/answer.md +0 -68
- package/workflows/prompts/architect.md +0 -44
- package/workflows/prompts/classifier.md +0 -60
- package/workflows/prompts/classify-adds-info.md +0 -17
- package/workflows/prompts/demo.md +0 -125
- package/workflows/prompts/executor.md +0 -42
- package/workflows/prompts/explore-ask.md +0 -99
- package/workflows/prompts/explore-publish.md +0 -31
- package/workflows/prompts/explore-read.md +0 -120
- package/workflows/prompts/explore-synthesize.md +0 -88
- package/workflows/prompts/fix.md +0 -18
- package/workflows/prompts/guardrails.md +0 -96
- package/workflows/prompts/pr-fix.md +0 -26
- package/workflows/prompts/pr.md +0 -39
- package/workflows/prompts/qa-browser.md +0 -95
- package/workflows/prompts/qa-synth.md +0 -44
- package/workflows/prompts/qa-test.md +0 -60
- package/workflows/prompts/re-reviewer.md +0 -33
- package/workflows/prompts/reviewer.md +0 -60
- package/workflows/prompts/verify-browser.md +0 -93
- package/workflows/prompts/verify-synth.md +0 -44
- package/workflows/prompts/verify.md +0 -63
- package/workflows/qa-test.yaml +0 -94
- package/workflows/repo-health.yaml +0 -15
- package/workflows/security-feedback.yaml +0 -25
- package/workflows/security-review.yaml +0 -37
- package/workflows/verify.yaml +0 -93
- /package/dist/{cli/cli-config.d.ts → cli-config.d.ts} +0 -0
- /package/dist/{cli/cli-config.js → cli-config.js} +0 -0
- /package/dist/{cli/cli-format.d.ts → cli-format.d.ts} +0 -0
- /package/dist/{cli/cli-format.js → cli-format.js} +0 -0
- /package/dist/{cli/cli-timeline.d.ts → cli-timeline.d.ts} +0 -0
- /package/dist/{cli/cli-timeline.js → cli-timeline.js} +0 -0
- /package/dist/{cli/cli.d.ts → cli.d.ts} +0 -0
- /package/dist/{cli/oauth-cli.d.ts → oauth-cli.d.ts} +0 -0
- /package/dist/{cli/setup.d.ts → setup.d.ts} +0 -0
package/dist/providers.js
DELETED
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider registry — single source of truth for the LLM providers Last Light
|
|
3
|
-
* knows how to wire end-to-end.
|
|
4
|
-
*
|
|
5
|
-
* pi-ai (`@earendil-works/pi-ai`) is provider-agnostic and supports 15+
|
|
6
|
-
* providers out of the box. Of those, only a subset is "wizard-able" here:
|
|
7
|
-
* they authenticate with a single API-key env var and expose a stable
|
|
8
|
-
* endpoint reachable from the sandbox egress firewall. Excluded are the
|
|
9
|
-
* OAuth-only providers (`openai-codex`, `github-copilot`), the multi-env
|
|
10
|
-
* Ambient-cred ones (`amazon-bedrock`, `google-vertex`, `azure-openai-*`,
|
|
11
|
-
* `cloudflare-*`), and the regional-CN variants.
|
|
12
|
-
*
|
|
13
|
-
* This registry is consumed by:
|
|
14
|
-
* - `src/engine/llm.ts` — the cheap one-shot helper used by the
|
|
15
|
-
* prompt screener + intent classifier. It builds requests for the
|
|
16
|
-
* `openai-completions` family (which is most wizard-able providers —
|
|
17
|
-
* Google and Mistral are routed through their OpenAI-compatible
|
|
18
|
-
* endpoints) and the `anthropic-messages` family (Kimi for Coding,
|
|
19
|
-
* MiniMax, Anthropic itself).
|
|
20
|
-
* - `src/engine/agent-executor.ts` — forwards each provider's env var
|
|
21
|
-
* into the sandbox so agentic-pi can auth.
|
|
22
|
-
* - `src/sandbox/egress-allowlist.ts` — the SNI/firewall allowlist is
|
|
23
|
-
* seeded from each provider's `host`.
|
|
24
|
-
* - `src/cli/setup.ts` — the install wizard's step-4 provider picker.
|
|
25
|
-
*
|
|
26
|
-
* Keep this list aligned with pi-ai's provider registry. When pi-ai adds a
|
|
27
|
-
* new provider that we want to surface, add an entry here and everything
|
|
28
|
-
* else (forwarding, egress, wizard UI) follows automatically.
|
|
29
|
-
*/
|
|
30
|
-
/**
|
|
31
|
-
* The registry. Order matters — `defaultFastModel()` in `llm.ts` selects
|
|
32
|
-
* a fast model by iterating this list and picking the first provider
|
|
33
|
-
* whose env var is present. Always keep Anthropic first (best raw-latency
|
|
34
|
-
* cheap helper) then OpenAI then OpenRouter, then the rest grouped by
|
|
35
|
-
* families so the array is easy to scan.
|
|
36
|
-
*/
|
|
37
|
-
export const PROVIDERS = [
|
|
38
|
-
// ── Anthropic-messages family ───────────────────────────────────────
|
|
39
|
-
{
|
|
40
|
-
prefix: "anthropic",
|
|
41
|
-
displayName: "Anthropic",
|
|
42
|
-
envKey: "ANTHROPIC_API_KEY",
|
|
43
|
-
baseUrl: "https://api.anthropic.com/v1",
|
|
44
|
-
api: "anthropic-messages",
|
|
45
|
-
host: "anthropic.com",
|
|
46
|
-
fastModel: "claude-haiku-4-5-20251001",
|
|
47
|
-
sampleModel: "claude-sonnet-4-6",
|
|
48
|
-
keyPrefix: "sk-ant-",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
prefix: "kimi-coding",
|
|
52
|
-
displayName: "Kimi for Coding (Moonshot)",
|
|
53
|
-
envKey: "KIMI_API_KEY",
|
|
54
|
-
baseUrl: "https://api.kimi.com/coding",
|
|
55
|
-
api: "anthropic-messages",
|
|
56
|
-
host: "kimi.com",
|
|
57
|
-
fastModel: "kimi-latest",
|
|
58
|
-
sampleModel: "kimi-latest",
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
prefix: "minimax",
|
|
62
|
-
displayName: "MiniMax",
|
|
63
|
-
envKey: "MINIMAX_API_KEY",
|
|
64
|
-
baseUrl: "https://api.minimax.io/anthropic",
|
|
65
|
-
api: "anthropic-messages",
|
|
66
|
-
host: "minimax.io",
|
|
67
|
-
fastModel: "MiniMax-M1",
|
|
68
|
-
sampleModel: "MiniMax-M2",
|
|
69
|
-
},
|
|
70
|
-
// ── OpenAI-completions family — first-party OpenAI ──────────────────
|
|
71
|
-
{
|
|
72
|
-
prefix: "openai",
|
|
73
|
-
displayName: "OpenAI",
|
|
74
|
-
envKey: "OPENAI_API_KEY",
|
|
75
|
-
baseUrl: "https://api.openai.com/v1",
|
|
76
|
-
api: "openai-completions",
|
|
77
|
-
host: "openai.com",
|
|
78
|
-
fastModel: "gpt-5.4-mini",
|
|
79
|
-
sampleModel: "gpt-5.5",
|
|
80
|
-
maxTokensField: "max_completion_tokens",
|
|
81
|
-
keyPrefix: "sk-",
|
|
82
|
-
},
|
|
83
|
-
// ── Google Gemini — routed through Google's OpenAI-compatible endpoint ──
|
|
84
|
-
{
|
|
85
|
-
prefix: "google",
|
|
86
|
-
displayName: "Google AI Studio (Gemini)",
|
|
87
|
-
envKey: "GEMINI_API_KEY",
|
|
88
|
-
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
89
|
-
api: "openai-completions",
|
|
90
|
-
host: "generativelanguage.googleapis.com",
|
|
91
|
-
fastModel: "gemini-2.5-flash",
|
|
92
|
-
sampleModel: "gemini-2.5-pro",
|
|
93
|
-
keyPrefix: "AIza",
|
|
94
|
-
},
|
|
95
|
-
// ── Mistral — Mistral exposes an OpenAI-compatible path ──────────────
|
|
96
|
-
{
|
|
97
|
-
prefix: "mistral",
|
|
98
|
-
displayName: "Mistral",
|
|
99
|
-
envKey: "MISTRAL_API_KEY",
|
|
100
|
-
baseUrl: "https://api.mistral.ai/v1",
|
|
101
|
-
api: "openai-completions",
|
|
102
|
-
host: "mistral.ai",
|
|
103
|
-
fastModel: "mistral-small-latest",
|
|
104
|
-
sampleModel: "mistral-large-latest",
|
|
105
|
-
},
|
|
106
|
-
// ── OpenAI-compatible inference specialists ──────────────────────────
|
|
107
|
-
{
|
|
108
|
-
prefix: "groq",
|
|
109
|
-
displayName: "Groq",
|
|
110
|
-
envKey: "GROQ_API_KEY",
|
|
111
|
-
baseUrl: "https://api.groq.com/openai/v1",
|
|
112
|
-
api: "openai-completions",
|
|
113
|
-
host: "groq.com",
|
|
114
|
-
fastModel: "llama-3.3-70b-versatile",
|
|
115
|
-
sampleModel: "llama-3.3-70b-versatile",
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
prefix: "cerebras",
|
|
119
|
-
displayName: "Cerebras",
|
|
120
|
-
envKey: "CEREBRAS_API_KEY",
|
|
121
|
-
baseUrl: "https://api.cerebras.ai/v1",
|
|
122
|
-
api: "openai-completions",
|
|
123
|
-
host: "cerebras.ai",
|
|
124
|
-
fastModel: "llama-3.3-70b",
|
|
125
|
-
sampleModel: "llama-3.3-70b",
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
prefix: "xai",
|
|
129
|
-
displayName: "xAI (Grok)",
|
|
130
|
-
envKey: "XAI_API_KEY",
|
|
131
|
-
baseUrl: "https://api.x.ai/v1",
|
|
132
|
-
api: "openai-completions",
|
|
133
|
-
host: "x.ai",
|
|
134
|
-
fastModel: "grok-3-mini",
|
|
135
|
-
sampleModel: "grok-4",
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
prefix: "huggingface",
|
|
139
|
-
displayName: "Hugging Face",
|
|
140
|
-
envKey: "HF_TOKEN",
|
|
141
|
-
baseUrl: "https://router.huggingface.co/v1",
|
|
142
|
-
api: "openai-completions",
|
|
143
|
-
host: "huggingface.co",
|
|
144
|
-
fastModel: "meta-llama/Llama-3.3-70B-Instruct",
|
|
145
|
-
sampleModel: "meta-llama/Llama-3.3-70B-Instruct",
|
|
146
|
-
keyPrefix: "hf_",
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
prefix: "moonshotai",
|
|
150
|
-
displayName: "Moonshot AI",
|
|
151
|
-
envKey: "MOONSHOT_API_KEY",
|
|
152
|
-
baseUrl: "https://api.moonshot.ai/v1",
|
|
153
|
-
api: "openai-completions",
|
|
154
|
-
host: "moonshot.ai",
|
|
155
|
-
fastModel: "kimi-k2",
|
|
156
|
-
sampleModel: "kimi-k2",
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
prefix: "nvidia",
|
|
160
|
-
displayName: "NVIDIA NIM",
|
|
161
|
-
envKey: "NVIDIA_API_KEY",
|
|
162
|
-
baseUrl: "https://integrate.api.nvidia.com/v1",
|
|
163
|
-
api: "openai-completions",
|
|
164
|
-
host: "integrate.api.nvidia.com",
|
|
165
|
-
fastModel: "meta/llama-3.3-70b-instruct",
|
|
166
|
-
sampleModel: "meta/llama-3.3-70b-instruct",
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
prefix: "fireworks",
|
|
170
|
-
displayName: "Fireworks",
|
|
171
|
-
envKey: "FIREWORKS_API_KEY",
|
|
172
|
-
baseUrl: "https://api.fireworks.ai/inference/v1",
|
|
173
|
-
api: "openai-completions",
|
|
174
|
-
host: "fireworks.ai",
|
|
175
|
-
fastModel: "accounts/fireworks/models/llama-v3p3-70b-instruct",
|
|
176
|
-
sampleModel: "accounts/fireworks/models/llama-v3p3-70b-instruct",
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
prefix: "together",
|
|
180
|
-
displayName: "Together",
|
|
181
|
-
envKey: "TOGETHER_API_KEY",
|
|
182
|
-
baseUrl: "https://api.together.ai/v1",
|
|
183
|
-
api: "openai-completions",
|
|
184
|
-
host: "together.ai",
|
|
185
|
-
fastModel: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
|
|
186
|
-
sampleModel: "meta-llama/Llama-3.3-70B-Instruct-Turbo",
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
prefix: "deepseek",
|
|
190
|
-
displayName: "DeepSeek",
|
|
191
|
-
envKey: "DEEPSEEK_API_KEY",
|
|
192
|
-
baseUrl: "https://api.deepseek.com/v1",
|
|
193
|
-
api: "openai-completions",
|
|
194
|
-
host: "deepseek.com",
|
|
195
|
-
fastModel: "deepseek-chat",
|
|
196
|
-
sampleModel: "deepseek-chat",
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
prefix: "zai",
|
|
200
|
-
displayName: "Z.AI (GLM)",
|
|
201
|
-
envKey: "ZAI_API_KEY",
|
|
202
|
-
baseUrl: "https://api.z.ai/api/coding/paas/v4",
|
|
203
|
-
api: "openai-completions",
|
|
204
|
-
host: "z.ai",
|
|
205
|
-
fastModel: "glm-4.6",
|
|
206
|
-
sampleModel: "glm-4.6",
|
|
207
|
-
},
|
|
208
|
-
// ── OpenRouter — aggregator (take any pi.dev-listed model via one key) ──
|
|
209
|
-
{
|
|
210
|
-
prefix: "openrouter",
|
|
211
|
-
displayName: "OpenRouter (aggregator — Anthropic, Google, xAI, …)",
|
|
212
|
-
envKey: "OPENROUTER_API_KEY",
|
|
213
|
-
baseUrl: "https://openrouter.ai/api/v1",
|
|
214
|
-
api: "openai-completions",
|
|
215
|
-
host: "openrouter.ai",
|
|
216
|
-
fastModel: "google/gemini-2.5-flash",
|
|
217
|
-
sampleModel: "anthropic/claude-sonnet-4.5",
|
|
218
|
-
preserveNestedModelId: true,
|
|
219
|
-
extraHeaders: {
|
|
220
|
-
"HTTP-Referer": "https://github.com/nearform/lastlight",
|
|
221
|
-
"X-Title": "Last Light",
|
|
222
|
-
},
|
|
223
|
-
keyPrefix: "sk-or-",
|
|
224
|
-
},
|
|
225
|
-
];
|
|
226
|
-
const PREFIX_INDEX = new Map(PROVIDERS.map((p) => [p.prefix, p]));
|
|
227
|
-
const ENV_INDEX = new Map(PROVIDERS.map((p) => [p.envKey, p]));
|
|
228
|
-
export function providerByPrefix(prefix) {
|
|
229
|
-
return PREFIX_INDEX.get(prefix.toLowerCase());
|
|
230
|
-
}
|
|
231
|
-
export function providerByEnvKey(envKey) {
|
|
232
|
-
return ENV_INDEX.get(envKey);
|
|
233
|
-
}
|
|
234
|
-
/** All the env var names a harness must forward to reach every registered provider. */
|
|
235
|
-
export const PROVIDER_ENV_KEYS = PROVIDERS.map((p) => p.envKey);
|
|
236
|
-
/** All the hosts the sandbox egress firewall must allowlist to reach these providers. */
|
|
237
|
-
export const PROVIDER_HOSTS = PROVIDERS.map((p) => p.host);
|
|
238
|
-
/**
|
|
239
|
-
* Default model spec shipped with the harness. Keep aligned with the
|
|
240
|
-
* `OPENCODE_MODEL` default in `config/default.yaml` and the wizard's
|
|
241
|
-
* initial provider selection.
|
|
242
|
-
*/
|
|
243
|
-
export const DEFAULT_PROVIDER = "anthropic";
|
|
244
|
-
export const DEFAULT_MODEL = "anthropic/claude-sonnet-4-6";
|
|
245
|
-
export const OAUTH_PROVIDERS = [
|
|
246
|
-
{
|
|
247
|
-
id: "openai-codex",
|
|
248
|
-
displayName: "ChatGPT Plus/Pro (Codex)",
|
|
249
|
-
modelPrefix: "openai-codex",
|
|
250
|
-
sampleModel: "openai-codex/gpt-5.4",
|
|
251
|
-
sandboxEnvVar: null, // chatgpt.com backend — no env route, chat-only
|
|
252
|
-
oauthOnly: true,
|
|
253
|
-
},
|
|
254
|
-
{
|
|
255
|
-
id: "anthropic",
|
|
256
|
-
displayName: "Anthropic (Claude Pro/Max)",
|
|
257
|
-
modelPrefix: "anthropic",
|
|
258
|
-
sampleModel: "anthropic/claude-sonnet-4-6",
|
|
259
|
-
sandboxEnvVar: "ANTHROPIC_OAUTH_TOKEN",
|
|
260
|
-
oauthOnly: false, // falls back to ANTHROPIC_API_KEY
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
id: "github-copilot",
|
|
264
|
-
displayName: "GitHub Copilot",
|
|
265
|
-
modelPrefix: "github-copilot",
|
|
266
|
-
sampleModel: "github-copilot/gpt-4o",
|
|
267
|
-
sandboxEnvVar: "COPILOT_GITHUB_TOKEN",
|
|
268
|
-
oauthOnly: true,
|
|
269
|
-
},
|
|
270
|
-
];
|
|
271
|
-
const OAUTH_PREFIX_INDEX = new Map(OAUTH_PROVIDERS.map((p) => [p.modelPrefix, p]));
|
|
272
|
-
const OAUTH_ID_INDEX = new Map(OAUTH_PROVIDERS.map((p) => [p.id, p]));
|
|
273
|
-
export function oauthProviderByModelPrefix(prefix) {
|
|
274
|
-
return OAUTH_PREFIX_INDEX.get(prefix);
|
|
275
|
-
}
|
|
276
|
-
export function oauthProviderById(id) {
|
|
277
|
-
return OAUTH_ID_INDEX.get(id);
|
|
278
|
-
}
|
|
279
|
-
//# sourceMappingURL=providers.js.map
|
package/dist/providers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/sandbox/docker.d.ts
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Docker sandbox manager — runs agent tasks in isolated sibling containers.
|
|
3
|
-
*
|
|
4
|
-
* The sandbox image bakes immutable assets at /app/ (skills, agent-context,
|
|
5
|
-
* MCP server, MCP config template). Its entrypoint wires them into the
|
|
6
|
-
* workspace after volumes are mounted — no post-run docker exec needed.
|
|
7
|
-
*
|
|
8
|
-
* Volumes mounted at runtime:
|
|
9
|
-
* - Shared data volume (/data): secrets (app.pem), session logs
|
|
10
|
-
* - Task worktree (/home/agent/workspace): per-task git repo
|
|
11
|
-
*/
|
|
12
|
-
export interface SandboxConfig {
|
|
13
|
-
/** Docker image for sandbox containers (default: lastlight-sandbox:latest) */
|
|
14
|
-
imageName: string;
|
|
15
|
-
/** Env vars to inject into the sandbox */
|
|
16
|
-
env: Record<string, string>;
|
|
17
|
-
/** Timeout in seconds (default: 1800 = 30 min) */
|
|
18
|
-
timeoutSeconds?: number;
|
|
19
|
-
/**
|
|
20
|
-
* Per-sandbox memory cap, in Docker's `--memory` format (e.g. "2g", "512m").
|
|
21
|
-
* Default: 2g — enough headroom for `npm install`, vite build, and an
|
|
22
|
-
* agent loop, but small enough that several concurrent sandboxes can't
|
|
23
|
-
* exhaust a 16 GB host. Override via the `SANDBOX_MEMORY_LIMIT` env var.
|
|
24
|
-
*/
|
|
25
|
-
memoryLimit?: string;
|
|
26
|
-
/**
|
|
27
|
-
* Docker network to attach the sandbox container to. Defaults to
|
|
28
|
-
* `LASTLIGHT_SANDBOX_NETWORK` env var or `lastlight_sandbox-egress`
|
|
29
|
-
* (the `internal: true` network declared in docker-compose.yml). The
|
|
30
|
-
* sandbox can only reach the public internet through the nginx-egress
|
|
31
|
-
* firewall sidecars on this network.
|
|
32
|
-
*/
|
|
33
|
-
network?: string;
|
|
34
|
-
/**
|
|
35
|
-
* IP of the coredns sidecar this sandbox uses as its DNS resolver.
|
|
36
|
-
* `coredns-strict` (172.30.0.10) returns the strict-nginx IP for
|
|
37
|
-
* allowlisted hosts and NXDOMAIN for everything else; `coredns-open`
|
|
38
|
-
* (172.30.0.11) returns the open-nginx IP for any hostname (minus a
|
|
39
|
-
* small SSRF deny set). Passed to `docker run` as `--dns <ip>`.
|
|
40
|
-
*
|
|
41
|
-
* No env vars are injected — the sandbox has no idea a firewall is
|
|
42
|
-
* in front of it. Works for every SDK regardless of whether it
|
|
43
|
-
* honours HTTP_PROXY / HTTPS_PROXY.
|
|
44
|
-
*/
|
|
45
|
-
dnsIp?: string;
|
|
46
|
-
}
|
|
47
|
-
export interface SandboxInfo {
|
|
48
|
-
containerId: string;
|
|
49
|
-
containerName: string;
|
|
50
|
-
worktreePath: string;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* How `/home/agent/workspace` is materialized inside the sandbox container.
|
|
54
|
-
*
|
|
55
|
-
* - `bind`: classic host-path bind mount. Only safe when the host filesystem
|
|
56
|
-
* path is identical from the harness's view and the docker daemon's view —
|
|
57
|
-
* i.e. local dev where the harness runs directly on the host, or any
|
|
58
|
-
* deployment where `SANDBOX_DATA_VOLUME` is a real host path.
|
|
59
|
-
* - `volume-subpath`: mount a subpath of a named docker volume. Required
|
|
60
|
-
* when the harness runs inside a container that holds the data dir via a
|
|
61
|
-
* named volume (the standard docker-compose setup). A bare bind would
|
|
62
|
-
* resolve `/app/data/sandboxes/<id>` against the host's empty bare-FS
|
|
63
|
-
* `/app/data/...` rather than the named volume's `_data/sandboxes/<id>`,
|
|
64
|
-
* producing two divergent trees and breaking skill staging.
|
|
65
|
-
*/
|
|
66
|
-
export type WorkspaceMount = {
|
|
67
|
-
type: "bind";
|
|
68
|
-
hostPath: string;
|
|
69
|
-
} | {
|
|
70
|
-
type: "volume-subpath";
|
|
71
|
-
volume: string;
|
|
72
|
-
subpath: string;
|
|
73
|
-
};
|
|
74
|
-
export declare class DockerSandbox {
|
|
75
|
-
private config;
|
|
76
|
-
private activeContainers;
|
|
77
|
-
constructor(config: SandboxConfig);
|
|
78
|
-
/**
|
|
79
|
-
* Create and start a sandbox container for a task.
|
|
80
|
-
*/
|
|
81
|
-
create(opts: {
|
|
82
|
-
taskId: string;
|
|
83
|
-
worktreePath: string;
|
|
84
|
-
workspaceMount: WorkspaceMount;
|
|
85
|
-
}): Promise<SandboxInfo>;
|
|
86
|
-
/**
|
|
87
|
-
* Wait for the sandbox entrypoint to finish setup. The entrypoint touches
|
|
88
|
-
* `$WORKSPACE/.ready` as its last step before exec'ing the agent shell.
|
|
89
|
-
*/
|
|
90
|
-
private waitForReady;
|
|
91
|
-
/**
|
|
92
|
-
* Run the agentic-pi CLI inside the sandbox with a prompt.
|
|
93
|
-
*
|
|
94
|
-
* Streams stdout line-by-line so the caller can react to JSON events
|
|
95
|
-
* (e.g. capture the top-level `session` record's id) before the agent
|
|
96
|
-
* has finished. The full stdout is also buffered and returned for
|
|
97
|
-
* post-run parsing of the usage_snapshot rollup.
|
|
98
|
-
*/
|
|
99
|
-
runAgent(taskId: string, prompt: string, opts?: {
|
|
100
|
-
model?: string;
|
|
101
|
-
/**
|
|
102
|
-
* Pi thinking level: `off | minimal | low | medium | high | xhigh`.
|
|
103
|
-
* Validated against the closed set before being shell-interpolated.
|
|
104
|
-
*/
|
|
105
|
-
thinking?: string;
|
|
106
|
-
/** agentic-pi GitHub profile: `read | issues-write | review-write | repo-write`. */
|
|
107
|
-
profile?: string;
|
|
108
|
-
/**
|
|
109
|
-
* Env forwarded INTO the sandboxed run via repeated `--sandbox-env`
|
|
110
|
-
* flags. Used to inject git identity. Keys / values are charset-asserted
|
|
111
|
-
* before shell interpolation.
|
|
112
|
-
*/
|
|
113
|
-
sandboxEnv?: Record<string, string>;
|
|
114
|
-
/**
|
|
115
|
-
* Working directory for the agent process inside the container.
|
|
116
|
-
* Defaults to WORKSPACE_DIR (the workspace root). When the harness
|
|
117
|
-
* pre-cloned the target repo, the executor passes
|
|
118
|
-
* `<WORKSPACE_DIR>/<repo>` so the agent starts inside the checked-out
|
|
119
|
-
* tree. The path is asserted against an allowlist before being passed
|
|
120
|
-
* to `docker exec -w` to keep it shell-safe.
|
|
121
|
-
*/
|
|
122
|
-
agentCwd?: string;
|
|
123
|
-
/**
|
|
124
|
-
* Enable agentic-pi's web-search extension. When false (or omitted),
|
|
125
|
-
* `--no-web-search` is appended to suppress auto-enable. When true,
|
|
126
|
-
* the flag is omitted and agentic-pi auto-detects the provider from
|
|
127
|
-
* whichever `*_API_KEY` env var the container received.
|
|
128
|
-
*/
|
|
129
|
-
webSearch?: boolean;
|
|
130
|
-
/** Force a specific web-search provider. Validated against a closed set. */
|
|
131
|
-
webSearchProvider?: "tavily" | "brave" | "exa";
|
|
132
|
-
/**
|
|
133
|
-
* Per-phase skill directories to load, as absolute in-container paths
|
|
134
|
-
* under WORKSPACE_DIR (e.g. `/home/agent/workspace/.lastlight-skills/
|
|
135
|
-
* <phase>/<skill>`). Each becomes a repeated `--skill <dir>` flag.
|
|
136
|
-
* Charset/prefix-asserted before shell interpolation.
|
|
137
|
-
*/
|
|
138
|
-
skillDirs?: string[];
|
|
139
|
-
/** Called for each newline-terminated stdout line as it arrives. */
|
|
140
|
-
onLine?: (line: string) => void;
|
|
141
|
-
}): Promise<void>;
|
|
142
|
-
/**
|
|
143
|
-
* Run a deterministic shell command inside an already-provisioned sandbox
|
|
144
|
-
* container and return its exit code + captured output. This is the
|
|
145
|
-
* non-agent sibling of {@link runAgent}: same `docker exec --user agent -w
|
|
146
|
-
* <workdir> … sh -c <cmd>` machinery, but it captures a bounded stdout tail
|
|
147
|
-
* (runAgent discards stdout) and RESOLVES with the exit code instead of
|
|
148
|
-
* rejecting on non-zero — the caller decides success/failure.
|
|
149
|
-
*
|
|
150
|
-
* Powers `type: bash` / `type: script` workflow phases (and the in-sandbox
|
|
151
|
-
* `generic_loop.until_bash` check). `command` is passed as a single argv slot
|
|
152
|
-
* to `sh -c`, so it is NOT re-parsed by the host shell — it is the script we
|
|
153
|
-
* intend to run. Env is forwarded via `docker exec -e KEY=VALUE` (argv, not
|
|
154
|
-
* shell-interpolated); keys are charset-asserted defensively.
|
|
155
|
-
*/
|
|
156
|
-
runCommand(taskId: string, command: string, opts?: {
|
|
157
|
-
/**
|
|
158
|
-
* Working directory inside the container. Defaults to WORKSPACE_DIR.
|
|
159
|
-
* Asserted against the workspace-root allowlist (same guard as runAgent).
|
|
160
|
-
*/
|
|
161
|
-
cwd?: string;
|
|
162
|
-
/** Env forwarded into the command via `docker exec -e`. */
|
|
163
|
-
sandboxEnv?: Record<string, string>;
|
|
164
|
-
/** Per-command timeout in seconds (default: the sandbox config timeout). */
|
|
165
|
-
timeoutSeconds?: number;
|
|
166
|
-
/** Called for each newline-terminated stdout line as it arrives. */
|
|
167
|
-
onLine?: (line: string) => void;
|
|
168
|
-
}): Promise<{
|
|
169
|
-
exitCode: number;
|
|
170
|
-
stdout: string;
|
|
171
|
-
stderr: string;
|
|
172
|
-
timedOut: boolean;
|
|
173
|
-
}>;
|
|
174
|
-
/**
|
|
175
|
-
* Remove a sandbox container.
|
|
176
|
-
*/
|
|
177
|
-
destroy(taskId: string): Promise<void>;
|
|
178
|
-
destroyAll(): Promise<void>;
|
|
179
|
-
private resolveGitMounts;
|
|
180
|
-
}
|