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,111 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { findHiveRoot, getHivePaths } from '../../utils/paths.js';
|
|
4
|
+
import { getDatabase } from '../../db/client.js';
|
|
5
|
+
import { getAllStories, getStoryById, getStoriesByStatus, getStoryDependencies } from '../../db/queries/stories.js';
|
|
6
|
+
import { statusColor } from '../../utils/logger.js';
|
|
7
|
+
export const storiesCommand = new Command('stories')
|
|
8
|
+
.description('Manage stories');
|
|
9
|
+
storiesCommand
|
|
10
|
+
.command('list')
|
|
11
|
+
.description('List all stories')
|
|
12
|
+
.option('--status <status>', 'Filter by status')
|
|
13
|
+
.option('--json', 'Output as JSON')
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
const root = findHiveRoot();
|
|
16
|
+
if (!root) {
|
|
17
|
+
console.error(chalk.red('Not in a Hive workspace. Run "hive init" first.'));
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
const paths = getHivePaths(root);
|
|
21
|
+
const db = await getDatabase(paths.hiveDir);
|
|
22
|
+
try {
|
|
23
|
+
let stories;
|
|
24
|
+
if (options.status) {
|
|
25
|
+
stories = getStoriesByStatus(db.db, options.status);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
stories = getAllStories(db.db);
|
|
29
|
+
}
|
|
30
|
+
if (options.json) {
|
|
31
|
+
console.log(JSON.stringify(stories, null, 2));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (stories.length === 0) {
|
|
35
|
+
console.log(chalk.yellow('No stories found.'));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(chalk.bold('\nStories:\n'));
|
|
39
|
+
// Header
|
|
40
|
+
console.log(chalk.gray(`${'ID'.padEnd(15)} ${'Title'.padEnd(40)} ${'Status'.padEnd(15)} ${'Points'.padEnd(8)} ${'Assigned'}`));
|
|
41
|
+
console.log(chalk.gray('─'.repeat(100)));
|
|
42
|
+
for (const story of stories) {
|
|
43
|
+
const title = story.title.length > 37 ? story.title.substring(0, 37) + '...' : story.title;
|
|
44
|
+
const points = story.story_points?.toString() || '-';
|
|
45
|
+
const assigned = story.assigned_agent_id || '-';
|
|
46
|
+
console.log(`${chalk.cyan(story.id.padEnd(15))} ${title.padEnd(40)} ${statusColor(story.status).padEnd(15)} ${points.padEnd(8)} ${assigned}`);
|
|
47
|
+
}
|
|
48
|
+
console.log();
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
db.close();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
storiesCommand
|
|
55
|
+
.command('show <story-id>')
|
|
56
|
+
.description('Show story details')
|
|
57
|
+
.action(async (storyId) => {
|
|
58
|
+
const root = findHiveRoot();
|
|
59
|
+
if (!root) {
|
|
60
|
+
console.error(chalk.red('Not in a Hive workspace. Run "hive init" first.'));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
const paths = getHivePaths(root);
|
|
64
|
+
const db = await getDatabase(paths.hiveDir);
|
|
65
|
+
try {
|
|
66
|
+
const story = getStoryById(db.db, storyId);
|
|
67
|
+
if (!story) {
|
|
68
|
+
console.error(chalk.red(`Story not found: ${storyId}`));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const dependencies = getStoryDependencies(db.db, story.id);
|
|
72
|
+
console.log(chalk.bold(`\nStory: ${story.id}\n`));
|
|
73
|
+
console.log(chalk.bold('Title:'), story.title);
|
|
74
|
+
console.log(chalk.bold('Status:'), statusColor(story.status));
|
|
75
|
+
console.log(chalk.bold('\nDescription:'));
|
|
76
|
+
console.log(chalk.gray(story.description));
|
|
77
|
+
if (story.acceptance_criteria) {
|
|
78
|
+
console.log(chalk.bold('\nAcceptance Criteria:'));
|
|
79
|
+
try {
|
|
80
|
+
const criteria = JSON.parse(story.acceptance_criteria);
|
|
81
|
+
for (const c of criteria) {
|
|
82
|
+
console.log(chalk.gray(` • ${c}`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
console.log(chalk.gray(story.acceptance_criteria));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
console.log(chalk.bold('\nDetails:'));
|
|
90
|
+
console.log(chalk.gray(` Requirement: ${story.requirement_id || '-'}`));
|
|
91
|
+
console.log(chalk.gray(` Team: ${story.team_id || '-'}`));
|
|
92
|
+
console.log(chalk.gray(` Complexity: ${story.complexity_score || '-'}`));
|
|
93
|
+
console.log(chalk.gray(` Story Points: ${story.story_points || '-'}`));
|
|
94
|
+
console.log(chalk.gray(` Assigned Agent: ${story.assigned_agent_id || '-'}`));
|
|
95
|
+
console.log(chalk.gray(` Branch: ${story.branch_name || '-'}`));
|
|
96
|
+
console.log(chalk.gray(` PR URL: ${story.pr_url || '-'}`));
|
|
97
|
+
console.log(chalk.gray(` Created: ${story.created_at}`));
|
|
98
|
+
console.log(chalk.gray(` Updated: ${story.updated_at}`));
|
|
99
|
+
if (dependencies.length > 0) {
|
|
100
|
+
console.log(chalk.bold('\nDependencies:'));
|
|
101
|
+
for (const dep of dependencies) {
|
|
102
|
+
console.log(` ${chalk.cyan(dep.id)} - ${dep.title.substring(0, 40)}... - ${statusColor(dep.status)}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
console.log();
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
db.close();
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stories.js","sourceRoot":"","sources":["../../../src/cli/commands/stories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teams.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/teams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SACK,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { findHiveRoot, getHivePaths } from '../../utils/paths.js';
|
|
4
|
+
import { getDatabase } from '../../db/client.js';
|
|
5
|
+
import { getAllTeams, getTeamByName, deleteTeam } from '../../db/queries/teams.js';
|
|
6
|
+
import { getAgentsByTeam } from '../../db/queries/agents.js';
|
|
7
|
+
import { getStoriesByTeam, getStoryPointsByTeam } from '../../db/queries/stories.js';
|
|
8
|
+
export const teamsCommand = new Command('teams')
|
|
9
|
+
.description('Manage teams');
|
|
10
|
+
teamsCommand
|
|
11
|
+
.command('list')
|
|
12
|
+
.description('List all teams')
|
|
13
|
+
.option('--json', 'Output as JSON')
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
const root = findHiveRoot();
|
|
16
|
+
if (!root) {
|
|
17
|
+
console.error(chalk.red('Not in a Hive workspace. Run "hive init" first.'));
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
const paths = getHivePaths(root);
|
|
21
|
+
const db = await getDatabase(paths.hiveDir);
|
|
22
|
+
try {
|
|
23
|
+
const teams = getAllTeams(db.db);
|
|
24
|
+
if (options.json) {
|
|
25
|
+
console.log(JSON.stringify(teams, null, 2));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (teams.length === 0) {
|
|
29
|
+
console.log(chalk.yellow('No teams found.'));
|
|
30
|
+
console.log(chalk.gray('Use "hive add-repo --url <url> --team <name>" to add a team.'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log(chalk.bold('\nTeams:\n'));
|
|
34
|
+
for (const team of teams) {
|
|
35
|
+
const agents = getAgentsByTeam(db.db, team.id);
|
|
36
|
+
const stories = getStoriesByTeam(db.db, team.id);
|
|
37
|
+
const storyPoints = getStoryPointsByTeam(db.db, team.id);
|
|
38
|
+
console.log(chalk.cyan(` ${team.name}`));
|
|
39
|
+
console.log(chalk.gray(` ID: ${team.id}`));
|
|
40
|
+
console.log(chalk.gray(` Repository: ${team.repo_url}`));
|
|
41
|
+
console.log(chalk.gray(` Path: ${team.repo_path}`));
|
|
42
|
+
console.log(chalk.gray(` Agents: ${agents.length}`));
|
|
43
|
+
console.log(chalk.gray(` Stories: ${stories.length}`));
|
|
44
|
+
console.log(chalk.gray(` Story Points: ${storyPoints}`));
|
|
45
|
+
console.log();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
db.close();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
teamsCommand
|
|
53
|
+
.command('show <name>')
|
|
54
|
+
.description('Show team details')
|
|
55
|
+
.action(async (name) => {
|
|
56
|
+
const root = findHiveRoot();
|
|
57
|
+
if (!root) {
|
|
58
|
+
console.error(chalk.red('Not in a Hive workspace. Run "hive init" first.'));
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
const paths = getHivePaths(root);
|
|
62
|
+
const db = await getDatabase(paths.hiveDir);
|
|
63
|
+
try {
|
|
64
|
+
const team = getTeamByName(db.db, name);
|
|
65
|
+
if (!team) {
|
|
66
|
+
console.error(chalk.red(`Team not found: ${name}`));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const agents = getAgentsByTeam(db.db, team.id);
|
|
70
|
+
const stories = getStoriesByTeam(db.db, team.id);
|
|
71
|
+
const storyPoints = getStoryPointsByTeam(db.db, team.id);
|
|
72
|
+
console.log(chalk.bold(`\nTeam: ${team.name}\n`));
|
|
73
|
+
console.log(chalk.gray(`ID: ${team.id}`));
|
|
74
|
+
console.log(chalk.gray(`Repository: ${team.repo_url}`));
|
|
75
|
+
console.log(chalk.gray(`Path: ${team.repo_path}`));
|
|
76
|
+
console.log(chalk.gray(`Created: ${team.created_at}`));
|
|
77
|
+
console.log();
|
|
78
|
+
if (agents.length > 0) {
|
|
79
|
+
console.log(chalk.bold('Agents:'));
|
|
80
|
+
for (const agent of agents) {
|
|
81
|
+
const statusColor = agent.status === 'working' ? chalk.yellow : agent.status === 'idle' ? chalk.gray : chalk.red;
|
|
82
|
+
console.log(` ${chalk.cyan(agent.id)} - ${agent.type} - ${statusColor(agent.status)}`);
|
|
83
|
+
}
|
|
84
|
+
console.log();
|
|
85
|
+
}
|
|
86
|
+
if (stories.length > 0) {
|
|
87
|
+
console.log(chalk.bold('Stories:'));
|
|
88
|
+
for (const story of stories) {
|
|
89
|
+
const statusColor = story.status === 'merged' ? chalk.green : story.status === 'in_progress' ? chalk.yellow : chalk.gray;
|
|
90
|
+
console.log(` ${chalk.cyan(story.id)} - ${story.title.substring(0, 40)}... - ${statusColor(story.status)}`);
|
|
91
|
+
}
|
|
92
|
+
console.log();
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk.bold('Summary:'));
|
|
95
|
+
console.log(` Total Stories: ${stories.length}`);
|
|
96
|
+
console.log(` Active Story Points: ${storyPoints}`);
|
|
97
|
+
console.log(` Active Agents: ${agents.filter(a => a.status !== 'terminated').length}`);
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
db.close();
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
teamsCommand
|
|
104
|
+
.command('remove <name>')
|
|
105
|
+
.description('Remove a team')
|
|
106
|
+
.option('--force', 'Force removal even if team has active stories')
|
|
107
|
+
.action(async (name, options) => {
|
|
108
|
+
const root = findHiveRoot();
|
|
109
|
+
if (!root) {
|
|
110
|
+
console.error(chalk.red('Not in a Hive workspace. Run "hive init" first.'));
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
const paths = getHivePaths(root);
|
|
114
|
+
const db = await getDatabase(paths.hiveDir);
|
|
115
|
+
try {
|
|
116
|
+
const team = getTeamByName(db.db, name);
|
|
117
|
+
if (!team) {
|
|
118
|
+
console.error(chalk.red(`Team not found: ${name}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
const stories = getStoriesByTeam(db.db, team.id);
|
|
122
|
+
const activeStories = stories.filter(s => !['merged', 'draft'].includes(s.status));
|
|
123
|
+
if (activeStories.length > 0 && !options.force) {
|
|
124
|
+
console.error(chalk.red(`Team has ${activeStories.length} active stories. Use --force to remove anyway.`));
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
deleteTeam(db.db, team.id);
|
|
128
|
+
console.log(chalk.green(`Team "${name}" removed successfully.`));
|
|
129
|
+
console.log(chalk.yellow('Note: Git submodule was not removed. Run the following to remove it:'));
|
|
130
|
+
console.log(chalk.gray(` git submodule deinit -f ${team.repo_path}`));
|
|
131
|
+
console.log(chalk.gray(` git rm -f ${team.repo_path}`));
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
db.close();
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=teams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teams.js","sourceRoot":"","sources":["../../../src/cli/commands/teams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,cAAc,CAAC,CAAC;AAE/B,YAAY;KACT,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,YAAY;KACT,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBACjH,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACzH,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/G,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,YAAY;KACT,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,SAAS,EAAE,+CAA+C,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA4B,EAAE,EAAE;IAC3D,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,aAAa,CAAC,MAAM,gDAAgD,CAAC,CAAC,CAAC;YAC3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,yBAAyB,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/dashboard/index.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwHlF"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import blessed from 'blessed';
|
|
2
|
+
import { appendFileSync, statSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { getDatabase } from '../../db/client.js';
|
|
5
|
+
import { findHiveRoot, getHivePaths } from '../../utils/paths.js';
|
|
6
|
+
function debugLog(msg) {
|
|
7
|
+
appendFileSync('/tmp/hive-dashboard-debug.log', `${new Date().toISOString()} ${msg}\n`);
|
|
8
|
+
}
|
|
9
|
+
import { createAgentsPanel, updateAgentsPanel } from './panels/agents.js';
|
|
10
|
+
import { createStoriesPanel, updateStoriesPanel } from './panels/stories.js';
|
|
11
|
+
import { createPipelinePanel, updatePipelinePanel } from './panels/pipeline.js';
|
|
12
|
+
import { createActivityPanel, updateActivityPanel } from './panels/activity.js';
|
|
13
|
+
import { createMergeQueuePanel, updateMergeQueuePanel } from './panels/merge-queue.js';
|
|
14
|
+
import { createEscalationsPanel, updateEscalationsPanel } from './panels/escalations.js';
|
|
15
|
+
export async function startDashboard(options = {}) {
|
|
16
|
+
const root = findHiveRoot();
|
|
17
|
+
if (!root) {
|
|
18
|
+
console.error('Not in a Hive workspace. Run "hive init" first.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const paths = getHivePaths(root);
|
|
22
|
+
const dbPath = join(paths.hiveDir, 'hive.db');
|
|
23
|
+
debugLog(`Dashboard starting - root: ${root}, hiveDir: ${paths.hiveDir}`);
|
|
24
|
+
let db = await getDatabase(paths.hiveDir);
|
|
25
|
+
let lastDbMtime = statSync(dbPath).mtimeMs;
|
|
26
|
+
const refreshInterval = options.refreshInterval || 5000;
|
|
27
|
+
// Create screen
|
|
28
|
+
const screen = blessed.screen({
|
|
29
|
+
smartCSR: true,
|
|
30
|
+
title: 'Hive Orchestrator Dashboard',
|
|
31
|
+
});
|
|
32
|
+
// Header
|
|
33
|
+
blessed.box({
|
|
34
|
+
parent: screen,
|
|
35
|
+
top: 0,
|
|
36
|
+
left: 0,
|
|
37
|
+
width: '100%',
|
|
38
|
+
height: 1,
|
|
39
|
+
content: ' {bold}HIVE ORCHESTRATOR{/bold} [R]efresh [Q]uit',
|
|
40
|
+
style: {
|
|
41
|
+
bg: 'blue',
|
|
42
|
+
fg: 'white',
|
|
43
|
+
},
|
|
44
|
+
tags: true,
|
|
45
|
+
});
|
|
46
|
+
// Create panels
|
|
47
|
+
const agentsPanel = createAgentsPanel(screen, db.db);
|
|
48
|
+
const storiesPanel = createStoriesPanel(screen, db.db);
|
|
49
|
+
const pipelinePanel = createPipelinePanel(screen, db.db);
|
|
50
|
+
const activityPanel = createActivityPanel(screen, db.db);
|
|
51
|
+
const mergeQueuePanel = createMergeQueuePanel(screen, db.db);
|
|
52
|
+
const escalationsPanel = createEscalationsPanel(screen, db.db);
|
|
53
|
+
// Footer
|
|
54
|
+
blessed.box({
|
|
55
|
+
parent: screen,
|
|
56
|
+
bottom: 0,
|
|
57
|
+
left: 0,
|
|
58
|
+
width: '100%',
|
|
59
|
+
height: 1,
|
|
60
|
+
content: ' Tab: Switch panels | ↑↓: Navigate | Enter: Attach to tmux | Ctrl+B,D: Detach | Q: Quit',
|
|
61
|
+
style: {
|
|
62
|
+
bg: 'blue',
|
|
63
|
+
fg: 'white',
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
// Focus management
|
|
67
|
+
const panels = [agentsPanel, storiesPanel, activityPanel, mergeQueuePanel, escalationsPanel];
|
|
68
|
+
let focusIndex = 0;
|
|
69
|
+
panels[focusIndex].focus();
|
|
70
|
+
// Refresh function - only reloads database when file has changed
|
|
71
|
+
const refresh = async () => {
|
|
72
|
+
try {
|
|
73
|
+
// Check if database file has been modified
|
|
74
|
+
const currentMtime = statSync(dbPath).mtimeMs;
|
|
75
|
+
if (currentMtime !== lastDbMtime) {
|
|
76
|
+
debugLog(`Database changed - reloading from ${paths.hiveDir}`);
|
|
77
|
+
lastDbMtime = currentMtime;
|
|
78
|
+
// Get new database connection first, then close old one
|
|
79
|
+
const newDb = await getDatabase(paths.hiveDir);
|
|
80
|
+
try {
|
|
81
|
+
db.db.close();
|
|
82
|
+
}
|
|
83
|
+
catch { /* ignore close errors */ }
|
|
84
|
+
db = newDb;
|
|
85
|
+
}
|
|
86
|
+
await updateAgentsPanel(agentsPanel, db.db);
|
|
87
|
+
updateStoriesPanel(storiesPanel, db.db);
|
|
88
|
+
updatePipelinePanel(pipelinePanel, db.db);
|
|
89
|
+
updateActivityPanel(activityPanel, db.db);
|
|
90
|
+
updateMergeQueuePanel(mergeQueuePanel, db.db);
|
|
91
|
+
updateEscalationsPanel(escalationsPanel, db.db);
|
|
92
|
+
screen.render();
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
debugLog(`Refresh error: ${err}`);
|
|
96
|
+
process.stderr.write(`Dashboard refresh error: ${err}\n`);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
// Auto-refresh - wrap in arrow function to handle async properly
|
|
100
|
+
const timer = setInterval(() => { refresh(); }, refreshInterval);
|
|
101
|
+
// Key bindings
|
|
102
|
+
screen.key(['q', 'C-c', 'escape'], () => {
|
|
103
|
+
clearInterval(timer);
|
|
104
|
+
try {
|
|
105
|
+
db.db.close();
|
|
106
|
+
}
|
|
107
|
+
catch { /* ignore */ }
|
|
108
|
+
screen.destroy();
|
|
109
|
+
process.exit(0);
|
|
110
|
+
});
|
|
111
|
+
screen.key(['r'], () => {
|
|
112
|
+
refresh();
|
|
113
|
+
});
|
|
114
|
+
screen.key(['tab'], () => {
|
|
115
|
+
focusIndex = (focusIndex + 1) % panels.length;
|
|
116
|
+
panels[focusIndex].focus();
|
|
117
|
+
screen.render();
|
|
118
|
+
});
|
|
119
|
+
screen.key(['S-tab'], () => {
|
|
120
|
+
focusIndex = (focusIndex - 1 + panels.length) % panels.length;
|
|
121
|
+
panels[focusIndex].focus();
|
|
122
|
+
screen.render();
|
|
123
|
+
});
|
|
124
|
+
// Initial refresh and render
|
|
125
|
+
await refresh();
|
|
126
|
+
screen.render();
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/dashboard/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Database } from 'sql.js';
|
|
2
|
+
import { type Widgets } from 'blessed';
|
|
3
|
+
export declare function createActivityPanel(screen: Widgets.Screen, db: Database): Widgets.BoxElement;
|
|
4
|
+
export declare function updateActivityPanel(box: Widgets.BoxElement, db: Database): void;
|
|
5
|
+
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAGhD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CA6B5F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,CAkB/E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import blessed from 'blessed';
|
|
2
|
+
import { getRecentLogs } from '../../../db/queries/logs.js';
|
|
3
|
+
export function createActivityPanel(screen, db) {
|
|
4
|
+
const box = blessed.box({
|
|
5
|
+
parent: screen,
|
|
6
|
+
top: '55%+5',
|
|
7
|
+
left: 0,
|
|
8
|
+
width: '50%',
|
|
9
|
+
height: '35%',
|
|
10
|
+
border: { type: 'line' },
|
|
11
|
+
label: ' Recent Activity ',
|
|
12
|
+
scrollable: true,
|
|
13
|
+
alwaysScroll: true,
|
|
14
|
+
keys: true,
|
|
15
|
+
vi: true,
|
|
16
|
+
mouse: true,
|
|
17
|
+
style: {
|
|
18
|
+
border: { fg: 'cyan' },
|
|
19
|
+
},
|
|
20
|
+
tags: true,
|
|
21
|
+
scrollbar: {
|
|
22
|
+
ch: ' ',
|
|
23
|
+
track: { bg: 'gray' },
|
|
24
|
+
style: { bg: 'white' },
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
updateActivityPanel(box, db);
|
|
28
|
+
return box;
|
|
29
|
+
}
|
|
30
|
+
export function updateActivityPanel(box, db) {
|
|
31
|
+
const logs = getRecentLogs(db, 50);
|
|
32
|
+
const lines = [];
|
|
33
|
+
for (const entry of logs.reverse()) {
|
|
34
|
+
const time = formatTimestamp(entry.timestamp);
|
|
35
|
+
const agent = entry.agent_id.padEnd(15).substring(0, 15);
|
|
36
|
+
const event = formatEventType(entry.event_type);
|
|
37
|
+
const message = entry.message ? `: ${entry.message.substring(0, 40)}` : '';
|
|
38
|
+
lines.push(`{gray-fg}${time}{/} {cyan-fg}${agent}{/} ${event}${message}`);
|
|
39
|
+
}
|
|
40
|
+
box.setContent(lines.join('\n'));
|
|
41
|
+
// Always scroll to the latest (bottom) entries
|
|
42
|
+
box.setScrollPerc(100);
|
|
43
|
+
}
|
|
44
|
+
function formatTimestamp(timestamp) {
|
|
45
|
+
return timestamp.substring(11, 19);
|
|
46
|
+
}
|
|
47
|
+
function formatEventType(event) {
|
|
48
|
+
const colors = {
|
|
49
|
+
AGENT_SPAWNED: 'green',
|
|
50
|
+
AGENT_TERMINATED: 'red',
|
|
51
|
+
AGENT_RESUMED: 'yellow',
|
|
52
|
+
STORY_STARTED: 'blue',
|
|
53
|
+
STORY_COMPLETED: 'green',
|
|
54
|
+
STORY_QA_PASSED: 'green',
|
|
55
|
+
STORY_QA_FAILED: 'red',
|
|
56
|
+
STORY_PR_CREATED: 'magenta',
|
|
57
|
+
ESCALATION_CREATED: 'red',
|
|
58
|
+
BUILD_PASSED: 'green',
|
|
59
|
+
BUILD_FAILED: 'red',
|
|
60
|
+
};
|
|
61
|
+
const color = colors[event] || 'white';
|
|
62
|
+
return `{${color}-fg}${event}{/}`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/activity.ts"],"names":[],"mappings":"AACA,OAAO,OAAyB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,UAAU,mBAAmB,CAAC,MAAsB,EAAE,EAAY;IAEtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACtB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,KAAK,EAAE,mBAAmB;QAC1B,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,IAAI;QACX,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;SACvB;QACD,IAAI,EAAE,IAAI;QACV,SAAS,EAAE;YACT,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;SACvB;KACF,CAAC,CAAC;IAEH,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAuB,EAAE,EAAY;IACvE,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3E,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,gBAAgB,KAAK,OAAO,KAAK,GAAG,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjC,+CAA+C;IAC/C,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,MAAM,GAA2B;QACrC,aAAa,EAAE,OAAO;QACtB,gBAAgB,EAAE,KAAK;QACvB,aAAa,EAAE,QAAQ;QACvB,aAAa,EAAE,MAAM;QACrB,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,OAAO;QACxB,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,SAAS;QAC3B,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,KAAK;KACpB,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;IACvC,OAAO,IAAI,KAAK,OAAO,KAAK,KAAK,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Database } from 'sql.js';
|
|
2
|
+
import { type Widgets } from 'blessed';
|
|
3
|
+
export declare function createAgentsPanel(screen: Widgets.Screen, db: Database): Widgets.ListElement;
|
|
4
|
+
export declare function updateAgentsPanel(list: Widgets.ListElement, db: Database): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAgB,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAchD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CA6D3F;AAOD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF9F"}
|