network-ai 5.10.1 → 5.11.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 (272) hide show
  1. package/INTEGRATION_GUIDE.md +2 -2
  2. package/README.md +5 -3
  3. package/SKILL.md +3 -3
  4. package/dist/esm/adapters/a2a-adapter.js +235 -0
  5. package/dist/esm/adapters/a2a-adapter.js.map +1 -0
  6. package/dist/esm/adapters/adapter-registry.js +613 -0
  7. package/dist/esm/adapters/adapter-registry.js.map +1 -0
  8. package/dist/esm/adapters/agno-adapter.js +140 -0
  9. package/dist/esm/adapters/agno-adapter.js.map +1 -0
  10. package/dist/esm/adapters/anthropic-computer-use-adapter.js +180 -0
  11. package/dist/esm/adapters/anthropic-computer-use-adapter.js.map +1 -0
  12. package/dist/esm/adapters/aps-adapter.js +289 -0
  13. package/dist/esm/adapters/aps-adapter.js.map +1 -0
  14. package/dist/esm/adapters/autogen-adapter.js +141 -0
  15. package/dist/esm/adapters/autogen-adapter.js.map +1 -0
  16. package/dist/esm/adapters/base-adapter.js +104 -0
  17. package/dist/esm/adapters/base-adapter.js.map +1 -0
  18. package/dist/esm/adapters/browser-agent-adapter.js +219 -0
  19. package/dist/esm/adapters/browser-agent-adapter.js.map +1 -0
  20. package/dist/esm/adapters/codex-adapter.js +318 -0
  21. package/dist/esm/adapters/codex-adapter.js.map +1 -0
  22. package/dist/esm/adapters/copilot-adapter.js +132 -0
  23. package/dist/esm/adapters/copilot-adapter.js.map +1 -0
  24. package/dist/esm/adapters/crewai-adapter.js +148 -0
  25. package/dist/esm/adapters/crewai-adapter.js.map +1 -0
  26. package/dist/esm/adapters/custom-adapter.js +142 -0
  27. package/dist/esm/adapters/custom-adapter.js.map +1 -0
  28. package/dist/esm/adapters/custom-streaming-adapter.js +181 -0
  29. package/dist/esm/adapters/custom-streaming-adapter.js.map +1 -0
  30. package/dist/esm/adapters/dspy-adapter.js +127 -0
  31. package/dist/esm/adapters/dspy-adapter.js.map +1 -0
  32. package/dist/esm/adapters/haystack-adapter.js +149 -0
  33. package/dist/esm/adapters/haystack-adapter.js.map +1 -0
  34. package/dist/esm/adapters/hermes-adapter.js +217 -0
  35. package/dist/esm/adapters/hermes-adapter.js.map +1 -0
  36. package/dist/esm/adapters/index.js +109 -0
  37. package/dist/esm/adapters/index.js.map +1 -0
  38. package/dist/esm/adapters/langchain-adapter.js +134 -0
  39. package/dist/esm/adapters/langchain-adapter.js.map +1 -0
  40. package/dist/esm/adapters/langchain-streaming-adapter.js +161 -0
  41. package/dist/esm/adapters/langchain-streaming-adapter.js.map +1 -0
  42. package/dist/esm/adapters/langgraph-adapter.js +119 -0
  43. package/dist/esm/adapters/langgraph-adapter.js.map +1 -0
  44. package/dist/esm/adapters/llamaindex-adapter.js +135 -0
  45. package/dist/esm/adapters/llamaindex-adapter.js.map +1 -0
  46. package/dist/esm/adapters/mcp-adapter.js +200 -0
  47. package/dist/esm/adapters/mcp-adapter.js.map +1 -0
  48. package/dist/esm/adapters/minimax-adapter.js +233 -0
  49. package/dist/esm/adapters/minimax-adapter.js.map +1 -0
  50. package/dist/esm/adapters/nemoclaw-adapter.js +465 -0
  51. package/dist/esm/adapters/nemoclaw-adapter.js.map +1 -0
  52. package/dist/esm/adapters/openai-agents-adapter.js +118 -0
  53. package/dist/esm/adapters/openai-agents-adapter.js.map +1 -0
  54. package/dist/esm/adapters/openai-assistants-adapter.js +130 -0
  55. package/dist/esm/adapters/openai-assistants-adapter.js.map +1 -0
  56. package/dist/esm/adapters/openclaw-adapter.js +107 -0
  57. package/dist/esm/adapters/openclaw-adapter.js.map +1 -0
  58. package/dist/esm/adapters/orchestrator-adapter.js +218 -0
  59. package/dist/esm/adapters/orchestrator-adapter.js.map +1 -0
  60. package/dist/esm/adapters/pydantic-ai-adapter.js +163 -0
  61. package/dist/esm/adapters/pydantic-ai-adapter.js.map +1 -0
  62. package/dist/esm/adapters/rlm-adapter.js +167 -0
  63. package/dist/esm/adapters/rlm-adapter.js.map +1 -0
  64. package/dist/esm/adapters/semantic-kernel-adapter.js +123 -0
  65. package/dist/esm/adapters/semantic-kernel-adapter.js.map +1 -0
  66. package/dist/esm/adapters/streaming-base-adapter.js +74 -0
  67. package/dist/esm/adapters/streaming-base-adapter.js.map +1 -0
  68. package/dist/esm/adapters/vertex-ai-adapter.js +166 -0
  69. package/dist/esm/adapters/vertex-ai-adapter.js.map +1 -0
  70. package/dist/esm/demo-control-plane.js +147 -0
  71. package/dist/esm/demo-control-plane.js.map +1 -0
  72. package/dist/esm/demo-worktree-dashboard.js +131 -0
  73. package/dist/esm/demo-worktree-dashboard.js.map +1 -0
  74. package/dist/esm/examples/01-hello-swarm.js +165 -0
  75. package/dist/esm/examples/01-hello-swarm.js.map +1 -0
  76. package/dist/esm/examples/02-fsm-pipeline.js +189 -0
  77. package/dist/esm/examples/02-fsm-pipeline.js.map +1 -0
  78. package/dist/esm/examples/03-parallel-agents.js +192 -0
  79. package/dist/esm/examples/03-parallel-agents.js.map +1 -0
  80. package/dist/esm/examples/05-code-review-swarm.js +1177 -0
  81. package/dist/esm/examples/05-code-review-swarm.js.map +1 -0
  82. package/dist/esm/examples/06-ai-pipeline-demo.js +263 -0
  83. package/dist/esm/examples/06-ai-pipeline-demo.js.map +1 -0
  84. package/dist/esm/examples/07-full-showcase.js +946 -0
  85. package/dist/esm/examples/07-full-showcase.js.map +1 -0
  86. package/dist/esm/examples/08-control-plane-stress-demo.js +186 -0
  87. package/dist/esm/examples/08-control-plane-stress-demo.js.map +1 -0
  88. package/dist/esm/examples/09-real-langchain.js +231 -0
  89. package/dist/esm/examples/09-real-langchain.js.map +1 -0
  90. package/dist/esm/examples/10-nemoclaw-sandbox-swarm.js +270 -0
  91. package/dist/esm/examples/10-nemoclaw-sandbox-swarm.js.map +1 -0
  92. package/dist/esm/examples/demo-runner.js +119 -0
  93. package/dist/esm/examples/demo-runner.js.map +1 -0
  94. package/dist/esm/index.js +1352 -0
  95. package/dist/esm/index.js.map +1 -0
  96. package/dist/esm/lib/adapter-hooks.js +216 -0
  97. package/dist/esm/lib/adapter-hooks.js.map +1 -0
  98. package/dist/esm/lib/adapter-test-harness.js +118 -0
  99. package/dist/esm/lib/adapter-test-harness.js.map +1 -0
  100. package/dist/esm/lib/agent-conversation.js +155 -0
  101. package/dist/esm/lib/agent-conversation.js.map +1 -0
  102. package/dist/esm/lib/agent-debate.js +146 -0
  103. package/dist/esm/lib/agent-debate.js.map +1 -0
  104. package/dist/esm/lib/agent-memory.js +336 -0
  105. package/dist/esm/lib/agent-memory.js.map +1 -0
  106. package/dist/esm/lib/agent-runtime.js +818 -0
  107. package/dist/esm/lib/agent-runtime.js.map +1 -0
  108. package/dist/esm/lib/agent-vcr.js +218 -0
  109. package/dist/esm/lib/agent-vcr.js.map +1 -0
  110. package/dist/esm/lib/anomaly-detector.js +178 -0
  111. package/dist/esm/lib/anomaly-detector.js.map +1 -0
  112. package/dist/esm/lib/approval-inbox.js +385 -0
  113. package/dist/esm/lib/approval-inbox.js.map +1 -0
  114. package/dist/esm/lib/auth-guardian.js +692 -0
  115. package/dist/esm/lib/auth-guardian.js.map +1 -0
  116. package/dist/esm/lib/auth-validator.js +32 -0
  117. package/dist/esm/lib/auth-validator.js.map +1 -0
  118. package/dist/esm/lib/blackboard-backend-crdt.js +251 -0
  119. package/dist/esm/lib/blackboard-backend-crdt.js.map +1 -0
  120. package/dist/esm/lib/blackboard-backend-redis.js +244 -0
  121. package/dist/esm/lib/blackboard-backend-redis.js.map +1 -0
  122. package/dist/esm/lib/blackboard-backend.js +141 -0
  123. package/dist/esm/lib/blackboard-backend.js.map +1 -0
  124. package/dist/esm/lib/blackboard-validator.js +985 -0
  125. package/dist/esm/lib/blackboard-validator.js.map +1 -0
  126. package/dist/esm/lib/circuit-breaker.js +164 -0
  127. package/dist/esm/lib/circuit-breaker.js.map +1 -0
  128. package/dist/esm/lib/claim-verifier.js +173 -0
  129. package/dist/esm/lib/claim-verifier.js.map +1 -0
  130. package/dist/esm/lib/comparison-runner.js +138 -0
  131. package/dist/esm/lib/comparison-runner.js.map +1 -0
  132. package/dist/esm/lib/compliance-monitor.js +261 -0
  133. package/dist/esm/lib/compliance-monitor.js.map +1 -0
  134. package/dist/esm/lib/confidence-filter.js +210 -0
  135. package/dist/esm/lib/confidence-filter.js.map +1 -0
  136. package/dist/esm/lib/config-watcher.js +215 -0
  137. package/dist/esm/lib/config-watcher.js.map +1 -0
  138. package/dist/esm/lib/consistency.js +274 -0
  139. package/dist/esm/lib/consistency.js.map +1 -0
  140. package/dist/esm/lib/console-ui.js +276 -0
  141. package/dist/esm/lib/console-ui.js.map +1 -0
  142. package/dist/esm/lib/context-throttler.js +171 -0
  143. package/dist/esm/lib/context-throttler.js.map +1 -0
  144. package/dist/esm/lib/control-plane.js +527 -0
  145. package/dist/esm/lib/control-plane.js.map +1 -0
  146. package/dist/esm/lib/cost-governor.js +128 -0
  147. package/dist/esm/lib/cost-governor.js.map +1 -0
  148. package/dist/esm/lib/cost-heatmap.js +161 -0
  149. package/dist/esm/lib/cost-heatmap.js.map +1 -0
  150. package/dist/esm/lib/coverage-gate.js +213 -0
  151. package/dist/esm/lib/coverage-gate.js.map +1 -0
  152. package/dist/esm/lib/coverage-reporter.js +177 -0
  153. package/dist/esm/lib/coverage-reporter.js.map +1 -0
  154. package/dist/esm/lib/crdt.js +141 -0
  155. package/dist/esm/lib/crdt.js.map +1 -0
  156. package/dist/esm/lib/dashboard-server.js +403 -0
  157. package/dist/esm/lib/dashboard-server.js.map +1 -0
  158. package/dist/esm/lib/dry-run.js +130 -0
  159. package/dist/esm/lib/dry-run.js.map +1 -0
  160. package/dist/esm/lib/env-manager.js +518 -0
  161. package/dist/esm/lib/env-manager.js.map +1 -0
  162. package/dist/esm/lib/errors.js +201 -0
  163. package/dist/esm/lib/errors.js.map +1 -0
  164. package/dist/esm/lib/event-bus.js +229 -0
  165. package/dist/esm/lib/event-bus.js.map +1 -0
  166. package/dist/esm/lib/explainability.js +102 -0
  167. package/dist/esm/lib/explainability.js.map +1 -0
  168. package/dist/esm/lib/fan-out.js +237 -0
  169. package/dist/esm/lib/fan-out.js.map +1 -0
  170. package/dist/esm/lib/federated-budget.js +322 -0
  171. package/dist/esm/lib/federated-budget.js.map +1 -0
  172. package/dist/esm/lib/fsm-journey.js +478 -0
  173. package/dist/esm/lib/fsm-journey.js.map +1 -0
  174. package/dist/esm/lib/goal-decomposer.js +698 -0
  175. package/dist/esm/lib/goal-decomposer.js.map +1 -0
  176. package/dist/esm/lib/goal-dsl.js +391 -0
  177. package/dist/esm/lib/goal-dsl.js.map +1 -0
  178. package/dist/esm/lib/job-queue.js +310 -0
  179. package/dist/esm/lib/job-queue.js.map +1 -0
  180. package/dist/esm/lib/landscape-agent.js +134 -0
  181. package/dist/esm/lib/landscape-agent.js.map +1 -0
  182. package/dist/esm/lib/learning-loop.js +181 -0
  183. package/dist/esm/lib/learning-loop.js.map +1 -0
  184. package/dist/esm/lib/lifecycle-hooks.js +148 -0
  185. package/dist/esm/lib/lifecycle-hooks.js.map +1 -0
  186. package/dist/esm/lib/locked-blackboard.js +1295 -0
  187. package/dist/esm/lib/locked-blackboard.js.map +1 -0
  188. package/dist/esm/lib/logger.js +150 -0
  189. package/dist/esm/lib/logger.js.map +1 -0
  190. package/dist/esm/lib/mcp-blackboard-tools.js +298 -0
  191. package/dist/esm/lib/mcp-blackboard-tools.js.map +1 -0
  192. package/dist/esm/lib/mcp-bridge.js +357 -0
  193. package/dist/esm/lib/mcp-bridge.js.map +1 -0
  194. package/dist/esm/lib/mcp-tool-consumer.js +287 -0
  195. package/dist/esm/lib/mcp-tool-consumer.js.map +1 -0
  196. package/dist/esm/lib/mcp-tools-control.js +392 -0
  197. package/dist/esm/lib/mcp-tools-control.js.map +1 -0
  198. package/dist/esm/lib/mcp-tools-extended.js +371 -0
  199. package/dist/esm/lib/mcp-tools-extended.js.map +1 -0
  200. package/dist/esm/lib/mcp-transport-http.js +528 -0
  201. package/dist/esm/lib/mcp-transport-http.js.map +1 -0
  202. package/dist/esm/lib/mcp-transport-sse.js +503 -0
  203. package/dist/esm/lib/mcp-transport-sse.js.map +1 -0
  204. package/dist/esm/lib/metrics.js +284 -0
  205. package/dist/esm/lib/metrics.js.map +1 -0
  206. package/dist/esm/lib/orchestrator-types.js +66 -0
  207. package/dist/esm/lib/orchestrator-types.js.map +1 -0
  208. package/dist/esm/lib/otel-bridge.js +167 -0
  209. package/dist/esm/lib/otel-bridge.js.map +1 -0
  210. package/dist/esm/lib/partition-planner.js +246 -0
  211. package/dist/esm/lib/partition-planner.js.map +1 -0
  212. package/dist/esm/lib/phase-pipeline.js +367 -0
  213. package/dist/esm/lib/phase-pipeline.js.map +1 -0
  214. package/dist/esm/lib/playground.js +224 -0
  215. package/dist/esm/lib/playground.js.map +1 -0
  216. package/dist/esm/lib/qa-orchestrator.js +296 -0
  217. package/dist/esm/lib/qa-orchestrator.js.map +1 -0
  218. package/dist/esm/lib/quadtree.js +259 -0
  219. package/dist/esm/lib/quadtree.js.map +1 -0
  220. package/dist/esm/lib/route-classifier.js +217 -0
  221. package/dist/esm/lib/route-classifier.js.map +1 -0
  222. package/dist/esm/lib/semantic-search.js +235 -0
  223. package/dist/esm/lib/semantic-search.js.map +1 -0
  224. package/dist/esm/lib/shared-blackboard.js +249 -0
  225. package/dist/esm/lib/shared-blackboard.js.map +1 -0
  226. package/dist/esm/lib/skill-composer.js +190 -0
  227. package/dist/esm/lib/skill-composer.js.map +1 -0
  228. package/dist/esm/lib/speculative-executor.js +107 -0
  229. package/dist/esm/lib/speculative-executor.js.map +1 -0
  230. package/dist/esm/lib/strategy-agent.js +626 -0
  231. package/dist/esm/lib/strategy-agent.js.map +1 -0
  232. package/dist/esm/lib/swarm-transport.js +307 -0
  233. package/dist/esm/lib/swarm-transport.js.map +1 -0
  234. package/dist/esm/lib/swarm-utils.js +510 -0
  235. package/dist/esm/lib/swarm-utils.js.map +1 -0
  236. package/dist/esm/lib/task-decomposer.js +272 -0
  237. package/dist/esm/lib/task-decomposer.js.map +1 -0
  238. package/dist/esm/lib/telemetry-provider.js +207 -0
  239. package/dist/esm/lib/telemetry-provider.js.map +1 -0
  240. package/dist/esm/lib/timeline-scrubber.js +173 -0
  241. package/dist/esm/lib/timeline-scrubber.js.map +1 -0
  242. package/dist/esm/lib/topology.js +591 -0
  243. package/dist/esm/lib/topology.js.map +1 -0
  244. package/dist/esm/lib/transport-agent.js +366 -0
  245. package/dist/esm/lib/transport-agent.js.map +1 -0
  246. package/dist/esm/lib/work-tree-dashboard.js +583 -0
  247. package/dist/esm/lib/work-tree-dashboard.js.map +1 -0
  248. package/dist/esm/lib/work-tree-ui.js +333 -0
  249. package/dist/esm/lib/work-tree-ui.js.map +1 -0
  250. package/dist/esm/lib/work-tree.js +480 -0
  251. package/dist/esm/lib/work-tree.js.map +1 -0
  252. package/dist/esm/run.js +144 -0
  253. package/dist/esm/run.js.map +1 -0
  254. package/dist/esm/security.js +1122 -0
  255. package/dist/esm/security.js.map +1 -0
  256. package/dist/index.d.ts +2 -0
  257. package/dist/index.d.ts.map +1 -1
  258. package/dist/index.js +6 -1
  259. package/dist/index.js.map +1 -1
  260. package/dist/lib/mcp-transport-http.d.ts +203 -0
  261. package/dist/lib/mcp-transport-http.d.ts.map +1 -0
  262. package/dist/lib/mcp-transport-http.js +528 -0
  263. package/dist/lib/mcp-transport-http.js.map +1 -0
  264. package/dist/lib/phase-pipeline.d.ts +31 -0
  265. package/dist/lib/phase-pipeline.d.ts.map +1 -1
  266. package/dist/lib/phase-pipeline.js +93 -1
  267. package/dist/lib/phase-pipeline.js.map +1 -1
  268. package/dist/lib/semantic-search.d.ts +42 -6
  269. package/dist/lib/semantic-search.d.ts.map +1 -1
  270. package/dist/lib/semantic-search.js +87 -6
  271. package/dist/lib/semantic-search.js.map +1 -1
  272. package/package.json +24 -4
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ /**
3
+ * Hermes Adapter (NousResearch Hermes)
4
+ *
5
+ * Integrates NousResearch Hermes models (Hermes-3, Hermes-2, etc.) with the
6
+ * SwarmOrchestrator. Hermes runs via Ollama, llama.cpp, Together AI, Fireworks,
7
+ * or any OpenAI-compatible endpoint — BYOC, no hard dependency.
8
+ *
9
+ * Usage — Ollama (local):
10
+ * const adapter = new HermesAdapter();
11
+ * adapter.registerAgent('assistant', {
12
+ * model: 'hermes3',
13
+ * baseUrl: 'http://localhost:11434/v1',
14
+ * systemPrompt: 'You are a helpful assistant.',
15
+ * });
16
+ *
17
+ * Usage — Together AI / Fireworks (hosted):
18
+ * adapter.registerAgent('reasoner', {
19
+ * model: 'NousResearch/Hermes-3-Llama-3.1-70B',
20
+ * baseUrl: 'https://api.together.xyz/v1',
21
+ * apiKey: process.env.TOGETHER_API_KEY,
22
+ * });
23
+ *
24
+ * Usage — bring-your-own OpenAI-compatible client:
25
+ * adapter.registerAgent('coder', {
26
+ * model: 'hermes3:8b',
27
+ * client: openaiInstance.chat.completions,
28
+ * });
29
+ *
30
+ * @module HermesAdapter
31
+ * @version 1.0.0
32
+ */
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.HermesAdapter = void 0;
35
+ const base_adapter_1 = require("./base-adapter");
36
+ // ---------------------------------------------------------------------------
37
+ // Helpers
38
+ // ---------------------------------------------------------------------------
39
+ /** Build the user prompt string from an AgentPayload */
40
+ function buildPrompt(payload) {
41
+ const parts = [];
42
+ const instruction = payload.handoff?.instruction;
43
+ if (instruction)
44
+ parts.push(instruction);
45
+ if (payload.action)
46
+ parts.push(`Task: ${payload.action}`);
47
+ if (payload.params && Object.keys(payload.params).length > 0) {
48
+ parts.push(`Parameters: ${JSON.stringify(payload.params, null, 2)}`);
49
+ }
50
+ if (payload.blackboardSnapshot && Object.keys(payload.blackboardSnapshot).length > 0) {
51
+ const relevant = Object.entries(payload.blackboardSnapshot)
52
+ .slice(0, 10)
53
+ .map(([k, v]) => `${k}: ${JSON.stringify(v)}`)
54
+ .join('\n');
55
+ parts.push(`Context:\n${relevant}`);
56
+ }
57
+ return parts.join('\n\n') || 'Complete the task.';
58
+ }
59
+ /** Resolve API key from config then environment */
60
+ function resolveApiKey(config) {
61
+ return config.apiKey ?? process.env['HERMES_API_KEY'] ?? '';
62
+ }
63
+ /**
64
+ * Built-in fetch-based OpenAI-compatible completion.
65
+ * Used when no `client` is supplied.
66
+ */
67
+ async function fetchCompletion(config, messages) {
68
+ const baseUrl = (config.baseUrl ?? 'http://localhost:11434/v1').replace(/\/$/, '');
69
+ const url = `${baseUrl}/chat/completions`;
70
+ const apiKey = resolveApiKey(config);
71
+ const headers = {
72
+ 'Content-Type': 'application/json',
73
+ ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {}),
74
+ ...(config.headers ?? {}),
75
+ };
76
+ const body = JSON.stringify({
77
+ model: config.model ?? 'hermes3',
78
+ messages,
79
+ ...(config.maxTokens !== undefined ? { max_tokens: config.maxTokens } : {}),
80
+ ...(config.temperature !== undefined ? { temperature: config.temperature } : {}),
81
+ ...(config.stop?.length ? { stop: config.stop } : {}),
82
+ });
83
+ const controller = new AbortController();
84
+ const timeoutMs = config.timeout ?? 120_000;
85
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
86
+ try {
87
+ const res = await fetch(url, { method: 'POST', headers, body, signal: controller.signal });
88
+ if (!res.ok) {
89
+ const text = await res.text().catch(() => '');
90
+ throw new Error(`Hermes API error ${res.status}: ${text}`);
91
+ }
92
+ const json = await res.json();
93
+ const content = json.choices?.[0]?.message?.content ?? '';
94
+ const usage = json.usage
95
+ ? {
96
+ prompt_tokens: json.usage.prompt_tokens ?? 0,
97
+ completion_tokens: json.usage.completion_tokens ?? 0,
98
+ total_tokens: json.usage.total_tokens ?? 0,
99
+ }
100
+ : undefined;
101
+ return { content, ...(usage ? { usage } : {}) };
102
+ }
103
+ finally {
104
+ clearTimeout(timer);
105
+ }
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // Adapter
109
+ // ---------------------------------------------------------------------------
110
+ class HermesAdapter extends base_adapter_1.BaseAdapter {
111
+ name = 'hermes';
112
+ version = '1.0.0';
113
+ agents = new Map();
114
+ get capabilities() {
115
+ return {
116
+ streaming: false,
117
+ parallel: true,
118
+ bidirectional: false,
119
+ discovery: true,
120
+ authentication: false,
121
+ statefulSessions: false,
122
+ };
123
+ }
124
+ /**
125
+ * Register a Hermes agent with the given configuration.
126
+ *
127
+ * @param agentId - Unique identifier used to route tasks to this agent
128
+ * @param config - Model, endpoint, system prompt, and optional BYOC client
129
+ */
130
+ registerAgent(agentId, config) {
131
+ if (!agentId || typeof agentId !== 'string') {
132
+ throw new Error('HermesAdapter.registerAgent: agentId must be a non-empty string');
133
+ }
134
+ this.agents.set(agentId, { config });
135
+ this.registeredAgents.set(agentId, {
136
+ id: agentId,
137
+ name: agentId,
138
+ description: `Hermes agent — model: ${config.model ?? 'hermes3'}`,
139
+ adapter: 'hermes',
140
+ capabilities: ['text-generation', 'reasoning', 'instruction-following'],
141
+ status: 'available',
142
+ });
143
+ }
144
+ async executeAgent(agentId, payload, _context) {
145
+ if (!this.ready) {
146
+ return { success: false, error: { code: 'NOT_INITIALIZED', message: 'HermesAdapter not initialized', recoverable: false } };
147
+ }
148
+ const entry = this.agents.get(agentId);
149
+ if (!entry) {
150
+ return { success: false, error: { code: 'AGENT_NOT_FOUND', message: `Hermes agent not found: ${agentId}`, recoverable: false } };
151
+ }
152
+ const { config } = entry;
153
+ const prompt = buildPrompt(payload);
154
+ const messages = [];
155
+ if (config.systemPrompt) {
156
+ messages.push({ role: 'system', content: config.systemPrompt });
157
+ }
158
+ messages.push({ role: 'user', content: prompt });
159
+ try {
160
+ let content;
161
+ let usage;
162
+ if (config.client) {
163
+ // BYOC path
164
+ const resp = await config.client.create({
165
+ model: config.model ?? 'hermes3',
166
+ messages,
167
+ ...(config.maxTokens !== undefined ? { max_tokens: config.maxTokens } : {}),
168
+ ...(config.temperature !== undefined ? { temperature: config.temperature } : {}),
169
+ ...(config.stop?.length ? { stop: config.stop } : {}),
170
+ });
171
+ content = resp.choices[0]?.message?.content ?? resp.choices[0]?.text ?? '';
172
+ if (resp.usage) {
173
+ usage = {
174
+ prompt_tokens: resp.usage.prompt_tokens ?? 0,
175
+ completion_tokens: resp.usage.completion_tokens ?? 0,
176
+ total_tokens: resp.usage.total_tokens ?? 0,
177
+ };
178
+ }
179
+ }
180
+ else {
181
+ // Built-in fetch path
182
+ const result = await fetchCompletion(config, messages);
183
+ content = result.content;
184
+ usage = result.usage;
185
+ }
186
+ return {
187
+ success: true,
188
+ data: {
189
+ response: content,
190
+ model: config.model ?? 'hermes3',
191
+ agentId,
192
+ ...(usage ? { usage } : {}),
193
+ },
194
+ };
195
+ }
196
+ catch (err) {
197
+ return {
198
+ success: false,
199
+ error: {
200
+ code: 'EXECUTION_ERROR',
201
+ message: err instanceof Error ? err.message : String(err),
202
+ recoverable: true,
203
+ nativeError: err,
204
+ },
205
+ };
206
+ }
207
+ }
208
+ async initialize(config) {
209
+ await super.initialize(config);
210
+ }
211
+ async shutdown() {
212
+ this.agents.clear();
213
+ await super.shutdown();
214
+ }
215
+ }
216
+ exports.HermesAdapter = HermesAdapter;
217
+ //# sourceMappingURL=hermes-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes-adapter.js","sourceRoot":"","sources":["../../../adapters/hermes-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Adapter System -- Plug-and-Play Agent Framework Support
4
+ *
5
+ * This module exports everything needed to make the SwarmOrchestrator
6
+ * work with any agent system. Import from here for clean access.
7
+ *
8
+ * Quick Start:
9
+ *
10
+ * import { AdapterRegistry, CustomAdapter } from './adapters';
11
+ *
12
+ * const registry = new AdapterRegistry();
13
+ * const custom = new CustomAdapter();
14
+ * custom.registerHandler("my-agent", async (payload) => {
15
+ * return { result: "done" };
16
+ * });
17
+ * await registry.addAdapter(custom);
18
+ *
19
+ * @module Adapters
20
+ * @version 1.0.0
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.RLMAdapter = exports.OrchestratorAdapter = exports.BrowserAgentAdapter = exports.PydanticAIAdapter = exports.VertexAIAdapter = exports.OpenAIAgentsAdapter = exports.AnthropicComputerUseAdapter = exports.LangGraphAdapter = exports.HermesAdapter = exports.CopilotAdapter = exports.NemoClawAdapter = exports.APSAdapter = exports.MiniMaxAdapter = exports.CodexAdapter = exports.A2AAdapter = exports.CustomStreamingAdapter = exports.LangChainStreamingAdapter = exports.collectStream = exports.StreamingBaseAdapter = exports.AgnoAdapter = exports.DSPyAdapter = exports.HaystackAdapter = exports.OpenAIAssistantsAdapter = exports.SemanticKernelAdapter = exports.LlamaIndexAdapter = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.getRegistry = exports.AdapterRegistry = exports.BaseAdapter = void 0;
24
+ // Core infrastructure
25
+ var base_adapter_1 = require("./base-adapter");
26
+ Object.defineProperty(exports, "BaseAdapter", { enumerable: true, get: function () { return base_adapter_1.BaseAdapter; } });
27
+ var adapter_registry_1 = require("./adapter-registry");
28
+ Object.defineProperty(exports, "AdapterRegistry", { enumerable: true, get: function () { return adapter_registry_1.AdapterRegistry; } });
29
+ Object.defineProperty(exports, "getRegistry", { enumerable: true, get: function () { return adapter_registry_1.getRegistry; } });
30
+ // Framework adapters -- Original 6
31
+ var openclaw_adapter_1 = require("./openclaw-adapter");
32
+ Object.defineProperty(exports, "OpenClawAdapter", { enumerable: true, get: function () { return openclaw_adapter_1.OpenClawAdapter; } });
33
+ var langchain_adapter_1 = require("./langchain-adapter");
34
+ Object.defineProperty(exports, "LangChainAdapter", { enumerable: true, get: function () { return langchain_adapter_1.LangChainAdapter; } });
35
+ var autogen_adapter_1 = require("./autogen-adapter");
36
+ Object.defineProperty(exports, "AutoGenAdapter", { enumerable: true, get: function () { return autogen_adapter_1.AutoGenAdapter; } });
37
+ var crewai_adapter_1 = require("./crewai-adapter");
38
+ Object.defineProperty(exports, "CrewAIAdapter", { enumerable: true, get: function () { return crewai_adapter_1.CrewAIAdapter; } });
39
+ var mcp_adapter_1 = require("./mcp-adapter");
40
+ Object.defineProperty(exports, "MCPAdapter", { enumerable: true, get: function () { return mcp_adapter_1.MCPAdapter; } });
41
+ var custom_adapter_1 = require("./custom-adapter");
42
+ Object.defineProperty(exports, "CustomAdapter", { enumerable: true, get: function () { return custom_adapter_1.CustomAdapter; } });
43
+ // Framework adapters -- New 6
44
+ var llamaindex_adapter_1 = require("./llamaindex-adapter");
45
+ Object.defineProperty(exports, "LlamaIndexAdapter", { enumerable: true, get: function () { return llamaindex_adapter_1.LlamaIndexAdapter; } });
46
+ var semantic_kernel_adapter_1 = require("./semantic-kernel-adapter");
47
+ Object.defineProperty(exports, "SemanticKernelAdapter", { enumerable: true, get: function () { return semantic_kernel_adapter_1.SemanticKernelAdapter; } });
48
+ var openai_assistants_adapter_1 = require("./openai-assistants-adapter");
49
+ Object.defineProperty(exports, "OpenAIAssistantsAdapter", { enumerable: true, get: function () { return openai_assistants_adapter_1.OpenAIAssistantsAdapter; } });
50
+ var haystack_adapter_1 = require("./haystack-adapter");
51
+ Object.defineProperty(exports, "HaystackAdapter", { enumerable: true, get: function () { return haystack_adapter_1.HaystackAdapter; } });
52
+ var dspy_adapter_1 = require("./dspy-adapter");
53
+ Object.defineProperty(exports, "DSPyAdapter", { enumerable: true, get: function () { return dspy_adapter_1.DSPyAdapter; } });
54
+ var agno_adapter_1 = require("./agno-adapter");
55
+ Object.defineProperty(exports, "AgnoAdapter", { enumerable: true, get: function () { return agno_adapter_1.AgnoAdapter; } });
56
+ // Streaming adapters
57
+ var streaming_base_adapter_1 = require("./streaming-base-adapter");
58
+ Object.defineProperty(exports, "StreamingBaseAdapter", { enumerable: true, get: function () { return streaming_base_adapter_1.StreamingBaseAdapter; } });
59
+ Object.defineProperty(exports, "collectStream", { enumerable: true, get: function () { return streaming_base_adapter_1.collectStream; } });
60
+ var langchain_streaming_adapter_1 = require("./langchain-streaming-adapter");
61
+ Object.defineProperty(exports, "LangChainStreamingAdapter", { enumerable: true, get: function () { return langchain_streaming_adapter_1.LangChainStreamingAdapter; } });
62
+ var custom_streaming_adapter_1 = require("./custom-streaming-adapter");
63
+ Object.defineProperty(exports, "CustomStreamingAdapter", { enumerable: true, get: function () { return custom_streaming_adapter_1.CustomStreamingAdapter; } });
64
+ // A2A (Agent-to-Agent) adapter
65
+ var a2a_adapter_1 = require("./a2a-adapter");
66
+ Object.defineProperty(exports, "A2AAdapter", { enumerable: true, get: function () { return a2a_adapter_1.A2AAdapter; } });
67
+ // Codex adapter (OpenAI Codex CLI / chat / completion)
68
+ var codex_adapter_1 = require("./codex-adapter");
69
+ Object.defineProperty(exports, "CodexAdapter", { enumerable: true, get: function () { return codex_adapter_1.CodexAdapter; } });
70
+ // MiniMax adapter (MiniMax LLM API — MiniMax-M2.5 / MiniMax-M2.5-highspeed)
71
+ var minimax_adapter_1 = require("./minimax-adapter");
72
+ Object.defineProperty(exports, "MiniMaxAdapter", { enumerable: true, get: function () { return minimax_adapter_1.MiniMaxAdapter; } });
73
+ // APS adapter (Agent Permission Service — delegation chain → trust mapping)
74
+ var aps_adapter_1 = require("./aps-adapter");
75
+ Object.defineProperty(exports, "APSAdapter", { enumerable: true, get: function () { return aps_adapter_1.APSAdapter; } });
76
+ // NemoClaw adapter (NVIDIA NemoClaw — sandboxed agent execution via OpenShell)
77
+ var nemoclaw_adapter_1 = require("./nemoclaw-adapter");
78
+ Object.defineProperty(exports, "NemoClawAdapter", { enumerable: true, get: function () { return nemoclaw_adapter_1.NemoClawAdapter; } });
79
+ // Copilot adapter (GitHub Copilot — code generation, review, analysis)
80
+ var copilot_adapter_1 = require("./copilot-adapter");
81
+ Object.defineProperty(exports, "CopilotAdapter", { enumerable: true, get: function () { return copilot_adapter_1.CopilotAdapter; } });
82
+ // Hermes adapter (NousResearch Hermes — Ollama / OpenAI-compatible endpoint, BYOC)
83
+ var hermes_adapter_1 = require("./hermes-adapter");
84
+ Object.defineProperty(exports, "HermesAdapter", { enumerable: true, get: function () { return hermes_adapter_1.HermesAdapter; } });
85
+ // LangGraph adapter (LangChain stateful graph execution)
86
+ var langgraph_adapter_1 = require("./langgraph-adapter");
87
+ Object.defineProperty(exports, "LangGraphAdapter", { enumerable: true, get: function () { return langgraph_adapter_1.LangGraphAdapter; } });
88
+ // Anthropic Computer Use adapter (Claude with screen/keyboard/mouse)
89
+ var anthropic_computer_use_adapter_1 = require("./anthropic-computer-use-adapter");
90
+ Object.defineProperty(exports, "AnthropicComputerUseAdapter", { enumerable: true, get: function () { return anthropic_computer_use_adapter_1.AnthropicComputerUseAdapter; } });
91
+ // OpenAI Agents SDK adapter (agent runners with tools, handoffs, guardrails)
92
+ var openai_agents_adapter_1 = require("./openai-agents-adapter");
93
+ Object.defineProperty(exports, "OpenAIAgentsAdapter", { enumerable: true, get: function () { return openai_agents_adapter_1.OpenAIAgentsAdapter; } });
94
+ // Vertex AI adapter (Google Gemini, PaLM, custom endpoints)
95
+ var vertex_ai_adapter_1 = require("./vertex-ai-adapter");
96
+ Object.defineProperty(exports, "VertexAIAdapter", { enumerable: true, get: function () { return vertex_ai_adapter_1.VertexAIAdapter; } });
97
+ // Pydantic AI adapter (type-safe Python agent framework)
98
+ var pydantic_ai_adapter_1 = require("./pydantic-ai-adapter");
99
+ Object.defineProperty(exports, "PydanticAIAdapter", { enumerable: true, get: function () { return pydantic_ai_adapter_1.PydanticAIAdapter; } });
100
+ // Browser Agent adapter (Playwright, Puppeteer, CDP browser automation)
101
+ var browser_agent_adapter_1 = require("./browser-agent-adapter");
102
+ Object.defineProperty(exports, "BrowserAgentAdapter", { enumerable: true, get: function () { return browser_agent_adapter_1.BrowserAgentAdapter; } });
103
+ // Orchestrator adapter (hierarchical multi-orchestrator coordination)
104
+ var orchestrator_adapter_1 = require("./orchestrator-adapter");
105
+ Object.defineProperty(exports, "OrchestratorAdapter", { enumerable: true, get: function () { return orchestrator_adapter_1.OrchestratorAdapter; } });
106
+ // RLM adapter (Recursive Language Model — arxiv 2512.24601)
107
+ var rlm_adapter_1 = require("./rlm-adapter");
108
+ Object.defineProperty(exports, "RLMAdapter", { enumerable: true, get: function () { return rlm_adapter_1.RLMAdapter; } });
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,sBAAsB;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAAkE;AAAzD,mHAAA,eAAe,OAAA;AAAE,+GAAA,WAAW,OAAA;AAGrC,mCAAmC;AACnC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,8BAA8B;AAC9B,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAO1B,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAE9B,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAOhC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAQxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAQpB,qBAAqB;AACrB,mEAA+E;AAAtE,8HAAA,oBAAoB,OAAA;AAAE,uHAAA,aAAa,OAAA;AAC5C,6EAA0E;AAAjE,wIAAA,yBAAyB,OAAA;AAClC,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAG/B,+BAA+B;AAC/B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAUnB,uDAAuD;AACvD,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AASrB,4EAA4E;AAC5E,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,4EAA4E;AAC5E,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAOnB,+EAA+E;AAC/E,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAYxB,uEAAuE;AACvE,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAGvB,mFAAmF;AACnF,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,yDAAyD;AACzD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAGzB,qEAAqE;AACrE,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AAUpC,6EAA6E;AAC7E,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAQ5B,4DAA4D;AAC5D,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AAUxB,yDAAyD;AACzD,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAQ1B,wEAAwE;AACxE,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAS5B,sEAAsE;AACtE,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAO5B,4DAA4D;AAC5D,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * LangChain / LangGraph Adapter
4
+ *
5
+ * Allows LangChain agents, chains, and LangGraph workflows to plug into
6
+ * the SwarmOrchestrator. Agents are registered as callable functions
7
+ * or LangChain Runnable objects.
8
+ *
9
+ * Usage:
10
+ * const adapter = new LangChainAdapter();
11
+ * adapter.registerAgent("research", myLangChainAgent);
12
+ * adapter.registerAgent("summarizer", myChain);
13
+ * await registry.addAdapter(adapter);
14
+ *
15
+ * Then in the orchestrator:
16
+ * delegateTask({ targetAgent: "lc:research", ... })
17
+ *
18
+ * @module LangChainAdapter
19
+ * @version 1.0.0
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.LangChainAdapter = void 0;
23
+ const base_adapter_1 = require("./base-adapter");
24
+ class LangChainAdapter extends base_adapter_1.BaseAdapter {
25
+ name = 'langchain';
26
+ version = '1.0.0';
27
+ runnables = new Map();
28
+ get capabilities() {
29
+ return {
30
+ streaming: true,
31
+ parallel: true,
32
+ bidirectional: false,
33
+ discovery: true,
34
+ authentication: false,
35
+ statefulSessions: true,
36
+ };
37
+ }
38
+ /**
39
+ * Register a LangChain agent, chain, or LangGraph graph.
40
+ *
41
+ * @param agentId - Unique identifier for this agent
42
+ * @param runnable - A LangChain Runnable (agent, chain, graph) or async function
43
+ * @param metadata - Optional metadata (description, capabilities)
44
+ */
45
+ registerAgent(agentId, runnable, metadata) {
46
+ this.runnables.set(agentId, runnable);
47
+ this.registerLocalAgent({
48
+ id: agentId,
49
+ name: agentId,
50
+ description: metadata?.description ?? `LangChain agent: ${agentId}`,
51
+ capabilities: metadata?.capabilities,
52
+ status: 'available',
53
+ });
54
+ }
55
+ async executeAgent(agentId, payload, context) {
56
+ this.ensureReady();
57
+ const runnable = this.runnables.get(agentId);
58
+ if (!runnable) {
59
+ return this.errorResult('AGENT_NOT_FOUND', `LangChain agent "${agentId}" is not registered. Call adapter.registerAgent() first.`, false);
60
+ }
61
+ const startTime = Date.now();
62
+ try {
63
+ // Build the input in LangChain's expected format
64
+ const input = this.buildInput(payload, context);
65
+ // Execute: support both Runnable.invoke() and plain functions
66
+ let result;
67
+ if (typeof runnable === 'function') {
68
+ result = await runnable(input);
69
+ }
70
+ else {
71
+ result = await runnable.invoke(input, {
72
+ metadata: {
73
+ taskId: context.taskId,
74
+ sessionId: context.sessionId,
75
+ sourceAgent: context.agentId,
76
+ },
77
+ });
78
+ }
79
+ // Normalize the result
80
+ return this.normalizeResult(result, startTime);
81
+ }
82
+ catch (error) {
83
+ return this.errorResult('LANGCHAIN_ERROR', error instanceof Error ? error.message : 'LangChain execution failed', true, error);
84
+ }
85
+ }
86
+ buildInput(payload, context) {
87
+ const input = {
88
+ ...payload.params,
89
+ };
90
+ // Map handoff instruction to common LangChain input keys
91
+ if (payload.handoff) {
92
+ input.input = payload.handoff.instruction;
93
+ input.question = payload.handoff.instruction; // Some chains expect "question"
94
+ input.task = payload.handoff.instruction;
95
+ if (payload.handoff.context) {
96
+ input.context = payload.handoff.context;
97
+ }
98
+ if (payload.handoff.constraints) {
99
+ input.constraints = payload.handoff.constraints;
100
+ }
101
+ }
102
+ // Include blackboard data
103
+ if (payload.blackboardSnapshot) {
104
+ input.shared_state = payload.blackboardSnapshot;
105
+ }
106
+ // Agent context
107
+ input.agent_context = {
108
+ agentId: context.agentId,
109
+ taskId: context.taskId,
110
+ sessionId: context.sessionId,
111
+ };
112
+ return input;
113
+ }
114
+ normalizeResult(result, startTime) {
115
+ // Handle LangChain's various output formats
116
+ if (result && typeof result === 'object') {
117
+ const obj = result;
118
+ // AgentExecutor returns { output: "..." }
119
+ if ('output' in obj) {
120
+ return this.successResult(obj.output, Date.now() - startTime);
121
+ }
122
+ // Some chains return { result: "..." }
123
+ if ('result' in obj) {
124
+ return this.successResult(obj.result, Date.now() - startTime);
125
+ }
126
+ // LangGraph returns state objects — pass through
127
+ return this.successResult(result, Date.now() - startTime);
128
+ }
129
+ // String or primitive result
130
+ return this.successResult(result, Date.now() - startTime);
131
+ }
132
+ }
133
+ exports.LangChainAdapter = LangChainAdapter;
134
+ //# sourceMappingURL=langchain-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-adapter.js","sourceRoot":"","sources":["../../../adapters/langchain-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ /**
3
+ * LangChainStreamingAdapter — LangChainAdapter with real incremental streaming.
4
+ *
5
+ * Extends {@link LangChainAdapter} with genuine streaming via the LangChain
6
+ * Runnable `.stream()` interface. Falls back gracefully to `.invoke()` for
7
+ * agents whose Runnable does not expose `.stream()`.
8
+ *
9
+ * Usage (drop-in replacement for LangChainAdapter):
10
+ *
11
+ * const adapter = new LangChainStreamingAdapter();
12
+ * adapter.registerAgent('analyst', myChain); // same API
13
+ * await registry.addAdapter(adapter);
14
+ *
15
+ * // Stream the response
16
+ * for await (const chunk of adapter.executeAgentStream('analyst', payload, ctx)) {
17
+ * process.stdout.write(chunk.text);
18
+ * if (chunk.done) break;
19
+ * }
20
+ *
21
+ * @module LangChainStreamingAdapter
22
+ * @version 1.0.0
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.LangChainStreamingAdapter = void 0;
26
+ const langchain_adapter_1 = require("./langchain-adapter");
27
+ function isStreamable(runnable) {
28
+ return (typeof runnable === 'object' &&
29
+ runnable !== null &&
30
+ typeof runnable.stream === 'function');
31
+ }
32
+ /** Coerce any chunk value yielded by a LangChain stream to a string. */
33
+ function chunkToText(raw) {
34
+ if (typeof raw === 'string')
35
+ return raw;
36
+ if (raw == null)
37
+ return '';
38
+ if (typeof raw === 'object') {
39
+ const obj = raw;
40
+ // AIMessage / BaseMessage pattern
41
+ if (typeof obj.content === 'string')
42
+ return obj.content;
43
+ // { output: "..." } pattern
44
+ if (typeof obj.output === 'string')
45
+ return obj.output;
46
+ // { result: "..." } pattern
47
+ if (typeof obj.result === 'string')
48
+ return obj.result;
49
+ // Generic object — stringify
50
+ return JSON.stringify(obj);
51
+ }
52
+ return String(raw);
53
+ }
54
+ class LangChainStreamingAdapter extends langchain_adapter_1.LangChainAdapter {
55
+ // Internal registry of agents that have a real .stream() method
56
+ streamableAgentIds = new Set();
57
+ get capabilities() {
58
+ return {
59
+ ...super.capabilities,
60
+ streaming: true,
61
+ };
62
+ }
63
+ /**
64
+ * Register a LangChain agent. Automatically detects `.stream()` support.
65
+ */
66
+ registerAgent(agentId, runnable, metadata) {
67
+ super.registerAgent(agentId, runnable, metadata);
68
+ if (isStreamable(runnable)) {
69
+ this.streamableAgentIds.add(agentId);
70
+ }
71
+ }
72
+ /** Returns `true` when the agent exposes LangChain's `.stream()` method. */
73
+ supportsStreaming(agentId) {
74
+ return this.streamableAgentIds.has(agentId);
75
+ }
76
+ /**
77
+ * Stream agent execution as incremental `StreamingChunk` values.
78
+ *
79
+ * - If the registered Runnable exposes `.stream()`, emits tokens incrementally.
80
+ * - Otherwise falls back to `.invoke()` and emits a single chunk.
81
+ */
82
+ async *executeAgentStream(agentId, payload, context) {
83
+ this.ensureReady();
84
+ // Access the internal runnables map via the parent's execute path.
85
+ // We override at the stream level; non-streamable agents fall through
86
+ // to the single-chunk wrapper in the base non-streaming path.
87
+ if (!this.streamableAgentIds.has(agentId)) {
88
+ // Fall back: executeAgent → single chunk
89
+ const result = await this.executeAgent(agentId, payload, context);
90
+ if (!result.success) {
91
+ yield {
92
+ text: result.error?.message ?? 'Agent execution failed',
93
+ done: true,
94
+ metadata: { error: true, code: result.error?.code },
95
+ };
96
+ return;
97
+ }
98
+ const data = result.data;
99
+ const text = typeof data === 'string' ? data :
100
+ data != null ? JSON.stringify(data) :
101
+ '';
102
+ yield { text, done: false, metadata: result.metadata };
103
+ yield { text: '', done: true, metadata: { adapter: this.name } };
104
+ return;
105
+ }
106
+ // Build the same input the non-streaming path would use
107
+ const input = this.buildInput(payload, context);
108
+ // We need the runnable — access it via executeAgent's path by delegating
109
+ // through a custom approach: re-invoke via the known runnables map.
110
+ // The parent stores runnables as a private field; we get it via symbol.
111
+ const runnables = this.runnables;
112
+ const runnable = runnables?.get(agentId);
113
+ if (!runnable || !isStreamable(runnable)) {
114
+ // Shouldn't happen — fallback anyway
115
+ yield* this._fallbackStream(agentId, payload, context);
116
+ return;
117
+ }
118
+ const langchainConfig = {
119
+ metadata: {
120
+ taskId: context.taskId,
121
+ sessionId: context.sessionId,
122
+ sourceAgent: context.agentId,
123
+ },
124
+ };
125
+ try {
126
+ for await (const rawChunk of runnable.stream(input, langchainConfig)) {
127
+ const text = chunkToText(rawChunk);
128
+ if (text)
129
+ yield { text, done: false };
130
+ }
131
+ yield { text: '', done: true, metadata: { adapter: this.name } };
132
+ }
133
+ catch (error) {
134
+ yield {
135
+ text: error instanceof Error ? error.message : 'Streaming failed',
136
+ done: true,
137
+ metadata: { error: true },
138
+ };
139
+ }
140
+ }
141
+ // Private helper used for fallback path
142
+ async *_fallbackStream(agentId, payload, context) {
143
+ const result = await this.executeAgent(agentId, payload, context);
144
+ if (!result.success) {
145
+ yield {
146
+ text: result.error?.message ?? 'Agent execution failed',
147
+ done: true,
148
+ metadata: { error: true },
149
+ };
150
+ return;
151
+ }
152
+ const data = result.data;
153
+ const text = typeof data === 'string' ? data :
154
+ data != null ? JSON.stringify(data) :
155
+ '';
156
+ yield { text, done: false };
157
+ yield { text: '', done: true };
158
+ }
159
+ }
160
+ exports.LangChainStreamingAdapter = LangChainStreamingAdapter;
161
+ //# sourceMappingURL=langchain-streaming-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-streaming-adapter.js","sourceRoot":"","sources":["../../../adapters/langchain-streaming-adapter.ts"],"names":[],"mappings":"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"}