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,33 +1,32 @@
|
|
|
1
1
|
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
2
|
import { nanoid } from 'nanoid';
|
|
3
|
-
|
|
4
|
-
export function createSyncRecord(db, input) {
|
|
3
|
+
export async function createSyncRecord(db, input) {
|
|
5
4
|
const id = `SYNC-${nanoid(8).toUpperCase()}`;
|
|
6
5
|
const now = new Date().toISOString();
|
|
7
|
-
run(
|
|
6
|
+
await db.run(`
|
|
8
7
|
INSERT INTO integration_sync (id, entity_type, entity_id, provider, external_id, last_synced_at, sync_status, created_at, updated_at)
|
|
9
8
|
VALUES (?, ?, ?, ?, ?, ?, 'synced', ?, ?)
|
|
10
9
|
`, [id, input.entityType, input.entityId, input.provider, input.externalId, now, now, now]);
|
|
11
|
-
return getSyncRecordById(db, id);
|
|
10
|
+
return (await getSyncRecordById(db, id));
|
|
12
11
|
}
|
|
13
|
-
export function getSyncRecordById(db, id) {
|
|
14
|
-
return queryOne(
|
|
12
|
+
export async function getSyncRecordById(db, id) {
|
|
13
|
+
return await db.queryOne('SELECT * FROM integration_sync WHERE id = ?', [id]);
|
|
15
14
|
}
|
|
16
|
-
export function getSyncRecordByEntity(db, entityType, entityId, provider) {
|
|
17
|
-
return queryOne(
|
|
15
|
+
export async function getSyncRecordByEntity(db, entityType, entityId, provider) {
|
|
16
|
+
return await db.queryOne('SELECT * FROM integration_sync WHERE entity_type = ? AND entity_id = ? AND provider = ?', [entityType, entityId, provider]);
|
|
18
17
|
}
|
|
19
|
-
export function updateSyncStatus(db, id, status, errorMessage) {
|
|
18
|
+
export async function updateSyncStatus(db, id, status, errorMessage) {
|
|
20
19
|
const now = new Date().toISOString();
|
|
21
|
-
run(
|
|
20
|
+
await db.run(`
|
|
22
21
|
UPDATE integration_sync
|
|
23
22
|
SET sync_status = ?, error_message = ?, last_synced_at = ?, updated_at = ?
|
|
24
23
|
WHERE id = ?
|
|
25
24
|
`, [status, errorMessage || null, now, now, id]);
|
|
26
25
|
}
|
|
27
|
-
export function getSyncRecordsByProvider(db, provider) {
|
|
28
|
-
return queryAll(
|
|
26
|
+
export async function getSyncRecordsByProvider(db, provider) {
|
|
27
|
+
return await db.queryAll('SELECT * FROM integration_sync WHERE provider = ? ORDER BY created_at DESC', [provider]);
|
|
29
28
|
}
|
|
30
|
-
export function getFailedSyncRecords(db) {
|
|
31
|
-
return queryAll(
|
|
29
|
+
export async function getFailedSyncRecords(db) {
|
|
30
|
+
return await db.queryAll("SELECT * FROM integration_sync WHERE sync_status = 'failed' ORDER BY created_at DESC");
|
|
32
31
|
}
|
|
33
32
|
//# sourceMappingURL=integration-sync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-sync.js","sourceRoot":"","sources":["../../../src/db/queries/integration-sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"integration-sync.js","sourceRoot":"","sources":["../../../src/db/queries/integration-sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AA2BhC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,KAA4B;IAE5B,MAAM,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,EAAE,CAAC,GAAG,CACV;;;GAGD,EACC,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACxF,CAAC;IAEF,OAAO,CAAC,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAoB,EACpB,EAAU;IAEV,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAqB,6CAA6C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAoB,EACpB,UAA0B,EAC1B,QAAgB,EAChB,QAAsB;IAEtB,OAAO,MAAM,EAAE,CAAC,QAAQ,CACtB,yFAAyF,EACzF,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,EAAU,EACV,MAAkB,EAClB,YAA4B;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,EAAE,CAAC,GAAG,CACV;;;;GAID,EACC,CAAC,MAAM,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAoB,EACpB,QAAsB;IAEtB,OAAO,MAAM,EAAE,CAAC,QAAQ,CACtB,4EAA4E,EAC5E,CAAC,QAAQ,CAAC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAoB;IAC7D,OAAO,MAAM,EAAE,CAAC,QAAQ,CACtB,sFAAsF,CACvF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Database } from 'sql.js';
|
|
2
1
|
import { type AgentLogRow } from '../client.js';
|
|
2
|
+
import type { DatabaseProvider } from '../provider.js';
|
|
3
3
|
export type { AgentLogRow };
|
|
4
4
|
export type EventType = 'AGENT_SPAWNED' | 'AGENT_SPAWN_FAILED' | 'AGENT_TERMINATED' | 'AGENT_RESUMED' | 'AGENT_CHECKPOINT' | 'WORKTREE_REMOVAL_FAILED' | 'REQUIREMENT_RECEIVED' | 'PLANNING_STARTED' | 'PLANNING_COMPLETED' | 'STORY_CREATED' | 'STORY_ESTIMATED' | 'STORY_ASSIGNED' | 'STORY_STARTED' | 'STORY_PROGRESS_UPDATE' | 'STORY_COMPLETED' | 'STORY_REVIEW_REQUESTED' | 'STORY_QA_STARTED' | 'STORY_QA_PASSED' | 'STORY_QA_FAILED' | 'STORY_PR_CREATED' | 'STORY_MERGED' | 'DUPLICATE_ASSIGNMENT_PREVENTED' | 'ORPHANED_STORY_RECOVERED' | 'CODEBASE_SWEEP_STARTED' | 'CODEBASE_SWEEP_COMPLETED' | 'BUILD_STARTED' | 'BUILD_PASSED' | 'BUILD_FAILED' | 'CODE_QUALITY_CHECK_STARTED' | 'CODE_QUALITY_CHECK_PASSED' | 'CODE_QUALITY_CHECK_FAILED' | 'ESCALATION_CREATED' | 'ESCALATION_RESOLVED' | 'TEAM_SCALED_UP' | 'TEAM_SCALED_DOWN' | 'QA_SPAWNED' | 'PR_SUBMITTED' | 'PR_REVIEW_STARTED' | 'PR_APPROVED' | 'PR_MERGED' | 'PR_REJECTED' | 'PR_CLOSED' | 'PR_MERGE_FAILED' | 'PR_MERGE_SKIPPED' | 'PR_SYNC_SKIPPED' | 'JIRA_SYNC_STARTED' | 'JIRA_SYNC_COMPLETED' | 'JIRA_SYNC_WARNING' | 'JIRA_EPIC_CREATED' | 'JIRA_STORY_CREATED' | 'JIRA_TRANSITION_SUCCESS' | 'JIRA_TRANSITION_FAILED' | 'JIRA_BOARD_POLL_STARTED' | 'JIRA_BOARD_POLL_COMPLETED' | 'JIRA_EPIC_INGESTED' | 'JIRA_ASSIGNMENT_REPAIRED' | 'JIRA_ASSIGNMENT_REPAIR_FAILED' | 'APPROACH_POSTED' | 'FEATURE_BRANCH_CREATED' | 'FEATURE_BRANCH_FAILED' | 'FEATURE_TEST_SPAWNED' | 'FEATURE_SIGN_OFF_TRIGGERED' | 'FEATURE_SIGN_OFF_PASSED' | 'FEATURE_SIGN_OFF_FAILED';
|
|
5
5
|
export interface CreateLogInput {
|
|
@@ -10,13 +10,13 @@ export interface CreateLogInput {
|
|
|
10
10
|
message?: string | null;
|
|
11
11
|
metadata?: Record<string, unknown> | null;
|
|
12
12
|
}
|
|
13
|
-
export declare function createLog(
|
|
14
|
-
export declare function getLogById(
|
|
15
|
-
export declare function getLogsByAgent(
|
|
16
|
-
export declare function getLogsByStory(
|
|
17
|
-
export declare function getLogsByEventType(
|
|
18
|
-
export declare function getRecentLogs(
|
|
19
|
-
export declare function getLogsSince(
|
|
20
|
-
export declare function countQaFailuresByStory(
|
|
21
|
-
export declare function pruneOldLogs(
|
|
13
|
+
export declare function createLog(provider: DatabaseProvider, input: CreateLogInput): Promise<AgentLogRow>;
|
|
14
|
+
export declare function getLogById(provider: DatabaseProvider, id: number): Promise<AgentLogRow | undefined>;
|
|
15
|
+
export declare function getLogsByAgent(provider: DatabaseProvider, agentId: string, limit?: number): Promise<AgentLogRow[]>;
|
|
16
|
+
export declare function getLogsByStory(provider: DatabaseProvider, storyId: string): Promise<AgentLogRow[]>;
|
|
17
|
+
export declare function getLogsByEventType(provider: DatabaseProvider, eventType: EventType, limit?: number): Promise<AgentLogRow[]>;
|
|
18
|
+
export declare function getRecentLogs(provider: DatabaseProvider, limit?: number): Promise<AgentLogRow[]>;
|
|
19
|
+
export declare function getLogsSince(provider: DatabaseProvider, since: string): Promise<AgentLogRow[]>;
|
|
20
|
+
export declare function countQaFailuresByStory(provider: DatabaseProvider, storyId: string): Promise<number>;
|
|
21
|
+
export declare function pruneOldLogs(provider: DatabaseProvider, retentionDays: number): Promise<number>;
|
|
22
22
|
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/db/queries/logs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/db/queries/logs.ts"],"names":[],"mappings":"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"}
|
package/dist/db/queries/logs.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
|
-
import { queryAll, queryOne, run } from '../client.js';
|
|
3
2
|
function inferAgentType(agentId) {
|
|
4
3
|
const normalized = agentId.toLowerCase();
|
|
5
4
|
if (normalized.includes('qa'))
|
|
@@ -12,22 +11,21 @@ function inferAgentType(agentId) {
|
|
|
12
11
|
return 'junior';
|
|
13
12
|
return 'tech_lead';
|
|
14
13
|
}
|
|
15
|
-
function getAgentColumnNames(
|
|
16
|
-
const
|
|
17
|
-
if (result.length === 0)
|
|
18
|
-
return new Set();
|
|
14
|
+
async function getAgentColumnNames(provider) {
|
|
15
|
+
const rows = await provider.queryAll('PRAGMA table_info(agents)');
|
|
19
16
|
const columnNames = new Set();
|
|
20
|
-
for (const row of
|
|
21
|
-
|
|
22
|
-
columnNames.add(String(row[1]));
|
|
17
|
+
for (const row of rows) {
|
|
18
|
+
columnNames.add(row.name);
|
|
23
19
|
}
|
|
24
20
|
return columnNames;
|
|
25
21
|
}
|
|
26
|
-
function ensureLogAgentExists(
|
|
27
|
-
const existing = queryOne(
|
|
22
|
+
async function ensureLogAgentExists(provider, agentId) {
|
|
23
|
+
const existing = await provider.queryOne('SELECT id FROM agents WHERE id = ?', [
|
|
24
|
+
agentId,
|
|
25
|
+
]);
|
|
28
26
|
if (existing?.id)
|
|
29
27
|
return;
|
|
30
|
-
const columns = getAgentColumnNames(
|
|
28
|
+
const columns = await getAgentColumnNames(provider);
|
|
31
29
|
const now = new Date().toISOString();
|
|
32
30
|
const insertColumns = ['id'];
|
|
33
31
|
const insertValues = [agentId];
|
|
@@ -52,40 +50,44 @@ function ensureLogAgentExists(db, agentId) {
|
|
|
52
50
|
insertValues.push(now);
|
|
53
51
|
}
|
|
54
52
|
const placeholders = insertColumns.map(() => '?').join(', ');
|
|
55
|
-
run(
|
|
53
|
+
await provider.run(`
|
|
56
54
|
INSERT OR IGNORE INTO agents (${insertColumns.join(', ')})
|
|
57
55
|
VALUES (${placeholders})
|
|
58
56
|
`, insertValues);
|
|
59
57
|
}
|
|
60
|
-
function resolveLogAgentId(
|
|
61
|
-
const direct = queryOne(
|
|
58
|
+
async function resolveLogAgentId(provider, rawAgentId) {
|
|
59
|
+
const direct = await provider.queryOne('SELECT id FROM agents WHERE id = ?', [
|
|
60
|
+
rawAgentId,
|
|
61
|
+
]);
|
|
62
62
|
if (direct?.id)
|
|
63
63
|
return direct.id;
|
|
64
|
-
const columns = getAgentColumnNames(
|
|
64
|
+
const columns = await getAgentColumnNames(provider);
|
|
65
65
|
// Many call-sites provide tmux session names (for example: "hive-qa-team-1").
|
|
66
66
|
// Prefer resolving those back to canonical agent IDs so logs remain linked.
|
|
67
67
|
if (columns.has('tmux_session')) {
|
|
68
|
-
const bySession = queryOne(
|
|
68
|
+
const bySession = await provider.queryOne(`SELECT id FROM agents WHERE tmux_session = ?${columns.has('updated_at') ? ' ORDER BY updated_at DESC' : ''} LIMIT 1`, [rawAgentId]);
|
|
69
69
|
if (bySession?.id)
|
|
70
70
|
return bySession.id;
|
|
71
71
|
}
|
|
72
72
|
// Last resort: create a lightweight synthetic agent row for system/session actors
|
|
73
73
|
// like "manager" or "scheduler" so FK constraints cannot fail logging.
|
|
74
|
-
ensureLogAgentExists(
|
|
74
|
+
await ensureLogAgentExists(provider, rawAgentId);
|
|
75
75
|
return rawAgentId;
|
|
76
76
|
}
|
|
77
|
-
function resolveLogStoryId(
|
|
77
|
+
async function resolveLogStoryId(provider, storyId) {
|
|
78
78
|
if (!storyId)
|
|
79
79
|
return null;
|
|
80
|
-
const story = queryOne(
|
|
80
|
+
const story = await provider.queryOne('SELECT id FROM stories WHERE id = ?', [
|
|
81
|
+
storyId,
|
|
82
|
+
]);
|
|
81
83
|
return story?.id || null;
|
|
82
84
|
}
|
|
83
|
-
export function createLog(
|
|
85
|
+
export async function createLog(provider, input) {
|
|
84
86
|
const metadata = input.metadata ? JSON.stringify(input.metadata) : null;
|
|
85
87
|
const now = new Date().toISOString();
|
|
86
|
-
const resolvedAgentId = resolveLogAgentId(
|
|
87
|
-
const resolvedStoryId = resolveLogStoryId(
|
|
88
|
-
run(
|
|
88
|
+
const resolvedAgentId = await resolveLogAgentId(provider, input.agentId);
|
|
89
|
+
const resolvedStoryId = await resolveLogStoryId(provider, input.storyId);
|
|
90
|
+
await provider.run(`
|
|
89
91
|
INSERT INTO agent_logs (agent_id, story_id, event_type, status, message, metadata, timestamp)
|
|
90
92
|
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
91
93
|
`, [
|
|
@@ -98,66 +100,66 @@ export function createLog(db, input) {
|
|
|
98
100
|
now,
|
|
99
101
|
]);
|
|
100
102
|
// Get the last inserted row
|
|
101
|
-
const result = queryOne(
|
|
102
|
-
return getLogById(
|
|
103
|
+
const result = await provider.queryOne('SELECT last_insert_rowid() as id');
|
|
104
|
+
return (await getLogById(provider, result?.id || 0));
|
|
103
105
|
}
|
|
104
|
-
export function getLogById(
|
|
105
|
-
return queryOne(
|
|
106
|
+
export async function getLogById(provider, id) {
|
|
107
|
+
return await provider.queryOne('SELECT * FROM agent_logs WHERE id = ?', [id]);
|
|
106
108
|
}
|
|
107
|
-
export function getLogsByAgent(
|
|
108
|
-
return queryAll(
|
|
109
|
+
export async function getLogsByAgent(provider, agentId, limit = 100) {
|
|
110
|
+
return await provider.queryAll(`
|
|
109
111
|
SELECT * FROM agent_logs
|
|
110
112
|
WHERE agent_id = ?
|
|
111
113
|
ORDER BY timestamp DESC
|
|
112
114
|
LIMIT ?
|
|
113
115
|
`, [agentId, limit]);
|
|
114
116
|
}
|
|
115
|
-
export function getLogsByStory(
|
|
116
|
-
return queryAll(
|
|
117
|
+
export async function getLogsByStory(provider, storyId) {
|
|
118
|
+
return await provider.queryAll(`
|
|
117
119
|
SELECT * FROM agent_logs
|
|
118
120
|
WHERE story_id = ?
|
|
119
121
|
ORDER BY timestamp DESC
|
|
120
122
|
`, [storyId]);
|
|
121
123
|
}
|
|
122
|
-
export function getLogsByEventType(
|
|
123
|
-
return queryAll(
|
|
124
|
+
export async function getLogsByEventType(provider, eventType, limit = 100) {
|
|
125
|
+
return await provider.queryAll(`
|
|
124
126
|
SELECT * FROM agent_logs
|
|
125
127
|
WHERE event_type = ?
|
|
126
128
|
ORDER BY timestamp DESC
|
|
127
129
|
LIMIT ?
|
|
128
130
|
`, [eventType, limit]);
|
|
129
131
|
}
|
|
130
|
-
export function getRecentLogs(
|
|
131
|
-
return queryAll(
|
|
132
|
+
export async function getRecentLogs(provider, limit = 50) {
|
|
133
|
+
return await provider.queryAll(`
|
|
132
134
|
SELECT * FROM agent_logs
|
|
133
135
|
ORDER BY timestamp DESC
|
|
134
136
|
LIMIT ?
|
|
135
137
|
`, [limit]);
|
|
136
138
|
}
|
|
137
|
-
export function getLogsSince(
|
|
138
|
-
return queryAll(
|
|
139
|
+
export async function getLogsSince(provider, since) {
|
|
140
|
+
return await provider.queryAll(`
|
|
139
141
|
SELECT * FROM agent_logs
|
|
140
142
|
WHERE timestamp > ?
|
|
141
143
|
ORDER BY timestamp ASC
|
|
142
144
|
`, [since]);
|
|
143
145
|
}
|
|
144
|
-
export function countQaFailuresByStory(
|
|
145
|
-
const result = queryOne(
|
|
146
|
+
export async function countQaFailuresByStory(provider, storyId) {
|
|
147
|
+
const result = await provider.queryOne(`
|
|
146
148
|
SELECT COUNT(*) as count
|
|
147
149
|
FROM agent_logs
|
|
148
150
|
WHERE story_id = ? AND event_type = 'STORY_QA_FAILED'
|
|
149
151
|
`, [storyId]);
|
|
150
152
|
return result?.count || 0;
|
|
151
153
|
}
|
|
152
|
-
export function pruneOldLogs(
|
|
154
|
+
export async function pruneOldLogs(provider, retentionDays) {
|
|
153
155
|
const cutoffDate = new Date();
|
|
154
156
|
cutoffDate.setDate(cutoffDate.getDate() - retentionDays);
|
|
155
157
|
const cutoff = cutoffDate.toISOString();
|
|
156
158
|
// Get count before delete
|
|
157
|
-
const before = queryOne(
|
|
159
|
+
const before = await provider.queryOne(`
|
|
158
160
|
SELECT COUNT(*) as count FROM agent_logs WHERE timestamp < ?
|
|
159
161
|
`, [cutoff]);
|
|
160
|
-
run(
|
|
162
|
+
await provider.run(`DELETE FROM agent_logs WHERE timestamp < ?`, [cutoff]);
|
|
161
163
|
return before?.count || 0;
|
|
162
164
|
}
|
|
163
165
|
//# sourceMappingURL=logs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/db/queries/logs.ts"],"names":[],"mappings":"AAAA,6DAA6D;
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/db/queries/logs.ts"],"names":[],"mappings":"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"}
|