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
package/dist/agents/qa.js
CHANGED
|
@@ -14,11 +14,18 @@ export class QAAgent extends BaseAgent {
|
|
|
14
14
|
constructor(context) {
|
|
15
15
|
super(context);
|
|
16
16
|
this.qaConfig = context.qaConfig;
|
|
17
|
+
}
|
|
18
|
+
async init(context) {
|
|
17
19
|
if (context.agentRow.team_id) {
|
|
18
|
-
this.team = getTeamById(this.db, context.agentRow.team_id) || null;
|
|
19
|
-
this.pendingStories = getStoriesByStatus(this.db, 'qa').filter(s => s.team_id === context.agentRow.team_id);
|
|
20
|
+
this.team = (await getTeamById(this.db, context.agentRow.team_id)) || null;
|
|
21
|
+
this.pendingStories = (await getStoriesByStatus(this.db, 'qa')).filter(s => s.team_id === context.agentRow.team_id);
|
|
20
22
|
}
|
|
21
23
|
}
|
|
24
|
+
static async create(context) {
|
|
25
|
+
const agent = new QAAgent(context);
|
|
26
|
+
await agent.init(context);
|
|
27
|
+
return agent;
|
|
28
|
+
}
|
|
22
29
|
getSystemPrompt() {
|
|
23
30
|
const teamInfo = this.team
|
|
24
31
|
? `Team: ${this.team.name}\nRepository: ${this.team.repo_path}`
|
|
@@ -56,7 +63,7 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
56
63
|
}
|
|
57
64
|
async execute() {
|
|
58
65
|
if (this.pendingStories.length === 0) {
|
|
59
|
-
this.log('STORY_QA_STARTED', 'No stories pending QA');
|
|
66
|
+
await this.log('STORY_QA_STARTED', 'No stories pending QA');
|
|
60
67
|
return;
|
|
61
68
|
}
|
|
62
69
|
for (const story of this.pendingStories) {
|
|
@@ -64,52 +71,52 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
64
71
|
}
|
|
65
72
|
}
|
|
66
73
|
async processStory(story) {
|
|
67
|
-
this.setCurrentTask(story.id, 'qa');
|
|
68
|
-
this.log('STORY_QA_STARTED', `QA for story: ${story.title}`, { storyId: story.id });
|
|
74
|
+
await this.setCurrentTask(story.id, 'qa');
|
|
75
|
+
await this.log('STORY_QA_STARTED', `QA for story: ${story.title}`, { storyId: story.id });
|
|
69
76
|
// Checkout the branch
|
|
70
77
|
if (story.branch_name) {
|
|
71
78
|
try {
|
|
72
79
|
await execa('git', ['checkout', story.branch_name], { cwd: this.workDir });
|
|
73
80
|
}
|
|
74
81
|
catch (err) {
|
|
75
|
-
this.log('STORY_QA_FAILED', `Failed to checkout branch: ${err instanceof Error ? err.message : 'Unknown error'}`, {
|
|
82
|
+
await this.log('STORY_QA_FAILED', `Failed to checkout branch: ${err instanceof Error ? err.message : 'Unknown error'}`, {
|
|
76
83
|
storyId: story.id,
|
|
77
84
|
});
|
|
78
|
-
updateStory(this.db, story.id, { status: 'qa_failed' }, this.storiesDir);
|
|
79
|
-
this.checkAndEscalate(story);
|
|
85
|
+
await updateStory(this.db, story.id, { status: 'qa_failed' }, this.storiesDir);
|
|
86
|
+
await this.checkAndEscalate(story);
|
|
80
87
|
return;
|
|
81
88
|
}
|
|
82
89
|
}
|
|
83
90
|
// Run quality checks
|
|
84
91
|
const qualityPassed = await this.runQualityChecks(story.id);
|
|
85
92
|
if (!qualityPassed) {
|
|
86
|
-
updateStory(this.db, story.id, { status: 'qa_failed' });
|
|
87
|
-
this.checkAndEscalate(story);
|
|
93
|
+
await updateStory(this.db, story.id, { status: 'qa_failed' });
|
|
94
|
+
await this.checkAndEscalate(story);
|
|
88
95
|
return;
|
|
89
96
|
}
|
|
90
97
|
// Run build
|
|
91
98
|
const buildPassed = await this.runBuild(story.id);
|
|
92
99
|
if (!buildPassed) {
|
|
93
|
-
updateStory(this.db, story.id, { status: 'qa_failed' });
|
|
94
|
-
this.checkAndEscalate(story);
|
|
100
|
+
await updateStory(this.db, story.id, { status: 'qa_failed' });
|
|
101
|
+
await this.checkAndEscalate(story);
|
|
95
102
|
return;
|
|
96
103
|
}
|
|
97
104
|
// Run tests if configured
|
|
98
105
|
if (this.qaConfig.testCommand) {
|
|
99
106
|
const testsPassed = await this.runTests(story.id);
|
|
100
107
|
if (!testsPassed) {
|
|
101
|
-
updateStory(this.db, story.id, { status: 'qa_failed' }, this.storiesDir);
|
|
102
|
-
this.checkAndEscalate(story);
|
|
108
|
+
await updateStory(this.db, story.id, { status: 'qa_failed' }, this.storiesDir);
|
|
109
|
+
await this.checkAndEscalate(story);
|
|
103
110
|
return;
|
|
104
111
|
}
|
|
105
112
|
}
|
|
106
113
|
// All checks passed
|
|
107
|
-
this.log('STORY_QA_PASSED', 'All QA checks passed', { storyId: story.id });
|
|
114
|
+
await this.log('STORY_QA_PASSED', 'All QA checks passed', { storyId: story.id });
|
|
108
115
|
// Create PR
|
|
109
116
|
await this.createPR(story);
|
|
110
117
|
}
|
|
111
118
|
async runQualityChecks(storyId) {
|
|
112
|
-
this.log('CODE_QUALITY_CHECK_STARTED', 'Running quality checks', { storyId });
|
|
119
|
+
await this.log('CODE_QUALITY_CHECK_STARTED', 'Running quality checks', { storyId });
|
|
113
120
|
for (const check of this.qaConfig.qualityChecks) {
|
|
114
121
|
try {
|
|
115
122
|
const [cmd, ...args] = check.split(' ');
|
|
@@ -117,27 +124,27 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
117
124
|
}
|
|
118
125
|
catch (err) {
|
|
119
126
|
const error = err;
|
|
120
|
-
this.log('CODE_QUALITY_CHECK_FAILED', `Check failed: ${check}`, {
|
|
127
|
+
await this.log('CODE_QUALITY_CHECK_FAILED', `Check failed: ${check}`, {
|
|
121
128
|
storyId,
|
|
122
129
|
error: error.stderr || error.stdout,
|
|
123
130
|
});
|
|
124
131
|
return false;
|
|
125
132
|
}
|
|
126
133
|
}
|
|
127
|
-
this.log('CODE_QUALITY_CHECK_PASSED', 'All quality checks passed', { storyId });
|
|
134
|
+
await this.log('CODE_QUALITY_CHECK_PASSED', 'All quality checks passed', { storyId });
|
|
128
135
|
return true;
|
|
129
136
|
}
|
|
130
137
|
async runBuild(storyId) {
|
|
131
|
-
this.log('BUILD_STARTED', 'Running build', { storyId });
|
|
138
|
+
await this.log('BUILD_STARTED', 'Running build', { storyId });
|
|
132
139
|
try {
|
|
133
140
|
const [cmd, ...args] = this.qaConfig.buildCommand.split(' ');
|
|
134
141
|
await execa(cmd, args, { cwd: this.workDir });
|
|
135
|
-
this.log('BUILD_PASSED', 'Build succeeded', { storyId });
|
|
142
|
+
await this.log('BUILD_PASSED', 'Build succeeded', { storyId });
|
|
136
143
|
return true;
|
|
137
144
|
}
|
|
138
145
|
catch (err) {
|
|
139
146
|
const error = err;
|
|
140
|
-
this.log('BUILD_FAILED', 'Build failed', {
|
|
147
|
+
await this.log('BUILD_FAILED', 'Build failed', {
|
|
141
148
|
storyId,
|
|
142
149
|
error: error.stderr || error.stdout,
|
|
143
150
|
});
|
|
@@ -147,16 +154,16 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
147
154
|
async runTests(storyId) {
|
|
148
155
|
if (!this.qaConfig.testCommand)
|
|
149
156
|
return true;
|
|
150
|
-
this.log('BUILD_STARTED', 'Running tests', { storyId });
|
|
157
|
+
await this.log('BUILD_STARTED', 'Running tests', { storyId });
|
|
151
158
|
try {
|
|
152
159
|
const [cmd, ...args] = this.qaConfig.testCommand.split(' ');
|
|
153
160
|
await execa(cmd, args, { cwd: this.workDir });
|
|
154
|
-
this.log('BUILD_PASSED', 'Tests passed', { storyId });
|
|
161
|
+
await this.log('BUILD_PASSED', 'Tests passed', { storyId });
|
|
155
162
|
return true;
|
|
156
163
|
}
|
|
157
164
|
catch (err) {
|
|
158
165
|
const error = err;
|
|
159
|
-
this.log('BUILD_FAILED', 'Tests failed', {
|
|
166
|
+
await this.log('BUILD_FAILED', 'Tests failed', {
|
|
160
167
|
storyId,
|
|
161
168
|
error: error.stderr || error.stdout,
|
|
162
169
|
});
|
|
@@ -165,14 +172,16 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
165
172
|
}
|
|
166
173
|
async createPR(story) {
|
|
167
174
|
if (!story.branch_name) {
|
|
168
|
-
this.log('STORY_PR_CREATED', 'No branch name, skipping PR creation', {
|
|
169
|
-
|
|
175
|
+
await this.log('STORY_PR_CREATED', 'No branch name, skipping PR creation', {
|
|
176
|
+
storyId: story.id,
|
|
177
|
+
});
|
|
178
|
+
await updateStory(this.db, story.id, { status: 'pr_submitted' }, this.storiesDir);
|
|
170
179
|
return;
|
|
171
180
|
}
|
|
172
181
|
// Check if PR already exists
|
|
173
|
-
const existingPR = getPullRequestByStory(this.db, story.id);
|
|
182
|
+
const existingPR = await getPullRequestByStory(this.db, story.id);
|
|
174
183
|
if (existingPR) {
|
|
175
|
-
this.log('STORY_PR_CREATED', 'PR already exists', {
|
|
184
|
+
await this.log('STORY_PR_CREATED', 'PR already exists', {
|
|
176
185
|
storyId: story.id,
|
|
177
186
|
prUrl: existingPR.github_pr_url,
|
|
178
187
|
});
|
|
@@ -199,7 +208,7 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
199
208
|
const prNumberMatch = prUrl.match(/\/pull\/(\d+)/);
|
|
200
209
|
const prNumber = prNumberMatch ? parseInt(prNumberMatch[1], 10) : undefined;
|
|
201
210
|
// Create PR record
|
|
202
|
-
const pr = createPullRequest(this.db, {
|
|
211
|
+
const pr = await createPullRequest(this.db, {
|
|
203
212
|
storyId: story.id,
|
|
204
213
|
teamId: story.team_id,
|
|
205
214
|
branchName: story.branch_name || `feature/${story.id}`,
|
|
@@ -207,11 +216,11 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
207
216
|
githubPrUrl: prUrl,
|
|
208
217
|
});
|
|
209
218
|
// Update story
|
|
210
|
-
updateStory(this.db, story.id, {
|
|
219
|
+
await updateStory(this.db, story.id, {
|
|
211
220
|
prUrl,
|
|
212
221
|
status: 'pr_submitted',
|
|
213
222
|
}, this.storiesDir);
|
|
214
|
-
this.log('STORY_PR_CREATED', `PR created: ${prUrl}`, {
|
|
223
|
+
await this.log('STORY_PR_CREATED', `PR created: ${prUrl}`, {
|
|
215
224
|
storyId: story.id,
|
|
216
225
|
prId: pr.id,
|
|
217
226
|
prNumber,
|
|
@@ -219,26 +228,26 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
219
228
|
}
|
|
220
229
|
catch (err) {
|
|
221
230
|
const error = err;
|
|
222
|
-
this.log('STORY_PR_CREATED', `Failed to create PR: ${error.stderr || 'Unknown error'}`, {
|
|
231
|
+
await this.log('STORY_PR_CREATED', `Failed to create PR: ${error.stderr || 'Unknown error'}`, {
|
|
223
232
|
storyId: story.id,
|
|
224
233
|
});
|
|
225
234
|
// Still mark as pr_submitted since QA passed
|
|
226
|
-
updateStory(this.db, story.id, { status: 'pr_submitted' }, this.storiesDir);
|
|
235
|
+
await updateStory(this.db, story.id, { status: 'pr_submitted' }, this.storiesDir);
|
|
227
236
|
}
|
|
228
237
|
}
|
|
229
|
-
checkAndEscalate(story) {
|
|
230
|
-
const failureCount = countQaFailuresByStory(this.db, story.id);
|
|
238
|
+
async checkAndEscalate(story) {
|
|
239
|
+
const failureCount = await countQaFailuresByStory(this.db, story.id);
|
|
231
240
|
if (failureCount >= 3) {
|
|
232
241
|
// Find the senior agent for the team
|
|
233
|
-
const seniorAgents = getAgentsByType(this.db, 'senior').filter(a => a.team_id === story.team_id);
|
|
242
|
+
const seniorAgents = (await getAgentsByType(this.db, 'senior')).filter(a => a.team_id === story.team_id);
|
|
234
243
|
if (seniorAgents.length > 0) {
|
|
235
|
-
const escalation = createEscalation(this.db, {
|
|
244
|
+
const escalation = await createEscalation(this.db, {
|
|
236
245
|
storyId: story.id,
|
|
237
246
|
fromAgentId: this.agentId,
|
|
238
247
|
toAgentId: seniorAgents[0].id,
|
|
239
248
|
reason: `Story failed QA ${failureCount} times. Needs senior review and assistance.`,
|
|
240
249
|
});
|
|
241
|
-
this.log('ESCALATION_CREATED', `Story escalated after ${failureCount} QA failures`, {
|
|
250
|
+
await this.log('ESCALATION_CREATED', `Story escalated after ${failureCount} QA failures`, {
|
|
242
251
|
storyId: story.id,
|
|
243
252
|
escalationId: escalation.id,
|
|
244
253
|
failureCount,
|
package/dist/agents/qa.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qa.js","sourceRoot":"","sources":["../../src/agents/qa.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAU/D,MAAM,OAAO,OAAQ,SAAQ,SAAS;IAC5B,IAAI,GAAmB,IAAI,CAAC;IAC5B,QAAQ,CAAwB;IAChC,cAAc,GAAe,EAAE,CAAC;IAExC,YAAY,OAAkB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"qa.js","sourceRoot":"","sources":["../../src/agents/qa.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/senior.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export declare class SeniorAgent extends BaseAgent {
|
|
|
6
6
|
private team;
|
|
7
7
|
private assignedStories;
|
|
8
8
|
constructor(context: SeniorContext);
|
|
9
|
+
private init;
|
|
10
|
+
static create(context: SeniorContext): Promise<SeniorAgent>;
|
|
9
11
|
getSystemPrompt(): string;
|
|
10
12
|
execute(): Promise<void>;
|
|
11
13
|
private analyzeCodebase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senior.d.ts","sourceRoot":"","sources":["../../src/agents/senior.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,OAAO,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"senior.d.ts","sourceRoot":"","sources":["../../src/agents/senior.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,OAAO,EAAE,aAAa;YAIpB,IAAI;WASL,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAMjE,eAAe,IAAI,MAAM;IAuCnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBhB,eAAe;YAwBf,YAAY;YAQZ,cAAc;YAmEd,WAAW;IAoDnB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBxD"}
|
package/dist/agents/senior.js
CHANGED
|
@@ -9,11 +9,18 @@ export class SeniorAgent extends BaseAgent {
|
|
|
9
9
|
assignedStories = [];
|
|
10
10
|
constructor(context) {
|
|
11
11
|
super(context);
|
|
12
|
+
}
|
|
13
|
+
async init(context) {
|
|
12
14
|
if (context.teamId) {
|
|
13
|
-
this.team = getTeamById(this.db, context.teamId) || null;
|
|
14
|
-
this.assignedStories = getStoriesByTeam(this.db, context.teamId).filter(s => ['planned', 'in_progress', 'review'].includes(s.status));
|
|
15
|
+
this.team = (await getTeamById(this.db, context.teamId)) || null;
|
|
16
|
+
this.assignedStories = (await getStoriesByTeam(this.db, context.teamId)).filter(s => ['planned', 'in_progress', 'review'].includes(s.status));
|
|
15
17
|
}
|
|
16
18
|
}
|
|
19
|
+
static async create(context) {
|
|
20
|
+
const agent = new SeniorAgent(context);
|
|
21
|
+
await agent.init(context);
|
|
22
|
+
return agent;
|
|
23
|
+
}
|
|
17
24
|
getSystemPrompt() {
|
|
18
25
|
const teamInfo = this.team
|
|
19
26
|
? `Team: ${this.team.name}\nRepository: ${this.team.repo_url}\nPath: ${this.team.repo_path}`
|
|
@@ -51,10 +58,10 @@ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
|
|
|
51
58
|
}
|
|
52
59
|
async execute() {
|
|
53
60
|
if (!this.team) {
|
|
54
|
-
this.log('CODEBASE_SWEEP_STARTED', 'No team assigned, waiting for assignment');
|
|
61
|
+
await this.log('CODEBASE_SWEEP_STARTED', 'No team assigned, waiting for assignment');
|
|
55
62
|
return;
|
|
56
63
|
}
|
|
57
|
-
this.log('CODEBASE_SWEEP_STARTED', `Analyzing codebase for ${this.team.name}`);
|
|
64
|
+
await this.log('CODEBASE_SWEEP_STARTED', `Analyzing codebase for ${this.team.name}`);
|
|
58
65
|
// Perform codebase sweep
|
|
59
66
|
await this.analyzeCodebase();
|
|
60
67
|
// Process assigned stories
|
|
@@ -82,30 +89,30 @@ Please identify:
|
|
|
82
89
|
This will help with story estimation and implementation.`;
|
|
83
90
|
const analysis = await this.chat(prompt);
|
|
84
91
|
this.memoryState.context.codebaseNotes = analysis;
|
|
85
|
-
this.saveMemoryState();
|
|
86
|
-
this.log('CODEBASE_SWEEP_COMPLETED', 'Codebase analysis complete', {
|
|
92
|
+
await this.saveMemoryState();
|
|
93
|
+
await this.log('CODEBASE_SWEEP_COMPLETED', 'Codebase analysis complete', {
|
|
87
94
|
summary: analysis.substring(0, 200),
|
|
88
95
|
});
|
|
89
96
|
}
|
|
90
97
|
async processStory(story) {
|
|
91
|
-
this.setCurrentTask(story.id, 'processing');
|
|
92
|
-
this.log('STORY_STARTED', `Processing story: ${story.title}`, { storyId: story.id });
|
|
98
|
+
await this.setCurrentTask(story.id, 'processing');
|
|
99
|
+
await this.log('STORY_STARTED', `Processing story: ${story.title}`, { storyId: story.id });
|
|
93
100
|
// Implement all stories directly - the Scheduler handles routing to appropriate agents
|
|
94
101
|
await this.implementStory(story);
|
|
95
102
|
}
|
|
96
103
|
async implementStory(story) {
|
|
97
104
|
// Update assignment
|
|
98
|
-
updateStory(this.db, story.id, {
|
|
105
|
+
await updateStory(this.db, story.id, {
|
|
99
106
|
assignedAgentId: this.agentId,
|
|
100
107
|
status: 'in_progress',
|
|
101
108
|
}, this.storiesDir);
|
|
102
|
-
updateAgent(this.db, this.agentId, { currentStoryId: story.id });
|
|
109
|
+
await updateAgent(this.db, this.agentId, { currentStoryId: story.id });
|
|
103
110
|
// Create feature branch
|
|
104
111
|
const branchName = `feature/${story.id.toLowerCase()}-${story.title
|
|
105
112
|
.toLowerCase()
|
|
106
113
|
.replace(/[^a-z0-9]+/g, '-')
|
|
107
114
|
.substring(0, 30)}`;
|
|
108
|
-
this.log('STORY_STARTED', `Implementing: ${story.title}`, { branchName });
|
|
115
|
+
await this.log('STORY_STARTED', `Implementing: ${story.title}`, { branchName });
|
|
109
116
|
const prompt = `Implement this story:
|
|
110
117
|
|
|
111
118
|
## Story: ${story.id}
|
|
@@ -128,16 +135,16 @@ ${story.acceptance_criteria ? JSON.parse(story.acceptance_criteria).join('\n- ')
|
|
|
128
135
|
|
|
129
136
|
Let me know when you're ready to proceed or if you have questions.`;
|
|
130
137
|
const response = await this.chat(prompt);
|
|
131
|
-
this.updateTaskProgress('Implementation started', []);
|
|
138
|
+
await this.updateTaskProgress('Implementation started', []);
|
|
132
139
|
// Continue the conversation to complete implementation
|
|
133
140
|
// In a real scenario, this would be an iterative process
|
|
134
|
-
this.log('STORY_PROGRESS_UPDATE', response.substring(0, 200), { storyId: story.id });
|
|
141
|
+
await this.log('STORY_PROGRESS_UPDATE', response.substring(0, 200), { storyId: story.id });
|
|
135
142
|
// Mark for review when done (simplified)
|
|
136
|
-
updateStory(this.db, story.id, {
|
|
143
|
+
await updateStory(this.db, story.id, {
|
|
137
144
|
branchName,
|
|
138
145
|
status: 'review',
|
|
139
146
|
}, this.storiesDir);
|
|
140
|
-
this.log('STORY_COMPLETED', `Implementation complete, ready for review`, {
|
|
147
|
+
await this.log('STORY_COMPLETED', `Implementation complete, ready for review`, {
|
|
141
148
|
storyId: story.id,
|
|
142
149
|
branchName,
|
|
143
150
|
});
|
|
@@ -145,11 +152,15 @@ Let me know when you're ready to proceed or if you have questions.`;
|
|
|
145
152
|
async reviewStory(story) {
|
|
146
153
|
if (story.assigned_agent_id === this.agentId) {
|
|
147
154
|
// Self-review, move to QA
|
|
148
|
-
updateStory(this.db, story.id, { status: 'qa' }, this.storiesDir);
|
|
149
|
-
this.log('STORY_REVIEW_REQUESTED', 'Self-implemented, moving to QA', {
|
|
155
|
+
await updateStory(this.db, story.id, { status: 'qa' }, this.storiesDir);
|
|
156
|
+
await this.log('STORY_REVIEW_REQUESTED', 'Self-implemented, moving to QA', {
|
|
157
|
+
storyId: story.id,
|
|
158
|
+
});
|
|
150
159
|
return;
|
|
151
160
|
}
|
|
152
|
-
this.log('STORY_REVIEW_REQUESTED', `Reviewing story: ${story.title}`, {
|
|
161
|
+
await this.log('STORY_REVIEW_REQUESTED', `Reviewing story: ${story.title}`, {
|
|
162
|
+
storyId: story.id,
|
|
163
|
+
});
|
|
153
164
|
const prompt = `Review the code for this story:
|
|
154
165
|
|
|
155
166
|
## Story: ${story.id}
|
|
@@ -170,31 +181,33 @@ If issues found, describe them. If approved, confirm.`;
|
|
|
170
181
|
review.toLowerCase().includes('fix');
|
|
171
182
|
if (hasIssues) {
|
|
172
183
|
// Send back for fixes
|
|
173
|
-
updateStory(this.db, story.id, { status: 'in_progress' }, this.storiesDir);
|
|
174
|
-
this.log('STORY_PROGRESS_UPDATE', 'Review issues found, sent back for fixes', {
|
|
184
|
+
await updateStory(this.db, story.id, { status: 'in_progress' }, this.storiesDir);
|
|
185
|
+
await this.log('STORY_PROGRESS_UPDATE', 'Review issues found, sent back for fixes', {
|
|
175
186
|
storyId: story.id,
|
|
176
187
|
review: review.substring(0, 200),
|
|
177
188
|
});
|
|
178
189
|
}
|
|
179
190
|
else {
|
|
180
191
|
// Approve and move to QA
|
|
181
|
-
updateStory(this.db, story.id, { status: 'qa' }, this.storiesDir);
|
|
182
|
-
this.log('STORY_REVIEW_REQUESTED', 'Review passed, moving to QA', {
|
|
192
|
+
await updateStory(this.db, story.id, { status: 'qa' }, this.storiesDir);
|
|
193
|
+
await this.log('STORY_REVIEW_REQUESTED', 'Review passed, moving to QA', {
|
|
194
|
+
storyId: story.id,
|
|
195
|
+
});
|
|
183
196
|
}
|
|
184
197
|
}
|
|
185
198
|
async escalateToTechLead(reason) {
|
|
186
|
-
const techLead = getTechLead(this.db);
|
|
187
|
-
const escalation = createEscalation(this.db, {
|
|
199
|
+
const techLead = await getTechLead(this.db);
|
|
200
|
+
const escalation = await createEscalation(this.db, {
|
|
188
201
|
storyId: this.memoryState.currentTask?.storyId,
|
|
189
202
|
fromAgentId: this.agentId,
|
|
190
203
|
toAgentId: techLead?.id,
|
|
191
204
|
reason,
|
|
192
205
|
});
|
|
193
|
-
this.log('ESCALATION_CREATED', reason, {
|
|
206
|
+
await this.log('ESCALATION_CREATED', reason, {
|
|
194
207
|
escalationId: escalation.id,
|
|
195
208
|
});
|
|
196
|
-
this.updateStatus('blocked');
|
|
197
|
-
this.addBlocker(`Escalated to Tech Lead: ${reason}`);
|
|
209
|
+
await this.updateStatus('blocked');
|
|
210
|
+
await this.addBlocker(`Escalated to Tech Lead: ${reason}`);
|
|
198
211
|
}
|
|
199
212
|
}
|
|
200
213
|
//# sourceMappingURL=senior.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senior.js","sourceRoot":"","sources":["../../src/agents/senior.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAM/D,MAAM,OAAO,WAAY,SAAQ,SAAS;IAChC,IAAI,GAAmB,IAAI,CAAC;IAC5B,eAAe,GAAe,EAAE,CAAC;IAEzC,YAAY,OAAsB;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"senior.js","sourceRoot":"","sources":["../../src/agents/senior.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export declare class TechLeadAgent extends BaseAgent {
|
|
|
7
7
|
private requirementId?;
|
|
8
8
|
private requirement?;
|
|
9
9
|
constructor(context: TechLeadContext);
|
|
10
|
+
private init;
|
|
11
|
+
static create(context: TechLeadContext): Promise<TechLeadAgent>;
|
|
10
12
|
getSystemPrompt(): string;
|
|
11
13
|
execute(): Promise<void>;
|
|
12
14
|
private analyzeRequirement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tech-lead.d.ts","sourceRoot":"","sources":["../../src/agents/tech-lead.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tech-lead.d.ts","sourceRoot":"","sources":["../../src/agents/tech-lead.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAiB;gBAEzB,OAAO,EAAE,eAAe;YAKtB,IAAI;WAQL,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAMrE,eAAe,IAAI,MAAM;IA0CnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA+BhB,kBAAkB;YAyElB,aAAa;YA8Db,qBAAqB;IAgGnC,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,cAAc;YAWR,mBAAmB;YA0DnB,eAAe;CAe9B"}
|