hungry-ghost-hive 0.3.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/LICENSE +111 -0
- package/README.md +352 -0
- package/dist/agents/base-agent.d.ts +63 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +189 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/index.d.ts +7 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +7 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/intermediate.d.ts +15 -0
- package/dist/agents/intermediate.d.ts.map +1 -0
- package/dist/agents/intermediate.js +142 -0
- package/dist/agents/intermediate.js.map +1 -0
- package/dist/agents/junior.d.ts +15 -0
- package/dist/agents/junior.d.ts.map +1 -0
- package/dist/agents/junior.js +147 -0
- package/dist/agents/junior.js.map +1 -0
- package/dist/agents/qa.d.ts +23 -0
- package/dist/agents/qa.d.ts.map +1 -0
- package/dist/agents/qa.js +238 -0
- package/dist/agents/qa.js.map +1 -0
- package/dist/agents/senior.d.ts +18 -0
- package/dist/agents/senior.d.ts.map +1 -0
- package/dist/agents/senior.js +267 -0
- package/dist/agents/senior.js.map +1 -0
- package/dist/agents/tech-lead.d.ts +17 -0
- package/dist/agents/tech-lead.d.ts.map +1 -0
- package/dist/agents/tech-lead.js +274 -0
- package/dist/agents/tech-lead.js.map +1 -0
- package/dist/cli/commands/add-repo.d.ts +3 -0
- package/dist/cli/commands/add-repo.d.ts.map +1 -0
- package/dist/cli/commands/add-repo.js +84 -0
- package/dist/cli/commands/add-repo.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +3 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +214 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/assign.d.ts +3 -0
- package/dist/cli/commands/assign.d.ts.map +1 -0
- package/dist/cli/commands/assign.js +81 -0
- package/dist/cli/commands/assign.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +118 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/escalations.d.ts +3 -0
- package/dist/cli/commands/escalations.d.ts.map +1 -0
- package/dist/cli/commands/escalations.js +157 -0
- package/dist/cli/commands/escalations.js.map +1 -0
- package/dist/cli/commands/index.d.ts +17 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +17 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +59 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/manager.d.ts +3 -0
- package/dist/cli/commands/manager.d.ts.map +1 -0
- package/dist/cli/commands/manager.js +775 -0
- package/dist/cli/commands/manager.js.map +1 -0
- package/dist/cli/commands/manager.test.d.ts +2 -0
- package/dist/cli/commands/manager.test.d.ts.map +1 -0
- package/dist/cli/commands/manager.test.js +45 -0
- package/dist/cli/commands/manager.test.js.map +1 -0
- package/dist/cli/commands/msg.d.ts +3 -0
- package/dist/cli/commands/msg.d.ts.map +1 -0
- package/dist/cli/commands/msg.js +190 -0
- package/dist/cli/commands/msg.js.map +1 -0
- package/dist/cli/commands/my-stories.d.ts +3 -0
- package/dist/cli/commands/my-stories.d.ts.map +1 -0
- package/dist/cli/commands/my-stories.js +174 -0
- package/dist/cli/commands/my-stories.js.map +1 -0
- package/dist/cli/commands/nuke.d.ts +3 -0
- package/dist/cli/commands/nuke.d.ts.map +1 -0
- package/dist/cli/commands/nuke.js +189 -0
- package/dist/cli/commands/nuke.js.map +1 -0
- package/dist/cli/commands/pr.d.ts +3 -0
- package/dist/cli/commands/pr.d.ts.map +1 -0
- package/dist/cli/commands/pr.js +488 -0
- package/dist/cli/commands/pr.js.map +1 -0
- package/dist/cli/commands/req.d.ts +3 -0
- package/dist/cli/commands/req.d.ts.map +1 -0
- package/dist/cli/commands/req.js +212 -0
- package/dist/cli/commands/req.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +3 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +114 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +259 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stories.d.ts +3 -0
- package/dist/cli/commands/stories.d.ts.map +1 -0
- package/dist/cli/commands/stories.js +111 -0
- package/dist/cli/commands/stories.js.map +1 -0
- package/dist/cli/commands/teams.d.ts +3 -0
- package/dist/cli/commands/teams.d.ts.map +1 -0
- package/dist/cli/commands/teams.js +137 -0
- package/dist/cli/commands/teams.js.map +1 -0
- package/dist/cli/dashboard/index.d.ts +5 -0
- package/dist/cli/dashboard/index.d.ts.map +1 -0
- package/dist/cli/dashboard/index.js +128 -0
- package/dist/cli/dashboard/index.js.map +1 -0
- package/dist/cli/dashboard/panels/activity.d.ts +5 -0
- package/dist/cli/dashboard/panels/activity.d.ts.map +1 -0
- package/dist/cli/dashboard/panels/activity.js +64 -0
- package/dist/cli/dashboard/panels/activity.js.map +1 -0
- package/dist/cli/dashboard/panels/agents.d.ts +5 -0
- package/dist/cli/dashboard/panels/agents.d.ts.map +1 -0
- package/dist/cli/dashboard/panels/agents.js +196 -0
- package/dist/cli/dashboard/panels/agents.js.map +1 -0
- package/dist/cli/dashboard/panels/escalations.d.ts +5 -0
- package/dist/cli/dashboard/panels/escalations.d.ts.map +1 -0
- package/dist/cli/dashboard/panels/escalations.js +93 -0
- package/dist/cli/dashboard/panels/escalations.js.map +1 -0
- package/dist/cli/dashboard/panels/merge-queue.d.ts +5 -0
- package/dist/cli/dashboard/panels/merge-queue.d.ts.map +1 -0
- package/dist/cli/dashboard/panels/merge-queue.js +57 -0
- package/dist/cli/dashboard/panels/merge-queue.js.map +1 -0
- package/dist/cli/dashboard/panels/pipeline.d.ts +5 -0
- package/dist/cli/dashboard/panels/pipeline.d.ts.map +1 -0
- package/dist/cli/dashboard/panels/pipeline.js +54 -0
- package/dist/cli/dashboard/panels/pipeline.js.map +1 -0
- package/dist/cli/dashboard/panels/stories.d.ts +5 -0
- package/dist/cli/dashboard/panels/stories.d.ts.map +1 -0
- package/dist/cli/dashboard/panels/stories.js +79 -0
- package/dist/cli/dashboard/panels/stories.js.map +1 -0
- package/dist/cli-runtimes/claude.d.ts +8 -0
- package/dist/cli-runtimes/claude.d.ts.map +1 -0
- package/dist/cli-runtimes/claude.js +27 -0
- package/dist/cli-runtimes/claude.js.map +1 -0
- package/dist/cli-runtimes/codex.d.ts +8 -0
- package/dist/cli-runtimes/codex.d.ts.map +1 -0
- package/dist/cli-runtimes/codex.js +27 -0
- package/dist/cli-runtimes/codex.js.map +1 -0
- package/dist/cli-runtimes/gemini.d.ts +8 -0
- package/dist/cli-runtimes/gemini.d.ts.map +1 -0
- package/dist/cli-runtimes/gemini.js +29 -0
- package/dist/cli-runtimes/gemini.js.map +1 -0
- package/dist/cli-runtimes/index.d.ts +25 -0
- package/dist/cli-runtimes/index.d.ts.map +1 -0
- package/dist/cli-runtimes/index.js +48 -0
- package/dist/cli-runtimes/index.js.map +1 -0
- package/dist/cli-runtimes/index.test.d.ts +2 -0
- package/dist/cli-runtimes/index.test.d.ts.map +1 -0
- package/dist/cli-runtimes/index.test.js +216 -0
- package/dist/cli-runtimes/index.test.js.map +1 -0
- package/dist/cli-runtimes/types.d.ts +27 -0
- package/dist/cli-runtimes/types.d.ts.map +1 -0
- package/dist/cli-runtimes/types.js +2 -0
- package/dist/cli-runtimes/types.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +11 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +72 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +660 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +217 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/schema.test.d.ts +2 -0
- package/dist/config/schema.test.d.ts.map +1 -0
- package/dist/config/schema.test.js +123 -0
- package/dist/config/schema.test.js.map +1 -0
- package/dist/context-files/generator.d.ts +32 -0
- package/dist/context-files/generator.d.ts.map +1 -0
- package/dist/context-files/generator.js +120 -0
- package/dist/context-files/generator.js.map +1 -0
- package/dist/context-files/index.d.ts +38 -0
- package/dist/context-files/index.d.ts.map +1 -0
- package/dist/context-files/index.js +76 -0
- package/dist/context-files/index.js.map +1 -0
- package/dist/context-files/index.test.d.ts +2 -0
- package/dist/context-files/index.test.d.ts.map +1 -0
- package/dist/context-files/index.test.js +265 -0
- package/dist/context-files/index.test.js.map +1 -0
- package/dist/context-files/templates.d.ts +19 -0
- package/dist/context-files/templates.d.ts.map +1 -0
- package/dist/context-files/templates.js +266 -0
- package/dist/context-files/templates.js.map +1 -0
- package/dist/db/client.d.ts +95 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +343 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/lock.d.ts +25 -0
- package/dist/db/lock.d.ts.map +1 -0
- package/dist/db/lock.js +56 -0
- package/dist/db/lock.js.map +1 -0
- package/dist/db/lock.test.d.ts +2 -0
- package/dist/db/lock.test.d.ts.map +1 -0
- package/dist/db/lock.test.js +73 -0
- package/dist/db/lock.test.js.map +1 -0
- package/dist/db/queries/agents.d.ts +31 -0
- package/dist/db/queries/agents.d.ts.map +1 -0
- package/dist/db/queries/agents.js +76 -0
- package/dist/db/queries/agents.js.map +1 -0
- package/dist/db/queries/escalations.d.ts +29 -0
- package/dist/db/queries/escalations.d.ts.map +1 -0
- package/dist/db/queries/escalations.js +105 -0
- package/dist/db/queries/escalations.js.map +1 -0
- package/dist/db/queries/heartbeat.d.ts +20 -0
- package/dist/db/queries/heartbeat.d.ts.map +1 -0
- package/dist/db/queries/heartbeat.js +61 -0
- package/dist/db/queries/heartbeat.js.map +1 -0
- package/dist/db/queries/index.d.ts +8 -0
- package/dist/db/queries/index.d.ts.map +1 -0
- package/dist/db/queries/index.js +8 -0
- package/dist/db/queries/index.js.map +1 -0
- package/dist/db/queries/logs.d.ts +21 -0
- package/dist/db/queries/logs.d.ts.map +1 -0
- package/dist/db/queries/logs.js +72 -0
- package/dist/db/queries/logs.js.map +1 -0
- package/dist/db/queries/messages.d.ts +17 -0
- package/dist/db/queries/messages.d.ts.map +1 -0
- package/dist/db/queries/messages.js +22 -0
- package/dist/db/queries/messages.js.map +1 -0
- package/dist/db/queries/pull-requests.d.ts +33 -0
- package/dist/db/queries/pull-requests.d.ts.map +1 -0
- package/dist/db/queries/pull-requests.js +130 -0
- package/dist/db/queries/pull-requests.js.map +1 -0
- package/dist/db/queries/requirements.d.ts +22 -0
- package/dist/db/queries/requirements.d.ts.map +1 -0
- package/dist/db/queries/requirements.js +53 -0
- package/dist/db/queries/requirements.js.map +1 -0
- package/dist/db/queries/stories.d.ts +42 -0
- package/dist/db/queries/stories.d.ts.map +1 -0
- package/dist/db/queries/stories.js +163 -0
- package/dist/db/queries/stories.js.map +1 -0
- package/dist/db/queries/teams.d.ts +14 -0
- package/dist/db/queries/teams.d.ts.map +1 -0
- package/dist/db/queries/teams.js +24 -0
- package/dist/db/queries/teams.js.map +1 -0
- package/dist/git/branches.d.ts +52 -0
- package/dist/git/branches.d.ts.map +1 -0
- package/dist/git/branches.js +133 -0
- package/dist/git/branches.js.map +1 -0
- package/dist/git/github.d.ts +75 -0
- package/dist/git/github.d.ts.map +1 -0
- package/dist/git/github.js +162 -0
- package/dist/git/github.js.map +1 -0
- package/dist/git/index.d.ts +4 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +4 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/submodules.d.ts +47 -0
- package/dist/git/submodules.d.ts.map +1 -0
- package/dist/git/submodules.js +115 -0
- package/dist/git/submodules.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/anthropic.d.ts +18 -0
- package/dist/llm/anthropic.d.ts.map +1 -0
- package/dist/llm/anthropic.js +111 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/index.d.ts +6 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +24 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/openai.d.ts +18 -0
- package/dist/llm/openai.d.ts.map +1 -0
- package/dist/llm/openai.js +103 -0
- package/dist/llm/openai.js.map +1 -0
- package/dist/llm/provider.d.ts +38 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +17 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/orchestrator/index.d.ts +4 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +4 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/scaler.d.ts +42 -0
- package/dist/orchestrator/scaler.d.ts.map +1 -0
- package/dist/orchestrator/scaler.js +154 -0
- package/dist/orchestrator/scaler.js.map +1 -0
- package/dist/orchestrator/scheduler.d.ts +90 -0
- package/dist/orchestrator/scheduler.d.ts.map +1 -0
- package/dist/orchestrator/scheduler.js +1003 -0
- package/dist/orchestrator/scheduler.js.map +1 -0
- package/dist/orchestrator/scheduler.test.d.ts +2 -0
- package/dist/orchestrator/scheduler.test.d.ts.map +1 -0
- package/dist/orchestrator/scheduler.test.js +242 -0
- package/dist/orchestrator/scheduler.test.js.map +1 -0
- package/dist/orchestrator/workflow.d.ts +18 -0
- package/dist/orchestrator/workflow.d.ts.map +1 -0
- package/dist/orchestrator/workflow.js +106 -0
- package/dist/orchestrator/workflow.js.map +1 -0
- package/dist/state-detectors/claude.d.ts +33 -0
- package/dist/state-detectors/claude.d.ts.map +1 -0
- package/dist/state-detectors/claude.js +237 -0
- package/dist/state-detectors/claude.js.map +1 -0
- package/dist/state-detectors/claude.test.d.ts +2 -0
- package/dist/state-detectors/claude.test.d.ts.map +1 -0
- package/dist/state-detectors/claude.test.js +127 -0
- package/dist/state-detectors/claude.test.js.map +1 -0
- package/dist/state-detectors/codex.d.ts +34 -0
- package/dist/state-detectors/codex.d.ts.map +1 -0
- package/dist/state-detectors/codex.js +233 -0
- package/dist/state-detectors/codex.js.map +1 -0
- package/dist/state-detectors/codex.test.d.ts +2 -0
- package/dist/state-detectors/codex.test.d.ts.map +1 -0
- package/dist/state-detectors/codex.test.js +85 -0
- package/dist/state-detectors/codex.test.js.map +1 -0
- package/dist/state-detectors/factory.d.ts +22 -0
- package/dist/state-detectors/factory.d.ts.map +1 -0
- package/dist/state-detectors/factory.js +37 -0
- package/dist/state-detectors/factory.js.map +1 -0
- package/dist/state-detectors/factory.test.d.ts +2 -0
- package/dist/state-detectors/factory.test.d.ts.map +1 -0
- package/dist/state-detectors/factory.test.js +44 -0
- package/dist/state-detectors/factory.test.js.map +1 -0
- package/dist/state-detectors/gemini.d.ts +34 -0
- package/dist/state-detectors/gemini.d.ts.map +1 -0
- package/dist/state-detectors/gemini.js +236 -0
- package/dist/state-detectors/gemini.js.map +1 -0
- package/dist/state-detectors/gemini.test.d.ts +2 -0
- package/dist/state-detectors/gemini.test.d.ts.map +1 -0
- package/dist/state-detectors/gemini.test.js +93 -0
- package/dist/state-detectors/gemini.test.js.map +1 -0
- package/dist/state-detectors/index.d.ts +20 -0
- package/dist/state-detectors/index.d.ts.map +1 -0
- package/dist/state-detectors/index.js +21 -0
- package/dist/state-detectors/index.js.map +1 -0
- package/dist/state-detectors/types.d.ts +67 -0
- package/dist/state-detectors/types.d.ts.map +1 -0
- package/dist/state-detectors/types.js +28 -0
- package/dist/state-detectors/types.js.map +1 -0
- package/dist/tmux/index.d.ts +2 -0
- package/dist/tmux/index.d.ts.map +1 -0
- package/dist/tmux/index.js +2 -0
- package/dist/tmux/index.js.map +1 -0
- package/dist/tmux/manager.d.ts +45 -0
- package/dist/tmux/manager.d.ts.map +1 -0
- package/dist/tmux/manager.js +252 -0
- package/dist/tmux/manager.js.map +1 -0
- package/dist/utils/claude-code-state.d.ts +46 -0
- package/dist/utils/claude-code-state.d.ts.map +1 -0
- package/dist/utils/claude-code-state.js +252 -0
- package/dist/utils/claude-code-state.js.map +1 -0
- package/dist/utils/cli-builder.d.ts +19 -0
- package/dist/utils/cli-builder.d.ts.map +1 -0
- package/dist/utils/cli-builder.js +58 -0
- package/dist/utils/cli-builder.js.map +1 -0
- package/dist/utils/cli-commands.d.ts +27 -0
- package/dist/utils/cli-commands.d.ts.map +1 -0
- package/dist/utils/cli-commands.js +69 -0
- package/dist/utils/cli-commands.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +77 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +17 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +33 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/timeout.d.ts +25 -0
- package/dist/utils/timeout.d.ts.map +1 -0
- package/dist/utils/timeout.js +57 -0
- package/dist/utils/timeout.js.map +1 -0
- package/package.json +78 -0
- package/src/agents/base-agent.ts +255 -0
- package/src/agents/index.ts +6 -0
- package/src/agents/intermediate.ts +161 -0
- package/src/agents/junior.ts +166 -0
- package/src/agents/qa.ts +272 -0
- package/src/agents/senior.ts +307 -0
- package/src/agents/tech-lead.ts +324 -0
- package/src/cli/commands/add-repo.ts +89 -0
- package/src/cli/commands/agents.ts +247 -0
- package/src/cli/commands/assign.ts +86 -0
- package/src/cli/commands/config.ts +121 -0
- package/src/cli/commands/escalations.ts +179 -0
- package/src/cli/commands/index.ts +16 -0
- package/src/cli/commands/init.ts +66 -0
- package/src/cli/commands/manager.test.ts +52 -0
- package/src/cli/commands/manager.ts +916 -0
- package/src/cli/commands/msg.ts +232 -0
- package/src/cli/commands/my-stories.ts +198 -0
- package/src/cli/commands/nuke.ts +223 -0
- package/src/cli/commands/pr.ts +559 -0
- package/src/cli/commands/req.ts +231 -0
- package/src/cli/commands/resume.ts +129 -0
- package/src/cli/commands/status.ts +284 -0
- package/src/cli/commands/stories.ts +131 -0
- package/src/cli/commands/teams.ts +158 -0
- package/src/cli/dashboard/index.ts +141 -0
- package/src/cli/dashboard/panels/activity.ts +77 -0
- package/src/cli/dashboard/panels/agents.ts +244 -0
- package/src/cli/dashboard/panels/escalations.ts +109 -0
- package/src/cli/dashboard/panels/merge-queue.ts +65 -0
- package/src/cli/dashboard/panels/pipeline.ts +65 -0
- package/src/cli/dashboard/panels/stories.ts +87 -0
- package/src/cli-runtimes/claude.ts +31 -0
- package/src/cli-runtimes/codex.ts +31 -0
- package/src/cli-runtimes/gemini.ts +33 -0
- package/src/cli-runtimes/index.test.ts +261 -0
- package/src/cli-runtimes/index.ts +52 -0
- package/src/cli-runtimes/types.ts +30 -0
- package/src/config/index.ts +2 -0
- package/src/config/loader.ts +89 -0
- package/src/config/schema.test.ts +135 -0
- package/src/config/schema.ts +238 -0
- package/src/context-files/generator.ts +132 -0
- package/src/context-files/index.test.ts +323 -0
- package/src/context-files/index.ts +102 -0
- package/src/context-files/templates.ts +279 -0
- package/src/db/client.ts +475 -0
- package/src/db/lock.test.ts +93 -0
- package/src/db/lock.ts +74 -0
- package/src/db/migrations/001-initial.sql +121 -0
- package/src/db/migrations/005-add-agent-heartbeat.sql +4 -0
- package/src/db/queries/agents.ts +113 -0
- package/src/db/queries/escalations.ts +140 -0
- package/src/db/queries/heartbeat.ts +92 -0
- package/src/db/queries/index.ts +7 -0
- package/src/db/queries/logs.ts +136 -0
- package/src/db/queries/messages.ts +38 -0
- package/src/db/queries/pull-requests.ts +170 -0
- package/src/db/queries/requirements.ts +81 -0
- package/src/db/queries/stories.ts +223 -0
- package/src/db/queries/teams.ts +39 -0
- package/src/git/branches.ts +186 -0
- package/src/git/github.ts +247 -0
- package/src/git/index.ts +3 -0
- package/src/git/submodules.ts +141 -0
- package/src/index.ts +93 -0
- package/src/llm/anthropic.ts +134 -0
- package/src/llm/index.ts +26 -0
- package/src/llm/openai.ts +125 -0
- package/src/llm/provider.ts +60 -0
- package/src/orchestrator/index.ts +3 -0
- package/src/orchestrator/scaler.ts +201 -0
- package/src/orchestrator/scheduler.test.ts +288 -0
- package/src/orchestrator/scheduler.ts +1130 -0
- package/src/orchestrator/workflow.ts +137 -0
- package/src/state-detectors/claude.test.ts +149 -0
- package/src/state-detectors/claude.ts +256 -0
- package/src/state-detectors/codex.test.ts +100 -0
- package/src/state-detectors/codex.ts +252 -0
- package/src/state-detectors/factory.test.ts +51 -0
- package/src/state-detectors/factory.ts +40 -0
- package/src/state-detectors/gemini.test.ts +110 -0
- package/src/state-detectors/gemini.ts +255 -0
- package/src/state-detectors/index.ts +25 -0
- package/src/state-detectors/types.ts +80 -0
- package/src/tmux/index.ts +1 -0
- package/src/tmux/manager.ts +310 -0
- package/src/types/sql.js.d.ts +34 -0
- package/src/utils/claude-code-state.ts +281 -0
- package/src/utils/cli-builder.ts +78 -0
- package/src/utils/cli-commands.ts +84 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/logger.ts +93 -0
- package/src/utils/paths.ts +49 -0
- package/src/utils/timeout.ts +84 -0
- package/tsconfig.json +25 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { tmpdir } from 'os';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { mkdirSync, readFileSync, rmSync, existsSync } from 'fs';
|
|
5
|
+
import { getContextFileName, getContextFilePath, contextFileExists, generateContextFile, } from './index.js';
|
|
6
|
+
describe('context-files module', () => {
|
|
7
|
+
let testDir;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
testDir = join(tmpdir(), `hive-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
10
|
+
mkdirSync(testDir, { recursive: true });
|
|
11
|
+
});
|
|
12
|
+
afterEach(() => {
|
|
13
|
+
if (existsSync(testDir)) {
|
|
14
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
describe('getContextFileName', () => {
|
|
18
|
+
it('should return CLAUDE.md for claude-code', () => {
|
|
19
|
+
expect(getContextFileName('claude-code')).toBe('CLAUDE.md');
|
|
20
|
+
});
|
|
21
|
+
it('should return AGENTS.md for codex', () => {
|
|
22
|
+
expect(getContextFileName('codex')).toBe('AGENTS.md');
|
|
23
|
+
});
|
|
24
|
+
it('should return GEMINI.md for gemini', () => {
|
|
25
|
+
expect(getContextFileName('gemini')).toBe('GEMINI.md');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('getContextFilePath', () => {
|
|
29
|
+
it('should construct correct file path', () => {
|
|
30
|
+
const path = getContextFilePath('/repos/service-a', 'claude-code');
|
|
31
|
+
expect(path).toBe('/repos/service-a/CLAUDE.md');
|
|
32
|
+
});
|
|
33
|
+
it('should work for different CLI tools', () => {
|
|
34
|
+
const claudePath = getContextFilePath('/repo', 'claude-code');
|
|
35
|
+
const codexPath = getContextFilePath('/repo', 'codex');
|
|
36
|
+
const geminiPath = getContextFilePath('/repo', 'gemini');
|
|
37
|
+
expect(claudePath).toContain('CLAUDE.md');
|
|
38
|
+
expect(codexPath).toContain('AGENTS.md');
|
|
39
|
+
expect(geminiPath).toContain('GEMINI.md');
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('contextFileExists', () => {
|
|
43
|
+
it('should return false when file does not exist', () => {
|
|
44
|
+
expect(contextFileExists(testDir, 'claude-code')).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
it('should return true when file exists', () => {
|
|
47
|
+
const filePath = getContextFilePath(testDir, 'claude-code');
|
|
48
|
+
mkdirSync(testDir, { recursive: true });
|
|
49
|
+
require('fs').writeFileSync(filePath, 'test content');
|
|
50
|
+
expect(contextFileExists(testDir, 'claude-code')).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('generateContextFile', () => {
|
|
54
|
+
const mockTeam = {
|
|
55
|
+
id: 'team-test',
|
|
56
|
+
name: 'test-team',
|
|
57
|
+
repo_path: '',
|
|
58
|
+
repo_url: 'https://github.com/test/repo.git',
|
|
59
|
+
created_at: new Date().toISOString(),
|
|
60
|
+
};
|
|
61
|
+
const mockStory = {
|
|
62
|
+
id: 'STORY-001',
|
|
63
|
+
requirement_id: 'REQ-001',
|
|
64
|
+
team_id: 'team-test',
|
|
65
|
+
title: 'Implement authentication',
|
|
66
|
+
description: 'Add OAuth2 support',
|
|
67
|
+
acceptance_criteria: JSON.stringify(['User can login', 'Token is valid']),
|
|
68
|
+
complexity_score: 5,
|
|
69
|
+
story_points: 5,
|
|
70
|
+
status: 'in_progress',
|
|
71
|
+
assigned_agent_id: 'agent-001',
|
|
72
|
+
branch_name: 'feature/STORY-001-auth',
|
|
73
|
+
pr_url: 'https://github.com/test/repo/pull/1',
|
|
74
|
+
created_at: new Date().toISOString(),
|
|
75
|
+
updated_at: new Date().toISOString(),
|
|
76
|
+
};
|
|
77
|
+
const mockConfig = {
|
|
78
|
+
version: '1.0',
|
|
79
|
+
models: {
|
|
80
|
+
tech_lead: { provider: 'anthropic', model: 'claude-opus', max_tokens: 16000, temperature: 0.7, cli_tool: 'claude' },
|
|
81
|
+
senior: { provider: 'anthropic', model: 'claude-sonnet', max_tokens: 8000, temperature: 0.5, cli_tool: 'claude' },
|
|
82
|
+
intermediate: { provider: 'anthropic', model: 'claude-haiku', max_tokens: 4000, temperature: 0.3, cli_tool: 'claude' },
|
|
83
|
+
junior: { provider: 'openai', model: 'gpt-4o-mini', max_tokens: 4000, temperature: 0.2, cli_tool: 'claude' },
|
|
84
|
+
qa: { provider: 'anthropic', model: 'claude-sonnet', max_tokens: 8000, temperature: 0.2, cli_tool: 'claude' },
|
|
85
|
+
},
|
|
86
|
+
scaling: { senior_capacity: 20, junior_max_complexity: 3, intermediate_max_complexity: 5 },
|
|
87
|
+
github: { base_branch: 'main', pr_template: '' },
|
|
88
|
+
qa: {
|
|
89
|
+
quality_checks: ['npm run lint', 'npm run type-check'],
|
|
90
|
+
build_command: 'npm run build',
|
|
91
|
+
},
|
|
92
|
+
agents: {
|
|
93
|
+
poll_interval: 5000,
|
|
94
|
+
max_retries: 2,
|
|
95
|
+
checkpoint_threshold: 14000,
|
|
96
|
+
llm_timeout_ms: 1800000,
|
|
97
|
+
llm_max_retries: 2,
|
|
98
|
+
},
|
|
99
|
+
manager: { fast_poll_interval: 15000, slow_poll_interval: 60000 },
|
|
100
|
+
logging: { level: 'info', retention_days: 30 },
|
|
101
|
+
};
|
|
102
|
+
it('should create a new context file if it does not exist', () => {
|
|
103
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
104
|
+
const options = {
|
|
105
|
+
cliTool: 'claude-code',
|
|
106
|
+
team,
|
|
107
|
+
stories: [mockStory],
|
|
108
|
+
agentType: 'intermediate',
|
|
109
|
+
config: mockConfig,
|
|
110
|
+
agentId: 'agent-001',
|
|
111
|
+
};
|
|
112
|
+
generateContextFile(options);
|
|
113
|
+
expect(contextFileExists(testDir, 'claude-code')).toBe(true);
|
|
114
|
+
const content = readFileSync(getContextFilePath(testDir, 'claude-code'), 'utf-8');
|
|
115
|
+
expect(content).toContain('<!-- HIVE:START -->');
|
|
116
|
+
expect(content).toContain('<!-- HIVE:END -->');
|
|
117
|
+
expect(content).toContain('STORY-001');
|
|
118
|
+
});
|
|
119
|
+
it('should include story information in generated file', () => {
|
|
120
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
121
|
+
const options = {
|
|
122
|
+
cliTool: 'claude-code',
|
|
123
|
+
team,
|
|
124
|
+
stories: [mockStory],
|
|
125
|
+
agentType: 'senior',
|
|
126
|
+
config: mockConfig,
|
|
127
|
+
};
|
|
128
|
+
generateContextFile(options);
|
|
129
|
+
const content = readFileSync(getContextFilePath(testDir, 'claude-code'), 'utf-8');
|
|
130
|
+
expect(content).toContain('STORY-001');
|
|
131
|
+
expect(content).toContain('Implement authentication');
|
|
132
|
+
expect(content).toContain('OAuth2');
|
|
133
|
+
});
|
|
134
|
+
it('should generate different content for different CLI tools', () => {
|
|
135
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
136
|
+
const baseOptions = {
|
|
137
|
+
cliTool: 'claude-code',
|
|
138
|
+
team,
|
|
139
|
+
stories: [mockStory],
|
|
140
|
+
agentType: 'intermediate',
|
|
141
|
+
config: mockConfig,
|
|
142
|
+
};
|
|
143
|
+
// Generate for Claude Code
|
|
144
|
+
generateContextFile({ ...baseOptions, cliTool: 'claude-code' });
|
|
145
|
+
const claudeContent = readFileSync(getContextFilePath(testDir, 'claude-code'), 'utf-8');
|
|
146
|
+
// Clean up and generate for Codex
|
|
147
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
148
|
+
mkdirSync(testDir, { recursive: true });
|
|
149
|
+
generateContextFile({ ...baseOptions, cliTool: 'codex' });
|
|
150
|
+
const codexContent = readFileSync(getContextFilePath(testDir, 'codex'), 'utf-8');
|
|
151
|
+
// Both should have markers and story info, but different headers
|
|
152
|
+
expect(claudeContent).toContain('Claude Code');
|
|
153
|
+
expect(codexContent).toContain('Codex');
|
|
154
|
+
expect(claudeContent).toContain('STORY-001');
|
|
155
|
+
expect(codexContent).toContain('STORY-001');
|
|
156
|
+
});
|
|
157
|
+
it('should update existing file preserving content outside markers', () => {
|
|
158
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
159
|
+
const filePath = getContextFilePath(testDir, 'claude-code');
|
|
160
|
+
// Write initial file with custom content
|
|
161
|
+
mkdirSync(testDir, { recursive: true });
|
|
162
|
+
const initialContent = `# My Custom Header
|
|
163
|
+
|
|
164
|
+
This is my custom content that should be preserved.
|
|
165
|
+
|
|
166
|
+
<!-- HIVE:START -->
|
|
167
|
+
Old Hive content
|
|
168
|
+
<!-- HIVE:END -->
|
|
169
|
+
|
|
170
|
+
## Footer
|
|
171
|
+
|
|
172
|
+
More custom content here.`;
|
|
173
|
+
require('fs').writeFileSync(filePath, initialContent);
|
|
174
|
+
// Generate new context
|
|
175
|
+
const options = {
|
|
176
|
+
cliTool: 'claude-code',
|
|
177
|
+
team,
|
|
178
|
+
stories: [mockStory],
|
|
179
|
+
agentType: 'junior',
|
|
180
|
+
config: mockConfig,
|
|
181
|
+
};
|
|
182
|
+
generateContextFile(options);
|
|
183
|
+
const updatedContent = readFileSync(filePath, 'utf-8');
|
|
184
|
+
// Original content should be preserved
|
|
185
|
+
expect(updatedContent).toContain('# My Custom Header');
|
|
186
|
+
expect(updatedContent).toContain('This is my custom content');
|
|
187
|
+
expect(updatedContent).toContain('## Footer');
|
|
188
|
+
expect(updatedContent).toContain('More custom content here');
|
|
189
|
+
// Hive content should be updated
|
|
190
|
+
expect(updatedContent).toContain('STORY-001');
|
|
191
|
+
expect(updatedContent).not.toContain('Old Hive content');
|
|
192
|
+
expect(updatedContent).toContain('<!-- HIVE:START -->');
|
|
193
|
+
expect(updatedContent).toContain('<!-- HIVE:END -->');
|
|
194
|
+
});
|
|
195
|
+
it('should append Hive section if markers do not exist', () => {
|
|
196
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
197
|
+
const filePath = getContextFilePath(testDir, 'claude-code');
|
|
198
|
+
// Write initial file without markers
|
|
199
|
+
mkdirSync(testDir, { recursive: true });
|
|
200
|
+
const initialContent = '# Existing README\n\nSome content here.';
|
|
201
|
+
require('fs').writeFileSync(filePath, initialContent);
|
|
202
|
+
// Generate context
|
|
203
|
+
const options = {
|
|
204
|
+
cliTool: 'claude-code',
|
|
205
|
+
team,
|
|
206
|
+
stories: [mockStory],
|
|
207
|
+
agentType: 'qa',
|
|
208
|
+
config: mockConfig,
|
|
209
|
+
};
|
|
210
|
+
generateContextFile(options);
|
|
211
|
+
const updatedContent = readFileSync(filePath, 'utf-8');
|
|
212
|
+
// Original content should be preserved
|
|
213
|
+
expect(updatedContent).toContain('# Existing README');
|
|
214
|
+
expect(updatedContent).toContain('Some content here');
|
|
215
|
+
// Hive content should be appended
|
|
216
|
+
expect(updatedContent).toContain('<!-- HIVE:START -->');
|
|
217
|
+
expect(updatedContent).toContain('STORY-001');
|
|
218
|
+
});
|
|
219
|
+
it('should work with empty stories list', () => {
|
|
220
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
221
|
+
const options = {
|
|
222
|
+
cliTool: 'claude-code',
|
|
223
|
+
team,
|
|
224
|
+
stories: [],
|
|
225
|
+
agentType: 'senior',
|
|
226
|
+
config: mockConfig,
|
|
227
|
+
};
|
|
228
|
+
generateContextFile(options);
|
|
229
|
+
const content = readFileSync(getContextFilePath(testDir, 'claude-code'), 'utf-8');
|
|
230
|
+
expect(content).toContain('<!-- HIVE:START -->');
|
|
231
|
+
expect(content).toContain('No active stories');
|
|
232
|
+
});
|
|
233
|
+
it('should include quality check commands from config', () => {
|
|
234
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
235
|
+
const options = {
|
|
236
|
+
cliTool: 'claude-code',
|
|
237
|
+
team,
|
|
238
|
+
stories: [mockStory],
|
|
239
|
+
agentType: 'intermediate',
|
|
240
|
+
config: mockConfig,
|
|
241
|
+
};
|
|
242
|
+
generateContextFile(options);
|
|
243
|
+
const content = readFileSync(getContextFilePath(testDir, 'claude-code'), 'utf-8');
|
|
244
|
+
expect(content).toContain('npm run lint');
|
|
245
|
+
expect(content).toContain('npm run type-check');
|
|
246
|
+
expect(content).toContain('npm run build');
|
|
247
|
+
});
|
|
248
|
+
it('should include agent ID when provided', () => {
|
|
249
|
+
const team = { ...mockTeam, repo_path: testDir };
|
|
250
|
+
const agentId = 'intermediate-abc123def456';
|
|
251
|
+
const options = {
|
|
252
|
+
cliTool: 'claude-code',
|
|
253
|
+
team,
|
|
254
|
+
stories: [mockStory],
|
|
255
|
+
agentType: 'intermediate',
|
|
256
|
+
config: mockConfig,
|
|
257
|
+
agentId,
|
|
258
|
+
};
|
|
259
|
+
generateContextFile(options);
|
|
260
|
+
const content = readFileSync(getContextFilePath(testDir, 'claude-code'), 'utf-8');
|
|
261
|
+
expect(content).toContain(agentId);
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/context-files/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context File Templates
|
|
3
|
+
*
|
|
4
|
+
* CLI-specific templates for generating context files
|
|
5
|
+
*/
|
|
6
|
+
import type { ContextFileOptions } from './index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Template for Claude Code context file (CLAUDE.md)
|
|
9
|
+
*/
|
|
10
|
+
export declare function claudeCodeTemplate(options: ContextFileOptions): string;
|
|
11
|
+
/**
|
|
12
|
+
* Template for Codex context file (AGENTS.md)
|
|
13
|
+
*/
|
|
14
|
+
export declare function codexTemplate(options: ContextFileOptions): string;
|
|
15
|
+
/**
|
|
16
|
+
* Template for Gemini context file (GEMINI.md)
|
|
17
|
+
*/
|
|
18
|
+
export declare function geminiTemplate(options: ContextFileOptions): string;
|
|
19
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/context-files/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAkFtE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAoFjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAoFlE"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context File Templates
|
|
3
|
+
*
|
|
4
|
+
* CLI-specific templates for generating context files
|
|
5
|
+
*/
|
|
6
|
+
import { formatStoriesForContext, formatQualityChecks, getAgentRoleDescription, formatHiveMsgCommands, formatGitWorkflow, } from './generator.js';
|
|
7
|
+
/**
|
|
8
|
+
* Template for Claude Code context file (CLAUDE.md)
|
|
9
|
+
*/
|
|
10
|
+
export function claudeCodeTemplate(options) {
|
|
11
|
+
const { team, stories, agentType, config, agentId } = options;
|
|
12
|
+
const formattedStories = formatStoriesForContext(stories);
|
|
13
|
+
const agentRole = getAgentRoleDescription(agentType);
|
|
14
|
+
const hiveMsgCommands = formatHiveMsgCommands(agentId);
|
|
15
|
+
const gitWorkflow = formatGitWorkflow();
|
|
16
|
+
const qualityChecks = formatQualityChecks(config.qa?.quality_checks || []);
|
|
17
|
+
const buildCommand = config.qa?.build_command || 'npm run build';
|
|
18
|
+
return `<!-- HIVE:START -->
|
|
19
|
+
# Hive Workflow Context - Claude Code
|
|
20
|
+
|
|
21
|
+
**Team**: ${team.name}
|
|
22
|
+
**Repository**: ${team.repo_path}
|
|
23
|
+
**Role**: ${agentRole}
|
|
24
|
+
|
|
25
|
+
## Your Assignment
|
|
26
|
+
|
|
27
|
+
You are part of the Hive orchestration system. This document contains the context you need to work effectively within the team.
|
|
28
|
+
|
|
29
|
+
${agentId ? `**Your Agent ID**: \`${agentId}\`` : ''}
|
|
30
|
+
|
|
31
|
+
## Active Stories
|
|
32
|
+
|
|
33
|
+
${formattedStories}
|
|
34
|
+
|
|
35
|
+
## Quality Standards
|
|
36
|
+
|
|
37
|
+
Before submitting work for review, ensure your code passes all quality checks:
|
|
38
|
+
|
|
39
|
+
### Quality Checks
|
|
40
|
+
|
|
41
|
+
${qualityChecks}
|
|
42
|
+
|
|
43
|
+
### Build Command
|
|
44
|
+
|
|
45
|
+
\`\`\`bash
|
|
46
|
+
${buildCommand}
|
|
47
|
+
\`\`\`
|
|
48
|
+
|
|
49
|
+
${config.qa?.test_command
|
|
50
|
+
? `### Test Command
|
|
51
|
+
|
|
52
|
+
\`\`\`bash
|
|
53
|
+
${config.qa.test_command}
|
|
54
|
+
\`\`\``
|
|
55
|
+
: ''}
|
|
56
|
+
|
|
57
|
+
## Development Workflow
|
|
58
|
+
|
|
59
|
+
${gitWorkflow}
|
|
60
|
+
|
|
61
|
+
${hiveMsgCommands}
|
|
62
|
+
|
|
63
|
+
## Story Implementation Process
|
|
64
|
+
|
|
65
|
+
1. **Select a story** - Your senior will assign stories to you
|
|
66
|
+
2. **Create feature branch** - Name it \`feature/<story-id>-<short-description>\`
|
|
67
|
+
3. **Implement changes** - Write clean, tested code following existing patterns
|
|
68
|
+
4. **Run quality checks** - Execute all quality checks before committing
|
|
69
|
+
5. **Commit regularly** - Keep commits small and focused
|
|
70
|
+
6. **Push and create PR** - Push your branch and create a pull request on GitHub
|
|
71
|
+
7. **Review feedback** - Address code review comments promptly
|
|
72
|
+
8. **Merge** - Once approved and all checks pass, the story will be merged
|
|
73
|
+
|
|
74
|
+
## Important Notes
|
|
75
|
+
|
|
76
|
+
- Always ask for help if you're stuck (use \`hive msg\`)
|
|
77
|
+
- Run tests locally before pushing
|
|
78
|
+
- Keep your branch up to date with main
|
|
79
|
+
- Link stories to PRs using the story ID in the PR description
|
|
80
|
+
- Follow the existing code patterns and conventions in the repository
|
|
81
|
+
|
|
82
|
+
## Escalation
|
|
83
|
+
|
|
84
|
+
If you encounter blockers that you cannot resolve:
|
|
85
|
+
1. Document what you've tried
|
|
86
|
+
2. Message your Senior using \`hive msg\`
|
|
87
|
+
3. Wait for guidance before proceeding further
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
<!-- HIVE:END -->`;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Template for Codex context file (AGENTS.md)
|
|
94
|
+
*/
|
|
95
|
+
export function codexTemplate(options) {
|
|
96
|
+
const { team, stories, agentType, config, agentId } = options;
|
|
97
|
+
const formattedStories = formatStoriesForContext(stories);
|
|
98
|
+
const agentRole = getAgentRoleDescription(agentType);
|
|
99
|
+
const hiveMsgCommands = formatHiveMsgCommands(agentId);
|
|
100
|
+
const gitWorkflow = formatGitWorkflow();
|
|
101
|
+
const qualityChecks = formatQualityChecks(config.qa?.quality_checks || []);
|
|
102
|
+
const buildCommand = config.qa?.build_command || 'npm run build';
|
|
103
|
+
return `<!-- HIVE:START -->
|
|
104
|
+
# Hive Team Context - Codex Agent
|
|
105
|
+
|
|
106
|
+
**Team**: ${team.name}
|
|
107
|
+
**Repository Path**: ${team.repo_path}
|
|
108
|
+
**Agent Role**: ${agentRole}
|
|
109
|
+
|
|
110
|
+
## Team Assignment Overview
|
|
111
|
+
|
|
112
|
+
This file contains essential information for working within the Hive orchestration system using Codex CLI.
|
|
113
|
+
|
|
114
|
+
${agentId ? `**Agent Identifier**: \`${agentId}\`` : ''}
|
|
115
|
+
|
|
116
|
+
## Current Work Items
|
|
117
|
+
|
|
118
|
+
${formattedStories}
|
|
119
|
+
|
|
120
|
+
## Code Quality Requirements
|
|
121
|
+
|
|
122
|
+
All code must pass the following quality checks before submission:
|
|
123
|
+
|
|
124
|
+
### Quality Assurance Checks
|
|
125
|
+
|
|
126
|
+
${qualityChecks}
|
|
127
|
+
|
|
128
|
+
### Build Process
|
|
129
|
+
|
|
130
|
+
\`\`\`bash
|
|
131
|
+
${buildCommand}
|
|
132
|
+
\`\`\`
|
|
133
|
+
|
|
134
|
+
${config.qa?.test_command
|
|
135
|
+
? `### Test Suite
|
|
136
|
+
|
|
137
|
+
\`\`\`bash
|
|
138
|
+
${config.qa.test_command}
|
|
139
|
+
\`\`\``
|
|
140
|
+
: ''}
|
|
141
|
+
|
|
142
|
+
## Implementation Standards
|
|
143
|
+
|
|
144
|
+
${gitWorkflow}
|
|
145
|
+
|
|
146
|
+
${hiveMsgCommands}
|
|
147
|
+
|
|
148
|
+
## Story Delivery Pipeline
|
|
149
|
+
|
|
150
|
+
1. **Story Assignment** - Your team lead assigns stories based on complexity
|
|
151
|
+
2. **Branch Creation** - Create branches named \`feature/<story-id>-<feature-name>\`
|
|
152
|
+
3. **Code Development** - Implement features following team conventions
|
|
153
|
+
4. **Quality Assurance** - Run all quality checks and verify the build succeeds
|
|
154
|
+
5. **Commit Management** - Make focused commits with clear messages
|
|
155
|
+
6. **Push and PR** - Push your branch and open a GitHub pull request
|
|
156
|
+
7. **Code Review** - Respond to review comments and refine as needed
|
|
157
|
+
8. **Merge Process** - Once approved, code is merged to main branch
|
|
158
|
+
|
|
159
|
+
## Best Practices
|
|
160
|
+
|
|
161
|
+
- Always verify quality checks pass before pushing
|
|
162
|
+
- Test all changes locally
|
|
163
|
+
- Maintain branch freshness - rebase on main regularly
|
|
164
|
+
- Link PRs to stories using story identifiers
|
|
165
|
+
- Follow established code patterns and conventions
|
|
166
|
+
- Document non-obvious implementation decisions
|
|
167
|
+
|
|
168
|
+
## Getting Help
|
|
169
|
+
|
|
170
|
+
If you need assistance:
|
|
171
|
+
1. Clearly document any blockers
|
|
172
|
+
2. Use \`hive msg send\` to contact your team lead or senior
|
|
173
|
+
3. Provide context about what you've already tried
|
|
174
|
+
4. Wait for guidance before making workarounds
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
<!-- HIVE:END -->`;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Template for Gemini context file (GEMINI.md)
|
|
181
|
+
*/
|
|
182
|
+
export function geminiTemplate(options) {
|
|
183
|
+
const { team, stories, agentType, config, agentId } = options;
|
|
184
|
+
const formattedStories = formatStoriesForContext(stories);
|
|
185
|
+
const agentRole = getAgentRoleDescription(agentType);
|
|
186
|
+
const hiveMsgCommands = formatHiveMsgCommands(agentId);
|
|
187
|
+
const gitWorkflow = formatGitWorkflow();
|
|
188
|
+
const qualityChecks = formatQualityChecks(config.qa?.quality_checks || []);
|
|
189
|
+
const buildCommand = config.qa?.build_command || 'npm run build';
|
|
190
|
+
return `<!-- HIVE:START -->
|
|
191
|
+
# Hive Development Context - Gemini
|
|
192
|
+
|
|
193
|
+
**Team Assignment**: ${team.name}
|
|
194
|
+
**Repository**: ${team.repo_path}
|
|
195
|
+
**Position**: ${agentRole}
|
|
196
|
+
|
|
197
|
+
## Hive Context Document
|
|
198
|
+
|
|
199
|
+
This document provides all necessary context for your work as a Hive agent.
|
|
200
|
+
|
|
201
|
+
${agentId ? `**Agent ID**: \`${agentId}\`` : ''}
|
|
202
|
+
|
|
203
|
+
## Assigned Stories
|
|
204
|
+
|
|
205
|
+
${formattedStories}
|
|
206
|
+
|
|
207
|
+
## Code Quality Standards
|
|
208
|
+
|
|
209
|
+
Your code must meet these quality standards before final submission:
|
|
210
|
+
|
|
211
|
+
### Validation Checks
|
|
212
|
+
|
|
213
|
+
${qualityChecks}
|
|
214
|
+
|
|
215
|
+
### Build Verification
|
|
216
|
+
|
|
217
|
+
\`\`\`bash
|
|
218
|
+
${buildCommand}
|
|
219
|
+
\`\`\`
|
|
220
|
+
|
|
221
|
+
${config.qa?.test_command
|
|
222
|
+
? `### Testing
|
|
223
|
+
|
|
224
|
+
\`\`\`bash
|
|
225
|
+
${config.qa.test_command}
|
|
226
|
+
\`\`\``
|
|
227
|
+
: ''}
|
|
228
|
+
|
|
229
|
+
## Development Process
|
|
230
|
+
|
|
231
|
+
${gitWorkflow}
|
|
232
|
+
|
|
233
|
+
${hiveMsgCommands}
|
|
234
|
+
|
|
235
|
+
## Workflow for Story Completion
|
|
236
|
+
|
|
237
|
+
1. **Receive Assignment** - Your manager assigns stories matched to your skills
|
|
238
|
+
2. **Setup Branch** - Initialize feature branch: \`feature/<story-id>-<brief-title>\`
|
|
239
|
+
3. **Implementation** - Develop the feature with attention to quality
|
|
240
|
+
4. **Validation** - Confirm all quality checks and builds pass
|
|
241
|
+
5. **Save Changes** - Commit your work with meaningful messages
|
|
242
|
+
6. **Upload Work** - Push branch and create pull request on GitHub
|
|
243
|
+
7. **Handle Feedback** - Address review comments and iterate
|
|
244
|
+
8. **Complete** - Story is merged once all approvals obtained
|
|
245
|
+
|
|
246
|
+
## Quality Standards
|
|
247
|
+
|
|
248
|
+
- Always run quality checks locally before pushing
|
|
249
|
+
- Verify the build completes successfully
|
|
250
|
+
- Run tests to catch regressions
|
|
251
|
+
- Use story IDs in PR references for tracking
|
|
252
|
+
- Maintain consistency with existing codebase
|
|
253
|
+
- Comment complex logic
|
|
254
|
+
|
|
255
|
+
## Support and Escalation
|
|
256
|
+
|
|
257
|
+
When you encounter issues:
|
|
258
|
+
1. Document what you've investigated
|
|
259
|
+
2. Send a message to your team lead: \`hive msg send hive-senior-${team.name} "your question"\`
|
|
260
|
+
3. Include details of what you've tried
|
|
261
|
+
4. Await direction before implementing workarounds
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
<!-- HIVE:END -->`;
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/context-files/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Database as SqlJsDatabase } from 'sql.js';
|
|
2
|
+
export interface DatabaseClient {
|
|
3
|
+
db: SqlJsDatabase;
|
|
4
|
+
close: () => void;
|
|
5
|
+
save: () => void;
|
|
6
|
+
runMigrations: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createDatabase(dbPath: string): Promise<DatabaseClient>;
|
|
9
|
+
export declare function getDatabase(hiveDir: string): Promise<DatabaseClient>;
|
|
10
|
+
export declare function queryAll<T>(db: SqlJsDatabase, sql: string, params?: unknown[]): T[];
|
|
11
|
+
export declare function queryOne<T>(db: SqlJsDatabase, sql: string, params?: unknown[]): T | undefined;
|
|
12
|
+
export declare function run(db: SqlJsDatabase, sql: string, params?: unknown[]): void;
|
|
13
|
+
export interface TeamRow {
|
|
14
|
+
id: string;
|
|
15
|
+
repo_url: string;
|
|
16
|
+
repo_path: string;
|
|
17
|
+
name: string;
|
|
18
|
+
created_at: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AgentRow {
|
|
21
|
+
id: string;
|
|
22
|
+
type: 'tech_lead' | 'senior' | 'intermediate' | 'junior' | 'qa';
|
|
23
|
+
team_id: string | null;
|
|
24
|
+
tmux_session: string | null;
|
|
25
|
+
model: string | null;
|
|
26
|
+
status: 'idle' | 'working' | 'blocked' | 'terminated';
|
|
27
|
+
current_story_id: string | null;
|
|
28
|
+
memory_state: string | null;
|
|
29
|
+
last_seen: string | null;
|
|
30
|
+
cli_tool: string;
|
|
31
|
+
worktree_path: string | null;
|
|
32
|
+
created_at: string;
|
|
33
|
+
updated_at: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RequirementRow {
|
|
36
|
+
id: string;
|
|
37
|
+
title: string;
|
|
38
|
+
description: string;
|
|
39
|
+
submitted_by: string;
|
|
40
|
+
status: 'pending' | 'planning' | 'planned' | 'in_progress' | 'completed';
|
|
41
|
+
created_at: string;
|
|
42
|
+
}
|
|
43
|
+
export interface StoryRow {
|
|
44
|
+
id: string;
|
|
45
|
+
requirement_id: string | null;
|
|
46
|
+
team_id: string | null;
|
|
47
|
+
title: string;
|
|
48
|
+
description: string;
|
|
49
|
+
acceptance_criteria: string | null;
|
|
50
|
+
complexity_score: number | null;
|
|
51
|
+
story_points: number | null;
|
|
52
|
+
status: 'draft' | 'estimated' | 'planned' | 'in_progress' | 'review' | 'qa' | 'qa_failed' | 'pr_submitted' | 'merged';
|
|
53
|
+
assigned_agent_id: string | null;
|
|
54
|
+
branch_name: string | null;
|
|
55
|
+
pr_url: string | null;
|
|
56
|
+
created_at: string;
|
|
57
|
+
updated_at: string;
|
|
58
|
+
}
|
|
59
|
+
export interface AgentLogRow {
|
|
60
|
+
id: number;
|
|
61
|
+
agent_id: string;
|
|
62
|
+
story_id: string | null;
|
|
63
|
+
event_type: string;
|
|
64
|
+
status: string | null;
|
|
65
|
+
message: string | null;
|
|
66
|
+
metadata: string | null;
|
|
67
|
+
timestamp: string;
|
|
68
|
+
}
|
|
69
|
+
export interface EscalationRow {
|
|
70
|
+
id: string;
|
|
71
|
+
story_id: string | null;
|
|
72
|
+
from_agent_id: string | null;
|
|
73
|
+
to_agent_id: string | null;
|
|
74
|
+
reason: string;
|
|
75
|
+
status: 'pending' | 'acknowledged' | 'resolved';
|
|
76
|
+
resolution: string | null;
|
|
77
|
+
created_at: string;
|
|
78
|
+
resolved_at: string | null;
|
|
79
|
+
}
|
|
80
|
+
export interface PullRequestRow {
|
|
81
|
+
id: string;
|
|
82
|
+
story_id: string | null;
|
|
83
|
+
team_id: string | null;
|
|
84
|
+
branch_name: string;
|
|
85
|
+
github_pr_number: number | null;
|
|
86
|
+
github_pr_url: string | null;
|
|
87
|
+
submitted_by: string | null;
|
|
88
|
+
reviewed_by: string | null;
|
|
89
|
+
status: 'queued' | 'reviewing' | 'approved' | 'merged' | 'rejected' | 'closed';
|
|
90
|
+
review_notes: string | null;
|
|
91
|
+
created_at: string;
|
|
92
|
+
updated_at: string;
|
|
93
|
+
reviewed_at: string | null;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=client.d.ts.map
|