@weavelogic/knowledge-graph-agent 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -3
  3. package/dist/_virtual/__vite-browser-external.js +2 -2
  4. package/dist/_virtual/__vite-browser-external.js.map +1 -1
  5. package/dist/_virtual/index12.js +7 -0
  6. package/dist/_virtual/index12.js.map +1 -0
  7. package/dist/_virtual/ort-web.min.js +8 -0
  8. package/dist/_virtual/ort-web.min.js.map +1 -0
  9. package/dist/_virtual/ort-web.min2.js +5 -0
  10. package/dist/_virtual/ort-web.min2.js.map +1 -0
  11. package/dist/agents/base-agent.d.ts +63 -0
  12. package/dist/agents/base-agent.d.ts.map +1 -1
  13. package/dist/agents/base-agent.js +139 -0
  14. package/dist/agents/base-agent.js.map +1 -1
  15. package/dist/agents/coordinator-agent.d.ts +422 -0
  16. package/dist/agents/coordinator-agent.d.ts.map +1 -0
  17. package/dist/agents/documenter-agent.d.ts +298 -0
  18. package/dist/agents/documenter-agent.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +11 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +4 -0
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/mixins/index.d.ts +9 -0
  24. package/dist/agents/mixins/index.d.ts.map +1 -0
  25. package/dist/agents/mixins/trajectory-mixin.d.ts +112 -0
  26. package/dist/agents/mixins/trajectory-mixin.d.ts.map +1 -0
  27. package/dist/agents/optimizer-agent.d.ts +388 -0
  28. package/dist/agents/optimizer-agent.d.ts.map +1 -0
  29. package/dist/agents/planner-agent.d.ts +395 -0
  30. package/dist/agents/planner-agent.d.ts.map +1 -0
  31. package/dist/agents/registry.d.ts.map +1 -1
  32. package/dist/agents/registry.js +5 -0
  33. package/dist/agents/registry.js.map +1 -1
  34. package/dist/agents/reviewer-agent.d.ts +330 -0
  35. package/dist/agents/reviewer-agent.d.ts.map +1 -0
  36. package/dist/agents/types.d.ts +12 -1
  37. package/dist/agents/types.d.ts.map +1 -1
  38. package/dist/agents/types.js +1 -0
  39. package/dist/agents/types.js.map +1 -1
  40. package/dist/cli/commands/hive-mind/add-frontmatter.d.ts +102 -0
  41. package/dist/cli/commands/hive-mind/add-frontmatter.d.ts.map +1 -0
  42. package/dist/cli/commands/hive-mind/add-frontmatter.js +439 -0
  43. package/dist/cli/commands/hive-mind/add-frontmatter.js.map +1 -0
  44. package/dist/cli/commands/hive-mind/analyze-links.d.ts +80 -0
  45. package/dist/cli/commands/hive-mind/analyze-links.d.ts.map +1 -0
  46. package/dist/cli/commands/hive-mind/analyze-links.js +367 -0
  47. package/dist/cli/commands/hive-mind/analyze-links.js.map +1 -0
  48. package/dist/cli/commands/hive-mind/find-connections.d.ts +75 -0
  49. package/dist/cli/commands/hive-mind/find-connections.d.ts.map +1 -0
  50. package/dist/cli/commands/hive-mind/find-connections.js +347 -0
  51. package/dist/cli/commands/hive-mind/find-connections.js.map +1 -0
  52. package/dist/cli/commands/hive-mind/index.d.ts +37 -0
  53. package/dist/cli/commands/hive-mind/index.d.ts.map +1 -0
  54. package/dist/cli/commands/hive-mind/index.js +33 -0
  55. package/dist/cli/commands/hive-mind/index.js.map +1 -0
  56. package/dist/cli/commands/hive-mind/validate-names.d.ts +79 -0
  57. package/dist/cli/commands/hive-mind/validate-names.d.ts.map +1 -0
  58. package/dist/cli/commands/hive-mind/validate-names.js +353 -0
  59. package/dist/cli/commands/hive-mind/validate-names.js.map +1 -0
  60. package/dist/cli/commands/vector.js +2 -0
  61. package/dist/cli/commands/vector.js.map +1 -1
  62. package/dist/cli/index.d.ts.map +1 -1
  63. package/dist/cli/index.js +7 -0
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/equilibrium/agent-equilibrium.d.ts +194 -0
  66. package/dist/equilibrium/agent-equilibrium.d.ts.map +1 -0
  67. package/dist/equilibrium/agent-equilibrium.js +304 -0
  68. package/dist/equilibrium/agent-equilibrium.js.map +1 -0
  69. package/dist/equilibrium/graph-equilibrium.d.ts +177 -0
  70. package/dist/equilibrium/graph-equilibrium.d.ts.map +1 -0
  71. package/dist/equilibrium/index.d.ts +11 -0
  72. package/dist/equilibrium/index.d.ts.map +1 -0
  73. package/dist/equilibrium/memory-equilibrium.d.ts +153 -0
  74. package/dist/equilibrium/memory-equilibrium.d.ts.map +1 -0
  75. package/dist/graphql/resolvers/index.d.ts.map +1 -1
  76. package/dist/graphql/resolvers/queries.d.ts +11 -0
  77. package/dist/graphql/resolvers/queries.d.ts.map +1 -1
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +10 -4
  81. package/dist/index.js.map +1 -1
  82. package/dist/inference/index.d.ts +9 -0
  83. package/dist/inference/index.d.ts.map +1 -0
  84. package/dist/inference/model-selection.d.ts +131 -0
  85. package/dist/inference/model-selection.d.ts.map +1 -0
  86. package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts +265 -0
  87. package/dist/integrations/agentic-flow/adapters/agent-booster-adapter.d.ts.map +1 -0
  88. package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts +197 -0
  89. package/dist/integrations/agentic-flow/adapters/agentdb-adapter.d.ts.map +1 -0
  90. package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts +249 -0
  91. package/dist/integrations/agentic-flow/adapters/agentdb-vector-store.d.ts.map +1 -0
  92. package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts +120 -0
  93. package/dist/integrations/agentic-flow/adapters/base-adapter.d.ts.map +1 -0
  94. package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts +444 -0
  95. package/dist/integrations/agentic-flow/adapters/federation-hub-adapter.d.ts.map +1 -0
  96. package/dist/integrations/agentic-flow/adapters/index.d.ts +17 -0
  97. package/dist/integrations/agentic-flow/adapters/index.d.ts.map +1 -0
  98. package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts +242 -0
  99. package/dist/integrations/agentic-flow/adapters/model-router-adapter.d.ts.map +1 -0
  100. package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts +364 -0
  101. package/dist/integrations/agentic-flow/adapters/quic-transport-adapter.d.ts.map +1 -0
  102. package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts +209 -0
  103. package/dist/integrations/agentic-flow/adapters/reasoning-bank-adapter.d.ts.map +1 -0
  104. package/dist/integrations/agentic-flow/benchmark/index.d.ts +9 -0
  105. package/dist/integrations/agentic-flow/benchmark/index.d.ts.map +1 -0
  106. package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts +253 -0
  107. package/dist/integrations/agentic-flow/benchmark/vector-benchmark.d.ts.map +1 -0
  108. package/dist/integrations/agentic-flow/config.d.ts +109 -0
  109. package/dist/integrations/agentic-flow/config.d.ts.map +1 -0
  110. package/dist/integrations/agentic-flow/feature-flags.d.ts +140 -0
  111. package/dist/integrations/agentic-flow/feature-flags.d.ts.map +1 -0
  112. package/dist/integrations/agentic-flow/index.d.ts +22 -0
  113. package/dist/integrations/agentic-flow/index.d.ts.map +1 -0
  114. package/dist/integrations/agentic-flow/migration/index.d.ts +9 -0
  115. package/dist/integrations/agentic-flow/migration/index.d.ts.map +1 -0
  116. package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts +242 -0
  117. package/dist/integrations/agentic-flow/migration/migrate-to-agentdb.d.ts.map +1 -0
  118. package/dist/learning/index.d.ts +91 -0
  119. package/dist/learning/index.d.ts.map +1 -0
  120. package/dist/learning/learning-loop.d.ts +176 -0
  121. package/dist/learning/learning-loop.d.ts.map +1 -0
  122. package/dist/learning/services/ab-testing-framework.d.ts +135 -0
  123. package/dist/learning/services/ab-testing-framework.d.ts.map +1 -0
  124. package/dist/learning/services/agent-priming-service.d.ts +207 -0
  125. package/dist/learning/services/agent-priming-service.d.ts.map +1 -0
  126. package/dist/learning/services/daily-log-generator.d.ts +113 -0
  127. package/dist/learning/services/daily-log-generator.d.ts.map +1 -0
  128. package/dist/learning/services/index.d.ts +14 -0
  129. package/dist/learning/services/index.d.ts.map +1 -0
  130. package/dist/learning/services/memory-extraction-service.d.ts +87 -0
  131. package/dist/learning/services/memory-extraction-service.d.ts.map +1 -0
  132. package/dist/learning/services/task-completion-consumer.d.ts +162 -0
  133. package/dist/learning/services/task-completion-consumer.d.ts.map +1 -0
  134. package/dist/learning/services/trajectory-tracker.d.ts +174 -0
  135. package/dist/learning/services/trajectory-tracker.d.ts.map +1 -0
  136. package/dist/learning/types.d.ts +516 -0
  137. package/dist/learning/types.d.ts.map +1 -0
  138. package/dist/mcp/clients/claude-flow-memory-client.d.ts +259 -0
  139. package/dist/mcp/clients/claude-flow-memory-client.d.ts.map +1 -0
  140. package/dist/mcp/clients/claude-flow-memory-client.js +305 -0
  141. package/dist/mcp/clients/claude-flow-memory-client.js.map +1 -0
  142. package/dist/mcp/clients/index.d.ts +11 -0
  143. package/dist/mcp/clients/index.d.ts.map +1 -0
  144. package/dist/mcp/clients/mcp-client-adapter.d.ts +146 -0
  145. package/dist/mcp/clients/mcp-client-adapter.d.ts.map +1 -0
  146. package/dist/mcp/clients/mcp-client-adapter.js +372 -0
  147. package/dist/mcp/clients/mcp-client-adapter.js.map +1 -0
  148. package/dist/mcp/index.d.ts +10 -0
  149. package/dist/mcp/index.d.ts.map +1 -0
  150. package/dist/memory/vault-sync.d.ts +12 -0
  151. package/dist/memory/vault-sync.d.ts.map +1 -1
  152. package/dist/memory/vault-sync.js +94 -11
  153. package/dist/memory/vault-sync.js.map +1 -1
  154. package/dist/node_modules/@huggingface/jinja/dist/index.js +118 -0
  155. package/dist/node_modules/@huggingface/jinja/dist/index.js.map +1 -0
  156. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js +24 -0
  157. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js.map +1 -0
  158. package/dist/node_modules/@xenova/transformers/src/configs.js +52 -0
  159. package/dist/node_modules/@xenova/transformers/src/configs.js.map +1 -0
  160. package/dist/node_modules/@xenova/transformers/src/env.js +35 -0
  161. package/dist/node_modules/@xenova/transformers/src/env.js.map +1 -0
  162. package/dist/node_modules/@xenova/transformers/src/models.js +3852 -0
  163. package/dist/node_modules/@xenova/transformers/src/models.js.map +1 -0
  164. package/dist/node_modules/@xenova/transformers/src/tokenizers.js +144 -0
  165. package/dist/node_modules/@xenova/transformers/src/tokenizers.js.map +1 -0
  166. package/dist/node_modules/@xenova/transformers/src/utils/core.js +52 -0
  167. package/dist/node_modules/@xenova/transformers/src/utils/core.js.map +1 -0
  168. package/dist/node_modules/@xenova/transformers/src/utils/generation.js +623 -0
  169. package/dist/node_modules/@xenova/transformers/src/utils/generation.js.map +1 -0
  170. package/dist/node_modules/@xenova/transformers/src/utils/hub.js +395 -0
  171. package/dist/node_modules/@xenova/transformers/src/utils/hub.js.map +1 -0
  172. package/dist/node_modules/@xenova/transformers/src/utils/image.js +12 -0
  173. package/dist/node_modules/@xenova/transformers/src/utils/image.js.map +1 -0
  174. package/dist/node_modules/@xenova/transformers/src/utils/maths.js +89 -0
  175. package/dist/node_modules/@xenova/transformers/src/utils/maths.js.map +1 -0
  176. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js +750 -0
  177. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js.map +1 -0
  178. package/dist/node_modules/fdir/dist/index.js +13 -13
  179. package/dist/node_modules/fdir/dist/index.js.map +1 -1
  180. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js +67 -0
  181. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js.map +1 -0
  182. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js +24 -0
  183. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js.map +1 -0
  184. package/dist/node_modules/onnxruntime-common/dist/lib/env.js +6 -0
  185. package/dist/node_modules/onnxruntime-common/dist/lib/env.js.map +1 -0
  186. package/dist/node_modules/onnxruntime-common/dist/lib/index.js +11 -0
  187. package/dist/node_modules/onnxruntime-common/dist/lib/index.js.map +1 -0
  188. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js +162 -0
  189. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js.map +1 -0
  190. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js +6 -0
  191. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js.map +1 -0
  192. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js +393 -0
  193. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js.map +1 -0
  194. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js +6 -0
  195. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js.map +1 -0
  196. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js +12919 -0
  197. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js.map +1 -0
  198. package/dist/node_modules/tinyglobby/dist/index.js +13 -13
  199. package/dist/node_modules/tinyglobby/dist/index.js.map +1 -1
  200. package/dist/node_modules/typescript/lib/typescript.js +24 -24
  201. package/dist/node_modules/typescript/lib/typescript.js.map +1 -1
  202. package/dist/transport/agent-transport.d.ts +269 -0
  203. package/dist/transport/agent-transport.d.ts.map +1 -0
  204. package/dist/transport/index.d.ts +10 -0
  205. package/dist/transport/index.d.ts.map +1 -0
  206. package/dist/vector/index.d.ts +1 -1
  207. package/dist/vector/index.d.ts.map +1 -1
  208. package/dist/vector/services/embedding-service.d.ts +244 -0
  209. package/dist/vector/services/embedding-service.d.ts.map +1 -0
  210. package/dist/vector/services/embedding-service.js +10 -0
  211. package/dist/vector/services/embedding-service.js.map +1 -0
  212. package/dist/vector/services/hybrid-search.d.ts +320 -0
  213. package/dist/vector/services/hybrid-search.d.ts.map +1 -0
  214. package/dist/vector/services/hybrid-search.js +3 -0
  215. package/dist/vector/services/hybrid-search.js.map +1 -0
  216. package/dist/vector/services/index.d.ts +4 -0
  217. package/dist/vector/services/index.d.ts.map +1 -1
  218. package/package.json +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["/**\n * Knowledge Graph Agent CLI\n *\n * Main CLI setup and command registration.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createInitCommand } from './commands/init.js';\nimport { createGraphCommand } from './commands/graph.js';\nimport { createDocsCommand } from './commands/docs.js';\nimport { createClaudeCommand } from './commands/claude.js';\nimport { createSyncCommand } from './commands/sync.js';\nimport { createStatsCommand } from './commands/stats.js';\nimport { createSearchCommand } from './commands/search.js';\nimport { createConvertCommand, createFrontmatterCommand } from './commands/convert.js';\nimport { createAnalyzeCommand } from './commands/analyze.js';\nimport { createSOPCommands } from './commands/sop.js';\nimport { createInitPrimitivesCommand, createAnalyzeCodebaseCommand } from './commands/init-primitives.js';\nimport { createCultivateCommand } from './commands/cultivate.js';\nimport { createCommitCommand } from './commands/commit.js';\nimport { createConfigCommand } from './commands/config.js';\nimport { createDiagnosticsCommand } from './commands/diagnostics.js';\nimport { createWorkflowCommand } from './commands/workflow.js';\nimport { createAuditCommand } from './commands/audit.js';\nimport { createVectorCommand } from './commands/vector.js';\nimport { createServeCommand } from './commands/serve.js';\nimport { createDashboardCommand } from './commands/dashboard.js';\nimport { createPluginCommand } from './commands/plugin.js';\n\n/**\n * CLI version\n */\nconst VERSION = '0.4.0';\n\n/**\n * Create and configure the CLI program\n */\nexport function createCLI(): Command {\n const program = new Command();\n\n program\n .name('kg')\n .description('Knowledge Graph Agent - Generate and manage knowledge graphs for Claude Code')\n .version(VERSION, '-v, --version', 'Display version number');\n\n // Configure help\n program.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // Add commands\n program.addCommand(createInitCommand());\n program.addCommand(createGraphCommand());\n program.addCommand(createDocsCommand());\n program.addCommand(createClaudeCommand());\n program.addCommand(createSyncCommand());\n program.addCommand(createStatsCommand());\n program.addCommand(createSearchCommand());\n program.addCommand(createConvertCommand());\n program.addCommand(createFrontmatterCommand());\n program.addCommand(createAnalyzeCommand());\n program.addCommand(createSOPCommands());\n program.addCommand(createInitPrimitivesCommand());\n program.addCommand(createAnalyzeCodebaseCommand());\n program.addCommand(createCultivateCommand());\n program.addCommand(createCommitCommand());\n program.addCommand(createConfigCommand());\n program.addCommand(createDiagnosticsCommand());\n program.addCommand(createWorkflowCommand());\n program.addCommand(createAuditCommand());\n program.addCommand(createVectorCommand());\n program.addCommand(createServeCommand());\n program.addCommand(createDashboardCommand());\n program.addCommand(createPluginCommand());\n\n // Default action (show help)\n program.action(() => {\n console.log(chalk.cyan.bold('\\n Knowledge Graph Agent\\n'));\n console.log(chalk.gray(' Generate and manage knowledge graphs for Claude Code\\n'));\n\n console.log(chalk.white(' Quick Start:'));\n console.log(chalk.gray(' $ kg init # Initialize knowledge graph'));\n console.log(chalk.gray(' $ kg docs init # Initialize docs directory'));\n console.log(chalk.gray(' $ kg graph # Generate knowledge graph'));\n console.log(chalk.gray(' $ kg claude update # Update CLAUDE.md'));\n console.log(chalk.gray(' $ kg sync # Sync with claude-flow\\n'));\n\n console.log(chalk.white(' Migration & Analysis:'));\n console.log(chalk.gray(' $ kg analyze # Analyze & migrate to knowledge graph'));\n console.log(chalk.gray(' $ kg analyze deep # Deep analysis with claude-flow'));\n console.log(chalk.gray(' $ kg analyze report # Generate analysis report'));\n console.log(chalk.gray(' $ kg convert docs # Convert docs/ → docs-nn/'));\n console.log(chalk.gray(' $ kg frontmatter add # Add frontmatter to files'));\n console.log(chalk.gray(' $ kg frontmatter validate # Validate frontmatter\\n'));\n\n console.log(chalk.white(' AI-SDLC SOP Compliance:'));\n console.log(chalk.gray(' $ kg sop init # Initialize SOP standards layer'));\n console.log(chalk.gray(' $ kg sop check # Check compliance against SOPs'));\n console.log(chalk.gray(' $ kg sop gaps # Analyze compliance gaps'));\n console.log(chalk.gray(' $ kg sop report # Generate compliance report'));\n console.log(chalk.gray(' $ kg sop list # List available SOPs\\n'));\n\n console.log(chalk.white(' Cultivation & Primitives:'));\n console.log(chalk.gray(' $ kg init-primitives # Bootstrap primitives from codebase'));\n console.log(chalk.gray(' $ kg analyze-codebase # Analyze dependencies & services'));\n console.log(chalk.gray(' $ kg init-primitives --dry-run # Preview without writing\\n'));\n\n console.log(chalk.white(' Git Integration:'));\n console.log(chalk.gray(' $ kg commit # Show status and suggested message'));\n console.log(chalk.gray(' $ kg commit -a # Auto-commit with generated message'));\n console.log(chalk.gray(' $ kg commit -i # Interactive commit mode'));\n console.log(chalk.gray(' $ kg commit -m \"message\" # Commit with custom message'));\n console.log(chalk.gray(' $ kg commit status # Show git status with analysis'));\n console.log(chalk.gray(' $ kg commit log # Show recent commits'));\n console.log(chalk.gray(' $ kg commit diff # Show diff of changes\\n'));\n\n console.log(chalk.white(' Diagnostics & Health:'));\n console.log(chalk.gray(' $ kg diag run # Run full diagnostics'));\n console.log(chalk.gray(' $ kg diag run --fix # Attempt to fix issues'));\n console.log(chalk.gray(' $ kg diag health # Check system health'));\n console.log(chalk.gray(' $ kg diag repair # Repair database issues'));\n console.log(chalk.gray(' $ kg diag backup # Create database backup'));\n console.log(chalk.gray(' $ kg diag backup --list # List existing backups'));\n console.log(chalk.gray(' $ kg diag info # Show system information\\n'));\n\n console.log(chalk.white(' Workflow Management:'));\n console.log(chalk.gray(' $ kg workflow start <type> # Start a workflow'));\n console.log(chalk.gray(' $ kg workflow status [id] # Check workflow status'));\n console.log(chalk.gray(' $ kg workflow list # List active workflows'));\n console.log(chalk.gray(' $ kg workflow stop <id> # Stop a workflow'));\n console.log(chalk.gray(' $ kg workflow history # Show workflow history\\n'));\n\n console.log(chalk.white(' Vector Operations:'));\n console.log(chalk.gray(' $ kg vector search <query> # Semantic search'));\n console.log(chalk.gray(' $ kg vector stats # Vector store statistics'));\n console.log(chalk.gray(' $ kg vector rebuild # Rebuild vector index'));\n console.log(chalk.gray(' $ kg vector traj list # List trajectories'));\n console.log(chalk.gray(' $ kg vector traj show <id> # Show trajectory details'));\n console.log(chalk.gray(' $ kg vector traj patterns # Show detected patterns\\n'));\n\n console.log(chalk.white(' Audit & Exochain:'));\n console.log(chalk.gray(' $ kg audit query # Query the audit log'));\n console.log(chalk.gray(' $ kg audit checkpoint # Create a checkpoint'));\n console.log(chalk.gray(' $ kg audit verify # Verify chain integrity'));\n console.log(chalk.gray(' $ kg audit sync status # Check sync status'));\n console.log(chalk.gray(' $ kg audit sync peers # List sync peers'));\n console.log(chalk.gray(' $ kg audit export # Export audit log\\n'));\n\n console.log(chalk.white(' Server Mode:'));\n console.log(chalk.gray(' $ kg serve # Start MCP server (stdio)'));\n console.log(chalk.gray(' $ kg serve --graphql # Start GraphQL server'));\n console.log(chalk.gray(' $ kg serve --dashboard # Start web dashboard'));\n console.log(chalk.gray(' $ kg serve --all # Start all servers'));\n console.log(chalk.gray(' $ kg serve status # Show server status\\n'));\n\n console.log(chalk.white(' Dashboard:'));\n console.log(chalk.gray(' $ kg dashboard start # Start dashboard dev server'));\n console.log(chalk.gray(' $ kg dashboard build # Build dashboard for production'));\n console.log(chalk.gray(' $ kg dashboard serve # Serve built dashboard'));\n console.log(chalk.gray(' $ kg dashboard open # Open dashboard in browser'));\n console.log(chalk.gray(' $ kg dashboard status # Check dashboard status\\n'));\n\n console.log(chalk.white(' Plugin Management:'));\n console.log(chalk.gray(' $ kg plugin list # List installed plugins'));\n console.log(chalk.gray(' $ kg plugin install <pkg> # Install a plugin'));\n console.log(chalk.gray(' $ kg plugin uninstall <n> # Uninstall a plugin'));\n console.log(chalk.gray(' $ kg plugin enable <name> # Enable a plugin'));\n console.log(chalk.gray(' $ kg plugin disable <name> # Disable a plugin'));\n console.log(chalk.gray(' $ kg plugin info <name> # Show plugin details'));\n console.log(chalk.gray(' $ kg plugin run <n> <file> # Run analyzer plugin'));\n console.log(chalk.gray(' $ kg plugin create <name> # Create new plugin\\n'));\n\n console.log(chalk.white(' Commands:'));\n program.commands.forEach(cmd => {\n console.log(chalk.cyan(` ${cmd.name().padEnd(20)}`), chalk.gray(cmd.description() || ''));\n });\n\n console.log('\\n Run', chalk.cyan('kg <command> --help'), 'for more information\\n');\n });\n\n return program;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/cli/index.ts"],"sourcesContent":["/**\n * Knowledge Graph Agent CLI\n *\n * Main CLI setup and command registration.\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { createInitCommand } from './commands/init.js';\nimport { createGraphCommand } from './commands/graph.js';\nimport { createDocsCommand } from './commands/docs.js';\nimport { createClaudeCommand } from './commands/claude.js';\nimport { createSyncCommand } from './commands/sync.js';\nimport { createStatsCommand } from './commands/stats.js';\nimport { createSearchCommand } from './commands/search.js';\nimport { createConvertCommand, createFrontmatterCommand } from './commands/convert.js';\nimport { createAnalyzeCommand } from './commands/analyze.js';\nimport { createSOPCommands } from './commands/sop.js';\nimport { createInitPrimitivesCommand, createAnalyzeCodebaseCommand } from './commands/init-primitives.js';\nimport { createCultivateCommand } from './commands/cultivate.js';\nimport { createCommitCommand } from './commands/commit.js';\nimport { createConfigCommand } from './commands/config.js';\nimport { createDiagnosticsCommand } from './commands/diagnostics.js';\nimport { createWorkflowCommand } from './commands/workflow.js';\nimport { createAuditCommand } from './commands/audit.js';\nimport { createVectorCommand } from './commands/vector.js';\nimport { createServeCommand } from './commands/serve.js';\nimport { createDashboardCommand } from './commands/dashboard.js';\nimport { createPluginCommand } from './commands/plugin.js';\nimport { createHiveMindCommand } from './commands/hive-mind/index.js';\n\n/**\n * CLI version\n */\nconst VERSION = '0.4.0';\n\n/**\n * Create and configure the CLI program\n */\nexport function createCLI(): Command {\n const program = new Command();\n\n program\n .name('kg')\n .description('Knowledge Graph Agent - Generate and manage knowledge graphs for Claude Code')\n .version(VERSION, '-v, --version', 'Display version number');\n\n // Configure help\n program.configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n });\n\n // Add commands\n program.addCommand(createInitCommand());\n program.addCommand(createGraphCommand());\n program.addCommand(createDocsCommand());\n program.addCommand(createClaudeCommand());\n program.addCommand(createSyncCommand());\n program.addCommand(createStatsCommand());\n program.addCommand(createSearchCommand());\n program.addCommand(createConvertCommand());\n program.addCommand(createFrontmatterCommand());\n program.addCommand(createAnalyzeCommand());\n program.addCommand(createSOPCommands());\n program.addCommand(createInitPrimitivesCommand());\n program.addCommand(createAnalyzeCodebaseCommand());\n program.addCommand(createCultivateCommand());\n program.addCommand(createCommitCommand());\n program.addCommand(createConfigCommand());\n program.addCommand(createDiagnosticsCommand());\n program.addCommand(createWorkflowCommand());\n program.addCommand(createAuditCommand());\n program.addCommand(createVectorCommand());\n program.addCommand(createServeCommand());\n program.addCommand(createDashboardCommand());\n program.addCommand(createPluginCommand());\n program.addCommand(createHiveMindCommand());\n\n // Default action (show help)\n program.action(() => {\n console.log(chalk.cyan.bold('\\n Knowledge Graph Agent\\n'));\n console.log(chalk.gray(' Generate and manage knowledge graphs for Claude Code\\n'));\n\n console.log(chalk.white(' Quick Start:'));\n console.log(chalk.gray(' $ kg init # Initialize knowledge graph'));\n console.log(chalk.gray(' $ kg docs init # Initialize docs directory'));\n console.log(chalk.gray(' $ kg graph # Generate knowledge graph'));\n console.log(chalk.gray(' $ kg claude update # Update CLAUDE.md'));\n console.log(chalk.gray(' $ kg sync # Sync with claude-flow\\n'));\n\n console.log(chalk.white(' Migration & Analysis:'));\n console.log(chalk.gray(' $ kg analyze # Analyze & migrate to knowledge graph'));\n console.log(chalk.gray(' $ kg analyze deep # Deep analysis with claude-flow'));\n console.log(chalk.gray(' $ kg analyze report # Generate analysis report'));\n console.log(chalk.gray(' $ kg convert docs # Convert docs/ → docs-nn/'));\n console.log(chalk.gray(' $ kg frontmatter add # Add frontmatter to files'));\n console.log(chalk.gray(' $ kg frontmatter validate # Validate frontmatter\\n'));\n\n console.log(chalk.white(' AI-SDLC SOP Compliance:'));\n console.log(chalk.gray(' $ kg sop init # Initialize SOP standards layer'));\n console.log(chalk.gray(' $ kg sop check # Check compliance against SOPs'));\n console.log(chalk.gray(' $ kg sop gaps # Analyze compliance gaps'));\n console.log(chalk.gray(' $ kg sop report # Generate compliance report'));\n console.log(chalk.gray(' $ kg sop list # List available SOPs\\n'));\n\n console.log(chalk.white(' Cultivation & Primitives:'));\n console.log(chalk.gray(' $ kg init-primitives # Bootstrap primitives from codebase'));\n console.log(chalk.gray(' $ kg analyze-codebase # Analyze dependencies & services'));\n console.log(chalk.gray(' $ kg init-primitives --dry-run # Preview without writing\\n'));\n\n console.log(chalk.white(' Git Integration:'));\n console.log(chalk.gray(' $ kg commit # Show status and suggested message'));\n console.log(chalk.gray(' $ kg commit -a # Auto-commit with generated message'));\n console.log(chalk.gray(' $ kg commit -i # Interactive commit mode'));\n console.log(chalk.gray(' $ kg commit -m \"message\" # Commit with custom message'));\n console.log(chalk.gray(' $ kg commit status # Show git status with analysis'));\n console.log(chalk.gray(' $ kg commit log # Show recent commits'));\n console.log(chalk.gray(' $ kg commit diff # Show diff of changes\\n'));\n\n console.log(chalk.white(' Diagnostics & Health:'));\n console.log(chalk.gray(' $ kg diag run # Run full diagnostics'));\n console.log(chalk.gray(' $ kg diag run --fix # Attempt to fix issues'));\n console.log(chalk.gray(' $ kg diag health # Check system health'));\n console.log(chalk.gray(' $ kg diag repair # Repair database issues'));\n console.log(chalk.gray(' $ kg diag backup # Create database backup'));\n console.log(chalk.gray(' $ kg diag backup --list # List existing backups'));\n console.log(chalk.gray(' $ kg diag info # Show system information\\n'));\n\n console.log(chalk.white(' Workflow Management:'));\n console.log(chalk.gray(' $ kg workflow start <type> # Start a workflow'));\n console.log(chalk.gray(' $ kg workflow status [id] # Check workflow status'));\n console.log(chalk.gray(' $ kg workflow list # List active workflows'));\n console.log(chalk.gray(' $ kg workflow stop <id> # Stop a workflow'));\n console.log(chalk.gray(' $ kg workflow history # Show workflow history\\n'));\n\n console.log(chalk.white(' Vector Operations:'));\n console.log(chalk.gray(' $ kg vector search <query> # Semantic search'));\n console.log(chalk.gray(' $ kg vector stats # Vector store statistics'));\n console.log(chalk.gray(' $ kg vector rebuild # Rebuild vector index'));\n console.log(chalk.gray(' $ kg vector traj list # List trajectories'));\n console.log(chalk.gray(' $ kg vector traj show <id> # Show trajectory details'));\n console.log(chalk.gray(' $ kg vector traj patterns # Show detected patterns\\n'));\n\n console.log(chalk.white(' Audit & Exochain:'));\n console.log(chalk.gray(' $ kg audit query # Query the audit log'));\n console.log(chalk.gray(' $ kg audit checkpoint # Create a checkpoint'));\n console.log(chalk.gray(' $ kg audit verify # Verify chain integrity'));\n console.log(chalk.gray(' $ kg audit sync status # Check sync status'));\n console.log(chalk.gray(' $ kg audit sync peers # List sync peers'));\n console.log(chalk.gray(' $ kg audit export # Export audit log\\n'));\n\n console.log(chalk.white(' Server Mode:'));\n console.log(chalk.gray(' $ kg serve # Start MCP server (stdio)'));\n console.log(chalk.gray(' $ kg serve --graphql # Start GraphQL server'));\n console.log(chalk.gray(' $ kg serve --dashboard # Start web dashboard'));\n console.log(chalk.gray(' $ kg serve --all # Start all servers'));\n console.log(chalk.gray(' $ kg serve status # Show server status\\n'));\n\n console.log(chalk.white(' Dashboard:'));\n console.log(chalk.gray(' $ kg dashboard start # Start dashboard dev server'));\n console.log(chalk.gray(' $ kg dashboard build # Build dashboard for production'));\n console.log(chalk.gray(' $ kg dashboard serve # Serve built dashboard'));\n console.log(chalk.gray(' $ kg dashboard open # Open dashboard in browser'));\n console.log(chalk.gray(' $ kg dashboard status # Check dashboard status\\n'));\n\n console.log(chalk.white(' Plugin Management:'));\n console.log(chalk.gray(' $ kg plugin list # List installed plugins'));\n console.log(chalk.gray(' $ kg plugin install <pkg> # Install a plugin'));\n console.log(chalk.gray(' $ kg plugin uninstall <n> # Uninstall a plugin'));\n console.log(chalk.gray(' $ kg plugin enable <name> # Enable a plugin'));\n console.log(chalk.gray(' $ kg plugin disable <name> # Disable a plugin'));\n console.log(chalk.gray(' $ kg plugin info <name> # Show plugin details'));\n console.log(chalk.gray(' $ kg plugin run <n> <file> # Run analyzer plugin'));\n console.log(chalk.gray(' $ kg plugin create <name> # Create new plugin\\n'));\n\n console.log(chalk.white(' Hive Mind (Graph Reconnection):'));\n console.log(chalk.gray(' $ kg hive-mind analyze-links <vault> # Analyze wiki-links'));\n console.log(chalk.gray(' $ kg hive-mind find-connections <vault> # Find potential links'));\n console.log(chalk.gray(' $ kg hive-mind validate-names <vault> # Validate file names'));\n console.log(chalk.gray(' $ kg hive-mind add-frontmatter <vault> # Add YAML frontmatter\\n'));\n\n console.log(chalk.white(' Commands:'));\n program.commands.forEach(cmd => {\n console.log(chalk.cyan(` ${cmd.name().padEnd(20)}`), chalk.gray(cmd.description() || ''));\n });\n\n console.log('\\n Run', chalk.cyan('kg <command> --help'), 'for more information\\n');\n });\n\n return program;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Agent Equilibrium Selector (SPEC-006a)
3
+ *
4
+ * Implements Nash equilibrium-based agent selection to replace heuristic
5
+ * capability-matching in CoordinatorAgent. Uses game-theoretic principles
6
+ * where agents adjust their participation levels based on task fit and
7
+ * competition from other agents with similar capabilities.
8
+ *
9
+ * @module equilibrium/agent-equilibrium
10
+ */
11
+ import { AgentType } from '../agents/types.js';
12
+ import { type AgentInfo } from '../agents/planner-agent.js';
13
+ /**
14
+ * Agent participation in a task allocation game
15
+ */
16
+ export interface AgentParticipation {
17
+ /** Agent identifier */
18
+ agentId: string;
19
+ /** Agent type */
20
+ agentType: AgentType;
21
+ /** Participation level (0-1), equilibrium outcome */
22
+ participationLevel: number;
23
+ /** Effectiveness score for the task (0-1) */
24
+ effectivenessScore: number;
25
+ /** Penalty for overlapping with other agents */
26
+ redundancyPenalty: number;
27
+ /** Net utility from participation */
28
+ utility: number;
29
+ }
30
+ /**
31
+ * Configuration for equilibrium computation
32
+ */
33
+ export interface EquilibriumConfig {
34
+ /** Learning rate for gradient updates (default: 0.1) */
35
+ learningRate: number;
36
+ /** Maximum iterations before stopping (default: 100) */
37
+ maxIterations: number;
38
+ /** Convergence threshold for participation changes (default: 0.001) */
39
+ convergenceThreshold: number;
40
+ /** Minimum participation level before collapsing to 0 (default: 0.01) */
41
+ minParticipation: number;
42
+ }
43
+ /**
44
+ * Task definition for equilibrium selection
45
+ */
46
+ export interface Task {
47
+ /** Unique task identifier */
48
+ id: string;
49
+ /** Task description */
50
+ description: string;
51
+ /** Required capabilities for the task */
52
+ requiredCapabilities: string[];
53
+ /** Task priority */
54
+ priority: 'low' | 'medium' | 'high' | 'critical';
55
+ /** Task complexity (0-1) */
56
+ complexity: number;
57
+ }
58
+ /**
59
+ * Equilibrium computation result
60
+ */
61
+ export interface EquilibriumResult {
62
+ /** Participating agents sorted by participation level */
63
+ participants: AgentParticipation[];
64
+ /** Number of iterations to converge */
65
+ iterations: number;
66
+ /** Whether equilibrium was reached */
67
+ converged: boolean;
68
+ /** Total utility at equilibrium */
69
+ totalUtility: number;
70
+ }
71
+ /**
72
+ * AgentEquilibriumSelector
73
+ *
74
+ * Computes Nash equilibrium for agent selection using iterative gradient
75
+ * updates. Each agent adjusts its participation level based on:
76
+ * - Effectiveness: How well the agent matches the task requirements
77
+ * - Competition: Overlap with other participating agents
78
+ * - Utility: Net benefit from participating
79
+ *
80
+ * Dominated agents (those with lower effectiveness and high overlap)
81
+ * naturally collapse to zero participation, leaving only the most
82
+ * suitable agents.
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const selector = new AgentEquilibriumSelector();
87
+ * const selected = await selector.selectTopAgents(task, agents, 3);
88
+ * ```
89
+ */
90
+ export declare class AgentEquilibriumSelector {
91
+ private config;
92
+ private participations;
93
+ private iterationHistory;
94
+ constructor(config?: Partial<EquilibriumConfig>);
95
+ /**
96
+ * Find Nash equilibrium for agent selection
97
+ *
98
+ * Each agent adjusts participation based on task match and competition.
99
+ * Returns agents with positive participation, sorted by level.
100
+ *
101
+ * @param task - The task to allocate
102
+ * @param availableAgents - Pool of available agents
103
+ * @returns Agents with positive participation at equilibrium
104
+ */
105
+ findEquilibrium(task: Task, availableAgents: AgentInfo[]): Promise<AgentParticipation[]>;
106
+ /**
107
+ * Select top N agents based on equilibrium
108
+ *
109
+ * @param task - The task to allocate
110
+ * @param availableAgents - Pool of available agents
111
+ * @param n - Maximum number of agents to select
112
+ * @returns Selected agents (may be less than n if not enough qualify)
113
+ */
114
+ selectTopAgents(task: Task, availableAgents: AgentInfo[], n: number): Promise<AgentInfo[]>;
115
+ /**
116
+ * Get iteration history for analysis/debugging
117
+ */
118
+ getIterationHistory(): Array<{
119
+ iteration: number;
120
+ totalUtility: number;
121
+ }>;
122
+ /**
123
+ * Get current participation state
124
+ */
125
+ getParticipations(): Map<string, AgentParticipation>;
126
+ /**
127
+ * Get configuration
128
+ */
129
+ getConfig(): EquilibriumConfig;
130
+ /**
131
+ * Initialize participation levels uniformly across agents
132
+ */
133
+ private initializeParticipations;
134
+ /**
135
+ * Update a single agent's participation based on game dynamics
136
+ */
137
+ private updateAgentParticipation;
138
+ /**
139
+ * Normalize participation levels to sum to at most 1
140
+ * This prevents runaway accumulation
141
+ */
142
+ private normalizeParticipations;
143
+ /**
144
+ * Calculate how effective an agent is for a given task
145
+ *
146
+ * Combines:
147
+ * - Capability match (70% weight)
148
+ * - Type boost for task keywords (30% weight)
149
+ */
150
+ calculateEffectiveness(agent: AgentInfo, task: Task): number;
151
+ /**
152
+ * Get type-based boost for matching task keywords
153
+ */
154
+ getTypeBoost(agentType: AgentType, task: Task): number;
155
+ /**
156
+ * Calculate competition pressure from other agents
157
+ *
158
+ * Competition increases with:
159
+ * - Number of other agents with overlapping capabilities
160
+ * - Participation levels of overlapping agents
161
+ */
162
+ calculateCompetition(agent: AgentInfo, allAgents: AgentInfo[]): number;
163
+ /**
164
+ * Calculate capability overlap between two agents
165
+ *
166
+ * Returns a value from 0 (no overlap) to 1 (complete overlap)
167
+ */
168
+ capabilityOverlap(a: AgentInfo, b: AgentInfo): number;
169
+ /**
170
+ * Create snapshot of current participation levels
171
+ */
172
+ private snapshotParticipations;
173
+ /**
174
+ * Check if participation levels have converged
175
+ */
176
+ private hasConverged;
177
+ /**
178
+ * Calculate total utility across all agents
179
+ */
180
+ calculateTotalUtility(): number;
181
+ }
182
+ /**
183
+ * Create a new AgentEquilibriumSelector with optional configuration
184
+ */
185
+ export declare function createAgentEquilibriumSelector(config?: Partial<EquilibriumConfig>): AgentEquilibriumSelector;
186
+ /**
187
+ * Create a task for equilibrium selection
188
+ */
189
+ export declare function createEquilibriumTask(id: string, description: string, options?: {
190
+ requiredCapabilities?: string[];
191
+ priority?: 'low' | 'medium' | 'high' | 'critical';
192
+ complexity?: number;
193
+ }): Task;
194
+ //# sourceMappingURL=agent-equilibrium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-equilibrium.d.ts","sourceRoot":"","sources":["../../src/equilibrium/agent-equilibrium.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,304 @@
1
+ import { AgentType } from "../agents/types.js";
2
+ class AgentEquilibriumSelector {
3
+ config;
4
+ participations;
5
+ iterationHistory;
6
+ constructor(config = {}) {
7
+ this.config = {
8
+ learningRate: 0.1,
9
+ maxIterations: 100,
10
+ convergenceThreshold: 1e-3,
11
+ minParticipation: 0.01,
12
+ ...config
13
+ };
14
+ this.participations = /* @__PURE__ */ new Map();
15
+ this.iterationHistory = [];
16
+ }
17
+ // ==========================================================================
18
+ // Public API
19
+ // ==========================================================================
20
+ /**
21
+ * Find Nash equilibrium for agent selection
22
+ *
23
+ * Each agent adjusts participation based on task match and competition.
24
+ * Returns agents with positive participation, sorted by level.
25
+ *
26
+ * @param task - The task to allocate
27
+ * @param availableAgents - Pool of available agents
28
+ * @returns Agents with positive participation at equilibrium
29
+ */
30
+ async findEquilibrium(task, availableAgents) {
31
+ this.iterationHistory = [];
32
+ if (availableAgents.length === 0) {
33
+ return [];
34
+ }
35
+ if (availableAgents.length === 1) {
36
+ const agent = availableAgents[0];
37
+ const effectiveness = this.calculateEffectiveness(agent, task);
38
+ const participation = {
39
+ agentId: agent.id,
40
+ agentType: agent.type,
41
+ participationLevel: 1,
42
+ effectivenessScore: effectiveness,
43
+ redundancyPenalty: 0,
44
+ utility: effectiveness
45
+ };
46
+ this.participations.set(agent.id, participation);
47
+ return [participation];
48
+ }
49
+ this.initializeParticipations(availableAgents, task);
50
+ let converged = false;
51
+ let iteration = 0;
52
+ for (iteration = 0; iteration < this.config.maxIterations; iteration++) {
53
+ const prevState = this.snapshotParticipations();
54
+ for (const agent of availableAgents) {
55
+ this.updateAgentParticipation(agent, task, availableAgents);
56
+ }
57
+ this.normalizeParticipations();
58
+ if (this.hasConverged(prevState)) {
59
+ converged = true;
60
+ break;
61
+ }
62
+ this.iterationHistory.push({
63
+ iteration,
64
+ totalUtility: this.calculateTotalUtility()
65
+ });
66
+ }
67
+ if (!converged) {
68
+ console.debug(
69
+ `Equilibrium did not converge after ${this.config.maxIterations} iterations`
70
+ );
71
+ }
72
+ return [...this.participations.values()].filter((p) => p.participationLevel > 0).sort((a, b) => b.participationLevel - a.participationLevel);
73
+ }
74
+ /**
75
+ * Select top N agents based on equilibrium
76
+ *
77
+ * @param task - The task to allocate
78
+ * @param availableAgents - Pool of available agents
79
+ * @param n - Maximum number of agents to select
80
+ * @returns Selected agents (may be less than n if not enough qualify)
81
+ */
82
+ async selectTopAgents(task, availableAgents, n) {
83
+ const equilibrium = await this.findEquilibrium(task, availableAgents);
84
+ return equilibrium.slice(0, n).map((p) => availableAgents.find((a) => a.id === p.agentId)).filter(Boolean);
85
+ }
86
+ /**
87
+ * Get iteration history for analysis/debugging
88
+ */
89
+ getIterationHistory() {
90
+ return [...this.iterationHistory];
91
+ }
92
+ /**
93
+ * Get current participation state
94
+ */
95
+ getParticipations() {
96
+ return new Map(this.participations);
97
+ }
98
+ /**
99
+ * Get configuration
100
+ */
101
+ getConfig() {
102
+ return { ...this.config };
103
+ }
104
+ // ==========================================================================
105
+ // Initialization
106
+ // ==========================================================================
107
+ /**
108
+ * Initialize participation levels uniformly across agents
109
+ */
110
+ initializeParticipations(agents, task) {
111
+ this.participations.clear();
112
+ const uniformLevel = 1 / agents.length;
113
+ for (const agent of agents) {
114
+ const effectiveness = this.calculateEffectiveness(agent, task);
115
+ this.participations.set(agent.id, {
116
+ agentId: agent.id,
117
+ agentType: agent.type,
118
+ participationLevel: uniformLevel,
119
+ effectivenessScore: effectiveness,
120
+ redundancyPenalty: 0,
121
+ utility: 0
122
+ });
123
+ }
124
+ }
125
+ // ==========================================================================
126
+ // Gradient Update
127
+ // ==========================================================================
128
+ /**
129
+ * Update a single agent's participation based on game dynamics
130
+ */
131
+ updateAgentParticipation(agent, task, allAgents) {
132
+ const participation = this.participations.get(agent.id);
133
+ if (!participation) return;
134
+ const utility = participation.effectivenessScore * participation.participationLevel;
135
+ const competition = this.calculateCompetition(agent, allAgents);
136
+ participation.redundancyPenalty = competition * 0.5;
137
+ const netUtility = utility - participation.redundancyPenalty;
138
+ participation.utility = netUtility;
139
+ const delta = this.config.learningRate * (netUtility - competition);
140
+ participation.participationLevel = Math.max(
141
+ 0,
142
+ Math.min(1, participation.participationLevel + delta)
143
+ );
144
+ if (participation.participationLevel < this.config.minParticipation) {
145
+ participation.participationLevel = 0;
146
+ }
147
+ }
148
+ /**
149
+ * Normalize participation levels to sum to at most 1
150
+ * This prevents runaway accumulation
151
+ */
152
+ normalizeParticipations() {
153
+ const total = [...this.participations.values()].reduce(
154
+ (sum, p) => sum + p.participationLevel,
155
+ 0
156
+ );
157
+ if (total > 1) {
158
+ for (const p of this.participations.values()) {
159
+ p.participationLevel = p.participationLevel / total;
160
+ }
161
+ }
162
+ }
163
+ // ==========================================================================
164
+ // Effectiveness Calculation
165
+ // ==========================================================================
166
+ /**
167
+ * Calculate how effective an agent is for a given task
168
+ *
169
+ * Combines:
170
+ * - Capability match (70% weight)
171
+ * - Type boost for task keywords (30% weight)
172
+ */
173
+ calculateEffectiveness(agent, task) {
174
+ const requiredCaps = new Set(task.requiredCapabilities);
175
+ const agentCaps = new Set(agent.capabilities || []);
176
+ let matchCount = 0;
177
+ for (const cap of requiredCaps) {
178
+ if (agentCaps.has(cap)) matchCount++;
179
+ }
180
+ const capabilityMatch = requiredCaps.size > 0 ? matchCount / requiredCaps.size : 0.5;
181
+ const typeBoost = this.getTypeBoost(agent.type, task);
182
+ return capabilityMatch * 0.7 + typeBoost * 0.3;
183
+ }
184
+ /**
185
+ * Get type-based boost for matching task keywords
186
+ */
187
+ getTypeBoost(agentType, task) {
188
+ const desc = task.description.toLowerCase();
189
+ const boostMap = {
190
+ review: [AgentType.REVIEWER],
191
+ test: [AgentType.TESTER],
192
+ code: [AgentType.CODER],
193
+ implement: [AgentType.CODER],
194
+ document: [AgentType.DOCUMENTER],
195
+ plan: [AgentType.PLANNER],
196
+ optimize: [AgentType.OPTIMIZER],
197
+ research: [AgentType.RESEARCHER],
198
+ analyze: [AgentType.ANALYST],
199
+ architect: [AgentType.ARCHITECT],
200
+ design: [AgentType.ARCHITECT],
201
+ coordinate: [AgentType.COORDINATOR]
202
+ };
203
+ for (const [keyword, types] of Object.entries(boostMap)) {
204
+ if (desc.includes(keyword) && types.includes(agentType)) {
205
+ return 1;
206
+ }
207
+ }
208
+ return 0.3;
209
+ }
210
+ // ==========================================================================
211
+ // Competition Calculation
212
+ // ==========================================================================
213
+ /**
214
+ * Calculate competition pressure from other agents
215
+ *
216
+ * Competition increases with:
217
+ * - Number of other agents with overlapping capabilities
218
+ * - Participation levels of overlapping agents
219
+ */
220
+ calculateCompetition(agent, allAgents) {
221
+ let competition = 0;
222
+ for (const other of allAgents) {
223
+ if (other.id === agent.id) continue;
224
+ const overlap = this.capabilityOverlap(agent, other);
225
+ const otherParticipation = this.participations.get(other.id);
226
+ if (otherParticipation) {
227
+ competition += overlap * otherParticipation.participationLevel;
228
+ }
229
+ }
230
+ return competition;
231
+ }
232
+ /**
233
+ * Calculate capability overlap between two agents
234
+ *
235
+ * Returns a value from 0 (no overlap) to 1 (complete overlap)
236
+ */
237
+ capabilityOverlap(a, b) {
238
+ const capsA = new Set(a.capabilities || []);
239
+ const capsB = new Set(b.capabilities || []);
240
+ if (capsA.size === 0 || capsB.size === 0) {
241
+ return a.type === b.type ? 0.8 : 0.2;
242
+ }
243
+ let overlap = 0;
244
+ for (const cap of capsA) {
245
+ if (capsB.has(cap)) overlap++;
246
+ }
247
+ return overlap / Math.max(capsA.size, capsB.size);
248
+ }
249
+ // ==========================================================================
250
+ // Convergence Detection
251
+ // ==========================================================================
252
+ /**
253
+ * Create snapshot of current participation levels
254
+ */
255
+ snapshotParticipations() {
256
+ const snapshot = /* @__PURE__ */ new Map();
257
+ for (const [id, p] of this.participations) {
258
+ snapshot.set(id, p.participationLevel);
259
+ }
260
+ return snapshot;
261
+ }
262
+ /**
263
+ * Check if participation levels have converged
264
+ */
265
+ hasConverged(prevState) {
266
+ let maxDelta = 0;
267
+ for (const [id, p] of this.participations) {
268
+ const prev = prevState.get(id) ?? 0;
269
+ const delta = Math.abs(p.participationLevel - prev);
270
+ maxDelta = Math.max(maxDelta, delta);
271
+ }
272
+ return maxDelta < this.config.convergenceThreshold;
273
+ }
274
+ // ==========================================================================
275
+ // Utility Calculation
276
+ // ==========================================================================
277
+ /**
278
+ * Calculate total utility across all agents
279
+ */
280
+ calculateTotalUtility() {
281
+ return [...this.participations.values()].reduce(
282
+ (sum, p) => sum + p.utility,
283
+ 0
284
+ );
285
+ }
286
+ }
287
+ function createAgentEquilibriumSelector(config) {
288
+ return new AgentEquilibriumSelector(config);
289
+ }
290
+ function createEquilibriumTask(id, description, options = {}) {
291
+ return {
292
+ id,
293
+ description,
294
+ requiredCapabilities: options.requiredCapabilities ?? [],
295
+ priority: options.priority ?? "medium",
296
+ complexity: options.complexity ?? 0.5
297
+ };
298
+ }
299
+ export {
300
+ AgentEquilibriumSelector,
301
+ createAgentEquilibriumSelector,
302
+ createEquilibriumTask
303
+ };
304
+ //# sourceMappingURL=agent-equilibrium.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-equilibrium.js","sources":["../../src/equilibrium/agent-equilibrium.ts"],"sourcesContent":["/**\n * Agent Equilibrium Selector (SPEC-006a)\n *\n * Implements Nash equilibrium-based agent selection to replace heuristic\n * capability-matching in CoordinatorAgent. Uses game-theoretic principles\n * where agents adjust their participation levels based on task fit and\n * competition from other agents with similar capabilities.\n *\n * @module equilibrium/agent-equilibrium\n */\n\nimport { AgentType } from '../agents/types.js';\nimport { type AgentInfo } from '../agents/planner-agent.js';\n\n// ============================================================================\n// Types and Interfaces\n// ============================================================================\n\n/**\n * Agent participation in a task allocation game\n */\nexport interface AgentParticipation {\n /** Agent identifier */\n agentId: string;\n /** Agent type */\n agentType: AgentType;\n /** Participation level (0-1), equilibrium outcome */\n participationLevel: number;\n /** Effectiveness score for the task (0-1) */\n effectivenessScore: number;\n /** Penalty for overlapping with other agents */\n redundancyPenalty: number;\n /** Net utility from participation */\n utility: number;\n}\n\n/**\n * Configuration for equilibrium computation\n */\nexport interface EquilibriumConfig {\n /** Learning rate for gradient updates (default: 0.1) */\n learningRate: number;\n /** Maximum iterations before stopping (default: 100) */\n maxIterations: number;\n /** Convergence threshold for participation changes (default: 0.001) */\n convergenceThreshold: number;\n /** Minimum participation level before collapsing to 0 (default: 0.01) */\n minParticipation: number;\n}\n\n/**\n * Task definition for equilibrium selection\n */\nexport interface Task {\n /** Unique task identifier */\n id: string;\n /** Task description */\n description: string;\n /** Required capabilities for the task */\n requiredCapabilities: string[];\n /** Task priority */\n priority: 'low' | 'medium' | 'high' | 'critical';\n /** Task complexity (0-1) */\n complexity: number;\n}\n\n/**\n * Equilibrium computation result\n */\nexport interface EquilibriumResult {\n /** Participating agents sorted by participation level */\n participants: AgentParticipation[];\n /** Number of iterations to converge */\n iterations: number;\n /** Whether equilibrium was reached */\n converged: boolean;\n /** Total utility at equilibrium */\n totalUtility: number;\n}\n\n// ============================================================================\n// Agent Equilibrium Selector\n// ============================================================================\n\n/**\n * AgentEquilibriumSelector\n *\n * Computes Nash equilibrium for agent selection using iterative gradient\n * updates. Each agent adjusts its participation level based on:\n * - Effectiveness: How well the agent matches the task requirements\n * - Competition: Overlap with other participating agents\n * - Utility: Net benefit from participating\n *\n * Dominated agents (those with lower effectiveness and high overlap)\n * naturally collapse to zero participation, leaving only the most\n * suitable agents.\n *\n * @example\n * ```typescript\n * const selector = new AgentEquilibriumSelector();\n * const selected = await selector.selectTopAgents(task, agents, 3);\n * ```\n */\nexport class AgentEquilibriumSelector {\n private config: EquilibriumConfig;\n private participations: Map<string, AgentParticipation>;\n private iterationHistory: Array<{ iteration: number; totalUtility: number }>;\n\n constructor(config: Partial<EquilibriumConfig> = {}) {\n this.config = {\n learningRate: 0.1,\n maxIterations: 100,\n convergenceThreshold: 0.001,\n minParticipation: 0.01,\n ...config,\n };\n this.participations = new Map();\n this.iterationHistory = [];\n }\n\n // ==========================================================================\n // Public API\n // ==========================================================================\n\n /**\n * Find Nash equilibrium for agent selection\n *\n * Each agent adjusts participation based on task match and competition.\n * Returns agents with positive participation, sorted by level.\n *\n * @param task - The task to allocate\n * @param availableAgents - Pool of available agents\n * @returns Agents with positive participation at equilibrium\n */\n async findEquilibrium(\n task: Task,\n availableAgents: AgentInfo[]\n ): Promise<AgentParticipation[]> {\n // Reset state for new computation\n this.iterationHistory = [];\n\n // Handle edge cases\n if (availableAgents.length === 0) {\n return [];\n }\n\n if (availableAgents.length === 1) {\n // Single agent case - no competition\n const agent = availableAgents[0];\n const effectiveness = this.calculateEffectiveness(agent, task);\n const participation: AgentParticipation = {\n agentId: agent.id,\n agentType: agent.type,\n participationLevel: 1.0,\n effectivenessScore: effectiveness,\n redundancyPenalty: 0,\n utility: effectiveness,\n };\n this.participations.set(agent.id, participation);\n return [participation];\n }\n\n // 1. Initialize participation levels uniformly\n this.initializeParticipations(availableAgents, task);\n\n // 2. Iterate until convergence or max iterations\n let converged = false;\n let iteration = 0;\n\n for (iteration = 0; iteration < this.config.maxIterations; iteration++) {\n const prevState = this.snapshotParticipations();\n\n // Update each agent's participation\n for (const agent of availableAgents) {\n this.updateAgentParticipation(agent, task, availableAgents);\n }\n\n // Normalize participation levels to prevent runaway values\n this.normalizeParticipations();\n\n // Check convergence\n if (this.hasConverged(prevState)) {\n converged = true;\n break;\n }\n\n // Record history\n this.iterationHistory.push({\n iteration,\n totalUtility: this.calculateTotalUtility(),\n });\n }\n\n // Log convergence info\n if (!converged) {\n console.debug(\n `Equilibrium did not converge after ${this.config.maxIterations} iterations`\n );\n }\n\n // 3. Return agents with positive participation, sorted by level\n return [...this.participations.values()]\n .filter(p => p.participationLevel > 0)\n .sort((a, b) => b.participationLevel - a.participationLevel);\n }\n\n /**\n * Select top N agents based on equilibrium\n *\n * @param task - The task to allocate\n * @param availableAgents - Pool of available agents\n * @param n - Maximum number of agents to select\n * @returns Selected agents (may be less than n if not enough qualify)\n */\n async selectTopAgents(\n task: Task,\n availableAgents: AgentInfo[],\n n: number\n ): Promise<AgentInfo[]> {\n const equilibrium = await this.findEquilibrium(task, availableAgents);\n return equilibrium\n .slice(0, n)\n .map(p => availableAgents.find(a => a.id === p.agentId)!)\n .filter(Boolean);\n }\n\n /**\n * Get iteration history for analysis/debugging\n */\n getIterationHistory(): Array<{ iteration: number; totalUtility: number }> {\n return [...this.iterationHistory];\n }\n\n /**\n * Get current participation state\n */\n getParticipations(): Map<string, AgentParticipation> {\n return new Map(this.participations);\n }\n\n /**\n * Get configuration\n */\n getConfig(): EquilibriumConfig {\n return { ...this.config };\n }\n\n // ==========================================================================\n // Initialization\n // ==========================================================================\n\n /**\n * Initialize participation levels uniformly across agents\n */\n private initializeParticipations(agents: AgentInfo[], task: Task): void {\n this.participations.clear();\n const uniformLevel = 1.0 / agents.length;\n\n for (const agent of agents) {\n const effectiveness = this.calculateEffectiveness(agent, task);\n this.participations.set(agent.id, {\n agentId: agent.id,\n agentType: agent.type,\n participationLevel: uniformLevel,\n effectivenessScore: effectiveness,\n redundancyPenalty: 0,\n utility: 0,\n });\n }\n }\n\n // ==========================================================================\n // Gradient Update\n // ==========================================================================\n\n /**\n * Update a single agent's participation based on game dynamics\n */\n private updateAgentParticipation(\n agent: AgentInfo,\n task: Task,\n allAgents: AgentInfo[]\n ): void {\n const participation = this.participations.get(agent.id);\n if (!participation) return;\n\n // Calculate utility: effectiveness * participation (returns from participating)\n const utility =\n participation.effectivenessScore * participation.participationLevel;\n\n // Calculate competition from similar agents (costs from competition)\n const competition = this.calculateCompetition(agent, allAgents);\n\n // Calculate redundancy penalty\n participation.redundancyPenalty = competition * 0.5;\n\n // Net utility (marginal benefit of participating)\n const netUtility = utility - participation.redundancyPenalty;\n participation.utility = netUtility;\n\n // Gradient update toward equilibrium\n // Agent increases participation if net utility exceeds competition\n // Agent decreases participation if competition dominates\n const delta = this.config.learningRate * (netUtility - competition);\n\n participation.participationLevel = Math.max(\n 0,\n Math.min(1, participation.participationLevel + delta)\n );\n\n // Dominated agents collapse to zero (below threshold)\n if (participation.participationLevel < this.config.minParticipation) {\n participation.participationLevel = 0;\n }\n }\n\n /**\n * Normalize participation levels to sum to at most 1\n * This prevents runaway accumulation\n */\n private normalizeParticipations(): void {\n const total = [...this.participations.values()].reduce(\n (sum, p) => sum + p.participationLevel,\n 0\n );\n\n if (total > 1) {\n for (const p of this.participations.values()) {\n p.participationLevel = p.participationLevel / total;\n }\n }\n }\n\n // ==========================================================================\n // Effectiveness Calculation\n // ==========================================================================\n\n /**\n * Calculate how effective an agent is for a given task\n *\n * Combines:\n * - Capability match (70% weight)\n * - Type boost for task keywords (30% weight)\n */\n calculateEffectiveness(agent: AgentInfo, task: Task): number {\n // Score based on capability match\n const requiredCaps = new Set(task.requiredCapabilities);\n const agentCaps = new Set(agent.capabilities || []);\n\n let matchCount = 0;\n for (const cap of requiredCaps) {\n if (agentCaps.has(cap)) matchCount++;\n }\n\n const capabilityMatch =\n requiredCaps.size > 0 ? matchCount / requiredCaps.size : 0.5;\n\n // Boost for agent type matching task keywords\n const typeBoost = this.getTypeBoost(agent.type, task);\n\n // Combine with weights\n return capabilityMatch * 0.7 + typeBoost * 0.3;\n }\n\n /**\n * Get type-based boost for matching task keywords\n */\n getTypeBoost(agentType: AgentType, task: Task): number {\n const desc = task.description.toLowerCase();\n\n // Map keywords to relevant agent types\n const boostMap: Record<string, AgentType[]> = {\n review: [AgentType.REVIEWER],\n test: [AgentType.TESTER],\n code: [AgentType.CODER],\n implement: [AgentType.CODER],\n document: [AgentType.DOCUMENTER],\n plan: [AgentType.PLANNER],\n optimize: [AgentType.OPTIMIZER],\n research: [AgentType.RESEARCHER],\n analyze: [AgentType.ANALYST],\n architect: [AgentType.ARCHITECT],\n design: [AgentType.ARCHITECT],\n coordinate: [AgentType.COORDINATOR],\n };\n\n for (const [keyword, types] of Object.entries(boostMap)) {\n if (desc.includes(keyword) && types.includes(agentType)) {\n return 1.0;\n }\n }\n\n // Default low boost for non-matching types\n return 0.3;\n }\n\n // ==========================================================================\n // Competition Calculation\n // ==========================================================================\n\n /**\n * Calculate competition pressure from other agents\n *\n * Competition increases with:\n * - Number of other agents with overlapping capabilities\n * - Participation levels of overlapping agents\n */\n calculateCompetition(agent: AgentInfo, allAgents: AgentInfo[]): number {\n let competition = 0;\n\n for (const other of allAgents) {\n if (other.id === agent.id) continue;\n\n const overlap = this.capabilityOverlap(agent, other);\n const otherParticipation = this.participations.get(other.id);\n if (otherParticipation) {\n competition += overlap * otherParticipation.participationLevel;\n }\n }\n\n return competition;\n }\n\n /**\n * Calculate capability overlap between two agents\n *\n * Returns a value from 0 (no overlap) to 1 (complete overlap)\n */\n capabilityOverlap(a: AgentInfo, b: AgentInfo): number {\n const capsA = new Set(a.capabilities || []);\n const capsB = new Set(b.capabilities || []);\n\n if (capsA.size === 0 || capsB.size === 0) {\n // No capabilities defined - use type similarity as proxy\n return a.type === b.type ? 0.8 : 0.2;\n }\n\n let overlap = 0;\n for (const cap of capsA) {\n if (capsB.has(cap)) overlap++;\n }\n\n // Jaccard-like coefficient using max instead of union\n return overlap / Math.max(capsA.size, capsB.size);\n }\n\n // ==========================================================================\n // Convergence Detection\n // ==========================================================================\n\n /**\n * Create snapshot of current participation levels\n */\n private snapshotParticipations(): Map<string, number> {\n const snapshot = new Map<string, number>();\n for (const [id, p] of this.participations) {\n snapshot.set(id, p.participationLevel);\n }\n return snapshot;\n }\n\n /**\n * Check if participation levels have converged\n */\n private hasConverged(prevState: Map<string, number>): boolean {\n let maxDelta = 0;\n\n for (const [id, p] of this.participations) {\n const prev = prevState.get(id) ?? 0;\n const delta = Math.abs(p.participationLevel - prev);\n maxDelta = Math.max(maxDelta, delta);\n }\n\n return maxDelta < this.config.convergenceThreshold;\n }\n\n // ==========================================================================\n // Utility Calculation\n // ==========================================================================\n\n /**\n * Calculate total utility across all agents\n */\n calculateTotalUtility(): number {\n return [...this.participations.values()].reduce(\n (sum, p) => sum + p.utility,\n 0\n );\n }\n}\n\n// ============================================================================\n// Factory Functions\n// ============================================================================\n\n/**\n * Create a new AgentEquilibriumSelector with optional configuration\n */\nexport function createAgentEquilibriumSelector(\n config?: Partial<EquilibriumConfig>\n): AgentEquilibriumSelector {\n return new AgentEquilibriumSelector(config);\n}\n\n/**\n * Create a task for equilibrium selection\n */\nexport function createEquilibriumTask(\n id: string,\n description: string,\n options: {\n requiredCapabilities?: string[];\n priority?: 'low' | 'medium' | 'high' | 'critical';\n complexity?: number;\n } = {}\n): Task {\n return {\n id,\n description,\n requiredCapabilities: options.requiredCapabilities ?? [],\n priority: options.priority ?? 'medium',\n complexity: options.complexity ?? 0.5,\n };\n}\n"],"names":[],"mappings":"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"}