claude-flow-novice 2.18.12 → 2.18.14
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/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
- package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/original +3 -0
- package/.backups/unknown/1765417503_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
- package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
- package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/original +3 -0
- package/.backups/unknown/1765417531_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
- package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/metadata.json +8 -0
- package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/original +3 -0
- package/.backups/unknown/1765417552_2999b9ec66f591dd76075617ec31fcea/revert.sh +7 -0
- package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/metadata.json +8 -0
- package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/original +1212 -0
- package/.backups/unknown/1765417613_1f34dbf0fe1ec3b6cb74ba7c4e12a2a4/revert.sh +7 -0
- package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/metadata.json +8 -0
- package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/original +1212 -0
- package/.backups/unknown/1765417613_332e9bb223a26270398922640c1c1653/revert.sh +7 -0
- package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/metadata.json +8 -0
- package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/original +1212 -0
- package/.backups/unknown/1765417613_45880a7afef063347b701e7e88e2df9c/revert.sh +7 -0
- package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/metadata.json +8 -0
- package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/original +1228 -0
- package/.backups/unknown/1765417614_1b6c3b658c2891dbe245aea4bad41661/revert.sh +7 -0
- package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/metadata.json +8 -0
- package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/original +1237 -0
- package/.backups/unknown/1765417614_1ed5bd129f0b5d1b297a04ec5267ef62/revert.sh +7 -0
- package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/metadata.json +8 -0
- package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/original +1240 -0
- package/.backups/unknown/1765417614_28e032bd1b62dbfcecbd56327a0b0e23/revert.sh +7 -0
- package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/metadata.json +8 -0
- package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/original +1216 -0
- package/.backups/unknown/1765417614_40a1ce1b0efa2e1ba1958c27b2cbc557/revert.sh +7 -0
- package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/metadata.json +8 -0
- package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/original +1238 -0
- package/.backups/unknown/1765417614_f65dbf58cff7a9aa1c5c3d0d1618074a/revert.sh +7 -0
- package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/metadata.json +8 -0
- package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/original +1167 -0
- package/.backups/unknown/1765417615_0f45c28b9b8d5204974421c06075ff74/revert.sh +7 -0
- package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/metadata.json +8 -0
- package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/original +1242 -0
- package/.backups/unknown/1765417615_41d36156891ddb6f63d1b4da59d1db4c/revert.sh +7 -0
- package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/metadata.json +8 -0
- package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/original +2 -0
- package/.backups/unknown/1765417709_77dda8631459cfc2ab94b8928f7d90b4/revert.sh +7 -0
- package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/metadata.json +8 -0
- package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/original +1169 -0
- package/.backups/unknown/1765417775_1405837bacf112ba832a139840fe94e7/revert.sh +7 -0
- package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/metadata.json +8 -0
- package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/original +1171 -0
- package/.backups/unknown/1765417775_8044b4a5cfdcb5cd71317831ad53f5a2/revert.sh +7 -0
- package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/metadata.json +8 -0
- package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/original +1170 -0
- package/.backups/unknown/1765417775_8eb94d60151e1db262377fbf8a187212/revert.sh +7 -0
- package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/metadata.json +8 -0
- package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/original +1173 -0
- package/.backups/unknown/1765417776_a0d4b709e15e0bfa002c4b128f5e4603/revert.sh +7 -0
- package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/metadata.json +8 -0
- package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/original +1170 -0
- package/.backups/unknown/1765417776_cb1bc24d98b63564eb73ef782b8c68b3/revert.sh +7 -0
- package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/metadata.json +8 -0
- package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/original +1172 -0
- package/.backups/unknown/1765417777_1c4cc8c33f476f0c87c8efd4e34efc22/revert.sh +7 -0
- package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/metadata.json +8 -0
- package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/original +1175 -0
- package/.backups/unknown/1765417777_325de83ffd34544909b8b9aa6e18dd05/revert.sh +7 -0
- package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/metadata.json +8 -0
- package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/original +1178 -0
- package/.backups/unknown/1765417950_402e7c1a8956b56ac7b88e89f024acb4/revert.sh +7 -0
- package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/metadata.json +8 -0
- package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/original +1174 -0
- package/.backups/unknown/1765417950_647e27e4da18ae42c339e04b4d334feb/revert.sh +7 -0
- package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/metadata.json +8 -0
- package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/original +1194 -0
- package/.backups/unknown/1765417951_1424d2dd67b8c8a4e7cf649b379d21f2/revert.sh +7 -0
- package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/metadata.json +8 -0
- package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/original +1186 -0
- package/.backups/unknown/1765417951_6df070ca287ea94a7f08efc69ec9ea51/revert.sh +7 -0
- package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/metadata.json +8 -0
- package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/original +1180 -0
- package/.backups/unknown/1765417951_848919a1365f6536e5ef8d85d0c80fa7/revert.sh +7 -0
- package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/metadata.json +8 -0
- package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/original +1198 -0
- package/.backups/unknown/1765417951_b0d1d4ecf85ad10cda0f3900d414b608/revert.sh +7 -0
- package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/metadata.json +8 -0
- package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/original +1202 -0
- package/.backups/unknown/1765417952_2b720e213b5197cbaad53f9f0857f23f/revert.sh +7 -0
- package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/metadata.json +8 -0
- package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/original +1202 -0
- package/.backups/unknown/1765417952_ef1d15e8b83a802a0c0f0fc03e56a89c/revert.sh +7 -0
- package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/metadata.json +8 -0
- package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/original +1209 -0
- package/.backups/unknown/1765418048_ac94238a69a6f86a6ba9d31f623c18a7/revert.sh +7 -0
- package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/metadata.json +8 -0
- package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/original +1207 -0
- package/.backups/unknown/1765418048_f3afed98da63fef9ff57fb5646976f63/revert.sh +7 -0
- package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/metadata.json +8 -0
- package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/original +1207 -0
- package/.backups/unknown/1765418049_9c392702a4e1cace37d17f6f2dfaf54e/revert.sh +7 -0
- package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/metadata.json +8 -0
- package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/original +1193 -0
- package/.backups/unknown/1765418049_9e0777555b51dea4d24d0503b584cfc5/revert.sh +7 -0
- package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/metadata.json +8 -0
- package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/original +1194 -0
- package/.backups/unknown/1765418050_22d534bed68f9f5d883bee54e7cbc4d3/revert.sh +7 -0
- package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/metadata.json +8 -0
- package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/original +1193 -0
- package/.backups/unknown/1765418051_d9243722dc90dabc851c5767a62ac7f2/revert.sh +7 -0
- package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/metadata.json +8 -0
- package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/original +1191 -0
- package/.backups/unknown/1765418177_21a2fa816d25d419b54ef2d429aab474/revert.sh +7 -0
- package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/metadata.json +8 -0
- package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/original +1190 -0
- package/.backups/unknown/1765418177_33b673dce1eb59d7eb4f752aec882794/revert.sh +7 -0
- package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/metadata.json +8 -0
- package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/original +1191 -0
- package/.backups/unknown/1765418177_72568812ea5a73cf6861a6b14da065fa/revert.sh +7 -0
- package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/metadata.json +8 -0
- package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/original +1189 -0
- package/.backups/unknown/1765418178_20c28b95f12194fe4b81cfb35f4f3757/revert.sh +7 -0
- package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/metadata.json +8 -0
- package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/original +1197 -0
- package/.backups/unknown/1765418178_cdf68719cc09173769027743e2718ad4/revert.sh +7 -0
- package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/metadata.json +8 -0
- package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/original +1190 -0
- package/.backups/unknown/1765418178_eb19e0f8542405480e51af09fad84b71/revert.sh +7 -0
- package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/metadata.json +8 -0
- package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/original +1197 -0
- package/.backups/unknown/1765418236_c016507725847318a3c369b047cbb802/revert.sh +7 -0
- package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/metadata.json +8 -0
- package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/original +1197 -0
- package/.backups/unknown/1765418237_932c3cc3a5c537b7933c2370b65f4b39/revert.sh +7 -0
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.md +194 -2
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.sh +264 -0
- package/.claude/agents/cfn-dev-team/utility/epic-creator-v2.sh.backup +698 -0
- package/.claude/agents/custom/claude-code-expert.md +56 -0
- package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/SKILL.md +1 -1
- package/.claude/hooks/README.md +148 -0
- package/.claude/hooks/SessionStart:cfn-load-openai-key.sh +35 -0
- package/.claude/hooks/cfn-invoke-pre-edit.sh +1 -1
- package/.claude/hooks/cfn-load-cerebras-env.sh +65 -0
- package/.claude/hooks/cfn-precompact-enhanced.sh +283 -0
- package/.claude/hooks/deprecated/README.md +27 -0
- package/.claude/settings.json +71 -6
- package/.claude/skills/cfn-agent-lifecycle/SKILL.md +1 -1
- package/.claude/skills/cfn-agent-tooling/SKILL.md +1 -1
- package/.claude/skills/cfn-cerebras-coordinator/QUICKSTART.md +348 -0
- package/.claude/skills/cfn-cerebras-coordinator/README.md +525 -0
- package/.claude/skills/cfn-cerebras-coordinator/TDD_COORDINATOR_OVERVIEW.md +284 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-py-v2-test-1733854200.json +36 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-py-v3-test-1765383241.json +36 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-rust-v2-test-1765381361.json +36 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-rust-v3-test-1765383242.json +46 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v2-test-1733864400.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v3-test-1765383238.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v4-test-1765386506.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/conversations/2025-12-10-ts-v5-test-1765393100.json +66 -0
- package/.claude/skills/cfn-cerebras-coordinator/example-usage.sh +206 -0
- package/.claude/skills/cfn-cerebras-coordinator/lib/tdd-conversation-coordinator.ts +569 -0
- package/.claude/skills/cfn-cerebras-coordinator/test-tdd-coordinator.sh +250 -0
- package/.claude/skills/cfn-compilation-error-fixer/SKILL.md +1 -1
- package/.claude/skills/cfn-compilation-error-fixer/lib/fixer/cerebras-gated-fixer-v2.ts +1 -1
- package/.claude/skills/cfn-config/SKILL.md +1 -1
- package/.claude/skills/cfn-dependency-management/SKILL.md +1 -1
- package/.claude/skills/cfn-deployment-lifecycle/SKILL.md +1 -1
- package/.claude/skills/cfn-edit-safety/SKILL.md +1 -1
- package/.claude/skills/cfn-epic-creator/SKILL.md +392 -0
- package/.claude/skills/cfn-epic-creator/estimate-costs.sh +524 -0
- package/.claude/skills/cfn-epic-creator/invoke.sh +445 -0
- package/.claude/skills/cfn-epic-creator/parse-personas.sh +533 -0
- package/.claude/skills/cfn-epic-creator/security-utils.sh +268 -0
- package/.claude/skills/cfn-epic-creator/security-verification-demo.sh +127 -0
- package/.claude/skills/cfn-epic-creator/test-invoke.sh +620 -0
- package/.claude/skills/cfn-epic-creator/test-security-fixes.sh +195 -0
- package/.claude/skills/cfn-epic-creator/test-security-simple.sh +165 -0
- package/.claude/skills/cfn-epic-creator/validate-epic.sh +474 -0
- package/.claude/skills/cfn-epic-parser/SKILL.md +8 -0
- package/.claude/skills/cfn-error-management/SKILL.md +1 -1
- package/.claude/skills/cfn-intervention-system/SKILL.md +1 -1
- package/.claude/skills/cfn-knowledge-base/SKILL.md +1 -1
- package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/metadata.json +8 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/original +209 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/.backups/unknown/1765358428_2cf0ad7377232c919ff0a65630cb307d/revert.sh +7 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/AGENT_INTEGRATION_PATTERNS.md +255 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml +8 -1
- package/.claude/skills/cfn-local-ruvector-accelerator/Cargo.toml.backup +47 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/EXTRACTION_EXAMPLES.md +287 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/README.md +2 -563
- package/.claude/skills/cfn-local-ruvector-accelerator/SCHEMA_V2_IMPLEMENTATION.md +151 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/SECURITY_IMPLEMENTATION.md +185 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/SKILL.md +8 -343
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/EXECUTIVE_SUMMARY.txt +90 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/PHASE_4_QUERY_API.md +210 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/RUST_AST_EXTRACTOR_IMPLEMENTATION.md +222 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/TRANSACTION_MANAGEMENT.md +241 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/docs/VALIDATION_FINDINGS.txt +250 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/epic-ast-indexer.json +335 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh +292 -96
- package/.claude/skills/cfn-local-ruvector-accelerator/index-code.sh.backup +249 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/index_all.sh +65 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/find.rs +214 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index.rs +275 -94
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index_ast.rs +767 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/index_modified.rs +37 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/init.rs +17 -12
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/migration.rs +34 -1
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/mod.rs +6 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/query.rs +2 -2
- package/.claude/skills/cfn-local-ruvector-accelerator/src/cli/refs.rs +209 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/embeddings.rs +82 -33
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/mod.rs +251 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/rust.rs +425 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/rust_placeholder.rs +420 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/text_fallback.rs +490 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/typescript.rs +520 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/extractors/typescript_full.rs +531 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/lib.rs +20 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs +33 -2
- package/.claude/skills/cfn-local-ruvector-accelerator/src/main.rs.backup +360 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration.rs +325 -318
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration_backup.rs +325 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/migration_tx.rs +513 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/paths.rs +29 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/query_api.rs +609 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/schema_v2.rs +603 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/search_engine.rs +150 -29
- package/.claude/skills/cfn-local-ruvector-accelerator/src/security_tests.rs +154 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/sqlite_store.rs +1 -1
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2.rs +583 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_backup.rs +560 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_fixed.rs +0 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/store_v2_tx.rs +397 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/test_schema.rs +228 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/src/transaction_tests.rs +410 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_ast_indexing.rs +59 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_query_api.sh +103 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_schema.sql +158 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/test_schema_v2.sql +147 -0
- package/.claude/skills/cfn-loop-orchestration-v2/SKILL.md +1 -1
- package/.claude/skills/cfn-loop-orchestration-v2/lib/decision/SKILL.md +8 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/orchestrator/SKILL.md +1 -1
- package/.claude/skills/cfn-loop-orchestration-v2/lib/output/SKILL.md +8 -0
- package/.claude/skills/cfn-loop-orchestration-v2/lib/validation/SKILL.md +11 -2
- package/.claude/skills/cfn-mdap-context-injection/SKILL.md +31 -10
- package/.claude/skills/cfn-mdap-error-fixer/skill.md +15 -205
- package/.claude/skills/cfn-memory-persistence/lib/auto/SKILL.md +7 -0
- package/.claude/skills/cfn-memory-persistence/lib/management/SKILL.md +7 -0
- package/.claude/skills/cfn-parameterized-queries/SKILL.md +8 -0
- package/.claude/skills/cfn-planning/SKILL.md +1 -1
- package/.claude/skills/cfn-session-handoff/SKILL.md +1 -53
- package/.claude/skills/cfn-skill-management/SKILL.md +1 -1
- package/.claude/skills/cfn-task-decomposition/SKILL.md +1 -0
- package/.claude/skills/cfn-task-intelligence/SKILL.md +39 -18
- package/.claude/skills/cfn-task-planning/SKILL.md +37 -12
- package/.claude/skills/cfn-transparency-middleware/SKILL.md +1 -1
- package/.claude/skills/cfn-utilities/SKILL.md +1 -1
- package/.claude/skills/cfn-validation-framework/SKILL.md +3 -60
- package/.claude/skills/cfn-vision-analysis/SKILL.md +3 -20
- package/.claude-flow/metrics/performance.json +3 -3
- package/.claude-flow/metrics/task-metrics.json +3 -3
- package/.ruvector/index_v2.db-shm +0 -0
- package/.ruvector/index_v2.db-wal +0 -0
- package/CLAUDE.md +9 -1
- package/README.md +56 -0
- package/docs/AGENT_PRODUCTION_FEEDBACK_PATTERNS.md +389 -0
- package/docs/CEREBRAS_TDD_COORDINATOR_TEST_RESULTS.md +213 -0
- package/docs/CEREBRAS_TDD_ROUND1_VS_ROUND2_COMPARISON.md +225 -0
- package/docs/CEREBRAS_TDD_ROUND3_FINAL_RESULTS.md +264 -0
- package/docs/EPIC_CREATOR_V2_ARCHITECTURE.md +629 -0
- package/docs/HOOKS_IMPLEMENTATION_PRIORITY.md +585 -0
- package/docs/SKILLS_HOOKS_INTEGRATION.md +1074 -0
- package/epic-with-personas-2025-12-09-17-15-13.json +253 -0
- package/index/index.bin +0 -0
- package/index/metadata.json +1 -0
- package/package.json +2 -1
- package/test-epic-creator-security.sh +203 -0
- package/.claude/skills/cfn-compilation-error-fixer/HANDOFF.md +0 -29
- package/.claude/skills/cfn-local-ruvector-accelerator/__pycache__/search_engine_v2.cpython-312.pyc +0 -0
- package/.claude/skills/cfn-local-ruvector-accelerator/search_engine.py +0 -200
- package/.ruvector/index.db-journal +0 -0
- package/jest.config.ts.cjs +0 -17
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/context-analyzer.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-cerebras-code-generator/generate-code.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/execute.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/INTEGRATION.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/SAMPLE_OUTPUTS.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/capture-container-logs.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/enable-logging.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/init-hybrid-logging.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/analytics-summary.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-agent-timeline.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-consensus-history.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-coordination-timeline.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-failed-containers.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/queries/query-gate-checks.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/schema.sql +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/sqlite-helpers.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/logging/test-hybrid-logging.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/mcp/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/mcp/skill-mcp-selector.js +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/orchestration/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/orchestration/orchestrate.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/spawning/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/spawning/spawn-agent.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/cleanup-wave.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/lib/docker-helpers.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/monitor-wave.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-docker-runtime/lib/waves/spawn-wave.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-node-heap-sizer/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/cfn-node-heap-sizer/task-mode-heap-limiter.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/deprecated/analyze-patterns.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/README.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/SECURITY.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/SKILL.md +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/package.json +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/solve.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test-equation-solver-minimal.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test-equation-solver.sh +0 -0
- /package/.claude/{skills → cfn-extras/skills/deprecated}/equation-solver/test.cjs +0 -0
- /package/.claude/hooks/{cfn-credential-scanner.sh → deprecated/cfn-credential-scanner.sh} +0 -0
- /package/.claude/hooks/{cfn-detect-hardcoded-credentials.sh → deprecated/cfn-detect-hardcoded-credentials.sh} +0 -0
- /package/.claude/hooks/{cfn-invoke-post-edit-ts.sh → deprecated/cfn-invoke-post-edit-ts.sh} +0 -0
- /package/.claude/hooks/{cfn-invoke-pre-edit-ts.sh → deprecated/cfn-invoke-pre-edit-ts.sh} +0 -0
- /package/.claude/hooks/{cfn-invoke-security-validation.sh → deprecated/cfn-invoke-security-validation.sh} +0 -0
- /package/.claude/hooks/{cfn-lint-sql-injection.sh → deprecated/cfn-lint-sql-injection.sh} +0 -0
- /package/.claude/hooks/{cfn-post-edit.sh → deprecated/cfn-post-edit.sh} +0 -0
- /package/.claude/hooks/{cfn-pre-edit-backup.sh → deprecated/cfn-pre-edit-backup.sh} +0 -0
- /package/.claude/skills/cfn-local-ruvector-accelerator/{embeddings_manager.py → embeddings_manager.py.backup} +0 -0
- /package/{.ruvector → .claude/skills/cfn-local-ruvector-accelerator/index}/index.bin +0 -0
- /package/{.ruvector → .claude/skills/cfn-local-ruvector-accelerator/index}/metadata.json +0 -0
- /package/.claude/skills/cfn-local-ruvector-accelerator/{search_engine_v2.py → search_engine_v2.py.backup} +0 -0
- /package/.claude/skills/cfn-local-ruvector-accelerator/{sqlite_store.py → sqlite_store.py.backup} +0 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# Agent Production Feedback Patterns
|
|
2
|
+
|
|
3
|
+
**Question**: When agents use the TDD Coordinator in production and encounter failures, can they adapt based on feedback, or are they fully dependent on the coordinator's code?
|
|
4
|
+
|
|
5
|
+
## TL;DR
|
|
6
|
+
|
|
7
|
+
**Agents CAN and SHOULD adapt based on feedback.** The coordinator is a tool, not a black box. Agents can:
|
|
8
|
+
1. See error outputs and adjust their approach
|
|
9
|
+
2. Retry with modified parameters
|
|
10
|
+
3. Read conversation logs to understand failures
|
|
11
|
+
4. Switch strategies if the coordinator repeatedly fails
|
|
12
|
+
|
|
13
|
+
## Architecture Overview
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
┌─────────────────────────────────────────────────────────┐
|
|
17
|
+
│ Agent (backend-developer, fullstack, etc.) │
|
|
18
|
+
│ │
|
|
19
|
+
│ 1. Decides to use TDD approach │
|
|
20
|
+
│ 2. Calls TDD Coordinator with parameters │
|
|
21
|
+
│ 3. Receives result (success/failure + details) │
|
|
22
|
+
│ 4. ANALYZES result and decides next action │
|
|
23
|
+
│ ├─ Success: Continue with generated code │
|
|
24
|
+
│ ├─ Partial: Adjust parameters and retry │
|
|
25
|
+
│ └─ Failure: Try different approach or manual coding │
|
|
26
|
+
└─────────────────────────────────────────────────────────┘
|
|
27
|
+
│
|
|
28
|
+
▼
|
|
29
|
+
┌─────────────────────────────────────────────────────────┐
|
|
30
|
+
│ TDD Coordinator (Skill) │
|
|
31
|
+
│ │
|
|
32
|
+
│ - Receives: feature, filePath, testCommand, context │
|
|
33
|
+
│ - Executes: RED → GREEN → FIX loop │
|
|
34
|
+
│ - Returns: JSON with success, files, errors, etc. │
|
|
35
|
+
│ - Saves: Conversation log for debugging │
|
|
36
|
+
└─────────────────────────────────────────────────────────┘
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Return Value Structure
|
|
40
|
+
|
|
41
|
+
The coordinator returns detailed feedback that agents can use for adaptation:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
interface TDDResult {
|
|
45
|
+
success: boolean; // Did tests pass?
|
|
46
|
+
implementationFile: string; // Path to generated impl
|
|
47
|
+
testFile: string; // Path to generated tests
|
|
48
|
+
iterations: number; // How many fix attempts
|
|
49
|
+
conversationId: string; // For debugging
|
|
50
|
+
error?: string; // Error message if failed
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Agent Adaptation Patterns
|
|
55
|
+
|
|
56
|
+
### Pattern 1: Parameter Adjustment (Most Common)
|
|
57
|
+
|
|
58
|
+
**Scenario**: Coordinator fails with timezone issue
|
|
59
|
+
|
|
60
|
+
**Agent Response**:
|
|
61
|
+
```typescript
|
|
62
|
+
// First attempt
|
|
63
|
+
let result = await callTDDCoordinator({
|
|
64
|
+
feature: "Date formatter that formats dates as YYYY-MM-DD",
|
|
65
|
+
// ... other params
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// Agent sees failure in result.error
|
|
69
|
+
if (!result.success && result.error.includes('timezone')) {
|
|
70
|
+
console.log('🔄 Retrying with UTC hint...');
|
|
71
|
+
|
|
72
|
+
// Second attempt with adjusted feature description
|
|
73
|
+
result = await callTDDCoordinator({
|
|
74
|
+
feature: "Date formatter that formats dates as YYYY-MM-DD using UTC methods",
|
|
75
|
+
// ... same other params
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Pattern 2: Test Command Adjustment
|
|
81
|
+
|
|
82
|
+
**Scenario**: Test framework has path issues
|
|
83
|
+
|
|
84
|
+
**Agent Response**:
|
|
85
|
+
```typescript
|
|
86
|
+
// First attempt with absolute path
|
|
87
|
+
let result = await callTDDCoordinator({
|
|
88
|
+
testCommand: `npx vitest run ${absolutePath}/test.ts`
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Agent detects "No test files found"
|
|
92
|
+
if (!result.success && result.error.includes('No test files found')) {
|
|
93
|
+
console.log('🔄 Adjusting test command to use relative path...');
|
|
94
|
+
|
|
95
|
+
// Retry with relative path
|
|
96
|
+
result = await callTDDCoordinator({
|
|
97
|
+
testCommand: `npx vitest run ${basename(testFile)}`
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Pattern 3: Context File Addition
|
|
103
|
+
|
|
104
|
+
**Scenario**: Generated code missing necessary types
|
|
105
|
+
|
|
106
|
+
**Agent Response**:
|
|
107
|
+
```typescript
|
|
108
|
+
// First attempt without context
|
|
109
|
+
let result = await callTDDCoordinator({
|
|
110
|
+
feature: "User authentication",
|
|
111
|
+
contextFiles: []
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Agent sees import errors in result.error
|
|
115
|
+
if (!result.success && result.error.includes('Cannot find type')) {
|
|
116
|
+
console.log('🔄 Adding type definition context...');
|
|
117
|
+
|
|
118
|
+
// Retry with context files
|
|
119
|
+
result = await callTDDCoordinator({
|
|
120
|
+
feature: "User authentication",
|
|
121
|
+
contextFiles: ['./src/types/User.ts', './src/types/Auth.ts']
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Pattern 4: Strategy Switch
|
|
127
|
+
|
|
128
|
+
**Scenario**: Coordinator fails repeatedly (3+ times)
|
|
129
|
+
|
|
130
|
+
**Agent Response**:
|
|
131
|
+
```typescript
|
|
132
|
+
const MAX_RETRIES = 3;
|
|
133
|
+
let attempts = 0;
|
|
134
|
+
let result;
|
|
135
|
+
|
|
136
|
+
while (attempts < MAX_RETRIES) {
|
|
137
|
+
result = await callTDDCoordinator({ /* params */ });
|
|
138
|
+
|
|
139
|
+
if (result.success) break;
|
|
140
|
+
|
|
141
|
+
attempts++;
|
|
142
|
+
console.log(`⚠️ Attempt ${attempts}/${MAX_RETRIES} failed`);
|
|
143
|
+
|
|
144
|
+
// Try adjusting parameters based on error
|
|
145
|
+
// (parameter adjustment logic here)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (!result.success) {
|
|
149
|
+
console.log('❌ TDD Coordinator failed after 3 attempts');
|
|
150
|
+
console.log('🔄 Switching to manual code generation...');
|
|
151
|
+
|
|
152
|
+
// Agent falls back to direct code generation
|
|
153
|
+
return await generateCodeManually({ /* params */ });
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Pattern 5: Conversation Log Analysis
|
|
158
|
+
|
|
159
|
+
**Scenario**: Agent needs to understand WHY coordinator failed
|
|
160
|
+
|
|
161
|
+
**Agent Response**:
|
|
162
|
+
```typescript
|
|
163
|
+
const result = await callTDDCoordinator({ /* params */ });
|
|
164
|
+
|
|
165
|
+
if (!result.success) {
|
|
166
|
+
// Read the conversation log
|
|
167
|
+
const conversationPath = `./conversations/${result.conversationId}.json`;
|
|
168
|
+
const conversation = JSON.parse(readFileSync(conversationPath, 'utf-8'));
|
|
169
|
+
|
|
170
|
+
// Analyze the conversation to find patterns
|
|
171
|
+
const messages = conversation.conversation;
|
|
172
|
+
const lastError = messages[messages.length - 1].content;
|
|
173
|
+
|
|
174
|
+
console.log('🔍 Analyzing conversation log...');
|
|
175
|
+
console.log('Last error:', lastError);
|
|
176
|
+
|
|
177
|
+
// Agent uses this to make intelligent retry decisions
|
|
178
|
+
if (lastError.includes('module resolution')) {
|
|
179
|
+
// Adjust test command or add tsconfig
|
|
180
|
+
} else if (lastError.includes('type mismatch')) {
|
|
181
|
+
// Add type context files
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Production Integration Examples
|
|
187
|
+
|
|
188
|
+
### Example 1: Backend Developer Agent
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
async function implementFeature(featureDescription: string) {
|
|
192
|
+
// Agent decides to use TDD approach
|
|
193
|
+
console.log('📝 Using TDD approach for feature implementation...');
|
|
194
|
+
|
|
195
|
+
const result = await callTDDCoordinator({
|
|
196
|
+
agentId: this.agentId,
|
|
197
|
+
feature: featureDescription,
|
|
198
|
+
filePath: './src/features/newFeature.ts',
|
|
199
|
+
testCommand: 'npm test newFeature',
|
|
200
|
+
contextFiles: await this.gatherRelevantContext(),
|
|
201
|
+
maxIterations: 3
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
if (result.success) {
|
|
205
|
+
console.log('✅ TDD generation successful!');
|
|
206
|
+
console.log(`Generated: ${result.implementationFile}`);
|
|
207
|
+
console.log(`Tests: ${result.testFile}`);
|
|
208
|
+
console.log(`Iterations: ${result.iterations}`);
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// ADAPTIVE BEHAVIOR: Agent analyzes failure and decides what to do
|
|
213
|
+
console.log('⚠️ TDD generation failed:', result.error);
|
|
214
|
+
|
|
215
|
+
// Check if it's a recoverable error
|
|
216
|
+
if (result.iterations < 3) {
|
|
217
|
+
// Coordinator gave up early, might be a parameter issue
|
|
218
|
+
console.log('🔄 Coordinator gave up early, trying with more context...');
|
|
219
|
+
|
|
220
|
+
return await callTDDCoordinator({
|
|
221
|
+
...previousParams,
|
|
222
|
+
contextFiles: await this.gatherMoreContext(),
|
|
223
|
+
feature: `${featureDescription} (use TypeScript strict mode)`
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// If coordinator tried hard but failed, fall back to manual approach
|
|
228
|
+
console.log('🔄 Falling back to manual implementation...');
|
|
229
|
+
return await this.manualImplementation(featureDescription);
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Example 2: CFN Loop Integration
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
// In CFN Loop orchestration
|
|
237
|
+
async function executeTaskWithTDD(task: Task) {
|
|
238
|
+
const tddResult = await spawnAgent('tdd-coordinator', {
|
|
239
|
+
feature: task.description,
|
|
240
|
+
filePath: task.targetFile,
|
|
241
|
+
testCommand: task.testCommand
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// CFN Loop reads the result and decides next steps
|
|
245
|
+
if (tddResult.success) {
|
|
246
|
+
// Continue to validation phase
|
|
247
|
+
await spawnAgent('code-reviewer', {
|
|
248
|
+
files: [tddResult.implementationFile, tddResult.testFile]
|
|
249
|
+
});
|
|
250
|
+
} else {
|
|
251
|
+
// ADAPTIVE: CFN Loop can spawn different agents based on error type
|
|
252
|
+
if (tddResult.error.includes('test framework')) {
|
|
253
|
+
// Spawn a specialist to set up test framework first
|
|
254
|
+
await spawnAgent('test-framework-setup', {
|
|
255
|
+
framework: 'vitest',
|
|
256
|
+
directory: dirname(task.targetFile)
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
// Then retry TDD coordinator
|
|
260
|
+
tddResult = await spawnAgent('tdd-coordinator', { /* same params */ });
|
|
261
|
+
} else {
|
|
262
|
+
// Different recovery strategy based on error type
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## Error Categories and Agent Responses
|
|
269
|
+
|
|
270
|
+
| Error Type | Agent Detection | Recommended Response |
|
|
271
|
+
|------------|----------------|----------------------|
|
|
272
|
+
| **Timezone/Date Issues** | `error.includes('expected') && error.includes('date')` | Add "using UTC" to feature description |
|
|
273
|
+
| **Import Errors** | `error.includes('Cannot find') \|\| error.includes('is not defined')` | Add context files with type definitions |
|
|
274
|
+
| **Test Framework Issues** | `error.includes('No test files')` | Check test command format or install framework |
|
|
275
|
+
| **Syntax Errors** | `error.includes('SyntaxError')` | Review generated code, might need linting setup |
|
|
276
|
+
| **Type Errors** | `error.includes('Type') && error.includes('expected')` | Add tsconfig or type declaration files |
|
|
277
|
+
| **Logic Errors** | `iterations === maxIterations && !success` | Coordinator tried hard, consider manual implementation |
|
|
278
|
+
|
|
279
|
+
## Design Philosophy: Tools, Not Oracles
|
|
280
|
+
|
|
281
|
+
The TDD Coordinator is designed as a **tool** that agents use, not an **oracle** they blindly trust.
|
|
282
|
+
|
|
283
|
+
### What Agents SHOULD Do ✅
|
|
284
|
+
- Read and interpret coordinator results
|
|
285
|
+
- Adjust parameters based on errors
|
|
286
|
+
- Retry with different approaches
|
|
287
|
+
- Fall back to alternative strategies if needed
|
|
288
|
+
- Learn from conversation logs
|
|
289
|
+
- Provide better context on retry
|
|
290
|
+
|
|
291
|
+
### What Agents SHOULD NOT Do ❌
|
|
292
|
+
- Blindly accept coordinator failures
|
|
293
|
+
- Ignore error messages
|
|
294
|
+
- Retry indefinitely with same parameters
|
|
295
|
+
- Skip reading the result structure
|
|
296
|
+
- Assume coordinator is always right
|
|
297
|
+
|
|
298
|
+
## Feedback Loop Architecture
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
Agent Request → Coordinator Execution → Result Analysis → Decision
|
|
302
|
+
↑ │
|
|
303
|
+
│ │
|
|
304
|
+
└──────────────── Adaptive Retry ───────────────────────┘
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**Key Point**: The loop includes an **Adaptive Retry** path where agents can modify their approach based on what they learned.
|
|
308
|
+
|
|
309
|
+
## Real-World Scenario: vitest Path Issue
|
|
310
|
+
|
|
311
|
+
### Without Adaptation (BAD)
|
|
312
|
+
```typescript
|
|
313
|
+
// Agent blindly accepts failure
|
|
314
|
+
const result = await callTDDCoordinator({
|
|
315
|
+
testCommand: 'npx vitest run /abs/path/test.ts'
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
if (!result.success) {
|
|
319
|
+
console.log('❌ TDD failed, giving up');
|
|
320
|
+
return null; // 😢 Agent gives up
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### With Adaptation (GOOD)
|
|
325
|
+
```typescript
|
|
326
|
+
// Agent analyzes and adapts
|
|
327
|
+
let result = await callTDDCoordinator({
|
|
328
|
+
testCommand: 'npx vitest run /abs/path/test.ts'
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
if (!result.success && result.error.includes('No test files found')) {
|
|
332
|
+
console.log('🔍 Detected test path issue, trying relative path...');
|
|
333
|
+
|
|
334
|
+
result = await callTDDCoordinator({
|
|
335
|
+
testCommand: 'npx vitest run test.ts' // Relative path
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (result.success) {
|
|
340
|
+
console.log('✅ Recovered from path issue!');
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### With Code Fix (BEST)
|
|
345
|
+
```typescript
|
|
346
|
+
// Now that we fixed the coordinator code to use `cwd`,
|
|
347
|
+
// agents don't need to worry about this specific issue anymore!
|
|
348
|
+
|
|
349
|
+
const result = await callTDDCoordinator({
|
|
350
|
+
testCommand: 'npx vitest run /abs/path/test.ts'
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
// Works because coordinator runs from correct directory ✅
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## Current State After 5 Rounds
|
|
357
|
+
|
|
358
|
+
### Fixed in Code (No Agent Adaptation Needed)
|
|
359
|
+
- ✅ ESM `__dirname` issue
|
|
360
|
+
- ✅ Import statement generation
|
|
361
|
+
- ✅ Vitest syntax usage
|
|
362
|
+
- ✅ FIX phase file targeting
|
|
363
|
+
- ✅ Test command working directory
|
|
364
|
+
|
|
365
|
+
### Requires Agent Adaptation (Can't Fix in Code)
|
|
366
|
+
- Feature description hints (e.g., "using UTC")
|
|
367
|
+
- Context file selection (agent knows codebase better)
|
|
368
|
+
- Test command format per project
|
|
369
|
+
- Framework-specific configurations
|
|
370
|
+
- Domain-specific edge cases
|
|
371
|
+
|
|
372
|
+
## Conclusion
|
|
373
|
+
|
|
374
|
+
**Answer to Original Question**:
|
|
375
|
+
|
|
376
|
+
Agents are **NOT fully dependent on the code** - they **CAN and SHOULD adapt** based on feedback.
|
|
377
|
+
|
|
378
|
+
The TDD Coordinator provides rich feedback (success status, error messages, iteration count, conversation logs) that agents can use to:
|
|
379
|
+
1. Diagnose issues
|
|
380
|
+
2. Adjust parameters
|
|
381
|
+
3. Retry with better context
|
|
382
|
+
4. Switch strategies if needed
|
|
383
|
+
|
|
384
|
+
**Design Goal**: Create a **collaborative relationship** where:
|
|
385
|
+
- Coordinator handles TDD mechanics (RED-GREEN-REFACTOR loop)
|
|
386
|
+
- Agents handle high-level strategy and adaptation
|
|
387
|
+
- Together they solve complex problems that neither could solve alone
|
|
388
|
+
|
|
389
|
+
**Production Readiness**: The coordinator is now robust enough that most common issues are handled automatically, but agents still have full visibility and control to adapt when needed.
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Cerebras TDD Coordinator - Multi-Language Test Results
|
|
2
|
+
|
|
3
|
+
**Test Date**: 2025-12-10
|
|
4
|
+
**Purpose**: Validate TDD Conversation Coordinator works across Rust, TypeScript, and Python
|
|
5
|
+
|
|
6
|
+
## Test Configuration
|
|
7
|
+
|
|
8
|
+
### Environment
|
|
9
|
+
- **CEREBRAS_API_KEY**: Loaded from `.env` file
|
|
10
|
+
- **CEREBRAS_MODEL**: `zai-glm-4.6` (default)
|
|
11
|
+
- **SessionStart Hook**: Active (`.claude/hooks/cfn-load-cerebras-env.sh`)
|
|
12
|
+
- **Max Iterations**: 3 per test
|
|
13
|
+
|
|
14
|
+
### Test Scenarios
|
|
15
|
+
|
|
16
|
+
| Language | Feature | Output File | Test Command | Agent ID |
|
|
17
|
+
|----------|---------|-------------|--------------|----------|
|
|
18
|
+
| Rust | Email validator | `/tmp/cerebras-test-rust/validator.rs` | `rustc --test` | 32aeea74 |
|
|
19
|
+
| TypeScript | Date formatter (YYYY-MM-DD) | `/tmp/cerebras-test-ts/formatter.ts` | `ts-node` | 0602d64a |
|
|
20
|
+
| Python | Statistics calculator (mean/median/mode) | `/tmp/cerebras-test-py/stats.py` | `pytest` | 6976f7eb |
|
|
21
|
+
|
|
22
|
+
## Test Objectives
|
|
23
|
+
|
|
24
|
+
1. **Functional**: Verify coordinator generates working code for each language
|
|
25
|
+
2. **TDD Workflow**: Confirm Red-Green-Refactor cycle completes
|
|
26
|
+
3. **Conversation Memory**: Validate error recovery with conversation history
|
|
27
|
+
4. **Multi-Language**: Ensure appropriate test frameworks per language:
|
|
28
|
+
- Rust: inline `#[test]` attributes or separate test module
|
|
29
|
+
- TypeScript: Jest or Mocha test suite
|
|
30
|
+
- Python: pytest test suite
|
|
31
|
+
5. **Integration**: Test SessionStart hook loads API key correctly
|
|
32
|
+
|
|
33
|
+
## Expected Outcomes
|
|
34
|
+
|
|
35
|
+
### Success Criteria (Per Language)
|
|
36
|
+
- ✅ TDD coordinator completes without errors
|
|
37
|
+
- ✅ Implementation file generated with working code
|
|
38
|
+
- ✅ Test file generated with appropriate framework
|
|
39
|
+
- ✅ Tests pass (GREEN phase)
|
|
40
|
+
- ✅ Conversation JSON saved to `conversations/` directory
|
|
41
|
+
- ✅ RuVector indexing triggered (if successful)
|
|
42
|
+
|
|
43
|
+
### Known Challenges to Watch For
|
|
44
|
+
- **Rust**: Compiler strictness, test module structure
|
|
45
|
+
- **TypeScript**: Type definitions, import/export syntax
|
|
46
|
+
- **Python**: Indentation, pytest discovery
|
|
47
|
+
|
|
48
|
+
## Results
|
|
49
|
+
|
|
50
|
+
### Rust Test (Agent 32aeea74)
|
|
51
|
+
**Status**: ✅ SUCCESS (Confidence: 0.92)
|
|
52
|
+
|
|
53
|
+
**Generated Files**:
|
|
54
|
+
- `/tmp/cerebras-test-rust/validator.rs` (52 lines, robust validation logic)
|
|
55
|
+
- `/tmp/cerebras-test-rust/validator_test.rs` (21 comprehensive test cases)
|
|
56
|
+
|
|
57
|
+
**Test Results**:
|
|
58
|
+
- Total: 21 tests
|
|
59
|
+
- Passed: 21 ✅
|
|
60
|
+
- Failed: 0
|
|
61
|
+
- Iterations used: 1/3
|
|
62
|
+
|
|
63
|
+
**Code Quality**:
|
|
64
|
+
- Proper Rust idioms and error handling
|
|
65
|
+
- Comprehensive edge case coverage: valid emails, invalid formats, empty strings, special characters
|
|
66
|
+
- Validation rules: @ symbol, dots, spaces, TLD requirements
|
|
67
|
+
- GIVEN/WHEN/THEN test structure
|
|
68
|
+
|
|
69
|
+
**Issues**:
|
|
70
|
+
- ❌ Conversation JSON not saved: `ReferenceError: __dirname is not defined` (ESM issue)
|
|
71
|
+
- ⚠️ Required `npm install @cerebras/cerebras_cloud_sdk --legacy-peer-deps`
|
|
72
|
+
|
|
73
|
+
### TypeScript Test (Agent 0602d64a)
|
|
74
|
+
**Status**: ⚠️ PARTIAL SUCCESS (Confidence: 0.82)
|
|
75
|
+
|
|
76
|
+
**Generated Files**:
|
|
77
|
+
- `/tmp/cerebras-test-ts/formatter.ts` (26 lines)
|
|
78
|
+
- `/tmp/cerebras-test-ts/formatter.test.ts` (172 lines, 14 test cases)
|
|
79
|
+
|
|
80
|
+
**Test Results**:
|
|
81
|
+
- ❌ All tests failed: Missing imports in test file
|
|
82
|
+
- Iterations used: 3/3 (coordinator couldn't self-correct)
|
|
83
|
+
|
|
84
|
+
**Code Quality**:
|
|
85
|
+
- Implementation is correct and well-structured
|
|
86
|
+
- Tests are comprehensive: valid dates, invalid inputs, timezones, edge cases
|
|
87
|
+
- Uses vitest framework with GIVEN/WHEN/THEN pattern
|
|
88
|
+
|
|
89
|
+
**Issues**:
|
|
90
|
+
- 🔴 **CRITICAL**: Test file missing `import { formatDate, Given, When, Then } from './formatter';`
|
|
91
|
+
- ❌ Coordinator failed to detect import problem across 3 iterations
|
|
92
|
+
- ❌ Conversation JSON not saved: `__dirname` ESM issue
|
|
93
|
+
- ⚠️ Test command used `ts-node -e "require()"` which doesn't work with ES modules
|
|
94
|
+
|
|
95
|
+
### Python Test (Agent 6976f7eb)
|
|
96
|
+
**Status**: ✅ SUCCESS (Confidence: 0.92)
|
|
97
|
+
|
|
98
|
+
**Generated Files**:
|
|
99
|
+
- `/tmp/cerebras-test-py/stats.py` (StatisticsCalculator class)
|
|
100
|
+
- `/tmp/cerebras-test-py/test_stats.py` (22 comprehensive test cases)
|
|
101
|
+
|
|
102
|
+
**Test Results**:
|
|
103
|
+
- Total: 22 tests
|
|
104
|
+
- Passed: 22 ✅
|
|
105
|
+
- Failed: 0
|
|
106
|
+
- Execution time: 0.02s
|
|
107
|
+
- Iterations used: 1/3
|
|
108
|
+
|
|
109
|
+
**Code Quality**:
|
|
110
|
+
- Clean Python class with proper methods: `mean()`, `median()`, `mode()`, `calculate_all()`
|
|
111
|
+
- Excellent error handling for empty lists
|
|
112
|
+
- Comprehensive test coverage: positive/negative/mixed numbers, floats, edge cases
|
|
113
|
+
- All tests follow GIVEN/WHEN/THEN pattern
|
|
114
|
+
|
|
115
|
+
**Issues**:
|
|
116
|
+
- ❌ Conversation JSON not saved: `__dirname` ESM issue
|
|
117
|
+
- ⚠️ Required `npm install @cerebras/cerebras_cloud_sdk --legacy-peer-deps`
|
|
118
|
+
|
|
119
|
+
## Issues Found
|
|
120
|
+
|
|
121
|
+
### Critical Issues
|
|
122
|
+
|
|
123
|
+
1. **TypeScript Import Detection Failure** 🔴
|
|
124
|
+
- **Impact**: High - Tests fail completely
|
|
125
|
+
- **Root Cause**: Coordinator doesn't validate that test files import from implementation
|
|
126
|
+
- **Iterations**: Failed self-correction across all 3 attempts
|
|
127
|
+
- **Fix Required**: Add import validation step or improve prompt to explicitly require imports
|
|
128
|
+
|
|
129
|
+
### Major Issues
|
|
130
|
+
|
|
131
|
+
2. **ESM `__dirname` Compatibility** ❌
|
|
132
|
+
- **Impact**: Medium - Conversation history not saved (learning disabled)
|
|
133
|
+
- **Affected**: All 3 languages (Rust, TypeScript, Python)
|
|
134
|
+
- **Location**: `tdd-conversation-coordinator.ts:220`
|
|
135
|
+
- **Error**: `ReferenceError: __dirname is not defined in ES module scope`
|
|
136
|
+
- **Fix Required**: Replace with `import.meta.url` and `path.dirname(fileURLToPath(import.meta.url))`
|
|
137
|
+
|
|
138
|
+
### Minor Issues
|
|
139
|
+
|
|
140
|
+
3. **Peer Dependency Conflicts** ⚠️
|
|
141
|
+
- **Impact**: Low - Requires `--legacy-peer-deps` flag
|
|
142
|
+
- **Package**: `@cerebras/cerebras_cloud_sdk`
|
|
143
|
+
- **Fix**: Update package.json peer dependencies
|
|
144
|
+
|
|
145
|
+
4. **Test Command Format (TypeScript)** ⚠️
|
|
146
|
+
- **Impact**: Low - Used incorrect test runner invocation
|
|
147
|
+
- **Issue**: `ts-node -e "require()"` doesn't work with ES modules
|
|
148
|
+
- **Better**: Use `vitest run` directly
|
|
149
|
+
|
|
150
|
+
## Recommendations
|
|
151
|
+
|
|
152
|
+
### Immediate Fixes (P0)
|
|
153
|
+
|
|
154
|
+
1. **Fix ESM `__dirname` Issue** (affects all languages)
|
|
155
|
+
```typescript
|
|
156
|
+
// Current (broken):
|
|
157
|
+
const conversationsDir = path.join(__dirname, '..', 'conversations');
|
|
158
|
+
|
|
159
|
+
// Fixed:
|
|
160
|
+
import { fileURLToPath } from 'url';
|
|
161
|
+
import { dirname } from 'path';
|
|
162
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
163
|
+
const __dirname = dirname(__filename);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
2. **Add Import Validation for TypeScript** (critical for TS success)
|
|
167
|
+
- Add validation step after generating test file
|
|
168
|
+
- Check that test file imports required functions from implementation
|
|
169
|
+
- Include in conversation prompt: "MUST include import statement"
|
|
170
|
+
|
|
171
|
+
### High Priority (P1)
|
|
172
|
+
|
|
173
|
+
3. **Improve Error Detection**
|
|
174
|
+
- When tests fail with "X is not defined", extract identifier X
|
|
175
|
+
- Check if X is defined in implementation file
|
|
176
|
+
- If yes, add instruction to import it
|
|
177
|
+
|
|
178
|
+
4. **Update Test Commands**
|
|
179
|
+
- TypeScript: Use `vitest run` instead of `ts-node -e`
|
|
180
|
+
- Add language-specific test command templates
|
|
181
|
+
|
|
182
|
+
### Medium Priority (P2)
|
|
183
|
+
|
|
184
|
+
5. **Enhance Conversation Prompts**
|
|
185
|
+
- Explicitly mention import requirements for each language
|
|
186
|
+
- Add checklist validation before declaring success
|
|
187
|
+
- Include common pitfalls per language
|
|
188
|
+
|
|
189
|
+
6. **Add Validation Gates**
|
|
190
|
+
- Before saving conversation as successful, verify:
|
|
191
|
+
- Tests actually pass
|
|
192
|
+
- All files generated
|
|
193
|
+
- No "X is not defined" errors
|
|
194
|
+
|
|
195
|
+
## Next Steps
|
|
196
|
+
|
|
197
|
+
1. ✅ All 3 agents completed
|
|
198
|
+
2. ✅ Test results analyzed and documented
|
|
199
|
+
3. 🔧 **Priority 1**: Fix `__dirname` ESM issue (blocks conversation saving for all languages)
|
|
200
|
+
4. 🔧 **Priority 2**: Add TypeScript import validation (critical for TS success rate)
|
|
201
|
+
5. 🔧 **Priority 3**: Update prompts to explicitly require imports in test files
|
|
202
|
+
6. 📋 Create distribution plan after P0/P1 fixes verified
|
|
203
|
+
|
|
204
|
+
## Summary
|
|
205
|
+
|
|
206
|
+
**Overall Assessment**: 2/3 full success (Rust ✅, Python ✅), 1/3 partial success (TypeScript ⚠️)
|
|
207
|
+
|
|
208
|
+
**Key Findings**:
|
|
209
|
+
- Rust and Python: Code generation excellent, tests pass first iteration
|
|
210
|
+
- TypeScript: Code quality good, but import detection needs improvement
|
|
211
|
+
- All languages affected by ESM `__dirname` bug (prevents learning/conversation save)
|
|
212
|
+
|
|
213
|
+
**Recommendation**: Fix the 2 P0 issues before wider distribution. The coordinator is production-ready for Rust/Python, needs TypeScript import fix.
|