lastlight 0.15.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 -100
- package/dist/connectors/slack/connector.js +0 -341
- 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 -8
- package/dist/connectors/slack/mrkdwn.js +0 -123
- 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 -923
- 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/index.d.ts +0 -15
- package/dist/notify/index.js +0 -6
- 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 -17
- package/dist/notify/notifier.js +0 -87
- 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 -26
- package/dist/notify/transports/github.js.map +0 -1
- package/dist/notify/transports/slack.d.ts +0 -26
- package/dist/notify/transports/slack.js +0 -28
- package/dist/notify/transports/slack.js.map +0 -1
- package/dist/notify/types.d.ts +0 -95
- 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 -215
- package/dist/workflows/phase-executor.js +0 -1144
- 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 -364
- 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/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
|
-
}
|