forge-server 0.1.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/.claude/hooks/worktree-create.sh +64 -0
- package/.claude/hooks/worktree-remove.sh +57 -0
- package/.claude/settings.local.json +29 -0
- package/.forge/knowledge/conventions.yaml +1 -0
- package/.forge/knowledge/decisions.yaml +1 -0
- package/.forge/knowledge/gotchas.yaml +1 -0
- package/.forge/knowledge/patterns.yaml +1 -0
- package/.forge/manifest.yaml +6 -0
- package/CLAUDE.md +144 -0
- package/bin/setup-forge.sh +132 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +553 -0
- package/dist/cli.js.map +1 -0
- package/dist/context/codebase.d.ts +57 -0
- package/dist/context/codebase.d.ts.map +1 -0
- package/dist/context/codebase.js +301 -0
- package/dist/context/codebase.js.map +1 -0
- package/dist/context/injector.d.ts +147 -0
- package/dist/context/injector.d.ts.map +1 -0
- package/dist/context/injector.js +533 -0
- package/dist/context/injector.js.map +1 -0
- package/dist/context/memory.d.ts +32 -0
- package/dist/context/memory.d.ts.map +1 -0
- package/dist/context/memory.js +140 -0
- package/dist/context/memory.js.map +1 -0
- package/dist/context/session-index.d.ts +54 -0
- package/dist/context/session-index.d.ts.map +1 -0
- package/dist/context/session-index.js +265 -0
- package/dist/context/session-index.js.map +1 -0
- package/dist/context/session.d.ts +42 -0
- package/dist/context/session.d.ts.map +1 -0
- package/dist/context/session.js +121 -0
- package/dist/context/session.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/ingestion/chunker.d.ts +19 -0
- package/dist/ingestion/chunker.d.ts.map +1 -0
- package/dist/ingestion/chunker.js +189 -0
- package/dist/ingestion/chunker.js.map +1 -0
- package/dist/ingestion/embedder.d.ts +45 -0
- package/dist/ingestion/embedder.d.ts.map +1 -0
- package/dist/ingestion/embedder.js +152 -0
- package/dist/ingestion/embedder.js.map +1 -0
- package/dist/ingestion/git-analyzer.d.ts +77 -0
- package/dist/ingestion/git-analyzer.d.ts.map +1 -0
- package/dist/ingestion/git-analyzer.js +437 -0
- package/dist/ingestion/git-analyzer.js.map +1 -0
- package/dist/ingestion/indexer.d.ts +79 -0
- package/dist/ingestion/indexer.d.ts.map +1 -0
- package/dist/ingestion/indexer.js +766 -0
- package/dist/ingestion/indexer.js.map +1 -0
- package/dist/ingestion/markdown-chunker.d.ts +19 -0
- package/dist/ingestion/markdown-chunker.d.ts.map +1 -0
- package/dist/ingestion/markdown-chunker.js +243 -0
- package/dist/ingestion/markdown-chunker.js.map +1 -0
- package/dist/ingestion/markdown-knowledge.d.ts +21 -0
- package/dist/ingestion/markdown-knowledge.d.ts.map +1 -0
- package/dist/ingestion/markdown-knowledge.js +129 -0
- package/dist/ingestion/markdown-knowledge.js.map +1 -0
- package/dist/ingestion/parser.d.ts +20 -0
- package/dist/ingestion/parser.d.ts.map +1 -0
- package/dist/ingestion/parser.js +429 -0
- package/dist/ingestion/parser.js.map +1 -0
- package/dist/ingestion/watcher.d.ts +28 -0
- package/dist/ingestion/watcher.d.ts.map +1 -0
- package/dist/ingestion/watcher.js +147 -0
- package/dist/ingestion/watcher.js.map +1 -0
- package/dist/knowledge/hydrator.d.ts +37 -0
- package/dist/knowledge/hydrator.d.ts.map +1 -0
- package/dist/knowledge/hydrator.js +220 -0
- package/dist/knowledge/hydrator.js.map +1 -0
- package/dist/knowledge/registry.d.ts +129 -0
- package/dist/knowledge/registry.d.ts.map +1 -0
- package/dist/knowledge/registry.js +361 -0
- package/dist/knowledge/registry.js.map +1 -0
- package/dist/knowledge/search.d.ts +114 -0
- package/dist/knowledge/search.d.ts.map +1 -0
- package/dist/knowledge/search.js +428 -0
- package/dist/knowledge/search.js.map +1 -0
- package/dist/knowledge/store.d.ts +76 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +230 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/learning/confidence.d.ts +30 -0
- package/dist/learning/confidence.d.ts.map +1 -0
- package/dist/learning/confidence.js +165 -0
- package/dist/learning/confidence.js.map +1 -0
- package/dist/learning/patterns.d.ts +52 -0
- package/dist/learning/patterns.d.ts.map +1 -0
- package/dist/learning/patterns.js +290 -0
- package/dist/learning/patterns.js.map +1 -0
- package/dist/learning/trajectory.d.ts +55 -0
- package/dist/learning/trajectory.d.ts.map +1 -0
- package/dist/learning/trajectory.js +200 -0
- package/dist/learning/trajectory.js.map +1 -0
- package/dist/memory/memory-compat.d.ts +100 -0
- package/dist/memory/memory-compat.d.ts.map +1 -0
- package/dist/memory/memory-compat.js +146 -0
- package/dist/memory/memory-compat.js.map +1 -0
- package/dist/memory/observation-store.d.ts +57 -0
- package/dist/memory/observation-store.d.ts.map +1 -0
- package/dist/memory/observation-store.js +154 -0
- package/dist/memory/observation-store.js.map +1 -0
- package/dist/memory/session-tracker.d.ts +81 -0
- package/dist/memory/session-tracker.d.ts.map +1 -0
- package/dist/memory/session-tracker.js +262 -0
- package/dist/memory/session-tracker.js.map +1 -0
- package/dist/pipeline/engine.d.ts +179 -0
- package/dist/pipeline/engine.d.ts.map +1 -0
- package/dist/pipeline/engine.js +691 -0
- package/dist/pipeline/engine.js.map +1 -0
- package/dist/pipeline/events.d.ts +54 -0
- package/dist/pipeline/events.d.ts.map +1 -0
- package/dist/pipeline/events.js +157 -0
- package/dist/pipeline/events.js.map +1 -0
- package/dist/pipeline/parallel.d.ts +83 -0
- package/dist/pipeline/parallel.d.ts.map +1 -0
- package/dist/pipeline/parallel.js +277 -0
- package/dist/pipeline/parallel.js.map +1 -0
- package/dist/pipeline/state-machine.d.ts +65 -0
- package/dist/pipeline/state-machine.d.ts.map +1 -0
- package/dist/pipeline/state-machine.js +176 -0
- package/dist/pipeline/state-machine.js.map +1 -0
- package/dist/query/graph-queries.d.ts +84 -0
- package/dist/query/graph-queries.d.ts.map +1 -0
- package/dist/query/graph-queries.js +216 -0
- package/dist/query/graph-queries.js.map +1 -0
- package/dist/query/hybrid-search.d.ts +34 -0
- package/dist/query/hybrid-search.d.ts.map +1 -0
- package/dist/query/hybrid-search.js +263 -0
- package/dist/query/hybrid-search.js.map +1 -0
- package/dist/query/intent-detector.d.ts +35 -0
- package/dist/query/intent-detector.d.ts.map +1 -0
- package/dist/query/intent-detector.js +115 -0
- package/dist/query/intent-detector.js.map +1 -0
- package/dist/query/ranking.d.ts +57 -0
- package/dist/query/ranking.d.ts.map +1 -0
- package/dist/query/ranking.js +109 -0
- package/dist/query/ranking.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +291 -0
- package/dist/server.js.map +1 -0
- package/dist/storage/falkordb-store.d.ts +73 -0
- package/dist/storage/falkordb-store.d.ts.map +1 -0
- package/dist/storage/falkordb-store.js +346 -0
- package/dist/storage/falkordb-store.js.map +1 -0
- package/dist/storage/file-cache.d.ts +32 -0
- package/dist/storage/file-cache.d.ts.map +1 -0
- package/dist/storage/file-cache.js +115 -0
- package/dist/storage/file-cache.js.map +1 -0
- package/dist/storage/interfaces.d.ts +151 -0
- package/dist/storage/interfaces.d.ts.map +1 -0
- package/dist/storage/interfaces.js +7 -0
- package/dist/storage/interfaces.js.map +1 -0
- package/dist/storage/qdrant-store.d.ts +110 -0
- package/dist/storage/qdrant-store.d.ts.map +1 -0
- package/dist/storage/qdrant-store.js +467 -0
- package/dist/storage/qdrant-store.js.map +1 -0
- package/dist/storage/schema.d.ts +4 -0
- package/dist/storage/schema.d.ts.map +1 -0
- package/dist/storage/schema.js +136 -0
- package/dist/storage/schema.js.map +1 -0
- package/dist/storage/sqlite.d.ts +35 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +132 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/tools/collaboration-tools.d.ts +111 -0
- package/dist/tools/collaboration-tools.d.ts.map +1 -0
- package/dist/tools/collaboration-tools.js +174 -0
- package/dist/tools/collaboration-tools.js.map +1 -0
- package/dist/tools/context-tools.d.ts +293 -0
- package/dist/tools/context-tools.d.ts.map +1 -0
- package/dist/tools/context-tools.js +437 -0
- package/dist/tools/context-tools.js.map +1 -0
- package/dist/tools/graph-tools.d.ts +129 -0
- package/dist/tools/graph-tools.d.ts.map +1 -0
- package/dist/tools/graph-tools.js +237 -0
- package/dist/tools/graph-tools.js.map +1 -0
- package/dist/tools/ingestion-tools.d.ts +96 -0
- package/dist/tools/ingestion-tools.d.ts.map +1 -0
- package/dist/tools/ingestion-tools.js +90 -0
- package/dist/tools/ingestion-tools.js.map +1 -0
- package/dist/tools/learning-tools.d.ts +168 -0
- package/dist/tools/learning-tools.d.ts.map +1 -0
- package/dist/tools/learning-tools.js +158 -0
- package/dist/tools/learning-tools.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +183 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +197 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/phase-tools.d.ts +954 -0
- package/dist/tools/phase-tools.d.ts.map +1 -0
- package/dist/tools/phase-tools.js +1215 -0
- package/dist/tools/phase-tools.js.map +1 -0
- package/dist/tools/pipeline-tools.d.ts +140 -0
- package/dist/tools/pipeline-tools.d.ts.map +1 -0
- package/dist/tools/pipeline-tools.js +162 -0
- package/dist/tools/pipeline-tools.js.map +1 -0
- package/dist/tools/registration-tools.d.ts +220 -0
- package/dist/tools/registration-tools.d.ts.map +1 -0
- package/dist/tools/registration-tools.js +391 -0
- package/dist/tools/registration-tools.js.map +1 -0
- package/dist/util/circuit-breaker.d.ts +75 -0
- package/dist/util/circuit-breaker.d.ts.map +1 -0
- package/dist/util/circuit-breaker.js +159 -0
- package/dist/util/circuit-breaker.js.map +1 -0
- package/dist/util/config.d.ts +23 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +164 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/logger.d.ts +13 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +45 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/token-counter.d.ts +24 -0
- package/dist/util/token-counter.d.ts.map +1 -0
- package/dist/util/token-counter.js +48 -0
- package/dist/util/token-counter.js.map +1 -0
- package/dist/util/types.d.ts +525 -0
- package/dist/util/types.d.ts.map +1 -0
- package/dist/util/types.js +5 -0
- package/dist/util/types.js.map +1 -0
- package/docker-compose.yml +20 -0
- package/docs/plans/2026-02-27-swarm-coordination/architecture.md +203 -0
- package/docs/plans/2026-02-27-swarm-coordination/vision.md +57 -0
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +1 -0
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +300 -0
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +480 -0
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +462 -0
- package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +181 -0
- package/package.json +39 -0
- package/plugin/.claude-plugin/plugin.json +8 -0
- package/plugin/.mcp.json +15 -0
- package/plugin/README.md +134 -0
- package/plugin/agents/architect.md +367 -0
- package/plugin/agents/backend-specialist.md +263 -0
- package/plugin/agents/brainstormer.md +122 -0
- package/plugin/agents/data-specialist.md +266 -0
- package/plugin/agents/designer.md +408 -0
- package/plugin/agents/frontend-specialist.md +241 -0
- package/plugin/agents/inspector.md +406 -0
- package/plugin/agents/knowledge-keeper.md +443 -0
- package/plugin/agents/platform-engineer.md +326 -0
- package/plugin/agents/product-manager.md +268 -0
- package/plugin/agents/product-owner.md +438 -0
- package/plugin/agents/pulse-checker.md +73 -0
- package/plugin/agents/qa-strategist.md +500 -0
- package/plugin/agents/self-improver.md +310 -0
- package/plugin/agents/strategist.md +360 -0
- package/plugin/agents/supervisor.md +380 -0
- package/plugin/commands/brainstorm.md +25 -0
- package/plugin/commands/forge.md +88 -0
- package/plugin/docs/atlassian-integration.md +110 -0
- package/plugin/docs/workflow.md +126 -0
- package/plugin/skills/agent-development/.skillfish.json +10 -0
- package/plugin/skills/agent-development/SKILL.md +415 -0
- package/plugin/skills/agent-development/examples/agent-creation-prompt.md +238 -0
- package/plugin/skills/agent-development/examples/complete-agent-examples.md +427 -0
- package/plugin/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
- package/plugin/skills/agent-development/references/system-prompt-design.md +411 -0
- package/plugin/skills/agent-development/references/triggering-examples.md +491 -0
- package/plugin/skills/agent-development/scripts/validate-agent.sh +217 -0
- package/plugin/skills/agent-handoff/SKILL.md +335 -0
- package/plugin/skills/anti-stub/SKILL.md +317 -0
- package/plugin/skills/brainstorm/SKILL.md +31 -0
- package/plugin/skills/debugging/SKILL.md +276 -0
- package/plugin/skills/fix/SKILL.md +62 -0
- package/plugin/skills/frontend-design/.skillfish.json +10 -0
- package/plugin/skills/frontend-design/SKILL.md +42 -0
- package/plugin/skills/gotchas/SKILL.md +61 -0
- package/plugin/skills/graph-orchestrator/SKILL.md +38 -0
- package/plugin/skills/history/SKILL.md +58 -0
- package/plugin/skills/impact/SKILL.md +59 -0
- package/plugin/skills/implementation-execution/SKILL.md +291 -0
- package/plugin/skills/index-repo/SKILL.md +55 -0
- package/plugin/skills/interviewing/SKILL.md +225 -0
- package/plugin/skills/knowledge-curation/SKILL.md +393 -0
- package/plugin/skills/learn/SKILL.md +69 -0
- package/plugin/skills/mcp-integration/.skillfish.json +10 -0
- package/plugin/skills/mcp-integration/SKILL.md +554 -0
- package/plugin/skills/mcp-integration/examples/http-server.json +20 -0
- package/plugin/skills/mcp-integration/examples/sse-server.json +19 -0
- package/plugin/skills/mcp-integration/examples/stdio-server.json +26 -0
- package/plugin/skills/mcp-integration/references/authentication.md +549 -0
- package/plugin/skills/mcp-integration/references/server-types.md +536 -0
- package/plugin/skills/mcp-integration/references/tool-usage.md +538 -0
- package/plugin/skills/nestjs/.skillfish.json +10 -0
- package/plugin/skills/nestjs/SKILL.md +669 -0
- package/plugin/skills/nestjs/drizzle-reference.md +1894 -0
- package/plugin/skills/nestjs/reference.md +1447 -0
- package/plugin/skills/nestjs/workflow-optimization.md +229 -0
- package/plugin/skills/parallel-dispatch/SKILL.md +308 -0
- package/plugin/skills/project-discovery/SKILL.md +304 -0
- package/plugin/skills/search/SKILL.md +56 -0
- package/plugin/skills/security-audit/SKILL.md +362 -0
- package/plugin/skills/skill-development/.skillfish.json +10 -0
- package/plugin/skills/skill-development/SKILL.md +637 -0
- package/plugin/skills/skill-development/references/skill-creator-original.md +209 -0
- package/plugin/skills/tdd/SKILL.md +273 -0
- package/plugin/skills/terminal-presentation/SKILL.md +395 -0
- package/plugin/skills/test-strategy/SKILL.md +365 -0
- package/plugin/skills/verification-protocol/SKILL.md +256 -0
- package/plugin/skills/visual-explainer/CHANGELOG.md +97 -0
- package/plugin/skills/visual-explainer/LICENSE +21 -0
- package/plugin/skills/visual-explainer/README.md +137 -0
- package/plugin/skills/visual-explainer/SKILL.md +352 -0
- package/plugin/skills/visual-explainer/banner.png +0 -0
- package/plugin/skills/visual-explainer/package.json +11 -0
- package/plugin/skills/visual-explainer/prompts/diff-review.md +68 -0
- package/plugin/skills/visual-explainer/prompts/fact-check.md +63 -0
- package/plugin/skills/visual-explainer/prompts/generate-slides.md +18 -0
- package/plugin/skills/visual-explainer/prompts/generate-web-diagram.md +10 -0
- package/plugin/skills/visual-explainer/prompts/plan-review.md +86 -0
- package/plugin/skills/visual-explainer/prompts/project-recap.md +61 -0
- package/plugin/skills/visual-explainer/references/css-patterns.md +1188 -0
- package/plugin/skills/visual-explainer/references/libraries.md +470 -0
- package/plugin/skills/visual-explainer/references/responsive-nav.md +212 -0
- package/plugin/skills/visual-explainer/references/slide-patterns.md +1403 -0
- package/plugin/skills/visual-explainer/templates/architecture.html +596 -0
- package/plugin/skills/visual-explainer/templates/data-table.html +540 -0
- package/plugin/skills/visual-explainer/templates/mermaid-flowchart.html +435 -0
- package/plugin/skills/visual-explainer/templates/slide-deck.html +913 -0
- package/src/cli.ts +655 -0
- package/src/context/.gitkeep +0 -0
- package/src/context/codebase.ts +393 -0
- package/src/context/injector.ts +797 -0
- package/src/context/memory.ts +187 -0
- package/src/context/session-index.ts +327 -0
- package/src/context/session.ts +152 -0
- package/src/index.ts +47 -0
- package/src/ingestion/.gitkeep +0 -0
- package/src/ingestion/chunker.ts +277 -0
- package/src/ingestion/embedder.ts +167 -0
- package/src/ingestion/git-analyzer.ts +545 -0
- package/src/ingestion/indexer.ts +984 -0
- package/src/ingestion/markdown-chunker.ts +337 -0
- package/src/ingestion/markdown-knowledge.ts +175 -0
- package/src/ingestion/parser.ts +475 -0
- package/src/ingestion/watcher.ts +182 -0
- package/src/knowledge/.gitkeep +0 -0
- package/src/knowledge/hydrator.ts +246 -0
- package/src/knowledge/registry.ts +463 -0
- package/src/knowledge/search.ts +565 -0
- package/src/knowledge/store.ts +262 -0
- package/src/learning/.gitkeep +0 -0
- package/src/learning/confidence.ts +193 -0
- package/src/learning/patterns.ts +360 -0
- package/src/learning/trajectory.ts +268 -0
- package/src/memory/.gitkeep +0 -0
- package/src/memory/memory-compat.ts +233 -0
- package/src/memory/observation-store.ts +224 -0
- package/src/memory/session-tracker.ts +332 -0
- package/src/pipeline/.gitkeep +0 -0
- package/src/pipeline/engine.ts +1139 -0
- package/src/pipeline/events.ts +253 -0
- package/src/pipeline/parallel.ts +394 -0
- package/src/pipeline/state-machine.ts +199 -0
- package/src/query/.gitkeep +0 -0
- package/src/query/graph-queries.ts +262 -0
- package/src/query/hybrid-search.ts +337 -0
- package/src/query/intent-detector.ts +131 -0
- package/src/query/ranking.ts +161 -0
- package/src/server.ts +352 -0
- package/src/storage/.gitkeep +0 -0
- package/src/storage/falkordb-store.ts +388 -0
- package/src/storage/file-cache.ts +141 -0
- package/src/storage/interfaces.ts +201 -0
- package/src/storage/qdrant-store.ts +557 -0
- package/src/storage/schema.ts +139 -0
- package/src/storage/sqlite.ts +168 -0
- package/src/tools/.gitkeep +0 -0
- package/src/tools/collaboration-tools.ts +208 -0
- package/src/tools/context-tools.ts +493 -0
- package/src/tools/graph-tools.ts +295 -0
- package/src/tools/ingestion-tools.ts +122 -0
- package/src/tools/learning-tools.ts +181 -0
- package/src/tools/memory-tools.ts +234 -0
- package/src/tools/phase-tools.ts +1452 -0
- package/src/tools/pipeline-tools.ts +188 -0
- package/src/tools/registration-tools.ts +450 -0
- package/src/util/.gitkeep +0 -0
- package/src/util/circuit-breaker.ts +193 -0
- package/src/util/config.ts +177 -0
- package/src/util/logger.ts +53 -0
- package/src/util/token-counter.ts +52 -0
- package/src/util/types.ts +710 -0
- package/tests/context/.gitkeep +0 -0
- package/tests/integration/.gitkeep +0 -0
- package/tests/knowledge/.gitkeep +0 -0
- package/tests/learning/.gitkeep +0 -0
- package/tests/pipeline/.gitkeep +0 -0
- package/tests/tools/.gitkeep +0 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +10 -0
- package/vscode-extension/.vscodeignore +7 -0
- package/vscode-extension/README.md +43 -0
- package/vscode-extension/out/edge-collector.js +274 -0
- package/vscode-extension/out/edge-collector.js.map +1 -0
- package/vscode-extension/out/extension.js +264 -0
- package/vscode-extension/out/extension.js.map +1 -0
- package/vscode-extension/out/forge-client.js +318 -0
- package/vscode-extension/out/forge-client.js.map +1 -0
- package/vscode-extension/package-lock.json +59 -0
- package/vscode-extension/package.json +71 -0
- package/vscode-extension/src/edge-collector.ts +320 -0
- package/vscode-extension/src/extension.ts +269 -0
- package/vscode-extension/src/forge-client.ts +364 -0
- package/vscode-extension/tsconfig.json +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/pipeline/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { PipelineEvent, PipelineEventPayload, EventType, PipelinePhase } from '../util/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a PipelineEvent (without id — that is assigned by SQLite AUTOINCREMENT)
|
|
4
|
+
* with a generated timestamp and sensible defaults.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createEvent(projectId: string, type: EventType, data?: {
|
|
7
|
+
fromPhase?: PipelinePhase | null;
|
|
8
|
+
toPhase?: PipelinePhase | null;
|
|
9
|
+
agent?: string | null;
|
|
10
|
+
payload?: PipelineEventPayload;
|
|
11
|
+
}): Omit<PipelineEvent, 'id'>;
|
|
12
|
+
/** Emitted when the engine transitions a project to a new phase. */
|
|
13
|
+
export declare function phaseTransitionEvent(projectId: string, fromPhase: PipelinePhase, toPhase: PipelinePhase, agent?: string | null, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
14
|
+
/** Emitted when an agent begins work on a phase. */
|
|
15
|
+
export declare function agentStartedEvent(projectId: string, phase: PipelinePhase, agent: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
16
|
+
/** Emitted when an agent successfully completes a phase. */
|
|
17
|
+
export declare function agentCompletedEvent(projectId: string, phase: PipelinePhase, agent: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
18
|
+
/** Emitted when an agent fails a phase. */
|
|
19
|
+
export declare function agentFailedEvent(projectId: string, phase: PipelinePhase, agent: string, error: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
20
|
+
/** Emitted when the project is first created. */
|
|
21
|
+
export declare function projectCreatedEvent(projectId: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
22
|
+
/** Emitted when the project is paused. */
|
|
23
|
+
export declare function projectPausedEvent(projectId: string, phase: PipelinePhase, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
24
|
+
/** Emitted when the project is resumed from pause. */
|
|
25
|
+
export declare function projectResumedEvent(projectId: string, phase: PipelinePhase, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
26
|
+
/** Emitted when the project reaches completed status. */
|
|
27
|
+
export declare function projectCompletedEvent(projectId: string, extra?: PipelineEventPayload): Omit<PipelineEvent, 'id'>;
|
|
28
|
+
/** Emitted when a new work claim is created for a module. */
|
|
29
|
+
export declare function claimCreatedEvent(projectId: string, claimId: string, moduleName: string, agent: string): Omit<PipelineEvent, 'id'>;
|
|
30
|
+
/** Emitted when a claim is successfully completed. */
|
|
31
|
+
export declare function claimCompletedEvent(projectId: string, claimId: string, moduleName: string, agent: string, result?: string): Omit<PipelineEvent, 'id'>;
|
|
32
|
+
/** Emitted when a claim fails. */
|
|
33
|
+
export declare function claimFailedEvent(projectId: string, claimId: string, moduleName: string, agent: string, reason: string): Omit<PipelineEvent, 'id'>;
|
|
34
|
+
/**
|
|
35
|
+
* Deserializes a raw pipeline_events row (snake_case TEXT columns) into a
|
|
36
|
+
* typed PipelineEvent domain object. Used by the engine when reading rows
|
|
37
|
+
* back from SQLite.
|
|
38
|
+
*/
|
|
39
|
+
export declare function rowToEvent(row: {
|
|
40
|
+
id: number;
|
|
41
|
+
project_id: string;
|
|
42
|
+
event_type: string;
|
|
43
|
+
from_phase: string | null;
|
|
44
|
+
to_phase: string | null;
|
|
45
|
+
agent: string | null;
|
|
46
|
+
payload: string;
|
|
47
|
+
created_at: number;
|
|
48
|
+
}): PipelineEvent;
|
|
49
|
+
/**
|
|
50
|
+
* Serializes a PipelineEvent domain object to the named parameter map
|
|
51
|
+
* expected by `PipelineDB.run()` for an INSERT into pipeline_events.
|
|
52
|
+
*/
|
|
53
|
+
export declare function eventToParams(event: Omit<PipelineEvent, 'id'>): Record<string, unknown>;
|
|
54
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,aAAa,EACd,MAAM,kBAAkB,CAAC;AAM1B;;;GAGG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,EACf,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAC3B,GACL,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAU3B;AAMD,oEAAoE;AACpE,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAO3B;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAI3B;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAED,kCAAkC;AAClC,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAK3B;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,aAAa,CAkBhB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Pipeline event factory and helpers for the event-sourced state machine.
|
|
2
|
+
//
|
|
3
|
+
// Pipeline events are the audit log. Every phase transition, agent action,
|
|
4
|
+
// claim lifecycle change, and project status change is recorded as an immutable
|
|
5
|
+
// event row in the pipeline_events SQLite table. The PipelineEngine reads these
|
|
6
|
+
// rows to reconstruct cycle counts and provides the full history to callers.
|
|
7
|
+
//
|
|
8
|
+
// PipelineEvent here is the deserialized domain object (camelCase fields), not
|
|
9
|
+
// the raw row. The storage layer handles the mapping between the two.
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Event factory
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/**
|
|
14
|
+
* Builds a PipelineEvent (without id — that is assigned by SQLite AUTOINCREMENT)
|
|
15
|
+
* with a generated timestamp and sensible defaults.
|
|
16
|
+
*/
|
|
17
|
+
export function createEvent(projectId, type, data = {}) {
|
|
18
|
+
return {
|
|
19
|
+
projectId,
|
|
20
|
+
eventType: type,
|
|
21
|
+
fromPhase: data.fromPhase ?? null,
|
|
22
|
+
toPhase: data.toPhase ?? null,
|
|
23
|
+
agent: data.agent ?? null,
|
|
24
|
+
payload: data.payload ?? {},
|
|
25
|
+
createdAt: Date.now(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Convenience constructors for common event patterns
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
/** Emitted when the engine transitions a project to a new phase. */
|
|
32
|
+
export function phaseTransitionEvent(projectId, fromPhase, toPhase, agent, extra) {
|
|
33
|
+
return createEvent(projectId, 'phase_transition', {
|
|
34
|
+
fromPhase,
|
|
35
|
+
toPhase,
|
|
36
|
+
agent: agent ?? null,
|
|
37
|
+
payload: extra ?? {},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/** Emitted when an agent begins work on a phase. */
|
|
41
|
+
export function agentStartedEvent(projectId, phase, agent, extra) {
|
|
42
|
+
return createEvent(projectId, 'agent_started', {
|
|
43
|
+
fromPhase: phase,
|
|
44
|
+
toPhase: phase,
|
|
45
|
+
agent,
|
|
46
|
+
payload: extra ?? {},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** Emitted when an agent successfully completes a phase. */
|
|
50
|
+
export function agentCompletedEvent(projectId, phase, agent, extra) {
|
|
51
|
+
return createEvent(projectId, 'agent_completed', {
|
|
52
|
+
fromPhase: phase,
|
|
53
|
+
toPhase: phase,
|
|
54
|
+
agent,
|
|
55
|
+
payload: extra ?? {},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Emitted when an agent fails a phase. */
|
|
59
|
+
export function agentFailedEvent(projectId, phase, agent, error, extra) {
|
|
60
|
+
return createEvent(projectId, 'agent_failed', {
|
|
61
|
+
fromPhase: phase,
|
|
62
|
+
toPhase: phase,
|
|
63
|
+
agent,
|
|
64
|
+
payload: { error, ...(extra ?? {}) },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Emitted when the project is first created. */
|
|
68
|
+
export function projectCreatedEvent(projectId, extra) {
|
|
69
|
+
return createEvent(projectId, 'project_created', {
|
|
70
|
+
payload: extra ?? {},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/** Emitted when the project is paused. */
|
|
74
|
+
export function projectPausedEvent(projectId, phase, extra) {
|
|
75
|
+
return createEvent(projectId, 'project_paused', {
|
|
76
|
+
fromPhase: phase,
|
|
77
|
+
payload: extra ?? {},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** Emitted when the project is resumed from pause. */
|
|
81
|
+
export function projectResumedEvent(projectId, phase, extra) {
|
|
82
|
+
return createEvent(projectId, 'project_resumed', {
|
|
83
|
+
fromPhase: phase,
|
|
84
|
+
payload: extra ?? {},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/** Emitted when the project reaches completed status. */
|
|
88
|
+
export function projectCompletedEvent(projectId, extra) {
|
|
89
|
+
return createEvent(projectId, 'project_completed', {
|
|
90
|
+
toPhase: 'complete',
|
|
91
|
+
payload: extra ?? {},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/** Emitted when a new work claim is created for a module. */
|
|
95
|
+
export function claimCreatedEvent(projectId, claimId, moduleName, agent) {
|
|
96
|
+
return createEvent(projectId, 'claim_created', {
|
|
97
|
+
agent,
|
|
98
|
+
payload: { claim_id: claimId, module_name: moduleName },
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/** Emitted when a claim is successfully completed. */
|
|
102
|
+
export function claimCompletedEvent(projectId, claimId, moduleName, agent, result) {
|
|
103
|
+
return createEvent(projectId, 'claim_completed', {
|
|
104
|
+
agent,
|
|
105
|
+
payload: { claim_id: claimId, module_name: moduleName, result: result ?? null },
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/** Emitted when a claim fails. */
|
|
109
|
+
export function claimFailedEvent(projectId, claimId, moduleName, agent, reason) {
|
|
110
|
+
return createEvent(projectId, 'claim_failed', {
|
|
111
|
+
agent,
|
|
112
|
+
payload: { claim_id: claimId, module_name: moduleName, error: reason },
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
// Row mapping helpers
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
/**
|
|
119
|
+
* Deserializes a raw pipeline_events row (snake_case TEXT columns) into a
|
|
120
|
+
* typed PipelineEvent domain object. Used by the engine when reading rows
|
|
121
|
+
* back from SQLite.
|
|
122
|
+
*/
|
|
123
|
+
export function rowToEvent(row) {
|
|
124
|
+
let payload;
|
|
125
|
+
try {
|
|
126
|
+
payload = JSON.parse(row.payload);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
payload = {};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
id: row.id,
|
|
133
|
+
projectId: row.project_id,
|
|
134
|
+
eventType: row.event_type,
|
|
135
|
+
fromPhase: row.from_phase ?? null,
|
|
136
|
+
toPhase: row.to_phase ?? null,
|
|
137
|
+
agent: row.agent,
|
|
138
|
+
payload,
|
|
139
|
+
createdAt: row.created_at,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Serializes a PipelineEvent domain object to the named parameter map
|
|
144
|
+
* expected by `PipelineDB.run()` for an INSERT into pipeline_events.
|
|
145
|
+
*/
|
|
146
|
+
export function eventToParams(event) {
|
|
147
|
+
return {
|
|
148
|
+
project_id: event.projectId,
|
|
149
|
+
event_type: event.eventType,
|
|
150
|
+
from_phase: event.fromPhase,
|
|
151
|
+
to_phase: event.toPhase,
|
|
152
|
+
agent: event.agent,
|
|
153
|
+
payload: JSON.stringify(event.payload),
|
|
154
|
+
created_at: event.createdAt,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/pipeline/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { PipelineDB } from '../storage/sqlite.js';
|
|
2
|
+
import type { Claim, ClaimStatus } from '../util/types.js';
|
|
3
|
+
export declare class ParallelDispatch {
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(db: PipelineDB);
|
|
6
|
+
/**
|
|
7
|
+
* Creates one claim per entry in `modules`. Each claim starts with status
|
|
8
|
+
* 'claimed' and is immediately usable by a specialist agent.
|
|
9
|
+
*
|
|
10
|
+
* A claim_created pipeline event is emitted for each created claim.
|
|
11
|
+
*
|
|
12
|
+
* Returns the full array of created Claim objects so callers can distribute
|
|
13
|
+
* them to agents.
|
|
14
|
+
*/
|
|
15
|
+
createClaims(projectId: string, modules: Array<{
|
|
16
|
+
name: string;
|
|
17
|
+
agent: string;
|
|
18
|
+
}>): Claim[];
|
|
19
|
+
/**
|
|
20
|
+
* Updates the status of a claim. Optionally sets the result text and branch
|
|
21
|
+
* name. This is a general-purpose setter; use completeClaim / failClaim for
|
|
22
|
+
* the semantic updates that also emit events.
|
|
23
|
+
*
|
|
24
|
+
* Throws when the claim does not exist.
|
|
25
|
+
*/
|
|
26
|
+
updateClaim(claimId: string, status: ClaimStatus, result?: string, branch?: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Marks a claim as 'complete' and emits a claim_completed event.
|
|
29
|
+
* Records the optional result text (e.g., git branch name, summary).
|
|
30
|
+
*
|
|
31
|
+
* Returns { remainingCount, allComplete } so the caller can check whether
|
|
32
|
+
* to auto-advance the project to inspection.
|
|
33
|
+
*
|
|
34
|
+
* Throws when the claim does not exist.
|
|
35
|
+
*/
|
|
36
|
+
completeClaim(claimId: string, result?: string): {
|
|
37
|
+
remainingCount: number;
|
|
38
|
+
allComplete: boolean;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Marks a claim as 'failed' and emits a claim_failed event.
|
|
42
|
+
*
|
|
43
|
+
* Throws when the claim does not exist.
|
|
44
|
+
*/
|
|
45
|
+
failClaim(claimId: string, reason: string): void;
|
|
46
|
+
/**
|
|
47
|
+
* Returns true when every claim for the project is in a terminal state
|
|
48
|
+
* ('complete' or 'failed') — i.e., no claim remains in 'claimed' or
|
|
49
|
+
* 'stealable' status.
|
|
50
|
+
*
|
|
51
|
+
* Returns true vacuously when there are no claims at all (no modules were
|
|
52
|
+
* dispatched). Callers should check that at least one claim exists before
|
|
53
|
+
* using this to gate phase advance.
|
|
54
|
+
*/
|
|
55
|
+
allClaimsComplete(projectId: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Returns claims for a project, optionally filtered by status.
|
|
58
|
+
* Ordered by claimed_at ASC.
|
|
59
|
+
*/
|
|
60
|
+
getClaims(projectId: string, status?: ClaimStatus): Claim[];
|
|
61
|
+
/**
|
|
62
|
+
* Returns a single claim by id, or null if it does not exist.
|
|
63
|
+
*/
|
|
64
|
+
getClaim(claimId: string): Claim | null;
|
|
65
|
+
/**
|
|
66
|
+
* Resets failed claims when the inspection phase sends the project back to
|
|
67
|
+
* implementation. Re-creates claims for the specified modules (or all failed
|
|
68
|
+
* claims when `modules` is omitted) so specialists can retry.
|
|
69
|
+
*
|
|
70
|
+
* The failed rows are left in place for the audit trail. New 'claimed' rows
|
|
71
|
+
* are inserted with new IDs, and claim_created events are emitted for each.
|
|
72
|
+
*
|
|
73
|
+
* Returns the newly created Claim objects.
|
|
74
|
+
*/
|
|
75
|
+
resetFailedClaims(projectId: string, modules?: string[]): Claim[];
|
|
76
|
+
/**
|
|
77
|
+
* Retrieves a raw ClaimRow by id and throws when not found.
|
|
78
|
+
* We return the raw row so callers can access project_id, module_name, and
|
|
79
|
+
* agent for event emission without an extra round-trip.
|
|
80
|
+
*/
|
|
81
|
+
private _requireClaim;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=parallel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallel.d.ts","sourceRoot":"","sources":["../../src/pipeline/parallel.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,KAAK,EAAY,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgDrE,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,UAAU;IAM3C;;;;;;;;OAQG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAC9C,KAAK,EAAE;IAsCV;;;;;;OAMG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IA6BP;;;;;;;;OAQG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;IAmCjG;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA6BhD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAa7C;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,EAAE;IAa3D;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IASvC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;IA+EjE;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAUtB"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
// ParallelDispatch — manages work claims for parallel implementation phases.
|
|
2
|
+
//
|
|
3
|
+
// During the implementation phase, multiple specialist agents work concurrently
|
|
4
|
+
// on separate modules. ParallelDispatch creates and tracks per-module claims,
|
|
5
|
+
// emits lifecycle events, and provides helpers to check overall completion so
|
|
6
|
+
// the engine can auto-advance to inspection when all work is done.
|
|
7
|
+
//
|
|
8
|
+
// Claims are persisted in the SQLite `claims` table. All writes are
|
|
9
|
+
// synchronous (better-sqlite3). Claim lifecycle events are also written to
|
|
10
|
+
// `pipeline_events` for the audit log.
|
|
11
|
+
import { randomUUID } from 'node:crypto';
|
|
12
|
+
import { claimCreatedEvent, claimCompletedEvent, claimFailedEvent, eventToParams, } from './events.js';
|
|
13
|
+
import { logger } from '../util/logger.js';
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Row deserializer
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
function rowToClaim(row) {
|
|
18
|
+
return {
|
|
19
|
+
id: row.id,
|
|
20
|
+
projectId: row.project_id,
|
|
21
|
+
moduleName: row.module_name,
|
|
22
|
+
agent: row.agent,
|
|
23
|
+
branch: row.branch,
|
|
24
|
+
status: row.status,
|
|
25
|
+
claimedAt: row.claimed_at,
|
|
26
|
+
completedAt: row.completed_at,
|
|
27
|
+
result: row.result,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// SQL helper: insert a pipeline event row using positional params.
|
|
32
|
+
// eventToParams returns keys in the order the INSERT expects.
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
function insertEvent(db, event) {
|
|
35
|
+
db.run(`INSERT INTO pipeline_events
|
|
36
|
+
(project_id, event_type, from_phase, to_phase, agent, payload, created_at)
|
|
37
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`, Object.values(eventToParams(event)));
|
|
38
|
+
}
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// ParallelDispatch
|
|
41
|
+
// ---------------------------------------------------------------------------
|
|
42
|
+
export class ParallelDispatch {
|
|
43
|
+
db;
|
|
44
|
+
constructor(db) {
|
|
45
|
+
this.db = db;
|
|
46
|
+
}
|
|
47
|
+
// -------------------------------------------------------------------------
|
|
48
|
+
// Claim creation
|
|
49
|
+
// -------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Creates one claim per entry in `modules`. Each claim starts with status
|
|
52
|
+
* 'claimed' and is immediately usable by a specialist agent.
|
|
53
|
+
*
|
|
54
|
+
* A claim_created pipeline event is emitted for each created claim.
|
|
55
|
+
*
|
|
56
|
+
* Returns the full array of created Claim objects so callers can distribute
|
|
57
|
+
* them to agents.
|
|
58
|
+
*/
|
|
59
|
+
createClaims(projectId, modules) {
|
|
60
|
+
const now = Date.now();
|
|
61
|
+
const created = [];
|
|
62
|
+
for (const mod of modules) {
|
|
63
|
+
const id = randomUUID();
|
|
64
|
+
this.db.run(`INSERT INTO claims (id, project_id, module_name, agent, status, claimed_at)
|
|
65
|
+
VALUES (?, ?, ?, ?, 'claimed', ?)`, [id, projectId, mod.name, mod.agent, now]);
|
|
66
|
+
const event = claimCreatedEvent(projectId, id, mod.name, mod.agent);
|
|
67
|
+
insertEvent(this.db, event);
|
|
68
|
+
created.push({
|
|
69
|
+
id,
|
|
70
|
+
projectId,
|
|
71
|
+
moduleName: mod.name,
|
|
72
|
+
agent: mod.agent,
|
|
73
|
+
branch: null,
|
|
74
|
+
status: 'claimed',
|
|
75
|
+
claimedAt: now,
|
|
76
|
+
completedAt: null,
|
|
77
|
+
result: null,
|
|
78
|
+
});
|
|
79
|
+
logger.info('ParallelDispatch: claim created', { projectId, claimId: id, module: mod.name, agent: mod.agent });
|
|
80
|
+
}
|
|
81
|
+
return created;
|
|
82
|
+
}
|
|
83
|
+
// -------------------------------------------------------------------------
|
|
84
|
+
// Claim status updates
|
|
85
|
+
// -------------------------------------------------------------------------
|
|
86
|
+
/**
|
|
87
|
+
* Updates the status of a claim. Optionally sets the result text and branch
|
|
88
|
+
* name. This is a general-purpose setter; use completeClaim / failClaim for
|
|
89
|
+
* the semantic updates that also emit events.
|
|
90
|
+
*
|
|
91
|
+
* Throws when the claim does not exist.
|
|
92
|
+
*/
|
|
93
|
+
updateClaim(claimId, status, result, branch) {
|
|
94
|
+
const row = this._requireClaim(claimId);
|
|
95
|
+
const now = Date.now();
|
|
96
|
+
this.db.run(`UPDATE claims
|
|
97
|
+
SET status = ?,
|
|
98
|
+
branch = COALESCE(?, branch),
|
|
99
|
+
result = COALESCE(?, result),
|
|
100
|
+
completed_at = CASE WHEN ? IN ('complete', 'failed') THEN ? ELSE completed_at END
|
|
101
|
+
WHERE id = ?`, [
|
|
102
|
+
status,
|
|
103
|
+
branch ?? null,
|
|
104
|
+
result ?? null,
|
|
105
|
+
status,
|
|
106
|
+
now,
|
|
107
|
+
claimId,
|
|
108
|
+
]);
|
|
109
|
+
logger.info('ParallelDispatch: claim updated', {
|
|
110
|
+
claimId,
|
|
111
|
+
projectId: row.project_id,
|
|
112
|
+
module: row.module_name,
|
|
113
|
+
status,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Marks a claim as 'complete' and emits a claim_completed event.
|
|
118
|
+
* Records the optional result text (e.g., git branch name, summary).
|
|
119
|
+
*
|
|
120
|
+
* Returns { remainingCount, allComplete } so the caller can check whether
|
|
121
|
+
* to auto-advance the project to inspection.
|
|
122
|
+
*
|
|
123
|
+
* Throws when the claim does not exist.
|
|
124
|
+
*/
|
|
125
|
+
completeClaim(claimId, result) {
|
|
126
|
+
const row = this._requireClaim(claimId);
|
|
127
|
+
const now = Date.now();
|
|
128
|
+
this.db.run(`UPDATE claims SET status = 'complete', completed_at = ?, result = ? WHERE id = ?`, [now, result ?? null, claimId]);
|
|
129
|
+
const event = claimCompletedEvent(row.project_id, claimId, row.module_name, row.agent, result);
|
|
130
|
+
insertEvent(this.db, event);
|
|
131
|
+
logger.info('ParallelDispatch: claim completed', {
|
|
132
|
+
claimId,
|
|
133
|
+
projectId: row.project_id,
|
|
134
|
+
module: row.module_name,
|
|
135
|
+
});
|
|
136
|
+
const remaining = this.db.all(`SELECT id FROM claims WHERE project_id = ? AND status NOT IN ('complete', 'failed')`, [row.project_id]);
|
|
137
|
+
return {
|
|
138
|
+
remainingCount: remaining.length,
|
|
139
|
+
allComplete: remaining.length === 0,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Marks a claim as 'failed' and emits a claim_failed event.
|
|
144
|
+
*
|
|
145
|
+
* Throws when the claim does not exist.
|
|
146
|
+
*/
|
|
147
|
+
failClaim(claimId, reason) {
|
|
148
|
+
const row = this._requireClaim(claimId);
|
|
149
|
+
this.db.run(`UPDATE claims SET status = 'failed', completed_at = ? WHERE id = ?`, [Date.now(), claimId]);
|
|
150
|
+
const event = claimFailedEvent(row.project_id, claimId, row.module_name, row.agent, reason);
|
|
151
|
+
insertEvent(this.db, event);
|
|
152
|
+
logger.warn('ParallelDispatch: claim failed', {
|
|
153
|
+
claimId,
|
|
154
|
+
projectId: row.project_id,
|
|
155
|
+
module: row.module_name,
|
|
156
|
+
reason,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// -------------------------------------------------------------------------
|
|
160
|
+
// Completion checks
|
|
161
|
+
// -------------------------------------------------------------------------
|
|
162
|
+
/**
|
|
163
|
+
* Returns true when every claim for the project is in a terminal state
|
|
164
|
+
* ('complete' or 'failed') — i.e., no claim remains in 'claimed' or
|
|
165
|
+
* 'stealable' status.
|
|
166
|
+
*
|
|
167
|
+
* Returns true vacuously when there are no claims at all (no modules were
|
|
168
|
+
* dispatched). Callers should check that at least one claim exists before
|
|
169
|
+
* using this to gate phase advance.
|
|
170
|
+
*/
|
|
171
|
+
allClaimsComplete(projectId) {
|
|
172
|
+
const pending = this.db.get(`SELECT COUNT(*) as count FROM claims
|
|
173
|
+
WHERE project_id = ? AND status NOT IN ('complete', 'failed')`, [projectId]);
|
|
174
|
+
return (pending?.count ?? 0) === 0;
|
|
175
|
+
}
|
|
176
|
+
// -------------------------------------------------------------------------
|
|
177
|
+
// Query methods
|
|
178
|
+
// -------------------------------------------------------------------------
|
|
179
|
+
/**
|
|
180
|
+
* Returns claims for a project, optionally filtered by status.
|
|
181
|
+
* Ordered by claimed_at ASC.
|
|
182
|
+
*/
|
|
183
|
+
getClaims(projectId, status) {
|
|
184
|
+
if (status !== undefined) {
|
|
185
|
+
return this.db.all(`SELECT * FROM claims WHERE project_id = ? AND status = ? ORDER BY claimed_at ASC`, [projectId, status]).map(rowToClaim);
|
|
186
|
+
}
|
|
187
|
+
return this.db.all(`SELECT * FROM claims WHERE project_id = ? ORDER BY claimed_at ASC`, [projectId]).map(rowToClaim);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Returns a single claim by id, or null if it does not exist.
|
|
191
|
+
*/
|
|
192
|
+
getClaim(claimId) {
|
|
193
|
+
const row = this.db.get(`SELECT * FROM claims WHERE id = ?`, [claimId]);
|
|
194
|
+
return row ? rowToClaim(row) : null;
|
|
195
|
+
}
|
|
196
|
+
// -------------------------------------------------------------------------
|
|
197
|
+
// Cycle reset
|
|
198
|
+
// -------------------------------------------------------------------------
|
|
199
|
+
/**
|
|
200
|
+
* Resets failed claims when the inspection phase sends the project back to
|
|
201
|
+
* implementation. Re-creates claims for the specified modules (or all failed
|
|
202
|
+
* claims when `modules` is omitted) so specialists can retry.
|
|
203
|
+
*
|
|
204
|
+
* The failed rows are left in place for the audit trail. New 'claimed' rows
|
|
205
|
+
* are inserted with new IDs, and claim_created events are emitted for each.
|
|
206
|
+
*
|
|
207
|
+
* Returns the newly created Claim objects.
|
|
208
|
+
*/
|
|
209
|
+
resetFailedClaims(projectId, modules) {
|
|
210
|
+
let failedRows;
|
|
211
|
+
if (modules !== undefined && modules.length > 0) {
|
|
212
|
+
// Use multiple individual queries rather than a parameterised IN clause
|
|
213
|
+
// to avoid the need for dynamic SQL placeholders.
|
|
214
|
+
failedRows = [];
|
|
215
|
+
for (const moduleName of modules) {
|
|
216
|
+
const rows = this.db.all(`SELECT * FROM claims
|
|
217
|
+
WHERE project_id = ? AND module_name = ? AND status = 'failed'
|
|
218
|
+
ORDER BY claimed_at DESC`, [projectId, moduleName]);
|
|
219
|
+
// Take the most recent failed claim for each module.
|
|
220
|
+
if (rows.length > 0 && rows[0] !== undefined) {
|
|
221
|
+
failedRows.push(rows[0]);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// All failed claims for the project.
|
|
227
|
+
failedRows = this.db.all(`SELECT * FROM claims WHERE project_id = ? AND status = 'failed' ORDER BY claimed_at ASC`, [projectId]);
|
|
228
|
+
}
|
|
229
|
+
if (failedRows.length === 0) {
|
|
230
|
+
logger.info('ParallelDispatch: resetFailedClaims — no failed claims to reset', { projectId });
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
const now = Date.now();
|
|
234
|
+
const recreated = [];
|
|
235
|
+
for (const failed of failedRows) {
|
|
236
|
+
const newId = randomUUID();
|
|
237
|
+
this.db.run(`INSERT INTO claims (id, project_id, module_name, agent, status, claimed_at)
|
|
238
|
+
VALUES (?, ?, ?, ?, 'claimed', ?)`, [newId, failed.project_id, failed.module_name, failed.agent, now]);
|
|
239
|
+
const event = claimCreatedEvent(failed.project_id, newId, failed.module_name, failed.agent);
|
|
240
|
+
insertEvent(this.db, event);
|
|
241
|
+
recreated.push({
|
|
242
|
+
id: newId,
|
|
243
|
+
projectId: failed.project_id,
|
|
244
|
+
moduleName: failed.module_name,
|
|
245
|
+
agent: failed.agent,
|
|
246
|
+
branch: null,
|
|
247
|
+
status: 'claimed',
|
|
248
|
+
claimedAt: now,
|
|
249
|
+
completedAt: null,
|
|
250
|
+
result: null,
|
|
251
|
+
});
|
|
252
|
+
logger.info('ParallelDispatch: claim reset after inspection failure', {
|
|
253
|
+
projectId,
|
|
254
|
+
oldClaimId: failed.id,
|
|
255
|
+
newClaimId: newId,
|
|
256
|
+
module: failed.module_name,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
return recreated;
|
|
260
|
+
}
|
|
261
|
+
// -------------------------------------------------------------------------
|
|
262
|
+
// Private helpers
|
|
263
|
+
// -------------------------------------------------------------------------
|
|
264
|
+
/**
|
|
265
|
+
* Retrieves a raw ClaimRow by id and throws when not found.
|
|
266
|
+
* We return the raw row so callers can access project_id, module_name, and
|
|
267
|
+
* agent for event emission without an extra round-trip.
|
|
268
|
+
*/
|
|
269
|
+
_requireClaim(claimId) {
|
|
270
|
+
const row = this.db.get(`SELECT * FROM claims WHERE id = ?`, [claimId]);
|
|
271
|
+
if (!row) {
|
|
272
|
+
throw new Error(`ParallelDispatch: claim '${claimId}' does not exist`);
|
|
273
|
+
}
|
|
274
|
+
return row;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=parallel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/pipeline/parallel.ts"],"names":[],"mappings":"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"}
|