@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2025 Weave-NN
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -724,6 +724,28 @@ import {
724
724
 
725
725
  ## Changelog
726
726
 
727
+ ### v0.7.0
728
+
729
+ **Core Features:**
730
+ - **Agent Equilibrium Selector** - Intelligent agent selection based on task requirements
731
+ - **Memory & Graph Pruning** - Automatic cleanup and optimization of graph data
732
+ - **Agentic-Flow Integration** - Full AgentDB, ReasoningBank, and Federation Hub support
733
+ - **Trajectory Tracking** - Agent behavior learning and pattern optimization
734
+ - **Agent Booster Integration** - Enhanced agent capabilities with performance boosting
735
+ - **Multi-Model Router** - Dynamic model selection based on task complexity
736
+ - **QUIC Transport** - High-performance, low-latency communication protocol
737
+
738
+ **Documentation:**
739
+ - **Documentation overhaul** with Diátaxis framework (tutorials, guides, reference, explanation)
740
+ - 5 Architecture Decision Records (ADRs) from SPEC files
741
+ - Comprehensive API/CLI/MCP reference documentation
742
+ - Enterprise guides (chunking, backup, caching, health monitoring)
743
+ - Integration architecture docs (claude-flow, ruvector, exochain, agentic-flow)
744
+ - Getting started tutorials (installation, quick-start, configuration)
745
+ - MIT License added to project root
746
+ - Dependencies documentation with licenses
747
+ - 68 markdown documentation files
748
+
727
749
  ### v0.6.0
728
750
 
729
751
  - Plugin system with custom analyzers (13 lifecycle hooks, async streaming)
@@ -779,9 +801,42 @@ import {
779
801
 
780
802
  ---
781
803
 
782
- ## API Reference
804
+ ## Documentation
805
+
806
+ Comprehensive documentation is available in the [docs/](./docs/) directory, organized using the [Diátaxis framework](https://diataxis.fr/):
807
+
808
+ ### Getting Started
809
+
810
+ - [Installation Guide](./docs/getting-started/installation.md) - Set up your environment
811
+ - [Quick Start](./docs/getting-started/quick-start.md) - Build your first knowledge graph
812
+ - [Configuration](./docs/getting-started/configuration.md) - Configure for your project
813
+
814
+ ### Guides
815
+
816
+ - [Knowledge Graph Management](./docs/guides/knowledge-graph.md) - Create, query, and traverse graphs
817
+ - [Cultivation System](./docs/guides/cultivation.md) - Analyze codebases and generate primitives
818
+ - [Agent System](./docs/guides/agents.md) - Work with AI agents and rules engine
819
+
820
+ ### Enterprise Features
821
+
822
+ - [Document Chunking](./docs/guides/enterprise/chunking.md) - Split large documents efficiently
823
+ - [Backup & Recovery](./docs/guides/enterprise/backup-recovery.md) - Protect your data
824
+ - [Cache Configuration](./docs/guides/enterprise/caching.md) - Optimize performance
825
+ - [Health Monitoring](./docs/guides/enterprise/health-monitoring.md) - Monitor production systems
826
+
827
+ ### Reference
828
+
829
+ - [API Reference](./docs/API.md) - Complete API surface
830
+ - [CLI Commands](./docs/CLI-COMMANDS-REFERENCE.md) - All CLI commands
831
+ - [MCP Tools](./docs/MCP-TOOLS-REFERENCE.md) - MCP server tools
832
+ - [Architecture](./docs/ARCHITECTURE.md) - System architecture overview
833
+
834
+ ### Architecture Decisions
835
+
836
+ Technical decisions documented as ADRs:
783
837
 
784
- See [docs/API.md](./docs/API.md) for detailed API documentation.
838
+ - [ADR Index](./docs/architecture/decisions/README.md) - All architecture decisions
839
+ - [Dependencies](./docs/DEPENDENCIES.md) - Package dependencies and licenses
785
840
 
786
841
  ## Contributing
787
842
 
@@ -789,4 +844,4 @@ Contributions are welcome! Please read our [Contributing Guide](./docs/CONTRIBUT
789
844
 
790
845
  ## License
791
846
 
792
- MIT
847
+ MIT - See [LICENSE](./LICENSE) for details.
@@ -1,5 +1,5 @@
1
- const __viteBrowserExternal = {};
1
+ const sharp = {};
2
2
  export {
3
- __viteBrowserExternal as default
3
+ sharp as default
4
4
  };
5
5
  //# sourceMappingURL=__vite-browser-external.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"__vite-browser-external.js","sources":["../../__vite-browser-external"],"sourcesContent":["export default {}"],"names":[],"mappings":"AAAA,MAAA,wBAAe,CAAA;"}
1
+ {"version":3,"file":"__vite-browser-external.js","sources":["../../__vite-browser-external"],"sourcesContent":["export default {}"],"names":[],"mappings":"AAAA,MAAA,QAAe,CAAA;"}
@@ -0,0 +1,7 @@
1
+ import { getAugmentedNamespace } from "./_commonjsHelpers.js";
2
+ import * as index from "../node_modules/onnxruntime-common/dist/lib/index.js";
3
+ const require$$0 = /* @__PURE__ */ getAugmentedNamespace(index);
4
+ export {
5
+ require$$0 as default
6
+ };
7
+ //# sourceMappingURL=index12.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index12.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,8 @@
1
+ import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
+ import { __require as requireOrtWeb_min } from "../node_modules/onnxruntime-web/dist/ort-web.min.js";
3
+ var ortWeb_minExports = requireOrtWeb_min();
4
+ const ortWeb_min = /* @__PURE__ */ getDefaultExportFromCjs(ortWeb_minExports);
5
+ export {
6
+ ortWeb_min as default
7
+ };
8
+ //# sourceMappingURL=ort-web.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ort-web.min.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,5 @@
1
+ var ortWeb_min = { exports: {} };
2
+ export {
3
+ ortWeb_min as __module
4
+ };
5
+ //# sourceMappingURL=ort-web.min2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ort-web.min2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -9,6 +9,8 @@
9
9
  */
10
10
  import { type Logger } from '../utils/index.js';
11
11
  import { AgentStatus, MessageType, type AgentConfig, type AgentInstance, type AgentState, type AgentTask, type AgentResult, type AgentError, type AgentMessage, type ResultArtifact } from './types.js';
12
+ import { TrajectoryTracker } from '../learning/services/trajectory-tracker.js';
13
+ import type { TrajectoryStep } from '../integrations/agentic-flow/adapters/reasoning-bank-adapter.js';
12
14
  /**
13
15
  * Abstract base class for all agents
14
16
  *
@@ -39,6 +41,12 @@ export declare abstract class BaseAgent implements AgentInstance {
39
41
  protected readonly logger: Logger;
40
42
  /** Message handlers for different message types */
41
43
  private messageHandlers;
44
+ /** Trajectory tracker for learning */
45
+ protected trajectoryTracker: TrajectoryTracker | null;
46
+ /** Current active trajectory ID */
47
+ protected currentTrajectoryId: string | null;
48
+ /** Whether to auto-track trajectories */
49
+ protected autoTrackTrajectories: boolean;
42
50
  constructor(config: AgentConfig);
43
51
  /**
44
52
  * Get current agent state
@@ -141,6 +149,61 @@ export declare abstract class BaseAgent implements AgentInstance {
141
149
  * Register default message handlers
142
150
  */
143
151
  private registerDefaultMessageHandlers;
152
+ /**
153
+ * Set the trajectory tracker for this agent
154
+ *
155
+ * @param tracker - The trajectory tracker instance
156
+ */
157
+ setTrajectoryTracker(tracker: TrajectoryTracker): void;
158
+ /**
159
+ * Enable or disable auto-tracking of trajectories
160
+ *
161
+ * @param enabled - Whether to auto-track
162
+ */
163
+ setAutoTrackTrajectories(enabled: boolean): void;
164
+ /**
165
+ * Start tracking a task trajectory
166
+ *
167
+ * @param taskId - The task ID to track
168
+ * @param metadata - Optional metadata
169
+ * @returns The trajectory ID
170
+ */
171
+ protected startTrajectory(taskId: string, metadata?: Record<string, unknown>): string | null;
172
+ /**
173
+ * Record a step in the current trajectory
174
+ *
175
+ * @param action - The action taken
176
+ * @param observation - The observation/result
177
+ * @param confidence - Optional confidence score (0-1)
178
+ * @param metadata - Optional step metadata
179
+ */
180
+ protected recordStep(action: string, observation: string, confidence?: number, metadata?: Record<string, unknown>): void;
181
+ /**
182
+ * Complete the current trajectory
183
+ *
184
+ * @param outcome - The task outcome
185
+ * @param metadata - Optional final metadata
186
+ * @returns The stored trajectory ID, or null
187
+ */
188
+ protected completeTrajectory(outcome: 'success' | 'failure' | 'partial', metadata?: Record<string, unknown>): Promise<string | null>;
189
+ /**
190
+ * Abort the current trajectory
191
+ *
192
+ * @param reason - The reason for aborting
193
+ */
194
+ protected abortTrajectory(reason: string): void;
195
+ /**
196
+ * Check if trajectory tracking is active
197
+ */
198
+ isTrackingTrajectory(): boolean;
199
+ /**
200
+ * Get current trajectory progress
201
+ */
202
+ getTrajectoryProgress(): {
203
+ stepCount: number;
204
+ duration: number;
205
+ lastStep?: TrajectoryStep;
206
+ } | null;
144
207
  /**
145
208
  * Run a claude-flow hook
146
209
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base-agent.d.ts","sourceRoot":"","sources":["../../src/agents/base-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAoB,KAAK,MAAM,EAAqB,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAEL,WAAW,EAEX,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EAEjB,KAAK,cAAc,EAGpB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,SAAU,YAAW,aAAa;IACtD,0BAA0B;IAC1B,SAAgB,MAAM,EAAE,WAAW,CAAC;IAEpC,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAa;IAE3B,sBAAsB;IACtB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,mDAAmD;IACnD,OAAO,CAAC,eAAe,CACX;gBAEA,MAAM,EAAE,WAAW;IA4B/B;;OAEG;IACH,IAAI,KAAK,IAAI,UAAU,CAEtB;IAED;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAc9C;;;;;;;;;;OAUG;IACG,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAmFpD;;OAEG;YACW,kBAAkB;IAoBhC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAMrE;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA+BjF;;OAEG;IACH,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAatE;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAC7B,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,IAAI,EACf,SAAS,CAAC,EAAE,cAAc,EAAE,GAC3B,WAAW,CAAC,CAAC,CAAC;IAajB;;OAEG;IACH,SAAS,CAAC,iBAAiB,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,IAAI,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC5B,WAAW;IAgBd;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAuBnD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAShC;;;;OAIG;cACa,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAc1D;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAC9B,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,IAAI;IAIP;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAuBtC;;OAEG;cACa,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,EAChD,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;cACa,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB1E;AAMD;;GAEG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC,GACrE,SAAS,CAaX;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAO9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,UAAU,CAS5D"}
1
+ {"version":3,"file":"base-agent.d.ts","sourceRoot":"","sources":["../../src/agents/base-agent.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,12 @@ class BaseAgent {
10
10
  logger;
11
11
  /** Message handlers for different message types */
12
12
  messageHandlers = /* @__PURE__ */ new Map();
13
+ /** Trajectory tracker for learning */
14
+ trajectoryTracker = null;
15
+ /** Current active trajectory ID */
16
+ currentTrajectoryId = null;
17
+ /** Whether to auto-track trajectories */
18
+ autoTrackTrajectories = true;
13
19
  constructor(config) {
14
20
  this.config = {
15
21
  ...config,
@@ -75,15 +81,26 @@ class BaseAgent {
75
81
  if (this.config.claudeFlow?.hooks?.preTask) {
76
82
  await this.runClaudeFlowHook("pre-task", task);
77
83
  }
84
+ if (this.autoTrackTrajectories && this.trajectoryTracker?.isEnabled()) {
85
+ this.startTrajectory(task.id, {
86
+ description: task.description,
87
+ priority: task.priority,
88
+ input: task.input
89
+ });
90
+ this.recordStep("task_started", `Starting task: ${task.description}`, 1);
91
+ }
78
92
  try {
79
93
  const validationResult = await this.validateInput(task);
80
94
  if (!validationResult.valid) {
95
+ this.recordStep("validation_failed", validationResult.error ?? "Input validation failed", 0);
96
+ await this.completeTrajectory("failure", { validationError: validationResult.error });
81
97
  return this.createErrorResult(
82
98
  "VALIDATION_ERROR",
83
99
  validationResult.error ?? "Input validation failed",
84
100
  startTime
85
101
  );
86
102
  }
103
+ this.recordStep("validation_passed", "Input validation successful", 1);
87
104
  this.setStatus(AgentStatus.RUNNING);
88
105
  this._state.currentTask = task;
89
106
  let result;
@@ -105,9 +122,19 @@ class BaseAgent {
105
122
  if (result.success) {
106
123
  this._state.completedTasks.push(task.id);
107
124
  this.setStatus(AgentStatus.COMPLETED);
125
+ this.recordStep("task_completed", "Task completed successfully", 1, { success: true });
126
+ await this.completeTrajectory("success", {
127
+ durationMs: result.metrics?.durationMs,
128
+ artifactCount: result.artifacts?.length ?? 0
129
+ });
108
130
  } else {
109
131
  this._state.errorCount++;
110
132
  this.setStatus(AgentStatus.FAILED);
133
+ this.recordStep("task_failed", result.error?.message ?? "Task failed", 0, { error: result.error });
134
+ await this.completeTrajectory("failure", {
135
+ errorCode: result.error?.code,
136
+ errorMessage: result.error?.message
137
+ });
111
138
  }
112
139
  result.metrics = this.calculateMetrics(startTime, /* @__PURE__ */ new Date());
113
140
  if (this.config.claudeFlow?.hooks?.postTask) {
@@ -119,6 +146,15 @@ class BaseAgent {
119
146
  this.setStatus(AgentStatus.FAILED);
120
147
  const agentError = this.normalizeError(error);
121
148
  this.logger.error(`Task execution failed: ${task.id}`, error);
149
+ this.recordStep("task_exception", agentError.message, 0, {
150
+ errorCode: agentError.code,
151
+ stack: agentError.stack
152
+ });
153
+ await this.completeTrajectory("failure", {
154
+ exception: true,
155
+ errorCode: agentError.code,
156
+ errorMessage: agentError.message
157
+ });
122
158
  return this.createErrorResult(agentError.code, agentError.message, startTime, {
123
159
  stack: agentError.stack,
124
160
  retryable: agentError.retryable
@@ -362,6 +398,109 @@ class BaseAgent {
362
398
  });
363
399
  }
364
400
  // ============================================================================
401
+ // Trajectory Tracking
402
+ // ============================================================================
403
+ /**
404
+ * Set the trajectory tracker for this agent
405
+ *
406
+ * @param tracker - The trajectory tracker instance
407
+ */
408
+ setTrajectoryTracker(tracker) {
409
+ this.trajectoryTracker = tracker;
410
+ }
411
+ /**
412
+ * Enable or disable auto-tracking of trajectories
413
+ *
414
+ * @param enabled - Whether to auto-track
415
+ */
416
+ setAutoTrackTrajectories(enabled) {
417
+ this.autoTrackTrajectories = enabled;
418
+ }
419
+ /**
420
+ * Start tracking a task trajectory
421
+ *
422
+ * @param taskId - The task ID to track
423
+ * @param metadata - Optional metadata
424
+ * @returns The trajectory ID
425
+ */
426
+ startTrajectory(taskId, metadata = {}) {
427
+ if (!this.trajectoryTracker?.isEnabled()) {
428
+ return null;
429
+ }
430
+ this.currentTrajectoryId = this.trajectoryTracker.startTrajectory(taskId, {
431
+ ...metadata,
432
+ agentId: this.config.id,
433
+ agentType: this.config.type,
434
+ agentName: this.config.name
435
+ });
436
+ return this.currentTrajectoryId;
437
+ }
438
+ /**
439
+ * Record a step in the current trajectory
440
+ *
441
+ * @param action - The action taken
442
+ * @param observation - The observation/result
443
+ * @param confidence - Optional confidence score (0-1)
444
+ * @param metadata - Optional step metadata
445
+ */
446
+ recordStep(action, observation, confidence, metadata) {
447
+ if (!this.trajectoryTracker || !this.currentTrajectoryId) {
448
+ return;
449
+ }
450
+ this.trajectoryTracker.recordStep(this.currentTrajectoryId, {
451
+ action,
452
+ observation,
453
+ confidence,
454
+ metadata
455
+ });
456
+ }
457
+ /**
458
+ * Complete the current trajectory
459
+ *
460
+ * @param outcome - The task outcome
461
+ * @param metadata - Optional final metadata
462
+ * @returns The stored trajectory ID, or null
463
+ */
464
+ async completeTrajectory(outcome, metadata = {}) {
465
+ if (!this.trajectoryTracker || !this.currentTrajectoryId) {
466
+ return null;
467
+ }
468
+ const storedId = await this.trajectoryTracker.completeTrajectory(
469
+ this.currentTrajectoryId,
470
+ outcome,
471
+ metadata
472
+ );
473
+ this.currentTrajectoryId = null;
474
+ return storedId;
475
+ }
476
+ /**
477
+ * Abort the current trajectory
478
+ *
479
+ * @param reason - The reason for aborting
480
+ */
481
+ abortTrajectory(reason) {
482
+ if (!this.trajectoryTracker || !this.currentTrajectoryId) {
483
+ return;
484
+ }
485
+ this.trajectoryTracker.abortTrajectory(this.currentTrajectoryId, reason);
486
+ this.currentTrajectoryId = null;
487
+ }
488
+ /**
489
+ * Check if trajectory tracking is active
490
+ */
491
+ isTrackingTrajectory() {
492
+ return this.currentTrajectoryId !== null;
493
+ }
494
+ /**
495
+ * Get current trajectory progress
496
+ */
497
+ getTrajectoryProgress() {
498
+ if (!this.trajectoryTracker || !this.currentTrajectoryId) {
499
+ return null;
500
+ }
501
+ return this.trajectoryTracker.getProgress(this.currentTrajectoryId);
502
+ }
503
+ // ============================================================================
365
504
  // Claude-Flow Integration
366
505
  // ============================================================================
367
506
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"base-agent.js","sources":["../../src/agents/base-agent.ts"],"sourcesContent":["/**\n * Base Agent Implementation\n *\n * Abstract base class for all agents providing common functionality\n * including task execution, input validation, output formatting,\n * error handling, and optional claude-flow integration.\n *\n * @module agents/base-agent\n */\n\nimport { getLogger, retry, type Logger, type RetryOptions } from '../utils/index.js';\nimport {\n AgentType,\n AgentStatus,\n TaskPriority,\n MessageType,\n type AgentConfig,\n type AgentInstance,\n type AgentState,\n type AgentTask,\n type AgentResult,\n type AgentError,\n type AgentMessage,\n type ExecutionMetrics,\n type ResultArtifact,\n createAgentId,\n createTaskId,\n} from './types.js';\n\n// ============================================================================\n// Base Agent Abstract Class\n// ============================================================================\n\n/**\n * Abstract base class for all agents\n *\n * Provides common functionality that all agents share, including:\n * - Task execution with timeout and retry handling\n * - Input validation\n * - Output formatting\n * - Error handling and logging\n * - Optional claude-flow hooks integration\n *\n * @example\n * ```typescript\n * class ResearchAgent extends BaseAgent {\n * protected async executeTask(task: AgentTask): Promise<AgentResult> {\n * // Implementation specific to researcher agent\n * const results = await this.searchSources(task.input);\n * return this.formatOutput(results);\n * }\n * }\n * ```\n */\nexport abstract class BaseAgent implements AgentInstance {\n /** Agent configuration */\n public readonly config: AgentConfig;\n\n /** Agent runtime state */\n private _state: AgentState;\n\n /** Logger instance */\n protected readonly logger: Logger;\n\n /** Message handlers for different message types */\n private messageHandlers: Map<MessageType, (message: AgentMessage) => Promise<void>> =\n new Map();\n\n constructor(config: AgentConfig) {\n // Ensure ID is set\n this.config = {\n ...config,\n id: config.id ?? createAgentId(config.type),\n };\n\n // Initialize state\n this._state = {\n id: this.config.id!,\n status: AgentStatus.IDLE,\n taskQueue: [],\n completedTasks: [],\n lastActivity: new Date(),\n errorCount: 0,\n };\n\n // Create logger\n this.logger = getLogger().child(`agent:${this.config.name}`);\n\n // Register default message handlers\n this.registerDefaultMessageHandlers();\n }\n\n // ============================================================================\n // State Management\n // ============================================================================\n\n /**\n * Get current agent state\n */\n get state(): AgentState {\n return { ...this._state };\n }\n\n /**\n * Get current agent status\n */\n getStatus(): AgentStatus {\n return this._state.status;\n }\n\n /**\n * Update agent status\n */\n protected setStatus(status: AgentStatus): void {\n const previousStatus = this._state.status;\n this._state.status = status;\n this._state.lastActivity = new Date();\n\n if (previousStatus !== status) {\n this.logger.debug(`Status changed: ${previousStatus} -> ${status}`);\n }\n }\n\n // ============================================================================\n // Task Execution\n // ============================================================================\n\n /**\n * Execute a task\n *\n * This is the main entry point for task execution. It handles:\n * - Pre-task hooks (if enabled)\n * - Input validation\n * - Retry logic\n * - Timeout handling\n * - Post-task hooks (if enabled)\n * - Error handling and logging\n */\n async execute(task: AgentTask): Promise<AgentResult> {\n const startTime = new Date();\n\n this.logger.info(`Executing task: ${task.id}`, {\n description: task.description,\n priority: task.priority,\n });\n\n // Run pre-task hook if enabled\n if (this.config.claudeFlow?.hooks?.preTask) {\n await this.runClaudeFlowHook('pre-task', task);\n }\n\n try {\n // Validate input\n const validationResult = await this.validateInput(task);\n if (!validationResult.valid) {\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n validationResult.error ?? 'Input validation failed',\n startTime\n );\n }\n\n // Set status to running\n this.setStatus(AgentStatus.RUNNING);\n this._state.currentTask = task;\n\n // Execute with retry if configured\n let result: AgentResult;\n const retryConfig = this.config.retry;\n\n if (retryConfig && retryConfig.maxRetries > 0) {\n const retryOptions: RetryOptions = {\n maxRetries: retryConfig.maxRetries,\n initialDelay: retryConfig.backoffMs,\n backoffFactor: retryConfig.backoffMultiplier ?? 2,\n isRetryable: (error: unknown) => this.isRetryableError(error),\n };\n\n result = await retry(\n async () => this.executeWithTimeout(task),\n retryOptions\n );\n } else {\n result = await this.executeWithTimeout(task);\n }\n\n // Update state on success\n if (result.success) {\n this._state.completedTasks.push(task.id);\n this.setStatus(AgentStatus.COMPLETED);\n } else {\n this._state.errorCount++;\n this.setStatus(AgentStatus.FAILED);\n }\n\n // Add metrics\n result.metrics = this.calculateMetrics(startTime, new Date());\n\n // Run post-task hook if enabled\n if (this.config.claudeFlow?.hooks?.postTask) {\n await this.runClaudeFlowHook('post-task', task, result);\n }\n\n return result;\n } catch (error) {\n this._state.errorCount++;\n this.setStatus(AgentStatus.FAILED);\n\n const agentError = this.normalizeError(error);\n this.logger.error(`Task execution failed: ${task.id}`, error as Error);\n\n return this.createErrorResult(agentError.code, agentError.message, startTime, {\n stack: agentError.stack,\n retryable: agentError.retryable,\n });\n } finally {\n this._state.currentTask = undefined;\n this._state.lastActivity = new Date();\n }\n }\n\n /**\n * Execute task with timeout\n */\n private async executeWithTimeout(task: AgentTask): Promise<AgentResult> {\n const timeout = task.timeout ?? this.config.taskTimeout ?? 30000;\n\n return new Promise<AgentResult>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`Task execution timed out after ${timeout}ms`));\n }, timeout);\n\n this.executeTask(task)\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timer);\n reject(error);\n });\n });\n }\n\n /**\n * Abstract method for actual task execution\n *\n * Subclasses must implement this method with their specific logic.\n */\n protected abstract executeTask(task: AgentTask): Promise<AgentResult>;\n\n // ============================================================================\n // Input Validation\n // ============================================================================\n\n /**\n * Validate task input\n *\n * Override this method to implement custom validation logic.\n */\n async validateInput(task: AgentTask): Promise<{ valid: boolean; error?: string }> {\n // Basic validation\n if (!task.id) {\n return { valid: false, error: 'Task ID is required' };\n }\n\n if (!task.description) {\n return { valid: false, error: 'Task description is required' };\n }\n\n // Check dependencies are resolved\n if (task.dependencies && task.dependencies.length > 0) {\n const unresolvedDeps = task.dependencies.filter(\n (dep) => !this._state.completedTasks.includes(dep)\n );\n\n if (unresolvedDeps.length > 0) {\n return {\n valid: false,\n error: `Unresolved dependencies: ${unresolvedDeps.join(', ')}`,\n };\n }\n }\n\n return { valid: true };\n }\n\n // ============================================================================\n // Output Formatting\n // ============================================================================\n\n /**\n * Format successful output\n */\n formatOutput<T>(data: T, artifacts?: ResultArtifact[]): AgentResult<T> {\n return {\n success: true,\n data,\n artifacts,\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Create a success result\n */\n protected createSuccessResult<T>(\n data: T,\n startTime: Date,\n artifacts?: ResultArtifact[]\n ): AgentResult<T> {\n return {\n success: true,\n data,\n artifacts,\n metrics: this.calculateMetrics(startTime, new Date()),\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n },\n };\n }\n\n /**\n * Create an error result\n */\n protected createErrorResult(\n code: string,\n message: string,\n startTime: Date,\n details?: Partial<AgentError>\n ): AgentResult {\n return {\n success: false,\n error: {\n code,\n message,\n ...details,\n },\n metrics: this.calculateMetrics(startTime, new Date()),\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n },\n };\n }\n\n /**\n * Calculate execution metrics\n */\n private calculateMetrics(startTime: Date, endTime: Date): ExecutionMetrics {\n return {\n startTime,\n endTime,\n durationMs: endTime.getTime() - startTime.getTime(),\n memoryUsage: process.memoryUsage?.().heapUsed,\n retries: 0, // Updated by retry logic if needed\n };\n }\n\n // ============================================================================\n // Error Handling\n // ============================================================================\n\n /**\n * Normalize error to AgentError format\n */\n private normalizeError(error: unknown): AgentError {\n if (error instanceof Error) {\n return {\n code: error.name || 'UNKNOWN_ERROR',\n message: error.message,\n stack: error.stack,\n retryable: this.isRetryableError(error),\n };\n }\n\n return {\n code: 'UNKNOWN_ERROR',\n message: String(error),\n retryable: false,\n };\n }\n\n /**\n * Check if an error is retryable\n */\n protected isRetryableError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n\n // Network/transient errors\n if (\n message.includes('timeout') ||\n message.includes('network') ||\n message.includes('connection') ||\n message.includes('econnreset') ||\n message.includes('rate limit')\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n // ============================================================================\n // Lifecycle Methods\n // ============================================================================\n\n /**\n * Pause the agent\n */\n async pause(): Promise<void> {\n if (this._state.status === AgentStatus.RUNNING) {\n this.logger.info('Pausing agent');\n this.setStatus(AgentStatus.PAUSED);\n }\n }\n\n /**\n * Resume the agent\n */\n async resume(): Promise<void> {\n if (this._state.status === AgentStatus.PAUSED) {\n this.logger.info('Resuming agent');\n this.setStatus(AgentStatus.IDLE);\n }\n }\n\n /**\n * Terminate the agent\n */\n async terminate(): Promise<void> {\n this.logger.info('Terminating agent');\n\n // Clean up any resources\n await this.cleanup();\n\n this.setStatus(AgentStatus.TERMINATED);\n }\n\n /**\n * Cleanup resources\n *\n * Override to implement custom cleanup logic.\n */\n protected async cleanup(): Promise<void> {\n // Default: no cleanup needed\n }\n\n // ============================================================================\n // Messaging\n // ============================================================================\n\n /**\n * Send a message to another agent\n */\n async sendMessage(message: AgentMessage): Promise<void> {\n this.logger.debug(`Sending message to ${message.to}`, {\n type: message.type,\n correlationId: message.correlationId,\n });\n\n // In a real implementation, this would use a message bus\n // For now, just log the message\n this.logger.trace('Message payload', { payload: message.payload });\n }\n\n /**\n * Receive and process a message\n */\n async receiveMessage(message: AgentMessage): Promise<void> {\n this.logger.debug(`Received message from ${message.from}`, {\n type: message.type,\n correlationId: message.correlationId,\n });\n\n const handler = this.messageHandlers.get(message.type);\n if (handler) {\n await handler(message);\n } else {\n this.logger.warn(`No handler for message type: ${message.type}`);\n }\n }\n\n /**\n * Register a message handler\n */\n protected registerMessageHandler(\n type: MessageType,\n handler: (message: AgentMessage) => Promise<void>\n ): void {\n this.messageHandlers.set(type, handler);\n }\n\n /**\n * Register default message handlers\n */\n private registerDefaultMessageHandlers(): void {\n // Handle status requests\n this.registerMessageHandler(MessageType.STATUS, async (message) => {\n await this.sendMessage({\n id: `${Date.now()}`,\n type: MessageType.STATUS,\n from: this.config.id!,\n to: message.from,\n timestamp: new Date(),\n correlationId: message.id,\n payload: {\n agentId: this.config.id,\n status: this._state.status,\n currentTask: this._state.currentTask?.id,\n },\n });\n });\n }\n\n // ============================================================================\n // Claude-Flow Integration\n // ============================================================================\n\n /**\n * Run a claude-flow hook\n */\n protected async runClaudeFlowHook(\n hookType: 'pre-task' | 'post-task' | 'post-edit',\n task: AgentTask,\n result?: AgentResult\n ): Promise<void> {\n if (!this.config.claudeFlow?.enabled) {\n return;\n }\n\n const namespace = this.config.claudeFlow.namespace ?? 'knowledge-graph';\n\n this.logger.debug(`Running claude-flow hook: ${hookType}`, {\n namespace,\n taskId: task.id,\n });\n\n // Generate the hook command that would be run\n const hookCommand = this.generateHookCommand(hookType, task, result);\n\n this.logger.trace('Claude-flow hook command', { command: hookCommand });\n\n // In production, this would execute via child_process or MCP\n // For now, we just log the intent\n }\n\n /**\n * Generate claude-flow hook command\n */\n private generateHookCommand(\n hookType: 'pre-task' | 'post-task' | 'post-edit',\n task: AgentTask,\n result?: AgentResult\n ): string {\n const namespace = this.config.claudeFlow?.namespace ?? 'knowledge-graph';\n\n switch (hookType) {\n case 'pre-task':\n return `npx claude-flow@alpha hooks pre-task --description \"${task.description}\"`;\n\n case 'post-task':\n return `npx claude-flow@alpha hooks post-task --task-id \"${task.id}\"`;\n\n case 'post-edit':\n return `npx claude-flow@alpha hooks post-edit --memory-key \"${namespace}/agent/${this.config.id}/task/${task.id}\"`;\n\n default:\n return '';\n }\n }\n\n /**\n * Store result in claude-flow memory\n */\n protected async storeInMemory(key: string, value: unknown): Promise<void> {\n if (!this.config.claudeFlow?.enabled) {\n return;\n }\n\n const namespace = this.config.claudeFlow.namespace ?? 'knowledge-graph';\n\n this.logger.debug('Storing in claude-flow memory', { namespace, key });\n\n // This would call the MCP memory_usage tool\n // For now, just log the intent\n this.logger.trace('Memory store', {\n action: 'store',\n namespace,\n key,\n value: JSON.stringify(value).slice(0, 100),\n });\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Create a task with defaults\n */\nexport function createTask(\n description: string,\n options?: Partial<Omit<AgentTask, 'id' | 'description' | 'createdAt'>>\n): AgentTask {\n return {\n id: createTaskId(),\n description,\n priority: options?.priority ?? TaskPriority.MEDIUM,\n input: options?.input ?? {},\n expectedOutput: options?.expectedOutput,\n dependencies: options?.dependencies,\n timeout: options?.timeout,\n metadata: options?.metadata,\n createdAt: new Date(),\n deadline: options?.deadline,\n };\n}\n\n/**\n * Type guard for checking if an object is an AgentResult\n */\nexport function isAgentResult(obj: unknown): obj is AgentResult {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'success' in obj &&\n typeof (obj as AgentResult).success === 'boolean'\n );\n}\n\n/**\n * Type guard for checking if an object is an AgentError\n */\nexport function isAgentError(obj: unknown): obj is AgentError {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'code' in obj &&\n 'message' in obj &&\n typeof (obj as AgentError).code === 'string' &&\n typeof (obj as AgentError).message === 'string'\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-agent.js","sources":["../../src/agents/base-agent.ts"],"sourcesContent":["/**\n * Base Agent Implementation\n *\n * Abstract base class for all agents providing common functionality\n * including task execution, input validation, output formatting,\n * error handling, and optional claude-flow integration.\n *\n * @module agents/base-agent\n */\n\nimport { getLogger, retry, type Logger, type RetryOptions } from '../utils/index.js';\nimport {\n AgentType,\n AgentStatus,\n TaskPriority,\n MessageType,\n type AgentConfig,\n type AgentInstance,\n type AgentState,\n type AgentTask,\n type AgentResult,\n type AgentError,\n type AgentMessage,\n type ExecutionMetrics,\n type ResultArtifact,\n createAgentId,\n createTaskId,\n} from './types.js';\nimport {\n TrajectoryTracker,\n type TrajectoryTrackerConfig,\n} from '../learning/services/trajectory-tracker.js';\nimport type { TrajectoryStep } from '../integrations/agentic-flow/adapters/reasoning-bank-adapter.js';\n\n// ============================================================================\n// Base Agent Abstract Class\n// ============================================================================\n\n/**\n * Abstract base class for all agents\n *\n * Provides common functionality that all agents share, including:\n * - Task execution with timeout and retry handling\n * - Input validation\n * - Output formatting\n * - Error handling and logging\n * - Optional claude-flow hooks integration\n *\n * @example\n * ```typescript\n * class ResearchAgent extends BaseAgent {\n * protected async executeTask(task: AgentTask): Promise<AgentResult> {\n * // Implementation specific to researcher agent\n * const results = await this.searchSources(task.input);\n * return this.formatOutput(results);\n * }\n * }\n * ```\n */\nexport abstract class BaseAgent implements AgentInstance {\n /** Agent configuration */\n public readonly config: AgentConfig;\n\n /** Agent runtime state */\n private _state: AgentState;\n\n /** Logger instance */\n protected readonly logger: Logger;\n\n /** Message handlers for different message types */\n private messageHandlers: Map<MessageType, (message: AgentMessage) => Promise<void>> =\n new Map();\n\n /** Trajectory tracker for learning */\n protected trajectoryTracker: TrajectoryTracker | null = null;\n\n /** Current active trajectory ID */\n protected currentTrajectoryId: string | null = null;\n\n /** Whether to auto-track trajectories */\n protected autoTrackTrajectories: boolean = true;\n\n constructor(config: AgentConfig) {\n // Ensure ID is set\n this.config = {\n ...config,\n id: config.id ?? createAgentId(config.type),\n };\n\n // Initialize state\n this._state = {\n id: this.config.id!,\n status: AgentStatus.IDLE,\n taskQueue: [],\n completedTasks: [],\n lastActivity: new Date(),\n errorCount: 0,\n };\n\n // Create logger\n this.logger = getLogger().child(`agent:${this.config.name}`);\n\n // Register default message handlers\n this.registerDefaultMessageHandlers();\n }\n\n // ============================================================================\n // State Management\n // ============================================================================\n\n /**\n * Get current agent state\n */\n get state(): AgentState {\n return { ...this._state };\n }\n\n /**\n * Get current agent status\n */\n getStatus(): AgentStatus {\n return this._state.status;\n }\n\n /**\n * Update agent status\n */\n protected setStatus(status: AgentStatus): void {\n const previousStatus = this._state.status;\n this._state.status = status;\n this._state.lastActivity = new Date();\n\n if (previousStatus !== status) {\n this.logger.debug(`Status changed: ${previousStatus} -> ${status}`);\n }\n }\n\n // ============================================================================\n // Task Execution\n // ============================================================================\n\n /**\n * Execute a task\n *\n * This is the main entry point for task execution. It handles:\n * - Pre-task hooks (if enabled)\n * - Input validation\n * - Retry logic\n * - Timeout handling\n * - Post-task hooks (if enabled)\n * - Error handling and logging\n */\n async execute(task: AgentTask): Promise<AgentResult> {\n const startTime = new Date();\n\n this.logger.info(`Executing task: ${task.id}`, {\n description: task.description,\n priority: task.priority,\n });\n\n // Run pre-task hook if enabled\n if (this.config.claudeFlow?.hooks?.preTask) {\n await this.runClaudeFlowHook('pre-task', task);\n }\n\n // Start trajectory tracking if enabled\n if (this.autoTrackTrajectories && this.trajectoryTracker?.isEnabled()) {\n this.startTrajectory(task.id, {\n description: task.description,\n priority: task.priority,\n input: task.input,\n });\n this.recordStep('task_started', `Starting task: ${task.description}`, 1.0);\n }\n\n try {\n // Validate input\n const validationResult = await this.validateInput(task);\n if (!validationResult.valid) {\n this.recordStep('validation_failed', validationResult.error ?? 'Input validation failed', 0.0);\n await this.completeTrajectory('failure', { validationError: validationResult.error });\n return this.createErrorResult(\n 'VALIDATION_ERROR',\n validationResult.error ?? 'Input validation failed',\n startTime\n );\n }\n\n this.recordStep('validation_passed', 'Input validation successful', 1.0);\n\n // Set status to running\n this.setStatus(AgentStatus.RUNNING);\n this._state.currentTask = task;\n\n // Execute with retry if configured\n let result: AgentResult;\n const retryConfig = this.config.retry;\n\n if (retryConfig && retryConfig.maxRetries > 0) {\n const retryOptions: RetryOptions = {\n maxRetries: retryConfig.maxRetries,\n initialDelay: retryConfig.backoffMs,\n backoffFactor: retryConfig.backoffMultiplier ?? 2,\n isRetryable: (error: unknown) => this.isRetryableError(error),\n };\n\n result = await retry(\n async () => this.executeWithTimeout(task),\n retryOptions\n );\n } else {\n result = await this.executeWithTimeout(task);\n }\n\n // Update state on success\n if (result.success) {\n this._state.completedTasks.push(task.id);\n this.setStatus(AgentStatus.COMPLETED);\n this.recordStep('task_completed', 'Task completed successfully', 1.0, { success: true });\n await this.completeTrajectory('success', {\n durationMs: result.metrics?.durationMs,\n artifactCount: result.artifacts?.length ?? 0,\n });\n } else {\n this._state.errorCount++;\n this.setStatus(AgentStatus.FAILED);\n this.recordStep('task_failed', result.error?.message ?? 'Task failed', 0.0, { error: result.error });\n await this.completeTrajectory('failure', {\n errorCode: result.error?.code,\n errorMessage: result.error?.message,\n });\n }\n\n // Add metrics\n result.metrics = this.calculateMetrics(startTime, new Date());\n\n // Run post-task hook if enabled\n if (this.config.claudeFlow?.hooks?.postTask) {\n await this.runClaudeFlowHook('post-task', task, result);\n }\n\n return result;\n } catch (error) {\n this._state.errorCount++;\n this.setStatus(AgentStatus.FAILED);\n\n const agentError = this.normalizeError(error);\n this.logger.error(`Task execution failed: ${task.id}`, error as Error);\n\n // Record trajectory failure\n this.recordStep('task_exception', agentError.message, 0.0, {\n errorCode: agentError.code,\n stack: agentError.stack,\n });\n await this.completeTrajectory('failure', {\n exception: true,\n errorCode: agentError.code,\n errorMessage: agentError.message,\n });\n\n return this.createErrorResult(agentError.code, agentError.message, startTime, {\n stack: agentError.stack,\n retryable: agentError.retryable,\n });\n } finally {\n this._state.currentTask = undefined;\n this._state.lastActivity = new Date();\n }\n }\n\n /**\n * Execute task with timeout\n */\n private async executeWithTimeout(task: AgentTask): Promise<AgentResult> {\n const timeout = task.timeout ?? this.config.taskTimeout ?? 30000;\n\n return new Promise<AgentResult>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`Task execution timed out after ${timeout}ms`));\n }, timeout);\n\n this.executeTask(task)\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timer);\n reject(error);\n });\n });\n }\n\n /**\n * Abstract method for actual task execution\n *\n * Subclasses must implement this method with their specific logic.\n */\n protected abstract executeTask(task: AgentTask): Promise<AgentResult>;\n\n // ============================================================================\n // Input Validation\n // ============================================================================\n\n /**\n * Validate task input\n *\n * Override this method to implement custom validation logic.\n */\n async validateInput(task: AgentTask): Promise<{ valid: boolean; error?: string }> {\n // Basic validation\n if (!task.id) {\n return { valid: false, error: 'Task ID is required' };\n }\n\n if (!task.description) {\n return { valid: false, error: 'Task description is required' };\n }\n\n // Check dependencies are resolved\n if (task.dependencies && task.dependencies.length > 0) {\n const unresolvedDeps = task.dependencies.filter(\n (dep) => !this._state.completedTasks.includes(dep)\n );\n\n if (unresolvedDeps.length > 0) {\n return {\n valid: false,\n error: `Unresolved dependencies: ${unresolvedDeps.join(', ')}`,\n };\n }\n }\n\n return { valid: true };\n }\n\n // ============================================================================\n // Output Formatting\n // ============================================================================\n\n /**\n * Format successful output\n */\n formatOutput<T>(data: T, artifacts?: ResultArtifact[]): AgentResult<T> {\n return {\n success: true,\n data,\n artifacts,\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Create a success result\n */\n protected createSuccessResult<T>(\n data: T,\n startTime: Date,\n artifacts?: ResultArtifact[]\n ): AgentResult<T> {\n return {\n success: true,\n data,\n artifacts,\n metrics: this.calculateMetrics(startTime, new Date()),\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n },\n };\n }\n\n /**\n * Create an error result\n */\n protected createErrorResult(\n code: string,\n message: string,\n startTime: Date,\n details?: Partial<AgentError>\n ): AgentResult {\n return {\n success: false,\n error: {\n code,\n message,\n ...details,\n },\n metrics: this.calculateMetrics(startTime, new Date()),\n metadata: {\n agentId: this.config.id,\n agentType: this.config.type,\n },\n };\n }\n\n /**\n * Calculate execution metrics\n */\n private calculateMetrics(startTime: Date, endTime: Date): ExecutionMetrics {\n return {\n startTime,\n endTime,\n durationMs: endTime.getTime() - startTime.getTime(),\n memoryUsage: process.memoryUsage?.().heapUsed,\n retries: 0, // Updated by retry logic if needed\n };\n }\n\n // ============================================================================\n // Error Handling\n // ============================================================================\n\n /**\n * Normalize error to AgentError format\n */\n private normalizeError(error: unknown): AgentError {\n if (error instanceof Error) {\n return {\n code: error.name || 'UNKNOWN_ERROR',\n message: error.message,\n stack: error.stack,\n retryable: this.isRetryableError(error),\n };\n }\n\n return {\n code: 'UNKNOWN_ERROR',\n message: String(error),\n retryable: false,\n };\n }\n\n /**\n * Check if an error is retryable\n */\n protected isRetryableError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n\n // Network/transient errors\n if (\n message.includes('timeout') ||\n message.includes('network') ||\n message.includes('connection') ||\n message.includes('econnreset') ||\n message.includes('rate limit')\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n // ============================================================================\n // Lifecycle Methods\n // ============================================================================\n\n /**\n * Pause the agent\n */\n async pause(): Promise<void> {\n if (this._state.status === AgentStatus.RUNNING) {\n this.logger.info('Pausing agent');\n this.setStatus(AgentStatus.PAUSED);\n }\n }\n\n /**\n * Resume the agent\n */\n async resume(): Promise<void> {\n if (this._state.status === AgentStatus.PAUSED) {\n this.logger.info('Resuming agent');\n this.setStatus(AgentStatus.IDLE);\n }\n }\n\n /**\n * Terminate the agent\n */\n async terminate(): Promise<void> {\n this.logger.info('Terminating agent');\n\n // Clean up any resources\n await this.cleanup();\n\n this.setStatus(AgentStatus.TERMINATED);\n }\n\n /**\n * Cleanup resources\n *\n * Override to implement custom cleanup logic.\n */\n protected async cleanup(): Promise<void> {\n // Default: no cleanup needed\n }\n\n // ============================================================================\n // Messaging\n // ============================================================================\n\n /**\n * Send a message to another agent\n */\n async sendMessage(message: AgentMessage): Promise<void> {\n this.logger.debug(`Sending message to ${message.to}`, {\n type: message.type,\n correlationId: message.correlationId,\n });\n\n // In a real implementation, this would use a message bus\n // For now, just log the message\n this.logger.trace('Message payload', { payload: message.payload });\n }\n\n /**\n * Receive and process a message\n */\n async receiveMessage(message: AgentMessage): Promise<void> {\n this.logger.debug(`Received message from ${message.from}`, {\n type: message.type,\n correlationId: message.correlationId,\n });\n\n const handler = this.messageHandlers.get(message.type);\n if (handler) {\n await handler(message);\n } else {\n this.logger.warn(`No handler for message type: ${message.type}`);\n }\n }\n\n /**\n * Register a message handler\n */\n protected registerMessageHandler(\n type: MessageType,\n handler: (message: AgentMessage) => Promise<void>\n ): void {\n this.messageHandlers.set(type, handler);\n }\n\n /**\n * Register default message handlers\n */\n private registerDefaultMessageHandlers(): void {\n // Handle status requests\n this.registerMessageHandler(MessageType.STATUS, async (message) => {\n await this.sendMessage({\n id: `${Date.now()}`,\n type: MessageType.STATUS,\n from: this.config.id!,\n to: message.from,\n timestamp: new Date(),\n correlationId: message.id,\n payload: {\n agentId: this.config.id,\n status: this._state.status,\n currentTask: this._state.currentTask?.id,\n },\n });\n });\n }\n\n // ============================================================================\n // Trajectory Tracking\n // ============================================================================\n\n /**\n * Set the trajectory tracker for this agent\n *\n * @param tracker - The trajectory tracker instance\n */\n setTrajectoryTracker(tracker: TrajectoryTracker): void {\n this.trajectoryTracker = tracker;\n }\n\n /**\n * Enable or disable auto-tracking of trajectories\n *\n * @param enabled - Whether to auto-track\n */\n setAutoTrackTrajectories(enabled: boolean): void {\n this.autoTrackTrajectories = enabled;\n }\n\n /**\n * Start tracking a task trajectory\n *\n * @param taskId - The task ID to track\n * @param metadata - Optional metadata\n * @returns The trajectory ID\n */\n protected startTrajectory(\n taskId: string,\n metadata: Record<string, unknown> = {}\n ): string | null {\n if (!this.trajectoryTracker?.isEnabled()) {\n return null;\n }\n\n this.currentTrajectoryId = this.trajectoryTracker.startTrajectory(taskId, {\n ...metadata,\n agentId: this.config.id,\n agentType: this.config.type,\n agentName: this.config.name,\n });\n\n return this.currentTrajectoryId;\n }\n\n /**\n * Record a step in the current trajectory\n *\n * @param action - The action taken\n * @param observation - The observation/result\n * @param confidence - Optional confidence score (0-1)\n * @param metadata - Optional step metadata\n */\n protected recordStep(\n action: string,\n observation: string,\n confidence?: number,\n metadata?: Record<string, unknown>\n ): void {\n if (!this.trajectoryTracker || !this.currentTrajectoryId) {\n return;\n }\n\n this.trajectoryTracker.recordStep(this.currentTrajectoryId, {\n action,\n observation,\n confidence,\n metadata,\n });\n }\n\n /**\n * Complete the current trajectory\n *\n * @param outcome - The task outcome\n * @param metadata - Optional final metadata\n * @returns The stored trajectory ID, or null\n */\n protected async completeTrajectory(\n outcome: 'success' | 'failure' | 'partial',\n metadata: Record<string, unknown> = {}\n ): Promise<string | null> {\n if (!this.trajectoryTracker || !this.currentTrajectoryId) {\n return null;\n }\n\n const storedId = await this.trajectoryTracker.completeTrajectory(\n this.currentTrajectoryId,\n outcome,\n metadata\n );\n\n this.currentTrajectoryId = null;\n return storedId;\n }\n\n /**\n * Abort the current trajectory\n *\n * @param reason - The reason for aborting\n */\n protected abortTrajectory(reason: string): void {\n if (!this.trajectoryTracker || !this.currentTrajectoryId) {\n return;\n }\n\n this.trajectoryTracker.abortTrajectory(this.currentTrajectoryId, reason);\n this.currentTrajectoryId = null;\n }\n\n /**\n * Check if trajectory tracking is active\n */\n isTrackingTrajectory(): boolean {\n return this.currentTrajectoryId !== null;\n }\n\n /**\n * Get current trajectory progress\n */\n getTrajectoryProgress(): {\n stepCount: number;\n duration: number;\n lastStep?: TrajectoryStep;\n } | null {\n if (!this.trajectoryTracker || !this.currentTrajectoryId) {\n return null;\n }\n\n return this.trajectoryTracker.getProgress(this.currentTrajectoryId);\n }\n\n // ============================================================================\n // Claude-Flow Integration\n // ============================================================================\n\n /**\n * Run a claude-flow hook\n */\n protected async runClaudeFlowHook(\n hookType: 'pre-task' | 'post-task' | 'post-edit',\n task: AgentTask,\n result?: AgentResult\n ): Promise<void> {\n if (!this.config.claudeFlow?.enabled) {\n return;\n }\n\n const namespace = this.config.claudeFlow.namespace ?? 'knowledge-graph';\n\n this.logger.debug(`Running claude-flow hook: ${hookType}`, {\n namespace,\n taskId: task.id,\n });\n\n // Generate the hook command that would be run\n const hookCommand = this.generateHookCommand(hookType, task, result);\n\n this.logger.trace('Claude-flow hook command', { command: hookCommand });\n\n // In production, this would execute via child_process or MCP\n // For now, we just log the intent\n }\n\n /**\n * Generate claude-flow hook command\n */\n private generateHookCommand(\n hookType: 'pre-task' | 'post-task' | 'post-edit',\n task: AgentTask,\n result?: AgentResult\n ): string {\n const namespace = this.config.claudeFlow?.namespace ?? 'knowledge-graph';\n\n switch (hookType) {\n case 'pre-task':\n return `npx claude-flow@alpha hooks pre-task --description \"${task.description}\"`;\n\n case 'post-task':\n return `npx claude-flow@alpha hooks post-task --task-id \"${task.id}\"`;\n\n case 'post-edit':\n return `npx claude-flow@alpha hooks post-edit --memory-key \"${namespace}/agent/${this.config.id}/task/${task.id}\"`;\n\n default:\n return '';\n }\n }\n\n /**\n * Store result in claude-flow memory\n */\n protected async storeInMemory(key: string, value: unknown): Promise<void> {\n if (!this.config.claudeFlow?.enabled) {\n return;\n }\n\n const namespace = this.config.claudeFlow.namespace ?? 'knowledge-graph';\n\n this.logger.debug('Storing in claude-flow memory', { namespace, key });\n\n // This would call the MCP memory_usage tool\n // For now, just log the intent\n this.logger.trace('Memory store', {\n action: 'store',\n namespace,\n key,\n value: JSON.stringify(value).slice(0, 100),\n });\n }\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Create a task with defaults\n */\nexport function createTask(\n description: string,\n options?: Partial<Omit<AgentTask, 'id' | 'description' | 'createdAt'>>\n): AgentTask {\n return {\n id: createTaskId(),\n description,\n priority: options?.priority ?? TaskPriority.MEDIUM,\n input: options?.input ?? {},\n expectedOutput: options?.expectedOutput,\n dependencies: options?.dependencies,\n timeout: options?.timeout,\n metadata: options?.metadata,\n createdAt: new Date(),\n deadline: options?.deadline,\n };\n}\n\n/**\n * Type guard for checking if an object is an AgentResult\n */\nexport function isAgentResult(obj: unknown): obj is AgentResult {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'success' in obj &&\n typeof (obj as AgentResult).success === 'boolean'\n );\n}\n\n/**\n * Type guard for checking if an object is an AgentError\n */\nexport function isAgentError(obj: unknown): obj is AgentError {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n 'code' in obj &&\n 'message' in obj &&\n typeof (obj as AgentError).code === 'string' &&\n typeof (obj as AgentError).message === 'string'\n );\n}\n"],"names":[],"mappings":"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"}