claude-flow-novice 2.9.0 → 2.10.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/agents/cfn-dev-team/CLAUDE.md +1086 -0
- package/.claude/agents/cfn-dev-team/README.md +116 -0
- package/.claude/agents/cfn-dev-team/architecture/api-designer-persona.md +149 -0
- package/.claude/agents/cfn-dev-team/architecture/base-template-generator.md +196 -0
- package/.claude/agents/cfn-dev-team/architecture/goal-planner.md +183 -0
- package/.claude/agents/cfn-dev-team/architecture/planner.md +182 -0
- package/.claude/agents/cfn-dev-team/architecture/system-architect.md +162 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-frontend-coordinator.md +540 -0
- package/.claude/agents/cfn-dev-team/coordinators/cfn-v3-coordinator.md +20 -14
- package/.claude/agents/cfn-dev-team/coordinators/consensus-builder.md +167 -0
- package/.claude/agents/cfn-dev-team/dev-ops/devops-engineer.md +148 -0
- package/.claude/agents/cfn-dev-team/dev-ops/github-commit-agent.md +118 -0
- package/.claude/agents/cfn-dev-team/dev-ops/kubernetes-specialist.md +540 -0
- package/.claude/agents/cfn-dev-team/developers/backend-dev.md +20 -0
- package/.claude/agents/cfn-dev-team/developers/data/data-engineer.md +585 -0
- package/.claude/agents/cfn-dev-team/developers/database/database-architect.md +276 -0
- package/.claude/agents/cfn-dev-team/developers/dev-backend-api.md +147 -0
- package/.claude/agents/cfn-dev-team/developers/frontend/mobile-dev.md +218 -0
- package/.claude/agents/cfn-dev-team/developers/{react-frontend-engineer.md → frontend/react-frontend-engineer.md} +53 -5
- package/.claude/agents/cfn-dev-team/developers/frontend/spec-mobile-react-native.md +199 -0
- package/.claude/agents/cfn-dev-team/developers/graphql-specialist.md +615 -0
- package/.claude/agents/cfn-dev-team/developers/rust-developer.md +174 -0
- package/.claude/agents/cfn-dev-team/documentation/README-VALIDATION.md +243 -0
- package/.claude/agents/cfn-dev-team/documentation/agent-type-guidelines.md +465 -0
- package/.claude/agents/cfn-dev-team/documentation/api-docs.md +103 -0
- package/.claude/agents/cfn-dev-team/documentation/docs-api-openapi.md +98 -0
- package/.claude/agents/cfn-dev-team/documentation/pseudocode.md +159 -0
- package/.claude/agents/cfn-dev-team/documentation/specification.md +157 -0
- package/.claude/agents/cfn-dev-team/product-owners/accessibility-advocate-persona.md +109 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/cto-agent.md +8 -6
- package/.claude/agents/cfn-dev-team/product-owners/power-user-persona.md +190 -0
- package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner.md +85 -59
- package/.claude/agents/cfn-dev-team/reviewers/quality/analyze-code-quality.md +141 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/code-analyzer.md +200 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/cyclomatic-complexity-reducer.md +321 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/perf-analyzer.md +238 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/performance-benchmarker.md +101 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/quality-metrics.md +375 -0
- package/.claude/agents/cfn-dev-team/reviewers/quality/security-specialist.md +193 -0
- package/.claude/agents/cfn-dev-team/reviewers/reviewer.md +39 -0
- package/.claude/agents/cfn-dev-team/testers/interaction-tester.md +31 -0
- package/.claude/agents/cfn-dev-team/testers/load-testing-specialist.md +469 -0
- package/.claude/agents/cfn-dev-team/testers/playwright-tester.md +24 -0
- package/.claude/agents/cfn-dev-team/testers/tester.md +20 -0
- package/.claude/agents/cfn-dev-team/utility/agent-builder.md +151 -0
- package/.claude/agents/cfn-dev-team/utility/analyst.md +178 -0
- package/.claude/agents/cfn-dev-team/utility/claude-code-expert.md +1043 -0
- package/.claude/agents/cfn-dev-team/utility/code-booster.md +139 -0
- package/.claude/agents/cfn-dev-team/utility/context-curator.md +99 -0
- package/.claude/agents/cfn-dev-team/{developers → utility}/researcher.md +6 -4
- package/.claude/commands/cfn/CFN_LOOP_FRONTEND.md +741 -0
- package/.claude/commands/cfn/CFN_LOOP_TASK_MODE.md +353 -0
- package/.claude/commands/cfn/cfn-loop-frontend.md +555 -0
- package/.claude/commands/cfn/cfn-loop.md +168 -7
- package/{CFN-CLAUDE.md → .claude/root-claude-distribute/CFN-CLAUDE.md} +23 -3
- package/.claude/skills/cfn-ace-system/SKILL.md +364 -0
- package/.claude/skills/cfn-ace-system/add-bullet.sh +145 -0
- package/.claude/skills/cfn-ace-system/analyze-anti-pattern-effectiveness.sh +56 -0
- package/.claude/skills/cfn-ace-system/classify-task.sh +18 -0
- package/.claude/skills/cfn-ace-system/export-ace-metrics.sh +48 -0
- package/.claude/skills/cfn-ace-system/extract-tags.sh +385 -0
- package/.claude/skills/cfn-ace-system/format-negative-context.sh +180 -0
- package/.claude/skills/cfn-ace-system/init-indexes.sql +160 -0
- package/.claude/skills/cfn-ace-system/invoke-context-curate.sh +192 -0
- package/.claude/skills/cfn-ace-system/invoke-context-inject.sh +361 -0
- package/.claude/skills/cfn-ace-system/invoke-context-query.sh +139 -0
- package/.claude/skills/cfn-ace-system/invoke-context-reflect.sh +343 -0
- package/.claude/skills/cfn-ace-system/invoke-context-stats.sh +227 -0
- package/.claude/skills/cfn-ace-system/log-merge.sh +67 -0
- package/.claude/skills/cfn-ace-system/monitor-injection-performance.sh +138 -0
- package/.claude/skills/cfn-ace-system/optimize-injection-pipeline.sh +169 -0
- package/.claude/skills/cfn-ace-system/query-anti-patterns.sh +276 -0
- package/.claude/skills/cfn-ace-system/query-contexts.sh +150 -0
- package/.claude/skills/cfn-ace-system/query-reflections.sh +35 -0
- package/.claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql +237 -0
- package/.claude/skills/cfn-ace-system/schema/README.md +723 -0
- package/.claude/skills/cfn-ace-system/schema/SCHEMA_DESIGN_SUMMARY.md +564 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data-simple.sh +62 -0
- package/.claude/skills/cfn-ace-system/schema/populate-test-data.sh +247 -0
- package/.claude/skills/cfn-ace-system/schema/run-migration.sh +231 -0
- package/.claude/skills/cfn-ace-system/schema/validate-schema.sql +280 -0
- package/.claude/skills/cfn-ace-system/score-relevance-adapter.sh +138 -0
- package/.claude/skills/cfn-ace-system/score-relevance.sh +253 -0
- package/.claude/skills/cfn-ace-system/sprint-7-lessons.json +46 -0
- package/.claude/skills/cfn-ace-system/store-reflection.sh +46 -0
- package/.claude/skills/cfn-ace-system/test-ace-skill.sh +312 -0
- package/.claude/skills/cfn-ace-system/track-ab-test.sh +42 -0
- package/.claude/skills/cfn-ace-system/update-reflection.sh +41 -0
- package/.claude/skills/cfn-agent-discovery/SKILL.md +40 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-clean.json +0 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry-fixed.json +19 -0
- package/.claude/skills/cfn-agent-discovery/agents-registry.json +718 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.py +184 -0
- package/.claude/skills/cfn-agent-discovery/discover-agents.sh +87 -0
- package/.claude/skills/cfn-agent-discovery/invoke-registry.sh +11 -0
- package/.claude/skills/cfn-agent-discovery/temp_script.py +0 -0
- package/.claude/skills/cfn-agent-execution/execute-agent.sh +126 -0
- package/.claude/skills/cfn-agent-output-processing/SKILL.md +359 -0
- package/.claude/skills/cfn-agent-selector/SKILL.md +90 -0
- package/.claude/skills/cfn-agent-selector/select-agents.sh +112 -0
- package/.claude/skills/cfn-agent-spawning/SKILL.md +135 -0
- package/.claude/skills/cfn-agent-spawning/agent-selection-guide.md +814 -0
- package/.claude/skills/cfn-agent-spawning/check-dependencies.sh +30 -0
- package/.claude/skills/cfn-agent-spawning/spawn-agent.sh +263 -0
- package/.claude/skills/cfn-agent-spawning/spawn-templates.sh +613 -0
- package/.claude/skills/cfn-analytics/description-refinement-guide.md +164 -0
- package/.claude/skills/cfn-analytics/log-skill-invocation.js +122 -0
- package/.claude/skills/cfn-analytics/run-production-criteria-tests.sh +126 -0
- package/.claude/skills/cfn-analytics/skill-analytics-dashboard.js +113 -0
- package/.claude/skills/cfn-analytics/skill-invocation-hook.sh +28 -0
- package/.claude/skills/cfn-analytics/skill-invocations.sql +58 -0
- package/.claude/skills/cfn-analytics/test-corpus.json +32 -0
- package/.claude/skills/cfn-analytics/test-data-generator.js +115 -0
- package/.claude/skills/cfn-analytics/test-manual-override-rate.js +285 -0
- package/.claude/skills/cfn-analytics/validate-skill-selection.js +188 -0
- package/.claude/skills/cfn-config-management/SKILL.md +34 -0
- package/.claude/skills/cfn-config-management/check-dependencies.sh +56 -0
- package/.claude/skills/cfn-config-management/config.json +32 -0
- package/.claude/skills/cfn-config-management/manage-config.sh +113 -0
- package/.claude/skills/cfn-event-bus/SKILL.md +412 -0
- package/.claude/skills/cfn-event-bus/config.json +111 -0
- package/.claude/skills/cfn-event-bus/eventbus-wrapper.cjs +69 -0
- package/.claude/skills/cfn-event-bus/invoke-event-publish.sh +147 -0
- package/.claude/skills/cfn-event-bus/invoke-event-subscribe.sh +171 -0
- package/.claude/skills/cfn-event-bus/invoke-lifecycle-track.sh +201 -0
- package/.claude/skills/cfn-event-bus/test-event-bus.sh +280 -0
- package/.claude/skills/cfn-fleet-manager/SKILL.md +412 -0
- package/.claude/skills/cfn-fleet-manager/config.json +60 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-allocate.sh +182 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-balance.sh +239 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-metrics.sh +193 -0
- package/.claude/skills/cfn-fleet-manager/invoke-fleet-register.sh +124 -0
- package/.claude/skills/cfn-fleet-manager/test-fleet-manager.sh +345 -0
- package/.claude/skills/cfn-hook-pipeline/SKILL.md +148 -0
- package/.claude/skills/cfn-hook-pipeline/auto-resolve.sh +66 -0
- package/.claude/skills/cfn-hook-pipeline/check-dependencies.sh +40 -0
- package/.claude/skills/cfn-hook-pipeline/feedback-resolver.sh +452 -0
- package/.claude/skills/cfn-hook-pipeline/post-edit-handler.sh +154 -0
- package/.claude/skills/cfn-hook-pipeline/security-scan.json +60 -0
- package/.claude/skills/cfn-hook-pipeline/security-scanner.sh +121 -0
- package/.claude/skills/cfn-hook-pipeline/test-root-warning-resolution.sh +148 -0
- package/.claude/skills/cfn-hybrid-routing/SKILL.md +46 -0
- package/.claude/skills/cfn-hybrid-routing/check-dependencies.sh +52 -0
- package/.claude/skills/cfn-hybrid-routing/config.json +26 -0
- package/.claude/skills/cfn-hybrid-routing/spawn-worker.sh +44 -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/context-injection.sh +142 -0
- package/.claude/skills/cfn-loop-orchestration/helpers/context-lookup.sh +359 -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/spawn-agents.sh +271 -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 +884 -0
- package/.claude/skills/cfn-loop-orchestration/orchestrate.sh.backup +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 +353 -0
- package/.claude/skills/cfn-loop-validation/check-dependencies.sh +31 -0
- package/.claude/skills/cfn-loop-validation/config.json +161 -0
- package/.claude/skills/cfn-loop-validation/consensus-calculator.js +477 -0
- package/.claude/skills/cfn-loop-validation/evidence-chain.sql +163 -0
- package/.claude/skills/cfn-loop-validation/examples/README.md +453 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-full-cfn-loop.sh +234 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop2-consensus.sh +132 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-loop3-gate.sh +115 -0
- package/.claude/skills/cfn-loop-validation/examples/coordinator-redis-integration.sh +186 -0
- package/.claude/skills/cfn-loop-validation/orchestrate-cfn-loop.sh +252 -0
- package/.claude/skills/cfn-loop-validation/validate-iteration.sh +134 -0
- package/.claude/skills/cfn-process-lifecycle/SKILL.md +39 -0
- package/.claude/skills/cfn-process-lifecycle/check-dependencies.sh +58 -0
- package/.claude/skills/cfn-process-lifecycle/config.json +39 -0
- package/.claude/skills/cfn-process-lifecycle/process-manager.sh +144 -0
- package/.claude/skills/cfn-product-owner-decision/SKILL.md +332 -0
- package/.claude/skills/cfn-product-owner-decision/execute-decision.sh +176 -0
- package/.claude/skills/cfn-product-owner-decision/parse-decision.sh +66 -0
- package/.claude/skills/cfn-product-owner-decision/validate-deliverables.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/AGENT_LOGGING.md +280 -0
- package/.claude/skills/cfn-redis-coordination/BZPOPMIN_FIX_SUMMARY.md +209 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +57 -0
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +267 -0
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +260 -0
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +25 -0
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +164 -0
- package/.claude/skills/cfn-redis-coordination/SKILL.md +720 -0
- package/.claude/skills/cfn-redis-coordination/agent-log.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/agent-recovery.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/analyze-task-complexity.sh +277 -0
- package/.claude/skills/cfn-redis-coordination/cancel-swarm.sh +221 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-exec.sh +468 -0
- package/.claude/skills/cfn-redis-coordination/cfn-loop-relaunch.sh +29 -0
- package/.claude/skills/cfn-redis-coordination/check-dependencies.sh +32 -0
- package/.claude/skills/cfn-redis-coordination/collect-confidence-scores.sh +179 -0
- package/.claude/skills/cfn-redis-coordination/collect-results.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/complete-swarm.sh +75 -0
- package/.claude/skills/cfn-redis-coordination/config.json +61 -0
- package/.claude/skills/cfn-redis-coordination/data/cfn-loop.db +0 -0
- package/.claude/skills/cfn-redis-coordination/demos/phase4-wake-queue-test-report.md +82 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-bzpopmin-fix.sh +274 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +276 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +129 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +320 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +249 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +163 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +138 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +45 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +68 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +56 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +81 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +57 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +187 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +160 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +97 -0
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +59 -0
- package/.claude/skills/cfn-redis-coordination/examples/README.md +73 -0
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +352 -0
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +127 -0
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +171 -0
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +227 -0
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +239 -0
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +258 -0
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +177 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +137 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +106 -0
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +126 -0
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +148 -0
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +220 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +283 -0
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh.backup-p7 +423 -0
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +147 -0
- package/.claude/skills/cfn-redis-coordination/log-event.sh +109 -0
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +674 -0
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +66 -0
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +31 -0
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +391 -0
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +101 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +141 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +31 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup +38 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-1761167675 +1672 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-p5 +1604 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase1 +1550 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase2 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.backup-phase3 +1621 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.broken +1627 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.corrupted +80 -0
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.deprecated +1864 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +75 -0
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +134 -0
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +162 -0
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +103 -0
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +619 -0
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +58 -0
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +371 -0
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +252 -0
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +165 -0
- package/.claude/skills/cfn-redis-coordination/signal.sh +38 -0
- package/.claude/skills/cfn-redis-coordination/store-context.sh +86 -0
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +123 -0
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +354 -0
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +513 -0
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +15 -0
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +102 -0
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +99 -0
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +170 -0
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +82 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +92 -0
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +4 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +418 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +124 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +166 -0
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +54 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_coordination_primitives.sh.deprecated +20 -0
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +49 -0
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +76 -0
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +492 -0
- package/.claude/skills/cfn-sqlite-memory/IMPLEMENTATION_REPORT.md +393 -0
- package/.claude/skills/cfn-sqlite-memory/QUICK_REFERENCE.md +204 -0
- package/.claude/skills/cfn-sqlite-memory/SKILL.md +415 -0
- package/.claude/skills/cfn-sqlite-memory/acl-queries.sql +452 -0
- package/.claude/skills/cfn-sqlite-memory/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-sqlite-memory/config.json +45 -0
- package/.claude/skills/cfn-sqlite-memory/memory-cli.sh +88 -0
- package/.claude/skills/cfn-sqlite-memory/test-state-persistence.js +187 -0
- package/.claude/skills/cfn-sqlite-memory/ttl-cleanup.sh +274 -0
- package/.claude/skills/cfn-test-execution/SKILL.md +128 -0
- package/.claude/skills/cfn-test-execution/check-dependencies.sh +36 -0
- package/.claude/skills/cfn-test-execution/test-cache-reader.sh +134 -0
- package/.claude/skills/cfn-test-execution/test-concurrent-conflicts.sh +115 -0
- package/.claude/skills/cfn-test-execution/test-coordinator-pattern.sh +109 -0
- package/.claude/skills/cfn-transparency-middleware/Cargo.toml +18 -0
- package/.claude/skills/cfn-transparency-middleware/SECURITY.md +41 -0
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +91 -0
- package/.claude/skills/cfn-transparency-middleware/TEST_RESULTS.md +174 -0
- package/.claude/skills/cfn-transparency-middleware/config.json +31 -0
- package/.claude/skills/cfn-transparency-middleware/examples/basic-usage.ts +39 -0
- package/.claude/skills/cfn-transparency-middleware/examples/batch-processing.ts +52 -0
- package/.claude/skills/cfn-transparency-middleware/examples/custom-filtering.ts +61 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-filter.sh +98 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-init.sh +224 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-level.sh +333 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-metrics.sh +345 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-observe.sh +140 -0
- package/.claude/skills/cfn-transparency-middleware/invoke-transparency-stop.sh +235 -0
- package/.claude/skills/cfn-transparency-middleware/memory_query.rs +85 -0
- package/.claude/skills/cfn-transparency-middleware/memory_repository.rs +140 -0
- package/.claude/skills/cfn-transparency-middleware/memory_schema.rs +64 -0
- package/.claude/skills/cfn-transparency-middleware/middleware-config.sh +29 -0
- package/.claude/skills/cfn-transparency-middleware/performance-benchmark.sh +79 -0
- package/.claude/skills/cfn-transparency-middleware/test-e2e.sh +406 -0
- package/.claude/skills/cfn-transparency-middleware/test-integration.sh +162 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh +368 -0
- package/.claude/skills/cfn-transparency-middleware/test-transparency-skill.sh.unix +126 -0
- package/.claude/skills/cfn-transparency-middleware/tests/input-validation.sh +93 -0
- package/.claude/skills/cfn-transparency-middleware/wrap-agent.sh +132 -0
- package/.claude/skills/cfn-webapp-testing/SCREENSHOT_NAMING_CONVENTION.md +547 -0
- package/.claude/skills/cfn-webapp-testing/SKILL.md +877 -0
- package/.claude/skills/cfn-webapp-testing/capture-screenshot.sh +238 -0
- package/.claude/skills/cfn-webapp-testing/cfn-loop-integration.sh +265 -0
- package/.claude/skills/cfn-webapp-testing/compare-screenshots.sh +199 -0
- package/.claude/skills/cfn-webapp-testing/init-storage.sh +150 -0
- package/.claude/skills/cfn-webapp-testing/set-baseline.sh +196 -0
- package/.claude/skills/cfn-webapp-testing/test-webapp-testing.sh +233 -0
- package/README.md +51 -2
- package/dist/ace/ace-reflector.js +109 -10
- package/dist/ace/ace-reflector.js.map +1 -1
- package/dist/agents/agent-loader.js +165 -146
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-executor.js +1 -1
- package/dist/cli/agent-executor.js.map +1 -1
- package/dist/cli/config-manager.js +109 -91
- package/dist/cli/config-manager.js.map +1 -1
- package/package.json +43 -7
- package/readme/README.md +15 -4
- package/scripts/init-project.js +84 -29
- package/scripts/run-marketing-tests.sh +43 -0
- package/scripts/update_paths.sh +47 -0
- package/tools/install-lizard.sh +37 -0
- package/tools/simple-complexity.sh +44 -0
- package/.claude/agents/cfn-dev-team/developers/coder.md +0 -270
- package/.claude/agents/cfn-dev-team/developers/state-architect.md +0 -127
- package/.claude/agents/cfn-dev-team/reviewers/code-quality-validator.md +0 -128
- /package/.claude/agents/cfn-dev-team/developers/{ui-designer.md → frontend/ui-designer.md} +0 -0
- /package/.claude/agents/cfn-dev-team/{coordinators → product-owners}/product-owner-agent.md +0 -0
|
@@ -9,16 +9,89 @@ export class ACEReflector {
|
|
|
9
9
|
}
|
|
10
10
|
async initialize() {
|
|
11
11
|
await this.memorySystem.initialize();
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
12
|
+
// Note: Production schema is managed by .claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql
|
|
13
|
+
// This initialization ensures compatibility with the production schema
|
|
14
|
+
// Apply performance indexes from init-indexes.sql
|
|
15
|
+
await this.applyPerformanceIndexes();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Apply performance indexes for context reflection queries
|
|
19
|
+
* Based on .claude/skills/cfn-ace-system/init-indexes.sql
|
|
20
|
+
* Target: < 100ms query time with 1000+ reflections
|
|
21
|
+
*/ async applyPerformanceIndexes() {
|
|
22
|
+
const db = this.memorySystem['db'];
|
|
23
|
+
if (!db) {
|
|
24
|
+
console.warn('⚠️ Database not initialized, skipping index creation');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Check if context_reflections table exists
|
|
28
|
+
const tableExists = await db.get("SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name='context_reflections'");
|
|
29
|
+
if (!tableExists || tableExists.count === 0) {
|
|
30
|
+
console.warn('⚠️ context_reflections table not found. Run schema migration first.');
|
|
31
|
+
console.warn(' Use: .claude/skills/cfn-ace-system/schema/run-migration.sh');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const indexes = [
|
|
35
|
+
// JSON Tag Extraction Index (most common query pattern)
|
|
36
|
+
{
|
|
37
|
+
name: 'idx_reflections_tags',
|
|
38
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_reflections_tags
|
|
39
|
+
ON context_reflections(json_extract(metadata, '$.tags'))`
|
|
40
|
+
},
|
|
41
|
+
// Domain Classification Index
|
|
42
|
+
{
|
|
43
|
+
name: 'idx_reflections_domain',
|
|
44
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_reflections_domain
|
|
45
|
+
ON context_reflections(json_extract(metadata, '$.domain'))`
|
|
46
|
+
},
|
|
47
|
+
// Confidence Score Index (DESC for high-to-low sorting)
|
|
48
|
+
{
|
|
49
|
+
name: 'idx_reflections_confidence',
|
|
50
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_reflections_confidence
|
|
51
|
+
ON context_reflections(confidence DESC)`
|
|
52
|
+
},
|
|
53
|
+
// Recency Index (DESC for chronological sorting)
|
|
54
|
+
{
|
|
55
|
+
name: 'idx_reflections_created_at',
|
|
56
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_reflections_created_at
|
|
57
|
+
ON context_reflections(created_at DESC)`
|
|
58
|
+
},
|
|
59
|
+
// Composite Index: Domain + Confidence + Recency
|
|
60
|
+
{
|
|
61
|
+
name: 'idx_reflections_domain_conf_date',
|
|
62
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_reflections_domain_conf_date
|
|
63
|
+
ON context_reflections(
|
|
64
|
+
json_extract(metadata, '$.domain'),
|
|
65
|
+
confidence,
|
|
66
|
+
created_at DESC
|
|
67
|
+
)`
|
|
68
|
+
},
|
|
69
|
+
// Composite Index: Confidence + Recency (covering index)
|
|
70
|
+
{
|
|
71
|
+
name: 'idx_reflections_conf_date',
|
|
72
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_reflections_conf_date
|
|
73
|
+
ON context_reflections(
|
|
74
|
+
confidence DESC,
|
|
75
|
+
created_at DESC
|
|
76
|
+
)`
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
let successCount = 0;
|
|
80
|
+
const failedIndexes = [];
|
|
81
|
+
for (const index of indexes){
|
|
82
|
+
try {
|
|
83
|
+
await db.run(index.sql);
|
|
84
|
+
successCount++;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
failedIndexes.push(index.name);
|
|
87
|
+
console.error(`❌ Failed to create index ${index.name}:`, error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (successCount === indexes.length) {
|
|
91
|
+
console.log(`✅ Applied ${successCount} performance indexes (target: <100ms query time)`);
|
|
92
|
+
} else {
|
|
93
|
+
console.warn(`⚠️ Applied ${successCount}/${indexes.length} indexes. Failed: ${failedIndexes.join(', ')}`);
|
|
94
|
+
}
|
|
22
95
|
}
|
|
23
96
|
async reflect(context, options = {}) {
|
|
24
97
|
const reflection = {
|
|
@@ -29,6 +102,32 @@ export class ACEReflector {
|
|
|
29
102
|
insights: this.generateInsights(context)
|
|
30
103
|
};
|
|
31
104
|
await this.memorySystem.store(`reflection:${reflection.id}`, reflection, AccessLevel.SYSTEM);
|
|
105
|
+
// Insert reflection data into SQL table (production schema)
|
|
106
|
+
await this.memorySystem['db']?.run(`INSERT INTO context_reflections (
|
|
107
|
+
id, reflection_type, task_id, swarm_id, execution_trace,
|
|
108
|
+
feedback_signals, extracted_lessons, metadata, confidence
|
|
109
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
110
|
+
reflection.id,
|
|
111
|
+
'strategy',
|
|
112
|
+
reflection.context.task_id || 'unknown',
|
|
113
|
+
reflection.context.swarm_id || 'default',
|
|
114
|
+
JSON.stringify({
|
|
115
|
+
timestamp: reflection.timestamp,
|
|
116
|
+
complexity: reflection.complexity
|
|
117
|
+
}),
|
|
118
|
+
JSON.stringify({
|
|
119
|
+
insights: reflection.insights
|
|
120
|
+
}),
|
|
121
|
+
JSON.stringify({
|
|
122
|
+
strategies: reflection.insights,
|
|
123
|
+
antiPatterns: [],
|
|
124
|
+
edgeCases: []
|
|
125
|
+
}),
|
|
126
|
+
JSON.stringify({
|
|
127
|
+
complexity: reflection.complexity
|
|
128
|
+
}),
|
|
129
|
+
reflection.complexity // Use complexity as confidence proxy
|
|
130
|
+
]);
|
|
32
131
|
return reflection;
|
|
33
132
|
}
|
|
34
133
|
calculateComplexity(context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ace/ace-reflector.ts"],"sourcesContent":["import { SQLiteMemorySystem } from '../memory/sqlite-memory-system.js';\r\nimport { MemoryAdapter, AccessLevel } from '../memory/memory-adapter.js';\r\n\r\nexport interface CognitiveReflection {\r\n id: string;\r\n timestamp: number;\r\n complexity: number;\r\n context: Record<string, any>;\r\n insights: string[];\r\n}\r\n\r\nexport class ACEReflector {\r\n private memorySystem: SQLiteMemorySystem;\r\n private memoryAdapter: MemoryAdapter;\r\n\r\n constructor(\r\n memoryPath: string = './ace-reflections.sqlite'\r\n ) {\r\n this.memorySystem = new SQLiteMemorySystem(memoryPath);\r\n this.memoryAdapter = new MemoryAdapter(AccessLevel.SYSTEM);\r\n }\r\n\r\n async initialize(): Promise<void> {\r\n await this.memorySystem.initialize();\r\n\r\n // Create specialized reflection tables\r\n await this.memorySystem['db']?.exec(`\r\n CREATE TABLE IF NOT EXISTS cognitive_reflections (\r\n id TEXT PRIMARY KEY,\r\n timestamp INTEGER,\r\n complexity REAL,\r\n context BLOB,\r\n insights TEXT\r\n )\r\n `);\r\n }\r\n\r\n async reflect(\r\n context: Record<string, any>,\r\n options: {\r\n complexity?: number\r\n } = {}\r\n ): Promise<CognitiveReflection> {\r\n const reflection: CognitiveReflection = {\r\n id: `ref-${Date.now()}`,\r\n timestamp: Date.now(),\r\n complexity: options.complexity ?? this.calculateComplexity(context),\r\n context,\r\n insights: this.generateInsights(context)\r\n };\r\n\r\n await this.memorySystem.store(\r\n `reflection:${reflection.id}`,\r\n reflection,\r\n AccessLevel.SYSTEM\r\n );\r\n\r\n return reflection;\r\n }\r\n\r\n private calculateComplexity(\r\n context: Record<string, any>\r\n ): number {\r\n // Advanced complexity calculation\r\n const keyCount = Object.keys(context).length;\r\n const contentLength = JSON.stringify(context).length;\r\n\r\n return Math.log(keyCount * contentLength) / Math.log(10);\r\n }\r\n\r\n private generateInsights(\r\n context: Record<string, any>\r\n ): string[] {\r\n // Meta-cognitive analysis\r\n const insights: string[] = [];\r\n\r\n if (context.task && context.constraints) {\r\n insights.push(`Task complexity requires careful constraint management`);\r\n }\r\n\r\n if (context.previousResults) {\r\n insights.push(`Learning from past iterations`);\r\n }\r\n\r\n return insights;\r\n }\r\n\r\n async retrieveReflection(\r\n reflectionId: string\r\n ): Promise<CognitiveReflection | null> {\r\n return await this.memorySystem.retrieve(\r\n `reflection:${reflectionId}`,\r\n AccessLevel.SYSTEM\r\n );\r\n }\r\n}\r\n\r\nexport default ACEReflector;"],"names":["SQLiteMemorySystem","MemoryAdapter","AccessLevel","ACEReflector","memorySystem","memoryAdapter","memoryPath","SYSTEM","initialize","exec","reflect","context","options","reflection","id","Date","now","timestamp","complexity","calculateComplexity","insights","generateInsights","store","keyCount","Object","keys","length","contentLength","JSON","stringify","Math","log","task","constraints","push","previousResults","retrieveReflection","reflectionId","retrieve"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,oCAAoC;AACvE,SAASC,aAAa,EAAEC,WAAW,QAAQ,8BAA8B;AAUzE,OAAO,MAAMC;IACHC,aAAiC;IACjCC,cAA6B;IAErC,YACEC,aAAqB,0BAA0B,CAC/C;QACA,IAAI,CAACF,YAAY,GAAG,IAAIJ,mBAAmBM;QAC3C,IAAI,CAACD,aAAa,GAAG,IAAIJ,cAAcC,YAAYK,MAAM;IAC3D;IAEA,MAAMC,aAA4B;QAChC,MAAM,IAAI,CAACJ,YAAY,CAACI,UAAU;QAElC,uCAAuC;QACvC,MAAM,IAAI,CAACJ,YAAY,CAAC,KAAK,EAAEK,KAAK,CAAC;;;;;;;;IAQrC,CAAC;IACH;IAEA,MAAMC,QACJC,OAA4B,EAC5BC,UAEI,CAAC,CAAC,EACwB;QAC9B,MAAMC,aAAkC;YACtCC,IAAI,CAAC,IAAI,EAAEC,KAAKC,GAAG,IAAI;YACvBC,WAAWF,KAAKC,GAAG;YACnBE,YAAYN,QAAQM,UAAU,IAAI,IAAI,CAACC,mBAAmB,CAACR;YAC3DA;YACAS,UAAU,IAAI,CAACC,gBAAgB,CAACV;QAClC;QAEA,MAAM,IAAI,CAACP,YAAY,CAACkB,KAAK,CAC3B,CAAC,WAAW,EAAET,WAAWC,EAAE,EAAE,EAC7BD,YACAX,YAAYK,MAAM;QAGpB,OAAOM;IACT;IAEQM,oBACNR,OAA4B,EACpB;QACR,kCAAkC;QAClC,MAAMY,WAAWC,OAAOC,IAAI,CAACd,SAASe,MAAM;QAC5C,MAAMC,gBAAgBC,KAAKC,SAAS,CAAClB,SAASe,MAAM;QAEpD,OAAOI,KAAKC,GAAG,CAACR,WAAWI,iBAAiBG,KAAKC,GAAG,CAAC;IACvD;IAEQV,iBACNV,OAA4B,EAClB;QACV,0BAA0B;QAC1B,MAAMS,WAAqB,EAAE;QAE7B,IAAIT,QAAQqB,IAAI,IAAIrB,QAAQsB,WAAW,EAAE;YACvCb,SAASc,IAAI,CAAC,CAAC,sDAAsD,CAAC;QACxE;QAEA,IAAIvB,QAAQwB,eAAe,EAAE;YAC3Bf,SAASc,IAAI,CAAC,CAAC,6BAA6B,CAAC;QAC/C;QAEA,OAAOd;IACT;IAEA,MAAMgB,mBACJC,YAAoB,EACiB;QACrC,OAAO,MAAM,IAAI,CAACjC,YAAY,CAACkC,QAAQ,CACrC,CAAC,WAAW,EAAED,cAAc,EAC5BnC,YAAYK,MAAM;IAEtB;AACF;AAEA,eAAeJ,aAAa"}
|
|
1
|
+
{"version":3,"sources":["../../src/ace/ace-reflector.ts"],"sourcesContent":["import { SQLiteMemorySystem } from '../memory/sqlite-memory-system.js';\r\nimport { MemoryAdapter, AccessLevel } from '../memory/memory-adapter.js';\r\n\r\nexport interface CognitiveReflection {\r\n id: string;\r\n timestamp: number;\r\n complexity: number;\r\n context: Record<string, any>;\r\n insights: string[];\r\n}\r\n\r\nexport class ACEReflector {\r\n private memorySystem: SQLiteMemorySystem;\r\n private memoryAdapter: MemoryAdapter;\r\n\r\n constructor(\r\n memoryPath: string = './ace-reflections.sqlite'\r\n ) {\r\n this.memorySystem = new SQLiteMemorySystem(memoryPath);\r\n this.memoryAdapter = new MemoryAdapter(AccessLevel.SYSTEM);\r\n }\r\n\r\n async initialize(): Promise<void> {\r\n await this.memorySystem.initialize();\r\n\r\n // Note: Production schema is managed by .claude/skills/cfn-ace-system/schema/001-create-context-reflections.sql\r\n // This initialization ensures compatibility with the production schema\r\n\r\n // Apply performance indexes from init-indexes.sql\r\n await this.applyPerformanceIndexes();\r\n }\r\n\r\n /**\r\n * Apply performance indexes for context reflection queries\r\n * Based on .claude/skills/cfn-ace-system/init-indexes.sql\r\n * Target: < 100ms query time with 1000+ reflections\r\n */\r\n private async applyPerformanceIndexes(): Promise<void> {\r\n const db = this.memorySystem['db'];\r\n if (!db) {\r\n console.warn('⚠️ Database not initialized, skipping index creation');\r\n return;\r\n }\r\n\r\n // Check if context_reflections table exists\r\n const tableExists = await db.get<{ count: number }>(\r\n \"SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name='context_reflections'\"\r\n );\r\n\r\n if (!tableExists || tableExists.count === 0) {\r\n console.warn('⚠️ context_reflections table not found. Run schema migration first.');\r\n console.warn(' Use: .claude/skills/cfn-ace-system/schema/run-migration.sh');\r\n return;\r\n }\r\n\r\n const indexes = [\r\n // JSON Tag Extraction Index (most common query pattern)\r\n {\r\n name: 'idx_reflections_tags',\r\n sql: `CREATE INDEX IF NOT EXISTS idx_reflections_tags\r\n ON context_reflections(json_extract(metadata, '$.tags'))`\r\n },\r\n // Domain Classification Index\r\n {\r\n name: 'idx_reflections_domain',\r\n sql: `CREATE INDEX IF NOT EXISTS idx_reflections_domain\r\n ON context_reflections(json_extract(metadata, '$.domain'))`\r\n },\r\n // Confidence Score Index (DESC for high-to-low sorting)\r\n {\r\n name: 'idx_reflections_confidence',\r\n sql: `CREATE INDEX IF NOT EXISTS idx_reflections_confidence\r\n ON context_reflections(confidence DESC)`\r\n },\r\n // Recency Index (DESC for chronological sorting)\r\n {\r\n name: 'idx_reflections_created_at',\r\n sql: `CREATE INDEX IF NOT EXISTS idx_reflections_created_at\r\n ON context_reflections(created_at DESC)`\r\n },\r\n // Composite Index: Domain + Confidence + Recency\r\n {\r\n name: 'idx_reflections_domain_conf_date',\r\n sql: `CREATE INDEX IF NOT EXISTS idx_reflections_domain_conf_date\r\n ON context_reflections(\r\n json_extract(metadata, '$.domain'),\r\n confidence,\r\n created_at DESC\r\n )`\r\n },\r\n // Composite Index: Confidence + Recency (covering index)\r\n {\r\n name: 'idx_reflections_conf_date',\r\n sql: `CREATE INDEX IF NOT EXISTS idx_reflections_conf_date\r\n ON context_reflections(\r\n confidence DESC,\r\n created_at DESC\r\n )`\r\n }\r\n ];\r\n\r\n let successCount = 0;\r\n const failedIndexes: string[] = [];\r\n\r\n for (const index of indexes) {\r\n try {\r\n await db.run(index.sql);\r\n successCount++;\r\n } catch (error) {\r\n failedIndexes.push(index.name);\r\n console.error(`❌ Failed to create index ${index.name}:`, error);\r\n }\r\n }\r\n\r\n if (successCount === indexes.length) {\r\n console.log(`✅ Applied ${successCount} performance indexes (target: <100ms query time)`);\r\n } else {\r\n console.warn(`⚠️ Applied ${successCount}/${indexes.length} indexes. Failed: ${failedIndexes.join(', ')}`);\r\n }\r\n }\r\n\r\n async reflect(\r\n context: Record<string, any>,\r\n options: {\r\n complexity?: number\r\n } = {}\r\n ): Promise<CognitiveReflection> {\r\n const reflection: CognitiveReflection = {\r\n id: `ref-${Date.now()}`,\r\n timestamp: Date.now(),\r\n complexity: options.complexity ?? this.calculateComplexity(context),\r\n context,\r\n insights: this.generateInsights(context)\r\n };\r\n\r\n await this.memorySystem.store(\r\n `reflection:${reflection.id}`,\r\n reflection,\r\n AccessLevel.SYSTEM\r\n );\r\n\r\n // Insert reflection data into SQL table (production schema)\r\n await this.memorySystem['db']?.run(\r\n `INSERT INTO context_reflections (\r\n id, reflection_type, task_id, swarm_id, execution_trace,\r\n feedback_signals, extracted_lessons, metadata, confidence\r\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,\r\n [\r\n reflection.id,\r\n 'strategy', // Default reflection type\r\n reflection.context.task_id || 'unknown',\r\n reflection.context.swarm_id || 'default',\r\n JSON.stringify({ timestamp: reflection.timestamp, complexity: reflection.complexity }),\r\n JSON.stringify({ insights: reflection.insights }),\r\n JSON.stringify({ strategies: reflection.insights, antiPatterns: [], edgeCases: [] }),\r\n JSON.stringify({ complexity: reflection.complexity }),\r\n reflection.complexity // Use complexity as confidence proxy\r\n ]\r\n );\r\n\r\n return reflection;\r\n }\r\n\r\n private calculateComplexity(\r\n context: Record<string, any>\r\n ): number {\r\n // Advanced complexity calculation\r\n const keyCount = Object.keys(context).length;\r\n const contentLength = JSON.stringify(context).length;\r\n\r\n return Math.log(keyCount * contentLength) / Math.log(10);\r\n }\r\n\r\n private generateInsights(\r\n context: Record<string, any>\r\n ): string[] {\r\n // Meta-cognitive analysis\r\n const insights: string[] = [];\r\n\r\n if (context.task && context.constraints) {\r\n insights.push(`Task complexity requires careful constraint management`);\r\n }\r\n\r\n if (context.previousResults) {\r\n insights.push(`Learning from past iterations`);\r\n }\r\n\r\n return insights;\r\n }\r\n\r\n async retrieveReflection(\r\n reflectionId: string\r\n ): Promise<CognitiveReflection | null> {\r\n return await this.memorySystem.retrieve(\r\n `reflection:${reflectionId}`,\r\n AccessLevel.SYSTEM\r\n );\r\n }\r\n}\r\n\r\nexport default ACEReflector;"],"names":["SQLiteMemorySystem","MemoryAdapter","AccessLevel","ACEReflector","memorySystem","memoryAdapter","memoryPath","SYSTEM","initialize","applyPerformanceIndexes","db","console","warn","tableExists","get","count","indexes","name","sql","successCount","failedIndexes","index","run","error","push","length","log","join","reflect","context","options","reflection","id","Date","now","timestamp","complexity","calculateComplexity","insights","generateInsights","store","task_id","swarm_id","JSON","stringify","strategies","antiPatterns","edgeCases","keyCount","Object","keys","contentLength","Math","task","constraints","previousResults","retrieveReflection","reflectionId","retrieve"],"mappings":"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"}
|
|
@@ -1,12 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Dynamic Agent Loader - Reads agent definitions from .claude/agents/ directory
|
|
3
4
|
* Single source of truth for agent types in the system
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
*/ var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) {
|
|
6
|
+
function adopt(value) {
|
|
7
|
+
return value instanceof P ? value : new P(function(resolve) {
|
|
8
|
+
resolve(value);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
return new (P || (P = Promise))(function(resolve, reject) {
|
|
12
|
+
function fulfilled(value) {
|
|
13
|
+
try {
|
|
14
|
+
step(generator.next(value));
|
|
15
|
+
} catch (e) {
|
|
16
|
+
reject(e);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function rejected(value) {
|
|
20
|
+
try {
|
|
21
|
+
step(generator["throw"](value));
|
|
22
|
+
} catch (e) {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function step(result) {
|
|
27
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
28
|
+
}
|
|
29
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
var __generator = this && this.__generator || function(thisArg, body) {
|
|
33
|
+
var _ = {
|
|
34
|
+
label: 0,
|
|
35
|
+
sent: function() {
|
|
36
|
+
if (t[0] & 1) throw t[1];
|
|
37
|
+
return t[1];
|
|
38
|
+
},
|
|
39
|
+
trys: [],
|
|
40
|
+
ops: []
|
|
41
|
+
}, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
42
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
43
|
+
return this;
|
|
44
|
+
}), g;
|
|
45
|
+
function verb(n) {
|
|
46
|
+
return function(v) {
|
|
47
|
+
return step([
|
|
48
|
+
n,
|
|
49
|
+
v
|
|
50
|
+
]);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function step(op) {
|
|
54
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
55
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
56
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
57
|
+
if (y = 0, t) op = [
|
|
58
|
+
op[0] & 2,
|
|
59
|
+
t.value
|
|
60
|
+
];
|
|
61
|
+
switch(op[0]){
|
|
62
|
+
case 0:
|
|
63
|
+
case 1:
|
|
64
|
+
t = op;
|
|
65
|
+
break;
|
|
66
|
+
case 4:
|
|
67
|
+
_.label++;
|
|
68
|
+
return {
|
|
69
|
+
value: op[1],
|
|
70
|
+
done: false
|
|
71
|
+
};
|
|
72
|
+
case 5:
|
|
73
|
+
_.label++;
|
|
74
|
+
y = op[1];
|
|
75
|
+
op = [
|
|
76
|
+
0
|
|
77
|
+
];
|
|
78
|
+
continue;
|
|
79
|
+
case 7:
|
|
80
|
+
op = _.ops.pop();
|
|
81
|
+
_.trys.pop();
|
|
82
|
+
continue;
|
|
83
|
+
default:
|
|
84
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
85
|
+
_ = 0;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
89
|
+
_.label = op[1];
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
93
|
+
_.label = t[1];
|
|
94
|
+
t = op;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
if (t && _.label < t[2]) {
|
|
98
|
+
_.label = t[2];
|
|
99
|
+
_.ops.push(op);
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
if (t[2]) _.ops.pop();
|
|
103
|
+
_.trys.pop();
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
op = body.call(thisArg, _);
|
|
107
|
+
} catch (e) {
|
|
108
|
+
op = [
|
|
109
|
+
6,
|
|
110
|
+
e
|
|
111
|
+
];
|
|
112
|
+
y = 0;
|
|
113
|
+
} finally{
|
|
114
|
+
f = t = 0;
|
|
115
|
+
}
|
|
116
|
+
if (op[0] & 5) throw op[1];
|
|
117
|
+
return {
|
|
118
|
+
value: op[0] ? op[1] : void 0,
|
|
119
|
+
done: true
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var __spreadArray = this && this.__spreadArray || function(to, from, pack) {
|
|
124
|
+
if (pack || arguments.length === 2) for(var i = 0, l = from.length, ar; i < l; i++){
|
|
125
|
+
if (ar || !(i in from)) {
|
|
126
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
127
|
+
ar[i] = from[i];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
131
|
+
};
|
|
132
|
+
Object.defineProperty(exports, "__esModule", {
|
|
133
|
+
value: true
|
|
134
|
+
});
|
|
135
|
+
exports.refreshAgents = exports.getAgentsByCategory = exports.isValidAgentType = exports.searchAgents = exports.getAgentCategories = exports.getAllAgents = exports.getAgent = exports.getAvailableAgentTypes = exports.agentLoader = exports.AgentLoader = void 0;
|
|
136
|
+
exports.resolveLegacyAgentType = resolveLegacyAgentType;
|
|
137
|
+
var node_fs_1 = require("node:fs");
|
|
138
|
+
var glob_1 = require("glob");
|
|
139
|
+
var node_path_1 = require("node:path");
|
|
140
|
+
var yaml_1 = require("yaml");
|
|
8
141
|
// Legacy agent type mapping for backward compatibility
|
|
9
|
-
|
|
142
|
+
var LEGACY_AGENT_MAPPING = {
|
|
10
143
|
analyst: 'code-analyzer',
|
|
11
144
|
coordinator: 'hierarchical-coordinator',
|
|
12
145
|
optimizer: 'perf-analyzer',
|
|
@@ -17,38 +150,40 @@ const LEGACY_AGENT_MAPPING = {
|
|
|
17
150
|
};
|
|
18
151
|
/**
|
|
19
152
|
* Resolve legacy agent types to current equivalents
|
|
20
|
-
*/
|
|
153
|
+
*/ function resolveLegacyAgentType(legacyType) {
|
|
21
154
|
return LEGACY_AGENT_MAPPING[legacyType] || legacyType;
|
|
22
155
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
156
|
+
var AgentLoader = /** @class */ function() {
|
|
157
|
+
function AgentLoader() {
|
|
158
|
+
this.agentCache = new Map();
|
|
159
|
+
this.categoriesCache = [];
|
|
160
|
+
this.lastLoadTime = 0;
|
|
161
|
+
this.CACHE_EXPIRY = 60000; // 1 minute cache
|
|
162
|
+
}
|
|
163
|
+
AgentLoader.prototype.getAgentsDirectory = function() {
|
|
164
|
+
var currentDir = process.cwd();
|
|
30
165
|
while(currentDir !== '/'){
|
|
31
|
-
|
|
32
|
-
if (existsSync(claudeAgentsPath)) {
|
|
166
|
+
var claudeAgentsPath = (0, node_path_1.resolve)(currentDir, '.claude', 'agents');
|
|
167
|
+
if ((0, node_fs_1.existsSync)(claudeAgentsPath)) {
|
|
33
168
|
return claudeAgentsPath;
|
|
34
169
|
}
|
|
35
|
-
currentDir = dirname(currentDir);
|
|
170
|
+
currentDir = (0, node_path_1.dirname)(currentDir);
|
|
36
171
|
}
|
|
37
|
-
return resolve(process.cwd(), '.claude', 'agents');
|
|
38
|
-
}
|
|
39
|
-
parseAgentFile(filePath) {
|
|
172
|
+
return (0, node_path_1.resolve)(process.cwd(), '.claude', 'agents');
|
|
173
|
+
};
|
|
174
|
+
AgentLoader.prototype.parseAgentFile = function(filePath) {
|
|
40
175
|
try {
|
|
41
|
-
|
|
42
|
-
|
|
176
|
+
var content = (0, node_fs_1.readFileSync)(filePath, 'utf-8');
|
|
177
|
+
var frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)$/);
|
|
43
178
|
if (!frontmatterMatch) {
|
|
44
|
-
console.warn(
|
|
179
|
+
console.warn("No frontmatter found in ".concat(filePath));
|
|
45
180
|
return null;
|
|
46
181
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
182
|
+
var yamlContent = frontmatterMatch[1], markdownContent = frontmatterMatch[2];
|
|
183
|
+
var frontmatter = (0, yaml_1.parse)(yamlContent);
|
|
184
|
+
var description = frontmatter.description;
|
|
50
185
|
if (!frontmatter.name || !description) {
|
|
51
|
-
console.warn(
|
|
186
|
+
console.warn("Missing required fields (name, description) in ".concat(filePath));
|
|
52
187
|
return null;
|
|
53
188
|
}
|
|
54
189
|
return {
|
|
@@ -69,129 +204,13 @@ export class AgentLoader {
|
|
|
69
204
|
content: markdownContent.trim()
|
|
70
205
|
};
|
|
71
206
|
} catch (error) {
|
|
72
|
-
console.error(
|
|
207
|
+
console.error("Error parsing agent file ".concat(filePath, ":"), error);
|
|
73
208
|
return null;
|
|
74
209
|
}
|
|
75
|
-
}
|
|
76
|
-
parseTools(frontmatter) {
|
|
77
|
-
|
|
210
|
+
};
|
|
211
|
+
AgentLoader.prototype.parseTools = function(frontmatter) {
|
|
212
|
+
var extractTools = function(input) {
|
|
78
213
|
if (Array.isArray(input)) return input.map(String);
|
|
79
|
-
if (typeof input === 'string') {
|
|
80
|
-
return input.split(/[,\s]+/).map((t)=>t.trim()).filter((t)=>t.length > 0);
|
|
81
|
-
}
|
|
82
|
-
return [];
|
|
83
|
-
};
|
|
84
|
-
// Safely handle tools and capabilities.tools
|
|
85
|
-
const toolsFromFrontmatter = frontmatter.tools ? extractTools(frontmatter.tools) : [];
|
|
86
|
-
const toolsFromCapabilities = frontmatter.capabilities && typeof frontmatter.capabilities === 'object' ? extractTools(Object(frontmatter.capabilities).tools) : [];
|
|
87
|
-
return [
|
|
88
|
-
...toolsFromFrontmatter,
|
|
89
|
-
...toolsFromCapabilities
|
|
90
|
-
];
|
|
91
|
-
}
|
|
92
|
-
async loadAgents() {
|
|
93
|
-
const agentsDir = this.getAgentsDirectory();
|
|
94
|
-
if (!existsSync(agentsDir)) {
|
|
95
|
-
console.warn(`Agents directory not found: ${agentsDir}`);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
const agentFiles = await new Promise((resolve, reject)=>{
|
|
99
|
-
glob('**/*.md', {
|
|
100
|
-
cwd: agentsDir,
|
|
101
|
-
ignore: [
|
|
102
|
-
'**/README.md',
|
|
103
|
-
'**/MIGRATION_SUMMARY.md'
|
|
104
|
-
],
|
|
105
|
-
absolute: true
|
|
106
|
-
}, (err, matches)=>{
|
|
107
|
-
if (err) reject(err);
|
|
108
|
-
else resolve(matches);
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
this.agentCache.clear();
|
|
112
|
-
this.categoriesCache = [];
|
|
113
|
-
const categoryMap = new Map();
|
|
114
|
-
for (const filePath of agentFiles){
|
|
115
|
-
const agent = this.parseAgentFile(filePath);
|
|
116
|
-
if (agent) {
|
|
117
|
-
this.agentCache.set(agent.name, agent);
|
|
118
|
-
const relativePath = filePath.replace(agentsDir, '');
|
|
119
|
-
const pathParts = relativePath.split('/');
|
|
120
|
-
const category = pathParts[1] || 'uncategorized';
|
|
121
|
-
if (!categoryMap.has(category)) {
|
|
122
|
-
categoryMap.set(category, []);
|
|
123
|
-
}
|
|
124
|
-
categoryMap.get(category).push(agent);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
this.categoriesCache = Array.from(categoryMap.entries()).map(([name, agents])=>({
|
|
128
|
-
name,
|
|
129
|
-
agents: agents.sort((a, b)=>a.name.localeCompare(b.name))
|
|
130
|
-
}));
|
|
131
|
-
this.lastLoadTime = Date.now();
|
|
132
|
-
}
|
|
133
|
-
// Rest of the methods remain similar to the original implementation
|
|
134
|
-
needsRefresh() {
|
|
135
|
-
return Date.now() - this.lastLoadTime > this.CACHE_EXPIRY;
|
|
136
|
-
}
|
|
137
|
-
async ensureLoaded() {
|
|
138
|
-
if (this.agentCache.size === 0 || this.needsRefresh()) {
|
|
139
|
-
await this.loadAgents();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
async getAvailableAgentTypes() {
|
|
143
|
-
await this.ensureLoaded();
|
|
144
|
-
const currentTypes = Array.from(this.agentCache.keys());
|
|
145
|
-
const legacyTypes = Object.keys(LEGACY_AGENT_MAPPING);
|
|
146
|
-
return Array.from(new Set([
|
|
147
|
-
...currentTypes,
|
|
148
|
-
...legacyTypes
|
|
149
|
-
])).sort();
|
|
150
|
-
}
|
|
151
|
-
async getAgent(name) {
|
|
152
|
-
await this.ensureLoaded();
|
|
153
|
-
return this.agentCache.get(name) || this.agentCache.get(resolveLegacyAgentType(name)) || null;
|
|
154
|
-
}
|
|
155
|
-
async getAllAgents() {
|
|
156
|
-
await this.ensureLoaded();
|
|
157
|
-
return Array.from(this.agentCache.values()).sort((a, b)=>a.name.localeCompare(b.name));
|
|
158
|
-
}
|
|
159
|
-
async getAgentCategories() {
|
|
160
|
-
await this.ensureLoaded();
|
|
161
|
-
return this.categoriesCache;
|
|
162
|
-
}
|
|
163
|
-
async searchAgents(query) {
|
|
164
|
-
await this.ensureLoaded();
|
|
165
|
-
const lowerQuery = query.toLowerCase();
|
|
166
|
-
return Array.from(this.agentCache.values()).filter((agent)=>agent.name.toLowerCase().includes(lowerQuery) || agent.description.toLowerCase().includes(lowerQuery) || agent.capabilities?.some((cap)=>cap.toLowerCase().includes(lowerQuery)));
|
|
167
|
-
}
|
|
168
|
-
async isValidAgentType(name) {
|
|
169
|
-
await this.ensureLoaded();
|
|
170
|
-
return this.agentCache.has(name) || this.agentCache.has(resolveLegacyAgentType(name));
|
|
171
|
-
}
|
|
172
|
-
async getAgentsByCategory(category) {
|
|
173
|
-
const categories = await this.getAgentCategories();
|
|
174
|
-
const found = categories.find((cat)=>cat.name === category);
|
|
175
|
-
return found?.agents || [];
|
|
176
|
-
}
|
|
177
|
-
async refresh() {
|
|
178
|
-
this.lastLoadTime = 0;
|
|
179
|
-
await this.loadAgents();
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
// Singleton instance
|
|
183
|
-
export const agentLoader = new AgentLoader();
|
|
184
|
-
// Convenience exports for use in other modules
|
|
185
|
-
export const getAvailableAgentTypes = ()=>agentLoader.getAvailableAgentTypes();
|
|
186
|
-
export const getAgent = (name)=>agentLoader.getAgent(name);
|
|
187
|
-
export const getAllAgents = ()=>agentLoader.getAllAgents();
|
|
188
|
-
export const getAgentCategories = ()=>agentLoader.getAgentCategories();
|
|
189
|
-
export const searchAgents = (query)=>agentLoader.searchAgents(query);
|
|
190
|
-
export const isValidAgentType = (name)=>agentLoader.isValidAgentType(name);
|
|
191
|
-
export const getAgentsByCategory = (category)=>agentLoader.getAgentsByCategory(category);
|
|
192
|
-
export const refreshAgents = ()=>agentLoader.refresh();
|
|
193
|
-
|
|
194
|
-
//# sourceMappingURL=agent-loader.js.map.isArray(input)) return input.map(String);
|
|
195
214
|
if (typeof input === 'string') {
|
|
196
215
|
return input.split(/[,\s]+/).map(function(t) {
|
|
197
216
|
return t.trim();
|