hungry-ghost-hive 0.48.0 → 0.49.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/dist/agents/base-agent.d.ts +11 -11
- package/dist/agents/base-agent.d.ts.map +1 -1
- package/dist/agents/base-agent.js +25 -25
- package/dist/agents/base-agent.js.map +1 -1
- package/dist/agents/base-agent.test.js +2 -1
- package/dist/agents/base-agent.test.js.map +1 -1
- package/dist/agents/intermediate.d.ts +2 -0
- package/dist/agents/intermediate.d.ts.map +1 -1
- package/dist/agents/intermediate.js +25 -18
- package/dist/agents/intermediate.js.map +1 -1
- package/dist/agents/junior.d.ts +2 -0
- package/dist/agents/junior.d.ts.map +1 -1
- package/dist/agents/junior.js +25 -18
- package/dist/agents/junior.js.map +1 -1
- package/dist/agents/qa.d.ts +2 -0
- package/dist/agents/qa.d.ts.map +1 -1
- package/dist/agents/qa.js +47 -38
- package/dist/agents/qa.js.map +1 -1
- package/dist/agents/senior.d.ts +2 -0
- package/dist/agents/senior.d.ts.map +1 -1
- package/dist/agents/senior.js +40 -27
- package/dist/agents/senior.js.map +1 -1
- package/dist/agents/tech-lead.d.ts +2 -0
- package/dist/agents/tech-lead.d.ts.map +1 -1
- package/dist/agents/tech-lead.js +37 -31
- package/dist/agents/tech-lead.js.map +1 -1
- package/dist/cli/commands/add-repo.js +2 -2
- package/dist/cli/commands/add-repo.js.map +1 -1
- package/dist/cli/commands/add-repo.test.js +1 -1
- package/dist/cli/commands/add-repo.test.js.map +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +12 -10
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/agents.test.js +7 -7
- package/dist/cli/commands/agents.test.js.map +1 -1
- package/dist/cli/commands/approach.js +2 -2
- package/dist/cli/commands/approach.js.map +1 -1
- package/dist/cli/commands/approvals.js +7 -7
- package/dist/cli/commands/approvals.js.map +1 -1
- package/dist/cli/commands/approvals.test.js +8 -8
- package/dist/cli/commands/approvals.test.js.map +1 -1
- package/dist/cli/commands/assign.js +4 -4
- package/dist/cli/commands/assign.js.map +1 -1
- package/dist/cli/commands/assign.test.js +18 -16
- package/dist/cli/commands/assign.test.js.map +1 -1
- package/dist/cli/commands/cleanup.d.ts.map +1 -1
- package/dist/cli/commands/cleanup.js +8 -8
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/cleanup.test.js +5 -1
- package/dist/cli/commands/cleanup.test.js.map +1 -1
- package/dist/cli/commands/escalations.js +9 -7
- package/dist/cli/commands/escalations.js.map +1 -1
- package/dist/cli/commands/escalations.test.js +2 -2
- package/dist/cli/commands/escalations.test.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +48 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +4 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/manager/agent-monitoring.d.ts +2 -2
- package/dist/cli/commands/manager/agent-monitoring.d.ts.map +1 -1
- package/dist/cli/commands/manager/agent-monitoring.js +1 -1
- package/dist/cli/commands/manager/agent-monitoring.js.map +1 -1
- package/dist/cli/commands/manager/auditor-lifecycle.js +3 -3
- package/dist/cli/commands/manager/auditor-lifecycle.js.map +1 -1
- package/dist/cli/commands/manager/auditor-lifecycle.test.js +21 -14
- package/dist/cli/commands/manager/auditor-lifecycle.test.js.map +1 -1
- package/dist/cli/commands/manager/auto-reject-comment-only-reviews.test.js +28 -23
- package/dist/cli/commands/manager/auto-reject-comment-only-reviews.test.js.map +1 -1
- package/dist/cli/commands/manager/escalation-handler.d.ts +2 -2
- package/dist/cli/commands/manager/escalation-handler.d.ts.map +1 -1
- package/dist/cli/commands/manager/escalation-handler.js +11 -10
- package/dist/cli/commands/manager/escalation-handler.js.map +1 -1
- package/dist/cli/commands/manager/escalation-handler.test.js +8 -8
- package/dist/cli/commands/manager/escalation-handler.test.js.map +1 -1
- package/dist/cli/commands/manager/feature-sign-off.js +7 -7
- package/dist/cli/commands/manager/feature-sign-off.js.map +1 -1
- package/dist/cli/commands/manager/feature-sign-off.test.js +40 -31
- package/dist/cli/commands/manager/feature-sign-off.test.js.map +1 -1
- package/dist/cli/commands/manager/feature-test-result.d.ts.map +1 -1
- package/dist/cli/commands/manager/feature-test-result.js +12 -13
- package/dist/cli/commands/manager/feature-test-result.js.map +1 -1
- package/dist/cli/commands/manager/handoff-recovery.d.ts.map +1 -1
- package/dist/cli/commands/manager/handoff-recovery.js +14 -15
- package/dist/cli/commands/manager/handoff-recovery.js.map +1 -1
- package/dist/cli/commands/manager/index.d.ts.map +1 -1
- package/dist/cli/commands/manager/index.js +26 -26
- package/dist/cli/commands/manager/index.js.map +1 -1
- package/dist/cli/commands/manager/index.test.js +3 -3
- package/dist/cli/commands/manager/index.test.js.map +1 -1
- package/dist/cli/commands/manager/merged-story-cleanup.d.ts +2 -2
- package/dist/cli/commands/manager/merged-story-cleanup.d.ts.map +1 -1
- package/dist/cli/commands/manager/merged-story-cleanup.js +6 -7
- package/dist/cli/commands/manager/merged-story-cleanup.js.map +1 -1
- package/dist/cli/commands/manager/merged-story-cleanup.test.js +27 -18
- package/dist/cli/commands/manager/merged-story-cleanup.test.js.map +1 -1
- package/dist/cli/commands/manager/pr-sync-orchestrator.d.ts.map +1 -1
- package/dist/cli/commands/manager/pr-sync-orchestrator.js +46 -38
- package/dist/cli/commands/manager/pr-sync-orchestrator.js.map +1 -1
- package/dist/cli/commands/manager/qa-review-handler.d.ts.map +1 -1
- package/dist/cli/commands/manager/qa-review-handler.js +25 -22
- package/dist/cli/commands/manager/qa-review-handler.js.map +1 -1
- package/dist/cli/commands/manager/spin-down.d.ts.map +1 -1
- package/dist/cli/commands/manager/spin-down.js +23 -19
- package/dist/cli/commands/manager/spin-down.js.map +1 -1
- package/dist/cli/commands/manager/stale-escalations.d.ts +2 -3
- package/dist/cli/commands/manager/stale-escalations.d.ts.map +1 -1
- package/dist/cli/commands/manager/stale-escalations.js.map +1 -1
- package/dist/cli/commands/manager/stuck-story-helpers.js +8 -8
- package/dist/cli/commands/manager/stuck-story-helpers.js.map +1 -1
- package/dist/cli/commands/manager/stuck-story-processor.d.ts +2 -2
- package/dist/cli/commands/manager/stuck-story-processor.d.ts.map +1 -1
- package/dist/cli/commands/manager/stuck-story-processor.js +23 -22
- package/dist/cli/commands/manager/stuck-story-processor.js.map +1 -1
- package/dist/cli/commands/manager/tech-lead-lifecycle.js +6 -6
- package/dist/cli/commands/manager/tech-lead-lifecycle.js.map +1 -1
- package/dist/cli/commands/manager/types.d.ts +2 -3
- package/dist/cli/commands/manager/types.d.ts.map +1 -1
- package/dist/cli/commands/manager/types.js.map +1 -1
- package/dist/cli/commands/msg.test.js +2 -2
- package/dist/cli/commands/msg.test.js.map +1 -1
- package/dist/cli/commands/my-stories.d.ts.map +1 -1
- package/dist/cli/commands/my-stories.js +17 -18
- package/dist/cli/commands/my-stories.js.map +1 -1
- package/dist/cli/commands/my-stories.test.js +2 -2
- package/dist/cli/commands/my-stories.test.js.map +1 -1
- package/dist/cli/commands/nuke.test.js +1 -1
- package/dist/cli/commands/nuke.test.js.map +1 -1
- package/dist/cli/commands/pr.js +32 -32
- package/dist/cli/commands/pr.js.map +1 -1
- package/dist/cli/commands/pr.test.js +10 -6
- package/dist/cli/commands/pr.test.js.map +1 -1
- package/dist/cli/commands/progress.d.ts.map +1 -1
- package/dist/cli/commands/progress.js +4 -5
- package/dist/cli/commands/progress.js.map +1 -1
- package/dist/cli/commands/progress.test.js +1 -1
- package/dist/cli/commands/progress.test.js.map +1 -1
- package/dist/cli/commands/req-headless.test.d.ts +2 -0
- package/dist/cli/commands/req-headless.test.d.ts.map +1 -0
- package/dist/cli/commands/req-headless.test.js +128 -0
- package/dist/cli/commands/req-headless.test.js.map +1 -0
- package/dist/cli/commands/req-spawn.test.js +5 -1
- package/dist/cli/commands/req-spawn.test.js.map +1 -1
- package/dist/cli/commands/req.d.ts.map +1 -1
- package/dist/cli/commands/req.js +13 -14
- package/dist/cli/commands/req.js.map +1 -1
- package/dist/cli/commands/resume.d.ts.map +1 -1
- package/dist/cli/commands/resume.js +7 -8
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/resume.test.js +1 -1
- package/dist/cli/commands/resume.test.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +42 -40
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/status.test.js +1 -1
- package/dist/cli/commands/status.test.js.map +1 -1
- package/dist/cli/commands/stories.js +9 -9
- package/dist/cli/commands/stories.js.map +1 -1
- package/dist/cli/commands/stories.test.js +2 -2
- package/dist/cli/commands/stories.test.js.map +1 -1
- package/dist/cli/commands/teams.js +11 -11
- package/dist/cli/commands/teams.js.map +1 -1
- package/dist/cli/commands/teams.test.js +2 -2
- package/dist/cli/commands/teams.test.js.map +1 -1
- package/dist/cli/dashboard/index.d.ts +2 -2
- package/dist/cli/dashboard/index.d.ts.map +1 -1
- package/dist/cli/dashboard/index.js +29 -20
- package/dist/cli/dashboard/index.js.map +1 -1
- package/dist/cli/dashboard/index.test.js +34 -32
- package/dist/cli/dashboard/index.test.js.map +1 -1
- package/dist/cli/dashboard/panels/activity.d.ts +3 -3
- package/dist/cli/dashboard/panels/activity.d.ts.map +1 -1
- package/dist/cli/dashboard/panels/activity.js +1 -1
- package/dist/cli/dashboard/panels/activity.js.map +1 -1
- package/dist/cli/dashboard/panels/agents.d.ts +3 -3
- package/dist/cli/dashboard/panels/agents.d.ts.map +1 -1
- package/dist/cli/dashboard/panels/agents.js +2 -2
- package/dist/cli/dashboard/panels/agents.js.map +1 -1
- package/dist/cli/dashboard/panels/escalations.d.ts +3 -3
- package/dist/cli/dashboard/panels/escalations.d.ts.map +1 -1
- package/dist/cli/dashboard/panels/escalations.js +1 -1
- package/dist/cli/dashboard/panels/escalations.js.map +1 -1
- package/dist/cli/dashboard/panels/merge-queue.d.ts +3 -3
- package/dist/cli/dashboard/panels/merge-queue.d.ts.map +1 -1
- package/dist/cli/dashboard/panels/merge-queue.js +1 -1
- package/dist/cli/dashboard/panels/merge-queue.js.map +1 -1
- package/dist/cli/dashboard/panels/pipeline.d.ts +3 -3
- package/dist/cli/dashboard/panels/pipeline.d.ts.map +1 -1
- package/dist/cli/dashboard/panels/pipeline.js +1 -1
- package/dist/cli/dashboard/panels/pipeline.js.map +1 -1
- package/dist/config/schema.d.ts +85 -82
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/connectors/project-management/operations.d.ts +7 -7
- package/dist/connectors/project-management/operations.d.ts.map +1 -1
- package/dist/connectors/project-management/operations.js +2 -3
- package/dist/connectors/project-management/operations.js.map +1 -1
- package/dist/context-files/index.test.js +1 -0
- package/dist/context-files/index.test.js.map +1 -1
- package/dist/db/client.d.ts +6 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +7 -0
- package/dist/db/client.js.map +1 -1
- package/dist/db/postgres-provider.d.ts +43 -0
- package/dist/db/postgres-provider.d.ts.map +1 -0
- package/dist/db/postgres-provider.integration.test.d.ts +2 -0
- package/dist/db/postgres-provider.integration.test.d.ts.map +1 -0
- package/dist/db/postgres-provider.integration.test.js +399 -0
- package/dist/db/postgres-provider.integration.test.js.map +1 -0
- package/dist/db/postgres-provider.js +315 -0
- package/dist/db/postgres-provider.js.map +1 -0
- package/dist/db/postgres-provider.test.d.ts +2 -0
- package/dist/db/postgres-provider.test.d.ts.map +1 -0
- package/dist/db/postgres-provider.test.js +72 -0
- package/dist/db/postgres-provider.test.js.map +1 -0
- package/dist/db/provider.d.ts +59 -0
- package/dist/db/provider.d.ts.map +1 -0
- package/dist/db/provider.js +121 -0
- package/dist/db/provider.js.map +1 -0
- package/dist/db/provider.test.d.ts +2 -0
- package/dist/db/provider.test.d.ts.map +1 -0
- package/dist/db/provider.test.js +226 -0
- package/dist/db/provider.test.js.map +1 -0
- package/dist/db/queries/agents.d.ts +13 -13
- package/dist/db/queries/agents.d.ts.map +1 -1
- package/dist/db/queries/agents.js +27 -28
- package/dist/db/queries/agents.js.map +1 -1
- package/dist/db/queries/agents.test.js +113 -111
- package/dist/db/queries/agents.test.js.map +1 -1
- package/dist/db/queries/escalations.d.ts +16 -16
- package/dist/db/queries/escalations.d.ts.map +1 -1
- package/dist/db/queries/escalations.js +34 -35
- package/dist/db/queries/escalations.js.map +1 -1
- package/dist/db/queries/escalations.test.js +133 -131
- package/dist/db/queries/escalations.test.js.map +1 -1
- package/dist/db/queries/heartbeat.d.ts +5 -5
- package/dist/db/queries/heartbeat.d.ts.map +1 -1
- package/dist/db/queries/heartbeat.js +7 -23
- package/dist/db/queries/heartbeat.js.map +1 -1
- package/dist/db/queries/heartbeat.test.js +76 -76
- package/dist/db/queries/heartbeat.test.js.map +1 -1
- package/dist/db/queries/integration-sync.d.ts +7 -7
- package/dist/db/queries/integration-sync.d.ts.map +1 -1
- package/dist/db/queries/integration-sync.js +13 -14
- package/dist/db/queries/integration-sync.js.map +1 -1
- package/dist/db/queries/logs.d.ts +10 -10
- package/dist/db/queries/logs.d.ts.map +1 -1
- package/dist/db/queries/logs.js +44 -42
- package/dist/db/queries/logs.js.map +1 -1
- package/dist/db/queries/logs.test.js +149 -146
- package/dist/db/queries/logs.test.js.map +1 -1
- package/dist/db/queries/messages.d.ts +6 -6
- package/dist/db/queries/messages.d.ts.map +1 -1
- package/dist/db/queries/messages.js +12 -11
- package/dist/db/queries/messages.js.map +1 -1
- package/dist/db/queries/messages.test.js +47 -46
- package/dist/db/queries/messages.test.js.map +1 -1
- package/dist/db/queries/pull-requests.d.ts +18 -18
- package/dist/db/queries/pull-requests.d.ts.map +1 -1
- package/dist/db/queries/pull-requests.js +50 -48
- package/dist/db/queries/pull-requests.js.map +1 -1
- package/dist/db/queries/pull-requests.test.js +195 -198
- package/dist/db/queries/pull-requests.test.js.map +1 -1
- package/dist/db/queries/requirements.d.ts +8 -8
- package/dist/db/queries/requirements.d.ts.map +1 -1
- package/dist/db/queries/requirements.js +17 -18
- package/dist/db/queries/requirements.js.map +1 -1
- package/dist/db/queries/requirements.test.js +83 -81
- package/dist/db/queries/requirements.test.js.map +1 -1
- package/dist/db/queries/stories.d.ts +29 -29
- package/dist/db/queries/stories.d.ts.map +1 -1
- package/dist/db/queries/stories.js +58 -64
- package/dist/db/queries/stories.js.map +1 -1
- package/dist/db/queries/stories.test.js +172 -170
- package/dist/db/queries/stories.test.js.map +1 -1
- package/dist/db/queries/teams.d.ts +6 -6
- package/dist/db/queries/teams.d.ts.map +1 -1
- package/dist/db/queries/teams.js +11 -12
- package/dist/db/queries/teams.js.map +1 -1
- package/dist/db/queries/teams.test.js +36 -34
- package/dist/db/queries/teams.test.js.map +1 -1
- package/dist/integrations/jira/repair.test.js +26 -24
- package/dist/integrations/jira/repair.test.js.map +1 -1
- package/dist/integrations/jira/stories.d.ts +3 -3
- package/dist/integrations/jira/stories.d.ts.map +1 -1
- package/dist/integrations/jira/stories.js +12 -12
- package/dist/integrations/jira/stories.js.map +1 -1
- package/dist/integrations/jira/stories.test.js +10 -8
- package/dist/integrations/jira/stories.test.js.map +1 -1
- package/dist/integrations/jira/sync.d.ts +7 -7
- package/dist/integrations/jira/sync.d.ts.map +1 -1
- package/dist/integrations/jira/sync.js +17 -20
- package/dist/integrations/jira/sync.js.map +1 -1
- package/dist/integrations/jira/sync.test.js +63 -62
- package/dist/integrations/jira/sync.test.js.map +1 -1
- package/dist/integrations/jira/transitions.d.ts +3 -3
- package/dist/integrations/jira/transitions.d.ts.map +1 -1
- package/dist/integrations/jira/transitions.js +3 -3
- package/dist/integrations/jira/transitions.js.map +1 -1
- package/dist/orchestrator/agent-selector.d.ts +3 -3
- package/dist/orchestrator/agent-selector.d.ts.map +1 -1
- package/dist/orchestrator/agent-selector.js +5 -6
- package/dist/orchestrator/agent-selector.js.map +1 -1
- package/dist/orchestrator/dependency-resolver.d.ts +4 -4
- package/dist/orchestrator/dependency-resolver.d.ts.map +1 -1
- package/dist/orchestrator/dependency-resolver.js +6 -6
- package/dist/orchestrator/dependency-resolver.js.map +1 -1
- package/dist/orchestrator/feature-branch.d.ts +3 -3
- package/dist/orchestrator/feature-branch.d.ts.map +1 -1
- package/dist/orchestrator/feature-branch.js +9 -10
- package/dist/orchestrator/feature-branch.js.map +1 -1
- package/dist/orchestrator/feature-branch.test.js +80 -78
- package/dist/orchestrator/feature-branch.test.js.map +1 -1
- package/dist/orchestrator/orphan-recovery.d.ts +2 -2
- package/dist/orchestrator/orphan-recovery.d.ts.map +1 -1
- package/dist/orchestrator/orphan-recovery.js +10 -10
- package/dist/orchestrator/orphan-recovery.js.map +1 -1
- package/dist/orchestrator/scheduler.d.ts +4 -4
- package/dist/orchestrator/scheduler.d.ts.map +1 -1
- package/dist/orchestrator/scheduler.js +90 -76
- package/dist/orchestrator/scheduler.js.map +1 -1
- package/dist/orchestrator/scheduler.test.js +496 -374
- package/dist/orchestrator/scheduler.test.js.map +1 -1
- package/dist/utils/auto-merge.d.ts.map +1 -1
- package/dist/utils/auto-merge.js +74 -56
- package/dist/utils/auto-merge.js.map +1 -1
- package/dist/utils/auto-merge.test.js +101 -66
- package/dist/utils/auto-merge.test.js.map +1 -1
- package/dist/utils/cli-helpers.d.ts +5 -5
- package/dist/utils/cli-helpers.d.ts.map +1 -1
- package/dist/utils/cli-helpers.js +8 -9
- package/dist/utils/cli-helpers.js.map +1 -1
- package/dist/utils/cli-helpers.test.js +28 -30
- package/dist/utils/cli-helpers.test.js.map +1 -1
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +12 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/paths.test.js +1 -0
- package/dist/utils/paths.test.js.map +1 -1
- package/dist/utils/pr-sync.d.ts +10 -10
- package/dist/utils/pr-sync.d.ts.map +1 -1
- package/dist/utils/pr-sync.js +20 -21
- package/dist/utils/pr-sync.js.map +1 -1
- package/dist/utils/pr-sync.test.js +52 -50
- package/dist/utils/pr-sync.test.js.map +1 -1
- package/dist/utils/with-hive-context.d.ts.map +1 -1
- package/dist/utils/with-hive-context.js +70 -1
- package/dist/utils/with-hive-context.js.map +1 -1
- package/package.json +3 -1
- package/src/agents/base-agent.test.ts +2 -1
- package/src/agents/base-agent.ts +32 -28
- package/src/agents/intermediate.ts +27 -18
- package/src/agents/junior.ts +27 -18
- package/src/agents/qa.ts +54 -40
- package/src/agents/senior.ts +42 -27
- package/src/agents/tech-lead.ts +42 -32
- package/src/cli/commands/add-repo.test.ts +1 -1
- package/src/cli/commands/add-repo.ts +2 -2
- package/src/cli/commands/agents.test.ts +7 -7
- package/src/cli/commands/agents.ts +12 -10
- package/src/cli/commands/approach.ts +2 -2
- package/src/cli/commands/approvals.test.ts +8 -8
- package/src/cli/commands/approvals.ts +9 -7
- package/src/cli/commands/assign.test.ts +19 -18
- package/src/cli/commands/assign.ts +4 -4
- package/src/cli/commands/cleanup.test.ts +5 -1
- package/src/cli/commands/cleanup.ts +11 -9
- package/src/cli/commands/escalations.test.ts +2 -2
- package/src/cli/commands/escalations.ts +9 -7
- package/src/cli/commands/init.test.ts +5 -0
- package/src/cli/commands/init.ts +53 -5
- package/src/cli/commands/manager/agent-monitoring.ts +3 -3
- package/src/cli/commands/manager/auditor-lifecycle.test.ts +21 -14
- package/src/cli/commands/manager/auditor-lifecycle.ts +3 -3
- package/src/cli/commands/manager/auto-reject-comment-only-reviews.test.ts +28 -23
- package/src/cli/commands/manager/escalation-handler.test.ts +13 -13
- package/src/cli/commands/manager/escalation-handler.ts +19 -12
- package/src/cli/commands/manager/feature-sign-off.test.ts +40 -31
- package/src/cli/commands/manager/feature-sign-off.ts +7 -7
- package/src/cli/commands/manager/feature-test-result.ts +13 -16
- package/src/cli/commands/manager/handoff-recovery.ts +20 -20
- package/src/cli/commands/manager/index.test.ts +4 -4
- package/src/cli/commands/manager/index.ts +58 -59
- package/src/cli/commands/manager/merged-story-cleanup.test.ts +28 -19
- package/src/cli/commands/manager/merged-story-cleanup.ts +11 -14
- package/src/cli/commands/manager/pr-sync-orchestrator.ts +115 -110
- package/src/cli/commands/manager/qa-review-handler.ts +50 -63
- package/src/cli/commands/manager/spin-down.ts +27 -25
- package/src/cli/commands/manager/stale-escalations.ts +2 -3
- package/src/cli/commands/manager/stuck-story-helpers.ts +10 -10
- package/src/cli/commands/manager/stuck-story-processor.ts +56 -62
- package/src/cli/commands/manager/tech-lead-lifecycle.ts +6 -6
- package/src/cli/commands/manager/types.ts +2 -3
- package/src/cli/commands/msg.test.ts +2 -2
- package/src/cli/commands/my-stories.test.ts +4 -2
- package/src/cli/commands/my-stories.ts +22 -27
- package/src/cli/commands/nuke.test.ts +1 -1
- package/src/cli/commands/pr.test.ts +10 -6
- package/src/cli/commands/pr.ts +41 -32
- package/src/cli/commands/progress.test.ts +1 -1
- package/src/cli/commands/progress.ts +11 -6
- package/src/cli/commands/req-headless.test.ts +170 -0
- package/src/cli/commands/req-spawn.test.ts +12 -2
- package/src/cli/commands/req.ts +13 -14
- package/src/cli/commands/resume.test.ts +1 -1
- package/src/cli/commands/resume.ts +7 -8
- package/src/cli/commands/status.test.ts +1 -1
- package/src/cli/commands/status.ts +52 -40
- package/src/cli/commands/stories.test.ts +4 -2
- package/src/cli/commands/stories.ts +11 -11
- package/src/cli/commands/teams.test.ts +2 -2
- package/src/cli/commands/teams.ts +11 -11
- package/src/cli/dashboard/index.test.ts +35 -34
- package/src/cli/dashboard/index.ts +34 -23
- package/src/cli/dashboard/panels/activity.ts +10 -4
- package/src/cli/dashboard/panels/agents.ts +8 -5
- package/src/cli/dashboard/panels/escalations.ts +4 -4
- package/src/cli/dashboard/panels/merge-queue.ts +4 -4
- package/src/cli/dashboard/panels/pipeline.ts +10 -4
- package/src/config/schema.ts +1 -0
- package/src/connectors/project-management/operations.ts +9 -10
- package/src/context-files/index.test.ts +1 -0
- package/src/db/client.ts +17 -0
- package/src/db/pg-migrations/001-full-schema.sql +209 -0
- package/src/db/postgres-provider.integration.test.ts +574 -0
- package/src/db/postgres-provider.test.ts +97 -0
- package/src/db/postgres-provider.ts +364 -0
- package/src/db/provider.test.ts +283 -0
- package/src/db/provider.ts +161 -0
- package/src/db/queries/agents.test.ts +114 -113
- package/src/db/queries/agents.ts +50 -36
- package/src/db/queries/escalations.test.ts +134 -133
- package/src/db/queries/escalations.ts +72 -57
- package/src/db/queries/heartbeat.test.ts +77 -78
- package/src/db/queries/heartbeat.ts +24 -46
- package/src/db/queries/integration-sync.ts +26 -26
- package/src/db/queries/logs.test.ts +151 -148
- package/src/db/queries/logs.ts +78 -53
- package/src/db/queries/messages.test.ts +48 -50
- package/src/db/queries/messages.ts +26 -18
- package/src/db/queries/pull-requests.test.ts +194 -199
- package/src/db/queries/pull-requests.ts +117 -88
- package/src/db/queries/requirements.test.ts +84 -83
- package/src/db/queries/requirements.ts +33 -28
- package/src/db/queries/stories.test.ts +173 -172
- package/src/db/queries/stories.ts +141 -110
- package/src/db/queries/teams.test.ts +37 -36
- package/src/db/queries/teams.ts +22 -14
- package/src/integrations/jira/repair.test.ts +27 -26
- package/src/integrations/jira/stories.test.ts +15 -16
- package/src/integrations/jira/stories.ts +15 -15
- package/src/integrations/jira/sync.test.ts +68 -68
- package/src/integrations/jira/sync.ts +29 -39
- package/src/integrations/jira/transitions.ts +6 -6
- package/src/orchestrator/agent-selector.ts +9 -8
- package/src/orchestrator/dependency-resolver.ts +16 -7
- package/src/orchestrator/feature-branch.test.ts +85 -80
- package/src/orchestrator/feature-branch.ts +13 -14
- package/src/orchestrator/orphan-recovery.ts +14 -13
- package/src/orchestrator/scheduler.test.ts +536 -394
- package/src/orchestrator/scheduler.ts +129 -115
- package/src/utils/auto-merge.test.ts +102 -68
- package/src/utils/auto-merge.ts +161 -168
- package/src/utils/cli-helpers.test.ts +30 -32
- package/src/utils/cli-helpers.ts +15 -11
- package/src/utils/paths.test.ts +1 -0
- package/src/utils/paths.ts +14 -1
- package/src/utils/pr-sync.test.ts +55 -52
- package/src/utils/pr-sync.ts +27 -32
- package/src/utils/with-hive-context.ts +89 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
2
|
|
|
3
3
|
import { nanoid } from 'nanoid';
|
|
4
|
-
import type { Database } from 'sql.js';
|
|
5
4
|
import { extractPRNumber } from '../../utils/github.js';
|
|
6
5
|
import { normalizeStoryId } from '../../utils/story-id.js';
|
|
7
|
-
import {
|
|
6
|
+
import { type PullRequestRow, type StoryRow } from '../client.js';
|
|
7
|
+
import type { DatabaseProvider } from '../provider.js';
|
|
8
8
|
|
|
9
9
|
export type { PullRequestRow };
|
|
10
10
|
|
|
@@ -33,7 +33,10 @@ export interface UpdatePullRequestInput {
|
|
|
33
33
|
githubPrUrl?: string | null;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export function createPullRequest(
|
|
36
|
+
export async function createPullRequest(
|
|
37
|
+
provider: DatabaseProvider,
|
|
38
|
+
input: CreatePullRequestInput
|
|
39
|
+
): Promise<PullRequestRow> {
|
|
37
40
|
const id = `pr-${nanoid(8)}`;
|
|
38
41
|
const now = new Date().toISOString();
|
|
39
42
|
|
|
@@ -43,8 +46,7 @@ export function createPullRequest(db: Database, input: CreatePullRequestInput):
|
|
|
43
46
|
prNumber = extractPRNumber(input.githubPrUrl) || null;
|
|
44
47
|
}
|
|
45
48
|
|
|
46
|
-
run(
|
|
47
|
-
db,
|
|
49
|
+
await provider.run(
|
|
48
50
|
`
|
|
49
51
|
INSERT INTO pull_requests (id, story_id, team_id, branch_name, github_pr_number, github_pr_url, submitted_by, status, created_at, updated_at)
|
|
50
52
|
VALUES (?, ?, ?, ?, ?, ?, ?, 'queued', ?, ?)
|
|
@@ -62,32 +64,43 @@ export function createPullRequest(db: Database, input: CreatePullRequestInput):
|
|
|
62
64
|
]
|
|
63
65
|
);
|
|
64
66
|
|
|
65
|
-
return getPullRequestById(
|
|
67
|
+
return (await getPullRequestById(provider, id))!;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
export function getPullRequestById(
|
|
69
|
-
|
|
70
|
+
export async function getPullRequestById(
|
|
71
|
+
provider: DatabaseProvider,
|
|
72
|
+
id: string
|
|
73
|
+
): Promise<PullRequestRow | undefined> {
|
|
74
|
+
return await provider.queryOne<PullRequestRow>('SELECT * FROM pull_requests WHERE id = ?', [id]);
|
|
70
75
|
}
|
|
71
76
|
|
|
72
|
-
export function getPullRequestByStory(
|
|
73
|
-
|
|
77
|
+
export async function getPullRequestByStory(
|
|
78
|
+
provider: DatabaseProvider,
|
|
79
|
+
storyId: string
|
|
80
|
+
): Promise<PullRequestRow | undefined> {
|
|
81
|
+
return await provider.queryOne<PullRequestRow>('SELECT * FROM pull_requests WHERE story_id = ?', [
|
|
82
|
+
storyId,
|
|
83
|
+
]);
|
|
74
84
|
}
|
|
75
85
|
|
|
76
|
-
export function getPullRequestByGithubNumber(
|
|
77
|
-
|
|
86
|
+
export async function getPullRequestByGithubNumber(
|
|
87
|
+
provider: DatabaseProvider,
|
|
78
88
|
prNumber: number
|
|
79
|
-
): PullRequestRow | undefined {
|
|
80
|
-
return queryOne<PullRequestRow>(
|
|
81
|
-
|
|
82
|
-
|
|
89
|
+
): Promise<PullRequestRow | undefined> {
|
|
90
|
+
return await provider.queryOne<PullRequestRow>(
|
|
91
|
+
'SELECT * FROM pull_requests WHERE github_pr_number = ?',
|
|
92
|
+
[prNumber]
|
|
93
|
+
);
|
|
83
94
|
}
|
|
84
95
|
|
|
85
96
|
// Merge Queue functions
|
|
86
97
|
|
|
87
|
-
export function getMergeQueue(
|
|
98
|
+
export async function getMergeQueue(
|
|
99
|
+
provider: DatabaseProvider,
|
|
100
|
+
teamId?: string
|
|
101
|
+
): Promise<PullRequestRow[]> {
|
|
88
102
|
if (teamId) {
|
|
89
|
-
return queryAll<PullRequestRow>(
|
|
90
|
-
db,
|
|
103
|
+
return await provider.queryAll<PullRequestRow>(
|
|
91
104
|
`
|
|
92
105
|
SELECT * FROM pull_requests
|
|
93
106
|
WHERE team_id = ? AND status IN ('queued', 'reviewing')
|
|
@@ -96,27 +109,27 @@ export function getMergeQueue(db: Database, teamId?: string): PullRequestRow[] {
|
|
|
96
109
|
[teamId]
|
|
97
110
|
);
|
|
98
111
|
}
|
|
99
|
-
return queryAll<PullRequestRow>(
|
|
100
|
-
db,
|
|
101
|
-
`
|
|
112
|
+
return await provider.queryAll<PullRequestRow>(`
|
|
102
113
|
SELECT * FROM pull_requests
|
|
103
114
|
WHERE status IN ('queued', 'reviewing')
|
|
104
115
|
ORDER BY created_at ASC
|
|
105
|
-
`
|
|
106
|
-
);
|
|
116
|
+
`);
|
|
107
117
|
}
|
|
108
118
|
|
|
109
|
-
export function getNextInQueue(
|
|
119
|
+
export async function getNextInQueue(
|
|
120
|
+
provider: DatabaseProvider,
|
|
121
|
+
teamId?: string
|
|
122
|
+
): Promise<PullRequestRow | undefined> {
|
|
110
123
|
// Get the prioritized queue and return the first PR with status = 'queued'
|
|
111
|
-
const queue = getPrioritizedMergeQueue(
|
|
124
|
+
const queue = await getPrioritizedMergeQueue(provider, teamId);
|
|
112
125
|
return queue.find(pr => pr.status === 'queued');
|
|
113
126
|
}
|
|
114
127
|
|
|
115
|
-
export function getQueuePosition(
|
|
116
|
-
const pr = getPullRequestById(
|
|
128
|
+
export async function getQueuePosition(provider: DatabaseProvider, prId: string): Promise<number> {
|
|
129
|
+
const pr = await getPullRequestById(provider, prId);
|
|
117
130
|
if (!pr || !['queued', 'reviewing'].includes(pr.status)) return -1;
|
|
118
131
|
|
|
119
|
-
const queue = getPrioritizedMergeQueue(
|
|
132
|
+
const queue = await getPrioritizedMergeQueue(provider, pr.team_id || undefined);
|
|
120
133
|
return queue.findIndex(p => p.id === prId) + 1;
|
|
121
134
|
}
|
|
122
135
|
|
|
@@ -124,9 +137,11 @@ export function getQueuePosition(db: Database, prId: string): number {
|
|
|
124
137
|
* Check if a story's dependencies are satisfied (ready for QA review)
|
|
125
138
|
* A dependency is satisfied if the story is merged or in active development
|
|
126
139
|
*/
|
|
127
|
-
function areDependenciesSatisfied(
|
|
128
|
-
|
|
129
|
-
|
|
140
|
+
async function areDependenciesSatisfied(
|
|
141
|
+
provider: DatabaseProvider,
|
|
142
|
+
storyId: string
|
|
143
|
+
): Promise<boolean> {
|
|
144
|
+
const dependencies = await provider.queryAll<StoryRow>(
|
|
130
145
|
`
|
|
131
146
|
SELECT s.* FROM stories s
|
|
132
147
|
JOIN story_dependencies sd ON s.id = sd.depends_on_story_id
|
|
@@ -149,29 +164,34 @@ function areDependenciesSatisfied(db: Database, storyId: string): boolean {
|
|
|
149
164
|
}
|
|
150
165
|
|
|
151
166
|
// Priority scoring for merge queue
|
|
152
|
-
export function getPrioritizedMergeQueue(
|
|
153
|
-
|
|
167
|
+
export async function getPrioritizedMergeQueue(
|
|
168
|
+
provider: DatabaseProvider,
|
|
169
|
+
teamId?: string
|
|
170
|
+
): Promise<PullRequestRow[]> {
|
|
171
|
+
const baseQueue = await getMergeQueue(provider, teamId);
|
|
154
172
|
|
|
155
173
|
// Score by dependency satisfaction first, then by age
|
|
156
|
-
const scored =
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
174
|
+
const scored = await Promise.all(
|
|
175
|
+
baseQueue.map(async pr => {
|
|
176
|
+
// Get the story for this PR to check dependencies
|
|
177
|
+
let dependenciesSatisfied = true;
|
|
178
|
+
if (pr.story_id) {
|
|
179
|
+
dependenciesSatisfied = await areDependenciesSatisfied(provider, pr.story_id);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Scoring: dependencies satisfied = higher priority (larger score)
|
|
183
|
+
// Within each tier, older PRs get higher priority
|
|
184
|
+
const dependencyScore = dependenciesSatisfied ? 1 : 0;
|
|
185
|
+
const createdTime = new Date(pr.created_at).getTime();
|
|
186
|
+
const ageScore = -createdTime;
|
|
187
|
+
|
|
188
|
+
// Combined score: (dependencyScore * large_multiplier) + ageScore
|
|
189
|
+
// This ensures dependency satisfaction is the primary sort key
|
|
190
|
+
const score = dependencyScore * 1e15 + ageScore;
|
|
191
|
+
|
|
192
|
+
return { pr, score, dependenciesSatisfied };
|
|
193
|
+
})
|
|
194
|
+
);
|
|
175
195
|
|
|
176
196
|
// Sort by score (descending) = dependencies satisfied first, then older first
|
|
177
197
|
scored.sort((a, b) => b.score - a.score);
|
|
@@ -179,9 +199,11 @@ export function getPrioritizedMergeQueue(db: Database, teamId?: string): PullReq
|
|
|
179
199
|
return scored.map(item => item.pr);
|
|
180
200
|
}
|
|
181
201
|
|
|
182
|
-
export function getPullRequestsByStatus(
|
|
183
|
-
|
|
184
|
-
|
|
202
|
+
export async function getPullRequestsByStatus(
|
|
203
|
+
provider: DatabaseProvider,
|
|
204
|
+
status: PullRequestStatus
|
|
205
|
+
): Promise<PullRequestRow[]> {
|
|
206
|
+
return await provider.queryAll<PullRequestRow>(
|
|
185
207
|
`
|
|
186
208
|
SELECT * FROM pull_requests
|
|
187
209
|
WHERE status = ?
|
|
@@ -191,20 +213,21 @@ export function getPullRequestsByStatus(db: Database, status: PullRequestStatus)
|
|
|
191
213
|
);
|
|
192
214
|
}
|
|
193
215
|
|
|
194
|
-
export function getApprovedPullRequests(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
216
|
+
export async function getApprovedPullRequests(
|
|
217
|
+
provider: DatabaseProvider
|
|
218
|
+
): Promise<PullRequestRow[]> {
|
|
219
|
+
return await provider.queryAll<PullRequestRow>(`
|
|
198
220
|
SELECT * FROM pull_requests
|
|
199
221
|
WHERE status = 'approved'
|
|
200
222
|
ORDER BY created_at ASC
|
|
201
|
-
`
|
|
202
|
-
);
|
|
223
|
+
`);
|
|
203
224
|
}
|
|
204
225
|
|
|
205
|
-
export function getOpenPullRequestsByStory(
|
|
206
|
-
|
|
207
|
-
|
|
226
|
+
export async function getOpenPullRequestsByStory(
|
|
227
|
+
provider: DatabaseProvider,
|
|
228
|
+
storyId: string
|
|
229
|
+
): Promise<PullRequestRow[]> {
|
|
230
|
+
return await provider.queryAll<PullRequestRow>(
|
|
208
231
|
`
|
|
209
232
|
SELECT * FROM pull_requests
|
|
210
233
|
WHERE story_id = ? COLLATE NOCASE AND status IN ('queued', 'reviewing')
|
|
@@ -214,13 +237,17 @@ export function getOpenPullRequestsByStory(db: Database, storyId: string): PullR
|
|
|
214
237
|
);
|
|
215
238
|
}
|
|
216
239
|
|
|
217
|
-
export function getAllPullRequests(
|
|
218
|
-
return queryAll<PullRequestRow>(
|
|
240
|
+
export async function getAllPullRequests(provider: DatabaseProvider): Promise<PullRequestRow[]> {
|
|
241
|
+
return await provider.queryAll<PullRequestRow>(
|
|
242
|
+
'SELECT * FROM pull_requests ORDER BY created_at DESC'
|
|
243
|
+
);
|
|
219
244
|
}
|
|
220
245
|
|
|
221
|
-
export function getPullRequestsByTeam(
|
|
222
|
-
|
|
223
|
-
|
|
246
|
+
export async function getPullRequestsByTeam(
|
|
247
|
+
provider: DatabaseProvider,
|
|
248
|
+
teamId: string
|
|
249
|
+
): Promise<PullRequestRow[]> {
|
|
250
|
+
return await provider.queryAll<PullRequestRow>(
|
|
224
251
|
`
|
|
225
252
|
SELECT * FROM pull_requests
|
|
226
253
|
WHERE team_id = ?
|
|
@@ -230,11 +257,11 @@ export function getPullRequestsByTeam(db: Database, teamId: string): PullRequest
|
|
|
230
257
|
);
|
|
231
258
|
}
|
|
232
259
|
|
|
233
|
-
export function updatePullRequest(
|
|
234
|
-
|
|
260
|
+
export async function updatePullRequest(
|
|
261
|
+
provider: DatabaseProvider,
|
|
235
262
|
id: string,
|
|
236
263
|
input: UpdatePullRequestInput
|
|
237
|
-
): PullRequestRow | undefined {
|
|
264
|
+
): Promise<PullRequestRow | undefined> {
|
|
238
265
|
const updates: string[] = ['updated_at = ?'];
|
|
239
266
|
const values: (string | number | null)[] = [new Date().toISOString()];
|
|
240
267
|
|
|
@@ -264,25 +291,27 @@ export function updatePullRequest(
|
|
|
264
291
|
}
|
|
265
292
|
|
|
266
293
|
if (updates.length === 1) {
|
|
267
|
-
return getPullRequestById(
|
|
294
|
+
return await getPullRequestById(provider, id);
|
|
268
295
|
}
|
|
269
296
|
|
|
270
297
|
values.push(id);
|
|
271
|
-
run(
|
|
272
|
-
return getPullRequestById(
|
|
298
|
+
await provider.run(`UPDATE pull_requests SET ${updates.join(', ')} WHERE id = ?`, values);
|
|
299
|
+
return await getPullRequestById(provider, id);
|
|
273
300
|
}
|
|
274
301
|
|
|
275
|
-
export function deletePullRequest(
|
|
276
|
-
run(
|
|
302
|
+
export async function deletePullRequest(provider: DatabaseProvider, id: string): Promise<void> {
|
|
303
|
+
await provider.run('DELETE FROM pull_requests WHERE id = ?', [id]);
|
|
277
304
|
}
|
|
278
305
|
|
|
279
306
|
/**
|
|
280
307
|
* Check if an agent is actively reviewing a PR
|
|
281
308
|
* Returns true if the agent has a PR with status 'reviewing'
|
|
282
309
|
*/
|
|
283
|
-
export function isAgentReviewingPR(
|
|
284
|
-
|
|
285
|
-
|
|
310
|
+
export async function isAgentReviewingPR(
|
|
311
|
+
provider: DatabaseProvider,
|
|
312
|
+
agentId: string
|
|
313
|
+
): Promise<boolean> {
|
|
314
|
+
const result = await provider.queryOne<{ count: number }>(
|
|
286
315
|
`
|
|
287
316
|
SELECT COUNT(*) as count FROM pull_requests
|
|
288
317
|
WHERE reviewed_by = ? AND status = 'reviewing'
|
|
@@ -297,20 +326,20 @@ export function isAgentReviewingPR(db: Database, agentId: string): boolean {
|
|
|
297
326
|
* This is an idempotent operation - it only updates PRs with NULL github_pr_number
|
|
298
327
|
* @returns Number of PRs updated
|
|
299
328
|
*/
|
|
300
|
-
export function backfillGithubPrNumbers(
|
|
301
|
-
const prsToBackfill = queryAll<PullRequestRow>(
|
|
302
|
-
db,
|
|
303
|
-
`
|
|
329
|
+
export async function backfillGithubPrNumbers(provider: DatabaseProvider): Promise<number> {
|
|
330
|
+
const prsToBackfill = await provider.queryAll<PullRequestRow>(`
|
|
304
331
|
SELECT * FROM pull_requests
|
|
305
332
|
WHERE github_pr_number IS NULL AND github_pr_url IS NOT NULL
|
|
306
|
-
`
|
|
307
|
-
);
|
|
333
|
+
`);
|
|
308
334
|
|
|
309
335
|
let updated = 0;
|
|
310
336
|
for (const pr of prsToBackfill) {
|
|
311
337
|
const prNumber = extractPRNumber(pr.github_pr_url!);
|
|
312
338
|
if (prNumber) {
|
|
313
|
-
run(
|
|
339
|
+
await provider.run('UPDATE pull_requests SET github_pr_number = ? WHERE id = ?', [
|
|
340
|
+
prNumber,
|
|
341
|
+
pr.id,
|
|
342
|
+
]);
|
|
314
343
|
updated++;
|
|
315
344
|
}
|
|
316
345
|
}
|