night-orch 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -0
- package/dist/cli/commands/cleanup.d.ts +14 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/cleanup.js +62 -0
- package/dist/cli/commands/cleanup.js.map +1 -0
- package/dist/cli/commands/continue.d.ts +9 -0
- package/dist/cli/commands/continue.d.ts.map +1 -0
- package/dist/cli/commands/continue.js +70 -0
- package/dist/cli/commands/continue.js.map +1 -0
- package/dist/cli/commands/cost-override.d.ts +11 -0
- package/dist/cli/commands/cost-override.d.ts.map +1 -0
- package/dist/cli/commands/cost-override.js +76 -0
- package/dist/cli/commands/cost-override.js.map +1 -0
- package/dist/cli/commands/daily-cost-override.d.ts +11 -0
- package/dist/cli/commands/daily-cost-override.d.ts.map +1 -0
- package/dist/cli/commands/daily-cost-override.js +71 -0
- package/dist/cli/commands/daily-cost-override.js.map +1 -0
- package/dist/cli/commands/delete-entry.d.ts +12 -0
- package/dist/cli/commands/delete-entry.d.ts.map +1 -0
- package/dist/cli/commands/delete-entry.js +68 -0
- package/dist/cli/commands/delete-entry.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +9 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +227 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +73 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/labels-init.d.ts +9 -0
- package/dist/cli/commands/labels-init.d.ts.map +1 -0
- package/dist/cli/commands/labels-init.js +52 -0
- package/dist/cli/commands/labels-init.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +9 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +52 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/monitoring-init.d.ts +2 -0
- package/dist/cli/commands/monitoring-init.d.ts.map +1 -0
- package/dist/cli/commands/monitoring-init.js +43 -0
- package/dist/cli/commands/monitoring-init.js.map +1 -0
- package/dist/cli/commands/notify-test.d.ts +9 -0
- package/dist/cli/commands/notify-test.d.ts.map +1 -0
- package/dist/cli/commands/notify-test.js +41 -0
- package/dist/cli/commands/notify-test.js.map +1 -0
- package/dist/cli/commands/rebase.d.ts +9 -0
- package/dist/cli/commands/rebase.d.ts.map +1 -0
- package/dist/cli/commands/rebase.js +63 -0
- package/dist/cli/commands/rebase.js.map +1 -0
- package/dist/cli/commands/retry.d.ts +14 -0
- package/dist/cli/commands/retry.d.ts.map +1 -0
- package/dist/cli/commands/retry.js +52 -0
- package/dist/cli/commands/retry.js.map +1 -0
- package/dist/cli/commands/run-once.d.ts +9 -0
- package/dist/cli/commands/run-once.d.ts.map +1 -0
- package/dist/cli/commands/run-once.js +62 -0
- package/dist/cli/commands/run-once.js.map +1 -0
- package/dist/cli/commands/run.d.ts +9 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +142 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +14 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +51 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/settings.d.ts +10 -0
- package/dist/cli/commands/settings.d.ts.map +1 -0
- package/dist/cli/commands/settings.js +100 -0
- package/dist/cli/commands/settings.js.map +1 -0
- package/dist/cli/commands/status.d.ts +8 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +153 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +9 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +60 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/update.d.ts +4 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +29 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +9 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +56 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/commands/web.d.ts +16 -0
- package/dist/cli/commands/web.d.ts.map +1 -0
- package/dist/cli/commands/web.js +206 -0
- package/dist/cli/commands/web.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +213 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init/detector.d.ts +7 -0
- package/dist/cli/init/detector.d.ts.map +1 -0
- package/dist/cli/init/detector.js +40 -0
- package/dist/cli/init/detector.js.map +1 -0
- package/dist/cli/init/templates.d.ts +10 -0
- package/dist/cli/init/templates.d.ts.map +1 -0
- package/dist/cli/init/templates.js +30 -0
- package/dist/cli/init/templates.js.map +1 -0
- package/dist/cli/tui/actions-bar.d.ts +21 -0
- package/dist/cli/tui/actions-bar.d.ts.map +1 -0
- package/dist/cli/tui/actions-bar.js +91 -0
- package/dist/cli/tui/actions-bar.js.map +1 -0
- package/dist/cli/tui/active-runs.d.ts +9 -0
- package/dist/cli/tui/active-runs.d.ts.map +1 -0
- package/dist/cli/tui/active-runs.js +23 -0
- package/dist/cli/tui/active-runs.js.map +1 -0
- package/dist/cli/tui/agent-stream.d.ts +10 -0
- package/dist/cli/tui/agent-stream.d.ts.map +1 -0
- package/dist/cli/tui/agent-stream.js +83 -0
- package/dist/cli/tui/agent-stream.js.map +1 -0
- package/dist/cli/tui/app.d.ts +40 -0
- package/dist/cli/tui/app.d.ts.map +1 -0
- package/dist/cli/tui/app.js +995 -0
- package/dist/cli/tui/app.js.map +1 -0
- package/dist/cli/tui/constants.d.ts +15 -0
- package/dist/cli/tui/constants.d.ts.map +1 -0
- package/dist/cli/tui/constants.js +102 -0
- package/dist/cli/tui/constants.js.map +1 -0
- package/dist/cli/tui/cost-bar.d.ts +10 -0
- package/dist/cli/tui/cost-bar.d.ts.map +1 -0
- package/dist/cli/tui/cost-bar.js +17 -0
- package/dist/cli/tui/cost-bar.js.map +1 -0
- package/dist/cli/tui/data.d.ts +56 -0
- package/dist/cli/tui/data.d.ts.map +1 -0
- package/dist/cli/tui/data.js +296 -0
- package/dist/cli/tui/data.js.map +1 -0
- package/dist/cli/tui/format.d.ts +11 -0
- package/dist/cli/tui/format.d.ts.map +1 -0
- package/dist/cli/tui/format.js +83 -0
- package/dist/cli/tui/format.js.map +1 -0
- package/dist/cli/tui/header.d.ts +16 -0
- package/dist/cli/tui/header.d.ts.map +1 -0
- package/dist/cli/tui/header.js +22 -0
- package/dist/cli/tui/header.js.map +1 -0
- package/dist/cli/tui/logs-view.d.ts +19 -0
- package/dist/cli/tui/logs-view.d.ts.map +1 -0
- package/dist/cli/tui/logs-view.js +63 -0
- package/dist/cli/tui/logs-view.js.map +1 -0
- package/dist/cli/tui/merge-queue-panel.d.ts +9 -0
- package/dist/cli/tui/merge-queue-panel.d.ts.map +1 -0
- package/dist/cli/tui/merge-queue-panel.js +14 -0
- package/dist/cli/tui/merge-queue-panel.js.map +1 -0
- package/dist/cli/tui/projects-view.d.ts +25 -0
- package/dist/cli/tui/projects-view.d.ts.map +1 -0
- package/dist/cli/tui/projects-view.js +145 -0
- package/dist/cli/tui/projects-view.js.map +1 -0
- package/dist/cli/tui/recent-runs.d.ts +9 -0
- package/dist/cli/tui/recent-runs.d.ts.map +1 -0
- package/dist/cli/tui/recent-runs.js +20 -0
- package/dist/cli/tui/recent-runs.js.map +1 -0
- package/dist/cli/tui/runs-view.d.ts +22 -0
- package/dist/cli/tui/runs-view.d.ts.map +1 -0
- package/dist/cli/tui/runs-view.js +48 -0
- package/dist/cli/tui/runs-view.js.map +1 -0
- package/dist/cli/tui/settings-view.d.ts +9 -0
- package/dist/cli/tui/settings-view.d.ts.map +1 -0
- package/dist/cli/tui/settings-view.js +21 -0
- package/dist/cli/tui/settings-view.js.map +1 -0
- package/dist/cli/tui/stats-view.d.ts +11 -0
- package/dist/cli/tui/stats-view.d.ts.map +1 -0
- package/dist/cli/tui/stats-view.js +48 -0
- package/dist/cli/tui/stats-view.js.map +1 -0
- package/dist/cli/tui/titles.d.ts +36 -0
- package/dist/cli/tui/titles.d.ts.map +1 -0
- package/dist/cli/tui/titles.js +50 -0
- package/dist/cli/tui/titles.js.map +1 -0
- package/dist/cli/tui/types.d.ts +10 -0
- package/dist/cli/tui/types.d.ts.map +1 -0
- package/dist/cli/tui/types.js +2 -0
- package/dist/cli/tui/types.js.map +1 -0
- package/dist/cli/tui/view-model.d.ts +20 -0
- package/dist/cli/tui/view-model.d.ts.map +1 -0
- package/dist/cli/tui/view-model.js +80 -0
- package/dist/cli/tui/view-model.js.map +1 -0
- package/dist/components/button/button.tui.d.ts +4 -0
- package/dist/components/button/button.tui.d.ts.map +1 -0
- package/dist/components/button/button.tui.js +16 -0
- package/dist/components/button/button.tui.js.map +1 -0
- package/dist/components/button/button.web.d.ts +4 -0
- package/dist/components/button/button.web.d.ts.map +1 -0
- package/dist/components/button/button.web.js +7 -0
- package/dist/components/button/button.web.js.map +1 -0
- package/dist/components/button/index.d.ts +5 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +4 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/button/types.d.ts +28 -0
- package/dist/components/button/types.d.ts.map +1 -0
- package/dist/components/button/types.js +2 -0
- package/dist/components/button/types.js.map +1 -0
- package/dist/components/button/view-model.d.ts +3 -0
- package/dist/components/button/view-model.d.ts.map +1 -0
- package/dist/components/button/view-model.js +53 -0
- package/dist/components/button/view-model.js.map +1 -0
- package/dist/components/card/card.tui.d.ts +4 -0
- package/dist/components/card/card.tui.d.ts.map +1 -0
- package/dist/components/card/card.tui.js +41 -0
- package/dist/components/card/card.tui.js.map +1 -0
- package/dist/components/card/card.web.d.ts +4 -0
- package/dist/components/card/card.web.d.ts.map +1 -0
- package/dist/components/card/card.web.js +12 -0
- package/dist/components/card/card.web.js.map +1 -0
- package/dist/components/card/index.d.ts +5 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/index.js +4 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/card/types.d.ts +22 -0
- package/dist/components/card/types.d.ts.map +1 -0
- package/dist/components/card/types.js +2 -0
- package/dist/components/card/types.js.map +1 -0
- package/dist/components/card/view-model.d.ts +3 -0
- package/dist/components/card/view-model.d.ts.map +1 -0
- package/dist/components/card/view-model.js +35 -0
- package/dist/components/card/view-model.js.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/issue-row/index.d.ts +5 -0
- package/dist/components/issue-row/index.d.ts.map +1 -0
- package/dist/components/issue-row/index.js +4 -0
- package/dist/components/issue-row/index.js.map +1 -0
- package/dist/components/issue-row/issue-row.tui.d.ts +4 -0
- package/dist/components/issue-row/issue-row.tui.d.ts.map +1 -0
- package/dist/components/issue-row/issue-row.tui.js +15 -0
- package/dist/components/issue-row/issue-row.tui.js.map +1 -0
- package/dist/components/issue-row/issue-row.web.d.ts +4 -0
- package/dist/components/issue-row/issue-row.web.d.ts.map +1 -0
- package/dist/components/issue-row/issue-row.web.js +14 -0
- package/dist/components/issue-row/issue-row.web.js.map +1 -0
- package/dist/components/issue-row/types.d.ts +18 -0
- package/dist/components/issue-row/types.d.ts.map +1 -0
- package/dist/components/issue-row/types.js +2 -0
- package/dist/components/issue-row/types.js.map +1 -0
- package/dist/components/issue-row/view-model.d.ts +3 -0
- package/dist/components/issue-row/view-model.d.ts.map +1 -0
- package/dist/components/issue-row/view-model.js +31 -0
- package/dist/components/issue-row/view-model.js.map +1 -0
- package/dist/components/modal/index.d.ts +3 -0
- package/dist/components/modal/index.d.ts.map +1 -0
- package/dist/components/modal/index.js +2 -0
- package/dist/components/modal/index.js.map +1 -0
- package/dist/components/modal/modal.web.d.ts +16 -0
- package/dist/components/modal/modal.web.d.ts.map +1 -0
- package/dist/components/modal/modal.web.js +92 -0
- package/dist/components/modal/modal.web.js.map +1 -0
- package/dist/components/modal/types.d.ts +15 -0
- package/dist/components/modal/types.d.ts.map +1 -0
- package/dist/components/modal/types.js +2 -0
- package/dist/components/modal/types.js.map +1 -0
- package/dist/config/loader.d.ts +23 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +136 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +6 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +24 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/schema.d.ts +3088 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +328 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/discovery/commands.d.ts +33 -0
- package/dist/discovery/commands.d.ts.map +1 -0
- package/dist/discovery/commands.js +82 -0
- package/dist/discovery/commands.js.map +1 -0
- package/dist/discovery/decomposer.d.ts +6 -0
- package/dist/discovery/decomposer.d.ts.map +1 -0
- package/dist/discovery/decomposer.js +102 -0
- package/dist/discovery/decomposer.js.map +1 -0
- package/dist/discovery/discover.d.ts +21 -0
- package/dist/discovery/discover.d.ts.map +1 -0
- package/dist/discovery/discover.js +98 -0
- package/dist/discovery/discover.js.map +1 -0
- package/dist/discovery/followup.d.ts +14 -0
- package/dist/discovery/followup.d.ts.map +1 -0
- package/dist/discovery/followup.js +27 -0
- package/dist/discovery/followup.js.map +1 -0
- package/dist/discovery/roles.d.ts +15 -0
- package/dist/discovery/roles.d.ts.map +1 -0
- package/dist/discovery/roles.js +36 -0
- package/dist/discovery/roles.js.map +1 -0
- package/dist/discovery/selector.d.ts +13 -0
- package/dist/discovery/selector.d.ts.map +1 -0
- package/dist/discovery/selector.js +27 -0
- package/dist/discovery/selector.js.map +1 -0
- package/dist/discovery/triage.d.ts +29 -0
- package/dist/discovery/triage.d.ts.map +1 -0
- package/dist/discovery/triage.js +61 -0
- package/dist/discovery/triage.js.map +1 -0
- package/dist/environment/bootstrap.d.ts +19 -0
- package/dist/environment/bootstrap.d.ts.map +1 -0
- package/dist/environment/bootstrap.js +89 -0
- package/dist/environment/bootstrap.js.map +1 -0
- package/dist/environment/dedicated.d.ts +17 -0
- package/dist/environment/dedicated.d.ts.map +1 -0
- package/dist/environment/dedicated.js +68 -0
- package/dist/environment/dedicated.js.map +1 -0
- package/dist/environment/env-file.d.ts +16 -0
- package/dist/environment/env-file.d.ts.map +1 -0
- package/dist/environment/env-file.js +74 -0
- package/dist/environment/env-file.js.map +1 -0
- package/dist/environment/manager.d.ts +33 -0
- package/dist/environment/manager.d.ts.map +1 -0
- package/dist/environment/manager.js +113 -0
- package/dist/environment/manager.js.map +1 -0
- package/dist/environment/port.d.ts +15 -0
- package/dist/environment/port.d.ts.map +1 -0
- package/dist/environment/port.js +21 -0
- package/dist/environment/port.js.map +1 -0
- package/dist/environment/shared.d.ts +6 -0
- package/dist/environment/shared.d.ts.map +1 -0
- package/dist/environment/shared.js +30 -0
- package/dist/environment/shared.js.map +1 -0
- package/dist/events/bus.d.ts +18 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +70 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/events/observability.d.ts +32 -0
- package/dist/events/observability.d.ts.map +1 -0
- package/dist/events/observability.js +155 -0
- package/dist/events/observability.js.map +1 -0
- package/dist/events/types.d.ts +18 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +2 -0
- package/dist/events/types.js.map +1 -0
- package/dist/forge/bot-comment.d.ts +17 -0
- package/dist/forge/bot-comment.d.ts.map +1 -0
- package/dist/forge/bot-comment.js +30 -0
- package/dist/forge/bot-comment.js.map +1 -0
- package/dist/forge/factory.d.ts +4 -0
- package/dist/forge/factory.d.ts.map +1 -0
- package/dist/forge/factory.js +31 -0
- package/dist/forge/factory.js.map +1 -0
- package/dist/forge/forgejo-client.d.ts +20 -0
- package/dist/forge/forgejo-client.d.ts.map +1 -0
- package/dist/forge/forgejo-client.js +114 -0
- package/dist/forge/forgejo-client.js.map +1 -0
- package/dist/forge/forgejo-labels.d.ts +13 -0
- package/dist/forge/forgejo-labels.d.ts.map +1 -0
- package/dist/forge/forgejo-labels.js +51 -0
- package/dist/forge/forgejo-labels.js.map +1 -0
- package/dist/forge/forgejo.d.ts +31 -0
- package/dist/forge/forgejo.d.ts.map +1 -0
- package/dist/forge/forgejo.js +264 -0
- package/dist/forge/forgejo.js.map +1 -0
- package/dist/forge/github.d.ts +31 -0
- package/dist/forge/github.d.ts.map +1 -0
- package/dist/forge/github.js +438 -0
- package/dist/forge/github.js.map +1 -0
- package/dist/forge/status-comment.d.ts +19 -0
- package/dist/forge/status-comment.d.ts.map +1 -0
- package/dist/forge/status-comment.js +44 -0
- package/dist/forge/status-comment.js.map +1 -0
- package/dist/forge/types.d.ts +118 -0
- package/dist/forge/types.d.ts.map +1 -0
- package/dist/forge/types.js +2 -0
- package/dist/forge/types.js.map +1 -0
- package/dist/git/process.d.ts +15 -0
- package/dist/git/process.d.ts.map +1 -0
- package/dist/git/process.js +38 -0
- package/dist/git/process.js.map +1 -0
- package/dist/git/repo.d.ts +64 -0
- package/dist/git/repo.d.ts.map +1 -0
- package/dist/git/repo.js +158 -0
- package/dist/git/repo.js.map +1 -0
- package/dist/git/slug.d.ts +13 -0
- package/dist/git/slug.d.ts.map +1 -0
- package/dist/git/slug.js +28 -0
- package/dist/git/slug.js.map +1 -0
- package/dist/git/worktree.d.ts +23 -0
- package/dist/git/worktree.d.ts.map +1 -0
- package/dist/git/worktree.js +200 -0
- package/dist/git/worktree.js.map +1 -0
- package/dist/labels/bootstrap.d.ts +12 -0
- package/dist/labels/bootstrap.d.ts.map +1 -0
- package/dist/labels/bootstrap.js +101 -0
- package/dist/labels/bootstrap.js.map +1 -0
- package/dist/labels/config.d.ts +6 -0
- package/dist/labels/config.d.ts.map +1 -0
- package/dist/labels/config.js +56 -0
- package/dist/labels/config.js.map +1 -0
- package/dist/labels/manager.d.ts +10 -0
- package/dist/labels/manager.d.ts.map +1 -0
- package/dist/labels/manager.js +30 -0
- package/dist/labels/manager.js.map +1 -0
- package/dist/labels/transitions.d.ts +33 -0
- package/dist/labels/transitions.d.ts.map +1 -0
- package/dist/labels/transitions.js +81 -0
- package/dist/labels/transitions.js.map +1 -0
- package/dist/loop/checkpoint.d.ts +60 -0
- package/dist/loop/checkpoint.d.ts.map +1 -0
- package/dist/loop/checkpoint.js +226 -0
- package/dist/loop/checkpoint.js.map +1 -0
- package/dist/loop/commit.d.ts +17 -0
- package/dist/loop/commit.d.ts.map +1 -0
- package/dist/loop/commit.js +65 -0
- package/dist/loop/commit.js.map +1 -0
- package/dist/loop/context.d.ts +11 -0
- package/dist/loop/context.d.ts.map +1 -0
- package/dist/loop/context.js +26 -0
- package/dist/loop/context.js.map +1 -0
- package/dist/loop/cost.d.ts +79 -0
- package/dist/loop/cost.d.ts.map +1 -0
- package/dist/loop/cost.js +223 -0
- package/dist/loop/cost.js.map +1 -0
- package/dist/loop/decision.d.ts +22 -0
- package/dist/loop/decision.d.ts.map +1 -0
- package/dist/loop/decision.js +118 -0
- package/dist/loop/decision.js.map +1 -0
- package/dist/loop/diff-guard.d.ts +21 -0
- package/dist/loop/diff-guard.d.ts.map +1 -0
- package/dist/loop/diff-guard.js +52 -0
- package/dist/loop/diff-guard.js.map +1 -0
- package/dist/loop/engine.d.ts +32 -0
- package/dist/loop/engine.d.ts.map +1 -0
- package/dist/loop/engine.js +376 -0
- package/dist/loop/engine.js.map +1 -0
- package/dist/loop/parallel.d.ts +20 -0
- package/dist/loop/parallel.d.ts.map +1 -0
- package/dist/loop/parallel.js +144 -0
- package/dist/loop/parallel.js.map +1 -0
- package/dist/loop/plan-summary-comment.d.ts +5 -0
- package/dist/loop/plan-summary-comment.d.ts.map +1 -0
- package/dist/loop/plan-summary-comment.js +89 -0
- package/dist/loop/plan-summary-comment.js.map +1 -0
- package/dist/loop/pricing.d.ts +23 -0
- package/dist/loop/pricing.d.ts.map +1 -0
- package/dist/loop/pricing.js +64 -0
- package/dist/loop/pricing.js.map +1 -0
- package/dist/loop/review-feedback.d.ts +12 -0
- package/dist/loop/review-feedback.d.ts.map +1 -0
- package/dist/loop/review-feedback.js +55 -0
- package/dist/loop/review-feedback.js.map +1 -0
- package/dist/loop/step-executor.d.ts +70 -0
- package/dist/loop/step-executor.d.ts.map +1 -0
- package/dist/loop/step-executor.js +328 -0
- package/dist/loop/step-executor.js.map +1 -0
- package/dist/loop/supervisor.d.ts +9 -0
- package/dist/loop/supervisor.d.ts.map +1 -0
- package/dist/loop/supervisor.js +22 -0
- package/dist/loop/supervisor.js.map +1 -0
- package/dist/loop/types.d.ts +66 -0
- package/dist/loop/types.d.ts.map +1 -0
- package/dist/loop/types.js +2 -0
- package/dist/loop/types.js.map +1 -0
- package/dist/loop/verifier.d.ts +9 -0
- package/dist/loop/verifier.d.ts.map +1 -0
- package/dist/loop/verifier.js +59 -0
- package/dist/loop/verifier.js.map +1 -0
- package/dist/loop/workflow.d.ts +38 -0
- package/dist/loop/workflow.d.ts.map +1 -0
- package/dist/loop/workflow.js +64 -0
- package/dist/loop/workflow.js.map +1 -0
- package/dist/mcp/http.d.ts +8 -0
- package/dist/mcp/http.d.ts.map +1 -0
- package/dist/mcp/http.js +76 -0
- package/dist/mcp/http.js.map +1 -0
- package/dist/mcp/resources/index.d.ts +11 -0
- package/dist/mcp/resources/index.d.ts.map +1 -0
- package/dist/mcp/resources/index.js +137 -0
- package/dist/mcp/resources/index.js.map +1 -0
- package/dist/mcp/server.d.ts +16 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +54 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +19 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +847 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mentions/manager.d.ts +12 -0
- package/dist/mentions/manager.d.ts.map +1 -0
- package/dist/mentions/manager.js +50 -0
- package/dist/mentions/manager.js.map +1 -0
- package/dist/mentions/resolver.d.ts +12 -0
- package/dist/mentions/resolver.d.ts.map +1 -0
- package/dist/mentions/resolver.js +26 -0
- package/dist/mentions/resolver.js.map +1 -0
- package/dist/mentions/tracker.d.ts +8 -0
- package/dist/mentions/tracker.d.ts.map +1 -0
- package/dist/mentions/tracker.js +18 -0
- package/dist/mentions/tracker.js.map +1 -0
- package/dist/merge-queue/batch.d.ts +19 -0
- package/dist/merge-queue/batch.d.ts.map +1 -0
- package/dist/merge-queue/batch.js +100 -0
- package/dist/merge-queue/batch.js.map +1 -0
- package/dist/merge-queue/bisect.d.ts +10 -0
- package/dist/merge-queue/bisect.d.ts.map +1 -0
- package/dist/merge-queue/bisect.js +18 -0
- package/dist/merge-queue/bisect.js.map +1 -0
- package/dist/merge-queue/eligibility.d.ts +25 -0
- package/dist/merge-queue/eligibility.d.ts.map +1 -0
- package/dist/merge-queue/eligibility.js +125 -0
- package/dist/merge-queue/eligibility.js.map +1 -0
- package/dist/merge-queue/finalize.d.ts +7 -0
- package/dist/merge-queue/finalize.d.ts.map +1 -0
- package/dist/merge-queue/finalize.js +36 -0
- package/dist/merge-queue/finalize.js.map +1 -0
- package/dist/merge-queue/runner.d.ts +13 -0
- package/dist/merge-queue/runner.d.ts.map +1 -0
- package/dist/merge-queue/runner.js +246 -0
- package/dist/merge-queue/runner.js.map +1 -0
- package/dist/merge-queue/staging.d.ts +13 -0
- package/dist/merge-queue/staging.d.ts.map +1 -0
- package/dist/merge-queue/staging.js +88 -0
- package/dist/merge-queue/staging.js.map +1 -0
- package/dist/merge-queue/types.d.ts +23 -0
- package/dist/merge-queue/types.d.ts.map +1 -0
- package/dist/merge-queue/types.js +2 -0
- package/dist/merge-queue/types.js.map +1 -0
- package/dist/metrics/collectors.d.ts +24 -0
- package/dist/metrics/collectors.d.ts.map +1 -0
- package/dist/metrics/collectors.js +132 -0
- package/dist/metrics/collectors.js.map +1 -0
- package/dist/metrics/server.d.ts +8 -0
- package/dist/metrics/server.d.ts.map +1 -0
- package/dist/metrics/server.js +41 -0
- package/dist/metrics/server.js.map +1 -0
- package/dist/metrics/service.d.ts +26 -0
- package/dist/metrics/service.d.ts.map +1 -0
- package/dist/metrics/service.js +161 -0
- package/dist/metrics/service.js.map +1 -0
- package/dist/notify/channels/console.d.ts +10 -0
- package/dist/notify/channels/console.d.ts.map +1 -0
- package/dist/notify/channels/console.js +17 -0
- package/dist/notify/channels/console.js.map +1 -0
- package/dist/notify/channels/discord.d.ts +13 -0
- package/dist/notify/channels/discord.d.ts.map +1 -0
- package/dist/notify/channels/discord.js +183 -0
- package/dist/notify/channels/discord.js.map +1 -0
- package/dist/notify/channels/github-comment.d.ts +13 -0
- package/dist/notify/channels/github-comment.d.ts.map +1 -0
- package/dist/notify/channels/github-comment.js +52 -0
- package/dist/notify/channels/github-comment.js.map +1 -0
- package/dist/notify/channels/smtp.d.ts +17 -0
- package/dist/notify/channels/smtp.d.ts.map +1 -0
- package/dist/notify/channels/smtp.js +65 -0
- package/dist/notify/channels/smtp.js.map +1 -0
- package/dist/notify/channels/webhook-common.d.ts +19 -0
- package/dist/notify/channels/webhook-common.d.ts.map +1 -0
- package/dist/notify/channels/webhook-common.js +111 -0
- package/dist/notify/channels/webhook-common.js.map +1 -0
- package/dist/notify/channels/webhook.d.ts +13 -0
- package/dist/notify/channels/webhook.d.ts.map +1 -0
- package/dist/notify/channels/webhook.js +72 -0
- package/dist/notify/channels/webhook.js.map +1 -0
- package/dist/notify/dispatcher.d.ts +11 -0
- package/dist/notify/dispatcher.d.ts.map +1 -0
- package/dist/notify/dispatcher.js +66 -0
- package/dist/notify/dispatcher.js.map +1 -0
- package/dist/notify/factory.d.ts +5 -0
- package/dist/notify/factory.d.ts.map +1 -0
- package/dist/notify/factory.js +46 -0
- package/dist/notify/factory.js.map +1 -0
- package/dist/notify/payload.d.ts +8 -0
- package/dist/notify/payload.d.ts.map +1 -0
- package/dist/notify/payload.js +37 -0
- package/dist/notify/payload.js.map +1 -0
- package/dist/notify/types.d.ts +34 -0
- package/dist/notify/types.d.ts.map +1 -0
- package/dist/notify/types.js +2 -0
- package/dist/notify/types.js.map +1 -0
- package/dist/ops/auto-cleanup.d.ts +14 -0
- package/dist/ops/auto-cleanup.d.ts.map +1 -0
- package/dist/ops/auto-cleanup.js +58 -0
- package/dist/ops/auto-cleanup.js.map +1 -0
- package/dist/ops/cleanup.d.ts +32 -0
- package/dist/ops/cleanup.d.ts.map +1 -0
- package/dist/ops/cleanup.js +208 -0
- package/dist/ops/cleanup.js.map +1 -0
- package/dist/ops/continue.d.ts +12 -0
- package/dist/ops/continue.d.ts.map +1 -0
- package/dist/ops/continue.js +240 -0
- package/dist/ops/continue.js.map +1 -0
- package/dist/ops/cost-override.d.ts +16 -0
- package/dist/ops/cost-override.d.ts.map +1 -0
- package/dist/ops/cost-override.js +28 -0
- package/dist/ops/cost-override.js.map +1 -0
- package/dist/ops/daily-cost-override.d.ts +15 -0
- package/dist/ops/daily-cost-override.d.ts.map +1 -0
- package/dist/ops/daily-cost-override.js +23 -0
- package/dist/ops/daily-cost-override.js.map +1 -0
- package/dist/ops/delete-entry.d.ts +44 -0
- package/dist/ops/delete-entry.d.ts.map +1 -0
- package/dist/ops/delete-entry.js +381 -0
- package/dist/ops/delete-entry.js.map +1 -0
- package/dist/ops/labels-init.d.ts +43 -0
- package/dist/ops/labels-init.d.ts.map +1 -0
- package/dist/ops/labels-init.js +149 -0
- package/dist/ops/labels-init.js.map +1 -0
- package/dist/ops/rebase-and-check.d.ts +34 -0
- package/dist/ops/rebase-and-check.d.ts.map +1 -0
- package/dist/ops/rebase-and-check.js +110 -0
- package/dist/ops/rebase-and-check.js.map +1 -0
- package/dist/ops/rebase.d.ts +18 -0
- package/dist/ops/rebase.d.ts.map +1 -0
- package/dist/ops/rebase.js +67 -0
- package/dist/ops/rebase.js.map +1 -0
- package/dist/ops/retention.d.ts +29 -0
- package/dist/ops/retention.d.ts.map +1 -0
- package/dist/ops/retention.js +120 -0
- package/dist/ops/retention.js.map +1 -0
- package/dist/ops/retry.d.ts +19 -0
- package/dist/ops/retry.d.ts.map +1 -0
- package/dist/ops/retry.js +106 -0
- package/dist/ops/retry.js.map +1 -0
- package/dist/ops/summary.d.ts +42 -0
- package/dist/ops/summary.d.ts.map +1 -0
- package/dist/ops/summary.js +86 -0
- package/dist/ops/summary.js.map +1 -0
- package/dist/ops/sync.d.ts +47 -0
- package/dist/ops/sync.d.ts.map +1 -0
- package/dist/ops/sync.js +445 -0
- package/dist/ops/sync.js.map +1 -0
- package/dist/planning/mode.d.ts +14 -0
- package/dist/planning/mode.d.ts.map +1 -0
- package/dist/planning/mode.js +33 -0
- package/dist/planning/mode.js.map +1 -0
- package/dist/poller/control.d.ts +21 -0
- package/dist/poller/control.d.ts.map +1 -0
- package/dist/poller/control.js +42 -0
- package/dist/poller/control.js.map +1 -0
- package/dist/poller/shutdown.d.ts +20 -0
- package/dist/poller/shutdown.d.ts.map +1 -0
- package/dist/poller/shutdown.js +94 -0
- package/dist/poller/shutdown.js.map +1 -0
- package/dist/publishing/pr-body.d.ts +25 -0
- package/dist/publishing/pr-body.d.ts.map +1 -0
- package/dist/publishing/pr-body.js +119 -0
- package/dist/publishing/pr-body.js.map +1 -0
- package/dist/publishing/publisher.d.ts +19 -0
- package/dist/publishing/publisher.d.ts.map +1 -0
- package/dist/publishing/publisher.js +116 -0
- package/dist/publishing/publisher.js.map +1 -0
- package/dist/publishing/push.d.ts +13 -0
- package/dist/publishing/push.d.ts.map +1 -0
- package/dist/publishing/push.js +56 -0
- package/dist/publishing/push.js.map +1 -0
- package/dist/reactions/handler.d.ts +20 -0
- package/dist/reactions/handler.d.ts.map +1 -0
- package/dist/reactions/handler.js +50 -0
- package/dist/reactions/handler.js.map +1 -0
- package/dist/reactions/scanner.d.ts +13 -0
- package/dist/reactions/scanner.d.ts.map +1 -0
- package/dist/reactions/scanner.js +141 -0
- package/dist/reactions/scanner.js.map +1 -0
- package/dist/reactions/types.d.ts +41 -0
- package/dist/reactions/types.d.ts.map +1 -0
- package/dist/reactions/types.js +2 -0
- package/dist/reactions/types.js.map +1 -0
- package/dist/runner/poller.d.ts +19 -0
- package/dist/runner/poller.d.ts.map +1 -0
- package/dist/runner/poller.js +1358 -0
- package/dist/runner/poller.js.map +1 -0
- package/dist/settings/registry.d.ts +37 -0
- package/dist/settings/registry.d.ts.map +1 -0
- package/dist/settings/registry.js +299 -0
- package/dist/settings/registry.js.map +1 -0
- package/dist/settings/runtime.d.ts +33 -0
- package/dist/settings/runtime.d.ts.map +1 -0
- package/dist/settings/runtime.js +148 -0
- package/dist/settings/runtime.js.map +1 -0
- package/dist/state/db.d.ts +3 -0
- package/dist/state/db.d.ts.map +1 -0
- package/dist/state/db.js +80 -0
- package/dist/state/db.js.map +1 -0
- package/dist/state/issues.d.ts +47 -0
- package/dist/state/issues.d.ts.map +1 -0
- package/dist/state/issues.js +188 -0
- package/dist/state/issues.js.map +1 -0
- package/dist/state/leases.d.ts +27 -0
- package/dist/state/leases.d.ts.map +1 -0
- package/dist/state/leases.js +75 -0
- package/dist/state/leases.js.map +1 -0
- package/dist/state/migrations/001-initial.d.ts +3 -0
- package/dist/state/migrations/001-initial.d.ts.map +1 -0
- package/dist/state/migrations/001-initial.js +70 -0
- package/dist/state/migrations/001-initial.js.map +1 -0
- package/dist/state/migrations/002-placeholder.d.ts +7 -0
- package/dist/state/migrations/002-placeholder.d.ts.map +1 -0
- package/dist/state/migrations/002-placeholder.js +8 -0
- package/dist/state/migrations/002-placeholder.js.map +1 -0
- package/dist/state/migrations/003-mention-tracking.d.ts +3 -0
- package/dist/state/migrations/003-mention-tracking.d.ts.map +1 -0
- package/dist/state/migrations/003-mention-tracking.js +13 -0
- package/dist/state/migrations/003-mention-tracking.js.map +1 -0
- package/dist/state/migrations/004-command-tracking.d.ts +3 -0
- package/dist/state/migrations/004-command-tracking.d.ts.map +1 -0
- package/dist/state/migrations/004-command-tracking.js +13 -0
- package/dist/state/migrations/004-command-tracking.js.map +1 -0
- package/dist/state/migrations/005-block-reason.d.ts +3 -0
- package/dist/state/migrations/005-block-reason.d.ts.map +1 -0
- package/dist/state/migrations/005-block-reason.js +4 -0
- package/dist/state/migrations/005-block-reason.js.map +1 -0
- package/dist/state/migrations/006-parent-run.d.ts +3 -0
- package/dist/state/migrations/006-parent-run.d.ts.map +1 -0
- package/dist/state/migrations/006-parent-run.js +4 -0
- package/dist/state/migrations/006-parent-run.js.map +1 -0
- package/dist/state/migrations/007-merge-queue.d.ts +3 -0
- package/dist/state/migrations/007-merge-queue.d.ts.map +1 -0
- package/dist/state/migrations/007-merge-queue.js +21 -0
- package/dist/state/migrations/007-merge-queue.js.map +1 -0
- package/dist/state/migrations/008-agent-events.d.ts +3 -0
- package/dist/state/migrations/008-agent-events.d.ts.map +1 -0
- package/dist/state/migrations/008-agent-events.js +15 -0
- package/dist/state/migrations/008-agent-events.js.map +1 -0
- package/dist/state/migrations/009-run-titles.d.ts +3 -0
- package/dist/state/migrations/009-run-titles.d.ts.map +1 -0
- package/dist/state/migrations/009-run-titles.js +11 -0
- package/dist/state/migrations/009-run-titles.js.map +1 -0
- package/dist/state/migrations/010-issues.d.ts +9 -0
- package/dist/state/migrations/010-issues.d.ts.map +1 -0
- package/dist/state/migrations/010-issues.js +193 -0
- package/dist/state/migrations/010-issues.js.map +1 -0
- package/dist/state/migrations/011-rebuild-issues-from-latest-run.d.ts +8 -0
- package/dist/state/migrations/011-rebuild-issues-from-latest-run.d.ts.map +1 -0
- package/dist/state/migrations/011-rebuild-issues-from-latest-run.js +125 -0
- package/dist/state/migrations/011-rebuild-issues-from-latest-run.js.map +1 -0
- package/dist/state/migrations/012-settings-overrides.d.ts +3 -0
- package/dist/state/migrations/012-settings-overrides.d.ts.map +1 -0
- package/dist/state/migrations/012-settings-overrides.js +14 -0
- package/dist/state/migrations/012-settings-overrides.js.map +1 -0
- package/dist/state/migrations/013-token-usage.d.ts +3 -0
- package/dist/state/migrations/013-token-usage.d.ts.map +1 -0
- package/dist/state/migrations/013-token-usage.js +21 -0
- package/dist/state/migrations/013-token-usage.js.map +1 -0
- package/dist/state/migrations/014-daily-run-usage.d.ts +3 -0
- package/dist/state/migrations/014-daily-run-usage.d.ts.map +1 -0
- package/dist/state/migrations/014-daily-run-usage.js +14 -0
- package/dist/state/migrations/014-daily-run-usage.js.map +1 -0
- package/dist/state/migrations/015-run-cost-override.d.ts +11 -0
- package/dist/state/migrations/015-run-cost-override.d.ts.map +1 -0
- package/dist/state/migrations/015-run-cost-override.js +20 -0
- package/dist/state/migrations/015-run-cost-override.js.map +1 -0
- package/dist/state/migrations/016-daily-cost-cap-override.d.ts +15 -0
- package/dist/state/migrations/016-daily-cost-cap-override.d.ts.map +1 -0
- package/dist/state/migrations/016-daily-cost-cap-override.js +24 -0
- package/dist/state/migrations/016-daily-cost-cap-override.js.map +1 -0
- package/dist/state/migrations/017-merge-batch-merged-prs.d.ts +13 -0
- package/dist/state/migrations/017-merge-batch-merged-prs.d.ts.map +1 -0
- package/dist/state/migrations/017-merge-batch-merged-prs.js +22 -0
- package/dist/state/migrations/017-merge-batch-merged-prs.js.map +1 -0
- package/dist/state/migrations/018-run-retry-count.d.ts +13 -0
- package/dist/state/migrations/018-run-retry-count.d.ts.map +1 -0
- package/dist/state/migrations/018-run-retry-count.js +22 -0
- package/dist/state/migrations/018-run-retry-count.js.map +1 -0
- package/dist/state/migrations/019-runs-active-index-top-level.d.ts +16 -0
- package/dist/state/migrations/019-runs-active-index-top-level.d.ts.map +1 -0
- package/dist/state/migrations/019-runs-active-index-top-level.js +23 -0
- package/dist/state/migrations/019-runs-active-index-top-level.js.map +1 -0
- package/dist/state/runs.d.ts +100 -0
- package/dist/state/runs.d.ts.map +1 -0
- package/dist/state/runs.js +321 -0
- package/dist/state/runs.js.map +1 -0
- package/dist/state/settings.d.ts +16 -0
- package/dist/state/settings.d.ts.map +1 -0
- package/dist/state/settings.js +55 -0
- package/dist/state/settings.js.map +1 -0
- package/dist/state/stats.d.ts +133 -0
- package/dist/state/stats.d.ts.map +1 -0
- package/dist/state/stats.js +419 -0
- package/dist/state/stats.js.map +1 -0
- package/dist/supervisor/health.d.ts +24 -0
- package/dist/supervisor/health.d.ts.map +1 -0
- package/dist/supervisor/health.js +186 -0
- package/dist/supervisor/health.js.map +1 -0
- package/dist/supervisor/index.d.ts +31 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +387 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/supervisor/status.d.ts +18 -0
- package/dist/supervisor/status.d.ts.map +1 -0
- package/dist/supervisor/status.js +30 -0
- package/dist/supervisor/status.js.map +1 -0
- package/dist/supervisor/updater.d.ts +18 -0
- package/dist/supervisor/updater.d.ts.map +1 -0
- package/dist/supervisor/updater.js +108 -0
- package/dist/supervisor/updater.js.map +1 -0
- package/dist/utils/build-info.d.ts +6 -0
- package/dist/utils/build-info.d.ts.map +1 -0
- package/dist/utils/build-info.js +56 -0
- package/dist/utils/build-info.js.map +1 -0
- package/dist/utils/command.d.ts +8 -0
- package/dist/utils/command.d.ts.map +1 -0
- package/dist/utils/command.js +71 -0
- package/dist/utils/command.js.map +1 -0
- package/dist/utils/ids.d.ts +4 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +17 -0
- package/dist/utils/ids.js.map +1 -0
- package/dist/utils/install-method.d.ts +4 -0
- package/dist/utils/install-method.d.ts.map +1 -0
- package/dist/utils/install-method.js +13 -0
- package/dist/utils/install-method.js.map +1 -0
- package/dist/utils/issue-repo.d.ts +2 -0
- package/dist/utils/issue-repo.d.ts.map +1 -0
- package/dist/utils/issue-repo.js +7 -0
- package/dist/utils/issue-repo.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +63 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/project-root.d.ts +8 -0
- package/dist/utils/project-root.d.ts.map +1 -0
- package/dist/utils/project-root.js +22 -0
- package/dist/utils/project-root.js.map +1 -0
- package/dist/utils/sanitize-error.d.ts +36 -0
- package/dist/utils/sanitize-error.d.ts.map +1 -0
- package/dist/utils/sanitize-error.js +89 -0
- package/dist/utils/sanitize-error.js.map +1 -0
- package/dist/utils/time.d.ts +7 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +47 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/web/server.d.ts +14 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +1185 -0
- package/dist/web/server.js.map +1 -0
- package/dist/workers/acp.d.ts +9 -0
- package/dist/workers/acp.d.ts.map +1 -0
- package/dist/workers/acp.js +190 -0
- package/dist/workers/acp.js.map +1 -0
- package/dist/workers/acpx-imports.d.ts +18 -0
- package/dist/workers/acpx-imports.d.ts.map +1 -0
- package/dist/workers/acpx-imports.js +43 -0
- package/dist/workers/acpx-imports.js.map +1 -0
- package/dist/workers/claude.d.ts +9 -0
- package/dist/workers/claude.d.ts.map +1 -0
- package/dist/workers/claude.js +341 -0
- package/dist/workers/claude.js.map +1 -0
- package/dist/workers/codex.d.ts +21 -0
- package/dist/workers/codex.d.ts.map +1 -0
- package/dist/workers/codex.js +337 -0
- package/dist/workers/codex.js.map +1 -0
- package/dist/workers/command.d.ts +6 -0
- package/dist/workers/command.d.ts.map +1 -0
- package/dist/workers/command.js +15 -0
- package/dist/workers/command.js.map +1 -0
- package/dist/workers/env.d.ts +18 -0
- package/dist/workers/env.d.ts.map +1 -0
- package/dist/workers/env.js +172 -0
- package/dist/workers/env.js.map +1 -0
- package/dist/workers/events.d.ts +7 -0
- package/dist/workers/events.d.ts.map +1 -0
- package/dist/workers/events.js +30 -0
- package/dist/workers/events.js.map +1 -0
- package/dist/workers/factory.d.ts +6 -0
- package/dist/workers/factory.d.ts.map +1 -0
- package/dist/workers/factory.js +13 -0
- package/dist/workers/factory.js.map +1 -0
- package/dist/workers/parsers/coder.d.ts +6 -0
- package/dist/workers/parsers/coder.d.ts.map +1 -0
- package/dist/workers/parsers/coder.js +59 -0
- package/dist/workers/parsers/coder.js.map +1 -0
- package/dist/workers/parsers/decomposer.d.ts +16 -0
- package/dist/workers/parsers/decomposer.d.ts.map +1 -0
- package/dist/workers/parsers/decomposer.js +35 -0
- package/dist/workers/parsers/decomposer.js.map +1 -0
- package/dist/workers/parsers/extract.d.ts +41 -0
- package/dist/workers/parsers/extract.d.ts.map +1 -0
- package/dist/workers/parsers/extract.js +231 -0
- package/dist/workers/parsers/extract.js.map +1 -0
- package/dist/workers/parsers/planner.d.ts +6 -0
- package/dist/workers/parsers/planner.d.ts.map +1 -0
- package/dist/workers/parsers/planner.js +77 -0
- package/dist/workers/parsers/planner.js.map +1 -0
- package/dist/workers/parsers/reviewer.d.ts +6 -0
- package/dist/workers/parsers/reviewer.d.ts.map +1 -0
- package/dist/workers/parsers/reviewer.js +105 -0
- package/dist/workers/parsers/reviewer.js.map +1 -0
- package/dist/workers/prompt/compiler.d.ts +11 -0
- package/dist/workers/prompt/compiler.d.ts.map +1 -0
- package/dist/workers/prompt/compiler.js +199 -0
- package/dist/workers/prompt/compiler.js.map +1 -0
- package/dist/workers/prompt/templates.d.ts +13 -0
- package/dist/workers/prompt/templates.d.ts.map +1 -0
- package/dist/workers/prompt/templates.js +110 -0
- package/dist/workers/prompt/templates.js.map +1 -0
- package/dist/workers/registry.d.ts +9 -0
- package/dist/workers/registry.d.ts.map +1 -0
- package/dist/workers/registry.js +21 -0
- package/dist/workers/registry.js.map +1 -0
- package/dist/workers/streaming-exec.d.ts +26 -0
- package/dist/workers/streaming-exec.d.ts.map +1 -0
- package/dist/workers/streaming-exec.js +166 -0
- package/dist/workers/streaming-exec.js.map +1 -0
- package/dist/workers/timeout.d.ts +17 -0
- package/dist/workers/timeout.d.ts.map +1 -0
- package/dist/workers/timeout.js +37 -0
- package/dist/workers/timeout.js.map +1 -0
- package/dist/workers/types.d.ts +120 -0
- package/dist/workers/types.d.ts.map +1 -0
- package/dist/workers/types.js +2 -0
- package/dist/workers/types.js.map +1 -0
- package/docker-compose.example.yaml +29 -0
- package/examples/config.example.yaml +256 -0
- package/examples/night-orch.service +40 -0
- package/monitoring/grafana/dashboards/night-orch.json +140 -0
- package/monitoring/grafana/provisioning/dashboards/dashboards.yml +10 -0
- package/monitoring/grafana/provisioning/datasources/prometheus.yml +9 -0
- package/monitoring/prometheus.yml +8 -0
- package/package.json +104 -0
- package/web/dist/assets/index-CBFNqVuV.js +9 -0
- package/web/dist/assets/index-RCNGmuI2.css +1 -0
- package/web/dist/icon.svg +10 -0
- package/web/dist/index.html +22 -0
- package/web/dist/manifest.webmanifest +16 -0
- package/web/dist/sw.js +58 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const DEFAULT_LABEL_PRESENTATION = {
|
|
2
|
+
ready: {
|
|
3
|
+
color: '0E8A16',
|
|
4
|
+
description: 'Queued for night-orch processing',
|
|
5
|
+
},
|
|
6
|
+
running: {
|
|
7
|
+
color: 'FBCA04',
|
|
8
|
+
description: 'Currently being processed by night-orch',
|
|
9
|
+
},
|
|
10
|
+
blocked: {
|
|
11
|
+
color: 'D93F0B',
|
|
12
|
+
description: 'Blocked and requires human intervention',
|
|
13
|
+
},
|
|
14
|
+
reviewReady: {
|
|
15
|
+
color: '1D76DB',
|
|
16
|
+
description: 'PR is ready for human review',
|
|
17
|
+
},
|
|
18
|
+
error: {
|
|
19
|
+
color: 'B60205',
|
|
20
|
+
description: 'Processing failed and needs investigation',
|
|
21
|
+
},
|
|
22
|
+
retry: {
|
|
23
|
+
color: '5319E7',
|
|
24
|
+
description: 'Queued for retry',
|
|
25
|
+
},
|
|
26
|
+
planning: {
|
|
27
|
+
color: 'C2E0C6',
|
|
28
|
+
description: 'Planning-only mode: produce a PRD markdown file (no code changes)',
|
|
29
|
+
},
|
|
30
|
+
mergeQueued: {
|
|
31
|
+
color: '006B75',
|
|
32
|
+
description: 'PR is queued in the merge queue',
|
|
33
|
+
},
|
|
34
|
+
merging: {
|
|
35
|
+
color: '0075CA',
|
|
36
|
+
description: 'PR is actively being merged via staging branch',
|
|
37
|
+
},
|
|
38
|
+
mergeFailed: {
|
|
39
|
+
color: 'E4E669',
|
|
40
|
+
description: 'Merge attempt failed; manual action required',
|
|
41
|
+
},
|
|
42
|
+
kanbanTrigger: {
|
|
43
|
+
color: '5319E7',
|
|
44
|
+
description: 'Use kanban state flow instead of default orchestration labels',
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Build the labels that should exist for a repo, using role defaults and
|
|
49
|
+
* optional per-label overrides from repo.labelConfig.
|
|
50
|
+
*/
|
|
51
|
+
export function buildLabelBootstrapDefinitions(repoConfig) {
|
|
52
|
+
const definitions = [];
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
const add = (name, role) => {
|
|
55
|
+
if (!name || seen.has(name))
|
|
56
|
+
return;
|
|
57
|
+
seen.add(name);
|
|
58
|
+
const defaults = DEFAULT_LABEL_PRESENTATION[role];
|
|
59
|
+
const override = repoConfig.labelConfig[name];
|
|
60
|
+
definitions.push({
|
|
61
|
+
name,
|
|
62
|
+
color: (override?.color ?? defaults.color).toUpperCase(),
|
|
63
|
+
description: override?.description ?? defaults.description,
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
for (const label of asLabelArray(repoConfig.labels.ready))
|
|
67
|
+
add(label, 'ready');
|
|
68
|
+
add(repoConfig.labels.running, 'running');
|
|
69
|
+
for (const label of asLabelArray(repoConfig.labels.blocked))
|
|
70
|
+
add(label, 'blocked');
|
|
71
|
+
add(repoConfig.labels.reviewReady, 'reviewReady');
|
|
72
|
+
add(repoConfig.labels.error, 'error');
|
|
73
|
+
add(repoConfig.labels.retry, 'retry');
|
|
74
|
+
add(repoConfig.labels.planning, 'planning');
|
|
75
|
+
add(repoConfig.labels.mergeQueued, 'mergeQueued');
|
|
76
|
+
add(repoConfig.labels.merging, 'merging');
|
|
77
|
+
add(repoConfig.labels.mergeFailed, 'mergeFailed');
|
|
78
|
+
if (repoConfig.kanban) {
|
|
79
|
+
add(repoConfig.kanban.triggerLabel, 'kanbanTrigger');
|
|
80
|
+
for (const label of asLabelArray(repoConfig.kanban.labels.ready))
|
|
81
|
+
add(label, 'ready');
|
|
82
|
+
add(repoConfig.kanban.labels.running, 'running');
|
|
83
|
+
add(repoConfig.kanban.labels.blocked, 'blocked');
|
|
84
|
+
add(repoConfig.kanban.labels.needsHuman, 'blocked');
|
|
85
|
+
add(repoConfig.kanban.labels.reviewReady, 'reviewReady');
|
|
86
|
+
add(repoConfig.kanban.labels.error, 'error');
|
|
87
|
+
add(repoConfig.kanban.labels.retry, 'retry');
|
|
88
|
+
add(repoConfig.kanban.labels.planning, 'planning');
|
|
89
|
+
add(repoConfig.kanban.labels.mergeQueued, 'mergeQueued');
|
|
90
|
+
add(repoConfig.kanban.labels.merging, 'merging');
|
|
91
|
+
add(repoConfig.kanban.labels.mergeFailed, 'mergeFailed');
|
|
92
|
+
}
|
|
93
|
+
return definitions;
|
|
94
|
+
}
|
|
95
|
+
function asLabelArray(value) {
|
|
96
|
+
if (typeof value === 'string') {
|
|
97
|
+
return [value];
|
|
98
|
+
}
|
|
99
|
+
return [...value];
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/labels/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RepoConfig } from '../config/schema.js';
|
|
2
|
+
import type { LabelConfig } from './transitions.js';
|
|
3
|
+
export declare function isKanbanIssue(issueLabels: readonly string[] | undefined, repoConfig: Pick<RepoConfig, 'kanban'>): boolean;
|
|
4
|
+
export declare function getDiscoveryIncludeLabels(repoConfig: Pick<RepoConfig, 'selectors' | 'kanban'>): string[];
|
|
5
|
+
export declare function buildLabelConfig(repoConfig: Pick<RepoConfig, 'labels' | 'kanban'>, issueLabels?: readonly string[]): LabelConfig;
|
|
6
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/labels/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,wBAAgB,aAAa,CAC3B,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAC1C,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GACrC,OAAO,CAKT;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,QAAQ,CAAC,GACnD,MAAM,EAAE,CAQV;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC,EACjD,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAC9B,WAAW,CAkBb"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function isKanbanIssue(issueLabels, repoConfig) {
|
|
2
|
+
const trigger = repoConfig.kanban?.triggerLabel;
|
|
3
|
+
if (typeof trigger !== 'string' || trigger.length === 0)
|
|
4
|
+
return false;
|
|
5
|
+
if (!issueLabels)
|
|
6
|
+
return false;
|
|
7
|
+
return issueLabels.includes(trigger);
|
|
8
|
+
}
|
|
9
|
+
export function getDiscoveryIncludeLabels(repoConfig) {
|
|
10
|
+
const include = new Set(repoConfig.selectors?.includeLabelsAny ?? []);
|
|
11
|
+
if (repoConfig.kanban) {
|
|
12
|
+
for (const label of asLabelArray(repoConfig.kanban.labels.ready, [])) {
|
|
13
|
+
include.add(label);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return [...include];
|
|
17
|
+
}
|
|
18
|
+
export function buildLabelConfig(repoConfig, issueLabels) {
|
|
19
|
+
const source = isKanbanIssue(issueLabels, repoConfig) && repoConfig.kanban
|
|
20
|
+
? repoConfig.kanban.labels
|
|
21
|
+
: repoConfig.labels;
|
|
22
|
+
return {
|
|
23
|
+
ready: asLabelArray(source.ready, ['orch:ready']),
|
|
24
|
+
running: asSingleLabel(source.running, 'orch:running'),
|
|
25
|
+
blocked: asSingleLabel(source.blocked, 'orch:blocked'),
|
|
26
|
+
needsHuman: asSingleLabel(source.needsHuman, 'orch:needs-human'),
|
|
27
|
+
reviewReady: asSingleLabel(source.reviewReady, 'orch:review-ready'),
|
|
28
|
+
error: asSingleLabel(source.error, 'orch:error'),
|
|
29
|
+
retry: asSingleLabel(source.retry, 'orch:retry'),
|
|
30
|
+
planning: asSingleLabel(source.planning, 'orch:planning'),
|
|
31
|
+
mergeQueued: asSingleLabel(source.mergeQueued, 'orch:merge-queued'),
|
|
32
|
+
merging: asSingleLabel(source.merging, 'orch:merging'),
|
|
33
|
+
mergeFailed: asSingleLabel(source.mergeFailed, 'orch:merge-failed'),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function asSingleLabel(value, fallback) {
|
|
37
|
+
if (typeof value === 'string') {
|
|
38
|
+
return value.length > 0 ? value : fallback;
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
const first = value.find((label) => typeof label === 'string' && label.length > 0);
|
|
42
|
+
return first ?? fallback;
|
|
43
|
+
}
|
|
44
|
+
return fallback;
|
|
45
|
+
}
|
|
46
|
+
function asLabelArray(value, fallback) {
|
|
47
|
+
if (Array.isArray(value)) {
|
|
48
|
+
const labels = value.filter((label) => typeof label === 'string' && label.length > 0);
|
|
49
|
+
return labels.length > 0 ? labels : fallback;
|
|
50
|
+
}
|
|
51
|
+
if (typeof value === 'string' && value.length > 0) {
|
|
52
|
+
return [value];
|
|
53
|
+
}
|
|
54
|
+
return [...fallback];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/labels/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ForgeAdapter } from '../forge/types.js';
|
|
2
|
+
import type { RunStatus } from '../state/runs.js';
|
|
3
|
+
import type { BlockReason } from '../loop/types.js';
|
|
4
|
+
import { type LabelConfig } from './transitions.js';
|
|
5
|
+
/**
|
|
6
|
+
* Apply label mutations for a run status transition.
|
|
7
|
+
* Best-effort: partial failures are logged but don't throw.
|
|
8
|
+
*/
|
|
9
|
+
export declare function transitionLabels(forge: ForgeAdapter, repo: string, issueNumber: number, currentLabels: string[], from: RunStatus, to: RunStatus, labelConfig: LabelConfig, blockReason?: BlockReason): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/labels/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGzE;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,WAAW,EACxB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { computeLabelMutation } from './transitions.js';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
/**
|
|
4
|
+
* Apply label mutations for a run status transition.
|
|
5
|
+
* Best-effort: partial failures are logged but don't throw.
|
|
6
|
+
*/
|
|
7
|
+
export async function transitionLabels(forge, repo, issueNumber, currentLabels, from, to, labelConfig, blockReason) {
|
|
8
|
+
const mutation = computeLabelMutation(from, to, currentLabels, labelConfig, blockReason);
|
|
9
|
+
if (mutation.add.length === 0 && mutation.remove.length === 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
logger.info({ repo, issueNumber, from, to, add: mutation.add, remove: mutation.remove }, 'Applying label transition');
|
|
13
|
+
if (mutation.add.length > 0) {
|
|
14
|
+
try {
|
|
15
|
+
await forge.addLabels(repo, issueNumber, mutation.add);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
logger.warn({ repo, issueNumber, labels: mutation.add, err }, 'Failed to add labels');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (mutation.remove.length > 0) {
|
|
22
|
+
try {
|
|
23
|
+
await forge.removeLabels(repo, issueNumber, mutation.remove);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
logger.warn({ repo, issueNumber, labels: mutation.remove, err }, 'Failed to remove labels');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/labels/manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAmB,EACnB,IAAY,EACZ,WAAmB,EACnB,aAAuB,EACvB,IAAe,EACf,EAAa,EACb,WAAwB,EACxB,WAAyB;IAEzB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;IAExF,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAM;IACR,CAAC;IAED,MAAM,CAAC,IAAI,CACT,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAC3E,2BAA2B,CAC5B,CAAA;IAED,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAA;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAA;QAC7F,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { RunStatus } from '../state/runs.js';
|
|
2
|
+
import type { BlockReason } from '../loop/types.js';
|
|
3
|
+
import type { MergeBatchStatus } from '../merge-queue/types.js';
|
|
4
|
+
export interface LabelMutation {
|
|
5
|
+
add: string[];
|
|
6
|
+
remove: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface LabelConfig {
|
|
9
|
+
ready: string[];
|
|
10
|
+
running: string;
|
|
11
|
+
blocked: string;
|
|
12
|
+
needsHuman: string;
|
|
13
|
+
reviewReady: string;
|
|
14
|
+
error: string;
|
|
15
|
+
retry: string;
|
|
16
|
+
planning: string;
|
|
17
|
+
mergeQueued: string;
|
|
18
|
+
merging: string;
|
|
19
|
+
mergeFailed: string;
|
|
20
|
+
}
|
|
21
|
+
/** Returns true if the block reason genuinely requires human intervention. */
|
|
22
|
+
export declare function isHumanRequired(reason: BlockReason): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Compute label mutations for a run status transition.
|
|
25
|
+
* Pure function — no side effects.
|
|
26
|
+
*/
|
|
27
|
+
export declare function computeLabelMutation(_from: RunStatus, to: RunStatus, currentLabels: string[], config: LabelConfig, blockReason?: BlockReason): LabelMutation;
|
|
28
|
+
/**
|
|
29
|
+
* Compute label mutations for a merge batch status transition.
|
|
30
|
+
* Pure function — no side effects.
|
|
31
|
+
*/
|
|
32
|
+
export declare function computeMergeLabelMutation(to: MergeBatchStatus, currentLabels: string[], config: LabelConfig): LabelMutation;
|
|
33
|
+
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/labels/transitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,WAAW,GACxB,aAAa,CAyCf;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,gBAAgB,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,WAAW,GAClB,aAAa,CA+Bf"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/** Returns true if the block reason genuinely requires human intervention. */
|
|
2
|
+
export function isHumanRequired(reason) {
|
|
3
|
+
return reason === 'reviewer_blocked';
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Compute label mutations for a run status transition.
|
|
7
|
+
* Pure function — no side effects.
|
|
8
|
+
*/
|
|
9
|
+
export function computeLabelMutation(_from, to, currentLabels, config, blockReason) {
|
|
10
|
+
const current = new Set(currentLabels);
|
|
11
|
+
let add = [];
|
|
12
|
+
let remove = [];
|
|
13
|
+
switch (to) {
|
|
14
|
+
case 'running':
|
|
15
|
+
add = [config.running];
|
|
16
|
+
remove = [...config.ready, config.blocked, config.needsHuman, config.error, config.retry];
|
|
17
|
+
break;
|
|
18
|
+
case 'blocked':
|
|
19
|
+
if (blockReason && isHumanRequired(blockReason)) {
|
|
20
|
+
add = [config.blocked, config.needsHuman];
|
|
21
|
+
remove = [config.running];
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
add = [config.blocked];
|
|
25
|
+
remove = [config.running, config.needsHuman];
|
|
26
|
+
}
|
|
27
|
+
break;
|
|
28
|
+
case 'review_ready':
|
|
29
|
+
add = [config.reviewReady];
|
|
30
|
+
remove = [config.running, config.retry];
|
|
31
|
+
break;
|
|
32
|
+
case 'error':
|
|
33
|
+
add = [config.error];
|
|
34
|
+
remove = [config.running];
|
|
35
|
+
break;
|
|
36
|
+
case 'completed':
|
|
37
|
+
remove = [...config.ready, config.running, config.blocked, config.needsHuman, config.reviewReady, config.error, config.retry];
|
|
38
|
+
break;
|
|
39
|
+
case 'queued':
|
|
40
|
+
add = [...config.ready];
|
|
41
|
+
remove = [config.running, config.blocked, config.needsHuman, config.error, config.reviewReady, config.retry];
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
// Filter: don't add labels already present, don't remove labels not present
|
|
45
|
+
add = add.filter((l) => !current.has(l));
|
|
46
|
+
remove = remove.filter((l) => current.has(l));
|
|
47
|
+
return { add, remove };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Compute label mutations for a merge batch status transition.
|
|
51
|
+
* Pure function — no side effects.
|
|
52
|
+
*/
|
|
53
|
+
export function computeMergeLabelMutation(to, currentLabels, config) {
|
|
54
|
+
const current = new Set(currentLabels);
|
|
55
|
+
let add = [];
|
|
56
|
+
let remove = [];
|
|
57
|
+
const allMergeLabels = [config.mergeQueued, config.merging, config.mergeFailed];
|
|
58
|
+
switch (to) {
|
|
59
|
+
case 'pending':
|
|
60
|
+
case 'building':
|
|
61
|
+
case 'testing':
|
|
62
|
+
add = [config.mergeQueued];
|
|
63
|
+
remove = [config.mergeFailed];
|
|
64
|
+
break;
|
|
65
|
+
case 'bisecting':
|
|
66
|
+
add = [config.merging];
|
|
67
|
+
remove = [config.mergeQueued, config.mergeFailed];
|
|
68
|
+
break;
|
|
69
|
+
case 'passed':
|
|
70
|
+
remove = allMergeLabels;
|
|
71
|
+
break;
|
|
72
|
+
case 'failed':
|
|
73
|
+
add = [config.mergeFailed];
|
|
74
|
+
remove = [config.mergeQueued, config.merging];
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
add = add.filter((l) => !current.has(l));
|
|
78
|
+
remove = remove.filter((l) => current.has(l));
|
|
79
|
+
return { add, remove };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=transitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/labels/transitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { LoopPhase, RunContext } from './types.js';
|
|
3
|
+
export interface PersistedDecisionOutcome {
|
|
4
|
+
action: 'publish' | 'iterate' | 'block' | 'error';
|
|
5
|
+
reason?: string;
|
|
6
|
+
blockReason?: string | null;
|
|
7
|
+
}
|
|
8
|
+
export declare class Checkpoint {
|
|
9
|
+
private db;
|
|
10
|
+
private runManager;
|
|
11
|
+
constructor(db: Database.Database);
|
|
12
|
+
phaseStarted(runId: string, phase: LoopPhase, iteration?: number): void;
|
|
13
|
+
phaseCompleted(runId: string, phase: LoopPhase, artifacts: Record<string, unknown>, iteration?: number): void;
|
|
14
|
+
/**
|
|
15
|
+
* Record that a phase was skipped by the skipWhen guard. Emits matching
|
|
16
|
+
* `phase_started` + `phase_completed` events with a `skipped=true` flag
|
|
17
|
+
* so the event stream stays well-formed even though no work ran.
|
|
18
|
+
*/
|
|
19
|
+
phaseSkipped(runId: string, phase: LoopPhase, iteration?: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Record that a phase was blocked (e.g. by cost cap). Pairs
|
|
22
|
+
* phase_started/phase_completed with a `blocked` payload so the event
|
|
23
|
+
* stream remains consistent and the downstream observability layer can
|
|
24
|
+
* distinguish blocks from plain completions.
|
|
25
|
+
*/
|
|
26
|
+
phaseBlocked(runId: string, phase: LoopPhase, reason: string, iteration?: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Persist the terminal outcome of a decide step. Read by
|
|
29
|
+
* `resumeFromCheckpoint` to short-circuit resume when a decide step
|
|
30
|
+
* produced a terminal decision in the crashed attempt.
|
|
31
|
+
*/
|
|
32
|
+
recordDecisionOutcome(runId: string, phase: LoopPhase, outcome: PersistedDecisionOutcome): void;
|
|
33
|
+
/**
|
|
34
|
+
* Persist the current sessionIds and stepOutputs maps so they survive
|
|
35
|
+
* a daemon crash. Called by the engine after every worker step because
|
|
36
|
+
* workers mutate these maps through `updateContext`.
|
|
37
|
+
*/
|
|
38
|
+
persistRunState(runId: string, sessionIds: Readonly<Record<string, string>>, stepOutputs: Readonly<Record<string, unknown>>): void;
|
|
39
|
+
getLastCompleted(runId: string): {
|
|
40
|
+
phase: LoopPhase;
|
|
41
|
+
artifacts: Record<string, unknown>;
|
|
42
|
+
} | null;
|
|
43
|
+
/**
|
|
44
|
+
* Return the set of phase IDs that have a phase_completed checkpoint.
|
|
45
|
+
*/
|
|
46
|
+
getCompletedPhases(runId: string): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Return terminal decision outcomes for decide steps that ran and
|
|
49
|
+
* finished (possibly mid-decide-action) prior to a crash.
|
|
50
|
+
*/
|
|
51
|
+
getDecisionOutcomes(runId: string): Record<string, PersistedDecisionOutcome>;
|
|
52
|
+
/**
|
|
53
|
+
* Reconstruct a partial RunContext from checkpoint data for crash recovery.
|
|
54
|
+
* Returns null if no checkpoint data exists for this run.
|
|
55
|
+
*/
|
|
56
|
+
resumeFromCheckpoint(runId: string, baseCtx: RunContext): RunContext | null;
|
|
57
|
+
private getPhaseData;
|
|
58
|
+
private recordEvent;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/loop/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAA4D,MAAM,YAAY,CAAA;AAiCjH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,qBAAa,UAAU;IAGT,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,UAAU,CAAY;gBAEV,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAIzC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAmB7G;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvE;;;;;OAKG;IACH,YAAY,CACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAKP;;;;OAIG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAU/F;;;;OAIG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC5C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC7C,IAAI;IAUP,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAgBhG;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAM3C;;;OAGG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAO5E;;;OAGG;IACH,oBAAoB,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,GAClB,UAAU,GAAG,IAAI;IAuCpB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;CA6BpB"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { RunManager } from '../state/runs.js';
|
|
2
|
+
import { nowUtcIso } from '../utils/time.js';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Sentinel key used to store an array of completed phase IDs in phase_data.
|
|
6
|
+
* Used on resume to determine whether a phase was merely entered (started)
|
|
7
|
+
* or fully completed — a distinction that matters for decide steps whose
|
|
8
|
+
* terminal outcome must not be re-routed to iterate on resume.
|
|
9
|
+
*/
|
|
10
|
+
const COMPLETED_PHASES_KEY = '__completedPhases';
|
|
11
|
+
/**
|
|
12
|
+
* Sentinel key for session IDs. Persisted across crashes so
|
|
13
|
+
* multi-step workflows can resume their `--continue` chains on the worker.
|
|
14
|
+
*/
|
|
15
|
+
const SESSION_IDS_KEY = '__sessionIds';
|
|
16
|
+
/**
|
|
17
|
+
* Sentinel key for generic custom-role step outputs. buildStepArtifacts
|
|
18
|
+
* only persists well-known role outputs (plan/code/review/verify); without
|
|
19
|
+
* this escape hatch custom-workflow step outputs are lost on resume.
|
|
20
|
+
*/
|
|
21
|
+
const STEP_OUTPUTS_KEY = '__stepOutputs';
|
|
22
|
+
/**
|
|
23
|
+
* Sentinel key for terminal outcomes of decide steps. When present, the
|
|
24
|
+
* engine must not re-enter the loop on resume — it routes straight to the
|
|
25
|
+
* terminal state instead.
|
|
26
|
+
*/
|
|
27
|
+
const DECISION_OUTCOMES_KEY = '__decisionOutcomes';
|
|
28
|
+
export class Checkpoint {
|
|
29
|
+
db;
|
|
30
|
+
runManager;
|
|
31
|
+
constructor(db) {
|
|
32
|
+
this.db = db;
|
|
33
|
+
this.runManager = new RunManager(db);
|
|
34
|
+
}
|
|
35
|
+
phaseStarted(runId, phase, iteration) {
|
|
36
|
+
this.runManager.updatePhaseCheckpoint(runId, phase, null, iteration);
|
|
37
|
+
this.recordEvent(runId, 'phase_started', phase, null);
|
|
38
|
+
}
|
|
39
|
+
phaseCompleted(runId, phase, artifacts, iteration) {
|
|
40
|
+
// Merge artifacts with existing phase_data in a single DB transaction
|
|
41
|
+
// so concurrent writers (e.g. parallel sub-tasks on the same run)
|
|
42
|
+
// cannot lose updates. Also track the set of completed phases in
|
|
43
|
+
// the same blob so resume can distinguish "entered" from "completed".
|
|
44
|
+
const tx = this.db.transaction(() => {
|
|
45
|
+
const existing = this.getPhaseData(runId);
|
|
46
|
+
const prevCompleted = Array.isArray(existing[COMPLETED_PHASES_KEY])
|
|
47
|
+
? existing[COMPLETED_PHASES_KEY]
|
|
48
|
+
: [];
|
|
49
|
+
const completed = prevCompleted.includes(phase) ? prevCompleted : [...prevCompleted, phase];
|
|
50
|
+
const merged = { ...existing, [phase]: artifacts, [COMPLETED_PHASES_KEY]: completed };
|
|
51
|
+
this.runManager.updatePhaseCheckpoint(runId, phase, JSON.stringify(merged), iteration);
|
|
52
|
+
});
|
|
53
|
+
tx();
|
|
54
|
+
this.recordEvent(runId, 'phase_completed', phase, artifacts);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Record that a phase was skipped by the skipWhen guard. Emits matching
|
|
58
|
+
* `phase_started` + `phase_completed` events with a `skipped=true` flag
|
|
59
|
+
* so the event stream stays well-formed even though no work ran.
|
|
60
|
+
*/
|
|
61
|
+
phaseSkipped(runId, phase, iteration) {
|
|
62
|
+
this.phaseStarted(runId, phase, iteration);
|
|
63
|
+
this.phaseCompleted(runId, phase, { skipped: true }, iteration);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Record that a phase was blocked (e.g. by cost cap). Pairs
|
|
67
|
+
* phase_started/phase_completed with a `blocked` payload so the event
|
|
68
|
+
* stream remains consistent and the downstream observability layer can
|
|
69
|
+
* distinguish blocks from plain completions.
|
|
70
|
+
*/
|
|
71
|
+
phaseBlocked(runId, phase, reason, iteration) {
|
|
72
|
+
this.phaseStarted(runId, phase, iteration);
|
|
73
|
+
this.phaseCompleted(runId, phase, { blocked: true, reason }, iteration);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Persist the terminal outcome of a decide step. Read by
|
|
77
|
+
* `resumeFromCheckpoint` to short-circuit resume when a decide step
|
|
78
|
+
* produced a terminal decision in the crashed attempt.
|
|
79
|
+
*/
|
|
80
|
+
recordDecisionOutcome(runId, phase, outcome) {
|
|
81
|
+
const existing = this.getPhaseData(runId);
|
|
82
|
+
const prev = existing[DECISION_OUTCOMES_KEY] ?? {};
|
|
83
|
+
const merged = {
|
|
84
|
+
...existing,
|
|
85
|
+
[DECISION_OUTCOMES_KEY]: { ...prev, [phase]: outcome },
|
|
86
|
+
};
|
|
87
|
+
this.runManager.updatePhaseData(runId, JSON.stringify(merged));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Persist the current sessionIds and stepOutputs maps so they survive
|
|
91
|
+
* a daemon crash. Called by the engine after every worker step because
|
|
92
|
+
* workers mutate these maps through `updateContext`.
|
|
93
|
+
*/
|
|
94
|
+
persistRunState(runId, sessionIds, stepOutputs) {
|
|
95
|
+
const existing = this.getPhaseData(runId);
|
|
96
|
+
const merged = {
|
|
97
|
+
...existing,
|
|
98
|
+
[SESSION_IDS_KEY]: { ...sessionIds },
|
|
99
|
+
[STEP_OUTPUTS_KEY]: { ...stepOutputs },
|
|
100
|
+
};
|
|
101
|
+
this.runManager.updatePhaseData(runId, JSON.stringify(merged));
|
|
102
|
+
}
|
|
103
|
+
getLastCompleted(runId) {
|
|
104
|
+
const row = this.db
|
|
105
|
+
.prepare('SELECT current_phase, phase_data FROM runs WHERE id = ?')
|
|
106
|
+
.get(runId);
|
|
107
|
+
if (!row?.current_phase)
|
|
108
|
+
return null;
|
|
109
|
+
const phaseData = safeParsePhaseData(row.phase_data);
|
|
110
|
+
const phaseArtifacts = phaseData[row.current_phase] ?? {};
|
|
111
|
+
return {
|
|
112
|
+
phase: row.current_phase,
|
|
113
|
+
artifacts: phaseArtifacts,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Return the set of phase IDs that have a phase_completed checkpoint.
|
|
118
|
+
*/
|
|
119
|
+
getCompletedPhases(runId) {
|
|
120
|
+
const phaseData = this.getPhaseData(runId);
|
|
121
|
+
const raw = phaseData[COMPLETED_PHASES_KEY];
|
|
122
|
+
return Array.isArray(raw) ? raw : [];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Return terminal decision outcomes for decide steps that ran and
|
|
126
|
+
* finished (possibly mid-decide-action) prior to a crash.
|
|
127
|
+
*/
|
|
128
|
+
getDecisionOutcomes(runId) {
|
|
129
|
+
const phaseData = this.getPhaseData(runId);
|
|
130
|
+
const raw = phaseData[DECISION_OUTCOMES_KEY];
|
|
131
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
132
|
+
return {};
|
|
133
|
+
return raw;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Reconstruct a partial RunContext from checkpoint data for crash recovery.
|
|
137
|
+
* Returns null if no checkpoint data exists for this run.
|
|
138
|
+
*/
|
|
139
|
+
resumeFromCheckpoint(runId, baseCtx) {
|
|
140
|
+
const row = this.db
|
|
141
|
+
.prepare('SELECT current_phase, phase_data, iteration_count, estimated_cost_usd FROM runs WHERE id = ?')
|
|
142
|
+
.get(runId);
|
|
143
|
+
if (!row?.current_phase)
|
|
144
|
+
return null;
|
|
145
|
+
const phaseData = safeParsePhaseData(row.phase_data);
|
|
146
|
+
// Reconstruct context from persisted phase artifacts
|
|
147
|
+
const planArtifacts = phaseData['plan'];
|
|
148
|
+
const codeArtifacts = phaseData['code'];
|
|
149
|
+
const reviewArtifacts = phaseData['review'];
|
|
150
|
+
const verifyArtifacts = phaseData['verify'];
|
|
151
|
+
const persistedSessionIds = phaseData[SESSION_IDS_KEY];
|
|
152
|
+
const persistedStepOutputs = phaseData[STEP_OUTPUTS_KEY];
|
|
153
|
+
return {
|
|
154
|
+
...baseCtx,
|
|
155
|
+
currentPhase: row.current_phase,
|
|
156
|
+
terminalStatus: 'running',
|
|
157
|
+
iteration: row.iteration_count ?? baseCtx.iteration,
|
|
158
|
+
estimatedCostUsd: row.estimated_cost_usd ?? baseCtx.estimatedCostUsd,
|
|
159
|
+
plan: planArtifacts?.plan ?? baseCtx.plan,
|
|
160
|
+
codeResult: codeArtifacts?.codeResult ?? baseCtx.codeResult,
|
|
161
|
+
verifyResults: Array.isArray(verifyArtifacts?.verifyResults)
|
|
162
|
+
? verifyArtifacts.verifyResults
|
|
163
|
+
: baseCtx.verifyResults,
|
|
164
|
+
reviewResult: reviewArtifacts?.reviewResult ?? baseCtx.reviewResult,
|
|
165
|
+
sessionIds: isStringRecord(persistedSessionIds) ? persistedSessionIds : baseCtx.sessionIds,
|
|
166
|
+
stepOutputs: isRecord(persistedStepOutputs) ? persistedStepOutputs : baseCtx.stepOutputs,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
getPhaseData(runId) {
|
|
170
|
+
const row = this.db
|
|
171
|
+
.prepare('SELECT phase_data FROM runs WHERE id = ?')
|
|
172
|
+
.get(runId);
|
|
173
|
+
if (!row?.phase_data)
|
|
174
|
+
return {};
|
|
175
|
+
return safeParsePhaseData(row.phase_data);
|
|
176
|
+
}
|
|
177
|
+
recordEvent(runId, eventType, phase, data) {
|
|
178
|
+
try {
|
|
179
|
+
const now = nowUtcIso();
|
|
180
|
+
this.db
|
|
181
|
+
.prepare(`INSERT INTO events (run_id, repo, issue_number, event_type, phase, data, created_at)
|
|
182
|
+
SELECT ?, repo, issue_number, ?, ?, ?, ?
|
|
183
|
+
FROM runs
|
|
184
|
+
WHERE id = ?`)
|
|
185
|
+
.run(runId, eventType, phase, data ? JSON.stringify(data) : null, now, runId);
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
// Best-effort event recording: checkpoint persistence must still succeed.
|
|
189
|
+
// Log at debug so operators can diagnose silent drops without spamming.
|
|
190
|
+
logger.debug({ runId, eventType, phase, err }, 'Failed to record phase event');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Parse a phase_data JSON blob defensively. A corrupt row must not take
|
|
196
|
+
* down checkpoint reads; the run will simply resume as if no checkpoint
|
|
197
|
+
* existed. Logs a warning so operators can notice data corruption.
|
|
198
|
+
*/
|
|
199
|
+
function safeParsePhaseData(raw) {
|
|
200
|
+
if (!raw)
|
|
201
|
+
return {};
|
|
202
|
+
try {
|
|
203
|
+
const parsed = JSON.parse(raw);
|
|
204
|
+
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
205
|
+
return {};
|
|
206
|
+
}
|
|
207
|
+
return parsed;
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
logger.warn({ err, phaseDataLength: raw.length }, 'Failed to parse phase_data JSON — treating as empty');
|
|
211
|
+
return {};
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function isRecord(value) {
|
|
215
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
216
|
+
}
|
|
217
|
+
function isStringRecord(value) {
|
|
218
|
+
if (!isRecord(value))
|
|
219
|
+
return false;
|
|
220
|
+
for (const v of Object.values(value)) {
|
|
221
|
+
if (typeof v !== 'string')
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=checkpoint.js.map
|