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,13 @@
|
|
|
1
|
+
import { WorkerAdapterRegistry } from './registry.js';
|
|
2
|
+
import { ClaudeWorkerAdapter } from './claude.js';
|
|
3
|
+
import { CodexWorkerAdapter } from './codex.js';
|
|
4
|
+
import { AcpWorkerAdapter } from './acp.js';
|
|
5
|
+
const defaultRegistry = new WorkerAdapterRegistry();
|
|
6
|
+
defaultRegistry.register('claude', () => new ClaudeWorkerAdapter());
|
|
7
|
+
defaultRegistry.register('codex', () => new CodexWorkerAdapter());
|
|
8
|
+
defaultRegistry.register('acp', () => new AcpWorkerAdapter());
|
|
9
|
+
export function createWorkerAdapter(profile) {
|
|
10
|
+
return defaultRegistry.create(profile);
|
|
11
|
+
}
|
|
12
|
+
export { defaultRegistry };
|
|
13
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/workers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,MAAM,eAAe,GAAG,IAAI,qBAAqB,EAAE,CAAA;AACnD,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAA;AACnE,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAA;AACjE,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;AAE7D,MAAM,UAAU,mBAAmB,CAAC,OAA2B;IAC7D,OAAO,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACxC,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coder.d.ts","sourceRoot":"","sources":["../../../src/workers/parsers/coder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAgB9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAiBlG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { parseJsonFromOutput } from './extract.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const StringArraySchema = z.unknown().optional().transform(toStringArray);
|
|
4
|
+
const CoderOutputSchema = z.object({
|
|
5
|
+
summary: z.string().optional().default('No summary provided'),
|
|
6
|
+
changedFiles: StringArraySchema,
|
|
7
|
+
remainingUncertainty: z.string().nullable().optional().transform((value) => typeof value === 'string' ? value : null),
|
|
8
|
+
blockers: z.unknown().nullable().optional().transform((value) => {
|
|
9
|
+
if (value === null || value === undefined)
|
|
10
|
+
return null;
|
|
11
|
+
return toStringArray(value);
|
|
12
|
+
}),
|
|
13
|
+
}).passthrough();
|
|
14
|
+
export function parseCoderOutput(raw) {
|
|
15
|
+
const parsed = parseJsonFromOutput(raw);
|
|
16
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
17
|
+
return buildTextFallback(raw);
|
|
18
|
+
}
|
|
19
|
+
const validation = CoderOutputSchema.safeParse(parsed);
|
|
20
|
+
if (!validation.success) {
|
|
21
|
+
const firstIssue = validation.error.issues[0];
|
|
22
|
+
const path = firstIssue?.path.join('.') || 'root';
|
|
23
|
+
return { result: null, error: `Coder output failed validation at ${path}` };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
result: validation.data,
|
|
27
|
+
error: null,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* When the coder produces text with no parseable JSON, construct a
|
|
32
|
+
* synthetic CoderOutput. The engine's git-diff fallback will fill in
|
|
33
|
+
* changedFiles later, but having a non-null result here prevents
|
|
34
|
+
* a hard failure when the coder did real work but skipped the JSON.
|
|
35
|
+
*/
|
|
36
|
+
function buildTextFallback(raw) {
|
|
37
|
+
const trimmed = raw.trim();
|
|
38
|
+
if (trimmed.length === 0) {
|
|
39
|
+
return { result: null, error: 'No JSON block found in coder output' };
|
|
40
|
+
}
|
|
41
|
+
// Extract a summary from the first meaningful line
|
|
42
|
+
const firstLine = trimmed.split('\n').find((l) => l.trim().length > 0) ?? trimmed;
|
|
43
|
+
const summary = firstLine.length > 200 ? firstLine.slice(0, 200) + '...' : firstLine;
|
|
44
|
+
return {
|
|
45
|
+
result: {
|
|
46
|
+
summary,
|
|
47
|
+
changedFiles: [],
|
|
48
|
+
remainingUncertainty: 'Coder structured output was not parseable — review carefully.',
|
|
49
|
+
blockers: null,
|
|
50
|
+
},
|
|
51
|
+
error: 'No JSON block found — used coder text as fallback',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function toStringArray(val) {
|
|
55
|
+
if (!Array.isArray(val))
|
|
56
|
+
return [];
|
|
57
|
+
return val.filter((v) => typeof v === 'string');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=coder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coder.js","sourceRoot":"","sources":["../../../src/workers/parsers/coder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SubTask {
|
|
2
|
+
title: string;
|
|
3
|
+
description: string;
|
|
4
|
+
dependencies: number[];
|
|
5
|
+
estimatedComplexity: 'trivial' | 'standard';
|
|
6
|
+
}
|
|
7
|
+
export interface DecompositionResult {
|
|
8
|
+
shouldDecompose: boolean;
|
|
9
|
+
subtasks: SubTask[];
|
|
10
|
+
reasoning: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseDecomposerOutput(raw: string, maxSubtasks?: number): {
|
|
13
|
+
result: DecompositionResult | null;
|
|
14
|
+
error: string | null;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=decomposer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decomposer.d.ts","sourceRoot":"","sources":["../../../src/workers/parsers/decomposer.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,mBAAmB,EAAE,SAAS,GAAG,UAAU,CAAA;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAeD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,WAAW,SAAI,GACd;IAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAuB9D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { parseJsonFromOutput } from './extract.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const SubTaskSchema = z.object({
|
|
4
|
+
title: z.string(),
|
|
5
|
+
description: z.string(),
|
|
6
|
+
dependencies: z.array(z.number().int().min(0)).default([]),
|
|
7
|
+
estimatedComplexity: z.enum(['trivial', 'standard']).default('standard'),
|
|
8
|
+
}).passthrough();
|
|
9
|
+
const DecompositionSchema = z.object({
|
|
10
|
+
shouldDecompose: z.boolean(),
|
|
11
|
+
reasoning: z.string().default(''),
|
|
12
|
+
subtasks: z.array(SubTaskSchema).default([]),
|
|
13
|
+
}).passthrough();
|
|
14
|
+
export function parseDecomposerOutput(raw, maxSubtasks = 5) {
|
|
15
|
+
const parsed = parseJsonFromOutput(raw);
|
|
16
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
17
|
+
return {
|
|
18
|
+
result: { shouldDecompose: false, subtasks: [], reasoning: '' },
|
|
19
|
+
error: 'No JSON found in decomposer output — fallback to no decomposition',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const validation = DecompositionSchema.safeParse(parsed);
|
|
23
|
+
if (!validation.success) {
|
|
24
|
+
return {
|
|
25
|
+
result: { shouldDecompose: false, subtasks: [], reasoning: '' },
|
|
26
|
+
error: `Decomposer output failed validation — fallback to no decomposition`,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const result = validation.data;
|
|
30
|
+
if (result.subtasks.length > maxSubtasks) {
|
|
31
|
+
result.subtasks = result.subtasks.slice(0, maxSubtasks);
|
|
32
|
+
}
|
|
33
|
+
return { result, error: null };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=decomposer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decomposer.js","sourceRoot":"","sources":["../../../src/workers/parsers/decomposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAevB,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CACzE,CAAC,CAAC,WAAW,EAAE,CAAA;AAEhB,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAC,WAAW,EAAE,CAAA;AAEhB,MAAM,UAAU,qBAAqB,CACnC,GAAW,EACX,WAAW,GAAG,CAAC;IAEf,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO;YACL,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC/D,KAAK,EAAE,mEAAmE;SAC3E,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACxD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC/D,KAAK,EAAE,oEAAoE;SAC5E,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAA;IAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IACzD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progressive JSON extraction from LLM output.
|
|
3
|
+
*
|
|
4
|
+
* Strategies tried in order:
|
|
5
|
+
* 1. Full string as JSON
|
|
6
|
+
* 2. Last fenced ```json block
|
|
7
|
+
* 3. Last fenced ``` block (no language tag)
|
|
8
|
+
* 4. Bare JSON object in text (greedy brace matching)
|
|
9
|
+
* 5. Truncated/malformed JSON repair (close open braces/brackets)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Extract the last JSON block from markdown-fenced code blocks.
|
|
13
|
+
* With multi-turn output, earlier turns may reference JSON examples;
|
|
14
|
+
* the structured output is always the final fence.
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractJsonBlock(raw: string): unknown | null;
|
|
17
|
+
/**
|
|
18
|
+
* Attempt to repair truncated JSON by closing open structures.
|
|
19
|
+
* Handles common LLM failure modes:
|
|
20
|
+
* - Output cut off mid-object (missing closing braces/brackets)
|
|
21
|
+
* - Trailing commas before closing delimiters
|
|
22
|
+
* - Unterminated strings
|
|
23
|
+
*/
|
|
24
|
+
export declare function repairAndParse(raw: string): unknown | null;
|
|
25
|
+
/**
|
|
26
|
+
* Try to parse the entire string as JSON, or progressively extract from
|
|
27
|
+
* fenced blocks, bare objects, and repaired truncated output.
|
|
28
|
+
*
|
|
29
|
+
* Strategies (in order):
|
|
30
|
+
* 1. Full string as JSON
|
|
31
|
+
* 2. Last ```json fenced block
|
|
32
|
+
* 3. Last ``` fenced block containing JSON
|
|
33
|
+
* 4. Bare JSON object in text
|
|
34
|
+
* 5. Truncated JSON repair on full string
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseJsonFromOutput(raw: string): unknown | null;
|
|
37
|
+
/**
|
|
38
|
+
* Extract content between markers.
|
|
39
|
+
*/
|
|
40
|
+
export declare function extractMarkedSection(raw: string, startMarker: string, endMarker: string): string | null;
|
|
41
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/workers/parsers/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAe5D;AAyFD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAyC1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAsB/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAOf"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progressive JSON extraction from LLM output.
|
|
3
|
+
*
|
|
4
|
+
* Strategies tried in order:
|
|
5
|
+
* 1. Full string as JSON
|
|
6
|
+
* 2. Last fenced ```json block
|
|
7
|
+
* 3. Last fenced ``` block (no language tag)
|
|
8
|
+
* 4. Bare JSON object in text (greedy brace matching)
|
|
9
|
+
* 5. Truncated/malformed JSON repair (close open braces/brackets)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Extract the last JSON block from markdown-fenced code blocks.
|
|
13
|
+
* With multi-turn output, earlier turns may reference JSON examples;
|
|
14
|
+
* the structured output is always the final fence.
|
|
15
|
+
*/
|
|
16
|
+
export function extractJsonBlock(raw) {
|
|
17
|
+
const pattern = /```json\s*\n([\s\S]*?)\n\s*```/g;
|
|
18
|
+
let lastContent = null;
|
|
19
|
+
let match;
|
|
20
|
+
while ((match = pattern.exec(raw)) !== null) {
|
|
21
|
+
if (match[1])
|
|
22
|
+
lastContent = match[1];
|
|
23
|
+
}
|
|
24
|
+
if (!lastContent)
|
|
25
|
+
return null;
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse(lastContent);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Try repairing truncated JSON from fenced block
|
|
31
|
+
return repairAndParse(lastContent);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extract JSON from any fenced code block (``` without language tag).
|
|
36
|
+
*/
|
|
37
|
+
function extractAnyFencedBlock(raw) {
|
|
38
|
+
const pattern = /```\s*\n([\s\S]*?)\n\s*```/g;
|
|
39
|
+
let lastContent = null;
|
|
40
|
+
let match;
|
|
41
|
+
while ((match = pattern.exec(raw)) !== null) {
|
|
42
|
+
const content = match[1];
|
|
43
|
+
if (content && content.trimStart().startsWith('{')) {
|
|
44
|
+
lastContent = content;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (!lastContent)
|
|
48
|
+
return null;
|
|
49
|
+
try {
|
|
50
|
+
return JSON.parse(lastContent);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return repairAndParse(lastContent);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Find a bare JSON object in text by matching outermost braces.
|
|
58
|
+
* Scans from the end of the string to find the last complete object.
|
|
59
|
+
*/
|
|
60
|
+
function extractBareJsonObject(raw) {
|
|
61
|
+
// Find the last '}' in the string
|
|
62
|
+
let lastObjectEnd = -1;
|
|
63
|
+
for (let i = raw.length - 1; i >= 0; i--) {
|
|
64
|
+
if (raw[i] === '}') {
|
|
65
|
+
lastObjectEnd = i;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (lastObjectEnd === -1)
|
|
70
|
+
return null;
|
|
71
|
+
// Scan forward to find the matching opening brace
|
|
72
|
+
let depth = 0;
|
|
73
|
+
let lastObjectStart = -1;
|
|
74
|
+
let inString = false;
|
|
75
|
+
let escape = false;
|
|
76
|
+
for (let i = 0; i <= lastObjectEnd; i++) {
|
|
77
|
+
const ch = raw[i];
|
|
78
|
+
if (escape) {
|
|
79
|
+
escape = false;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (ch === '\\' && inString) {
|
|
83
|
+
escape = true;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (ch === '"') {
|
|
87
|
+
inString = !inString;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (inString)
|
|
91
|
+
continue;
|
|
92
|
+
if (ch === '{') {
|
|
93
|
+
if (depth === 0) {
|
|
94
|
+
lastObjectStart = i;
|
|
95
|
+
}
|
|
96
|
+
depth++;
|
|
97
|
+
}
|
|
98
|
+
else if (ch === '}') {
|
|
99
|
+
depth--;
|
|
100
|
+
if (depth === 0 && i === lastObjectEnd) {
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
if (depth === 0) {
|
|
104
|
+
// Reset — this was a complete object before the one we want
|
|
105
|
+
lastObjectStart = -1;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (lastObjectStart === -1 || lastObjectEnd === -1)
|
|
110
|
+
return null;
|
|
111
|
+
const candidate = raw.slice(lastObjectStart, lastObjectEnd + 1);
|
|
112
|
+
try {
|
|
113
|
+
return JSON.parse(candidate);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return repairAndParse(candidate);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Attempt to repair truncated JSON by closing open structures.
|
|
121
|
+
* Handles common LLM failure modes:
|
|
122
|
+
* - Output cut off mid-object (missing closing braces/brackets)
|
|
123
|
+
* - Trailing commas before closing delimiters
|
|
124
|
+
* - Unterminated strings
|
|
125
|
+
*/
|
|
126
|
+
export function repairAndParse(raw) {
|
|
127
|
+
let text = raw.trim();
|
|
128
|
+
if (!text.startsWith('{') && !text.startsWith('['))
|
|
129
|
+
return null;
|
|
130
|
+
// Strip trailing commas before we close structures
|
|
131
|
+
text = text.replace(/,\s*$/, '');
|
|
132
|
+
// Close unterminated strings — if odd number of unescaped quotes, add one
|
|
133
|
+
const unescapedQuotes = text.match(/(?<!\\)"/g);
|
|
134
|
+
if (unescapedQuotes && unescapedQuotes.length % 2 !== 0) {
|
|
135
|
+
text += '"';
|
|
136
|
+
}
|
|
137
|
+
// Count open/close braces and brackets
|
|
138
|
+
let braces = 0;
|
|
139
|
+
let brackets = 0;
|
|
140
|
+
let inStr = false;
|
|
141
|
+
let esc = false;
|
|
142
|
+
for (const ch of text) {
|
|
143
|
+
if (esc) {
|
|
144
|
+
esc = false;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (ch === '\\' && inStr) {
|
|
148
|
+
esc = true;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (ch === '"') {
|
|
152
|
+
inStr = !inStr;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (inStr)
|
|
156
|
+
continue;
|
|
157
|
+
if (ch === '{')
|
|
158
|
+
braces++;
|
|
159
|
+
else if (ch === '}')
|
|
160
|
+
braces--;
|
|
161
|
+
else if (ch === '[')
|
|
162
|
+
brackets++;
|
|
163
|
+
else if (ch === ']')
|
|
164
|
+
brackets--;
|
|
165
|
+
}
|
|
166
|
+
// Strip trailing comma that might appear before closing
|
|
167
|
+
text = text.replace(/,\s*$/, '');
|
|
168
|
+
// Close open structures
|
|
169
|
+
while (brackets > 0) {
|
|
170
|
+
text += ']';
|
|
171
|
+
brackets--;
|
|
172
|
+
}
|
|
173
|
+
while (braces > 0) {
|
|
174
|
+
text += '}';
|
|
175
|
+
braces--;
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
return JSON.parse(text);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Try to parse the entire string as JSON, or progressively extract from
|
|
186
|
+
* fenced blocks, bare objects, and repaired truncated output.
|
|
187
|
+
*
|
|
188
|
+
* Strategies (in order):
|
|
189
|
+
* 1. Full string as JSON
|
|
190
|
+
* 2. Last ```json fenced block
|
|
191
|
+
* 3. Last ``` fenced block containing JSON
|
|
192
|
+
* 4. Bare JSON object in text
|
|
193
|
+
* 5. Truncated JSON repair on full string
|
|
194
|
+
*/
|
|
195
|
+
export function parseJsonFromOutput(raw) {
|
|
196
|
+
// Strategy 1: Full string is valid JSON
|
|
197
|
+
try {
|
|
198
|
+
return JSON.parse(raw);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// Fall through
|
|
202
|
+
}
|
|
203
|
+
// Strategy 2: Last ```json block
|
|
204
|
+
const fromJsonFence = extractJsonBlock(raw);
|
|
205
|
+
if (fromJsonFence !== null)
|
|
206
|
+
return fromJsonFence;
|
|
207
|
+
// Strategy 3: Last ``` block (no language tag)
|
|
208
|
+
const fromAnyFence = extractAnyFencedBlock(raw);
|
|
209
|
+
if (fromAnyFence !== null)
|
|
210
|
+
return fromAnyFence;
|
|
211
|
+
// Strategy 4: Bare JSON object in text
|
|
212
|
+
const fromBare = extractBareJsonObject(raw);
|
|
213
|
+
if (fromBare !== null)
|
|
214
|
+
return fromBare;
|
|
215
|
+
// Strategy 5: Repair truncated JSON (the whole string might be a cut-off object)
|
|
216
|
+
return repairAndParse(raw);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Extract content between markers.
|
|
220
|
+
*/
|
|
221
|
+
export function extractMarkedSection(raw, startMarker, endMarker) {
|
|
222
|
+
const startIdx = raw.indexOf(startMarker);
|
|
223
|
+
if (startIdx === -1)
|
|
224
|
+
return null;
|
|
225
|
+
const contentStart = startIdx + startMarker.length;
|
|
226
|
+
const endIdx = raw.indexOf(endMarker, contentStart);
|
|
227
|
+
if (endIdx === -1)
|
|
228
|
+
return null;
|
|
229
|
+
return raw.slice(contentStart, endIdx).trim();
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/workers/parsers/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../../src/workers/parsers/planner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAqBhD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAoBtG"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { parseJsonFromOutput } from './extract.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const StringArraySchema = z.unknown().optional().transform(toStringArray);
|
|
4
|
+
const PlannerStepSchema = z.object({
|
|
5
|
+
order: z.number().int().positive().optional(),
|
|
6
|
+
description: z.string().optional().default(''),
|
|
7
|
+
files: StringArraySchema,
|
|
8
|
+
}).passthrough();
|
|
9
|
+
const PlannerOutputSchema = z.object({
|
|
10
|
+
objective: z.string(),
|
|
11
|
+
assumptions: StringArraySchema,
|
|
12
|
+
filesToChange: StringArraySchema,
|
|
13
|
+
steps: z.unknown().optional().transform(toSteps),
|
|
14
|
+
risks: StringArraySchema,
|
|
15
|
+
testStrategy: z.string().optional().default(''),
|
|
16
|
+
}).passthrough();
|
|
17
|
+
export function parsePlannerOutput(raw) {
|
|
18
|
+
const parsed = parseJsonFromOutput(raw);
|
|
19
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
20
|
+
return buildTextFallback(raw);
|
|
21
|
+
}
|
|
22
|
+
const validation = PlannerOutputSchema.safeParse(parsed);
|
|
23
|
+
if (!validation.success) {
|
|
24
|
+
if (validation.error.issues.some((issue) => issue.path[0] === 'objective')) {
|
|
25
|
+
return { result: null, error: 'Planner output missing "objective" field' };
|
|
26
|
+
}
|
|
27
|
+
const firstIssue = validation.error.issues[0];
|
|
28
|
+
const path = firstIssue?.path.join('.') || 'root';
|
|
29
|
+
return { result: null, error: `Planner output failed validation at ${path}` };
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
result: validation.data,
|
|
33
|
+
error: null,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* When the planner produces useful text but no JSON block, construct a
|
|
38
|
+
* synthetic PlannerOutput so the analysis still flows to the coder.
|
|
39
|
+
*/
|
|
40
|
+
function buildTextFallback(raw) {
|
|
41
|
+
const trimmed = raw.trim();
|
|
42
|
+
if (trimmed.length === 0) {
|
|
43
|
+
return { result: null, error: 'No JSON block found in planner output' };
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
result: {
|
|
47
|
+
objective: trimmed,
|
|
48
|
+
assumptions: [],
|
|
49
|
+
filesToChange: [],
|
|
50
|
+
steps: [],
|
|
51
|
+
risks: [],
|
|
52
|
+
testStrategy: '',
|
|
53
|
+
},
|
|
54
|
+
error: 'No JSON block found — used planner text as fallback',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function toStringArray(val) {
|
|
58
|
+
if (!Array.isArray(val))
|
|
59
|
+
return [];
|
|
60
|
+
return val.filter((v) => typeof v === 'string');
|
|
61
|
+
}
|
|
62
|
+
function toSteps(val) {
|
|
63
|
+
if (!Array.isArray(val))
|
|
64
|
+
return [];
|
|
65
|
+
return val.map((step, index) => {
|
|
66
|
+
const parsed = PlannerStepSchema.safeParse(step);
|
|
67
|
+
if (!parsed.success) {
|
|
68
|
+
return { order: index + 1, description: '', files: [] };
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
order: parsed.data.order ?? index + 1,
|
|
72
|
+
description: parsed.data.description,
|
|
73
|
+
files: parsed.data.files,
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../../../src/workers/parsers/planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../../src/workers/parsers/reviewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,aAAa,CAAA;AAa/E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAwBxG"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { parseJsonFromOutput } from './extract.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const VALID_VERDICTS = new Set(['APPROVED', 'CHANGES_REQUIRED', 'BLOCKED']);
|
|
4
|
+
const ReviewerOutputSchema = z.object({
|
|
5
|
+
verdict: z.enum(['APPROVED', 'CHANGES_REQUIRED', 'BLOCKED']),
|
|
6
|
+
summary: z.string().optional().default(''),
|
|
7
|
+
findings: z.unknown().optional().transform(parseFindings),
|
|
8
|
+
definitionOfDoneCheck: z.unknown().optional().transform(parseDodCheck),
|
|
9
|
+
}).passthrough();
|
|
10
|
+
export function parseReviewerOutput(raw) {
|
|
11
|
+
const parsed = parseJsonFromOutput(raw);
|
|
12
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
13
|
+
return buildTextFallback(raw);
|
|
14
|
+
}
|
|
15
|
+
const obj = parsed;
|
|
16
|
+
const verdict = obj['verdict'];
|
|
17
|
+
if (!verdict || !VALID_VERDICTS.has(verdict)) {
|
|
18
|
+
return { result: null, error: `Invalid or missing verdict: "${verdict}". Expected: ${[...VALID_VERDICTS].join(', ')}` };
|
|
19
|
+
}
|
|
20
|
+
const validation = ReviewerOutputSchema.safeParse(obj);
|
|
21
|
+
if (!validation.success) {
|
|
22
|
+
const firstIssue = validation.error.issues[0];
|
|
23
|
+
const path = firstIssue?.path.join('.') || 'root';
|
|
24
|
+
return { result: null, error: `Reviewer output failed validation at ${path}` };
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
result: validation.data,
|
|
28
|
+
error: null,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* When the reviewer produces text with no parseable JSON, fail closed.
|
|
33
|
+
*
|
|
34
|
+
* Previously this path inferred a verdict from free text (e.g. "LGTM",
|
|
35
|
+
* "APPROVED"), which is a prompt-injection vector: a malicious diff or
|
|
36
|
+
* issue body can coerce the reviewer into emitting those tokens and bypass
|
|
37
|
+
* the gate. We now only ever return BLOCKED on the fallback path (for
|
|
38
|
+
* explicit block signals) or null (for everything else, which callers
|
|
39
|
+
* treat as a reviewer failure and retry/escalate).
|
|
40
|
+
*/
|
|
41
|
+
function buildTextFallback(raw) {
|
|
42
|
+
const trimmed = raw.trim();
|
|
43
|
+
if (trimmed.length === 0) {
|
|
44
|
+
return { result: null, error: 'No JSON block found in reviewer output' };
|
|
45
|
+
}
|
|
46
|
+
const verdict = inferBlockVerdictFromText(trimmed);
|
|
47
|
+
if (!verdict) {
|
|
48
|
+
return { result: null, error: 'No JSON block found in reviewer output' };
|
|
49
|
+
}
|
|
50
|
+
const firstLine = trimmed.split('\n').find((l) => l.trim().length > 0) ?? trimmed;
|
|
51
|
+
const summary = firstLine.length > 300 ? firstLine.slice(0, 300) + '...' : firstLine;
|
|
52
|
+
return {
|
|
53
|
+
result: {
|
|
54
|
+
verdict,
|
|
55
|
+
summary,
|
|
56
|
+
findings: [],
|
|
57
|
+
definitionOfDoneCheck: {
|
|
58
|
+
issueAddressed: false,
|
|
59
|
+
testsPassing: false,
|
|
60
|
+
noBlockingFindings: false,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
error: `No JSON block found — inferred BLOCKED verdict from reviewer text`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Fail-closed text inference: only recognize explicit BLOCKED signals.
|
|
68
|
+
* APPROVED/CHANGES_REQUIRED are intentionally NOT inferred — callers must
|
|
69
|
+
* receive a structured JSON verdict to approve or gate on changes.
|
|
70
|
+
*/
|
|
71
|
+
function inferBlockVerdictFromText(text) {
|
|
72
|
+
const upper = text.toUpperCase();
|
|
73
|
+
if (upper.includes('BLOCKED'))
|
|
74
|
+
return 'BLOCKED';
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
function parseFindings(val) {
|
|
78
|
+
if (!Array.isArray(val))
|
|
79
|
+
return [];
|
|
80
|
+
return val.map((f) => {
|
|
81
|
+
const finding = f;
|
|
82
|
+
return {
|
|
83
|
+
severity: parseSeverity(finding['severity']),
|
|
84
|
+
message: finding['message'] ?? '',
|
|
85
|
+
suggestedFix: finding['suggestedFix'] ?? null,
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function parseSeverity(val) {
|
|
90
|
+
if (val === 'critical' || val === 'major' || val === 'minor')
|
|
91
|
+
return val;
|
|
92
|
+
return 'minor';
|
|
93
|
+
}
|
|
94
|
+
function parseDodCheck(val) {
|
|
95
|
+
if (!val || typeof val !== 'object') {
|
|
96
|
+
return { issueAddressed: false, testsPassing: false, noBlockingFindings: false };
|
|
97
|
+
}
|
|
98
|
+
const obj = val;
|
|
99
|
+
return {
|
|
100
|
+
issueAddressed: Boolean(obj['issueAddressed']),
|
|
101
|
+
testsPassing: Boolean(obj['testsPassing']),
|
|
102
|
+
noBlockingFindings: Boolean(obj['noBlockingFindings']),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=reviewer.js.map
|