lastlight 0.16.0 → 0.16.2
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} +39 -1
- package/dist/{cli/cli-server.js → cli-server.js} +105 -5
- package/dist/cli-server.js.map +1 -0
- package/dist/cli-timeline.js.map +1 -0
- package/dist/{cli/cli.js → cli.js} +9 -7
- 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/workflows/simple.js
DELETED
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "crypto";
|
|
2
|
-
import { getBotName } from "../config/config.js";
|
|
3
|
-
import { getWorkflow } from "./loader.js";
|
|
4
|
-
import { runWorkflow, } from "./runner.js";
|
|
5
|
-
import { PhaseRef } from "./phase-ref.js";
|
|
6
|
-
import { slugify } from "./templates.js";
|
|
7
|
-
import { wrapUntrusted } from "../engine/screen/screen.js";
|
|
8
|
-
import { buildProgressModel, runDashboardUrl } from "../notify/model.js";
|
|
9
|
-
import { buildAssetIssueKey } from "../state/build-assets.js";
|
|
10
|
-
import { PER_TARGET_REUSE_WORKFLOWS, PER_TARGET_RECREATE_WORKFLOWS, PREPOPULATE_SYNTH_WORKFLOWS, PR_HEADREF_PREPOPULATE_WORKFLOWS, } from "./target-policy.js";
|
|
11
|
-
// Per-target workspace provisioning policy lives in `./target-policy.js` (a
|
|
12
|
-
// leaf module the runner can share without an import cycle). Imported at the
|
|
13
|
-
// top for local use; re-exported here for existing callers (e.g. src/index.ts
|
|
14
|
-
// imports PR_HEADREF_PREPOPULATE_WORKFLOWS).
|
|
15
|
-
export { PER_TARGET_REUSE_WORKFLOWS, PER_TARGET_RECREATE_WORKFLOWS, PREPOPULATE_SYNTH_WORKFLOWS, PR_HEADREF_PREPOPULATE_WORKFLOWS, };
|
|
16
|
-
export function workflowScopedTaskId(repo, number, workflowName, workflowId) {
|
|
17
|
-
// Reusable / recreatable per-target workspaces are keyed by (repo, issue)
|
|
18
|
-
// only — no run suffix — so a re-run lands on the same dir (reused for
|
|
19
|
-
// pr-review/pr-fix, recreated-from-base for build; see the two sets above).
|
|
20
|
-
if (number !== undefined &&
|
|
21
|
-
(PER_TARGET_REUSE_WORKFLOWS.has(workflowName) ||
|
|
22
|
-
PER_TARGET_RECREATE_WORKFLOWS.has(workflowName))) {
|
|
23
|
-
return `${repo}-${number}-${workflowName}`;
|
|
24
|
-
}
|
|
25
|
-
const suffix = workflowId.slice(0, 8);
|
|
26
|
-
return number !== undefined
|
|
27
|
-
? `${repo}-${number}-${workflowName}-${suffix}`
|
|
28
|
-
: `${repo}-${workflowName}-${suffix}`;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Resolve the `{{branch}}` template var (and the matching sandbox
|
|
32
|
-
* `prePopulateBranch`) for a dispatch.
|
|
33
|
-
*
|
|
34
|
-
* The branch a build-style run creates and pushes is `lastlight/N-<title-slug>`,
|
|
35
|
-
* derived from the issue title at **first** dispatch. Every later re-entry of the
|
|
36
|
-
* same run — an approval-gate resume, a retry — comes through `runSimpleWorkflow`
|
|
37
|
-
* again, but the resume event carries an **empty** issue title, so a naive
|
|
38
|
-
* recompute collapses to the `lastlight/N-issue-N` fallback. That drifted name
|
|
39
|
-
* is harmless for phases that `git push origin HEAD` (the persisted workspace is
|
|
40
|
-
* still on the real branch) but fatal for the PR phase, whose prompt feeds
|
|
41
|
-
* `{{branch}}` straight into `github_create_pull_request`'s `head` — GitHub 422s
|
|
42
|
-
* because the fallback ref was never pushed.
|
|
43
|
-
*
|
|
44
|
-
* So when reusing an existing run we pin to the branch stored on the run row at
|
|
45
|
-
* creation, mirroring `resume.ts`'s `stored.branch ?? …` precedence. `stored`
|
|
46
|
-
* is `undefined` for a fresh run (no row yet).
|
|
47
|
-
*/
|
|
48
|
-
export function resolveRunBranch(args) {
|
|
49
|
-
const { stored, requestPrePopulateBranch, issueNumber, issueTitle, workflowName } = args;
|
|
50
|
-
const storedBranch = typeof stored?.branch === "string" && stored.branch ? stored.branch : undefined;
|
|
51
|
-
const storedPrePopulate = typeof stored?.prePopulateBranch === "string" && stored.prePopulateBranch
|
|
52
|
-
? stored.prePopulateBranch
|
|
53
|
-
: undefined;
|
|
54
|
-
const branch = storedBranch
|
|
55
|
-
?? requestPrePopulateBranch
|
|
56
|
-
?? (issueNumber !== undefined
|
|
57
|
-
? `lastlight/${issueNumber}-${slugify(issueTitle || `issue-${issueNumber}`)}`
|
|
58
|
-
: `lastlight/${workflowName}`);
|
|
59
|
-
// Pre-populate (clone into the sandbox, cwd = repo root) for the workflows in
|
|
60
|
-
// PREPOPULATE_SYNTH_WORKFLOWS even though they synthesize a not-yet-pushed
|
|
61
|
-
// branch — see that const's doc comment for why (the verify/qa-test harvest
|
|
62
|
-
// fix in particular).
|
|
63
|
-
const prePopulateBranch = storedPrePopulate
|
|
64
|
-
?? requestPrePopulateBranch
|
|
65
|
-
?? (PREPOPULATE_SYNTH_WORKFLOWS.has(workflowName) ? branch : undefined);
|
|
66
|
-
return { branch, prePopulateBranch };
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Run a named agent workflow against a target.
|
|
70
|
-
*
|
|
71
|
-
* If a workflow_run row already exists for this trigger, we reuse it and let
|
|
72
|
-
* the runner's definition-driven resume pick up after the last completed
|
|
73
|
-
* phase — including the paused/approved/rejected paths. Otherwise we create a
|
|
74
|
-
* fresh row so the dashboard sees it immediately.
|
|
75
|
-
*/
|
|
76
|
-
export async function runSimpleWorkflow(workflowName, request, config, callbacks, db, models, approvalConfig, bootstrapLabel = "lastlight:bootstrap", variants) {
|
|
77
|
-
// Kill switch — if an admin has disabled this workflow in the dashboard,
|
|
78
|
-
// skip every trigger source (cron, webhooks, mentions, Slack) without
|
|
79
|
-
// creating a workflow_runs row. Returning success=true keeps callers
|
|
80
|
-
// (router, cron tick, etc.) from treating this as an error.
|
|
81
|
-
if (!db.isWorkflowEnabled(workflowName)) {
|
|
82
|
-
console.log(`[workflow] skipped "${workflowName}" — disabled in admin dashboard`);
|
|
83
|
-
return { success: true, phases: [] };
|
|
84
|
-
}
|
|
85
|
-
const definition = getWorkflow(workflowName);
|
|
86
|
-
const { owner, repo, issueNumber, prNumber } = request;
|
|
87
|
-
const notify = callbacks.postComment || (async () => { });
|
|
88
|
-
// Identify the trigger uniquely. Issue/PR-scoped workflows include the
|
|
89
|
-
// number; repo-scoped workflows (e.g. health) just identify by repo+name;
|
|
90
|
-
// Slack-initiated runs pass an explicit `slack:*` id for thread scoping.
|
|
91
|
-
const number = issueNumber ?? prNumber;
|
|
92
|
-
const triggerId = request.triggerId
|
|
93
|
-
?? (number !== undefined
|
|
94
|
-
? `${owner}/${repo}#${number}`
|
|
95
|
-
: `${owner}/${repo}::${workflowName}`);
|
|
96
|
-
// When the dispatcher passes `prePopulateBranch` (set for pr-review /
|
|
97
|
-
// pr-fix from the actual PR head ref), use that as the `branch` template
|
|
98
|
-
// var too — the agent's workspace is going to be checked out at that
|
|
99
|
-
// ref, so the prompt should reflect reality rather than a lastlight/N-slug
|
|
100
|
-
// name that doesn't exist. Build-style workflows still get the synthesized
|
|
101
|
-
// lastlight/N-slug branch they create themselves.
|
|
102
|
-
// `let`, not `const`: when we reuse an existing run below the resolution is
|
|
103
|
-
// redone with the run's stored context so the branch can't drift off the
|
|
104
|
-
// already-pushed name on resume — see `resolveRunBranch`.
|
|
105
|
-
let { branch, prePopulateBranch: effectivePrePopulateBranch } = resolveRunBranch({
|
|
106
|
-
requestPrePopulateBranch: request.prePopulateBranch,
|
|
107
|
-
issueNumber: number,
|
|
108
|
-
issueTitle: request.issueTitle,
|
|
109
|
-
workflowName,
|
|
110
|
-
});
|
|
111
|
-
// ── Resume handling ────────────────────────────────────────────────────────
|
|
112
|
-
//
|
|
113
|
-
// If a workflow_run already exists for this trigger, reuse its id. The
|
|
114
|
-
// runner re-runs from the top and the executions ledger (`shouldRunPhase`)
|
|
115
|
-
// skips already-completed phases — no per-workflow branching needed.
|
|
116
|
-
// Only reuse a workflow_run row when the existing run is still live
|
|
117
|
-
// (running/paused). `getWorkflowRunByTrigger` already filters out
|
|
118
|
-
// completed rows — a fresh re-trigger for a succeeded run falls through
|
|
119
|
-
// to the `else` branch, creating a new workflow_run_id and a new set of
|
|
120
|
-
// dedup-scoped executions.
|
|
121
|
-
let workflowId;
|
|
122
|
-
let taskId;
|
|
123
|
-
let issueDir;
|
|
124
|
-
const existingRun = db.runs.getByTrigger(triggerId);
|
|
125
|
-
if (existingRun && existingRun.workflowName === workflowName) {
|
|
126
|
-
workflowId = existingRun.id;
|
|
127
|
-
const stored = (existingRun.context || {});
|
|
128
|
-
taskId = stored.taskId ||
|
|
129
|
-
workflowScopedTaskId(repo, number, workflowName, workflowId);
|
|
130
|
-
// Recover issueDir from stored context so resumed runs use the same
|
|
131
|
-
// workspace path as the original.
|
|
132
|
-
issueDir = stored.issueDir
|
|
133
|
-
|| `.lastlight/${buildAssetIssueKey(workflowName, number, workflowId)}`;
|
|
134
|
-
// Re-resolve the branch with the run's stored context. A resume event (e.g.
|
|
135
|
-
// an approval response) carries an empty issue title, so the fresh
|
|
136
|
-
// computation above drifts to the `lastlight/N-issue-N` fallback — but the
|
|
137
|
-
// executor already pushed under the original title-slug name. Pinning to the
|
|
138
|
-
// stored branch keeps every re-entered phase's `{{branch}}` correct, most
|
|
139
|
-
// critically the PR phase's `head:` ref (otherwise GitHub 422s on create).
|
|
140
|
-
({ branch, prePopulateBranch: effectivePrePopulateBranch } = resolveRunBranch({
|
|
141
|
-
stored,
|
|
142
|
-
requestPrePopulateBranch: request.prePopulateBranch,
|
|
143
|
-
issueNumber: number,
|
|
144
|
-
issueTitle: request.issueTitle,
|
|
145
|
-
workflowName,
|
|
146
|
-
}));
|
|
147
|
-
const handled = await handleExistingRun(existingRun, definition, notify, db);
|
|
148
|
-
if (handled)
|
|
149
|
-
return handled;
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
workflowId = randomUUID();
|
|
153
|
-
taskId = workflowScopedTaskId(repo, number, workflowName, workflowId);
|
|
154
|
-
// Issue-scoped workflows share a dir by issue number; non-issue
|
|
155
|
-
// workflows (explore, health, etc.) get a run-scoped dir so
|
|
156
|
-
// concurrent sessions never overlap.
|
|
157
|
-
issueDir = `.lastlight/${buildAssetIssueKey(workflowName, number, workflowId)}`;
|
|
158
|
-
db.runs.createRun({
|
|
159
|
-
id: workflowId,
|
|
160
|
-
workflowName,
|
|
161
|
-
triggerId,
|
|
162
|
-
repo,
|
|
163
|
-
issueNumber: issueNumber ?? prNumber,
|
|
164
|
-
currentPhase: definition.phases[0]?.name || "phase_0",
|
|
165
|
-
status: "running",
|
|
166
|
-
context: {
|
|
167
|
-
kind: definition.kind,
|
|
168
|
-
owner,
|
|
169
|
-
branch,
|
|
170
|
-
taskId,
|
|
171
|
-
issueDir,
|
|
172
|
-
prePopulateBranch: effectivePrePopulateBranch,
|
|
173
|
-
models: models,
|
|
174
|
-
variants: variants,
|
|
175
|
-
...request.extra,
|
|
176
|
-
},
|
|
177
|
-
startedAt: new Date().toISOString(),
|
|
178
|
-
});
|
|
179
|
-
console.log(`[simple] Created workflow run ${workflowId} (${workflowName})`);
|
|
180
|
-
}
|
|
181
|
-
// Surface the run id to the dispatch layer as soon as it's known (either
|
|
182
|
-
// fresh or reused). Fire-and-forget so a slow/broken downstream hook can't
|
|
183
|
-
// stall the workflow.
|
|
184
|
-
if (callbacks.onRunStart) {
|
|
185
|
-
callbacks.onRunStart(workflowId).catch((err) => {
|
|
186
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
187
|
-
console.warn(`[simple] onRunStart callback threw: ${msg}`);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
// ── Seed the in-place progress checklist ───────────────────────────────────
|
|
191
|
-
//
|
|
192
|
-
// For workflows that opt into `status_checklist`, build the task-list model
|
|
193
|
-
// from the definition's phases and publish the initial surface (one GitHub
|
|
194
|
-
// comment / one Slack message that subsequent phases edit in place). On a
|
|
195
|
-
// resumed run we re-seed the SAME surface (the transport re-attaches to the
|
|
196
|
-
// stored comment id / message ts) and mark already-completed phases done.
|
|
197
|
-
if (callbacks.reporter && definition.status_checklist) {
|
|
198
|
-
const completed = new Set((existingRun?.phaseHistory ?? []).map((h) => h.phase));
|
|
199
|
-
const model = buildProgressModel(definition, {
|
|
200
|
-
workflowName,
|
|
201
|
-
number,
|
|
202
|
-
issueTitle: request.issueTitle,
|
|
203
|
-
owner,
|
|
204
|
-
repo,
|
|
205
|
-
branch,
|
|
206
|
-
completed,
|
|
207
|
-
runUrl: runDashboardUrl(callbacks.publicUrl, workflowId, workflowName),
|
|
208
|
-
});
|
|
209
|
-
await callbacks.reporter.start(model).catch((err) => {
|
|
210
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
211
|
-
console.warn(`[simple] reporter.start threw: ${msg}`);
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
// ── Build template context ─────────────────────────────────────────────────
|
|
215
|
-
//
|
|
216
|
-
// The context snapshot is the agent's primary view of the task. All
|
|
217
|
-
// user-provided text is wrapped in <<<USER_CONTENT_UNTRUSTED>>> markers so
|
|
218
|
-
// the agent — anchored by agent-context/security.md — treats them as data
|
|
219
|
-
// rather than instructions. The trigger metadata (sender, branch, issue
|
|
220
|
-
// ref) sits outside the wrappers so identity is established out-of-band.
|
|
221
|
-
//
|
|
222
|
-
// For build/pr-fix/explore workflows the dispatch path (src/index.ts)
|
|
223
|
-
// pre-fetches the real issue body + full comment thread and stitches them
|
|
224
|
-
// into request.extra.combinedContext (one screening call). For everything
|
|
225
|
-
// else we fall back to whatever the envelope carried.
|
|
226
|
-
const combinedContext = request.extra?.combinedContext || "";
|
|
227
|
-
const issueRef = `${owner}/${repo}${issueNumber ? `#${issueNumber}` : ""}`;
|
|
228
|
-
const hasAnyUserContent = !!(combinedContext || request.issueBody || request.commentBody);
|
|
229
|
-
const contextSnapshot = hasAnyUserContent
|
|
230
|
-
? [
|
|
231
|
-
`Repo: ${issueRef}`,
|
|
232
|
-
`Issue title: ${request.issueTitle || "(none)"}`,
|
|
233
|
-
request.commentBody
|
|
234
|
-
? `Triggering comment:\n${wrapUntrusted(request.commentBody, { source: "github-comment", author: request.sender })}`
|
|
235
|
-
: "",
|
|
236
|
-
`Requested by: ${request.sender}`,
|
|
237
|
-
`Branch: ${branch}`,
|
|
238
|
-
combinedContext
|
|
239
|
-
? `Issue body and full thread:\n${wrapUntrusted(combinedContext, { source: "github-issue-thread" })}`
|
|
240
|
-
: request.issueBody
|
|
241
|
-
? `Issue body:\n${wrapUntrusted(request.issueBody, { source: "github-issue-body" })}`
|
|
242
|
-
: "",
|
|
243
|
-
]
|
|
244
|
-
.filter(Boolean)
|
|
245
|
-
.join("\n\n")
|
|
246
|
-
: "";
|
|
247
|
-
const ctx = {
|
|
248
|
-
owner,
|
|
249
|
-
repo,
|
|
250
|
-
// A PR is its own GitHub number, so for PR-scoped workflows (pr-review /
|
|
251
|
-
// pr-fix, triggered by a `pr.*` webhook that carries only `prNumber`)
|
|
252
|
-
// fall back to it — otherwise `issueNumber` is 0 and the `post-review`
|
|
253
|
-
// action can't find the PR to post against. Mirrors the DB run row and
|
|
254
|
-
// taskId, both of which already key off `issueNumber ?? prNumber`.
|
|
255
|
-
issueNumber: issueNumber ?? prNumber ?? 0,
|
|
256
|
-
// Surface the PR number explicitly too; `post-review` prefers it over
|
|
257
|
-
// `issueNumber`, and PR-scoped prompts can reference `{{prNumber}}`.
|
|
258
|
-
prNumber,
|
|
259
|
-
issueTitle: request.issueTitle || "",
|
|
260
|
-
issueBody: request.issueBody || "",
|
|
261
|
-
issueLabels: request.issueLabels || [],
|
|
262
|
-
commentBody: request.commentBody || "",
|
|
263
|
-
sender: request.sender,
|
|
264
|
-
// The bot's `@mention` handle (e.g. `@last-light`), for approval-gate and
|
|
265
|
-
// command help strings in workflow YAML — `{{botMention}} approve`.
|
|
266
|
-
botMention: `@${getBotName()}`,
|
|
267
|
-
branch,
|
|
268
|
-
taskId,
|
|
269
|
-
issueDir,
|
|
270
|
-
// True only in server mode — prompts gate their `git add .lastlight/ &&
|
|
271
|
-
// commit` behind `{{#if !externalizeArtifacts}}` so the handoff docs are
|
|
272
|
-
// never committed into the target repo (they're harvested to the server
|
|
273
|
-
// store instead). Absent/false ⇒ repo behaviour (commit the docs).
|
|
274
|
-
externalizeArtifacts: config.buildAssets === "server",
|
|
275
|
-
// Dashboard base URL for the {{artifactUrl}} helper (server-mode doc links).
|
|
276
|
-
publicUrl: callbacks.publicUrl,
|
|
277
|
-
// Public, unauthenticated, image-only base URL for inline screenshot embeds
|
|
278
|
-
// in the browser-QA comment (so GitHub's image proxy can fetch them without
|
|
279
|
-
// a login). The agent appends `/<name>.png` per screenshot it saves. Empty
|
|
280
|
-
// when no PUBLIC_URL is configured — the prompt then falls back to
|
|
281
|
-
// filename-only references via `{{#if !artifactBaseUrl}}`. issueKey is
|
|
282
|
-
// issueDir minus the `.lastlight/` prefix.
|
|
283
|
-
artifactBaseUrl: callbacks.publicUrl
|
|
284
|
-
? `${String(callbacks.publicUrl).replace(/\/+$/, "")}/admin/api/public/artifacts/${owner}/${repo}/${issueDir.replace(/^\.lastlight\//, "")}`
|
|
285
|
-
: "",
|
|
286
|
-
bootstrapLabel,
|
|
287
|
-
contextSnapshot,
|
|
288
|
-
// Forwarded to the executor (via gitSandboxAccessForWorkflow) so the
|
|
289
|
-
// harness pre-clones this branch into the sandbox workspace before
|
|
290
|
-
// the agent starts. Stored on the workflow_run row above; also lives
|
|
291
|
-
// on ctx so the runner can read it without an extra DB lookup.
|
|
292
|
-
prePopulateBranch: effectivePrePopulateBranch,
|
|
293
|
-
models: models,
|
|
294
|
-
// Reasoning-effort overrides per phase. Empty/undefined entries skip
|
|
295
|
-
// the --variant flag (model uses its default effort).
|
|
296
|
-
variants: variants,
|
|
297
|
-
// Slack-initiated runs need the runner to pause/resume on the thread id,
|
|
298
|
-
// not on owner/repo#N. Passing the override through here keeps the
|
|
299
|
-
// runner's triggerId derivation in one place.
|
|
300
|
-
triggerIdOverride: request.triggerId,
|
|
301
|
-
// Extra workflow-specific args (e.g. mode: scan from cron, or the PR fix
|
|
302
|
-
// payload). These become top-level ctx keys so prompt templates can read
|
|
303
|
-
// them directly via {{failedChecks}} etc.
|
|
304
|
-
...(request.extra || {}),
|
|
305
|
-
};
|
|
306
|
-
// In server mode, tag the run's config with its artifact identity so the
|
|
307
|
-
// executor's stage-in/harvest seam can locate this run's docs in the store
|
|
308
|
-
// at `<buildAssetsDir>/<owner>/<repo>/<issueKey>/`. issueKey is issueDir
|
|
309
|
-
// without the `.lastlight/` prefix, so it tracks however issueDir was formed
|
|
310
|
-
// (fresh derivation or recovered-from-context on resume).
|
|
311
|
-
const runConfig = config.buildAssets === "server"
|
|
312
|
-
? {
|
|
313
|
-
...config,
|
|
314
|
-
buildAssetsKey: {
|
|
315
|
-
owner,
|
|
316
|
-
repo,
|
|
317
|
-
issueKey: issueDir.replace(/^\.lastlight\//, ""),
|
|
318
|
-
},
|
|
319
|
-
}
|
|
320
|
-
: config;
|
|
321
|
-
try {
|
|
322
|
-
const result = await runWorkflow(definition, ctx, runConfig, callbacks, db, models, approvalConfig, workflowId, variants);
|
|
323
|
-
if (result.success && !result.paused) {
|
|
324
|
-
db.runs.finishRun(workflowId, "succeeded");
|
|
325
|
-
}
|
|
326
|
-
else if (!result.success && !result.paused) {
|
|
327
|
-
db.runs.finishRun(workflowId, "failed", {
|
|
328
|
-
error: result.phases.find((p) => !p.success)?.error || "workflow failed",
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
return result;
|
|
332
|
-
}
|
|
333
|
-
catch (err) {
|
|
334
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
335
|
-
db.runs.finishRun(workflowId, "failed", { error: msg });
|
|
336
|
-
throw err;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Short-circuit for a workflow run that already has state. Returns a
|
|
341
|
-
* WorkflowResult to return directly (already complete / rejected / still
|
|
342
|
-
* paused), or `null` to continue into `runWorkflow` for normal resume.
|
|
343
|
-
*/
|
|
344
|
-
async function handleExistingRun(run, definition, notify, db) {
|
|
345
|
-
// Workflow already completed: currentPhase is a terminal set_phase marker
|
|
346
|
-
// (e.g. "complete") — i.e. not a declared phase, not a generated loop label
|
|
347
|
-
// (`*_fix_N` / `*_recheck_N` / `*_iter_N`), and not the synthetic
|
|
348
|
-
// "waiting_approval" pause marker. Don't re-run.
|
|
349
|
-
if (run.currentPhase &&
|
|
350
|
-
run.currentPhase !== "waiting_approval" &&
|
|
351
|
-
!definition.phases.some((p) => p.name === run.currentPhase) &&
|
|
352
|
-
PhaseRef.parse(run.currentPhase).kind === "phase") {
|
|
353
|
-
await notify(`Workflow \`${run.workflowName}\` is already complete for this trigger.`);
|
|
354
|
-
return {
|
|
355
|
-
success: true,
|
|
356
|
-
phases: [{ phase: "resume", success: true, output: "Already complete" }],
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
// Paused awaiting approval — see if a human has responded.
|
|
360
|
-
if (run.status === "paused" && run.currentPhase === "waiting_approval") {
|
|
361
|
-
const pendingApproval = db.approvals.getPendingForWorkflow(run.id);
|
|
362
|
-
if (pendingApproval?.status === "approved") {
|
|
363
|
-
// Resume is ledger-driven: the runner re-runs from the top and every
|
|
364
|
-
// completed phase skips via `shouldRunPhase` (the executions ledger).
|
|
365
|
-
// No currentPhase manipulation is needed — for an approve gate the
|
|
366
|
-
// gated phase is already `done` so the runner proceeds past it; for a
|
|
367
|
-
// reply gate the loop node resumes from `scratch.iteration`.
|
|
368
|
-
console.log(`[simple] ${pendingApproval.kind === "reply" ? "Reply" : "Approval"} received for gate ${pendingApproval.gate} — resuming ${run.workflowName}`);
|
|
369
|
-
db.runs.setRunning(run.id);
|
|
370
|
-
if (pendingApproval.kind !== "reply") {
|
|
371
|
-
await notify(`**Approval received** — resuming \`${run.workflowName}\`.`);
|
|
372
|
-
}
|
|
373
|
-
return null; // fall through to runWorkflow
|
|
374
|
-
}
|
|
375
|
-
else if (pendingApproval?.status === "rejected") {
|
|
376
|
-
const reason = pendingApproval.response || "no reason given";
|
|
377
|
-
db.runs.finishRun(run.id, "failed", { error: `Rejected: ${reason}` });
|
|
378
|
-
await notify(`Workflow \`${run.workflowName}\` was rejected. Reason: ${reason}`);
|
|
379
|
-
return {
|
|
380
|
-
success: false,
|
|
381
|
-
phases: [{ phase: "rejected", success: false, output: `Rejected: ${reason}` }],
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
await notify(`Workflow \`${run.workflowName}\` is paused, awaiting approval.`);
|
|
386
|
-
return { success: true, phases: [], paused: true };
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
// Normal resume — the runner's definition-driven resume takes over.
|
|
390
|
-
console.log(`[simple] Resuming ${run.workflowName} for ${run.triggerId} (last phase: ${run.currentPhase})`);
|
|
391
|
-
return null;
|
|
392
|
-
}
|
|
393
|
-
//# sourceMappingURL=simple.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../../src/workflows/simple.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-target sandbox-workspace provisioning policy — which workflows key their
|
|
3
|
-
* workspace by (repo, issue/PR) and how a re-run treats an existing checkout.
|
|
4
|
-
*
|
|
5
|
-
* This is a leaf module (no imports of the runner or the simple entrypoint) so
|
|
6
|
-
* both `simple.ts` (taskId keying) and `runner.ts` (`gitSandboxAccessForWorkflow`)
|
|
7
|
-
* can read the same source of truth without an import cycle. `simple.ts`
|
|
8
|
-
* re-exports these for existing callers (e.g. `src/index.ts`).
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Workflows whose workspace is keyed by **(repo, PR)** rather than per-run.
|
|
12
|
-
* For these the taskId drops the run-id suffix so re-reviews of the same PR
|
|
13
|
-
* (push → `synchronize`, cron PR-review fanout) reuse one sandbox dir — a
|
|
14
|
-
* warm `node_modules` + an incremental `git fetch` instead of a fresh
|
|
15
|
-
* 1.3G clone + full install each time, and N dirs/PR collapse to 1 (issue
|
|
16
|
-
* #107, cutting the #106 churn at its source). Concurrency is held off by
|
|
17
|
-
* the dispatcher's `isRunning(skill, triggerId)` guard plus
|
|
18
|
-
* `runs.getByTrigger` reuse — two runs never share the dir live; the
|
|
19
|
-
* cross-run refresh in `prePopulateWorkspace` resets it cleanly between them.
|
|
20
|
-
* `build` is handled by `PER_TARGET_RECREATE_WORKFLOWS` instead — it must not
|
|
21
|
-
* *refresh* a stale checkout (that would reset onto the old feature branch);
|
|
22
|
-
* it recreates the workspace from the default branch.
|
|
23
|
-
*/
|
|
24
|
-
export declare const PER_TARGET_REUSE_WORKFLOWS: Set<string>;
|
|
25
|
-
/**
|
|
26
|
-
* Workflows whose per-target workspace is **recreated from the default branch**
|
|
27
|
-
* on a fresh run rather than refreshed onto an existing feature branch. Like
|
|
28
|
-
* `PER_TARGET_REUSE_WORKFLOWS`, these key the taskId by (repo, issue) only (no
|
|
29
|
-
* run-id suffix) so a re-run lands on the same dir — but a *different*-run
|
|
30
|
-
* marker triggers a delete + fresh clone off the default branch, not a
|
|
31
|
-
* `git fetch`/reset of the (stale) feature branch. This makes an incomplete
|
|
32
|
-
* `build` disposable: re-triggering it starts again from current `main`
|
|
33
|
-
* (issue #153). A genuine *resume* of the same run (approval gate) still
|
|
34
|
-
* preserves the workspace via the same-run marker — the architect's `plan.md`
|
|
35
|
-
* survives. Concurrency is held off by the dispatcher's
|
|
36
|
-
* `isRunning(skill, triggerId)` guard, so the delete only ever hits a leftover
|
|
37
|
-
* from a finished/abandoned run.
|
|
38
|
-
*/
|
|
39
|
-
export declare const PER_TARGET_RECREATE_WORKFLOWS: Set<string>;
|
|
40
|
-
/**
|
|
41
|
-
* Workflows that synthesize their own `lastlight/N-slug` branch (which doesn't
|
|
42
|
-
* exist on the remote at dispatch time) yet should still pre-populate the
|
|
43
|
-
* sandbox: the agent's cwd becomes the repo root (no `git clone`/`cd`), and —
|
|
44
|
-
* for the read-only `verify`/`qa-test` runs — server-mode artifacts the agent
|
|
45
|
-
* writes to `.lastlight/<key>/` (e.g. browser-QA screenshots) land where
|
|
46
|
-
* `serverArtifacts()` harvests them instead of being orphaned a level up.
|
|
47
|
-
* `build` was the original member; verify/qa-test were added for the harvest
|
|
48
|
-
* fix, and `demo` for the same reason (its `demo.mp4` is written under
|
|
49
|
-
* `.lastlight/<key>/` and harvested into the Artifacts store). For a fresh
|
|
50
|
-
* (issue-scoped) dispatch the dispatcher leaves `prePopulateBranch` unset and
|
|
51
|
-
* the missing-branch fallback in `prePopulateWorkspace` clones the default
|
|
52
|
-
* branch — correct for `build`/`demo`, which *create* the synth branch off the
|
|
53
|
-
* default. But when the *same* workflow runs against an existing PR, the synth
|
|
54
|
-
* `lastlight/<prNumber>-<title-slug>` name won't match the PR's real head ref
|
|
55
|
-
* (named after the originating issue), so the fallback would clone the default
|
|
56
|
-
* branch and test/demo code that lacks the PR — see
|
|
57
|
-
* `PR_HEADREF_PREPOPULATE_WORKFLOWS`.
|
|
58
|
-
*/
|
|
59
|
-
export declare const PREPOPULATE_SYNTH_WORKFLOWS: Set<string>;
|
|
60
|
-
/**
|
|
61
|
-
* The subset of PR-scoped read workflows the dispatcher pins to the PR's *real*
|
|
62
|
-
* head ref (via `getPullRequest(...).head.ref`) before pre-populating, instead
|
|
63
|
-
* of letting them fall back to the synthesized `lastlight/N-<title-slug>` name.
|
|
64
|
-
* Each of these is meaningful only against an existing PR, and the synth name
|
|
65
|
-
* never matches the PR's actual branch (which is named after the originating
|
|
66
|
-
* issue, e.g. `lastlight/14-…` for a PR #15). Without this pinning:
|
|
67
|
-
* - `qa-test` / `verify` QA the *base* branch and report the PR's feature
|
|
68
|
-
* missing — a false-negative result.
|
|
69
|
-
* - `demo`'s "after" collapses onto the default branch, matching "before".
|
|
70
|
-
* `pr-fix` is handled separately (it plumbs `branch` through context for the
|
|
71
|
-
* architect/executor to push to). See the resolution block in
|
|
72
|
-
* `dispatchWorkflow` (src/index.ts).
|
|
73
|
-
*/
|
|
74
|
-
export declare const PR_HEADREF_PREPOPULATE_WORKFLOWS: Set<string>;
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-target sandbox-workspace provisioning policy — which workflows key their
|
|
3
|
-
* workspace by (repo, issue/PR) and how a re-run treats an existing checkout.
|
|
4
|
-
*
|
|
5
|
-
* This is a leaf module (no imports of the runner or the simple entrypoint) so
|
|
6
|
-
* both `simple.ts` (taskId keying) and `runner.ts` (`gitSandboxAccessForWorkflow`)
|
|
7
|
-
* can read the same source of truth without an import cycle. `simple.ts`
|
|
8
|
-
* re-exports these for existing callers (e.g. `src/index.ts`).
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Workflows whose workspace is keyed by **(repo, PR)** rather than per-run.
|
|
12
|
-
* For these the taskId drops the run-id suffix so re-reviews of the same PR
|
|
13
|
-
* (push → `synchronize`, cron PR-review fanout) reuse one sandbox dir — a
|
|
14
|
-
* warm `node_modules` + an incremental `git fetch` instead of a fresh
|
|
15
|
-
* 1.3G clone + full install each time, and N dirs/PR collapse to 1 (issue
|
|
16
|
-
* #107, cutting the #106 churn at its source). Concurrency is held off by
|
|
17
|
-
* the dispatcher's `isRunning(skill, triggerId)` guard plus
|
|
18
|
-
* `runs.getByTrigger` reuse — two runs never share the dir live; the
|
|
19
|
-
* cross-run refresh in `prePopulateWorkspace` resets it cleanly between them.
|
|
20
|
-
* `build` is handled by `PER_TARGET_RECREATE_WORKFLOWS` instead — it must not
|
|
21
|
-
* *refresh* a stale checkout (that would reset onto the old feature branch);
|
|
22
|
-
* it recreates the workspace from the default branch.
|
|
23
|
-
*/
|
|
24
|
-
export const PER_TARGET_REUSE_WORKFLOWS = new Set(["pr-review", "pr-fix"]);
|
|
25
|
-
/**
|
|
26
|
-
* Workflows whose per-target workspace is **recreated from the default branch**
|
|
27
|
-
* on a fresh run rather than refreshed onto an existing feature branch. Like
|
|
28
|
-
* `PER_TARGET_REUSE_WORKFLOWS`, these key the taskId by (repo, issue) only (no
|
|
29
|
-
* run-id suffix) so a re-run lands on the same dir — but a *different*-run
|
|
30
|
-
* marker triggers a delete + fresh clone off the default branch, not a
|
|
31
|
-
* `git fetch`/reset of the (stale) feature branch. This makes an incomplete
|
|
32
|
-
* `build` disposable: re-triggering it starts again from current `main`
|
|
33
|
-
* (issue #153). A genuine *resume* of the same run (approval gate) still
|
|
34
|
-
* preserves the workspace via the same-run marker — the architect's `plan.md`
|
|
35
|
-
* survives. Concurrency is held off by the dispatcher's
|
|
36
|
-
* `isRunning(skill, triggerId)` guard, so the delete only ever hits a leftover
|
|
37
|
-
* from a finished/abandoned run.
|
|
38
|
-
*/
|
|
39
|
-
export const PER_TARGET_RECREATE_WORKFLOWS = new Set(["build"]);
|
|
40
|
-
/**
|
|
41
|
-
* Workflows that synthesize their own `lastlight/N-slug` branch (which doesn't
|
|
42
|
-
* exist on the remote at dispatch time) yet should still pre-populate the
|
|
43
|
-
* sandbox: the agent's cwd becomes the repo root (no `git clone`/`cd`), and —
|
|
44
|
-
* for the read-only `verify`/`qa-test` runs — server-mode artifacts the agent
|
|
45
|
-
* writes to `.lastlight/<key>/` (e.g. browser-QA screenshots) land where
|
|
46
|
-
* `serverArtifacts()` harvests them instead of being orphaned a level up.
|
|
47
|
-
* `build` was the original member; verify/qa-test were added for the harvest
|
|
48
|
-
* fix, and `demo` for the same reason (its `demo.mp4` is written under
|
|
49
|
-
* `.lastlight/<key>/` and harvested into the Artifacts store). For a fresh
|
|
50
|
-
* (issue-scoped) dispatch the dispatcher leaves `prePopulateBranch` unset and
|
|
51
|
-
* the missing-branch fallback in `prePopulateWorkspace` clones the default
|
|
52
|
-
* branch — correct for `build`/`demo`, which *create* the synth branch off the
|
|
53
|
-
* default. But when the *same* workflow runs against an existing PR, the synth
|
|
54
|
-
* `lastlight/<prNumber>-<title-slug>` name won't match the PR's real head ref
|
|
55
|
-
* (named after the originating issue), so the fallback would clone the default
|
|
56
|
-
* branch and test/demo code that lacks the PR — see
|
|
57
|
-
* `PR_HEADREF_PREPOPULATE_WORKFLOWS`.
|
|
58
|
-
*/
|
|
59
|
-
export const PREPOPULATE_SYNTH_WORKFLOWS = new Set(["build", "verify", "qa-test", "demo"]);
|
|
60
|
-
/**
|
|
61
|
-
* The subset of PR-scoped read workflows the dispatcher pins to the PR's *real*
|
|
62
|
-
* head ref (via `getPullRequest(...).head.ref`) before pre-populating, instead
|
|
63
|
-
* of letting them fall back to the synthesized `lastlight/N-<title-slug>` name.
|
|
64
|
-
* Each of these is meaningful only against an existing PR, and the synth name
|
|
65
|
-
* never matches the PR's actual branch (which is named after the originating
|
|
66
|
-
* issue, e.g. `lastlight/14-…` for a PR #15). Without this pinning:
|
|
67
|
-
* - `qa-test` / `verify` QA the *base* branch and report the PR's feature
|
|
68
|
-
* missing — a false-negative result.
|
|
69
|
-
* - `demo`'s "after" collapses onto the default branch, matching "before".
|
|
70
|
-
* `pr-fix` is handled separately (it plumbs `branch` through context for the
|
|
71
|
-
* architect/executor to push to). See the resolution block in
|
|
72
|
-
* `dispatchWorkflow` (src/index.ts).
|
|
73
|
-
*/
|
|
74
|
-
export const PR_HEADREF_PREPOPULATE_WORKFLOWS = new Set([
|
|
75
|
-
"pr-review",
|
|
76
|
-
"demo",
|
|
77
|
-
"qa-test",
|
|
78
|
-
"verify",
|
|
79
|
-
]);
|
|
80
|
-
//# sourceMappingURL=target-policy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"target-policy.js","sourceRoot":"","sources":["../../src/workflows/target-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3F;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAC;IACtD,WAAW;IACX,MAAM;IACN,SAAS;IACT,QAAQ;CACT,CAAC,CAAC"}
|