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,58 @@
|
|
|
1
|
+
import { CleanupEngine } from './cleanup.js';
|
|
2
|
+
import { RetentionEngine } from './retention.js';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Time-gated scheduler that runs cleanup and retention at configurable intervals.
|
|
6
|
+
* Designed to be called on every poll cycle — skips when interval hasn't elapsed.
|
|
7
|
+
*/
|
|
8
|
+
export class AutoCleanupScheduler {
|
|
9
|
+
config;
|
|
10
|
+
db;
|
|
11
|
+
lastRunAt = 0;
|
|
12
|
+
constructor(config, db) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.db = db;
|
|
15
|
+
}
|
|
16
|
+
async maybeRun() {
|
|
17
|
+
if (!this.config.storage.autoCleanup.enabled)
|
|
18
|
+
return;
|
|
19
|
+
const intervalMs = this.config.storage.autoCleanup.intervalMinutes * 60_000;
|
|
20
|
+
if (Date.now() - this.lastRunAt < intervalMs)
|
|
21
|
+
return;
|
|
22
|
+
this.lastRunAt = Date.now();
|
|
23
|
+
logger.info('Auto-cleanup: starting scheduled run');
|
|
24
|
+
try {
|
|
25
|
+
const cleanup = new CleanupEngine(this.db, this.config);
|
|
26
|
+
const cleanupResult = await cleanup.run({
|
|
27
|
+
terminalWorktreeAgeDays: this.config.storage.retention.worktreeAgeDays,
|
|
28
|
+
orphanedWorktrees: true,
|
|
29
|
+
});
|
|
30
|
+
logger.info({
|
|
31
|
+
removedWorktrees: cleanupResult.removedWorktrees.length,
|
|
32
|
+
freedMb: cleanupResult.freedDiskMb,
|
|
33
|
+
expiredLeases: cleanupResult.expiredLeases,
|
|
34
|
+
}, 'Auto-cleanup: worktree cleanup complete');
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
logger.warn({ err }, 'Auto-cleanup: worktree cleanup failed');
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const retention = new RetentionEngine(this.db);
|
|
41
|
+
const retentionResult = retention.prune({
|
|
42
|
+
detailDays: this.config.storage.retention.detailDays,
|
|
43
|
+
archiveDays: this.config.storage.retention.archiveDays,
|
|
44
|
+
vacuum: false, // Only vacuum on explicit CLI cleanup
|
|
45
|
+
dryRun: false,
|
|
46
|
+
});
|
|
47
|
+
logger.info({
|
|
48
|
+
compactedRuns: retentionResult.compactedRuns,
|
|
49
|
+
deletedRuns: retentionResult.deletedRuns,
|
|
50
|
+
deletedEvents: retentionResult.deletedEvents,
|
|
51
|
+
}, 'Auto-cleanup: DB retention complete');
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
logger.warn({ err }, 'Auto-cleanup: DB retention failed');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=auto-cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-cleanup.js","sourceRoot":"","sources":["../../src/ops/auto-cleanup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAIrB;IACA;IAJF,SAAS,GAAG,CAAC,CAAA;IAErB,YACU,MAAc,EACd,EAAqB;QADrB,WAAM,GAAN,MAAM,CAAQ;QACd,OAAE,GAAF,EAAE,CAAmB;IAC5B,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO;YAAE,OAAM;QAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,GAAG,MAAM,CAAA;QAC3E,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU;YAAE,OAAM;QAEpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC3B,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;QAEnD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACvD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe;gBACtE,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CACT;gBACE,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC,MAAM;gBACvD,OAAO,EAAE,aAAa,CAAC,WAAW;gBAClC,aAAa,EAAE,aAAa,CAAC,aAAa;aAC3C,EACD,yCAAyC,CAC1C,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,uCAAuC,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9C,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;gBACtC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU;gBACpD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW;gBACtD,MAAM,EAAE,KAAK,EAAE,sCAAsC;gBACrD,MAAM,EAAE,KAAK;aACd,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CACT;gBACE,aAAa,EAAE,eAAe,CAAC,aAAa;gBAC5C,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,aAAa,EAAE,eAAe,CAAC,aAAa;aAC7C,EACD,qCAAqC,CACtC,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { Config } from '../config/schema.js';
|
|
3
|
+
import type { ForgeAdapter } from '../forge/types.js';
|
|
4
|
+
export interface CleanupOptions {
|
|
5
|
+
completedWorktrees: boolean;
|
|
6
|
+
errorWorktreeAgeDays: number;
|
|
7
|
+
terminalWorktreeAgeDays: number;
|
|
8
|
+
orphanedWorktrees: boolean;
|
|
9
|
+
mergedBranches: boolean;
|
|
10
|
+
logArchiveAgeDays: number;
|
|
11
|
+
dryRun: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface CleanupResult {
|
|
14
|
+
removedWorktrees: string[];
|
|
15
|
+
removedBranches: string[];
|
|
16
|
+
expiredLeases: number;
|
|
17
|
+
archivedLogs: string[];
|
|
18
|
+
freedDiskMb: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class CleanupEngine {
|
|
21
|
+
private db;
|
|
22
|
+
private config;
|
|
23
|
+
private forgeFactory;
|
|
24
|
+
private leaseManager;
|
|
25
|
+
constructor(db: Database.Database, config: Config, forgeFactory?: (repo: string) => ForgeAdapter);
|
|
26
|
+
run(options?: Partial<CleanupOptions>): Promise<CleanupResult>;
|
|
27
|
+
private shouldRemoveWorktree;
|
|
28
|
+
private estimateDirSizeMb;
|
|
29
|
+
private archiveLogs;
|
|
30
|
+
private isPrMerged;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/ops/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAUrD,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,cAAc,EAAE,OAAO,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAmBD,qBAAa,aAAa;IAItB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IALtB,OAAO,CAAC,YAAY,CAAc;gBAGxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAIvC;IAKG,GAAG,CAAC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAwFxE,OAAO,CAAC,oBAAoB;YA0Bd,iBAAiB;IAY/B,OAAO,CAAC,WAAW;YAmCL,UAAU;CAsBzB"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { createForgeAdapter } from '../forge/factory.js';
|
|
2
|
+
import { createWorktreeManager } from '../git/worktree.js';
|
|
3
|
+
import { runGit } from '../git/process.js';
|
|
4
|
+
import { LeaseManager } from '../state/leases.js';
|
|
5
|
+
import { statSync, readdirSync, renameSync, mkdirSync } from 'node:fs';
|
|
6
|
+
import { join, dirname } from 'node:path';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
import { nowUtcIso, parseUtcTimestampMs } from '../utils/time.js';
|
|
9
|
+
const DEFAULT_OPTIONS = {
|
|
10
|
+
completedWorktrees: true,
|
|
11
|
+
errorWorktreeAgeDays: 7,
|
|
12
|
+
terminalWorktreeAgeDays: 7,
|
|
13
|
+
orphanedWorktrees: true,
|
|
14
|
+
mergedBranches: false,
|
|
15
|
+
logArchiveAgeDays: 30,
|
|
16
|
+
dryRun: false,
|
|
17
|
+
};
|
|
18
|
+
export class CleanupEngine {
|
|
19
|
+
db;
|
|
20
|
+
config;
|
|
21
|
+
forgeFactory;
|
|
22
|
+
leaseManager;
|
|
23
|
+
constructor(db, config, forgeFactory = (repo) => {
|
|
24
|
+
const repoConfig = config.repos.find((r) => r.repo === repo);
|
|
25
|
+
if (!repoConfig)
|
|
26
|
+
throw new Error(`No config for repo ${repo}`);
|
|
27
|
+
return createForgeAdapter(repoConfig, config);
|
|
28
|
+
}) {
|
|
29
|
+
this.db = db;
|
|
30
|
+
this.config = config;
|
|
31
|
+
this.forgeFactory = forgeFactory;
|
|
32
|
+
this.leaseManager = new LeaseManager(db);
|
|
33
|
+
}
|
|
34
|
+
async run(options = {}) {
|
|
35
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
36
|
+
const result = {
|
|
37
|
+
removedWorktrees: [],
|
|
38
|
+
removedBranches: [],
|
|
39
|
+
expiredLeases: 0,
|
|
40
|
+
archivedLogs: [],
|
|
41
|
+
freedDiskMb: 0,
|
|
42
|
+
};
|
|
43
|
+
// 1. Clean expired leases
|
|
44
|
+
if (!opts.dryRun) {
|
|
45
|
+
result.expiredLeases = this.leaseManager.cleanExpired();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const count = this.db
|
|
49
|
+
.prepare('SELECT COUNT(*) as c FROM leases WHERE leased_until < datetime(?)')
|
|
50
|
+
.get(nowUtcIso());
|
|
51
|
+
result.expiredLeases = count.c;
|
|
52
|
+
}
|
|
53
|
+
// 2. Remove worktrees for completed/error runs
|
|
54
|
+
const worktreeManager = createWorktreeManager();
|
|
55
|
+
for (const repoConfig of this.config.repos) {
|
|
56
|
+
try {
|
|
57
|
+
const worktrees = await worktreeManager.list(repoConfig.localPath, this.config.storage.worktreeRoot);
|
|
58
|
+
for (const wt of worktrees) {
|
|
59
|
+
const row = this.db
|
|
60
|
+
.prepare("SELECT status, ended_at, branch_name, pr_number FROM runs WHERE worktree_path = ? ORDER BY created_at DESC LIMIT 1")
|
|
61
|
+
.get(wt.path);
|
|
62
|
+
const shouldRemove = this.shouldRemoveWorktree(row, opts);
|
|
63
|
+
if (!shouldRemove)
|
|
64
|
+
continue;
|
|
65
|
+
const sizeMb = await this.estimateDirSizeMb(wt.path);
|
|
66
|
+
const rowStatus = row?.status ?? 'orphaned';
|
|
67
|
+
if (opts.dryRun) {
|
|
68
|
+
logger.info({ path: wt.path, status: rowStatus }, '[dry-run] Would remove worktree');
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
try {
|
|
72
|
+
await worktreeManager.remove(wt.path, false);
|
|
73
|
+
result.freedDiskMb += sizeMb;
|
|
74
|
+
logger.info({ path: wt.path, status: rowStatus }, 'Removed worktree');
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
logger.warn({ path: wt.path, err }, 'Failed to remove worktree');
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
result.removedWorktrees.push(wt.path);
|
|
82
|
+
// Branch deletion for merged PRs
|
|
83
|
+
if (opts.mergedBranches && row?.branch_name && row.pr_number && row.status === 'completed') {
|
|
84
|
+
const isMerged = await this.isPrMerged(repoConfig.repo, row.pr_number);
|
|
85
|
+
if (!isMerged) {
|
|
86
|
+
logger.info({ repo: repoConfig.repo, prNumber: row.pr_number, branch: row.branch_name }, 'Skipping branch deletion: PR is not merged on forge');
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (opts.dryRun) {
|
|
90
|
+
logger.info({ branch: row.branch_name }, '[dry-run] Would delete branch');
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
try {
|
|
94
|
+
await runGit(['branch', '-D', row.branch_name], { cwd: repoConfig.localPath });
|
|
95
|
+
logger.info({ branch: row.branch_name }, 'Deleted merged branch');
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
logger.warn({ branch: row.branch_name, err }, 'Failed to delete branch');
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
result.removedBranches.push(row.branch_name);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
logger.warn({ repo: repoConfig.repo, err }, 'Failed to list worktrees for cleanup');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// 3. Log archival
|
|
111
|
+
const archived = this.archiveLogs(opts);
|
|
112
|
+
result.archivedLogs = archived;
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
shouldRemoveWorktree(row, opts) {
|
|
116
|
+
// No matching run → orphaned worktree
|
|
117
|
+
if (!row)
|
|
118
|
+
return opts.orphanedWorktrees;
|
|
119
|
+
if (row.status === 'completed' && opts.completedWorktrees) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
if (row.status === 'error' && row.ended_at) {
|
|
123
|
+
const endedAtMs = parseUtcTimestampMs(row.ended_at);
|
|
124
|
+
if (!Number.isFinite(endedAtMs))
|
|
125
|
+
return false;
|
|
126
|
+
const ageDays = (Date.now() - endedAtMs) / (1000 * 60 * 60 * 24);
|
|
127
|
+
return ageDays >= opts.errorWorktreeAgeDays;
|
|
128
|
+
}
|
|
129
|
+
// Blocked and review_ready: clean after terminalWorktreeAgeDays
|
|
130
|
+
if ((row.status === 'blocked' || row.status === 'review_ready') && row.ended_at) {
|
|
131
|
+
const endedAtMs = parseUtcTimestampMs(row.ended_at);
|
|
132
|
+
if (!Number.isFinite(endedAtMs))
|
|
133
|
+
return false;
|
|
134
|
+
const ageDays = (Date.now() - endedAtMs) / (1000 * 60 * 60 * 24);
|
|
135
|
+
return ageDays >= opts.terminalWorktreeAgeDays;
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
async estimateDirSizeMb(dirPath) {
|
|
140
|
+
try {
|
|
141
|
+
const { execa: execaFn } = await import('execa');
|
|
142
|
+
const { stdout } = await execaFn('du', ['-sk', dirPath], { timeout: 10_000 });
|
|
143
|
+
const firstField = stdout.split('\t')[0];
|
|
144
|
+
const kb = parseInt(firstField ?? '0', 10);
|
|
145
|
+
return Math.round(kb / 1024 * 100) / 100;
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
archiveLogs(opts) {
|
|
152
|
+
const archived = [];
|
|
153
|
+
const logsRoot = this.config.storage.logsRoot;
|
|
154
|
+
const archiveDir = join(dirname(logsRoot), 'logs-archive');
|
|
155
|
+
try {
|
|
156
|
+
const entries = readdirSync(logsRoot);
|
|
157
|
+
const cutoff = Date.now() - opts.logArchiveAgeDays * 24 * 60 * 60 * 1000;
|
|
158
|
+
for (const entry of entries) {
|
|
159
|
+
const fullPath = join(logsRoot, entry);
|
|
160
|
+
try {
|
|
161
|
+
const stat = statSync(fullPath);
|
|
162
|
+
if (stat.mtimeMs < cutoff) {
|
|
163
|
+
if (opts.dryRun) {
|
|
164
|
+
logger.info({ path: fullPath }, '[dry-run] Would archive log');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
mkdirSync(archiveDir, { recursive: true });
|
|
168
|
+
renameSync(fullPath, join(archiveDir, entry));
|
|
169
|
+
logger.info({ path: fullPath }, 'Archived log');
|
|
170
|
+
}
|
|
171
|
+
archived.push(fullPath);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Skip individual file errors
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// Logs dir may not exist yet
|
|
181
|
+
logger.debug({ logsRoot }, 'Logs directory not found for archival');
|
|
182
|
+
}
|
|
183
|
+
return archived;
|
|
184
|
+
}
|
|
185
|
+
async isPrMerged(repo, prNumber) {
|
|
186
|
+
let forge;
|
|
187
|
+
try {
|
|
188
|
+
forge = this.forgeFactory(repo);
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
logger.warn({ repo, prNumber, err }, 'Cannot create forge adapter for merged-branch cleanup check');
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
if (typeof forge.getPR !== 'function') {
|
|
195
|
+
logger.warn({ repo, prNumber }, 'Forge adapter does not support PR state lookup; skipping branch cleanup');
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
const pr = await forge.getPR(repo, prNumber);
|
|
200
|
+
return pr.state === 'merged';
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
logger.warn({ repo, prNumber, err }, 'Failed to verify PR merge status; skipping branch cleanup');
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/ops/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { ForgeAdapter } from '../forge/types.js';
|
|
3
|
+
import type { RepoConfig } from '../config/schema.js';
|
|
4
|
+
export interface QueueContinueOptions {
|
|
5
|
+
issueRepo?: string;
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function queueContinue(db: Database.Database, forge: ForgeAdapter, repoConfig: RepoConfig, issueNumber: number, botUser: string, options?: QueueContinueOptions): Promise<{
|
|
9
|
+
queued: boolean;
|
|
10
|
+
reason: string;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=continue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.d.ts","sourceRoot":"","sources":["../../src/ops/continue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAA;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAuBrD,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+F9C"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { RunManager } from '../state/runs.js';
|
|
2
|
+
import { LeaseManager } from '../state/leases.js';
|
|
3
|
+
import { transitionLabels } from '../labels/manager.js';
|
|
4
|
+
import { buildLabelConfig } from '../labels/config.js';
|
|
5
|
+
import { scanForReactions } from '../reactions/scanner.js';
|
|
6
|
+
import { parseUtcTimestampMs, nowUtcIso } from '../utils/time.js';
|
|
7
|
+
import { resolveIssueRepo } from '../utils/issue-repo.js';
|
|
8
|
+
import { upsertBotComment, markerTag } from '../forge/bot-comment.js';
|
|
9
|
+
import { logger } from '../utils/logger.js';
|
|
10
|
+
const STATUS_MARKER = markerTag('status');
|
|
11
|
+
const COMMENT_COMMAND_RE = /^\s*\/(?:orch|night-orch)\b/im;
|
|
12
|
+
const EMPTY_CURSOR = {
|
|
13
|
+
lastReviewId: 0,
|
|
14
|
+
lastCommentId: 0,
|
|
15
|
+
lastCheckConclusion: null,
|
|
16
|
+
};
|
|
17
|
+
const CONTINUABLE_STATUSES = new Set(['blocked', 'review_ready', 'error']);
|
|
18
|
+
const PHASE_CHECKPOINT_FALLBACK_ORDER = ['decide', 'review', 'verify', 'code', 'plan'];
|
|
19
|
+
export async function queueContinue(db, forge, repoConfig, issueNumber, botUser, options = {}) {
|
|
20
|
+
const runManager = new RunManager(db);
|
|
21
|
+
const leaseManager = new LeaseManager(db);
|
|
22
|
+
const run = runManager.getByRepoAndIssue(repoConfig.repo, issueNumber);
|
|
23
|
+
if (!run) {
|
|
24
|
+
return { queued: false, reason: 'No run found for this issue' };
|
|
25
|
+
}
|
|
26
|
+
if (run.status === 'running' || run.status === 'queued') {
|
|
27
|
+
return { queued: false, reason: `Run is already ${run.status}` };
|
|
28
|
+
}
|
|
29
|
+
if (!CONTINUABLE_STATUSES.has(run.status)) {
|
|
30
|
+
return { queued: false, reason: `Continue supports blocked/review_ready/error runs (current: ${run.status})` };
|
|
31
|
+
}
|
|
32
|
+
const issueRepo = options.issueRepo ?? resolveIssueRepo(run.phaseData, repoConfig.repo);
|
|
33
|
+
if (options.dryRun) {
|
|
34
|
+
return { queued: true, reason: 'Would queue a context-aware continue pass' };
|
|
35
|
+
}
|
|
36
|
+
const followup = await buildFollowupContext({
|
|
37
|
+
forge,
|
|
38
|
+
issueRepo,
|
|
39
|
+
issueNumber,
|
|
40
|
+
prNumber: run.prNumber,
|
|
41
|
+
runEndedAt: run.endedAt,
|
|
42
|
+
previousError: run.lastError,
|
|
43
|
+
botUser,
|
|
44
|
+
});
|
|
45
|
+
const existingPhaseData = run.phaseData ?? {};
|
|
46
|
+
const resumePhase = resolveResumePhase(run.currentPhase, existingPhaseData);
|
|
47
|
+
// Atomic state transition: update run + release leases in a single
|
|
48
|
+
// DB transaction so a crash in between cannot leave the issue
|
|
49
|
+
// queued-but-leased.
|
|
50
|
+
const transition = db.transaction(() => {
|
|
51
|
+
runManager.update(run.id, {
|
|
52
|
+
status: 'queued',
|
|
53
|
+
currentPhase: resumePhase,
|
|
54
|
+
endedAt: null,
|
|
55
|
+
lastError: null,
|
|
56
|
+
blockReason: null,
|
|
57
|
+
phaseData: {
|
|
58
|
+
...existingPhaseData,
|
|
59
|
+
issueRepo,
|
|
60
|
+
reactionType: followup.primaryType,
|
|
61
|
+
reactionSummary: followup.summary,
|
|
62
|
+
reactionContext: followup.context,
|
|
63
|
+
continueRequestedAt: nowUtcIso(),
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
leaseManager.release(issueRepo, issueNumber);
|
|
67
|
+
if (issueRepo !== repoConfig.repo) {
|
|
68
|
+
leaseManager.release(repoConfig.repo, issueNumber);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
transition();
|
|
72
|
+
try {
|
|
73
|
+
const issue = await forge.getIssue(issueRepo, issueNumber);
|
|
74
|
+
await transitionLabels(forge, issueRepo, issueNumber, issue.labels, run.status, 'queued', buildLabelConfig(repoConfig, issue.labels));
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
logger.warn({ repo: issueRepo, issueNumber, err }, 'Failed to transition labels for continue queue');
|
|
78
|
+
}
|
|
79
|
+
await commentStatus(forge, issueRepo, issueNumber, botUser, `Queued continue pass. ${followup.summary}`);
|
|
80
|
+
logger.info({
|
|
81
|
+
repo: issueRepo,
|
|
82
|
+
issueNumber,
|
|
83
|
+
runId: run.id,
|
|
84
|
+
primaryType: followup.primaryType,
|
|
85
|
+
}, 'Queued issue for continue pass');
|
|
86
|
+
return { queued: true, reason: `Queued for continue pass (${followup.summary})` };
|
|
87
|
+
}
|
|
88
|
+
function resolveResumePhase(currentPhase, phaseData) {
|
|
89
|
+
if (typeof currentPhase === 'string' && currentPhase.trim().length > 0) {
|
|
90
|
+
return currentPhase;
|
|
91
|
+
}
|
|
92
|
+
for (const phase of PHASE_CHECKPOINT_FALLBACK_ORDER) {
|
|
93
|
+
if (isCheckpointArtifact(phaseData[phase])) {
|
|
94
|
+
return phase;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
function isCheckpointArtifact(value) {
|
|
100
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
101
|
+
}
|
|
102
|
+
async function buildFollowupContext(params) {
|
|
103
|
+
const { forge, issueRepo, issueNumber, prNumber, runEndedAt, previousError, botUser, } = params;
|
|
104
|
+
const sections = [];
|
|
105
|
+
const summaryParts = [];
|
|
106
|
+
if (previousError?.trim()) {
|
|
107
|
+
sections.push(`## Previous Run State\n\n${previousError.trim()}`);
|
|
108
|
+
}
|
|
109
|
+
const reactions = await collectReactions({
|
|
110
|
+
forge,
|
|
111
|
+
issueRepo,
|
|
112
|
+
issueNumber,
|
|
113
|
+
prNumber,
|
|
114
|
+
botUser,
|
|
115
|
+
});
|
|
116
|
+
if (reactions.length > 0) {
|
|
117
|
+
sections.push(formatReactionSection(reactions));
|
|
118
|
+
summaryParts.push(...summarizeReactionTypes(reactions.map((reaction) => reaction.type)));
|
|
119
|
+
}
|
|
120
|
+
const comments = await collectConversationComments({
|
|
121
|
+
forge,
|
|
122
|
+
issueRepo,
|
|
123
|
+
issueNumber,
|
|
124
|
+
runEndedAt,
|
|
125
|
+
botUser,
|
|
126
|
+
});
|
|
127
|
+
if (comments.length > 0) {
|
|
128
|
+
sections.push(formatConversationComments(comments));
|
|
129
|
+
summaryParts.push('new PR comments');
|
|
130
|
+
}
|
|
131
|
+
if (sections.length === 0) {
|
|
132
|
+
sections.push('No new CI failures, merge conflicts, or review comments were detected. Re-evaluate the existing branch and finish the PR.');
|
|
133
|
+
}
|
|
134
|
+
const dedupedSummaryParts = [...new Set(summaryParts)];
|
|
135
|
+
const summary = dedupedSummaryParts.length > 0
|
|
136
|
+
? `Continue requested with ${dedupedSummaryParts.join(', ')}`
|
|
137
|
+
: 'Continue requested — re-evaluate and complete the PR';
|
|
138
|
+
return {
|
|
139
|
+
primaryType: 'continue',
|
|
140
|
+
summary,
|
|
141
|
+
context: sections.join('\n\n'),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
async function collectReactions(params) {
|
|
145
|
+
const { forge, issueRepo, issueNumber, prNumber, botUser } = params;
|
|
146
|
+
if (!prNumber)
|
|
147
|
+
return [];
|
|
148
|
+
try {
|
|
149
|
+
const scanResult = await scanForReactions(forge, issueRepo, prNumber, issueNumber, botUser, EMPTY_CURSOR);
|
|
150
|
+
return scanResult.reactions;
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
logger.warn({ repo: issueRepo, issueNumber, prNumber, err }, 'Failed to scan reactions for continue queue');
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async function collectConversationComments(params) {
|
|
158
|
+
const { forge, issueRepo, issueNumber, runEndedAt, botUser } = params;
|
|
159
|
+
let comments;
|
|
160
|
+
try {
|
|
161
|
+
comments = await forge.listIssueComments(issueRepo, issueNumber);
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
logger.warn({ repo: issueRepo, issueNumber, err }, 'Failed to list issue comments for continue queue');
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
const runEndedAtMs = parseUtcTimestampMs(runEndedAt);
|
|
168
|
+
const hasRunEndTime = Number.isFinite(runEndedAtMs);
|
|
169
|
+
const filtered = comments.filter((comment) => {
|
|
170
|
+
if (!comment.body.trim())
|
|
171
|
+
return false;
|
|
172
|
+
if (comment.user === botUser)
|
|
173
|
+
return false;
|
|
174
|
+
if (COMMENT_COMMAND_RE.test(comment.body))
|
|
175
|
+
return false;
|
|
176
|
+
if (!hasRunEndTime)
|
|
177
|
+
return true;
|
|
178
|
+
const createdAtMs = parseUtcTimestampMs(comment.createdAt);
|
|
179
|
+
return Number.isFinite(createdAtMs) && createdAtMs > runEndedAtMs;
|
|
180
|
+
});
|
|
181
|
+
const selected = filtered.length > 0
|
|
182
|
+
? filtered
|
|
183
|
+
: comments
|
|
184
|
+
.filter((comment) => {
|
|
185
|
+
if (!comment.body.trim())
|
|
186
|
+
return false;
|
|
187
|
+
if (comment.user === botUser)
|
|
188
|
+
return false;
|
|
189
|
+
return !COMMENT_COMMAND_RE.test(comment.body);
|
|
190
|
+
})
|
|
191
|
+
.slice(-3);
|
|
192
|
+
return selected.slice(-10);
|
|
193
|
+
}
|
|
194
|
+
function formatReactionSection(reactions) {
|
|
195
|
+
const lines = ['## PR Signals Since Last Pass'];
|
|
196
|
+
for (const reaction of reactions) {
|
|
197
|
+
lines.push('');
|
|
198
|
+
lines.push(`### ${reaction.summary}`);
|
|
199
|
+
lines.push(reaction.context);
|
|
200
|
+
}
|
|
201
|
+
return lines.join('\n');
|
|
202
|
+
}
|
|
203
|
+
function formatConversationComments(comments) {
|
|
204
|
+
const lines = ['## New PR Conversation Comments'];
|
|
205
|
+
for (const comment of comments) {
|
|
206
|
+
lines.push('');
|
|
207
|
+
lines.push(`### ${comment.user} (${comment.createdAt})`);
|
|
208
|
+
lines.push(comment.body.trim());
|
|
209
|
+
}
|
|
210
|
+
return lines.join('\n');
|
|
211
|
+
}
|
|
212
|
+
function summarizeReactionTypes(types) {
|
|
213
|
+
const unique = [...new Set(types)];
|
|
214
|
+
return unique.map((type) => {
|
|
215
|
+
switch (type) {
|
|
216
|
+
case 'merge_conflict':
|
|
217
|
+
return 'merge conflicts';
|
|
218
|
+
case 'ci_failure':
|
|
219
|
+
return 'failing CI checks';
|
|
220
|
+
case 'human_review':
|
|
221
|
+
return 'requested review changes';
|
|
222
|
+
case 'review_comment':
|
|
223
|
+
return 'inline review comments';
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
async function commentStatus(forge, repo, issueNumber, botUser, message) {
|
|
228
|
+
try {
|
|
229
|
+
if (botUser) {
|
|
230
|
+
await upsertBotComment(forge, repo, issueNumber, STATUS_MARKER, `**night-orch**: ${message}`, botUser);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
await forge.commentOnIssue(repo, issueNumber, `**night-orch**: ${message}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
logger.warn({ repo, issueNumber, err }, 'Failed to post continue status comment');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=continue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continue.js","sourceRoot":"","sources":["../../src/ops/continue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
export interface CostOverrideResult {
|
|
3
|
+
runId: string;
|
|
4
|
+
repo: string;
|
|
5
|
+
issueNumber: number;
|
|
6
|
+
previousOverrideUsd: number | null;
|
|
7
|
+
overrideUsd: number | null;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Set or clear the cost budget override on the latest run for an issue.
|
|
11
|
+
* Pass `overrideUsd = null` to clear.
|
|
12
|
+
*
|
|
13
|
+
* Throws if no run exists for the issue, or if the amount is non-positive.
|
|
14
|
+
*/
|
|
15
|
+
export declare function setIssueCostOverride(db: Database.Database, repo: string, issueNumber: number, overrideUsd: number | null): CostOverrideResult;
|
|
16
|
+
//# sourceMappingURL=cost-override.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-override.d.ts","sourceRoot":"","sources":["../../src/ops/cost-override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAK1C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,kBAAkB,CAuBpB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CostTracker } from '../loop/cost.js';
|
|
2
|
+
import { RunManager } from '../state/runs.js';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Set or clear the cost budget override on the latest run for an issue.
|
|
6
|
+
* Pass `overrideUsd = null` to clear.
|
|
7
|
+
*
|
|
8
|
+
* Throws if no run exists for the issue, or if the amount is non-positive.
|
|
9
|
+
*/
|
|
10
|
+
export function setIssueCostOverride(db, repo, issueNumber, overrideUsd) {
|
|
11
|
+
const runManager = new RunManager(db);
|
|
12
|
+
const run = runManager.getByRepoAndIssue(repo, issueNumber);
|
|
13
|
+
if (!run) {
|
|
14
|
+
throw new Error(`No run found for ${repo}#${issueNumber}`);
|
|
15
|
+
}
|
|
16
|
+
const costTracker = new CostTracker(db);
|
|
17
|
+
const previous = costTracker.getRunBudgetOverride(run.id);
|
|
18
|
+
costTracker.setRunBudgetOverride(run.id, overrideUsd);
|
|
19
|
+
logger.info({ runId: run.id, repo, issueNumber, previousOverrideUsd: previous, overrideUsd }, overrideUsd === null ? 'Cleared run cost budget override' : 'Set run cost budget override');
|
|
20
|
+
return {
|
|
21
|
+
runId: run.id,
|
|
22
|
+
repo,
|
|
23
|
+
issueNumber,
|
|
24
|
+
previousOverrideUsd: previous,
|
|
25
|
+
overrideUsd,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=cost-override.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-override.js","sourceRoot":"","sources":["../../src/ops/cost-override.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAU3C;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAqB,EACrB,IAAY,EACZ,WAAmB,EACnB,WAA0B;IAE1B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,IAAI,WAAW,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzD,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IAErD,MAAM,CAAC,IAAI,CACT,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,EAChF,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,8BAA8B,CAC3F,CAAA;IAED,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,IAAI;QACJ,WAAW;QACX,mBAAmB,EAAE,QAAQ;QAC7B,WAAW;KACZ,CAAA;AACH,CAAC"}
|