@weavelogic/knowledge-graph-agent 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -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/@typescript-eslint/project-service/dist/index.js +1 -1
  157. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js +24 -0
  158. package/dist/node_modules/@xenova/transformers/src/backends/onnx.js.map +1 -0
  159. package/dist/node_modules/@xenova/transformers/src/configs.js +52 -0
  160. package/dist/node_modules/@xenova/transformers/src/configs.js.map +1 -0
  161. package/dist/node_modules/@xenova/transformers/src/env.js +35 -0
  162. package/dist/node_modules/@xenova/transformers/src/env.js.map +1 -0
  163. package/dist/node_modules/@xenova/transformers/src/models.js +3852 -0
  164. package/dist/node_modules/@xenova/transformers/src/models.js.map +1 -0
  165. package/dist/node_modules/@xenova/transformers/src/tokenizers.js +144 -0
  166. package/dist/node_modules/@xenova/transformers/src/tokenizers.js.map +1 -0
  167. package/dist/node_modules/@xenova/transformers/src/utils/core.js +52 -0
  168. package/dist/node_modules/@xenova/transformers/src/utils/core.js.map +1 -0
  169. package/dist/node_modules/@xenova/transformers/src/utils/generation.js +623 -0
  170. package/dist/node_modules/@xenova/transformers/src/utils/generation.js.map +1 -0
  171. package/dist/node_modules/@xenova/transformers/src/utils/hub.js +395 -0
  172. package/dist/node_modules/@xenova/transformers/src/utils/hub.js.map +1 -0
  173. package/dist/node_modules/@xenova/transformers/src/utils/image.js +12 -0
  174. package/dist/node_modules/@xenova/transformers/src/utils/image.js.map +1 -0
  175. package/dist/node_modules/@xenova/transformers/src/utils/maths.js +89 -0
  176. package/dist/node_modules/@xenova/transformers/src/utils/maths.js.map +1 -0
  177. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js +750 -0
  178. package/dist/node_modules/@xenova/transformers/src/utils/tensor.js.map +1 -0
  179. package/dist/node_modules/fdir/dist/index.js +13 -13
  180. package/dist/node_modules/fdir/dist/index.js.map +1 -1
  181. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js +67 -0
  182. package/dist/node_modules/onnxruntime-common/dist/lib/backend-impl.js.map +1 -0
  183. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js +24 -0
  184. package/dist/node_modules/onnxruntime-common/dist/lib/env-impl.js.map +1 -0
  185. package/dist/node_modules/onnxruntime-common/dist/lib/env.js +6 -0
  186. package/dist/node_modules/onnxruntime-common/dist/lib/env.js.map +1 -0
  187. package/dist/node_modules/onnxruntime-common/dist/lib/index.js +11 -0
  188. package/dist/node_modules/onnxruntime-common/dist/lib/index.js.map +1 -0
  189. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js +162 -0
  190. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session-impl.js.map +1 -0
  191. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js +6 -0
  192. package/dist/node_modules/onnxruntime-common/dist/lib/inference-session.js.map +1 -0
  193. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js +393 -0
  194. package/dist/node_modules/onnxruntime-common/dist/lib/tensor-impl.js.map +1 -0
  195. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js +6 -0
  196. package/dist/node_modules/onnxruntime-common/dist/lib/tensor.js.map +1 -0
  197. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js +12919 -0
  198. package/dist/node_modules/onnxruntime-web/dist/ort-web.min.js.map +1 -0
  199. package/dist/node_modules/tinyglobby/dist/index.js +14 -14
  200. package/dist/node_modules/tinyglobby/dist/index.js.map +1 -1
  201. package/dist/node_modules/typescript/lib/typescript.js +24 -24
  202. package/dist/node_modules/typescript/lib/typescript.js.map +1 -1
  203. package/dist/transport/agent-transport.d.ts +269 -0
  204. package/dist/transport/agent-transport.d.ts.map +1 -0
  205. package/dist/transport/index.d.ts +10 -0
  206. package/dist/transport/index.d.ts.map +1 -0
  207. package/dist/vector/index.d.ts +1 -1
  208. package/dist/vector/index.d.ts.map +1 -1
  209. package/dist/vector/services/embedding-service.d.ts +244 -0
  210. package/dist/vector/services/embedding-service.d.ts.map +1 -0
  211. package/dist/vector/services/embedding-service.js +10 -0
  212. package/dist/vector/services/embedding-service.js.map +1 -0
  213. package/dist/vector/services/hybrid-search.d.ts +320 -0
  214. package/dist/vector/services/hybrid-search.d.ts.map +1 -0
  215. package/dist/vector/services/hybrid-search.js +3 -0
  216. package/dist/vector/services/hybrid-search.js.map +1 -0
  217. package/dist/vector/services/index.d.ts +4 -0
  218. package/dist/vector/services/index.d.ts.map +1 -1
  219. 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,34 @@ import {
724
724
 
725
725
  ## Changelog
726
726
 
727
+ ### v0.7.1
728
+
729
+ - Fixed documentation links to use new organized reference structure
730
+ - Updated Reference section with proper paths to `docs/reference/api/`, `docs/reference/cli/`, `docs/reference/mcp/`
731
+ - Added Architecture section with integration documentation links
732
+
733
+ ### v0.7.0
734
+
735
+ **Core Features:**
736
+ - **Agent Equilibrium Selector** - Intelligent agent selection based on task requirements
737
+ - **Memory & Graph Pruning** - Automatic cleanup and optimization of graph data
738
+ - **Agentic-Flow Integration** - Full AgentDB, ReasoningBank, and Federation Hub support
739
+ - **Trajectory Tracking** - Agent behavior learning and pattern optimization
740
+ - **Agent Booster Integration** - Enhanced agent capabilities with performance boosting
741
+ - **Multi-Model Router** - Dynamic model selection based on task complexity
742
+ - **QUIC Transport** - High-performance, low-latency communication protocol
743
+
744
+ **Documentation:**
745
+ - **Documentation overhaul** with Diátaxis framework (tutorials, guides, reference, explanation)
746
+ - 5 Architecture Decision Records (ADRs) from SPEC files
747
+ - Comprehensive API/CLI/MCP reference documentation
748
+ - Enterprise guides (chunking, backup, caching, health monitoring)
749
+ - Integration architecture docs (claude-flow, ruvector, exochain, agentic-flow)
750
+ - Getting started tutorials (installation, quick-start, configuration)
751
+ - MIT License added to project root
752
+ - Dependencies documentation with licenses
753
+ - 68 markdown documentation files
754
+
727
755
  ### v0.6.0
728
756
 
729
757
  - Plugin system with custom analyzers (13 lifecycle hooks, async streaming)
@@ -779,9 +807,48 @@ import {
779
807
 
780
808
  ---
781
809
 
782
- ## API Reference
810
+ ## Documentation
811
+
812
+ Comprehensive documentation is available in the [docs/](./docs/) directory, organized using the [Diátaxis framework](https://diataxis.fr/):
813
+
814
+ ### Getting Started
815
+
816
+ - [Installation Guide](./docs/getting-started/installation.md) - Set up your environment
817
+ - [Quick Start](./docs/getting-started/quick-start.md) - Build your first knowledge graph
818
+ - [Configuration](./docs/getting-started/configuration.md) - Configure for your project
819
+
820
+ ### Guides
821
+
822
+ - [Knowledge Graph Management](./docs/guides/knowledge-graph.md) - Create, query, and traverse graphs
823
+ - [Cultivation System](./docs/guides/cultivation.md) - Analyze codebases and generate primitives
824
+ - [Agent System](./docs/guides/agents.md) - Work with AI agents and rules engine
825
+
826
+ ### Enterprise Features
827
+
828
+ - [Document Chunking](./docs/guides/enterprise/chunking.md) - Split large documents efficiently
829
+ - [Backup & Recovery](./docs/guides/enterprise/backup-recovery.md) - Protect your data
830
+ - [Cache Configuration](./docs/guides/enterprise/caching.md) - Optimize performance
831
+ - [Health Monitoring](./docs/guides/enterprise/health-monitoring.md) - Monitor production systems
832
+
833
+ ### Reference
834
+
835
+ - [API Reference](./docs/reference/api/index.md) - Complete API surface
836
+ - [Core API](./docs/reference/api/core.md) - Database, cache, knowledge graph
837
+ - [Agents API](./docs/reference/api/agents.md) - Agent system interfaces
838
+ - [Graph API](./docs/reference/api/graph.md) - Graph operations
839
+ - [CLI Commands](./docs/reference/cli/commands.md) - All CLI commands
840
+ - [MCP Tools](./docs/reference/mcp/tools.md) - MCP server tools
841
+
842
+ ### Architecture
783
843
 
784
- See [docs/API.md](./docs/API.md) for detailed API documentation.
844
+ - [Architecture Overview](./docs/ARCHITECTURE.md) - System architecture
845
+ - [Integration Index](./docs/architecture/integrations/INDEX.md) - All integrations
846
+ - [Claude-Flow](./docs/architecture/integrations/claude-flow.md) - MCP orchestration
847
+ - [RuVector](./docs/architecture/integrations/ruvector.md) - Vector search
848
+ - [Exochain](./docs/architecture/integrations/exochain.md) - Audit trail
849
+ - [Agentic-Flow](./docs/architecture/integrations/agentic-flow.md) - Agent framework
850
+ - [ADR Index](./docs/architecture/decisions/README.md) - Architecture decisions
851
+ - [Dependencies](./docs/DEPENDENCIES.md) - Package dependencies and licenses
785
852
 
786
853
  ## Contributing
787
854
 
@@ -789,4 +856,4 @@ Contributions are welcome! Please read our [Contributing Guide](./docs/CONTRIBUT
789
856
 
790
857
  ## License
791
858
 
792
- MIT
859
+ 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":"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"}
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":";;;AAsDO,MAAe,UAAmC;AAAA;AAAA,EAEvC;AAAA;AAAA,EAGR;AAAA;AAAA,EAGW;AAAA;AAAA,EAGX,sCACF,IAAA;AAAA,EAEN,YAAY,QAAqB;AAE/B,SAAK,SAAS;AAAA,MACZ,GAAG;AAAA,MACH,IAAI,OAAO,MAAM,cAAc,OAAO,IAAI;AAAA,IAAA;AAI5C,SAAK,SAAS;AAAA,MACZ,IAAI,KAAK,OAAO;AAAA,MAChB,QAAQ,YAAY;AAAA,MACpB,WAAW,CAAA;AAAA,MACX,gBAAgB,CAAA;AAAA,MAChB,kCAAkB,KAAA;AAAA,MAClB,YAAY;AAAA,IAAA;AAId,SAAK,SAAS,YAAY,MAAM,SAAS,KAAK,OAAO,IAAI,EAAE;AAG3D,SAAK,+BAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,QAAoB;AACtB,WAAO,EAAE,GAAG,KAAK,OAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,YAAyB;AACvB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKU,UAAU,QAA2B;AAC7C,UAAM,iBAAiB,KAAK,OAAO;AACnC,SAAK,OAAO,SAAS;AACrB,SAAK,OAAO,eAAe,oBAAI,KAAA;AAE/B,QAAI,mBAAmB,QAAQ;AAC7B,WAAK,OAAO,MAAM,mBAAmB,cAAc,OAAO,MAAM,EAAE;AAAA,IACpE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,QAAQ,MAAuC;AACnD,UAAM,gCAAgB,KAAA;AAEtB,SAAK,OAAO,KAAK,mBAAmB,KAAK,EAAE,IAAI;AAAA,MAC7C,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IAAA,CAChB;AAGD,QAAI,KAAK,OAAO,YAAY,OAAO,SAAS;AAC1C,YAAM,KAAK,kBAAkB,YAAY,IAAI;AAAA,IAC/C;AAEA,QAAI;AAEF,YAAM,mBAAmB,MAAM,KAAK,cAAc,IAAI;AACtD,UAAI,CAAC,iBAAiB,OAAO;AAC3B,eAAO,KAAK;AAAA,UACV;AAAA,UACA,iBAAiB,SAAS;AAAA,UAC1B;AAAA,QAAA;AAAA,MAEJ;AAGA,WAAK,UAAU,YAAY,OAAO;AAClC,WAAK,OAAO,cAAc;AAG1B,UAAI;AACJ,YAAM,cAAc,KAAK,OAAO;AAEhC,UAAI,eAAe,YAAY,aAAa,GAAG;AAC7C,cAAM,eAA6B;AAAA,UACjC,YAAY,YAAY;AAAA,UACxB,cAAc,YAAY;AAAA,UAC1B,eAAe,YAAY,qBAAqB;AAAA,UAChD,aAAa,CAAC,UAAmB,KAAK,iBAAiB,KAAK;AAAA,QAAA;AAG9D,iBAAS,MAAM;AAAA,UACb,YAAY,KAAK,mBAAmB,IAAI;AAAA,UACxC;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,iBAAS,MAAM,KAAK,mBAAmB,IAAI;AAAA,MAC7C;AAGA,UAAI,OAAO,SAAS;AAClB,aAAK,OAAO,eAAe,KAAK,KAAK,EAAE;AACvC,aAAK,UAAU,YAAY,SAAS;AAAA,MACtC,OAAO;AACL,aAAK,OAAO;AACZ,aAAK,UAAU,YAAY,MAAM;AAAA,MACnC;AAGA,aAAO,UAAU,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAG5D,UAAI,KAAK,OAAO,YAAY,OAAO,UAAU;AAC3C,cAAM,KAAK,kBAAkB,aAAa,MAAM,MAAM;AAAA,MACxD;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO;AACZ,WAAK,UAAU,YAAY,MAAM;AAEjC,YAAM,aAAa,KAAK,eAAe,KAAK;AAC5C,WAAK,OAAO,MAAM,0BAA0B,KAAK,EAAE,IAAI,KAAc;AAErE,aAAO,KAAK,kBAAkB,WAAW,MAAM,WAAW,SAAS,WAAW;AAAA,QAC5E,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,MAAA,CACvB;AAAA,IACH,UAAA;AACE,WAAK,OAAO,cAAc;AAC1B,WAAK,OAAO,eAAe,oBAAI,KAAA;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,MAAuC;AACtE,UAAM,UAAU,KAAK,WAAW,KAAK,OAAO,eAAe;AAE3D,WAAO,IAAI,QAAqB,CAAC,SAAS,WAAW;AACnD,YAAM,QAAQ,WAAW,MAAM;AAC7B,eAAO,IAAI,MAAM,kCAAkC,OAAO,IAAI,CAAC;AAAA,MACjE,GAAG,OAAO;AAEV,WAAK,YAAY,IAAI,EAClB,KAAK,CAAC,WAAW;AAChB,qBAAa,KAAK;AAClB,gBAAQ,MAAM;AAAA,MAChB,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,qBAAa,KAAK;AAClB,eAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,cAAc,MAA8D;AAEhF,QAAI,CAAC,KAAK,IAAI;AACZ,aAAO,EAAE,OAAO,OAAO,OAAO,sBAAA;AAAA,IAChC;AAEA,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO,EAAE,OAAO,OAAO,OAAO,+BAAA;AAAA,IAChC;AAGA,QAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,GAAG;AACrD,YAAM,iBAAiB,KAAK,aAAa;AAAA,QACvC,CAAC,QAAQ,CAAC,KAAK,OAAO,eAAe,SAAS,GAAG;AAAA,MAAA;AAGnD,UAAI,eAAe,SAAS,GAAG;AAC7B,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO,4BAA4B,eAAe,KAAK,IAAI,CAAC;AAAA,QAAA;AAAA,MAEhE;AAAA,IACF;AAEA,WAAO,EAAE,OAAO,KAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAgB,MAAS,WAA8C;AACrE,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,QACvB,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAY;AAAA,IACpC;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKU,oBACR,MACA,WACA,WACgB;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,SAAS,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAAA,MACpD,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKU,kBACR,MACA,SACA,WACA,SACa;AACb,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MAAA;AAAA,MAEL,SAAS,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAAA,MACpD,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAiB,WAAiB,SAAiC;AACzE,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,YAAY,UAAU,QAAA;AAAA,MAC1C,aAAa,QAAQ,cAAA,EAAgB;AAAA,MACrC,SAAS;AAAA;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,eAAe,OAA4B;AACjD,QAAI,iBAAiB,OAAO;AAC1B,aAAO;AAAA,QACL,MAAM,MAAM,QAAQ;AAAA,QACpB,SAAS,MAAM;AAAA,QACf,OAAO,MAAM;AAAA,QACb,WAAW,KAAK,iBAAiB,KAAK;AAAA,MAAA;AAAA,IAE1C;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,KAAK;AAAA,MACrB,WAAW;AAAA,IAAA;AAAA,EAEf;AAAA;AAAA;AAAA;AAAA,EAKU,iBAAiB,OAAyB;AAClD,QAAI,iBAAiB,OAAO;AAC1B,YAAM,UAAU,MAAM,QAAQ,YAAA;AAG9B,UACE,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,GAC7B;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAuB;AAC3B,QAAI,KAAK,OAAO,WAAW,YAAY,SAAS;AAC9C,WAAK,OAAO,KAAK,eAAe;AAChC,WAAK,UAAU,YAAY,MAAM;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAwB;AAC5B,QAAI,KAAK,OAAO,WAAW,YAAY,QAAQ;AAC7C,WAAK,OAAO,KAAK,gBAAgB;AACjC,WAAK,UAAU,YAAY,IAAI;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAA2B;AAC/B,SAAK,OAAO,KAAK,mBAAmB;AAGpC,UAAM,KAAK,QAAA;AAEX,SAAK,UAAU,YAAY,UAAU;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAgB,UAAyB;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,YAAY,SAAsC;AACtD,SAAK,OAAO,MAAM,sBAAsB,QAAQ,EAAE,IAAI;AAAA,MACpD,MAAM,QAAQ;AAAA,MACd,eAAe,QAAQ;AAAA,IAAA,CACxB;AAID,SAAK,OAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,SAAS;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,SAAsC;AACzD,SAAK,OAAO,MAAM,yBAAyB,QAAQ,IAAI,IAAI;AAAA,MACzD,MAAM,QAAQ;AAAA,MACd,eAAe,QAAQ;AAAA,IAAA,CACxB;AAED,UAAM,UAAU,KAAK,gBAAgB,IAAI,QAAQ,IAAI;AACrD,QAAI,SAAS;AACX,YAAM,QAAQ,OAAO;AAAA,IACvB,OAAO;AACL,WAAK,OAAO,KAAK,gCAAgC,QAAQ,IAAI,EAAE;AAAA,IACjE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKU,uBACR,MACA,SACM;AACN,SAAK,gBAAgB,IAAI,MAAM,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKQ,iCAAuC;AAE7C,SAAK,uBAAuB,YAAY,QAAQ,OAAO,YAAY;AACjE,YAAM,KAAK,YAAY;AAAA,QACrB,IAAI,GAAG,KAAK,IAAA,CAAK;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,MAAM,KAAK,OAAO;AAAA,QAClB,IAAI,QAAQ;AAAA,QACZ,+BAAe,KAAA;AAAA,QACf,eAAe,QAAQ;AAAA,QACvB,SAAS;AAAA,UACP,SAAS,KAAK,OAAO;AAAA,UACrB,QAAQ,KAAK,OAAO;AAAA,UACpB,aAAa,KAAK,OAAO,aAAa;AAAA,QAAA;AAAA,MACxC,CACD;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAgB,kBACd,UACA,MACA,QACe;AACf,QAAI,CAAC,KAAK,OAAO,YAAY,SAAS;AACpC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,OAAO,WAAW,aAAa;AAEtD,SAAK,OAAO,MAAM,6BAA6B,QAAQ,IAAI;AAAA,MACzD;AAAA,MACA,QAAQ,KAAK;AAAA,IAAA,CACd;AAGD,UAAM,cAAc,KAAK,oBAAoB,UAAU,MAAM,MAAM;AAEnE,SAAK,OAAO,MAAM,4BAA4B,EAAE,SAAS,aAAa;AAAA,EAIxE;AAAA;AAAA;AAAA;AAAA,EAKQ,oBACN,UACA,MACA,QACQ;AACR,UAAM,YAAY,KAAK,OAAO,YAAY,aAAa;AAEvD,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eAAO,uDAAuD,KAAK,WAAW;AAAA,MAEhF,KAAK;AACH,eAAO,oDAAoD,KAAK,EAAE;AAAA,MAEpE,KAAK;AACH,eAAO,uDAAuD,SAAS,UAAU,KAAK,OAAO,EAAE,SAAS,KAAK,EAAE;AAAA,MAEjH;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,cAAc,KAAa,OAA+B;AACxE,QAAI,CAAC,KAAK,OAAO,YAAY,SAAS;AACpC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,OAAO,WAAW,aAAa;AAEtD,SAAK,OAAO,MAAM,iCAAiC,EAAE,WAAW,KAAK;AAIrE,SAAK,OAAO,MAAM,gBAAgB;AAAA,MAChC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,OAAO,KAAK,UAAU,KAAK,EAAE,MAAM,GAAG,GAAG;AAAA,IAAA,CAC1C;AAAA,EACH;AACF;AASO,SAAS,WACd,aACA,SACW;AACX,SAAO;AAAA,IACL,IAAI,aAAA;AAAA,IACJ;AAAA,IACA,UAAU,SAAS,YAAY,aAAa;AAAA,IAC5C,OAAO,SAAS,SAAS,CAAA;AAAA,IACzB,gBAAgB,SAAS;AAAA,IACzB,cAAc,SAAS;AAAA,IACvB,SAAS,SAAS;AAAA,IAClB,UAAU,SAAS;AAAA,IACnB,+BAAe,KAAA;AAAA,IACf,UAAU,SAAS;AAAA,EAAA;AAEvB;AAKO,SAAS,cAAc,KAAkC;AAC9D,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,aAAa,OACb,OAAQ,IAAoB,YAAY;AAE5C;AAKO,SAAS,aAAa,KAAiC;AAC5D,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,aAAa,OACb,OAAQ,IAAmB,SAAS,YACpC,OAAQ,IAAmB,YAAY;AAE3C;"}
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":";;;AA2DO,MAAe,UAAmC;AAAA;AAAA,EAEvC;AAAA;AAAA,EAGR;AAAA;AAAA,EAGW;AAAA;AAAA,EAGX,sCACF,IAAA;AAAA;AAAA,EAGI,oBAA8C;AAAA;AAAA,EAG9C,sBAAqC;AAAA;AAAA,EAGrC,wBAAiC;AAAA,EAE3C,YAAY,QAAqB;AAE/B,SAAK,SAAS;AAAA,MACZ,GAAG;AAAA,MACH,IAAI,OAAO,MAAM,cAAc,OAAO,IAAI;AAAA,IAAA;AAI5C,SAAK,SAAS;AAAA,MACZ,IAAI,KAAK,OAAO;AAAA,MAChB,QAAQ,YAAY;AAAA,MACpB,WAAW,CAAA;AAAA,MACX,gBAAgB,CAAA;AAAA,MAChB,kCAAkB,KAAA;AAAA,MAClB,YAAY;AAAA,IAAA;AAId,SAAK,SAAS,YAAY,MAAM,SAAS,KAAK,OAAO,IAAI,EAAE;AAG3D,SAAK,+BAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,QAAoB;AACtB,WAAO,EAAE,GAAG,KAAK,OAAA;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAKA,YAAyB;AACvB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKU,UAAU,QAA2B;AAC7C,UAAM,iBAAiB,KAAK,OAAO;AACnC,SAAK,OAAO,SAAS;AACrB,SAAK,OAAO,eAAe,oBAAI,KAAA;AAE/B,QAAI,mBAAmB,QAAQ;AAC7B,WAAK,OAAO,MAAM,mBAAmB,cAAc,OAAO,MAAM,EAAE;AAAA,IACpE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,MAAM,QAAQ,MAAuC;AACnD,UAAM,gCAAgB,KAAA;AAEtB,SAAK,OAAO,KAAK,mBAAmB,KAAK,EAAE,IAAI;AAAA,MAC7C,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,IAAA,CAChB;AAGD,QAAI,KAAK,OAAO,YAAY,OAAO,SAAS;AAC1C,YAAM,KAAK,kBAAkB,YAAY,IAAI;AAAA,IAC/C;AAGA,QAAI,KAAK,yBAAyB,KAAK,mBAAmB,aAAa;AACrE,WAAK,gBAAgB,KAAK,IAAI;AAAA,QAC5B,aAAa,KAAK;AAAA,QAClB,UAAU,KAAK;AAAA,QACf,OAAO,KAAK;AAAA,MAAA,CACb;AACD,WAAK,WAAW,gBAAgB,kBAAkB,KAAK,WAAW,IAAI,CAAG;AAAA,IAC3E;AAEA,QAAI;AAEF,YAAM,mBAAmB,MAAM,KAAK,cAAc,IAAI;AACtD,UAAI,CAAC,iBAAiB,OAAO;AAC3B,aAAK,WAAW,qBAAqB,iBAAiB,SAAS,2BAA2B,CAAG;AAC7F,cAAM,KAAK,mBAAmB,WAAW,EAAE,iBAAiB,iBAAiB,OAAO;AACpF,eAAO,KAAK;AAAA,UACV;AAAA,UACA,iBAAiB,SAAS;AAAA,UAC1B;AAAA,QAAA;AAAA,MAEJ;AAEA,WAAK,WAAW,qBAAqB,+BAA+B,CAAG;AAGvE,WAAK,UAAU,YAAY,OAAO;AAClC,WAAK,OAAO,cAAc;AAG1B,UAAI;AACJ,YAAM,cAAc,KAAK,OAAO;AAEhC,UAAI,eAAe,YAAY,aAAa,GAAG;AAC7C,cAAM,eAA6B;AAAA,UACjC,YAAY,YAAY;AAAA,UACxB,cAAc,YAAY;AAAA,UAC1B,eAAe,YAAY,qBAAqB;AAAA,UAChD,aAAa,CAAC,UAAmB,KAAK,iBAAiB,KAAK;AAAA,QAAA;AAG9D,iBAAS,MAAM;AAAA,UACb,YAAY,KAAK,mBAAmB,IAAI;AAAA,UACxC;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,iBAAS,MAAM,KAAK,mBAAmB,IAAI;AAAA,MAC7C;AAGA,UAAI,OAAO,SAAS;AAClB,aAAK,OAAO,eAAe,KAAK,KAAK,EAAE;AACvC,aAAK,UAAU,YAAY,SAAS;AACpC,aAAK,WAAW,kBAAkB,+BAA+B,GAAK,EAAE,SAAS,MAAM;AACvF,cAAM,KAAK,mBAAmB,WAAW;AAAA,UACvC,YAAY,OAAO,SAAS;AAAA,UAC5B,eAAe,OAAO,WAAW,UAAU;AAAA,QAAA,CAC5C;AAAA,MACH,OAAO;AACL,aAAK,OAAO;AACZ,aAAK,UAAU,YAAY,MAAM;AACjC,aAAK,WAAW,eAAe,OAAO,OAAO,WAAW,eAAe,GAAK,EAAE,OAAO,OAAO,MAAA,CAAO;AACnG,cAAM,KAAK,mBAAmB,WAAW;AAAA,UACvC,WAAW,OAAO,OAAO;AAAA,UACzB,cAAc,OAAO,OAAO;AAAA,QAAA,CAC7B;AAAA,MACH;AAGA,aAAO,UAAU,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAG5D,UAAI,KAAK,OAAO,YAAY,OAAO,UAAU;AAC3C,cAAM,KAAK,kBAAkB,aAAa,MAAM,MAAM;AAAA,MACxD;AAEA,aAAO;AAAA,IACT,SAAS,OAAO;AACd,WAAK,OAAO;AACZ,WAAK,UAAU,YAAY,MAAM;AAEjC,YAAM,aAAa,KAAK,eAAe,KAAK;AAC5C,WAAK,OAAO,MAAM,0BAA0B,KAAK,EAAE,IAAI,KAAc;AAGrE,WAAK,WAAW,kBAAkB,WAAW,SAAS,GAAK;AAAA,QACzD,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,MAAA,CACnB;AACD,YAAM,KAAK,mBAAmB,WAAW;AAAA,QACvC,WAAW;AAAA,QACX,WAAW,WAAW;AAAA,QACtB,cAAc,WAAW;AAAA,MAAA,CAC1B;AAED,aAAO,KAAK,kBAAkB,WAAW,MAAM,WAAW,SAAS,WAAW;AAAA,QAC5E,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,MAAA,CACvB;AAAA,IACH,UAAA;AACE,WAAK,OAAO,cAAc;AAC1B,WAAK,OAAO,eAAe,oBAAI,KAAA;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmB,MAAuC;AACtE,UAAM,UAAU,KAAK,WAAW,KAAK,OAAO,eAAe;AAE3D,WAAO,IAAI,QAAqB,CAAC,SAAS,WAAW;AACnD,YAAM,QAAQ,WAAW,MAAM;AAC7B,eAAO,IAAI,MAAM,kCAAkC,OAAO,IAAI,CAAC;AAAA,MACjE,GAAG,OAAO;AAEV,WAAK,YAAY,IAAI,EAClB,KAAK,CAAC,WAAW;AAChB,qBAAa,KAAK;AAClB,gBAAQ,MAAM;AAAA,MAChB,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,qBAAa,KAAK;AAClB,eAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACL,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,cAAc,MAA8D;AAEhF,QAAI,CAAC,KAAK,IAAI;AACZ,aAAO,EAAE,OAAO,OAAO,OAAO,sBAAA;AAAA,IAChC;AAEA,QAAI,CAAC,KAAK,aAAa;AACrB,aAAO,EAAE,OAAO,OAAO,OAAO,+BAAA;AAAA,IAChC;AAGA,QAAI,KAAK,gBAAgB,KAAK,aAAa,SAAS,GAAG;AACrD,YAAM,iBAAiB,KAAK,aAAa;AAAA,QACvC,CAAC,QAAQ,CAAC,KAAK,OAAO,eAAe,SAAS,GAAG;AAAA,MAAA;AAGnD,UAAI,eAAe,SAAS,GAAG;AAC7B,eAAO;AAAA,UACL,OAAO;AAAA,UACP,OAAO,4BAA4B,eAAe,KAAK,IAAI,CAAC;AAAA,QAAA;AAAA,MAEhE;AAAA,IACF;AAEA,WAAO,EAAE,OAAO,KAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAgB,MAAS,WAA8C;AACrE,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,QACvB,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAY;AAAA,IACpC;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKU,oBACR,MACA,WACA,WACgB;AAChB,WAAO;AAAA,MACL,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,SAAS,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAAA,MACpD,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKU,kBACR,MACA,SACA,WACA,SACa;AACb,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MAAA;AAAA,MAEL,SAAS,KAAK,iBAAiB,WAAW,oBAAI,MAAM;AAAA,MACpD,UAAU;AAAA,QACR,SAAS,KAAK,OAAO;AAAA,QACrB,WAAW,KAAK,OAAO;AAAA,MAAA;AAAA,IACzB;AAAA,EAEJ;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAiB,WAAiB,SAAiC;AACzE,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,QAAQ,YAAY,UAAU,QAAA;AAAA,MAC1C,aAAa,QAAQ,cAAA,EAAgB;AAAA,MACrC,SAAS;AAAA;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASQ,eAAe,OAA4B;AACjD,QAAI,iBAAiB,OAAO;AAC1B,aAAO;AAAA,QACL,MAAM,MAAM,QAAQ;AAAA,QACpB,SAAS,MAAM;AAAA,QACf,OAAO,MAAM;AAAA,QACb,WAAW,KAAK,iBAAiB,KAAK;AAAA,MAAA;AAAA,IAE1C;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,KAAK;AAAA,MACrB,WAAW;AAAA,IAAA;AAAA,EAEf;AAAA;AAAA;AAAA;AAAA,EAKU,iBAAiB,OAAyB;AAClD,QAAI,iBAAiB,OAAO;AAC1B,YAAM,UAAU,MAAM,QAAQ,YAAA;AAG9B,UACE,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,SAAS,KAC1B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,GAC7B;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAuB;AAC3B,QAAI,KAAK,OAAO,WAAW,YAAY,SAAS;AAC9C,WAAK,OAAO,KAAK,eAAe;AAChC,WAAK,UAAU,YAAY,MAAM;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SAAwB;AAC5B,QAAI,KAAK,OAAO,WAAW,YAAY,QAAQ;AAC7C,WAAK,OAAO,KAAK,gBAAgB;AACjC,WAAK,UAAU,YAAY,IAAI;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAA2B;AAC/B,SAAK,OAAO,KAAK,mBAAmB;AAGpC,UAAM,KAAK,QAAA;AAEX,SAAK,UAAU,YAAY,UAAU;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAgB,UAAyB;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,YAAY,SAAsC;AACtD,SAAK,OAAO,MAAM,sBAAsB,QAAQ,EAAE,IAAI;AAAA,MACpD,MAAM,QAAQ;AAAA,MACd,eAAe,QAAQ;AAAA,IAAA,CACxB;AAID,SAAK,OAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,SAAS;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,SAAsC;AACzD,SAAK,OAAO,MAAM,yBAAyB,QAAQ,IAAI,IAAI;AAAA,MACzD,MAAM,QAAQ;AAAA,MACd,eAAe,QAAQ;AAAA,IAAA,CACxB;AAED,UAAM,UAAU,KAAK,gBAAgB,IAAI,QAAQ,IAAI;AACrD,QAAI,SAAS;AACX,YAAM,QAAQ,OAAO;AAAA,IACvB,OAAO;AACL,WAAK,OAAO,KAAK,gCAAgC,QAAQ,IAAI,EAAE;AAAA,IACjE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKU,uBACR,MACA,SACM;AACN,SAAK,gBAAgB,IAAI,MAAM,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKQ,iCAAuC;AAE7C,SAAK,uBAAuB,YAAY,QAAQ,OAAO,YAAY;AACjE,YAAM,KAAK,YAAY;AAAA,QACrB,IAAI,GAAG,KAAK,IAAA,CAAK;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,MAAM,KAAK,OAAO;AAAA,QAClB,IAAI,QAAQ;AAAA,QACZ,+BAAe,KAAA;AAAA,QACf,eAAe,QAAQ;AAAA,QACvB,SAAS;AAAA,UACP,SAAS,KAAK,OAAO;AAAA,UACrB,QAAQ,KAAK,OAAO;AAAA,UACpB,aAAa,KAAK,OAAO,aAAa;AAAA,QAAA;AAAA,MACxC,CACD;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,qBAAqB,SAAkC;AACrD,SAAK,oBAAoB;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,yBAAyB,SAAwB;AAC/C,SAAK,wBAAwB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASU,gBACR,QACA,WAAoC,IACrB;AACf,QAAI,CAAC,KAAK,mBAAmB,aAAa;AACxC,aAAO;AAAA,IACT;AAEA,SAAK,sBAAsB,KAAK,kBAAkB,gBAAgB,QAAQ;AAAA,MACxE,GAAG;AAAA,MACH,SAAS,KAAK,OAAO;AAAA,MACrB,WAAW,KAAK,OAAO;AAAA,MACvB,WAAW,KAAK,OAAO;AAAA,IAAA,CACxB;AAED,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUU,WACR,QACA,aACA,YACA,UACM;AACN,QAAI,CAAC,KAAK,qBAAqB,CAAC,KAAK,qBAAqB;AACxD;AAAA,IACF;AAEA,SAAK,kBAAkB,WAAW,KAAK,qBAAqB;AAAA,MAC1D;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAgB,mBACd,SACA,WAAoC,IACZ;AACxB,QAAI,CAAC,KAAK,qBAAqB,CAAC,KAAK,qBAAqB;AACxD,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,MAAM,KAAK,kBAAkB;AAAA,MAC5C,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IAAA;AAGF,SAAK,sBAAsB;AAC3B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,gBAAgB,QAAsB;AAC9C,QAAI,CAAC,KAAK,qBAAqB,CAAC,KAAK,qBAAqB;AACxD;AAAA,IACF;AAEA,SAAK,kBAAkB,gBAAgB,KAAK,qBAAqB,MAAM;AACvE,SAAK,sBAAsB;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAgC;AAC9B,WAAO,KAAK,wBAAwB;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKA,wBAIS;AACP,QAAI,CAAC,KAAK,qBAAqB,CAAC,KAAK,qBAAqB;AACxD,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,kBAAkB,YAAY,KAAK,mBAAmB;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAgB,kBACd,UACA,MACA,QACe;AACf,QAAI,CAAC,KAAK,OAAO,YAAY,SAAS;AACpC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,OAAO,WAAW,aAAa;AAEtD,SAAK,OAAO,MAAM,6BAA6B,QAAQ,IAAI;AAAA,MACzD;AAAA,MACA,QAAQ,KAAK;AAAA,IAAA,CACd;AAGD,UAAM,cAAc,KAAK,oBAAoB,UAAU,MAAM,MAAM;AAEnE,SAAK,OAAO,MAAM,4BAA4B,EAAE,SAAS,aAAa;AAAA,EAIxE;AAAA;AAAA;AAAA;AAAA,EAKQ,oBACN,UACA,MACA,QACQ;AACR,UAAM,YAAY,KAAK,OAAO,YAAY,aAAa;AAEvD,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eAAO,uDAAuD,KAAK,WAAW;AAAA,MAEhF,KAAK;AACH,eAAO,oDAAoD,KAAK,EAAE;AAAA,MAEpE,KAAK;AACH,eAAO,uDAAuD,SAAS,UAAU,KAAK,OAAO,EAAE,SAAS,KAAK,EAAE;AAAA,MAEjH;AACE,eAAO;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,cAAc,KAAa,OAA+B;AACxE,QAAI,CAAC,KAAK,OAAO,YAAY,SAAS;AACpC;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,OAAO,WAAW,aAAa;AAEtD,SAAK,OAAO,MAAM,iCAAiC,EAAE,WAAW,KAAK;AAIrE,SAAK,OAAO,MAAM,gBAAgB;AAAA,MAChC,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,OAAO,KAAK,UAAU,KAAK,EAAE,MAAM,GAAG,GAAG;AAAA,IAAA,CAC1C;AAAA,EACH;AACF;AASO,SAAS,WACd,aACA,SACW;AACX,SAAO;AAAA,IACL,IAAI,aAAA;AAAA,IACJ;AAAA,IACA,UAAU,SAAS,YAAY,aAAa;AAAA,IAC5C,OAAO,SAAS,SAAS,CAAA;AAAA,IACzB,gBAAgB,SAAS;AAAA,IACzB,cAAc,SAAS;AAAA,IACvB,SAAS,SAAS;AAAA,IAClB,UAAU,SAAS;AAAA,IACnB,+BAAe,KAAA;AAAA,IACf,UAAU,SAAS;AAAA,EAAA;AAEvB;AAKO,SAAS,cAAc,KAAkC;AAC9D,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,aAAa,OACb,OAAQ,IAAoB,YAAY;AAE5C;AAKO,SAAS,aAAa,KAAiC;AAC5D,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACV,aAAa,OACb,OAAQ,IAAmB,SAAS,YACpC,OAAQ,IAAmB,YAAY;AAE3C;"}