claude-flow 2.7.0-alpha.9 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.reasoningbank-example.json +124 -0
- package/.claude/settings.reasoningbank-minimal.json +40 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
- package/.claude/skills/agentdb-learning/SKILL.md +545 -0
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
- package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/.claude/skills/github-code-review/SKILL.md +1140 -0
- package/.claude/skills/github-multi-repo/SKILL.md +874 -0
- package/.claude/skills/github-project-management/SKILL.md +1277 -0
- package/.claude/skills/github-release-management/SKILL.md +1081 -0
- package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
- package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
- package/.claude/skills/hooks-automation/SKILL.md +1201 -0
- package/.claude/skills/pair-programming/SKILL.md +1202 -0
- package/.claude/skills/performance-analysis/SKILL.md +563 -0
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
- package/.claude/skills/stream-chain/SKILL.md +563 -0
- package/.claude/skills/swarm-advanced/SKILL.md +973 -0
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
- package/.claude/skills/verification-quality/SKILL.md +649 -0
- package/.claude/statusline-command.sh +175 -0
- package/.claude/test-reasoningbank-hooks.sh +99 -0
- package/CHANGELOG.md +460 -0
- package/README.md +254 -188
- package/bin/claude-flow +1 -1
- package/dist/src/cli/simple-cli.js +182 -172
- package/dist/src/cli/simple-cli.js.map +1 -1
- package/dist/src/cli/simple-commands/config.js +115 -257
- package/dist/src/cli/simple-commands/config.js.map +1 -1
- package/dist/src/cli/simple-commands/init/index.js +36 -22
- package/dist/src/cli/simple-commands/init/index.js.map +1 -1
- package/dist/src/cli/simple-commands/init/skills-copier.js +186 -0
- package/dist/src/cli/simple-commands/init/skills-copier.js.map +1 -0
- package/dist/src/cli/simple-commands/memory.js +12 -1
- package/dist/src/cli/simple-commands/memory.js.map +1 -1
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +1 -1
- package/dist/src/cli/simple-commands/process-ui-enhanced.js.map +1 -1
- package/dist/src/cli/simple-commands/status.js +1 -1
- package/dist/src/cli/simple-commands/status.js.map +1 -1
- package/dist/src/core/version.js +1 -1
- package/dist/src/mcp/mcp-server.js +261 -3
- package/dist/src/mcp/mcp-server.js.map +1 -1
- package/dist/src/reasoningbank/reasoningbank-adapter.js +152 -99
- package/dist/src/reasoningbank/reasoningbank-adapter.js.map +1 -1
- package/dist/src/utils/metrics-reader.js +39 -37
- package/dist/src/utils/metrics-reader.js.map +1 -1
- package/docker-test/.claude-flow/metrics/performance.json +3 -3
- package/docker-test/.claude-flow/metrics/task-metrics.json +3 -3
- package/docker-test/Dockerfile.alpha11-test +26 -0
- package/docker-test/Dockerfile.alpha12-test +47 -0
- package/docker-test/Dockerfile.local-test +42 -0
- package/docker-test/test-alpha11.sh +244 -0
- package/docker-test/test-local-fix.sh +235 -0
- package/docs/COMMANDS_TO_SKILLS_MIGRATION.md +382 -0
- package/docs/FINAL_INIT_STRUCTURE.md +320 -0
- package/docs/PATTERN_PERSISTENCE_FIX.md +328 -0
- package/docs/RELEASE-NOTES-v2.7.0-alpha.10.md +309 -0
- package/docs/RELEASE-NOTES-v2.7.0-alpha.9.md +208 -0
- package/docs/RELEASE_v2.7.1.md +244 -0
- package/docs/integrations/reasoningbank/MIGRATION-v1.5.13.md +1 -1
- package/docs/reasoningbank/CLAUDE-CODE-INTEGRATION.md +563 -0
- package/docs/reasoningbank/EXAMPLES.md +611 -0
- package/docs/reasoningbank/README.md +1139 -0
- package/docs/reasoningbank/agentic-flow-integration.md +800 -0
- package/docs/reasoningbank/architecture.md +680 -0
- package/docs/reasoningbank/google-research.md +1017 -0
- package/docs/reasoningbank/models/.claude-flow/metrics/agent-metrics.json +1 -0
- package/docs/reasoningbank/models/.claude-flow/metrics/performance.json +87 -0
- package/docs/reasoningbank/models/.claude-flow/metrics/task-metrics.json +10 -0
- package/docs/reasoningbank/models/HOW-TO-TRAIN.md +537 -0
- package/docs/reasoningbank/models/HOW-TO-USE.md +655 -0
- package/docs/reasoningbank/models/INDEX.md +276 -0
- package/docs/reasoningbank/models/README.md +345 -0
- package/docs/reasoningbank/models/_docs/COMPATIBILITY.md +448 -0
- package/docs/reasoningbank/models/_docs/COMPLETION-SUMMARY.md +478 -0
- package/docs/reasoningbank/models/_docs/README.md +80 -0
- package/docs/reasoningbank/models/_docs/SCHEMA-UPDATE-SUMMARY.md +376 -0
- package/docs/reasoningbank/models/_docs/VERIFICATION-COMPLETE.md +370 -0
- package/docs/reasoningbank/models/_scripts/README.md +270 -0
- package/docs/reasoningbank/models/_scripts/benchmark-all.cjs +407 -0
- package/docs/reasoningbank/models/_scripts/fix-schema-compatibility.cjs +300 -0
- package/docs/reasoningbank/models/_scripts/schema-validator.cjs +360 -0
- package/docs/reasoningbank/models/_scripts/training-coordinator.cjs +85 -0
- package/docs/reasoningbank/models/_scripts/validation-suite.cjs +239 -0
- package/docs/reasoningbank/models/benchmark-output.log +41 -0
- package/docs/reasoningbank/models/code-reasoning/.claude-flow/metrics/agent-metrics.json +1 -0
- package/docs/reasoningbank/models/code-reasoning/.claude-flow/metrics/performance.json +87 -0
- package/docs/reasoningbank/models/code-reasoning/.claude-flow/metrics/task-metrics.json +18 -0
- package/docs/reasoningbank/models/code-reasoning/.swarm/SCHEMA-FIX-REPORT.md +69 -0
- package/docs/reasoningbank/models/code-reasoning/.swarm/memory.db +0 -0
- package/docs/reasoningbank/models/code-reasoning/.swarm/memory.db.backup +0 -0
- package/docs/reasoningbank/models/code-reasoning/README.md +451 -0
- package/docs/reasoningbank/models/code-reasoning/TRAINING-SUMMARY.md +416 -0
- package/docs/reasoningbank/models/code-reasoning/train-code.js +2059 -0
- package/docs/reasoningbank/models/code-reasoning/training.log +18 -0
- package/docs/reasoningbank/models/code-reasoning/validation-report.md +349 -0
- package/docs/reasoningbank/models/domain-expert/.claude-flow/metrics/agent-metrics.json +1 -0
- package/docs/reasoningbank/models/domain-expert/.claude-flow/metrics/performance.json +87 -0
- package/docs/reasoningbank/models/domain-expert/.claude-flow/metrics/task-metrics.json +18 -0
- package/docs/reasoningbank/models/domain-expert/COMPLETION-REPORT.md +451 -0
- package/docs/reasoningbank/models/domain-expert/INDEX.md +182 -0
- package/docs/reasoningbank/models/domain-expert/README.md +215 -0
- package/docs/reasoningbank/models/domain-expert/SCHEMA-FIX-REPORT.md +65 -0
- package/docs/reasoningbank/models/domain-expert/SUMMARY.md +286 -0
- package/docs/reasoningbank/models/domain-expert/USAGE.md +394 -0
- package/docs/reasoningbank/models/domain-expert/demo-queries.sh +42 -0
- package/docs/reasoningbank/models/domain-expert/memory.db +0 -0
- package/docs/reasoningbank/models/domain-expert/train-domain.js +1324 -0
- package/docs/reasoningbank/models/domain-expert/validate.js +218 -0
- package/docs/reasoningbank/models/domain-expert/validation-report.md +89 -0
- package/docs/reasoningbank/models/google-research/README.md +455 -0
- package/docs/reasoningbank/models/google-research/SCHEMA-FIX-REPORT.md +65 -0
- package/docs/reasoningbank/models/google-research/memory.db +0 -0
- package/docs/reasoningbank/models/google-research/memory.db.backup +0 -0
- package/docs/reasoningbank/models/google-research/train-google.js +697 -0
- package/docs/reasoningbank/models/google-research/validation-report.md +99 -0
- package/docs/reasoningbank/models/google-research/validation-suite.js +323 -0
- package/docs/reasoningbank/models/problem-solving/.claude-flow/metrics/agent-metrics.json +1 -0
- package/docs/reasoningbank/models/problem-solving/.claude-flow/metrics/performance.json +87 -0
- package/docs/reasoningbank/models/problem-solving/.claude-flow/metrics/task-metrics.json +10 -0
- package/docs/reasoningbank/models/problem-solving/.swarm/memory.db +0 -0
- package/docs/reasoningbank/models/problem-solving/README.md +629 -0
- package/docs/reasoningbank/models/problem-solving/SCHEMA-FIX-REPORT.md +66 -0
- package/docs/reasoningbank/models/problem-solving/TRAINING_SUMMARY.md +524 -0
- package/docs/reasoningbank/models/problem-solving/memory.db +0 -0
- package/docs/reasoningbank/models/problem-solving/memory.db.backup +0 -0
- package/docs/reasoningbank/models/problem-solving/train-problem.js +1319 -0
- package/docs/reasoningbank/models/problem-solving/validation-report.md +300 -0
- package/docs/reasoningbank/models/safla/.claude-flow/metrics/agent-metrics.json +1 -0
- package/docs/reasoningbank/models/safla/.claude-flow/metrics/performance.json +87 -0
- package/docs/reasoningbank/models/safla/.claude-flow/metrics/task-metrics.json +10 -0
- package/docs/reasoningbank/models/safla/CHEATSHEET.md +277 -0
- package/docs/reasoningbank/models/safla/COMPLETION_REPORT.txt +108 -0
- package/docs/reasoningbank/models/safla/MANIFEST.txt +104 -0
- package/docs/reasoningbank/models/safla/QUICKSTART.md +349 -0
- package/docs/reasoningbank/models/safla/README.md +457 -0
- package/docs/reasoningbank/models/safla/SCHEMA-FIX-REPORT.md +68 -0
- package/docs/reasoningbank/models/safla/TRAINING_SUMMARY.md +383 -0
- package/docs/reasoningbank/models/safla/memory/memory-store.json +11 -0
- package/docs/reasoningbank/models/safla/memory.db +0 -0
- package/docs/reasoningbank/models/safla/memory.db.backup +0 -0
- package/docs/reasoningbank/models/safla/node_modules/.package-lock.json +456 -0
- package/docs/reasoningbank/models/safla/node_modules/base64-js/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/base64-js/README.md +34 -0
- package/docs/reasoningbank/models/safla/node_modules/base64-js/base64js.min.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/base64-js/index.d.ts +3 -0
- package/docs/reasoningbank/models/safla/node_modules/base64-js/index.js +150 -0
- package/docs/reasoningbank/models/safla/node_modules/base64-js/package.json +47 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/README.md +99 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/binding.gyp +38 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/common.gypi +68 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/copy.js +31 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/defines.gypi +41 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/download.sh +122 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +261480 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +13715 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +719 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/deps/test_extension.c +21 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/database.js +90 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/index.js +3 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/function.js +31 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/table.js +189 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/lib/util.js +12 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/package.json +54 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/src/better_sqlite3.cpp +2186 -0
- package/docs/reasoningbank/models/safla/node_modules/better-sqlite3/src/better_sqlite3.hpp +1036 -0
- package/docs/reasoningbank/models/safla/node_modules/bindings/LICENSE.md +22 -0
- package/docs/reasoningbank/models/safla/node_modules/bindings/README.md +98 -0
- package/docs/reasoningbank/models/safla/node_modules/bindings/bindings.js +221 -0
- package/docs/reasoningbank/models/safla/node_modules/bindings/package.json +28 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/.travis.yml +17 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/BufferList.js +396 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/LICENSE.md +13 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/README.md +247 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/bl.js +84 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/package.json +37 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/test/convert.js +21 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/test/indexOf.js +492 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/test/isBufferList.js +32 -0
- package/docs/reasoningbank/models/safla/node_modules/bl/test/test.js +869 -0
- package/docs/reasoningbank/models/safla/node_modules/buffer/AUTHORS.md +70 -0
- package/docs/reasoningbank/models/safla/node_modules/buffer/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/buffer/README.md +410 -0
- package/docs/reasoningbank/models/safla/node_modules/buffer/index.d.ts +186 -0
- package/docs/reasoningbank/models/safla/node_modules/buffer/index.js +1817 -0
- package/docs/reasoningbank/models/safla/node_modules/buffer/package.json +96 -0
- package/docs/reasoningbank/models/safla/node_modules/chownr/LICENSE +15 -0
- package/docs/reasoningbank/models/safla/node_modules/chownr/README.md +3 -0
- package/docs/reasoningbank/models/safla/node_modules/chownr/chownr.js +167 -0
- package/docs/reasoningbank/models/safla/node_modules/chownr/package.json +29 -0
- package/docs/reasoningbank/models/safla/node_modules/decompress-response/index.d.ts +22 -0
- package/docs/reasoningbank/models/safla/node_modules/decompress-response/index.js +58 -0
- package/docs/reasoningbank/models/safla/node_modules/decompress-response/license +9 -0
- package/docs/reasoningbank/models/safla/node_modules/decompress-response/package.json +56 -0
- package/docs/reasoningbank/models/safla/node_modules/decompress-response/readme.md +48 -0
- package/docs/reasoningbank/models/safla/node_modules/deep-extend/CHANGELOG.md +46 -0
- package/docs/reasoningbank/models/safla/node_modules/deep-extend/LICENSE +20 -0
- package/docs/reasoningbank/models/safla/node_modules/deep-extend/README.md +91 -0
- package/docs/reasoningbank/models/safla/node_modules/deep-extend/index.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/deep-extend/lib/deep-extend.js +150 -0
- package/docs/reasoningbank/models/safla/node_modules/deep-extend/package.json +62 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/LICENSE +201 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/README.md +163 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/index.d.ts +14 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/lib/elf.js +39 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/lib/process.js +24 -0
- package/docs/reasoningbank/models/safla/node_modules/detect-libc/package.json +44 -0
- package/docs/reasoningbank/models/safla/node_modules/end-of-stream/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/end-of-stream/README.md +54 -0
- package/docs/reasoningbank/models/safla/node_modules/end-of-stream/index.js +96 -0
- package/docs/reasoningbank/models/safla/node_modules/end-of-stream/package.json +37 -0
- package/docs/reasoningbank/models/safla/node_modules/expand-template/.travis.yml +6 -0
- package/docs/reasoningbank/models/safla/node_modules/expand-template/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/expand-template/README.md +43 -0
- package/docs/reasoningbank/models/safla/node_modules/expand-template/index.js +26 -0
- package/docs/reasoningbank/models/safla/node_modules/expand-template/package.json +29 -0
- package/docs/reasoningbank/models/safla/node_modules/expand-template/test.js +67 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/.travis.yml +30 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/History.md +21 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/LICENSE +20 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/README.md +74 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/index.d.ts +2 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/index.js +66 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/package.json +32 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/test/test.js +24 -0
- package/docs/reasoningbank/models/safla/node_modules/file-uri-to-path/test/tests.json +13 -0
- package/docs/reasoningbank/models/safla/node_modules/fs-constants/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/fs-constants/README.md +26 -0
- package/docs/reasoningbank/models/safla/node_modules/fs-constants/browser.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/fs-constants/index.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/fs-constants/package.json +19 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/.travis.yml +4 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/LICENSE +18 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/example/package.json +8 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/example/url.js +3 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/index.js +17 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/package.json +30 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/readme.markdown +53 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/test/a.json +8 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/test/b.json +5 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/test/c.json +5 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/test/d.json +7 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/test/e.json +5 -0
- package/docs/reasoningbank/models/safla/node_modules/github-from-package/test/url.js +19 -0
- package/docs/reasoningbank/models/safla/node_modules/ieee754/LICENSE +11 -0
- package/docs/reasoningbank/models/safla/node_modules/ieee754/README.md +51 -0
- package/docs/reasoningbank/models/safla/node_modules/ieee754/index.d.ts +10 -0
- package/docs/reasoningbank/models/safla/node_modules/ieee754/index.js +85 -0
- package/docs/reasoningbank/models/safla/node_modules/ieee754/package.json +52 -0
- package/docs/reasoningbank/models/safla/node_modules/inherits/LICENSE +16 -0
- package/docs/reasoningbank/models/safla/node_modules/inherits/README.md +42 -0
- package/docs/reasoningbank/models/safla/node_modules/inherits/inherits.js +9 -0
- package/docs/reasoningbank/models/safla/node_modules/inherits/inherits_browser.js +27 -0
- package/docs/reasoningbank/models/safla/node_modules/inherits/package.json +29 -0
- package/docs/reasoningbank/models/safla/node_modules/ini/LICENSE +15 -0
- package/docs/reasoningbank/models/safla/node_modules/ini/README.md +102 -0
- package/docs/reasoningbank/models/safla/node_modules/ini/ini.js +206 -0
- package/docs/reasoningbank/models/safla/node_modules/ini/package.json +33 -0
- package/docs/reasoningbank/models/safla/node_modules/mimic-response/index.d.ts +17 -0
- package/docs/reasoningbank/models/safla/node_modules/mimic-response/index.js +77 -0
- package/docs/reasoningbank/models/safla/node_modules/mimic-response/license +9 -0
- package/docs/reasoningbank/models/safla/node_modules/mimic-response/package.json +42 -0
- package/docs/reasoningbank/models/safla/node_modules/mimic-response/readme.md +78 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/.eslintrc +29 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/.github/FUNDING.yml +12 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/.nycrc +14 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/CHANGELOG.md +298 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/LICENSE +18 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/README.md +121 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/example/parse.js +4 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/index.js +263 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/package.json +75 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/all_bool.js +34 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/bool.js +177 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/dash.js +43 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/default_bool.js +37 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/dotted.js +24 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/kv_short.js +32 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/long.js +33 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/num.js +38 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/parse.js +209 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/parse_modified.js +11 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/proto.js +64 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/short.js +69 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/stop_early.js +17 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/unknown.js +104 -0
- package/docs/reasoningbank/models/safla/node_modules/minimist/test/whitespace.js +10 -0
- package/docs/reasoningbank/models/safla/node_modules/mkdirp-classic/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/mkdirp-classic/README.md +18 -0
- package/docs/reasoningbank/models/safla/node_modules/mkdirp-classic/index.js +98 -0
- package/docs/reasoningbank/models/safla/node_modules/mkdirp-classic/package.json +18 -0
- package/docs/reasoningbank/models/safla/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
- package/docs/reasoningbank/models/safla/node_modules/napi-build-utils/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/napi-build-utils/README.md +52 -0
- package/docs/reasoningbank/models/safla/node_modules/napi-build-utils/index.js +214 -0
- package/docs/reasoningbank/models/safla/node_modules/napi-build-utils/index.md +0 -0
- package/docs/reasoningbank/models/safla/node_modules/napi-build-utils/package.json +42 -0
- package/docs/reasoningbank/models/safla/node_modules/node-abi/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/node-abi/README.md +54 -0
- package/docs/reasoningbank/models/safla/node_modules/node-abi/abi_registry.json +408 -0
- package/docs/reasoningbank/models/safla/node_modules/node-abi/index.js +179 -0
- package/docs/reasoningbank/models/safla/node_modules/node-abi/package.json +45 -0
- package/docs/reasoningbank/models/safla/node_modules/once/LICENSE +15 -0
- package/docs/reasoningbank/models/safla/node_modules/once/README.md +79 -0
- package/docs/reasoningbank/models/safla/node_modules/once/once.js +42 -0
- package/docs/reasoningbank/models/safla/node_modules/once/package.json +33 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/CHANGELOG.md +131 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/README.md +163 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/asset.js +44 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/bin.js +78 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/download.js +142 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/error.js +14 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/help.txt +16 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/index.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/log.js +33 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/package.json +67 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/proxy.js +35 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/rc.js +64 -0
- package/docs/reasoningbank/models/safla/node_modules/prebuild-install/util.js +143 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/.github/FUNDING.yml +2 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/.travis.yml +5 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/README.md +74 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/SECURITY.md +5 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/index.js +86 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/package.json +24 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/test-browser.js +66 -0
- package/docs/reasoningbank/models/safla/node_modules/pump/test-node.js +53 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/LICENSE.APACHE2 +15 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/LICENSE.BSD +26 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/LICENSE.MIT +24 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/README.md +227 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/browser.js +7 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/cli.js +4 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/index.js +53 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/lib/utils.js +104 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/package.json +29 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/test/ini.js +16 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/test/nested-env-vars.js +50 -0
- package/docs/reasoningbank/models/safla/node_modules/rc/test/test.js +59 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/CONTRIBUTING.md +38 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/GOVERNANCE.md +136 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/LICENSE +47 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/README.md +106 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/errors-browser.js +127 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/errors.js +116 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/experimentalWarning.js +17 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/_stream_transform.js +190 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/_stream_writable.js +641 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/package.json +68 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/readable-browser.js +9 -0
- package/docs/reasoningbank/models/safla/node_modules/readable-stream/readable.js +16 -0
- package/docs/reasoningbank/models/safla/node_modules/safe-buffer/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/safe-buffer/README.md +584 -0
- package/docs/reasoningbank/models/safla/node_modules/safe-buffer/index.d.ts +187 -0
- package/docs/reasoningbank/models/safla/node_modules/safe-buffer/index.js +65 -0
- package/docs/reasoningbank/models/safla/node_modules/safe-buffer/package.json +51 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/LICENSE +15 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/README.md +664 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/bin/semver.js +191 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/classes/comparator.js +143 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/classes/index.js +7 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/classes/range.js +557 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/classes/semver.js +333 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/clean.js +8 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/cmp.js +54 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/coerce.js +62 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/compare-build.js +9 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/compare-loose.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/compare.js +7 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/diff.js +60 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/eq.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/gt.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/gte.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/inc.js +21 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/lt.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/lte.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/major.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/minor.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/neq.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/parse.js +18 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/patch.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/prerelease.js +8 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/rcompare.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/rsort.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/satisfies.js +12 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/sort.js +5 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/functions/valid.js +8 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/index.js +91 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/internal/constants.js +37 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/internal/debug.js +11 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/internal/identifiers.js +29 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/internal/lrucache.js +42 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/internal/parse-options.js +17 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/internal/re.js +223 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/package.json +78 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/preload.js +4 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/range.bnf +16 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/gtr.js +6 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/intersects.js +9 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/ltr.js +6 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/min-version.js +63 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/outside.js +82 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/simplify.js +49 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/subset.js +249 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/to-comparators.js +10 -0
- package/docs/reasoningbank/models/safla/node_modules/semver/ranges/valid.js +13 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-concat/.travis.yml +3 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-concat/LICENSE +20 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-concat/README.md +44 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-concat/index.js +15 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-concat/package.json +47 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-concat/test/basic.js +41 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-get/.github/dependabot.yml +15 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-get/.github/workflows/ci.yml +23 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-get/LICENSE +20 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-get/README.md +333 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-get/index.js +108 -0
- package/docs/reasoningbank/models/safla/node_modules/simple-get/package.json +67 -0
- package/docs/reasoningbank/models/safla/node_modules/string_decoder/LICENSE +48 -0
- package/docs/reasoningbank/models/safla/node_modules/string_decoder/README.md +47 -0
- package/docs/reasoningbank/models/safla/node_modules/string_decoder/lib/string_decoder.js +296 -0
- package/docs/reasoningbank/models/safla/node_modules/string_decoder/package.json +34 -0
- package/docs/reasoningbank/models/safla/node_modules/strip-json-comments/index.js +70 -0
- package/docs/reasoningbank/models/safla/node_modules/strip-json-comments/license +21 -0
- package/docs/reasoningbank/models/safla/node_modules/strip-json-comments/package.json +42 -0
- package/docs/reasoningbank/models/safla/node_modules/strip-json-comments/readme.md +64 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/.travis.yml +6 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/README.md +165 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/index.js +363 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/package.json +41 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-fs/test/index.js +346 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/LICENSE +21 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/README.md +168 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/extract.js +257 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/headers.js +295 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/index.js +2 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/pack.js +255 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/package.json +58 -0
- package/docs/reasoningbank/models/safla/node_modules/tar-stream/sandbox.js +11 -0
- package/docs/reasoningbank/models/safla/node_modules/tunnel-agent/LICENSE +55 -0
- package/docs/reasoningbank/models/safla/node_modules/tunnel-agent/README.md +4 -0
- package/docs/reasoningbank/models/safla/node_modules/tunnel-agent/index.js +244 -0
- package/docs/reasoningbank/models/safla/node_modules/tunnel-agent/package.json +22 -0
- package/docs/reasoningbank/models/safla/node_modules/util-deprecate/History.md +16 -0
- package/docs/reasoningbank/models/safla/node_modules/util-deprecate/LICENSE +24 -0
- package/docs/reasoningbank/models/safla/node_modules/util-deprecate/README.md +53 -0
- package/docs/reasoningbank/models/safla/node_modules/util-deprecate/browser.js +67 -0
- package/docs/reasoningbank/models/safla/node_modules/util-deprecate/node.js +6 -0
- package/docs/reasoningbank/models/safla/node_modules/util-deprecate/package.json +27 -0
- package/docs/reasoningbank/models/safla/node_modules/wrappy/LICENSE +15 -0
- package/docs/reasoningbank/models/safla/node_modules/wrappy/README.md +36 -0
- package/docs/reasoningbank/models/safla/node_modules/wrappy/package.json +29 -0
- package/docs/reasoningbank/models/safla/node_modules/wrappy/wrappy.js +33 -0
- package/docs/reasoningbank/models/safla/package-lock.json +463 -0
- package/docs/reasoningbank/models/safla/package.json +14 -0
- package/docs/reasoningbank/models/safla/train-safla.js +524 -0
- package/docs/reasoningbank/models/safla/training.log +64 -0
- package/docs/reasoningbank/models/safla/validate-safla.js +449 -0
- package/docs/reasoningbank/models/safla/validation-report.md +115 -0
- package/docs/reasoningbank/models/safla/validation-results.json +189 -0
- package/docs/reasoningbank/tutorial-advanced.md +869 -0
- package/docs/reasoningbank/tutorial-basic.md +626 -0
- package/docs/reports/validation/PROCESS-EXIT-FIX-v2.7.0-alpha.9.md +154 -0
- package/docs/reports/validation/REASONINGBANK-v1.5.13-VALIDATION.md +1 -1
- package/docs/skills/skills-tutorial.md +2910 -0
- package/docs/skills-tutorial.md +1251 -0
- package/package.json +4 -3
- package/src/cli/simple-commands/init/index.js +32 -14
- package/src/cli/simple-commands/init/skills-copier.js +215 -0
- package/src/cli/simple-commands/process-ui-enhanced.js +1 -1
- package/src/cli/simple-commands/status.js +1 -1
- package/src/mcp/mcp-server.js +302 -2
- package/src/reasoningbank/reasoningbank-adapter.js +8 -6
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +0 -54
- package/.claude/commands/analysis/bottleneck-detect.md +0 -162
- package/.claude/commands/analysis/performance-bottlenecks.md +0 -59
- package/.claude/commands/analysis/performance-report.md +0 -25
- package/.claude/commands/flow-nexus/app-store.md +0 -124
- package/.claude/commands/flow-nexus/challenges.md +0 -120
- package/.claude/commands/flow-nexus/login-registration.md +0 -65
- package/.claude/commands/flow-nexus/neural-network.md +0 -134
- package/.claude/commands/flow-nexus/payments.md +0 -116
- package/.claude/commands/flow-nexus/sandbox.md +0 -83
- package/.claude/commands/flow-nexus/swarm.md +0 -87
- package/.claude/commands/flow-nexus/user-tools.md +0 -152
- package/.claude/commands/flow-nexus/workflow.md +0 -115
- package/.claude/commands/github/code-review-swarm.md +0 -514
- package/.claude/commands/github/github-modes.md +0 -147
- package/.claude/commands/github/issue-tracker.md +0 -292
- package/.claude/commands/github/multi-repo-swarm.md +0 -519
- package/.claude/commands/github/pr-manager.md +0 -170
- package/.claude/commands/github/project-board-sync.md +0 -471
- package/.claude/commands/github/release-manager.md +0 -338
- package/.claude/commands/github/release-swarm.md +0 -544
- package/.claude/commands/github/repo-architect.md +0 -367
- package/.claude/commands/github/swarm-issue.md +0 -482
- package/.claude/commands/github/swarm-pr.md +0 -285
- package/.claude/commands/github/sync-coordinator.md +0 -301
- package/.claude/commands/github/workflow-automation.md +0 -442
- package/.claude/commands/hive-mind/hive-mind-resume.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-stop.md +0 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +0 -8
- package/.claude/commands/hive-mind/hive-mind.md +0 -27
- package/.claude/commands/hooks/overview.md +0 -132
- package/.claude/commands/memory/usage.md +0 -46
- package/.claude/commands/pair/commands.md +0 -546
- package/.claude/commands/pair/config.md +0 -510
- package/.claude/commands/pair/examples.md +0 -512
- package/.claude/commands/pair/modes.md +0 -348
- package/.claude/commands/pair/session.md +0 -407
- package/.claude/commands/pair/start.md +0 -209
- package/.claude/commands/sparc/orchestrator.md +0 -132
- package/.claude/commands/sparc/sparc-modes.md +0 -174
- package/.claude/commands/stream-chain/pipeline.md +0 -121
- package/.claude/commands/stream-chain/run.md +0 -70
- package/.claude/commands/swarm/analysis.md +0 -95
- package/.claude/commands/swarm/development.md +0 -96
- package/.claude/commands/swarm/examples.md +0 -168
- package/.claude/commands/swarm/maintenance.md +0 -102
- package/.claude/commands/swarm/optimization.md +0 -117
- package/.claude/commands/swarm/research.md +0 -136
- package/.claude/commands/swarm/swarm-analysis.md +0 -8
- package/.claude/commands/swarm/swarm-spawn.md +0 -19
- package/.claude/commands/swarm/swarm-strategies.md +0 -8
- package/.claude/commands/swarm/testing.md +0 -131
- package/.claude/commands/truth/start.md +0 -143
- package/.claude/commands/verify/check.md +0 -50
- package/.claude/commands/verify/start.md +0 -128
- /package/{.claude/agents → docs}/reasoning/README.md +0 -0
- /package/{.claude/agents → docs}/reasoning/example-reasoning-agent-template.md +0 -0
|
@@ -1,57 +1,70 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as ReasoningBank from 'agentic-flow/reasoningbank';
|
|
2
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
|
-
let
|
|
3
|
+
let backendInitialized = false;
|
|
4
4
|
let initPromise = null;
|
|
5
5
|
const queryCache = new Map();
|
|
6
6
|
const CACHE_SIZE = 100;
|
|
7
7
|
const CACHE_TTL = 60000;
|
|
8
|
-
async function
|
|
9
|
-
if (
|
|
10
|
-
return
|
|
8
|
+
async function ensureInitialized() {
|
|
9
|
+
if (backendInitialized) {
|
|
10
|
+
return true;
|
|
11
11
|
}
|
|
12
12
|
if (initPromise) {
|
|
13
13
|
return initPromise;
|
|
14
14
|
}
|
|
15
15
|
initPromise = (async ()=>{
|
|
16
16
|
try {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
console.log('[ReasoningBank]
|
|
20
|
-
return
|
|
17
|
+
await ReasoningBank.initialize();
|
|
18
|
+
backendInitialized = true;
|
|
19
|
+
console.log('[ReasoningBank] Node.js backend initialized successfully');
|
|
20
|
+
return true;
|
|
21
21
|
} catch (error) {
|
|
22
|
-
console.error('[ReasoningBank]
|
|
23
|
-
throw new Error(`Failed to initialize ReasoningBank
|
|
22
|
+
console.error('[ReasoningBank] Backend initialization failed:', error);
|
|
23
|
+
throw new Error(`Failed to initialize ReasoningBank: ${error.message}`);
|
|
24
24
|
}
|
|
25
25
|
})();
|
|
26
26
|
return initPromise;
|
|
27
27
|
}
|
|
28
28
|
export async function initializeReasoningBank() {
|
|
29
|
-
await
|
|
29
|
+
await ensureInitialized();
|
|
30
30
|
return true;
|
|
31
31
|
}
|
|
32
32
|
export async function storeMemory(key, value, options = {}) {
|
|
33
|
-
|
|
33
|
+
await ensureInitialized();
|
|
34
34
|
try {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
const memoryId = options.id || uuidv4();
|
|
36
|
+
const memory = {
|
|
37
|
+
id: memoryId,
|
|
38
|
+
type: 'reasoning_memory',
|
|
39
|
+
pattern_data: {
|
|
40
|
+
title: key,
|
|
41
|
+
content: value,
|
|
42
|
+
domain: options.namespace || 'default',
|
|
41
43
|
agent: options.agent || 'memory-agent',
|
|
42
|
-
|
|
43
|
-
type: options.type || 'fact',
|
|
44
|
+
task_type: options.type || 'fact',
|
|
44
45
|
original_key: key,
|
|
45
46
|
original_value: value,
|
|
46
|
-
namespace: options.namespace || 'default'
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
namespace: options.namespace || 'default'
|
|
48
|
+
},
|
|
49
|
+
confidence: options.confidence || 0.8,
|
|
50
|
+
usage_count: 0
|
|
49
51
|
};
|
|
50
|
-
|
|
52
|
+
ReasoningBank.db.upsertMemory(memory);
|
|
53
|
+
try {
|
|
54
|
+
const embedding = await ReasoningBank.computeEmbedding(value);
|
|
55
|
+
ReasoningBank.db.upsertEmbedding({
|
|
56
|
+
id: memoryId,
|
|
57
|
+
model: 'text-embedding-3-small',
|
|
58
|
+
dims: embedding.length,
|
|
59
|
+
vector: embedding
|
|
60
|
+
});
|
|
61
|
+
} catch (embeddingError) {
|
|
62
|
+
console.warn('[ReasoningBank] Failed to generate embedding:', embeddingError.message);
|
|
63
|
+
}
|
|
51
64
|
queryCache.clear();
|
|
52
|
-
return
|
|
65
|
+
return memoryId;
|
|
53
66
|
} catch (error) {
|
|
54
|
-
console.error('[ReasoningBank]
|
|
67
|
+
console.error('[ReasoningBank] storeMemory failed:', error);
|
|
55
68
|
throw new Error(`Failed to store memory: ${error.message}`);
|
|
56
69
|
}
|
|
57
70
|
}
|
|
@@ -60,34 +73,41 @@ export async function queryMemories(searchQuery, options = {}) {
|
|
|
60
73
|
if (cached) {
|
|
61
74
|
return cached;
|
|
62
75
|
}
|
|
63
|
-
|
|
76
|
+
await ensureInitialized();
|
|
64
77
|
const limit = options.limit || 10;
|
|
65
|
-
const namespace = options.namespace || 'default';
|
|
78
|
+
const namespace = options.namespace || options.domain || 'default';
|
|
66
79
|
try {
|
|
67
|
-
const results = await
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
const results = await ReasoningBank.retrieveMemories(searchQuery, {
|
|
81
|
+
domain: namespace,
|
|
82
|
+
agent: options.agent || 'query-agent',
|
|
83
|
+
k: limit,
|
|
84
|
+
minConfidence: options.minConfidence || 0.3
|
|
85
|
+
});
|
|
86
|
+
const memories = results.map((memory)=>({
|
|
87
|
+
id: memory.id,
|
|
88
|
+
key: memory.title || 'unknown',
|
|
89
|
+
value: memory.content || memory.description || '',
|
|
90
|
+
namespace: namespace,
|
|
91
|
+
confidence: memory.components?.reliability || 0.8,
|
|
92
|
+
usage_count: memory.usage_count || 0,
|
|
93
|
+
created_at: memory.created_at || new Date().toISOString(),
|
|
94
|
+
score: memory.score || 0,
|
|
95
|
+
_pattern: memory
|
|
78
96
|
}));
|
|
79
97
|
if (memories.length === 0) {
|
|
80
|
-
console.warn('[ReasoningBank] Semantic search returned 0 results, trying
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
console.warn('[ReasoningBank] Semantic search returned 0 results, trying database fallback');
|
|
99
|
+
const fallbackResults = ReasoningBank.db.fetchMemoryCandidates({
|
|
100
|
+
domain: namespace,
|
|
101
|
+
minConfidence: options.minConfidence || 0.3
|
|
102
|
+
});
|
|
103
|
+
const fallbackMemories = fallbackResults.slice(0, limit).map((memory)=>({
|
|
104
|
+
id: memory.id,
|
|
105
|
+
key: memory.pattern_data?.title || memory.pattern_data?.original_key || 'unknown',
|
|
106
|
+
value: memory.pattern_data?.content || memory.pattern_data?.original_value || '',
|
|
107
|
+
namespace: memory.pattern_data?.domain || memory.pattern_data?.namespace || 'default',
|
|
108
|
+
confidence: memory.confidence || 0.8,
|
|
109
|
+
usage_count: memory.usage_count || 0,
|
|
110
|
+
created_at: memory.created_at || new Date().toISOString()
|
|
91
111
|
}));
|
|
92
112
|
setCachedQuery(searchQuery, options, fallbackMemories);
|
|
93
113
|
return fallbackMemories;
|
|
@@ -95,17 +115,20 @@ export async function queryMemories(searchQuery, options = {}) {
|
|
|
95
115
|
setCachedQuery(searchQuery, options, memories);
|
|
96
116
|
return memories;
|
|
97
117
|
} catch (error) {
|
|
98
|
-
console.warn('[ReasoningBank]
|
|
118
|
+
console.warn('[ReasoningBank] Query failed, trying database fallback:', error.message);
|
|
99
119
|
try {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
120
|
+
const fallbackResults = ReasoningBank.db.fetchMemoryCandidates({
|
|
121
|
+
domain: namespace,
|
|
122
|
+
minConfidence: options.minConfidence || 0.3
|
|
123
|
+
});
|
|
124
|
+
const fallbackMemories = fallbackResults.slice(0, limit).map((memory)=>({
|
|
125
|
+
id: memory.id,
|
|
126
|
+
key: memory.pattern_data?.title || 'unknown',
|
|
127
|
+
value: memory.pattern_data?.content || '',
|
|
128
|
+
namespace: memory.pattern_data?.domain || 'default',
|
|
129
|
+
confidence: memory.confidence || 0.8,
|
|
130
|
+
usage_count: memory.usage_count || 0,
|
|
131
|
+
created_at: memory.created_at || new Date().toISOString()
|
|
109
132
|
}));
|
|
110
133
|
setCachedQuery(searchQuery, options, fallbackMemories);
|
|
111
134
|
return fallbackMemories;
|
|
@@ -116,19 +139,25 @@ export async function queryMemories(searchQuery, options = {}) {
|
|
|
116
139
|
}
|
|
117
140
|
}
|
|
118
141
|
export async function listMemories(options = {}) {
|
|
119
|
-
|
|
142
|
+
await ensureInitialized();
|
|
120
143
|
const limit = options.limit || 10;
|
|
121
|
-
const namespace = options.namespace
|
|
144
|
+
const namespace = options.namespace;
|
|
122
145
|
try {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
146
|
+
let memories;
|
|
147
|
+
if (namespace && namespace !== 'default') {
|
|
148
|
+
const allMemories = ReasoningBank.db.getAllActiveMemories();
|
|
149
|
+
memories = allMemories.filter((m)=>m.pattern_data?.domain === namespace).slice(0, limit);
|
|
150
|
+
} else {
|
|
151
|
+
memories = ReasoningBank.db.getAllActiveMemories().slice(0, limit);
|
|
152
|
+
}
|
|
153
|
+
return memories.map((memory)=>({
|
|
154
|
+
id: memory.id,
|
|
155
|
+
key: memory.pattern_data?.title || memory.pattern_data?.original_key || 'unknown',
|
|
156
|
+
value: memory.pattern_data?.content || memory.pattern_data?.original_value || '',
|
|
157
|
+
namespace: memory.pattern_data?.domain || memory.pattern_data?.namespace || 'default',
|
|
158
|
+
confidence: memory.confidence || 0.8,
|
|
159
|
+
usage_count: memory.usage_count || 0,
|
|
160
|
+
created_at: memory.created_at || new Date().toISOString()
|
|
132
161
|
}));
|
|
133
162
|
} catch (error) {
|
|
134
163
|
console.error('[ReasoningBank] listMemories failed:', error);
|
|
@@ -136,19 +165,25 @@ export async function listMemories(options = {}) {
|
|
|
136
165
|
}
|
|
137
166
|
}
|
|
138
167
|
export async function getStatus() {
|
|
139
|
-
|
|
168
|
+
await ensureInitialized();
|
|
140
169
|
try {
|
|
141
|
-
const
|
|
170
|
+
const db = ReasoningBank.db.getDb();
|
|
171
|
+
const patterns = db.prepare("SELECT COUNT(*) as count FROM patterns WHERE type = 'reasoning_memory'").get();
|
|
172
|
+
const embeddings = db.prepare("SELECT COUNT(*) as count FROM pattern_embeddings").get();
|
|
173
|
+
const trajectories = db.prepare("SELECT COUNT(*) as count FROM task_trajectories").get();
|
|
174
|
+
const links = db.prepare("SELECT COUNT(*) as count FROM pattern_links").get();
|
|
175
|
+
const avgConf = db.prepare("SELECT AVG(confidence) as avg FROM patterns WHERE type = 'reasoning_memory'").get();
|
|
176
|
+
const domains = db.prepare("SELECT COUNT(DISTINCT json_extract(pattern_data, '$.domain')) as count FROM patterns WHERE type = 'reasoning_memory'").get();
|
|
142
177
|
return {
|
|
143
|
-
total_memories:
|
|
144
|
-
total_categories:
|
|
145
|
-
storage_backend:
|
|
146
|
-
|
|
147
|
-
performance: '
|
|
148
|
-
avg_confidence: 0.8,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
178
|
+
total_memories: patterns.count || 0,
|
|
179
|
+
total_categories: domains.count || 0,
|
|
180
|
+
storage_backend: 'SQLite (Node.js)',
|
|
181
|
+
database_path: process.env.CLAUDE_FLOW_DB_PATH || '.swarm/memory.db',
|
|
182
|
+
performance: 'SQLite with persistent storage',
|
|
183
|
+
avg_confidence: avgConf.avg || 0.8,
|
|
184
|
+
total_embeddings: embeddings.count || 0,
|
|
185
|
+
total_trajectories: trajectories.count || 0,
|
|
186
|
+
total_links: links.count || 0
|
|
152
187
|
};
|
|
153
188
|
} catch (error) {
|
|
154
189
|
console.error('[ReasoningBank] getStatus failed:', error);
|
|
@@ -159,20 +194,25 @@ export async function getStatus() {
|
|
|
159
194
|
}
|
|
160
195
|
}
|
|
161
196
|
export async function checkReasoningBankTables() {
|
|
162
|
-
const wasm = await getWasmInstance();
|
|
163
197
|
try {
|
|
164
|
-
await
|
|
198
|
+
await ensureInitialized();
|
|
199
|
+
const db = ReasoningBank.db.getDb();
|
|
200
|
+
const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'pattern%'").all();
|
|
201
|
+
const tableNames = tables.map((t)=>t.name);
|
|
202
|
+
const requiredTables = [
|
|
203
|
+
'patterns',
|
|
204
|
+
'pattern_embeddings',
|
|
205
|
+
'pattern_links',
|
|
206
|
+
'task_trajectories'
|
|
207
|
+
];
|
|
208
|
+
const missingTables = requiredTables.filter((t)=>!tableNames.includes(t));
|
|
165
209
|
return {
|
|
166
210
|
exists: true,
|
|
167
|
-
existingTables:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
'WASM patterns storage'
|
|
173
|
-
],
|
|
174
|
-
backend: 'WASM',
|
|
175
|
-
note: 'WASM backend does not use traditional SQL tables'
|
|
211
|
+
existingTables: tableNames,
|
|
212
|
+
missingTables: missingTables,
|
|
213
|
+
requiredTables: requiredTables,
|
|
214
|
+
backend: 'SQLite (Node.js)',
|
|
215
|
+
note: missingTables.length > 0 ? 'Some tables are missing - run migrations' : 'All tables present'
|
|
176
216
|
};
|
|
177
217
|
} catch (error) {
|
|
178
218
|
return {
|
|
@@ -186,17 +226,17 @@ export async function checkReasoningBankTables() {
|
|
|
186
226
|
}
|
|
187
227
|
export async function migrateReasoningBank() {
|
|
188
228
|
try {
|
|
189
|
-
await
|
|
229
|
+
await ReasoningBank.db.runMigrations();
|
|
190
230
|
return {
|
|
191
231
|
success: true,
|
|
192
|
-
message: '
|
|
193
|
-
migrated:
|
|
194
|
-
|
|
232
|
+
message: 'Database migrations completed successfully',
|
|
233
|
+
migrated: true,
|
|
234
|
+
database_path: process.env.CLAUDE_FLOW_DB_PATH || '.swarm/memory.db'
|
|
195
235
|
};
|
|
196
236
|
} catch (error) {
|
|
197
237
|
return {
|
|
198
238
|
success: false,
|
|
199
|
-
message: `
|
|
239
|
+
message: `Migration failed: ${error.message}`,
|
|
200
240
|
error: error.message
|
|
201
241
|
};
|
|
202
242
|
}
|
|
@@ -226,5 +266,18 @@ function setCachedQuery(searchQuery, options, results) {
|
|
|
226
266
|
timestamp: Date.now()
|
|
227
267
|
});
|
|
228
268
|
}
|
|
269
|
+
export function cleanup() {
|
|
270
|
+
try {
|
|
271
|
+
if (backendInitialized) {
|
|
272
|
+
ReasoningBank.clearEmbeddingCache();
|
|
273
|
+
ReasoningBank.db.closeDb();
|
|
274
|
+
backendInitialized = false;
|
|
275
|
+
initPromise = null;
|
|
276
|
+
console.log('[ReasoningBank] Database connection closed');
|
|
277
|
+
}
|
|
278
|
+
} catch (error) {
|
|
279
|
+
console.error('[ReasoningBank] Cleanup failed:', error.message);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
229
282
|
|
|
230
283
|
//# sourceMappingURL=reasoningbank-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/reasoningbank/reasoningbank-adapter.js"],"sourcesContent":["/**\n * ReasoningBank Adapter for Claude-Flow (WASM-Powered)\n *\n * Wraps agentic-flow's ReasoningBank WASM for ultra-fast performance\n * Performance: 3ms/op storage, 10,000-25,000 ops/sec (250x+ faster than SDK)\n *\n * Now uses agentic-flow@1.5.12 with proper ESM WASM bindings!\n */\n\nimport { createReasoningBank } from 'agentic-flow/dist/reasoningbank/wasm-adapter.js';\nimport { v4 as uuidv4 } from 'uuid';\n\n// WASM instance (singleton)\nlet wasmInstance = null;\nlet initPromise = null;\n\n// Query result cache (LRU)\nconst queryCache = new Map();\nconst CACHE_SIZE = 100;\nconst CACHE_TTL = 60000; // 60 seconds\n\n/**\n * Initialize ReasoningBank WASM instance\n * @returns {Promise<ReasoningBankAdapter>}\n */\nasync function getWasmInstance() {\n if (wasmInstance) {\n return wasmInstance;\n }\n\n if (initPromise) {\n return initPromise;\n }\n\n initPromise = (async () => {\n try {\n // Create WASM instance with database name from environment or default\n const dbName = process.env.CLAUDE_FLOW_DB_NAME || 'claude-flow-memory';\n wasmInstance = await createReasoningBank(dbName);\n console.log('[ReasoningBank] WASM initialized successfully');\n return wasmInstance;\n } catch (error) {\n console.error('[ReasoningBank] WASM initialization failed:', error);\n throw new Error(`Failed to initialize ReasoningBank WASM: ${error.message}`);\n }\n })();\n\n return initPromise;\n}\n\n/**\n * Initialize ReasoningBank database (WASM version)\n */\nexport async function initializeReasoningBank() {\n // Just initialize the WASM instance\n await getWasmInstance();\n return true;\n}\n\n/**\n * Store a memory in ReasoningBank (WASM-powered for 0.04ms performance)\n *\n * Maps claude-flow memory model to ReasoningBank pattern model:\n * - key -> strategy\n * - value -> task_description\n * - namespace -> task_category\n * - confidence -> success_score\n */\nexport async function storeMemory(key, value, options = {}) {\n const wasm = await getWasmInstance();\n\n try {\n // Map our memory model to ReasoningBank pattern model\n const pattern = {\n task_description: value,\n task_category: options.namespace || 'default',\n strategy: key,\n success_score: options.confidence || 0.8,\n // Include metadata for compatibility\n metadata: {\n agent: options.agent || 'memory-agent',\n domain: options.domain || 'general',\n type: options.type || 'fact',\n original_key: key,\n original_value: value,\n namespace: options.namespace || 'default',\n created_at: new Date().toISOString()\n }\n };\n\n // Store using WASM (ultra-fast: 0.04ms/op)\n const patternId = await wasm.storePattern(pattern);\n\n // Invalidate query cache when new memory is added\n queryCache.clear();\n\n return patternId;\n } catch (error) {\n console.error('[ReasoningBank] WASM storeMemory failed:', error);\n throw new Error(`Failed to store memory: ${error.message}`);\n }\n}\n\n/**\n * Query memories from ReasoningBank (WASM-powered semantic search)\n *\n * Uses WASM findSimilar for ultra-fast semantic search\n * Fallback to searchByCategory if semantic search fails\n */\nexport async function queryMemories(searchQuery, options = {}) {\n // Check cache first\n const cached = getCachedQuery(searchQuery, options);\n if (cached) {\n return cached;\n }\n\n const wasm = await getWasmInstance();\n const limit = options.limit || 10;\n const namespace = options.namespace || 'default';\n\n try {\n // Try semantic search first (WASM-powered, ultra-fast)\n const results = await wasm.findSimilar(\n searchQuery,\n namespace,\n limit\n );\n\n // Map WASM pattern results to our memory format\n const memories = results.map(pattern => ({\n id: pattern.id || `mem_${uuidv4()}`,\n key: pattern.strategy || pattern.metadata?.original_key || 'unknown',\n value: pattern.task_description || pattern.metadata?.original_value || '',\n namespace: pattern.task_category || pattern.metadata?.namespace || 'default',\n confidence: pattern.success_score || 0.8,\n usage_count: pattern.usage_count || 0,\n created_at: pattern.metadata?.created_at || new Date().toISOString(),\n score: pattern.similarity_score || 0,\n // Include original pattern for debugging\n _pattern: pattern\n }));\n\n // If no results, try category search as fallback\n if (memories.length === 0) {\n console.warn('[ReasoningBank] Semantic search returned 0 results, trying category fallback');\n const categoryResults = await wasm.searchByCategory(namespace, limit);\n\n const fallbackMemories = categoryResults.map(pattern => ({\n id: pattern.id || `mem_${uuidv4()}`,\n key: pattern.strategy || pattern.metadata?.original_key || 'unknown',\n value: pattern.task_description || pattern.metadata?.original_value || '',\n namespace: pattern.task_category || pattern.metadata?.namespace || 'default',\n confidence: pattern.success_score || 0.8,\n usage_count: pattern.usage_count || 0,\n created_at: pattern.metadata?.created_at || new Date().toISOString(),\n _pattern: pattern\n }));\n\n // Cache and return fallback results\n setCachedQuery(searchQuery, options, fallbackMemories);\n return fallbackMemories;\n }\n\n // Cache successful results\n setCachedQuery(searchQuery, options, memories);\n return memories;\n } catch (error) {\n console.warn('[ReasoningBank] WASM query failed, trying category fallback:', error.message);\n\n try {\n // Final fallback: search by category\n const categoryResults = await wasm.searchByCategory(namespace, limit);\n\n const fallbackMemories = categoryResults.map(pattern => ({\n id: pattern.id || `mem_${uuidv4()}`,\n key: pattern.strategy || pattern.metadata?.original_key || 'unknown',\n value: pattern.task_description || pattern.metadata?.original_value || '',\n namespace: pattern.task_category || pattern.metadata?.namespace || 'default',\n confidence: pattern.success_score || 0.8,\n usage_count: pattern.usage_count || 0,\n created_at: pattern.metadata?.created_at || new Date().toISOString()\n }));\n\n setCachedQuery(searchQuery, options, fallbackMemories);\n return fallbackMemories;\n } catch (fallbackError) {\n console.error('[ReasoningBank] All query methods failed:', fallbackError);\n return [];\n }\n }\n}\n\n/**\n * List all memories (using WASM searchByCategory with no filter)\n */\nexport async function listMemories(options = {}) {\n const wasm = await getWasmInstance();\n const limit = options.limit || 10;\n const namespace = options.namespace || 'default';\n\n try {\n // Use category search to list all memories in namespace\n const patterns = await wasm.searchByCategory(namespace, limit);\n\n return patterns.map(pattern => ({\n id: pattern.id || `mem_${uuidv4()}`,\n key: pattern.strategy || pattern.metadata?.original_key || 'unknown',\n value: pattern.task_description || pattern.metadata?.original_value || '',\n namespace: pattern.task_category || pattern.metadata?.namespace || 'default',\n confidence: pattern.success_score || 0.8,\n usage_count: pattern.usage_count || 0,\n created_at: pattern.metadata?.created_at || new Date().toISOString()\n }));\n } catch (error) {\n console.error('[ReasoningBank] listMemories failed:', error);\n return [];\n }\n}\n\n/**\n * Get ReasoningBank statistics (WASM-powered)\n */\nexport async function getStatus() {\n const wasm = await getWasmInstance();\n\n try {\n const stats = await wasm.getStats();\n\n return {\n total_memories: stats.total_patterns || 0,\n total_categories: stats.total_categories || 0,\n storage_backend: stats.storage_backend || 'unknown',\n wasm_version: stats.wasm_version || '1.5.11',\n performance: 'WASM-powered (0.04ms/op)',\n avg_confidence: 0.8, // WASM doesn't track this, use default\n total_usage: 0, // WASM doesn't track this\n total_embeddings: stats.total_patterns || 0,\n total_trajectories: 0 // Not applicable in WASM\n };\n } catch (error) {\n console.error('[ReasoningBank] getStatus failed:', error);\n return {\n total_memories: 0,\n error: error.message\n };\n }\n}\n\n/**\n * Check which ReasoningBank tables are present (WASM version always has required data)\n */\nexport async function checkReasoningBankTables() {\n const wasm = await getWasmInstance();\n\n try {\n await wasm.getStats();\n\n return {\n exists: true,\n existingTables: ['WASM patterns storage'],\n missingTables: [],\n requiredTables: ['WASM patterns storage'],\n backend: 'WASM',\n note: 'WASM backend does not use traditional SQL tables'\n };\n } catch (error) {\n return {\n exists: false,\n existingTables: [],\n missingTables: [],\n requiredTables: [],\n error: error.message\n };\n }\n}\n\n/**\n * Migrate existing database (not needed for WASM, always initialized)\n */\nexport async function migrateReasoningBank() {\n try {\n await getWasmInstance();\n\n return {\n success: true,\n message: 'WASM backend initialized successfully',\n migrated: false,\n note: 'WASM backend does not require traditional migration'\n };\n } catch (error) {\n return {\n success: false,\n message: `WASM initialization failed: ${error.message}`,\n error: error.message\n };\n }\n}\n\n/**\n * Get cached query results\n */\nfunction getCachedQuery(searchQuery, options) {\n const cacheKey = JSON.stringify({ searchQuery, options });\n const cached = queryCache.get(cacheKey);\n\n if (cached && Date.now() - cached.timestamp < CACHE_TTL) {\n return cached.results;\n }\n\n return null;\n}\n\n/**\n * Set cached query results (LRU eviction)\n */\nfunction setCachedQuery(searchQuery, options, results) {\n const cacheKey = JSON.stringify({ searchQuery, options });\n\n // LRU eviction\n if (queryCache.size >= CACHE_SIZE) {\n const firstKey = queryCache.keys().next().value;\n queryCache.delete(firstKey);\n }\n\n queryCache.set(cacheKey, {\n results,\n timestamp: Date.now()\n });\n}\n"],"names":["createReasoningBank","v4","uuidv4","wasmInstance","initPromise","queryCache","Map","CACHE_SIZE","CACHE_TTL","getWasmInstance","dbName","process","env","CLAUDE_FLOW_DB_NAME","console","log","error","Error","message","initializeReasoningBank","storeMemory","key","value","options","wasm","pattern","task_description","task_category","namespace","strategy","success_score","confidence","metadata","agent","domain","type","original_key","original_value","created_at","Date","toISOString","patternId","storePattern","clear","queryMemories","searchQuery","cached","getCachedQuery","limit","results","findSimilar","memories","map","id","usage_count","score","similarity_score","_pattern","length","warn","categoryResults","searchByCategory","fallbackMemories","setCachedQuery","fallbackError","listMemories","patterns","getStatus","stats","getStats","total_memories","total_patterns","total_categories","storage_backend","wasm_version","performance","avg_confidence","total_usage","total_embeddings","total_trajectories","checkReasoningBankTables","exists","existingTables","missingTables","requiredTables","backend","note","migrateReasoningBank","success","migrated","cacheKey","JSON","stringify","get","now","timestamp","size","firstKey","keys","next","delete","set"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/reasoningbank/reasoningbank-adapter.js"],"sourcesContent":["/**\n * ReasoningBank Adapter for Claude-Flow (Node.js Backend)\n *\n * Uses agentic-flow@1.5.13 Node.js backend with SQLite for persistent storage\n * Provides semantic search via embeddings and MMR ranking\n *\n * Backend: SQLite with better-sqlite3\n * Features: Persistent storage, semantic search, memory consolidation\n */\n\nimport * as ReasoningBank from 'agentic-flow/reasoningbank';\nimport { v4 as uuidv4 } from 'uuid';\n\n// Backend instance (singleton)\nlet backendInitialized = false;\nlet initPromise = null;\n\n// Query result cache (LRU)\nconst queryCache = new Map();\nconst CACHE_SIZE = 100;\nconst CACHE_TTL = 60000; // 60 seconds\n\n/**\n * Initialize ReasoningBank Node.js backend\n * @returns {Promise<boolean>}\n */\nasync function ensureInitialized() {\n if (backendInitialized) {\n return true;\n }\n\n if (initPromise) {\n return initPromise;\n }\n\n initPromise = (async () => {\n try {\n // Initialize Node.js backend with SQLite database\n await ReasoningBank.initialize();\n backendInitialized = true;\n console.log('[ReasoningBank] Node.js backend initialized successfully');\n return true;\n } catch (error) {\n console.error('[ReasoningBank] Backend initialization failed:', error);\n throw new Error(`Failed to initialize ReasoningBank: ${error.message}`);\n }\n })();\n\n return initPromise;\n}\n\n/**\n * Initialize ReasoningBank database (Node.js version)\n */\nexport async function initializeReasoningBank() {\n // Initialize the Node.js backend\n await ensureInitialized();\n return true;\n}\n\n/**\n * Store a memory in ReasoningBank (Node.js backend with SQLite)\n *\n * Maps claude-flow memory model to ReasoningBank pattern model:\n * - key -> title\n * - value -> content (searchable text)\n * - namespace -> domain\n * - confidence -> confidence score\n */\nexport async function storeMemory(key, value, options = {}) {\n await ensureInitialized();\n\n try {\n const memoryId = options.id || uuidv4();\n\n // Map our memory model to ReasoningBank pattern model\n const memory = {\n id: memoryId,\n type: 'reasoning_memory',\n pattern_data: {\n title: key,\n content: value,\n domain: options.namespace || 'default',\n agent: options.agent || 'memory-agent',\n task_type: options.type || 'fact',\n // Store original values for compatibility\n original_key: key,\n original_value: value,\n namespace: options.namespace || 'default'\n },\n confidence: options.confidence || 0.8,\n usage_count: 0\n };\n\n // Store memory using Node.js backend\n ReasoningBank.db.upsertMemory(memory);\n\n // Generate and store embedding for semantic search\n try {\n const embedding = await ReasoningBank.computeEmbedding(value);\n ReasoningBank.db.upsertEmbedding({\n id: memoryId,\n model: 'text-embedding-3-small', // Default model\n dims: embedding.length,\n vector: embedding\n });\n } catch (embeddingError) {\n console.warn('[ReasoningBank] Failed to generate embedding:', embeddingError.message);\n // Continue without embedding - memory is still stored\n }\n\n // Invalidate query cache when new memory is added\n queryCache.clear();\n\n return memoryId;\n } catch (error) {\n console.error('[ReasoningBank] storeMemory failed:', error);\n throw new Error(`Failed to store memory: ${error.message}`);\n }\n}\n\n/**\n * Query memories from ReasoningBank (Node.js backend with semantic search)\n *\n * Uses retrieveMemories for semantic search via embeddings and MMR ranking\n * Fallback to database query if semantic search fails\n */\nexport async function queryMemories(searchQuery, options = {}) {\n // Check cache first\n const cached = getCachedQuery(searchQuery, options);\n if (cached) {\n return cached;\n }\n\n await ensureInitialized();\n const limit = options.limit || 10;\n // Accept both 'namespace' and 'domain' for compatibility\n const namespace = options.namespace || options.domain || 'default';\n\n try {\n // Try semantic search first using retrieveMemories\n const results = await ReasoningBank.retrieveMemories(searchQuery, {\n domain: namespace,\n agent: options.agent || 'query-agent',\n k: limit,\n minConfidence: options.minConfidence || 0.3\n });\n\n // Map backend results to our memory format\n // retrieveMemories returns: { id, title, content, description, score, components }\n const memories = results.map(memory => ({\n id: memory.id,\n key: memory.title || 'unknown',\n value: memory.content || memory.description || '',\n namespace: namespace, // Use the namespace from our query\n confidence: memory.components?.reliability || 0.8,\n usage_count: memory.usage_count || 0,\n created_at: memory.created_at || new Date().toISOString(),\n score: memory.score || 0,\n // Include original pattern for debugging\n _pattern: memory\n }));\n\n // If no results, try direct database query as fallback\n if (memories.length === 0) {\n console.warn('[ReasoningBank] Semantic search returned 0 results, trying database fallback');\n const fallbackResults = ReasoningBank.db.fetchMemoryCandidates({\n domain: namespace,\n minConfidence: options.minConfidence || 0.3\n });\n\n const fallbackMemories = fallbackResults.slice(0, limit).map(memory => ({\n id: memory.id,\n key: memory.pattern_data?.title || memory.pattern_data?.original_key || 'unknown',\n value: memory.pattern_data?.content || memory.pattern_data?.original_value || '',\n namespace: memory.pattern_data?.domain || memory.pattern_data?.namespace || 'default',\n confidence: memory.confidence || 0.8,\n usage_count: memory.usage_count || 0,\n created_at: memory.created_at || new Date().toISOString()\n }));\n\n // Cache and return fallback results\n setCachedQuery(searchQuery, options, fallbackMemories);\n return fallbackMemories;\n }\n\n // Cache successful results\n setCachedQuery(searchQuery, options, memories);\n return memories;\n } catch (error) {\n console.warn('[ReasoningBank] Query failed, trying database fallback:', error.message);\n\n try {\n // Final fallback: direct database query\n const fallbackResults = ReasoningBank.db.fetchMemoryCandidates({\n domain: namespace,\n minConfidence: options.minConfidence || 0.3\n });\n\n const fallbackMemories = fallbackResults.slice(0, limit).map(memory => ({\n id: memory.id,\n key: memory.pattern_data?.title || 'unknown',\n value: memory.pattern_data?.content || '',\n namespace: memory.pattern_data?.domain || 'default',\n confidence: memory.confidence || 0.8,\n usage_count: memory.usage_count || 0,\n created_at: memory.created_at || new Date().toISOString()\n }));\n\n setCachedQuery(searchQuery, options, fallbackMemories);\n return fallbackMemories;\n } catch (fallbackError) {\n console.error('[ReasoningBank] All query methods failed:', fallbackError);\n return [];\n }\n }\n}\n\n/**\n * List all memories (using Node.js backend database query)\n */\nexport async function listMemories(options = {}) {\n await ensureInitialized();\n const limit = options.limit || 10;\n const namespace = options.namespace;\n\n try {\n let memories;\n\n if (namespace && namespace !== 'default') {\n // Filter by namespace/domain\n const allMemories = ReasoningBank.db.getAllActiveMemories();\n memories = allMemories\n .filter(m => m.pattern_data?.domain === namespace)\n .slice(0, limit);\n } else {\n // Get all active memories\n memories = ReasoningBank.db.getAllActiveMemories().slice(0, limit);\n }\n\n return memories.map(memory => ({\n id: memory.id,\n key: memory.pattern_data?.title || memory.pattern_data?.original_key || 'unknown',\n value: memory.pattern_data?.content || memory.pattern_data?.original_value || '',\n namespace: memory.pattern_data?.domain || memory.pattern_data?.namespace || 'default',\n confidence: memory.confidence || 0.8,\n usage_count: memory.usage_count || 0,\n created_at: memory.created_at || new Date().toISOString()\n }));\n } catch (error) {\n console.error('[ReasoningBank] listMemories failed:', error);\n return [];\n }\n}\n\n/**\n * Get ReasoningBank statistics (Node.js backend)\n */\nexport async function getStatus() {\n await ensureInitialized();\n\n try {\n const db = ReasoningBank.db.getDb();\n\n // Count patterns\n const patterns = db.prepare(\"SELECT COUNT(*) as count FROM patterns WHERE type = 'reasoning_memory'\").get();\n const embeddings = db.prepare(\"SELECT COUNT(*) as count FROM pattern_embeddings\").get();\n const trajectories = db.prepare(\"SELECT COUNT(*) as count FROM task_trajectories\").get();\n const links = db.prepare(\"SELECT COUNT(*) as count FROM pattern_links\").get();\n\n // Get average confidence\n const avgConf = db.prepare(\"SELECT AVG(confidence) as avg FROM patterns WHERE type = 'reasoning_memory'\").get();\n\n // Count unique domains\n const domains = db.prepare(\"SELECT COUNT(DISTINCT json_extract(pattern_data, '$.domain')) as count FROM patterns WHERE type = 'reasoning_memory'\").get();\n\n return {\n total_memories: patterns.count || 0,\n total_categories: domains.count || 0,\n storage_backend: 'SQLite (Node.js)',\n database_path: process.env.CLAUDE_FLOW_DB_PATH || '.swarm/memory.db',\n performance: 'SQLite with persistent storage',\n avg_confidence: avgConf.avg || 0.8,\n total_embeddings: embeddings.count || 0,\n total_trajectories: trajectories.count || 0,\n total_links: links.count || 0\n };\n } catch (error) {\n console.error('[ReasoningBank] getStatus failed:', error);\n return {\n total_memories: 0,\n error: error.message\n };\n }\n}\n\n/**\n * Check which ReasoningBank tables are present (Node.js backend)\n */\nexport async function checkReasoningBankTables() {\n try {\n await ensureInitialized();\n const db = ReasoningBank.db.getDb();\n\n const tables = db.prepare(\"SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'pattern%'\").all();\n const tableNames = tables.map(t => t.name);\n\n const requiredTables = ['patterns', 'pattern_embeddings', 'pattern_links', 'task_trajectories'];\n const missingTables = requiredTables.filter(t => !tableNames.includes(t));\n\n return {\n exists: true,\n existingTables: tableNames,\n missingTables: missingTables,\n requiredTables: requiredTables,\n backend: 'SQLite (Node.js)',\n note: missingTables.length > 0 ? 'Some tables are missing - run migrations' : 'All tables present'\n };\n } catch (error) {\n return {\n exists: false,\n existingTables: [],\n missingTables: [],\n requiredTables: [],\n error: error.message\n };\n }\n}\n\n/**\n * Migrate existing database (Node.js backend - run migrations)\n */\nexport async function migrateReasoningBank() {\n try {\n await ReasoningBank.db.runMigrations();\n\n return {\n success: true,\n message: 'Database migrations completed successfully',\n migrated: true,\n database_path: process.env.CLAUDE_FLOW_DB_PATH || '.swarm/memory.db'\n };\n } catch (error) {\n return {\n success: false,\n message: `Migration failed: ${error.message}`,\n error: error.message\n };\n }\n}\n\n/**\n * Get cached query results\n */\nfunction getCachedQuery(searchQuery, options) {\n const cacheKey = JSON.stringify({ searchQuery, options });\n const cached = queryCache.get(cacheKey);\n\n if (cached && Date.now() - cached.timestamp < CACHE_TTL) {\n return cached.results;\n }\n\n return null;\n}\n\n/**\n * Set cached query results (LRU eviction)\n */\nfunction setCachedQuery(searchQuery, options, results) {\n const cacheKey = JSON.stringify({ searchQuery, options });\n\n // LRU eviction\n if (queryCache.size >= CACHE_SIZE) {\n const firstKey = queryCache.keys().next().value;\n queryCache.delete(firstKey);\n }\n\n queryCache.set(cacheKey, {\n results,\n timestamp: Date.now()\n });\n}\n\n/**\n * Close database connection and cleanup resources\n * Should be called when done with ReasoningBank operations\n */\nexport function cleanup() {\n try {\n if (backendInitialized) {\n // Clear embedding cache (prevents memory leaks)\n ReasoningBank.clearEmbeddingCache();\n\n // Close database connection\n ReasoningBank.db.closeDb();\n backendInitialized = false;\n initPromise = null;\n console.log('[ReasoningBank] Database connection closed');\n }\n } catch (error) {\n console.error('[ReasoningBank] Cleanup failed:', error.message);\n }\n}\n"],"names":["ReasoningBank","v4","uuidv4","backendInitialized","initPromise","queryCache","Map","CACHE_SIZE","CACHE_TTL","ensureInitialized","initialize","console","log","error","Error","message","initializeReasoningBank","storeMemory","key","value","options","memoryId","id","memory","type","pattern_data","title","content","domain","namespace","agent","task_type","original_key","original_value","confidence","usage_count","db","upsertMemory","embedding","computeEmbedding","upsertEmbedding","model","dims","length","vector","embeddingError","warn","clear","queryMemories","searchQuery","cached","getCachedQuery","limit","results","retrieveMemories","k","minConfidence","memories","map","description","components","reliability","created_at","Date","toISOString","score","_pattern","fallbackResults","fetchMemoryCandidates","fallbackMemories","slice","setCachedQuery","fallbackError","listMemories","allMemories","getAllActiveMemories","filter","m","getStatus","getDb","patterns","prepare","get","embeddings","trajectories","links","avgConf","domains","total_memories","count","total_categories","storage_backend","database_path","process","env","CLAUDE_FLOW_DB_PATH","performance","avg_confidence","avg","total_embeddings","total_trajectories","total_links","checkReasoningBankTables","tables","all","tableNames","t","name","requiredTables","missingTables","includes","exists","existingTables","backend","note","migrateReasoningBank","runMigrations","success","migrated","cacheKey","JSON","stringify","now","timestamp","size","firstKey","keys","next","delete","set","cleanup","clearEmbeddingCache","closeDb"],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
3
|
import { exec } from 'child_process';
|
|
4
4
|
import { promisify } from 'util';
|
|
5
5
|
const execAsync = promisify(exec);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
let MetricsReader = class MetricsReader {
|
|
7
|
+
constructor(){
|
|
8
|
+
this.metricsDir = '.claude-flow/metrics';
|
|
9
|
+
this.sessionsDir = '.claude-flow/sessions';
|
|
10
|
+
}
|
|
9
11
|
async getSystemMetrics() {
|
|
10
12
|
try {
|
|
11
13
|
const filePath = path.join(this.metricsDir, 'system-metrics.json');
|
|
@@ -16,6 +18,15 @@ export class MetricsReader {
|
|
|
16
18
|
return null;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
21
|
+
async getTaskQueue() {
|
|
22
|
+
try {
|
|
23
|
+
const queueFile = '.claude-flow/tasks/queue.json';
|
|
24
|
+
const content = await fs.readFile(queueFile, 'utf8');
|
|
25
|
+
return JSON.parse(content);
|
|
26
|
+
} catch (error) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
19
30
|
async getTaskMetrics() {
|
|
20
31
|
try {
|
|
21
32
|
const filePath = path.join(this.metricsDir, 'task-metrics.json');
|
|
@@ -36,30 +47,30 @@ export class MetricsReader {
|
|
|
36
47
|
}
|
|
37
48
|
async getActiveAgents() {
|
|
38
49
|
try {
|
|
39
|
-
const perfMetrics = await this.getPerformanceMetrics();
|
|
40
|
-
const sessionFiles = await this.getSessionFiles();
|
|
41
50
|
const agents = [];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
|
|
51
|
+
const agentsDir = '.claude-flow/agents';
|
|
52
|
+
try {
|
|
53
|
+
const agentFiles = await fs.readdir(agentsDir);
|
|
54
|
+
for (const file of agentFiles){
|
|
55
|
+
if (file.endsWith('.json')) {
|
|
56
|
+
try {
|
|
57
|
+
const content = await fs.readFile(path.join(agentsDir, file), 'utf8');
|
|
58
|
+
const agent = JSON.parse(content);
|
|
59
|
+
agents.push(agent);
|
|
60
|
+
} catch {}
|
|
48
61
|
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (agents.length === 0
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
lastActivity: Date.now() - i * 1000
|
|
62
|
-
});
|
|
62
|
+
}
|
|
63
|
+
} catch {}
|
|
64
|
+
if (agents.length === 0) {
|
|
65
|
+
const sessionFiles = await this.getSessionFiles();
|
|
66
|
+
for (const file of sessionFiles){
|
|
67
|
+
try {
|
|
68
|
+
const content = await fs.readFile(path.join(this.sessionsDir, 'pair', file), 'utf8');
|
|
69
|
+
const sessionData = JSON.parse(content);
|
|
70
|
+
if (sessionData.agents && Array.isArray(sessionData.agents)) {
|
|
71
|
+
agents.push(...sessionData.agents);
|
|
72
|
+
}
|
|
73
|
+
} catch {}
|
|
63
74
|
}
|
|
64
75
|
}
|
|
65
76
|
return agents;
|
|
@@ -135,7 +146,7 @@ export class MetricsReader {
|
|
|
135
146
|
}
|
|
136
147
|
async getMCPServerStatus() {
|
|
137
148
|
try {
|
|
138
|
-
const { stdout } = await execAsync('ps aux | grep -E "mcp
|
|
149
|
+
const { stdout } = await execAsync('ps aux | grep -E "mcp" | grep -v grep | wc -l');
|
|
139
150
|
const processCount = parseInt(stdout.trim(), 10);
|
|
140
151
|
const { stdout: orchestratorOut } = await execAsync('ps aux | grep -E "claude-flow start" | grep -v grep | wc -l');
|
|
141
152
|
const orchestratorRunning = parseInt(orchestratorOut.trim(), 10) > 0;
|
|
@@ -164,15 +175,6 @@ export class MetricsReader {
|
|
|
164
175
|
};
|
|
165
176
|
}
|
|
166
177
|
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
//# sourceMappingURL=metrics-reader.js.map processCount: 0,
|
|
170
|
-
orchestratorRunning: false,
|
|
171
|
-
port: null,
|
|
172
|
-
connections: 0
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
178
|
};
|
|
177
179
|
export { MetricsReader };
|
|
178
180
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/metrics-reader.ts"],"sourcesContent":["import * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\ninterface SystemMetrics {\n timestamp: number;\n memoryTotal: number;\n memoryUsed: number;\n memoryFree: number;\n memoryUsagePercent: number;\n memoryEfficiency: number;\n cpuCount: number;\n cpuLoad: number;\n platform: string;\n uptime: number;\n}\n\ninterface TaskMetric {\n id: string;\n type: string;\n success: boolean;\n duration: number;\n timestamp: number;\n metadata: Record<string, any>;\n}\n\ninterface PerformanceMetrics {\n startTime: number;\n totalTasks: number;\n successfulTasks: number;\n failedTasks: number;\n totalAgents: number;\n activeAgents: number;\n neuralEvents: number;\n}\n\ninterface Agent {\n id: string;\n name: string;\n type: string;\n status: 'active' | 'idle' | 'busy';\n activeTasks: number;\n lastActivity?: number;\n}\n\ninterface SessionData {\n id: string;\n startTime: number;\n endTime?: number;\n agents: Agent[];\n tasks: any[];\n status: 'active' | 'completed' | 'paused';\n}\n\ninterface MCPServerStatus {\n running: boolean;\n processCount: number;\n orchestratorRunning: boolean;\n port: number | null;\n connections: number;\n}\n\nexport class MetricsReader {\n private metricsDir = '.claude-flow/metrics';\n private sessionsDir = '.claude-flow/sessions';\n\n async getSystemMetrics(): Promise<SystemMetrics | null> {\n try {\n const filePath = path.join(this.metricsDir, 'system-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n const metrics: SystemMetrics[] = JSON.parse(content);\n \n // Return the most recent metric\n return metrics.length > 0 ? metrics[metrics.length - 1] : null;\n } catch (error) {\n return null;\n }\n }\n\n async getTaskMetrics(): Promise<TaskMetric[]> {\n try {\n const filePath = path.join(this.metricsDir, 'task-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getPerformanceMetrics(): Promise<PerformanceMetrics | null> {\n try {\n const filePath = path.join(this.metricsDir, 'performance.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getActiveAgents(): Promise<Agent[]> {\n try {\n // First check performance metrics for agent count\n const perfMetrics = await this.getPerformanceMetrics();\n \n // Also check session files for more detailed agent info\n const sessionFiles = await this.getSessionFiles();\n const agents: Agent[] = [];\n \n for (const file of sessionFiles) {\n try {\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', file), 'utf8');\n const sessionData = JSON.parse(content);\n \n if (sessionData.agents && Array.isArray(sessionData.agents)) {\n agents.push(...sessionData.agents);\n }\n } catch {\n // Skip invalid session files\n }\n }\n \n // If no agents found in sessions, create mock agents based on performance metrics\n if (agents.length === 0 && perfMetrics) {\n const activeCount = perfMetrics.activeAgents || 0;\n const totalCount = perfMetrics.totalAgents || 0;\n \n for (let i = 0; i < totalCount; i++) {\n agents.push({\n id: `agent-${i + 1}`,\n name: `Agent ${i + 1}`,\n type: i === 0 ? 'orchestrator' : 'worker',\n status: i < activeCount ? 'active' : 'idle',\n activeTasks: i < activeCount ? 1 : 0,\n lastActivity: Date.now() - (i * 1000)\n });\n }\n }\n \n return agents;\n } catch (error) {\n return [];\n }\n }\n\n async getSessionStatus(): Promise<SessionData | null> {\n try {\n const sessionFiles = await this.getSessionFiles();\n \n if (sessionFiles.length === 0) {\n return null;\n }\n \n // Get the most recent session\n const mostRecentFile = sessionFiles[sessionFiles.length - 1];\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', mostRecentFile), 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getRecentTasks(limit: number = 10): Promise<any[]> {\n try {\n const taskMetrics = await this.getTaskMetrics();\n \n // Sort by timestamp descending and take the limit\n return taskMetrics\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, limit)\n .map(task => ({\n id: task.id,\n type: task.type,\n status: task.success ? 'completed' : 'failed',\n startTime: task.timestamp - task.duration,\n endTime: task.timestamp,\n duration: task.duration\n }));\n } catch (error) {\n return [];\n }\n }\n\n async getOverallHealth(): Promise<'healthy' | 'warning' | 'error'> {\n try {\n const systemMetrics = await this.getSystemMetrics();\n const perfMetrics = await this.getPerformanceMetrics();\n \n if (!systemMetrics && !perfMetrics) {\n return 'error';\n }\n \n // Check memory usage\n if (systemMetrics && systemMetrics.memoryUsagePercent > 90) {\n return 'error';\n }\n \n if (systemMetrics && systemMetrics.memoryUsagePercent > 75) {\n return 'warning';\n }\n \n // Check CPU load\n if (systemMetrics && systemMetrics.cpuLoad > 0.8) {\n return 'warning';\n }\n \n // Check task failure rate\n if (perfMetrics && perfMetrics.totalTasks > 0) {\n const failureRate = perfMetrics.failedTasks / perfMetrics.totalTasks;\n if (failureRate > 0.5) {\n return 'error';\n }\n if (failureRate > 0.2) {\n return 'warning';\n }\n }\n \n return 'healthy';\n } catch (error) {\n return 'error';\n }\n }\n\n private async getSessionFiles(): Promise<string[]> {\n try {\n const files = await fs.readdir(path.join(this.sessionsDir, 'pair'));\n return files.filter(f => f.endsWith('.json')).sort();\n } catch (error) {\n return [];\n }\n }\n\n async getMCPServerStatus(): Promise<MCPServerStatus> {\n try {\n // Check if MCP server process is running\n const { stdout } = await execAsync('ps aux | grep -E \"mcp-server\\\\.js|claude-flow mcp start\" | grep -v grep | wc -l');\n const processCount = parseInt(stdout.trim(), 10);\n \n // Check for orchestrator running\n const { stdout: orchestratorOut } = await execAsync('ps aux | grep -E \"claude-flow start\" | grep -v grep | wc -l');\n const orchestratorRunning = parseInt(orchestratorOut.trim(), 10) > 0;\n \n // Determine status\n const isRunning = processCount > 0;\n \n // Try to get port from process (default is 3000)\n let port: number | null = 3000;\n try {\n const { stdout: portOut } = await execAsync('lsof -i :3000 2>/dev/null | grep LISTEN | wc -l');\n if (parseInt(portOut.trim(), 10) === 0) {\n // If port 3000 not listening, check other common ports\n port = null;\n }\n } catch {\n // lsof might not be available or port not in use\n }\n \n return {\n running: isRunning,\n processCount,\n orchestratorRunning,\n port,\n connections: processCount > 0 ? Math.max(1, processCount - 1) : 0 // Estimate connections\n };\n } catch (error) {\n // Fallback if commands fail\n return {\n running: false,\n processCount: 0,\n orchestratorRunning: false,\n port: null,\n connections: 0\n };\n }\n }\n}"],"names":["fs","path","exec","promisify","execAsync","MetricsReader","metricsDir","sessionsDir","getSystemMetrics","filePath","join","content","readFile","metrics","JSON","parse","length","error","getTaskMetrics","getPerformanceMetrics","getActiveAgents","perfMetrics","sessionFiles","getSessionFiles","agents","file","sessionData","Array","isArray","push","activeCount","activeAgents","totalCount","totalAgents","i","id","name","type","status","activeTasks","lastActivity","Date","now","getSessionStatus","mostRecentFile","getRecentTasks","limit","taskMetrics","sort","a","b","timestamp","slice","map","task","success","startTime","duration","endTime","getOverallHealth","systemMetrics","memoryUsagePercent","cpuLoad","totalTasks","failureRate","failedTasks","files","readdir","filter","f","endsWith","getMCPServerStatus","stdout","processCount","parseInt","trim","orchestratorOut","orchestratorRunning","isRunning","port","portOut","running","connections","Math","max"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/metrics-reader.js"],"sourcesContent":["import { promises as fs } from 'fs';\nimport path from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\nclass MetricsReader {\n constructor() {\n this.metricsDir = '.claude-flow/metrics';\n this.sessionsDir = '.claude-flow/sessions';\n }\n\n async getSystemMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'system-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n const metrics = JSON.parse(content);\n \n // Return the most recent metric\n return metrics.length > 0 ? metrics[metrics.length - 1] : null;\n } catch (error) {\n return null;\n }\n }\n\n async getTaskQueue() {\n try {\n const queueFile = '.claude-flow/tasks/queue.json';\n const content = await fs.readFile(queueFile, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getTaskMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'task-metrics.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return [];\n }\n }\n\n async getPerformanceMetrics() {\n try {\n const filePath = path.join(this.metricsDir, 'performance.json');\n const content = await fs.readFile(filePath, 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getActiveAgents() {\n try {\n const agents = [];\n \n // Check for agents in the .claude-flow/agents directory\n const agentsDir = '.claude-flow/agents';\n try {\n const agentFiles = await fs.readdir(agentsDir);\n for (const file of agentFiles) {\n if (file.endsWith('.json')) {\n try {\n const content = await fs.readFile(path.join(agentsDir, file), 'utf8');\n const agent = JSON.parse(content);\n agents.push(agent);\n } catch {\n // Skip invalid agent files\n }\n }\n }\n } catch {\n // Agents directory doesn't exist yet\n }\n \n // If no agents found in directory, check session files\n if (agents.length === 0) {\n const sessionFiles = await this.getSessionFiles();\n for (const file of sessionFiles) {\n try {\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', file), 'utf8');\n const sessionData = JSON.parse(content);\n \n if (sessionData.agents && Array.isArray(sessionData.agents)) {\n agents.push(...sessionData.agents);\n }\n } catch {\n // Skip invalid session files\n }\n }\n }\n \n return agents;\n } catch (error) {\n return [];\n }\n }\n\n async getSessionStatus() {\n try {\n const sessionFiles = await this.getSessionFiles();\n \n if (sessionFiles.length === 0) {\n return null;\n }\n \n // Get the most recent session\n const mostRecentFile = sessionFiles[sessionFiles.length - 1];\n const content = await fs.readFile(path.join(this.sessionsDir, 'pair', mostRecentFile), 'utf8');\n return JSON.parse(content);\n } catch (error) {\n return null;\n }\n }\n\n async getRecentTasks(limit = 10) {\n try {\n const taskMetrics = await this.getTaskMetrics();\n \n // Sort by timestamp descending and take the limit\n return taskMetrics\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, limit)\n .map(task => ({\n id: task.id,\n type: task.type,\n status: task.success ? 'completed' : 'failed',\n startTime: task.timestamp - task.duration,\n endTime: task.timestamp,\n duration: task.duration\n }));\n } catch (error) {\n return [];\n }\n }\n\n async getOverallHealth() {\n try {\n const systemMetrics = await this.getSystemMetrics();\n const perfMetrics = await this.getPerformanceMetrics();\n \n if (!systemMetrics && !perfMetrics) {\n return 'error';\n }\n \n // Check memory usage\n if (systemMetrics && systemMetrics.memoryUsagePercent > 90) {\n return 'error';\n }\n \n if (systemMetrics && systemMetrics.memoryUsagePercent > 75) {\n return 'warning';\n }\n \n // Check CPU load\n if (systemMetrics && systemMetrics.cpuLoad > 0.8) {\n return 'warning';\n }\n \n // Check task failure rate\n if (perfMetrics && perfMetrics.totalTasks > 0) {\n const failureRate = perfMetrics.failedTasks / perfMetrics.totalTasks;\n if (failureRate > 0.5) {\n return 'error';\n }\n if (failureRate > 0.2) {\n return 'warning';\n }\n }\n \n return 'healthy';\n } catch (error) {\n return 'error';\n }\n }\n\n async getSessionFiles() {\n try {\n const files = await fs.readdir(path.join(this.sessionsDir, 'pair'));\n return files.filter(f => f.endsWith('.json')).sort();\n } catch (error) {\n return [];\n }\n }\n\n async getMCPServerStatus() {\n try {\n // Check if MCP server process is running (including flow-nexus and other MCP variants)\n const { stdout } = await execAsync('ps aux | grep -E \"mcp\" | grep -v grep | wc -l');\n const processCount = parseInt(stdout.trim(), 10);\n \n // Check for orchestrator running\n const { stdout: orchestratorOut } = await execAsync('ps aux | grep -E \"claude-flow start\" | grep -v grep | wc -l');\n const orchestratorRunning = parseInt(orchestratorOut.trim(), 10) > 0;\n \n // Determine status\n const isRunning = processCount > 0;\n \n // Try to get port from process (default is 3000)\n let port = 3000;\n try {\n const { stdout: portOut } = await execAsync('lsof -i :3000 2>/dev/null | grep LISTEN | wc -l');\n if (parseInt(portOut.trim(), 10) === 0) {\n // If port 3000 not listening, check other common ports\n port = null;\n }\n } catch {\n // lsof might not be available or port not in use\n }\n \n return {\n running: isRunning,\n processCount,\n orchestratorRunning,\n port,\n connections: processCount > 0 ? Math.max(1, processCount - 1) : 0 // Estimate connections\n };\n } catch (error) {\n // Fallback if commands fail\n return {\n running: false,\n processCount: 0,\n orchestratorRunning: false,\n port: null,\n connections: 0\n };\n }\n }\n}\n\nexport { MetricsReader };"],"names":["promises","fs","path","exec","promisify","execAsync","MetricsReader","metricsDir","sessionsDir","getSystemMetrics","filePath","join","content","readFile","metrics","JSON","parse","length","error","getTaskQueue","queueFile","getTaskMetrics","getPerformanceMetrics","getActiveAgents","agents","agentsDir","agentFiles","readdir","file","endsWith","agent","push","sessionFiles","getSessionFiles","sessionData","Array","isArray","getSessionStatus","mostRecentFile","getRecentTasks","limit","taskMetrics","sort","a","b","timestamp","slice","map","task","id","type","status","success","startTime","duration","endTime","getOverallHealth","systemMetrics","perfMetrics","memoryUsagePercent","cpuLoad","totalTasks","failureRate","failedTasks","files","filter","f","getMCPServerStatus","stdout","processCount","parseInt","trim","orchestratorOut","orchestratorRunning","isRunning","port","portOut","running","connections","Math","max"],"mappings":"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"}AG,KAAK;gBAChD,OAAO;YACT;YAGA,IAAIzC,eAAeA,YAAY0C,UAAU,GAAG,GAAG;gBAC7C,MAAMC,cAAc3C,YAAY4C,WAAW,GAAG5C,YAAY0C,UAAU;gBACpE,IAAIC,cAAc,KAAK;oBACrB,OAAO;gBACT;gBACA,IAAIA,cAAc,KAAK;oBACrB,OAAO;gBACT;YACF;YAEA,OAAO;QACT,EAAE,OAAO/C,OAAO;YACd,OAAO;QACT;IACF;IAEA,MAAcM,kBAAqC;QACjD,IAAI;YACF,MAAM2C,QAAQ,MAAMlE,GAAGmE,OAAO,CAAClE,KAAKS,IAAI,CAAC,IAAI,CAACH,WAAW,EAAE;YAC3D,OAAO2D,MAAME,MAAM,CAACC,CAAAA,IAAKA,EAAEC,QAAQ,CAAC,UAAUtB,IAAI;QACpD,EAAE,OAAO/B,OAAO;YACd,OAAO,EAAE;QACX;IACF;IAEA,MAAMsD,qBAA+C;QACnD,IAAI;YAEF,MAAM,EAAEC,MAAM,EAAE,GAAG,MAAMpE,UAAU;YACnC,MAAMqE,eAAeC,SAASF,OAAOG,IAAI,IAAI;YAG7C,MAAM,EAAEH,QAAQI,eAAe,EAAE,GAAG,MAAMxE,UAAU;YACpD,MAAMyE,sBAAsBH,SAASE,gBAAgBD,IAAI,IAAI,MAAM;YAGnE,MAAMG,YAAYL,eAAe;YAGjC,IAAIM,OAAsB;YAC1B,IAAI;gBACF,MAAM,EAAEP,QAAQQ,OAAO,EAAE,GAAG,MAAM5E,UAAU;gBAC5C,IAAIsE,SAASM,QAAQL,IAAI,IAAI,QAAQ,GAAG;oBAEtCI,OAAO;gBACT;YACF,EAAE,OAAM,CAER;YAEA,OAAO;gBACLE,SAASH;gBACTL;gBACAI;gBACAE;gBACAG,aAAaT,eAAe,IAAIU,KAAKC,GAAG,CAAC,GAAGX,eAAe,KAAK;YAClE;QACF,EAAE,OAAOxD,OAAO;YAEd,OAAO;gBACLgE,SAAS;gBACTR,cAAc;gBACdI,qBAAqB;gBACrBE,MAAM;gBACNG,aAAa;YACf;QACF;IACF;AACF"}
|