claude-flow-novice 2.5.2 → 2.8.1
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/adaptive-context/cfn-v3-reflection.json +21 -0
- package/.claude/agents/AGENT_LIFECYCLE.md +495 -0
- package/.claude/agents/CLAUDE.md +1002 -1233
- package/.claude/agents/accessibility-advocate.md +457 -0
- package/.claude/agents/agent-principles/README.md +226 -226
- package/.claude/agents/agent-principles/agent-type-guidelines.md +10 -0
- package/.claude/agents/agent-principles/format-selection.md +10 -0
- package/.claude/agents/agent-principles/phase4-template-optimization.md +502 -494
- package/.claude/agents/agent-principles/prompt-engineering.md +8 -0
- package/.claude/agents/agent-principles/quality-metrics.md +8 -0
- package/.claude/agents/analysis/code-analyzer.md +7 -17
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +2 -104
- package/.claude/agents/analysis/perf-analyzer.md +2 -196
- package/.claude/agents/context/context-curator.md +78 -84
- package/.claude/agents/context/context-reflector.md +27 -81
- package/.claude/agents/coordinators/README.md +42 -0
- package/.claude/agents/coordinators/cfn-v3-coordinator.md +440 -0
- package/.claude/agents/{product-owner-team → coordinators}/cto-agent.md +154 -187
- package/.claude/agents/coordinators/multi-sprint-coordinator.md +50 -0
- package/.claude/agents/{product-owner-team → coordinators}/product-owner-agent.md +6 -39
- package/.claude/agents/{cfn-loop → coordinators}/product-owner.md +72 -17
- package/.claude/agents/core-agents/reviewer.md +114 -135
- package/.claude/agents/custom/agent-builder.md +637 -0
- package/.claude/agents/developers/README.md +69 -0
- package/.claude/agents/developers/backend-dev.md +77 -0
- package/.claude/agents/{core-agents → developers}/coder.md +131 -26
- package/.claude/agents/developers/react-frontend-engineer.md +121 -0
- package/.claude/agents/{frontend → developers}/state-architect.md +1 -0
- package/.claude/agents/{frontend → developers}/ui-designer.md +1 -0
- package/.claude/agents/development/backend/dev-backend-api.md +0 -29
- package/.claude/agents/development/npm-package-specialist.md +355 -347
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +8 -0
- package/.claude/agents/documentation/api-docs.md +8 -0
- package/.claude/agents/github/github-commit-agent.md +125 -117
- package/.claude/agents/goal/goal-planner.md +8 -0
- package/.claude/agents/infrastructure/README.md +100 -0
- package/.claude/agents/{specialized → infrastructure}/devops-engineer.md +131 -150
- package/.claude/agents/planners/README.md +94 -0
- package/.claude/agents/{core-agents → planners}/analyst.md +1 -22
- package/.claude/agents/{planning-team → planners}/api-designer-persona.md +8 -0
- package/.claude/agents/{core-agents → planners}/architect.md +7 -20
- package/.claude/agents/{core-agents → planners}/planner.md +0 -21
- package/.claude/agents/{planning-team → planners}/security-architect-persona.md +8 -28
- package/.claude/agents/{planning-team → planners}/system-architect-persona.md +6 -38
- package/.claude/agents/{architecture → planners}/system-architect.md +12 -17
- package/.claude/agents/product-owner-team/accessibility-advocate-persona.md +132 -161
- package/.claude/agents/product-owner-team/power-user-persona.md +149 -182
- package/.claude/agents/retrospective-analyst.md +84 -0
- package/.claude/agents/reviewers/README.md +58 -0
- package/.claude/agents/{analysis → reviewers}/code-quality-validator.md +8 -17
- package/.claude/agents/reviewers/reviewer.md +181 -0
- package/.claude/agents/sparc/architecture.md +6 -25
- package/.claude/agents/sparc/pseudocode.md +6 -0
- package/.claude/agents/sparc/refinement.md +6 -0
- package/.claude/agents/sparc/specification.md +1 -0
- package/.claude/agents/specialists/README.md +60 -0
- package/.claude/agents/{core-agents → specialists}/base-template-generator.md +8 -21
- package/.claude/agents/{specialized → specialists}/cli-agent-optimizer.md +1 -1
- package/.claude/agents/{specialized → specialists}/code-booster.md +1 -0
- package/.claude/agents/{consensus → specialists}/consensus-builder.md +1 -17
- package/.claude/agents/{specialized/mobile → specialists}/mobile-dev.md +0 -20
- package/.claude/agents/{core-agents → specialists}/performance-benchmarker.md +134 -148
- package/.claude/agents/{specialized → specialists}/rust-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-enterprise-developer.md +1 -20
- package/.claude/agents/{specialized → specialists}/rust-mvp-developer.md +1 -20
- package/.claude/agents/{core-agents → specialists}/security-manager.md +68 -88
- package/.claude/agents/{security → specialists}/security-specialist-existing.md +6 -57
- package/.claude/agents/{security → specialists}/security-specialist.md +6 -30
- package/.claude/agents/{specialized/mobile → specialists}/spec-mobile-react-native.md +2 -21
- package/.claude/agents/testers/README.md +94 -0
- package/.claude/agents/{testing → testers}/e2e/playwright-agent.md +1 -20
- package/.claude/agents/{testing → testers}/interaction-tester.md +1 -20
- package/.claude/agents/{testing → testers}/playwright-tester.md +1 -1
- package/.claude/agents/testers/tester.md +139 -0
- package/.claude/agents/testers/unit/tdd-london-swarm.md +49 -0
- package/.claude/agents/testers/validation/production-validator.md +33 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md +157 -0
- package/.claude/agents-ignore/cfn-loop-coordinator.md.backup +156 -0
- package/.claude/agents-ignore/coordinator.md.backup +182 -0
- package/.claude/agents-ignore/cost-savings-cfn-loop-coordinator.md +760 -0
- package/.claude/agents-ignore/cost-savings-coordinator.md +173 -0
- package/.claude/artifacts/ace-reflections/REFLECT-001-summary.json +39 -0
- package/.claude/artifacts/ace-reflections/sprint-7_$(date -u +/"%Y%m%d_%H%M%S/").json" +47 -0
- package/.claude/artifacts/reflection-merge-logs/cli-agent-spawning-v2.5.2-merge-report.md +61 -0
- package/.claude/commands/CFN_COORDINATOR_PARAMETERS.md +10 -10
- package/.claude/commands/cfn-loop-epic.md +43 -19
- package/.claude/commands/cfn-loop-single.md +3 -3
- package/.claude/commands/cfn-loop-sprints.md +1 -1
- package/.claude/commands/cfn-loop.md +45 -32
- package/.claude/commands/cfn-mode.md +20 -0
- package/.claude/commands/custom-routing-activate.md +37 -123
- package/.claude/commands/custom-routing-deactivate.md +27 -124
- package/.claude/commands/switch-api.md +41 -16
- package/.claude/commands/write-plan.md +104 -0
- package/.claude/data/cfn-loop.db +0 -0
- package/.claude/data/cfn_loop_logs.db +0 -0
- package/.claude/hooks/BACKUP_USAGE.md +243 -0
- package/.claude/hooks/post-edit-cfn-retrospective.sh +79 -0
- package/.claude/hooks/post-edit.sh +21 -0
- package/.claude/hooks/pre-edit-backup.sh +71 -0
- package/.claude/hooks/restore-from-backup.sh +37 -0
- package/.claude/prompts/cfn-loop-context.md +115 -0
- package/.claude/prompts/loop-specific/loop2.md +50 -0
- package/.claude/prompts/loop-specific/loop3.md +43 -0
- package/.claude/prompts/loop-specific/loop4.md +54 -0
- package/.claude/root-claude-distribute/CLAUDE.md +76 -2
- package/.claude/skills/ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/ace-system/store-reflection.sh +33 -136
- package/.claude/skills/agent-discovery/SKILL.md +40 -0
- package/.claude/skills/agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/agent-discovery/discover-agents.py +175 -0
- package/.claude/skills/agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/agent-discovery/temp_script.py +0 -0
- package/.claude/skills/agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/agent-selector/SKILL.md +90 -0
- package/.claude/skills/agent-selector/select-agents.sh +96 -0
- package/.claude/skills/agent-spawning/agent-selection-guide.md +1 -1
- package/.claude/skills/agent-swap/SKILL.md +36 -0
- package/.claude/skills/agent-swap/recommend-swap.sh +60 -0
- package/.claude/skills/api-validation/test-endpoints.sh +54 -0
- package/.claude/skills/automatic-memory-persistence/SKILL.md +73 -0
- package/.claude/skills/automatic-memory-persistence/persist-agent-output.sh +49 -0
- package/.claude/skills/automatic-memory-persistence/query-agent-history.sh +35 -0
- package/.claude/skills/automatic-memory-persistence/test-memory-persistence.sh +235 -0
- package/.claude/skills/cfn-loop-orchestration/README.md +41 -0
- package/.claude/skills/cfn-loop-orchestration/SKILL.md +299 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/auto-tune-timeouts.sh +228 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/consensus.sh +84 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/deliverable-verifier.sh +71 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/gate-check.sh +90 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/iteration-manager.sh +87 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/timeout-calculator.sh +51 -0
- package/.claude/skills/cfn-loop-orchestration/inject-loop-context.sh +41 -0
- package/.claude/skills/cfn-loop-orchestration/monitor-execution.sh +156 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh +840 -0
- package/.claude/skills/cfn-loop-orchestration/security_utils.sh +99 -0
- package/.claude/skills/cfn-loop-orchestration/test-cfn-orchestration.sh +281 -0
- package/.claude/skills/cfn-loop-orchestration/test-edge-cases.sh +188 -0
- package/.claude/skills/cfn-loop-validation/SKILL.md +307 -217
- package/.claude/skills/complexity-estimator/SKILL.md +96 -0
- package/.claude/skills/complexity-estimator/estimate-complexity.sh +144 -0
- package/.claude/skills/context-pruner/SKILL.md +75 -0
- package/.claude/skills/context-pruner/prune-context.sh +73 -0
- package/.claude/skills/defense-in-depth/SKILL.md +133 -0
- package/.claude/skills/dependency-extractor/SKILL.md +35 -0
- package/.claude/skills/dependency-extractor/extract-dependencies.sh +66 -0
- package/.claude/skills/epic-decomposer/SKILL.md +44 -0
- package/.claude/skills/epic-decomposer/decompose-epic.sh +104 -0
- package/.claude/skills/improvement-recommender/SKILL.md +33 -0
- package/.claude/skills/improvement-recommender/recommend-improvements.sh +92 -0
- package/.claude/skills/intervention-detector/SKILL.md +39 -0
- package/.claude/skills/intervention-detector/detect-intervention.sh +111 -0
- package/.claude/skills/intervention-orchestrator/SKILL.md +43 -0
- package/.claude/skills/intervention-orchestrator/execute-intervention.sh +59 -0
- package/.claude/skills/loop2-output-processing/SKILL.md +163 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh +77 -0
- package/.claude/skills/loop2-output-processing/execute-and-extract.sh.backup +36 -0
- package/.claude/skills/loop2-output-processing/parse-feedback.sh +147 -0
- package/.claude/skills/loop2-output-processing/process-validator-output.sh +275 -0
- package/.claude/skills/loop2-output-processing/test-bug27-fix.sh +200 -0
- package/.claude/skills/loop2-output-processing/test-loop2-processing.sh +113 -0
- package/.claude/skills/loop3-output-processing/AGENT_COMPLETION_PROTOCOL.md +206 -0
- package/.claude/skills/loop3-output-processing/SKILL.md +421 -0
- package/.claude/skills/loop3-output-processing/calculate-confidence.sh +28 -0
- package/.claude/skills/loop3-output-processing/execute-and-extract.sh +85 -0
- package/.claude/skills/loop3-output-processing/parse-confidence.sh +31 -0
- package/.claude/skills/loop3-output-processing/test-agent-timeout.sh +327 -0
- package/.claude/skills/loop3-output-processing/test-loop3-processing.sh +155 -0
- package/.claude/skills/loop3-output-processing/verify-deliverables.sh +42 -0
- package/.claude/skills/pattern-extraction/SKILL.md +30 -0
- package/.claude/skills/pattern-extraction/extract-patterns.sh +80 -0
- package/.claude/skills/playbook/SKILL.md +113 -0
- package/.claude/skills/playbook/init-playbook.sh +54 -0
- package/.claude/skills/playbook/playbook.db +0 -0
- package/.claude/skills/playbook/query-playbook.sh +79 -0
- package/.claude/skills/playbook/update-playbook.sh +69 -0
- package/.claude/skills/playbook-auto-update/SKILL.md +29 -0
- package/.claude/skills/playbook-auto-update/auto-update-playbook.sh +86 -0
- package/.claude/skills/product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/redis-coordination/README.md +30 -29
- package/.claude/skills/redis-coordination/SKILL.md +685 -83
- package/.claude/skills/redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/redis-coordination/{test-orchestrator.sh → demos/test-orchestrator.sh} +25 -0
- package/.claude/skills/redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/redis-coordination/get-agent-timeout.sh +176 -176
- package/.claude/skills/redis-coordination/init-swarm.sh +6 -1
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh +106 -183
- package/.claude/skills/redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/redis-coordination/log-event.sh +109 -0
- package/.claude/skills/redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh +31 -933
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/redis-coordination/send-heartbeat.sh +164 -72
- package/.claude/skills/redis-coordination/signal.sh +38 -0
- package/.claude/skills/redis-coordination/store-context.sh +86 -0
- package/.claude/skills/redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/redis-coordination/tests/dlq-functionality-test.sh +101 -101
- package/.claude/skills/redis-coordination/tests/edge-cases-test.sh +98 -98
- package/.claude/skills/redis-coordination/tests/integration-test.sh +169 -169
- package/.claude/skills/redis-coordination/tests/retry-mechanism-test.sh +81 -81
- package/.claude/skills/redis-coordination/tests/run-test-suite.sh +91 -91
- package/.claude/skills/redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/redis-coordination/tests/test-utils.sh +53 -121
- package/.claude/skills/redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/retrospective-report/SKILL.md +31 -0
- package/.claude/skills/retrospective-report/generate-report.sh +101 -0
- package/.claude/skills/run-all-skill-tests.sh +124 -0
- package/.claude/skills/scope-simplifier/SKILL.md +37 -0
- package/.claude/skills/scope-simplifier/simplify-scope.sh +68 -0
- package/.claude/skills/simplified-agent-lifecycle/COST_ANALYSIS.md +49 -0
- package/.claude/skills/simplified-agent-lifecycle/DESIGN.md +98 -0
- package/.claude/skills/simplified-agent-lifecycle/MIGRATION_PLAN.md +74 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/specialist-injection/SKILL.md +41 -0
- package/.claude/skills/specialist-injection/recommend-specialist.sh +57 -0
- package/.claude/skills/sprint-execution/SKILL.md +27 -0
- package/.claude/skills/sprint-execution/execute-sprint-task.sh +59 -0
- package/.claude/skills/sprint-execution/execute-sprint.sh +65 -0
- package/.claude/skills/sprint-planner/SKILL.md +37 -0
- package/.claude/skills/sprint-planner/plan-sprint.sh +85 -0
- package/.claude/skills/standardized-error-handling/SKILL.md +56 -0
- package/.claude/skills/standardized-error-handling/capture-agent-error.sh +87 -0
- package/.claude/skills/standardized-error-handling/test-error-handling.sh +166 -0
- package/.claude/skills/task-classifier/SKILL.md +94 -0
- package/.claude/skills/task-classifier/classify-task.sh +115 -0
- package/.claude/skills/validation-templates/SKILL.md +47 -0
- package/.claude/skills/validation-templates/content.json +38 -0
- package/.claude/skills/validation-templates/data.json +38 -0
- package/.claude/skills/validation-templates/design.json +38 -0
- package/.claude/skills/validation-templates/infrastructure.json +38 -0
- package/.claude/skills/validation-templates/research.json +38 -0
- package/.claude/skills/validation-templates/software.json +38 -0
- package/.claude/skills/webapp-testing/README.md +142 -0
- package/.claude/skills/webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/webapp-testing/SKILL.md +877 -0
- package/.claude/skills/webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/webapp-testing/test-webapp-testing.sh +233 -0
- package/.claude/spawn-pattern-examples.md +3 -3
- package/CLAUDE.md +364 -16
- package/README.md +598 -251
- package/dist/agents/agent-loader.js +146 -165
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-command.js +153 -0
- package/dist/cli/agent-command.js.map +1 -0
- package/dist/cli/agent-definition-parser.js +183 -0
- package/dist/cli/agent-definition-parser.js.map +1 -0
- package/dist/cli/agent-executor.js +310 -0
- package/dist/cli/agent-executor.js.map +1 -0
- package/dist/cli/agent-prompt-builder.js +268 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -0
- package/dist/cli/agent-spawn.js +56 -2
- package/dist/cli/agent-spawn.js.map +1 -1
- package/dist/cli/anthropic-client.js +421 -0
- package/dist/cli/anthropic-client.js.map +1 -0
- package/dist/cli/cfn-context.js +150 -0
- package/dist/cli/cfn-context.js.map +1 -1
- package/dist/cli/cfn-fork.js +159 -0
- package/dist/cli/cfn-fork.js.map +1 -0
- package/dist/cli/cli-agent-context.js +358 -0
- package/dist/cli/cli-agent-context.js.map +1 -0
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/conversation-fork.js +201 -0
- package/dist/cli/conversation-fork.js.map +1 -0
- package/dist/cli/index.js +119 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/iteration-history.js +188 -0
- package/dist/cli/iteration-history.js.map +1 -0
- package/dist/cli/tool-definitions.js +263 -0
- package/dist/cli/tool-definitions.js.map +1 -0
- package/dist/cli/tool-executor.js +247 -0
- package/dist/cli/tool-executor.js.map +1 -0
- package/dist/hello.js +8 -0
- package/dist/hello.js.map +1 -0
- package/package.json +16 -6
- package/scripts/README.md +68 -0
- package/scripts/cfn-intervention-example.sh +21 -0
- package/scripts/migrate-test-infrastructure.sh +40 -0
- package/scripts/switch-api.sh +233 -0
- package/scripts/validate-test-migration.sh +49 -0
- package/scripts/verify-no-secrets.sh +55 -0
- package/.claude/agents/architecture/system-architect.md.backup +0 -603
- package/.claude/agents/code-booster.md +0 -131
- package/.claude/agents/consensus/performance-benchmarker.md +0 -101
- package/.claude/agents/consensus/security-manager.md +0 -107
- package/.claude/agents/context-curator.md +0 -167
- package/.claude/agents/context-reflector.md +0 -65
- package/.claude/agents/core-agents/cfn-loop-coordinator.md +0 -134
- package/.claude/agents/core-agents/code-quality-validator.md +0 -149
- package/.claude/agents/core-agents/context-curator.md +0 -452
- package/.claude/agents/core-agents/context-reflector.md +0 -273
- package/.claude/agents/core-agents/cost-savings-cfn-loop-coordinator.md +0 -190
- package/.claude/agents/core-agents/tester.md +0 -170
- package/.claude/agents/development/backend-dev.md +0 -165
- package/.claude/agents/devops/devops-engineer.md +0 -148
- package/.claude/agents/frontend/interaction-tester.md +0 -139
- package/.claude/agents/frontend/react-frontend-engineer.md +0 -9
- package/.claude/agents/personas/accessibility-advocate-persona.md +0 -107
- package/.claude/agents/testing/production-validator.md +0 -179
- package/.claude/agents/testing/tdd-london-swarm.md +0 -209
- package/.claude/agents/testing/unit/tdd-london-swarm.md +0 -43
- package/.claude/agents/testing/validation/production-validator.md +0 -43
- package/dist/coordination/fleet-manager.test.js +0 -141
- package/dist/coordination/fleet-manager.test.js.map +0 -1
- package/dist/middleware/transparency-middleware.test.js +0 -184
- package/dist/middleware/transparency-middleware.test.js.map +0 -1
- /package/.claude/agents/{core-agents → developers}/researcher.md +0 -0
- /package/.claude/agents/{consensus → specialists}/crdt-synchronizer.md +0 -0
- /package/.claude/agents/{consensus → specialists}/quorum-manager.md +0 -0
- /package/.claude/agents/{consensus → specialists}/raft-manager.md +0 -0
- /package/.claude/{agents/core-agents → agents-ignore}/coordinator.md +0 -0
- /package/.claude/{agents/core-agents/cost-savings-coordinator.md → agents-ignore/cost-savings-coordinator.md.backup} +0 -0
- /package/.claude/skills/redis-coordination/{phase4-wake-queue-test-report.md → demos/phase4-wake-queue-test-report.md} +0 -0
- /package/.claude/skills/redis-coordination/{test-bzpopmin-fix.sh → demos/test-bzpopmin-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-cancel-swarm.sh → demos/test-cancel-swarm.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-dlq.sh → demos/test-dlq.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4-unix.sh → demos/test-priority-wake-phase4-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake-phase4.sh → demos/test-priority-wake-phase4.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-priority-wake.sh → demos/test-priority-wake.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quick-fix.sh → demos/test-quick-fix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-absolute.sh → demos/test-quorum-absolute.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-fallback.sh → demos/test-quorum-fallback.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-percentage.sh → demos/test-quorum-percentage.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum-with-retry.sh → demos/test-quorum-with-retry.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-quorum.sh → demos/test-quorum.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown-handling.sh → demos/test-shutdown-handling.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-shutdown.sh → demos/test-shutdown.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils-unix.sh → demos/test-utils-unix.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-utils.sh → demos/test-utils.sh} +0 -0
- /package/.claude/skills/redis-coordination/{test-waiting-mode.sh → demos/test-waiting-mode.sh} +0 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iteration History Management
|
|
3
|
+
*
|
|
4
|
+
* Loads and formats iteration history from Redis for CLI-spawned agents.
|
|
5
|
+
* Enables agents to learn from previous attempts and feedback.
|
|
6
|
+
*
|
|
7
|
+
* Storage Pattern:
|
|
8
|
+
* swarm:${TASK_ID}:${AGENT_ID}:result:iteration-${N} → Result text + confidence
|
|
9
|
+
* swarm:${TASK_ID}:${AGENT_ID}:feedback:iteration-${N} → Validator feedback
|
|
10
|
+
*
|
|
11
|
+
* Sprint 3 - Phase 2 Implementation
|
|
12
|
+
*/ import { execSync } from 'child_process';
|
|
13
|
+
/**
|
|
14
|
+
* Load iteration history for an agent from Redis
|
|
15
|
+
*
|
|
16
|
+
* @param taskId - Task identifier
|
|
17
|
+
* @param agentId - Agent identifier
|
|
18
|
+
* @param currentIteration - Current iteration number (loads 1 to N-1)
|
|
19
|
+
* @returns Array of iteration results
|
|
20
|
+
*/ export async function loadIterationHistory(taskId, agentId, currentIteration) {
|
|
21
|
+
const history = [];
|
|
22
|
+
// Load previous iterations (1 to currentIteration - 1)
|
|
23
|
+
for(let i = 1; i < currentIteration; i++){
|
|
24
|
+
try {
|
|
25
|
+
// Load result data
|
|
26
|
+
const resultKey = `swarm:${taskId}:${agentId}:result:iteration-${i}`;
|
|
27
|
+
const resultJson = execSync(`redis-cli get "${resultKey}"`, {
|
|
28
|
+
encoding: 'utf8'
|
|
29
|
+
}).trim();
|
|
30
|
+
if (resultJson === '(nil)' || !resultJson) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const resultData = JSON.parse(resultJson);
|
|
34
|
+
// Load feedback data (may not exist for all iterations)
|
|
35
|
+
const feedbackKey = `swarm:${taskId}:${agentId}:feedback:iteration-${i}`;
|
|
36
|
+
let feedback;
|
|
37
|
+
try {
|
|
38
|
+
const feedbackJson = execSync(`redis-cli get "${feedbackKey}"`, {
|
|
39
|
+
encoding: 'utf8'
|
|
40
|
+
}).trim();
|
|
41
|
+
if (feedbackJson !== '(nil)' && feedbackJson) {
|
|
42
|
+
const feedbackData = JSON.parse(feedbackJson);
|
|
43
|
+
feedback = feedbackData.feedback || feedbackData.comments;
|
|
44
|
+
}
|
|
45
|
+
} catch (err) {
|
|
46
|
+
// Feedback may not exist for this iteration
|
|
47
|
+
feedback = undefined;
|
|
48
|
+
}
|
|
49
|
+
history.push({
|
|
50
|
+
iteration: i,
|
|
51
|
+
result: resultData.result || resultData.output || '',
|
|
52
|
+
confidence: resultData.confidence || 0,
|
|
53
|
+
timestamp: resultData.timestamp || new Date().toISOString(),
|
|
54
|
+
feedback
|
|
55
|
+
});
|
|
56
|
+
} catch (err) {
|
|
57
|
+
console.error(`[iteration-history] Failed to load iteration ${i}:`, err);
|
|
58
|
+
// Continue loading other iterations
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return history;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Store iteration result in Redis
|
|
65
|
+
*
|
|
66
|
+
* @param taskId - Task identifier
|
|
67
|
+
* @param agentId - Agent identifier
|
|
68
|
+
* @param iteration - Iteration number
|
|
69
|
+
* @param result - Result text/output
|
|
70
|
+
* @param confidence - Confidence score (0.0-1.0)
|
|
71
|
+
*/ export async function storeIterationResult(taskId, agentId, iteration, result, confidence) {
|
|
72
|
+
const resultKey = `swarm:${taskId}:${agentId}:result:iteration-${iteration}`;
|
|
73
|
+
const resultData = {
|
|
74
|
+
result,
|
|
75
|
+
confidence,
|
|
76
|
+
timestamp: new Date().toISOString(),
|
|
77
|
+
iteration
|
|
78
|
+
};
|
|
79
|
+
const resultJson = JSON.stringify(resultData);
|
|
80
|
+
try {
|
|
81
|
+
// Store with 24 hour TTL
|
|
82
|
+
execSync(`redis-cli setex "${resultKey}" 86400 '${resultJson.replace(/'/g, "'\\''")}'`, {
|
|
83
|
+
encoding: 'utf8'
|
|
84
|
+
});
|
|
85
|
+
console.log(`[iteration-history] Stored result for iteration ${iteration}`);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
console.error(`[iteration-history] Failed to store result:`, err);
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Format iteration history as markdown for system prompt
|
|
93
|
+
*
|
|
94
|
+
* @param history - Array of iteration results
|
|
95
|
+
* @param currentIteration - Current iteration number
|
|
96
|
+
* @returns Formatted markdown string
|
|
97
|
+
*/ export function formatIterationHistory(history, currentIteration) {
|
|
98
|
+
if (history.length === 0) {
|
|
99
|
+
return `## Current Iteration: ${currentIteration}
|
|
100
|
+
|
|
101
|
+
This is your first attempt at this task. No previous iteration history available.
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
const sections = [];
|
|
105
|
+
sections.push('## Iteration History');
|
|
106
|
+
sections.push('');
|
|
107
|
+
sections.push('Learn from your previous attempts and feedback:');
|
|
108
|
+
sections.push('');
|
|
109
|
+
// Format each iteration
|
|
110
|
+
for (const iter of history){
|
|
111
|
+
sections.push(`### Iteration ${iter.iteration}`);
|
|
112
|
+
sections.push('');
|
|
113
|
+
sections.push('**Result:**');
|
|
114
|
+
sections.push(iter.result.substring(0, 500)); // Truncate to 500 chars
|
|
115
|
+
if (iter.result.length > 500) {
|
|
116
|
+
sections.push('... (truncated)');
|
|
117
|
+
}
|
|
118
|
+
sections.push('');
|
|
119
|
+
if (iter.feedback) {
|
|
120
|
+
sections.push('**Feedback from Validators:**');
|
|
121
|
+
sections.push(iter.feedback);
|
|
122
|
+
sections.push('');
|
|
123
|
+
}
|
|
124
|
+
sections.push(`**Confidence:** ${iter.confidence.toFixed(2)}`);
|
|
125
|
+
sections.push(`**Timestamp:** ${iter.timestamp}`);
|
|
126
|
+
sections.push('');
|
|
127
|
+
sections.push('---');
|
|
128
|
+
sections.push('');
|
|
129
|
+
}
|
|
130
|
+
// Add current iteration context
|
|
131
|
+
sections.push(`## Current Iteration: ${currentIteration}`);
|
|
132
|
+
sections.push('');
|
|
133
|
+
if (history.length > 0) {
|
|
134
|
+
const lastIteration = history[history.length - 1];
|
|
135
|
+
if (lastIteration.feedback) {
|
|
136
|
+
sections.push('**Your Task:** Address the feedback from the previous iteration:');
|
|
137
|
+
sections.push('');
|
|
138
|
+
sections.push(lastIteration.feedback);
|
|
139
|
+
sections.push('');
|
|
140
|
+
} else {
|
|
141
|
+
sections.push(`**Your Task:** Improve upon iteration ${lastIteration.iteration} (confidence: ${lastIteration.confidence.toFixed(2)})`);
|
|
142
|
+
sections.push('');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return sections.join('\n');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Check if iteration history exists for an agent
|
|
149
|
+
*
|
|
150
|
+
* @param taskId - Task identifier
|
|
151
|
+
* @param agentId - Agent identifier
|
|
152
|
+
* @returns True if any iteration history exists
|
|
153
|
+
*/ export async function hasIterationHistory(taskId, agentId) {
|
|
154
|
+
try {
|
|
155
|
+
const pattern = `swarm:${taskId}:${agentId}:result:iteration-*`;
|
|
156
|
+
const keys = execSync(`redis-cli --scan --pattern "${pattern}"`, {
|
|
157
|
+
encoding: 'utf8'
|
|
158
|
+
}).trim();
|
|
159
|
+
return keys.length > 0;
|
|
160
|
+
} catch (err) {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get the latest iteration number for an agent
|
|
166
|
+
*
|
|
167
|
+
* @param taskId - Task identifier
|
|
168
|
+
* @param agentId - Agent identifier
|
|
169
|
+
* @returns Latest iteration number (0 if no history)
|
|
170
|
+
*/ export async function getLatestIteration(taskId, agentId) {
|
|
171
|
+
try {
|
|
172
|
+
const pattern = `swarm:${taskId}:${agentId}:result:iteration-*`;
|
|
173
|
+
const keys = execSync(`redis-cli --scan --pattern "${pattern}"`, {
|
|
174
|
+
encoding: 'utf8'
|
|
175
|
+
}).trim().split('\n').filter((k)=>k.length > 0);
|
|
176
|
+
if (keys.length === 0) return 0;
|
|
177
|
+
// Extract iteration numbers and find max
|
|
178
|
+
const iterations = keys.map((key)=>{
|
|
179
|
+
const match = key.match(/iteration-(\d+)$/);
|
|
180
|
+
return match ? parseInt(match[1], 10) : 0;
|
|
181
|
+
});
|
|
182
|
+
return Math.max(...iterations);
|
|
183
|
+
} catch (err) {
|
|
184
|
+
return 0;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
//# sourceMappingURL=iteration-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/iteration-history.ts"],"sourcesContent":["/**\r\n * Iteration History Management\r\n *\r\n * Loads and formats iteration history from Redis for CLI-spawned agents.\r\n * Enables agents to learn from previous attempts and feedback.\r\n *\r\n * Storage Pattern:\r\n * swarm:${TASK_ID}:${AGENT_ID}:result:iteration-${N} → Result text + confidence\r\n * swarm:${TASK_ID}:${AGENT_ID}:feedback:iteration-${N} → Validator feedback\r\n *\r\n * Sprint 3 - Phase 2 Implementation\r\n */\r\n\r\nimport { execSync } from 'child_process';\r\n\r\nexport interface IterationResult {\r\n iteration: number;\r\n result: string;\r\n confidence: number;\r\n timestamp: string;\r\n feedback?: string;\r\n}\r\n\r\n/**\r\n * Load iteration history for an agent from Redis\r\n *\r\n * @param taskId - Task identifier\r\n * @param agentId - Agent identifier\r\n * @param currentIteration - Current iteration number (loads 1 to N-1)\r\n * @returns Array of iteration results\r\n */\r\nexport async function loadIterationHistory(\r\n taskId: string,\r\n agentId: string,\r\n currentIteration: number\r\n): Promise<IterationResult[]> {\r\n const history: IterationResult[] = [];\r\n\r\n // Load previous iterations (1 to currentIteration - 1)\r\n for (let i = 1; i < currentIteration; i++) {\r\n try {\r\n // Load result data\r\n const resultKey = `swarm:${taskId}:${agentId}:result:iteration-${i}`;\r\n const resultJson = execSync(`redis-cli get \"${resultKey}\"`, { encoding: 'utf8' }).trim();\r\n\r\n if (resultJson === '(nil)' || !resultJson) {\r\n // No result for this iteration (shouldn't happen in normal flow)\r\n continue;\r\n }\r\n\r\n const resultData = JSON.parse(resultJson);\r\n\r\n // Load feedback data (may not exist for all iterations)\r\n const feedbackKey = `swarm:${taskId}:${agentId}:feedback:iteration-${i}`;\r\n let feedback: string | undefined;\r\n\r\n try {\r\n const feedbackJson = execSync(`redis-cli get \"${feedbackKey}\"`, { encoding: 'utf8' }).trim();\r\n if (feedbackJson !== '(nil)' && feedbackJson) {\r\n const feedbackData = JSON.parse(feedbackJson);\r\n feedback = feedbackData.feedback || feedbackData.comments;\r\n }\r\n } catch (err) {\r\n // Feedback may not exist for this iteration\r\n feedback = undefined;\r\n }\r\n\r\n history.push({\r\n iteration: i,\r\n result: resultData.result || resultData.output || '',\r\n confidence: resultData.confidence || 0,\r\n timestamp: resultData.timestamp || new Date().toISOString(),\r\n feedback\r\n });\r\n } catch (err) {\r\n console.error(`[iteration-history] Failed to load iteration ${i}:`, err);\r\n // Continue loading other iterations\r\n }\r\n }\r\n\r\n return history;\r\n}\r\n\r\n/**\r\n * Store iteration result in Redis\r\n *\r\n * @param taskId - Task identifier\r\n * @param agentId - Agent identifier\r\n * @param iteration - Iteration number\r\n * @param result - Result text/output\r\n * @param confidence - Confidence score (0.0-1.0)\r\n */\r\nexport async function storeIterationResult(\r\n taskId: string,\r\n agentId: string,\r\n iteration: number,\r\n result: string,\r\n confidence: number\r\n): Promise<void> {\r\n const resultKey = `swarm:${taskId}:${agentId}:result:iteration-${iteration}`;\r\n const resultData = {\r\n result,\r\n confidence,\r\n timestamp: new Date().toISOString(),\r\n iteration\r\n };\r\n\r\n const resultJson = JSON.stringify(resultData);\r\n\r\n try {\r\n // Store with 24 hour TTL\r\n execSync(`redis-cli setex \"${resultKey}\" 86400 '${resultJson.replace(/'/g, \"'\\\\''\")}'`, {\r\n encoding: 'utf8'\r\n });\r\n console.log(`[iteration-history] Stored result for iteration ${iteration}`);\r\n } catch (err) {\r\n console.error(`[iteration-history] Failed to store result:`, err);\r\n throw err;\r\n }\r\n}\r\n\r\n/**\r\n * Format iteration history as markdown for system prompt\r\n *\r\n * @param history - Array of iteration results\r\n * @param currentIteration - Current iteration number\r\n * @returns Formatted markdown string\r\n */\r\nexport function formatIterationHistory(\r\n history: IterationResult[],\r\n currentIteration: number\r\n): string {\r\n if (history.length === 0) {\r\n return `## Current Iteration: ${currentIteration}\r\n\r\nThis is your first attempt at this task. No previous iteration history available.\r\n`;\r\n }\r\n\r\n const sections: string[] = [];\r\n\r\n sections.push('## Iteration History');\r\n sections.push('');\r\n sections.push('Learn from your previous attempts and feedback:');\r\n sections.push('');\r\n\r\n // Format each iteration\r\n for (const iter of history) {\r\n sections.push(`### Iteration ${iter.iteration}`);\r\n sections.push('');\r\n\r\n sections.push('**Result:**');\r\n sections.push(iter.result.substring(0, 500)); // Truncate to 500 chars\r\n if (iter.result.length > 500) {\r\n sections.push('... (truncated)');\r\n }\r\n sections.push('');\r\n\r\n if (iter.feedback) {\r\n sections.push('**Feedback from Validators:**');\r\n sections.push(iter.feedback);\r\n sections.push('');\r\n }\r\n\r\n sections.push(`**Confidence:** ${iter.confidence.toFixed(2)}`);\r\n sections.push(`**Timestamp:** ${iter.timestamp}`);\r\n sections.push('');\r\n sections.push('---');\r\n sections.push('');\r\n }\r\n\r\n // Add current iteration context\r\n sections.push(`## Current Iteration: ${currentIteration}`);\r\n sections.push('');\r\n\r\n if (history.length > 0) {\r\n const lastIteration = history[history.length - 1];\r\n if (lastIteration.feedback) {\r\n sections.push('**Your Task:** Address the feedback from the previous iteration:');\r\n sections.push('');\r\n sections.push(lastIteration.feedback);\r\n sections.push('');\r\n } else {\r\n sections.push(`**Your Task:** Improve upon iteration ${lastIteration.iteration} (confidence: ${lastIteration.confidence.toFixed(2)})`);\r\n sections.push('');\r\n }\r\n }\r\n\r\n return sections.join('\\n');\r\n}\r\n\r\n/**\r\n * Check if iteration history exists for an agent\r\n *\r\n * @param taskId - Task identifier\r\n * @param agentId - Agent identifier\r\n * @returns True if any iteration history exists\r\n */\r\nexport async function hasIterationHistory(\r\n taskId: string,\r\n agentId: string\r\n): Promise<boolean> {\r\n try {\r\n const pattern = `swarm:${taskId}:${agentId}:result:iteration-*`;\r\n const keys = execSync(`redis-cli --scan --pattern \"${pattern}\"`, { encoding: 'utf8' }).trim();\r\n return keys.length > 0;\r\n } catch (err) {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Get the latest iteration number for an agent\r\n *\r\n * @param taskId - Task identifier\r\n * @param agentId - Agent identifier\r\n * @returns Latest iteration number (0 if no history)\r\n */\r\nexport async function getLatestIteration(\r\n taskId: string,\r\n agentId: string\r\n): Promise<number> {\r\n try {\r\n const pattern = `swarm:${taskId}:${agentId}:result:iteration-*`;\r\n const keys = execSync(`redis-cli --scan --pattern \"${pattern}\"`, { encoding: 'utf8' })\r\n .trim()\r\n .split('\\n')\r\n .filter((k) => k.length > 0);\r\n\r\n if (keys.length === 0) return 0;\r\n\r\n // Extract iteration numbers and find max\r\n const iterations = keys.map((key) => {\r\n const match = key.match(/iteration-(\\d+)$/);\r\n return match ? parseInt(match[1], 10) : 0;\r\n });\r\n\r\n return Math.max(...iterations);\r\n } catch (err) {\r\n return 0;\r\n }\r\n}\r\n"],"names":["execSync","loadIterationHistory","taskId","agentId","currentIteration","history","i","resultKey","resultJson","encoding","trim","resultData","JSON","parse","feedbackKey","feedback","feedbackJson","feedbackData","comments","err","undefined","push","iteration","result","output","confidence","timestamp","Date","toISOString","console","error","storeIterationResult","stringify","replace","log","formatIterationHistory","length","sections","iter","substring","toFixed","lastIteration","join","hasIterationHistory","pattern","keys","getLatestIteration","split","filter","k","iterations","map","key","match","parseInt","Math","max"],"mappings":"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"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Definitions for CLI-Spawned Agents
|
|
3
|
+
*
|
|
4
|
+
* Converts agent markdown tool names to Anthropic API tool definitions.
|
|
5
|
+
* Implements core tools: Read, Write, Edit, Bash, TodoWrite
|
|
6
|
+
*/ /**
|
|
7
|
+
* Tool registry mapping agent tool names to Anthropic API format
|
|
8
|
+
*/ const TOOL_REGISTRY = {
|
|
9
|
+
Read: {
|
|
10
|
+
name: 'Read',
|
|
11
|
+
description: 'Reads a file from the local filesystem. Can access any file by absolute path.',
|
|
12
|
+
input_schema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
file_path: {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'The absolute path to the file to read'
|
|
18
|
+
},
|
|
19
|
+
limit: {
|
|
20
|
+
type: 'number',
|
|
21
|
+
description: 'Optional: The number of lines to read (for large files)'
|
|
22
|
+
},
|
|
23
|
+
offset: {
|
|
24
|
+
type: 'number',
|
|
25
|
+
description: 'Optional: The line number to start reading from'
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
required: [
|
|
29
|
+
'file_path'
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
Write: {
|
|
34
|
+
name: 'Write',
|
|
35
|
+
description: 'Writes content to a file. Creates new file or overwrites existing file.',
|
|
36
|
+
input_schema: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
properties: {
|
|
39
|
+
file_path: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
description: 'The absolute path to the file to write (must be absolute, not relative)'
|
|
42
|
+
},
|
|
43
|
+
content: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
description: 'The content to write to the file'
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
required: [
|
|
49
|
+
'file_path',
|
|
50
|
+
'content'
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
Edit: {
|
|
55
|
+
name: 'Edit',
|
|
56
|
+
description: 'Performs exact string replacement in files. Must read file first before editing.',
|
|
57
|
+
input_schema: {
|
|
58
|
+
type: 'object',
|
|
59
|
+
properties: {
|
|
60
|
+
file_path: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
description: 'The absolute path to the file to modify'
|
|
63
|
+
},
|
|
64
|
+
old_string: {
|
|
65
|
+
type: 'string',
|
|
66
|
+
description: 'The exact text to replace (must be unique in file)'
|
|
67
|
+
},
|
|
68
|
+
new_string: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
description: 'The text to replace it with'
|
|
71
|
+
},
|
|
72
|
+
replace_all: {
|
|
73
|
+
type: 'boolean',
|
|
74
|
+
description: 'Optional: Replace all occurrences (default false)'
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
required: [
|
|
78
|
+
'file_path',
|
|
79
|
+
'old_string',
|
|
80
|
+
'new_string'
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
Bash: {
|
|
85
|
+
name: 'Bash',
|
|
86
|
+
description: 'Executes bash commands in a persistent shell session. For terminal operations like git, npm, docker.',
|
|
87
|
+
input_schema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
command: {
|
|
91
|
+
type: 'string',
|
|
92
|
+
description: 'The bash command to execute'
|
|
93
|
+
},
|
|
94
|
+
description: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Clear, concise description of what this command does (5-10 words)'
|
|
97
|
+
},
|
|
98
|
+
timeout: {
|
|
99
|
+
type: 'number',
|
|
100
|
+
description: 'Optional timeout in milliseconds (max 600000, default 120000)'
|
|
101
|
+
},
|
|
102
|
+
run_in_background: {
|
|
103
|
+
type: 'boolean',
|
|
104
|
+
description: 'Optional: Run command in background (default false)'
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
required: [
|
|
108
|
+
'command'
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
TodoWrite: {
|
|
113
|
+
name: 'TodoWrite',
|
|
114
|
+
description: 'Creates and manages structured task list for tracking progress.',
|
|
115
|
+
input_schema: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
properties: {
|
|
118
|
+
todos: {
|
|
119
|
+
type: 'array',
|
|
120
|
+
description: 'Array of todo items with content, status, and activeForm',
|
|
121
|
+
items: {
|
|
122
|
+
type: 'object',
|
|
123
|
+
properties: {
|
|
124
|
+
content: {
|
|
125
|
+
type: 'string',
|
|
126
|
+
description: 'Task description in imperative form (e.g., "Run tests")'
|
|
127
|
+
},
|
|
128
|
+
status: {
|
|
129
|
+
type: 'string',
|
|
130
|
+
enum: [
|
|
131
|
+
'pending',
|
|
132
|
+
'in_progress',
|
|
133
|
+
'completed'
|
|
134
|
+
],
|
|
135
|
+
description: 'Task status'
|
|
136
|
+
},
|
|
137
|
+
activeForm: {
|
|
138
|
+
type: 'string',
|
|
139
|
+
description: 'Present continuous form shown during execution (e.g., "Running tests")'
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
required: [
|
|
143
|
+
'content',
|
|
144
|
+
'status',
|
|
145
|
+
'activeForm'
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
required: [
|
|
151
|
+
'todos'
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
Glob: {
|
|
156
|
+
name: 'Glob',
|
|
157
|
+
description: 'Fast file pattern matching. Supports glob patterns like "**/*.js".',
|
|
158
|
+
input_schema: {
|
|
159
|
+
type: 'object',
|
|
160
|
+
properties: {
|
|
161
|
+
pattern: {
|
|
162
|
+
type: 'string',
|
|
163
|
+
description: 'The glob pattern to match files against'
|
|
164
|
+
},
|
|
165
|
+
path: {
|
|
166
|
+
type: 'string',
|
|
167
|
+
description: 'Optional: Directory to search in (defaults to current working directory)'
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
required: [
|
|
171
|
+
'pattern'
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
Grep: {
|
|
176
|
+
name: 'Grep',
|
|
177
|
+
description: 'Powerful search tool built on ripgrep. Supports regex patterns.',
|
|
178
|
+
input_schema: {
|
|
179
|
+
type: 'object',
|
|
180
|
+
properties: {
|
|
181
|
+
pattern: {
|
|
182
|
+
type: 'string',
|
|
183
|
+
description: 'The regular expression pattern to search for'
|
|
184
|
+
},
|
|
185
|
+
path: {
|
|
186
|
+
type: 'string',
|
|
187
|
+
description: 'Optional: File or directory to search in'
|
|
188
|
+
},
|
|
189
|
+
output_mode: {
|
|
190
|
+
type: 'string',
|
|
191
|
+
enum: [
|
|
192
|
+
'content',
|
|
193
|
+
'files_with_matches',
|
|
194
|
+
'count'
|
|
195
|
+
],
|
|
196
|
+
description: 'Output mode (default: files_with_matches)'
|
|
197
|
+
},
|
|
198
|
+
glob: {
|
|
199
|
+
type: 'string',
|
|
200
|
+
description: 'Optional: Glob pattern to filter files'
|
|
201
|
+
},
|
|
202
|
+
type: {
|
|
203
|
+
type: 'string',
|
|
204
|
+
description: 'Optional: File type (js, py, rust, etc.)'
|
|
205
|
+
},
|
|
206
|
+
'-i': {
|
|
207
|
+
type: 'boolean',
|
|
208
|
+
description: 'Case insensitive search'
|
|
209
|
+
},
|
|
210
|
+
'-n': {
|
|
211
|
+
type: 'boolean',
|
|
212
|
+
description: 'Show line numbers (requires output_mode: content)'
|
|
213
|
+
},
|
|
214
|
+
'-A': {
|
|
215
|
+
type: 'number',
|
|
216
|
+
description: 'Lines to show after match (requires output_mode: content)'
|
|
217
|
+
},
|
|
218
|
+
'-B': {
|
|
219
|
+
type: 'number',
|
|
220
|
+
description: 'Lines to show before match (requires output_mode: content)'
|
|
221
|
+
},
|
|
222
|
+
'-C': {
|
|
223
|
+
type: 'number',
|
|
224
|
+
description: 'Lines to show before and after match (requires output_mode: content)'
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
required: [
|
|
228
|
+
'pattern'
|
|
229
|
+
]
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Convert agent tool names to Anthropic API tool definitions
|
|
235
|
+
*/ export function convertToolNames(toolNames) {
|
|
236
|
+
const definitions = [];
|
|
237
|
+
for (const toolName of toolNames){
|
|
238
|
+
const definition = TOOL_REGISTRY[toolName];
|
|
239
|
+
if (definition) {
|
|
240
|
+
definitions.push(definition);
|
|
241
|
+
} else {
|
|
242
|
+
console.warn(`[tool-definitions] Unknown tool: ${toolName}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return definitions;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get tool definition by name
|
|
249
|
+
*/ export function getToolDefinition(toolName) {
|
|
250
|
+
return TOOL_REGISTRY[toolName];
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Check if tool name is valid
|
|
254
|
+
*/ export function isValidTool(toolName) {
|
|
255
|
+
return toolName in TOOL_REGISTRY;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get all available tool names
|
|
259
|
+
*/ export function getAvailableTools() {
|
|
260
|
+
return Object.keys(TOOL_REGISTRY);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
//# sourceMappingURL=tool-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/tool-definitions.ts"],"sourcesContent":["/**\r\n * Tool Definitions for CLI-Spawned Agents\r\n *\r\n * Converts agent markdown tool names to Anthropic API tool definitions.\r\n * Implements core tools: Read, Write, Edit, Bash, TodoWrite\r\n */\r\n\r\nexport interface ToolDefinition {\r\n name: string;\r\n description: string;\r\n input_schema: {\r\n type: 'object';\r\n properties: Record<string, any>;\r\n required: string[];\r\n };\r\n}\r\n\r\n/**\r\n * Tool registry mapping agent tool names to Anthropic API format\r\n */\r\nconst TOOL_REGISTRY: Record<string, ToolDefinition> = {\r\n Read: {\r\n name: 'Read',\r\n description: 'Reads a file from the local filesystem. Can access any file by absolute path.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n file_path: {\r\n type: 'string',\r\n description: 'The absolute path to the file to read'\r\n },\r\n limit: {\r\n type: 'number',\r\n description: 'Optional: The number of lines to read (for large files)'\r\n },\r\n offset: {\r\n type: 'number',\r\n description: 'Optional: The line number to start reading from'\r\n }\r\n },\r\n required: ['file_path']\r\n }\r\n },\r\n\r\n Write: {\r\n name: 'Write',\r\n description: 'Writes content to a file. Creates new file or overwrites existing file.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n file_path: {\r\n type: 'string',\r\n description: 'The absolute path to the file to write (must be absolute, not relative)'\r\n },\r\n content: {\r\n type: 'string',\r\n description: 'The content to write to the file'\r\n }\r\n },\r\n required: ['file_path', 'content']\r\n }\r\n },\r\n\r\n Edit: {\r\n name: 'Edit',\r\n description: 'Performs exact string replacement in files. Must read file first before editing.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n file_path: {\r\n type: 'string',\r\n description: 'The absolute path to the file to modify'\r\n },\r\n old_string: {\r\n type: 'string',\r\n description: 'The exact text to replace (must be unique in file)'\r\n },\r\n new_string: {\r\n type: 'string',\r\n description: 'The text to replace it with'\r\n },\r\n replace_all: {\r\n type: 'boolean',\r\n description: 'Optional: Replace all occurrences (default false)'\r\n }\r\n },\r\n required: ['file_path', 'old_string', 'new_string']\r\n }\r\n },\r\n\r\n Bash: {\r\n name: 'Bash',\r\n description: 'Executes bash commands in a persistent shell session. For terminal operations like git, npm, docker.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n command: {\r\n type: 'string',\r\n description: 'The bash command to execute'\r\n },\r\n description: {\r\n type: 'string',\r\n description: 'Clear, concise description of what this command does (5-10 words)'\r\n },\r\n timeout: {\r\n type: 'number',\r\n description: 'Optional timeout in milliseconds (max 600000, default 120000)'\r\n },\r\n run_in_background: {\r\n type: 'boolean',\r\n description: 'Optional: Run command in background (default false)'\r\n }\r\n },\r\n required: ['command']\r\n }\r\n },\r\n\r\n TodoWrite: {\r\n name: 'TodoWrite',\r\n description: 'Creates and manages structured task list for tracking progress.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n todos: {\r\n type: 'array',\r\n description: 'Array of todo items with content, status, and activeForm',\r\n items: {\r\n type: 'object',\r\n properties: {\r\n content: {\r\n type: 'string',\r\n description: 'Task description in imperative form (e.g., \"Run tests\")'\r\n },\r\n status: {\r\n type: 'string',\r\n enum: ['pending', 'in_progress', 'completed'],\r\n description: 'Task status'\r\n },\r\n activeForm: {\r\n type: 'string',\r\n description: 'Present continuous form shown during execution (e.g., \"Running tests\")'\r\n }\r\n },\r\n required: ['content', 'status', 'activeForm']\r\n }\r\n }\r\n },\r\n required: ['todos']\r\n }\r\n },\r\n\r\n Glob: {\r\n name: 'Glob',\r\n description: 'Fast file pattern matching. Supports glob patterns like \"**/*.js\".',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n pattern: {\r\n type: 'string',\r\n description: 'The glob pattern to match files against'\r\n },\r\n path: {\r\n type: 'string',\r\n description: 'Optional: Directory to search in (defaults to current working directory)'\r\n }\r\n },\r\n required: ['pattern']\r\n }\r\n },\r\n\r\n Grep: {\r\n name: 'Grep',\r\n description: 'Powerful search tool built on ripgrep. Supports regex patterns.',\r\n input_schema: {\r\n type: 'object',\r\n properties: {\r\n pattern: {\r\n type: 'string',\r\n description: 'The regular expression pattern to search for'\r\n },\r\n path: {\r\n type: 'string',\r\n description: 'Optional: File or directory to search in'\r\n },\r\n output_mode: {\r\n type: 'string',\r\n enum: ['content', 'files_with_matches', 'count'],\r\n description: 'Output mode (default: files_with_matches)'\r\n },\r\n glob: {\r\n type: 'string',\r\n description: 'Optional: Glob pattern to filter files'\r\n },\r\n type: {\r\n type: 'string',\r\n description: 'Optional: File type (js, py, rust, etc.)'\r\n },\r\n '-i': {\r\n type: 'boolean',\r\n description: 'Case insensitive search'\r\n },\r\n '-n': {\r\n type: 'boolean',\r\n description: 'Show line numbers (requires output_mode: content)'\r\n },\r\n '-A': {\r\n type: 'number',\r\n description: 'Lines to show after match (requires output_mode: content)'\r\n },\r\n '-B': {\r\n type: 'number',\r\n description: 'Lines to show before match (requires output_mode: content)'\r\n },\r\n '-C': {\r\n type: 'number',\r\n description: 'Lines to show before and after match (requires output_mode: content)'\r\n }\r\n },\r\n required: ['pattern']\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Convert agent tool names to Anthropic API tool definitions\r\n */\r\nexport function convertToolNames(toolNames: string[]): ToolDefinition[] {\r\n const definitions: ToolDefinition[] = [];\r\n\r\n for (const toolName of toolNames) {\r\n const definition = TOOL_REGISTRY[toolName];\r\n if (definition) {\r\n definitions.push(definition);\r\n } else {\r\n console.warn(`[tool-definitions] Unknown tool: ${toolName}`);\r\n }\r\n }\r\n\r\n return definitions;\r\n}\r\n\r\n/**\r\n * Get tool definition by name\r\n */\r\nexport function getToolDefinition(toolName: string): ToolDefinition | undefined {\r\n return TOOL_REGISTRY[toolName];\r\n}\r\n\r\n/**\r\n * Check if tool name is valid\r\n */\r\nexport function isValidTool(toolName: string): boolean {\r\n return toolName in TOOL_REGISTRY;\r\n}\r\n\r\n/**\r\n * Get all available tool names\r\n */\r\nexport function getAvailableTools(): string[] {\r\n return Object.keys(TOOL_REGISTRY);\r\n}\r\n"],"names":["TOOL_REGISTRY","Read","name","description","input_schema","type","properties","file_path","limit","offset","required","Write","content","Edit","old_string","new_string","replace_all","Bash","command","timeout","run_in_background","TodoWrite","todos","items","status","enum","activeForm","Glob","pattern","path","Grep","output_mode","glob","convertToolNames","toolNames","definitions","toolName","definition","push","console","warn","getToolDefinition","isValidTool","getAvailableTools","Object","keys"],"mappings":"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"}
|