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,1352 @@
1
+ "use strict";
2
+ /**
3
+ * SwarmOrchestrator - Multi-Agent Orchestration Framework for TypeScript/Node.js
4
+ *
5
+ * Connects 12 AI frameworks (LangChain, AutoGen, CrewAI, OpenAI Assistants, LlamaIndex,
6
+ * Semantic Kernel, Haystack, DSPy, Agno, MCP, OpenClaw) via a shared atomic blackboard,
7
+ * FSM governance, per-agent token budget enforcement, and HMAC audit trails.
8
+ * OpenClaw skill interface is implemented for backward compatibility.
9
+ *
10
+ * @module SwarmOrchestrator
11
+ * @version 4.0.17
12
+ * @license MIT
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.validateJsonSchema = exports.QualityGateAgent = exports.BlackboardValidator = exports.NoOpAuthValidator = exports.ComparisonRunner = exports.CoverageReporter = exports.AgentVCR = exports.compileGoal = exports.validateGoal = exports.goalFromObject = exports.parseGoal = exports.MockAgentRegistry = exports.startPlayground = exports.FileJobStore = exports.JobQueue = exports.SwarmTransportClient = exports.SwarmTransportServer = exports.createAdapterTestSuite = exports.ApprovalInbox = exports.LandscapeAgent = exports.TransportAgent = exports.AgentDebate = exports.SpeculativeExecutor = exports.LearningLoop = exports.SharedLongTermMemory = exports.ProceduralMemory = exports.EpisodicMemory = exports.AgentMemory = exports.OrchestratorLifecycleHooks = exports.ConfigWatcher = exports.DryRunSimulator = exports.LookupCostModel = exports.CostGovernor = exports.AnomalyDetector = exports.TimelineScrubber = exports.CostHeatmap = exports.createOrchestratorMetrics = exports.Histogram = exports.Gauge = exports.Counter = exports.MetricsRegistry = exports.SpanStatus = exports.OTelBridge = exports.AgentConversationLog = exports.OrchestratorEventBus = exports.ExplainabilityTracer = exports.TaskDecomposer = exports.AuthGuardian = exports.SharedBlackboard = exports.SwarmOrchestrator = void 0;
16
+ exports.ComplianceMonitor = exports.WORKFLOW_STATES = exports.createDeliveryPipelineFSM = exports.ComplianceViolationError = exports.ComplianceMiddleware = exports.ToolAuthorizationMatrix = exports.JourneyFSM = exports.mapErrorToSkillResult = exports.TimeoutError = exports.ParallelLimitError = exports.AdapterNotInitializedError = exports.AdapterNotFoundError = exports.AdapterAlreadyRegisteredError = exports.ConflictError = exports.LockAcquisitionError = exports.ValidationError = exports.NamespaceViolationError = exports.IdentityVerificationError = exports.NetworkAIError = exports.LogLevel = exports.Logger = exports.McpInProcessTransport = exports.McpBridgeRouter = exports.McpBridgeClient = exports.McpBlackboardBridge = exports.FederatedBudget = exports.isFlushable = exports.ConsistentBackend = exports.mergeEntry = exports.compareClock = exports.isConcurrent = exports.happensBefore = exports.mergeClock = exports.tickClock = exports.CrdtBackend = exports.RedisBackend = exports.MemoryBackend = exports.FileBackend = exports.LockedBlackboard = exports.HttpClientTransport = exports.StdioClientTransport = exports.MCPToolConsumer = exports.CustomAdapter = exports.MCPAdapter = exports.CrewAIAdapter = exports.AutoGenAdapter = exports.LangChainAdapter = exports.OpenClawAdapter = exports.BaseAdapter = exports.AdapterRegistry = void 0;
17
+ exports.EnvironmentManager = exports.ControlPlane = exports.WorkTreeDashboard = exports.WorkTreeUI = exports.WorkTree = exports.DashboardServer = exports.TopologyTracker = exports.createLLMClassifier = exports.createHeuristicClassifier = exports.RouteClassifier = exports.createLLMEvaluator = exports.createKeywordEvaluator = exports.CoverageGate = exports.parsePartitionJSON = exports.createLLMPartitionPlanner = exports.createLexicalOverlapChecker = exports.PartitionPlanner = exports.filterState = exports.ContextThrottler = exports.parsePlanJSON = exports.topologicalLayers = exports.validateDAG = exports.createLLMPlanner = exports.runTeam = exports.TeamRunner = exports.GoalDecomposer = exports.adaptiveStrategy = exports.StrategyAgent = exports.WorkloadPartitioner = exports.AgentPool = exports.ansi = exports.ConsoleUI = exports.RuntimeExecutionError = exports.RuntimeApprovalError = exports.RuntimePolicyError = exports.AgentRuntime = exports.ApprovalGate = exports.FileAccessor = exports.ShellExecutor = exports.SandboxPolicy = exports.FanOutFanIn = exports.ConfidenceFilter = exports.PhasePipeline = exports.SemanticMemory = exports.SkillComposer = exports.matchToolPattern = exports.matchGlob = exports.AdapterHookManager = exports.QAOrchestratorAgent = exports.ClaimVerifier = void 0;
18
+ exports.createOtelHooks = exports.CapturingTelemetryProvider = exports.NullTelemetryProvider = exports.CircuitOpenError = exports.CircuitBreaker = exports.OrchestratorAdapter = exports.BrowserAgentAdapter = exports.PydanticAIAdapter = exports.VertexAIAdapter = exports.OpenAIAgentsAdapter = exports.AnthropicComputerUseAdapter = exports.LangGraphAdapter = exports.CopilotAdapter = exports.NemoClawAdapter = exports.MiniMaxAdapter = exports.CodexAdapter = exports.A2AAdapter = exports.CustomStreamingAdapter = exports.LangChainStreamingAdapter = exports.collectStream = exports.StreamingBaseAdapter = exports.ControlMcpTools = exports.ExtendedMcpTools = exports.OrchestrationPromptProvider = exports.BlackboardResourceProvider = exports.McpStreamableServer = exports.McpBlackboardBridgeAdapter = exports.McpCombinedBridge = exports.McpSseTransport = exports.McpSseServer = exports.BLACKBOARD_TOOL_DEFINITIONS = exports.registerBlackboardTools = exports.BlackboardMCPTools = exports.QuadTree = exports.SourceProtectionError = void 0;
19
+ exports.createSwarmOrchestrator = createSwarmOrchestrator;
20
+ exports.getConfig = getConfig;
21
+ exports.setConfig = setConfig;
22
+ const fs_1 = require("fs");
23
+ const path_1 = require("path");
24
+ const crypto_1 = require("crypto");
25
+ const adapter_registry_1 = require("./adapters/adapter-registry");
26
+ const security_1 = require("./security");
27
+ const blackboard_backend_1 = require("./lib/blackboard-backend");
28
+ const consistency_1 = require("./lib/consistency");
29
+ const blackboard_validator_1 = require("./lib/blackboard-validator");
30
+ const logger_1 = require("./lib/logger");
31
+ const errors_1 = require("./lib/errors");
32
+ // Extracted modules (Phase 1.1 — split god-file)
33
+ const shared_blackboard_1 = require("./lib/shared-blackboard");
34
+ const auth_guardian_1 = require("./lib/auth-guardian");
35
+ const explainability_1 = require("./lib/explainability");
36
+ const event_bus_1 = require("./lib/event-bus");
37
+ const agent_conversation_1 = require("./lib/agent-conversation");
38
+ const otel_bridge_1 = require("./lib/otel-bridge");
39
+ const metrics_1 = require("./lib/metrics");
40
+ const cost_heatmap_1 = require("./lib/cost-heatmap");
41
+ const anomaly_detector_1 = require("./lib/anomaly-detector");
42
+ const lifecycle_hooks_1 = require("./lib/lifecycle-hooks");
43
+ const task_decomposer_1 = require("./lib/task-decomposer");
44
+ const orchestrator_types_1 = require("./lib/orchestrator-types");
45
+ const log = logger_1.Logger.create('SwarmOrchestrator');
46
+ // Types, interfaces, CONFIG, and default profiles are now in ./lib/orchestrator-types.ts
47
+ // SharedBlackboard is now in ./lib/shared-blackboard.ts
48
+ // AuthGuardian is now in ./lib/auth-guardian.ts
49
+ // TaskDecomposer is now in ./lib/task-decomposer.ts
50
+ // ============================================================================
51
+ // SWARM ORCHESTRATOR - MAIN SKILL IMPLEMENTATION
52
+ // ============================================================================
53
+ /**
54
+ * The main orchestrator class — coordinates agents, permissions, blackboard,
55
+ * quality gates, and adapter routing in a single entry point.
56
+ *
57
+ * Implements the OpenClaw skill interface for backward compatibility and
58
+ * can also be used standalone via {@link createSwarmOrchestrator}.
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * import { createSwarmOrchestrator, LangChainAdapter } from 'network-ai';
63
+ *
64
+ * const orchestrator = createSwarmOrchestrator({
65
+ * adapters: [{ adapter: new LangChainAdapter() }],
66
+ * trustLevels: [{ agentId: 'my-agent', trustLevel: 0.8 }],
67
+ * });
68
+ *
69
+ * const result = await orchestrator.execute('delegate_task', {
70
+ * targetAgent: 'my-agent',
71
+ * taskPayload: { instruction: 'Summarize the quarterly report' },
72
+ * }, { agentId: 'orchestrator' });
73
+ * ```
74
+ */
75
+ class SwarmOrchestrator {
76
+ name = 'SwarmOrchestrator';
77
+ version = '3.1.0';
78
+ blackboard;
79
+ authGuardian;
80
+ taskDecomposer;
81
+ agentRegistry = new Map();
82
+ gateway;
83
+ qualityGate;
84
+ injectionShield;
85
+ tracer;
86
+ eventBus;
87
+ conversationLog;
88
+ otel;
89
+ metrics;
90
+ heatmap;
91
+ anomalyDetector;
92
+ lifecycleHooks;
93
+ /** Named isolated blackboards, keyed by board name */
94
+ namedBlackboards = new Map();
95
+ /** Root workspace path -- used as the parent for named board subdirectories */
96
+ _workspacePath;
97
+ /** The adapter registry -- routes requests to the right agent framework */
98
+ adapters;
99
+ constructor(workspacePath = process.cwd(), adapterRegistry, options) {
100
+ if (workspacePath !== undefined && typeof workspacePath !== 'string') {
101
+ throw new errors_1.ValidationError('workspacePath must be a string');
102
+ }
103
+ if (workspacePath !== undefined && workspacePath.trim() === '') {
104
+ throw new errors_1.ValidationError('workspacePath must not be empty');
105
+ }
106
+ this._workspacePath = workspacePath;
107
+ this.blackboard = new shared_blackboard_1.SharedBlackboard(workspacePath);
108
+ this.authGuardian = new auth_guardian_1.AuthGuardian({
109
+ trustLevels: options?.trustLevels,
110
+ resourceProfiles: options?.resourceProfiles,
111
+ });
112
+ this.adapters = adapterRegistry ?? new adapter_registry_1.AdapterRegistry();
113
+ this.taskDecomposer = new task_decomposer_1.TaskDecomposer(this.blackboard, this.authGuardian, this.adapters);
114
+ this.gateway = new security_1.SecureSwarmGateway();
115
+ this.qualityGate = new blackboard_validator_1.QualityGateAgent({
116
+ validationConfig: options?.validationConfig,
117
+ qualityThreshold: options?.qualityThreshold,
118
+ aiReviewCallback: options?.aiReviewCallback,
119
+ });
120
+ this.injectionShield = new security_1.PromptInjectionShield();
121
+ this.tracer = new explainability_1.ExplainabilityTracer();
122
+ this.eventBus = new event_bus_1.OrchestratorEventBus({ snapshotInterval: 100 });
123
+ this.conversationLog = new agent_conversation_1.AgentConversationLog();
124
+ this.otel = new otel_bridge_1.OTelBridge();
125
+ this.metrics = (0, metrics_1.createOrchestratorMetrics)();
126
+ this.heatmap = new cost_heatmap_1.CostHeatmap();
127
+ this.anomalyDetector = new anomaly_detector_1.AnomalyDetector();
128
+ this.lifecycleHooks = new lifecycle_hooks_1.OrchestratorLifecycleHooks();
129
+ // Register the orchestrator agent on the blackboard with full access
130
+ this.blackboard.registerAgent('orchestrator', 'system-orchestrator-token', ['*']);
131
+ }
132
+ /**
133
+ * Add an agent framework adapter (LangChain, AutoGen, CrewAI, MCP, custom, etc.)
134
+ * This is the plug-and-play entry point.
135
+ */
136
+ async addAdapter(adapter, config = {}) {
137
+ if (!adapter || typeof adapter !== 'object') {
138
+ throw new errors_1.ValidationError('adapter is required and must be an object');
139
+ }
140
+ if (typeof adapter.name !== 'string' || adapter.name.trim() === '') {
141
+ throw new errors_1.ValidationError('adapter.name must be a non-empty string');
142
+ }
143
+ await this.adapters.addAdapter(adapter, config);
144
+ }
145
+ /**
146
+ * Main entry point for the skill.
147
+ * Now integrates SecureSwarmGateway: every request flows through
148
+ * input sanitization, rate limiting, and agent ID validation.
149
+ */
150
+ async execute(action, params, context) {
151
+ if (!action || typeof action !== 'string') {
152
+ return {
153
+ success: false,
154
+ error: {
155
+ code: 'INVALID_PARAMS',
156
+ message: 'action is required and must be a non-empty string',
157
+ recoverable: false,
158
+ },
159
+ };
160
+ }
161
+ if (!params || typeof params !== 'object' || Array.isArray(params)) {
162
+ return {
163
+ success: false,
164
+ error: {
165
+ code: 'INVALID_PARAMS',
166
+ message: 'params is required and must be a plain object',
167
+ recoverable: false,
168
+ },
169
+ };
170
+ }
171
+ if (!context || typeof context !== 'object' || !context.agentId || typeof context.agentId !== 'string') {
172
+ return {
173
+ success: false,
174
+ error: {
175
+ code: 'INVALID_PARAMS',
176
+ message: 'context is required and must include a non-empty agentId string',
177
+ recoverable: false,
178
+ },
179
+ };
180
+ }
181
+ const traceId = (0, crypto_1.randomUUID)();
182
+ // P0: Route through SecureSwarmGateway -- sanitization + rate limiting
183
+ const gatewayResult = await this.gateway.handleSecureRequest(context.agentId, action, params);
184
+ if (!gatewayResult.allowed) {
185
+ return {
186
+ success: false,
187
+ error: {
188
+ code: 'GATEWAY_DENIED',
189
+ message: `Security gateway denied request: ${gatewayResult.reason}`,
190
+ recoverable: true,
191
+ suggestedAction: 'Check agent ID, rate limits, or input format',
192
+ },
193
+ };
194
+ }
195
+ // Use sanitized params from gateway
196
+ const safeParams = gatewayResult.sanitizedParams ?? params;
197
+ if (orchestrator_types_1.CONFIG.enableTracing) {
198
+ try {
199
+ this.blackboard.write(`trace:${traceId}`, {
200
+ action,
201
+ startTime: new Date().toISOString(),
202
+ }, context.agentId, undefined, 'system-orchestrator-token');
203
+ }
204
+ catch {
205
+ // Non-fatal -- tracing failure shouldn't block execution
206
+ }
207
+ }
208
+ try {
209
+ switch (action) {
210
+ case 'delegate_task':
211
+ return await this.delegateTask(safeParams, context);
212
+ case 'query_swarm_state':
213
+ return await this.querySwarmState(safeParams, context);
214
+ case 'spawn_parallel_agents':
215
+ return await this.spawnParallelAgents(safeParams, context);
216
+ case 'request_permission':
217
+ return await this.handlePermissionRequest(safeParams, context);
218
+ case 'update_blackboard':
219
+ return await this.handleBlackboardUpdate(safeParams, context);
220
+ case 'quality_gate_status':
221
+ return this.handleQualityGateStatus();
222
+ case 'review_quarantine':
223
+ return this.handleQuarantineReview(safeParams);
224
+ default:
225
+ return {
226
+ success: false,
227
+ error: {
228
+ code: 'UNKNOWN_ACTION',
229
+ message: `Unknown action: ${action}`,
230
+ recoverable: false,
231
+ },
232
+ };
233
+ }
234
+ }
235
+ catch (error) {
236
+ return {
237
+ success: false,
238
+ error: {
239
+ code: 'EXECUTION_ERROR',
240
+ message: error instanceof Error ? error.message : 'Unknown error',
241
+ recoverable: true,
242
+ trace: { traceId, action },
243
+ },
244
+ };
245
+ }
246
+ }
247
+ // -------------------------------------------------------------------------
248
+ // CAPABILITY: delegate_task
249
+ // -------------------------------------------------------------------------
250
+ async delegateTask(params, context) {
251
+ const targetAgent = params.targetAgent;
252
+ const taskPayload = params.taskPayload;
253
+ const priority = params.priority ?? 'normal';
254
+ const timeout = params.timeout ?? orchestrator_types_1.CONFIG.defaultTimeout;
255
+ const requiresAuth = params.requiresAuth ?? false;
256
+ const resourceType = params.resourceType ?? 'EXTERNAL_SERVICE';
257
+ const delegationTraceId = this.tracer.record({
258
+ source: 'SwarmOrchestrator',
259
+ decision: 'delegation_start',
260
+ outcome: 'initiated',
261
+ agentId: context.agentId,
262
+ factors: [
263
+ { name: 'targetAgent', value: targetAgent },
264
+ { name: 'priority', value: priority },
265
+ { name: 'requiresAuth', value: requiresAuth },
266
+ { name: 'timeout', value: timeout },
267
+ ],
268
+ });
269
+ this.eventBus.publish('orchestrator', 'delegation_start', 'info', {
270
+ targetAgent, priority, requiresAuth, timeout, traceId: delegationTraceId,
271
+ }, context.agentId, delegationTraceId);
272
+ this.metrics.delegationsTotal.inc({ agent: targetAgent });
273
+ const delegationStartMs = Date.now();
274
+ // Orchestrator-level beforeSpawn hook
275
+ const spawnCtx = await this.lifecycleHooks.runBeforeSpawn({
276
+ agentId: targetAgent,
277
+ instruction: taskPayload.instruction,
278
+ priority,
279
+ requiresAuth,
280
+ metadata: { timeout, resourceType },
281
+ aborted: false,
282
+ });
283
+ if (spawnCtx.aborted) {
284
+ return {
285
+ success: false,
286
+ error: {
287
+ code: 'LIFECYCLE_ABORTED',
288
+ message: spawnCtx.abortReason ?? 'Aborted by beforeSpawn hook',
289
+ recoverable: true,
290
+ },
291
+ };
292
+ }
293
+ // Check permission wall if required -- now returns bound restrictions
294
+ let grantToken = null;
295
+ if (requiresAuth) {
296
+ const authResult = await this.authGuardian.requestPermission(context.agentId, resourceType, `Delegating task to ${targetAgent}: ${taskPayload.instruction}`, 'delegate');
297
+ if (!authResult.granted) {
298
+ this.tracer.record({
299
+ source: 'AuthGuardian', decision: 'permission_check', outcome: 'denied',
300
+ agentId: context.agentId, parentTraceId: delegationTraceId,
301
+ factors: [{ name: 'reason', value: authResult.reason }],
302
+ });
303
+ this.eventBus.publish('auth', 'permission_denied', 'warn', {
304
+ reason: authResult.reason, resourceType,
305
+ }, context.agentId, delegationTraceId);
306
+ this.metrics.permissionDenials.inc({ agent: context.agentId });
307
+ return {
308
+ success: false,
309
+ error: {
310
+ code: 'AUTH_DENIED',
311
+ message: `Permission denied: ${authResult.reason}`,
312
+ recoverable: true,
313
+ suggestedAction: 'Provide more specific justification or narrow scope',
314
+ },
315
+ };
316
+ }
317
+ grantToken = authResult.grantToken;
318
+ // Enforce restrictions at point of use
319
+ if (grantToken) {
320
+ const restrictionViolation = this.authGuardian.enforceRestrictions(grantToken, {
321
+ type: 'execute',
322
+ });
323
+ if (restrictionViolation) {
324
+ return {
325
+ success: false,
326
+ error: {
327
+ code: 'RESTRICTION_VIOLATED',
328
+ message: restrictionViolation,
329
+ recoverable: true,
330
+ suggestedAction: 'Request a grant with broader scope',
331
+ },
332
+ };
333
+ }
334
+ }
335
+ }
336
+ // Check blackboard for existing work
337
+ const cacheKey = `task:${targetAgent}:${JSON.stringify(taskPayload).slice(0, 50)}`;
338
+ const existingWork = this.blackboard.read(cacheKey);
339
+ if (existingWork) {
340
+ return {
341
+ success: true,
342
+ data: {
343
+ taskId: 'cached',
344
+ status: 'completed',
345
+ result: existingWork.value,
346
+ agentTrace: ['blackboard-cache'],
347
+ fromCache: true,
348
+ },
349
+ };
350
+ }
351
+ // Build handoff message
352
+ const handoff = {
353
+ handoffId: (0, crypto_1.randomUUID)(),
354
+ sourceAgent: context.agentId,
355
+ targetAgent,
356
+ taskType: 'delegate',
357
+ payload: taskPayload,
358
+ metadata: {
359
+ priority: this.priorityToNumber(priority),
360
+ deadline: Date.now() + timeout,
361
+ parentTaskId: context.taskId ?? null,
362
+ },
363
+ };
364
+ // Execute via adapter registry (routes to the right framework)
365
+ try {
366
+ // Sanitize instruction before sending to adapter
367
+ let sanitizedInstruction = taskPayload.instruction;
368
+ try {
369
+ sanitizedInstruction = security_1.InputSanitizer.sanitizeString(taskPayload.instruction, 10000);
370
+ }
371
+ catch { /* use original if sanitization fails */ }
372
+ // Prompt injection detection
373
+ const injectionResult = this.injectionShield.analyze(sanitizedInstruction);
374
+ if (!injectionResult.safe) {
375
+ this.tracer.record({
376
+ source: 'PromptInjectionShield', decision: 'injection_scan', outcome: 'blocked',
377
+ agentId: context.agentId, parentTraceId: delegationTraceId,
378
+ factors: [
379
+ { name: 'score', value: injectionResult.score },
380
+ { name: 'matchedRules', value: injectionResult.matchedRules },
381
+ ],
382
+ });
383
+ this.eventBus.publish('injection', 'blocked', 'error', {
384
+ score: injectionResult.score, rules: injectionResult.matchedRules,
385
+ }, context.agentId, delegationTraceId);
386
+ this.metrics.injectionBlocks.inc({ agent: context.agentId });
387
+ return {
388
+ success: false,
389
+ error: {
390
+ code: 'PROMPT_INJECTION_BLOCKED',
391
+ message: `Prompt injection detected (score=${injectionResult.score.toFixed(2)}, rules: ${injectionResult.matchedRules.join(', ')})`,
392
+ recoverable: true,
393
+ suggestedAction: 'Rephrase the instruction to remove injection patterns',
394
+ },
395
+ };
396
+ }
397
+ // P1: Namespace-scoped snapshot -- target agent only sees keys it's allowed to see
398
+ const scopedSnapshot = this.blackboard.getScopedSnapshot(targetAgent);
399
+ const agentPayload = {
400
+ action: 'execute',
401
+ params: {},
402
+ handoff: {
403
+ handoffId: handoff.handoffId,
404
+ sourceAgent: handoff.sourceAgent,
405
+ targetAgent: handoff.targetAgent,
406
+ taskType: handoff.taskType,
407
+ instruction: sanitizedInstruction,
408
+ context: taskPayload.context,
409
+ constraints: taskPayload.constraints,
410
+ expectedOutput: taskPayload.expectedOutput,
411
+ metadata: handoff.metadata,
412
+ },
413
+ blackboardSnapshot: scopedSnapshot,
414
+ };
415
+ const agentContext = {
416
+ agentId: context.agentId,
417
+ taskId: context.taskId,
418
+ sessionId: context.sessionId,
419
+ };
420
+ const otelSpan = this.otel.startDelegation(context.agentId, targetAgent, handoff.handoffId);
421
+ const result = await Promise.race([
422
+ this.adapters.executeAgent(targetAgent, agentPayload, agentContext),
423
+ this.timeoutPromise(timeout),
424
+ ]);
425
+ otelSpan.setAttribute('agent.result.success', result.success);
426
+ otelSpan.end();
427
+ // P1: Sanitize adapter output before caching
428
+ let sanitizedResult = result;
429
+ try {
430
+ sanitizedResult = security_1.InputSanitizer.sanitizeObject(result);
431
+ }
432
+ catch { /* use raw if sanitization fails */ }
433
+ // Quality gate: validate result before committing to blackboard
434
+ const gateResult = await this.qualityGate.gate(cacheKey, sanitizedResult, targetAgent, {
435
+ taskInstruction: taskPayload.instruction,
436
+ expectedOutput: taskPayload.expectedOutput,
437
+ });
438
+ this.tracer.record({
439
+ source: 'QualityGateAgent', decision: 'quality_gate', outcome: gateResult.decision,
440
+ agentId: targetAgent, parentTraceId: delegationTraceId,
441
+ factors: [
442
+ { name: 'score', value: gateResult.validation.score },
443
+ { name: 'issueCount', value: gateResult.validation.issues.length },
444
+ ],
445
+ });
446
+ this.eventBus.publish('quality', gateResult.decision, gateResult.decision === 'reject' ? 'warn' : 'info', {
447
+ score: gateResult.validation.score, issueCount: gateResult.validation.issues.length,
448
+ }, targetAgent, delegationTraceId);
449
+ if (gateResult.decision === 'reject') {
450
+ this.metrics.qualityRejections.inc({ agent: targetAgent });
451
+ return {
452
+ success: false,
453
+ error: {
454
+ code: 'QUALITY_REJECTED',
455
+ message: `Result from ${targetAgent} failed quality validation: ${gateResult.validation.issues.filter(i => i.severity === 'error').map(i => i.message).join('; ')}`,
456
+ recoverable: gateResult.validation.recoverable,
457
+ suggestedAction: gateResult.validation.issues.find(i => i.suggestion)?.suggestion,
458
+ },
459
+ };
460
+ }
461
+ if (gateResult.decision === 'quarantine') {
462
+ // Still return the result but flag it
463
+ return {
464
+ success: true,
465
+ data: {
466
+ taskId: handoff.handoffId,
467
+ status: 'quarantined',
468
+ result: sanitizedResult,
469
+ agentTrace: [context.agentId, targetAgent],
470
+ qualityGate: {
471
+ decision: 'quarantine',
472
+ quarantineKey: gateResult.quarantineKey,
473
+ score: gateResult.validation.score,
474
+ issues: gateResult.validation.issues,
475
+ reviewNotes: gateResult.reviewNotes,
476
+ },
477
+ },
478
+ };
479
+ }
480
+ // Approved -- cache result
481
+ this.blackboard.write(cacheKey, sanitizedResult, context.agentId, 1800, 'system-orchestrator-token'); // 30 min TTL
482
+ this.metrics.delegationDurationMs.observe({ agent: targetAgent }, Date.now() - delegationStartMs);
483
+ this.heatmap.record(targetAgent, {
484
+ durationMs: Date.now() - delegationStartMs,
485
+ inputTokens: 0, outputTokens: 0, success: true,
486
+ });
487
+ this.anomalyDetector.observe(targetAgent, {
488
+ latencyMs: Date.now() - delegationStartMs, tokens: 0, success: true,
489
+ });
490
+ const resultMeta = sanitizedResult?.metadata;
491
+ this.conversationLog.recordTurn(targetAgent, {
492
+ instruction: taskPayload.instruction,
493
+ result: JSON.stringify(sanitizedResult).slice(0, 2000),
494
+ success: true,
495
+ tokensUsed: resultMeta?.tokensUsed,
496
+ executionTimeMs: resultMeta?.executionTimeMs,
497
+ adapter: resultMeta?.adapter,
498
+ qualityDecision: gateResult.decision,
499
+ correlationId: delegationTraceId,
500
+ sourceAgent: context.agentId,
501
+ });
502
+ // Orchestrator-level afterComplete hook
503
+ await this.lifecycleHooks.runAfterComplete({
504
+ agentId: targetAgent,
505
+ instruction: taskPayload.instruction,
506
+ result: sanitizedResult,
507
+ durationMs: Date.now() - delegationStartMs,
508
+ tokensUsed: resultMeta?.tokensUsed ?? 0,
509
+ metadata: { qualityDecision: gateResult.decision },
510
+ });
511
+ return {
512
+ success: true,
513
+ data: {
514
+ taskId: handoff.handoffId,
515
+ status: 'completed',
516
+ result: sanitizedResult,
517
+ agentTrace: [context.agentId, targetAgent],
518
+ qualityGate: {
519
+ decision: 'approve',
520
+ score: gateResult.validation.score,
521
+ },
522
+ },
523
+ };
524
+ }
525
+ catch (error) {
526
+ this.metrics.delegationErrors.inc({ agent: targetAgent });
527
+ this.conversationLog.recordTurn(targetAgent, {
528
+ instruction: taskPayload.instruction,
529
+ success: false,
530
+ errorCode: 'DELEGATION_FAILED',
531
+ correlationId: delegationTraceId,
532
+ sourceAgent: context.agentId,
533
+ });
534
+ this.eventBus.publish('orchestrator', 'delegation_failed', 'error', {
535
+ error: error instanceof Error ? error.message : 'unknown',
536
+ }, targetAgent, delegationTraceId);
537
+ // Orchestrator-level onFailure hook
538
+ const failCtx = await this.lifecycleHooks.runOnFailure({
539
+ agentId: targetAgent,
540
+ instruction: taskPayload.instruction,
541
+ error: error instanceof Error ? error : String(error),
542
+ durationMs: Date.now() - delegationStartMs,
543
+ metadata: {},
544
+ suppress: false,
545
+ });
546
+ if (failCtx.suppress) {
547
+ return { success: true, data: { status: 'suppressed', agentTrace: [context.agentId, targetAgent] } };
548
+ }
549
+ return {
550
+ success: false,
551
+ error: {
552
+ code: 'DELEGATION_FAILED',
553
+ message: error instanceof Error ? error.message : 'Task delegation failed',
554
+ recoverable: true,
555
+ },
556
+ };
557
+ }
558
+ }
559
+ // -------------------------------------------------------------------------
560
+ // CAPABILITY: query_swarm_state
561
+ // -------------------------------------------------------------------------
562
+ async querySwarmState(params, context) {
563
+ const scope = params.scope ?? 'all';
564
+ const agentFilter = params.agentFilter;
565
+ const _includeHistory = params.includeHistory ?? false;
566
+ const state = {
567
+ timestamp: new Date().toISOString(),
568
+ };
569
+ if (scope === 'all' || scope === 'agents') {
570
+ let agents = Array.from(this.agentRegistry.values());
571
+ if (agentFilter) {
572
+ agents = agents.filter(a => agentFilter.includes(a.agentId));
573
+ }
574
+ state.activeAgents = agents;
575
+ }
576
+ if (scope === 'all' || scope === 'blackboard') {
577
+ // P1: Namespace-scoped -- agent only sees keys it's allowed to access
578
+ state.blackboardSnapshot = this.blackboard.getScopedSnapshot(context.agentId);
579
+ }
580
+ if (scope === 'all' || scope === 'permissions') {
581
+ state.permissionGrants = this.authGuardian.getActiveGrants();
582
+ }
583
+ if (scope === 'all' || scope === 'tasks') {
584
+ // Extract tasks from scoped blackboard
585
+ const snapshot = this.blackboard.getScopedSnapshot(context.agentId);
586
+ state.pendingTasks = Object.entries(snapshot)
587
+ .filter(([key]) => key.startsWith('task:'))
588
+ .map(([, entry]) => ({
589
+ taskId: entry.key,
590
+ agentId: entry.sourceAgent,
591
+ status: 'in_progress',
592
+ startedAt: entry.timestamp,
593
+ description: String(entry.value),
594
+ }));
595
+ }
596
+ return {
597
+ success: true,
598
+ data: state,
599
+ };
600
+ }
601
+ // -------------------------------------------------------------------------
602
+ // CAPABILITY: spawn_parallel_agents
603
+ // -------------------------------------------------------------------------
604
+ async spawnParallelAgents(params, context) {
605
+ const tasks = params.tasks;
606
+ const synthesisStrategy = params.synthesisStrategy ?? 'merge';
607
+ if (!tasks || !Array.isArray(tasks) || tasks.length === 0) {
608
+ return {
609
+ success: false,
610
+ error: {
611
+ code: 'INVALID_PARAMS',
612
+ message: 'Tasks array is required and must not be empty',
613
+ recoverable: false,
614
+ },
615
+ };
616
+ }
617
+ try {
618
+ const result = await this.taskDecomposer.executeParallel(tasks, synthesisStrategy, context);
619
+ return {
620
+ success: true,
621
+ data: result,
622
+ };
623
+ }
624
+ catch (error) {
625
+ return {
626
+ success: false,
627
+ error: {
628
+ code: 'PARALLEL_EXECUTION_FAILED',
629
+ message: error instanceof Error ? error.message : 'Parallel execution failed',
630
+ recoverable: true,
631
+ },
632
+ };
633
+ }
634
+ }
635
+ // -------------------------------------------------------------------------
636
+ // CAPABILITY: request_permission
637
+ // -------------------------------------------------------------------------
638
+ async handlePermissionRequest(params, context) {
639
+ const resourceType = params.resourceType;
640
+ const justification = params.justification;
641
+ const scope = params.scope;
642
+ if (!resourceType || !justification) {
643
+ return {
644
+ success: false,
645
+ error: {
646
+ code: 'INVALID_PARAMS',
647
+ message: 'resourceType and justification are required',
648
+ recoverable: false,
649
+ },
650
+ };
651
+ }
652
+ const grant = await this.authGuardian.requestPermission(context.agentId, resourceType, justification, scope);
653
+ return {
654
+ success: grant.granted,
655
+ data: grant,
656
+ };
657
+ }
658
+ // -------------------------------------------------------------------------
659
+ // CAPABILITY: update_blackboard
660
+ // -------------------------------------------------------------------------
661
+ async handleBlackboardUpdate(params, context) {
662
+ const key = params.key;
663
+ const value = params.value;
664
+ const ttl = params.ttl;
665
+ if (!key || value === undefined) {
666
+ return {
667
+ success: false,
668
+ error: {
669
+ code: 'INVALID_PARAMS',
670
+ message: 'key and value are required',
671
+ recoverable: false,
672
+ },
673
+ };
674
+ }
675
+ const previousValue = this.blackboard.read(key)?.value ?? null;
676
+ // Quality gate: validate before writing to blackboard
677
+ const gateResult = await this.qualityGate.gate(key, value, context.agentId);
678
+ if (gateResult.decision === 'reject') {
679
+ return {
680
+ success: false,
681
+ error: {
682
+ code: 'QUALITY_REJECTED',
683
+ message: `Blackboard write rejected: ${gateResult.validation.issues.filter(i => i.severity === 'error').map(i => i.message).join('; ')}`,
684
+ recoverable: gateResult.validation.recoverable,
685
+ suggestedAction: gateResult.validation.issues.find(i => i.suggestion)?.suggestion,
686
+ },
687
+ };
688
+ }
689
+ if (gateResult.decision === 'quarantine') {
690
+ return {
691
+ success: true,
692
+ data: {
693
+ success: true,
694
+ quarantined: true,
695
+ quarantineKey: gateResult.quarantineKey,
696
+ qualityScore: gateResult.validation.score,
697
+ issues: gateResult.validation.issues,
698
+ previousValue,
699
+ },
700
+ };
701
+ }
702
+ this.blackboard.write(key, value, context.agentId, ttl, 'system-orchestrator-token');
703
+ return {
704
+ success: true,
705
+ data: {
706
+ success: true,
707
+ previousValue,
708
+ qualityScore: gateResult.validation.score,
709
+ },
710
+ };
711
+ }
712
+ // -------------------------------------------------------------------------
713
+ // QUALITY GATE MANAGEMENT
714
+ // -------------------------------------------------------------------------
715
+ /** Returns quality gate metrics and quarantined entries */
716
+ handleQualityGateStatus() {
717
+ return {
718
+ success: true,
719
+ data: {
720
+ metrics: this.qualityGate.getMetrics(),
721
+ quarantined: this.qualityGate.getQuarantined(),
722
+ },
723
+ };
724
+ }
725
+ /** Approve or reject a quarantined entry */
726
+ handleQuarantineReview(params) {
727
+ const quarantineId = params.quarantineId;
728
+ const decision = params.decision;
729
+ if (!quarantineId || !decision) {
730
+ return {
731
+ success: false,
732
+ error: {
733
+ code: 'INVALID_PARAMS',
734
+ message: 'quarantineId and decision ("approve" or "reject") are required',
735
+ recoverable: false,
736
+ },
737
+ };
738
+ }
739
+ let entry;
740
+ if (decision === 'approve') {
741
+ entry = this.qualityGate.approveQuarantined(quarantineId);
742
+ if (entry) {
743
+ // Write the approved entry to the blackboard
744
+ this.blackboard.write(`approved:${quarantineId}`, entry, 'orchestrator', undefined, 'system-orchestrator-token');
745
+ }
746
+ }
747
+ else {
748
+ entry = this.qualityGate.rejectQuarantined(quarantineId);
749
+ }
750
+ return {
751
+ success: !!entry,
752
+ data: entry ? { quarantineId, decision, resolved: true } : undefined,
753
+ error: entry ? undefined : {
754
+ code: 'NOT_FOUND',
755
+ message: `Quarantine entry ${quarantineId} not found`,
756
+ recoverable: false,
757
+ },
758
+ };
759
+ }
760
+ /** Expose the quality gate for external configuration */
761
+ getQualityGate() {
762
+ return this.qualityGate;
763
+ }
764
+ // -------------------------------------------------------------------------
765
+ // NAMED MULTI-BLACKBOARD API (Phase 5)
766
+ // -------------------------------------------------------------------------
767
+ /**
768
+ * Get or create a named, isolated blackboard managed by this orchestrator.
769
+ *
770
+ * Each named board is stored in its own subdirectory:
771
+ * `<workspacePath>/boards/<name>/`
772
+ *
773
+ * Calling `getBlackboard(name)` a second time returns the same instance --
774
+ * no duplicate boards are created.
775
+ *
776
+ * All existing APIs (`orchestrator.blackboard`, adapters, AuthGuardian, etc.)
777
+ * are completely unaffected. This is a purely additive method.
778
+ *
779
+ * @example
780
+ * ```typescript
781
+ * const board = orchestrator.getBlackboard('project-alpha');
782
+ * board.registerAgent('analyst', 'tok-1', ['analysis:']);
783
+ * board.write('analysis:result', { score: 0.9 }, 'analyst', 3600, 'tok-1');
784
+ * const entry = board.read('analysis:result');
785
+ * ```
786
+ *
787
+ * @param name - Board name: alphanumeric, hyphens and underscores only
788
+ * @param options - Optional creation options (ignored on subsequent calls)
789
+ * @returns The isolated `SharedBlackboard` instance for this name
790
+ * @throws {@link ValidationError} if `name` is empty or contains invalid characters
791
+ */
792
+ getBlackboard(name, options) {
793
+ if (!name || typeof name !== 'string' || name.trim() === '') {
794
+ throw new errors_1.ValidationError('name must be a non-empty string');
795
+ }
796
+ if (!/^[a-zA-Z0-9_-]+$/.test(name)) {
797
+ throw new errors_1.ValidationError('name must contain only alphanumeric characters, hyphens, or underscores');
798
+ }
799
+ // Return existing board (idempotent)
800
+ if (this.namedBlackboards.has(name)) {
801
+ return this.namedBlackboards.get(name);
802
+ }
803
+ let board;
804
+ let selectedBackend;
805
+ if (options?.backend) {
806
+ // Custom backend — no disk directory needed
807
+ selectedBackend = options.backend;
808
+ log.info('Named blackboard created (custom backend)', { name });
809
+ }
810
+ else {
811
+ // Default: file backend persisted to <workspacePath>/boards/<name>/
812
+ const boardPath = (0, path_1.join)(this._workspacePath, 'boards', name);
813
+ (0, fs_1.mkdirSync)(boardPath, { recursive: true });
814
+ selectedBackend = new blackboard_backend_1.FileBackend(boardPath);
815
+ log.info('Named blackboard created', { name, boardPath: (0, path_1.join)(this._workspacePath, 'boards', name) });
816
+ }
817
+ // Auto-wrap with ConsistentBackend when a non-default consistency level is requested
818
+ if (options?.consistency && options.consistency !== 'eventual') {
819
+ selectedBackend = new consistency_1.ConsistentBackend(selectedBackend, options.consistency);
820
+ log.info('Named blackboard wrapped with ConsistentBackend', { name, consistency: options.consistency });
821
+ }
822
+ board = new shared_blackboard_1.SharedBlackboard(selectedBackend);
823
+ // Register the orchestrator agent on this board
824
+ board.registerAgent('orchestrator', 'system-orchestrator-token', options?.allowedNamespaces ?? ['*']);
825
+ this.namedBlackboards.set(name, board);
826
+ return board;
827
+ }
828
+ /**
829
+ * Returns the names of all currently active named blackboards.
830
+ *
831
+ * @example
832
+ * ```typescript
833
+ * orchestrator.getBlackboard('alpha');
834
+ * orchestrator.getBlackboard('beta');
835
+ * orchestrator.listBlackboards(); // ['alpha', 'beta']
836
+ * ```
837
+ */
838
+ listBlackboards() {
839
+ return Array.from(this.namedBlackboards.keys());
840
+ }
841
+ /**
842
+ * Returns `true` if a named blackboard with the given name is currently active.
843
+ *
844
+ * @param name - The board name to check
845
+ */
846
+ hasBlackboard(name) {
847
+ if (!name || typeof name !== 'string')
848
+ return false;
849
+ return this.namedBlackboards.has(name);
850
+ }
851
+ /**
852
+ * Removes a named blackboard from the in-memory registry.
853
+ *
854
+ * **On-disk data is NOT deleted** -- call `getBlackboard(name)` again to
855
+ * re-attach to the same persistent board at a later point.
856
+ *
857
+ * @param name - The board name to remove
858
+ * @returns `true` if the board existed and was removed, `false` otherwise
859
+ *
860
+ * @example
861
+ * ```typescript
862
+ * orchestrator.destroyBlackboard('project-alpha'); // true
863
+ * orchestrator.hasBlackboard('project-alpha'); // false
864
+ * ```
865
+ */
866
+ destroyBlackboard(name) {
867
+ if (!name || typeof name !== 'string')
868
+ return false;
869
+ const existed = this.namedBlackboards.has(name);
870
+ this.namedBlackboards.delete(name);
871
+ if (existed)
872
+ log.info('Named blackboard removed from registry', { name });
873
+ return existed;
874
+ }
875
+ // -------------------------------------------------------------------------
876
+ // UTILITY METHODS
877
+ // -------------------------------------------------------------------------
878
+ priorityToNumber(priority) {
879
+ const map = {
880
+ low: 0,
881
+ normal: 1,
882
+ high: 2,
883
+ critical: 3,
884
+ };
885
+ return map[priority] ?? 1;
886
+ }
887
+ timeoutPromise(ms) {
888
+ return new Promise((_, reject) => {
889
+ setTimeout(() => reject(new errors_1.TimeoutError(ms)), ms);
890
+ });
891
+ }
892
+ /**
893
+ * Register an agent with the swarm
894
+ */
895
+ registerAgent(agentId, status = 'available') {
896
+ if (!agentId || typeof agentId !== 'string' || agentId.trim() === '') {
897
+ throw new errors_1.ValidationError('agentId must be a non-empty string');
898
+ }
899
+ const validStatuses = ['available', 'busy', 'waiting_auth', 'offline'];
900
+ if (!validStatuses.includes(status)) {
901
+ throw new errors_1.ValidationError(`status must be one of: ${validStatuses.join(', ')}`);
902
+ }
903
+ this.agentRegistry.set(agentId, {
904
+ agentId,
905
+ status,
906
+ currentTask: null,
907
+ lastHeartbeat: new Date().toISOString(),
908
+ });
909
+ }
910
+ /**
911
+ * Update agent status
912
+ */
913
+ updateAgentStatus(agentId, status, currentTask) {
914
+ if (!agentId || typeof agentId !== 'string' || agentId.trim() === '') {
915
+ throw new errors_1.ValidationError('agentId must be a non-empty string');
916
+ }
917
+ const existing = this.agentRegistry.get(agentId);
918
+ if (existing) {
919
+ existing.status = status;
920
+ existing.currentTask = currentTask ?? null;
921
+ existing.lastHeartbeat = new Date().toISOString();
922
+ }
923
+ }
924
+ }
925
+ exports.SwarmOrchestrator = SwarmOrchestrator;
926
+ // ============================================================================
927
+ // EXPORTS & MODULE INITIALIZATION
928
+ // ============================================================================
929
+ // Default export for OpenClaw skill loader (backward compatible)
930
+ exports.default = SwarmOrchestrator;
931
+ // Named exports for direct usage (re-exported from extracted modules)
932
+ var shared_blackboard_2 = require("./lib/shared-blackboard");
933
+ Object.defineProperty(exports, "SharedBlackboard", { enumerable: true, get: function () { return shared_blackboard_2.SharedBlackboard; } });
934
+ var auth_guardian_2 = require("./lib/auth-guardian");
935
+ Object.defineProperty(exports, "AuthGuardian", { enumerable: true, get: function () { return auth_guardian_2.AuthGuardian; } });
936
+ var task_decomposer_2 = require("./lib/task-decomposer");
937
+ Object.defineProperty(exports, "TaskDecomposer", { enumerable: true, get: function () { return task_decomposer_2.TaskDecomposer; } });
938
+ var explainability_2 = require("./lib/explainability");
939
+ Object.defineProperty(exports, "ExplainabilityTracer", { enumerable: true, get: function () { return explainability_2.ExplainabilityTracer; } });
940
+ var event_bus_2 = require("./lib/event-bus");
941
+ Object.defineProperty(exports, "OrchestratorEventBus", { enumerable: true, get: function () { return event_bus_2.OrchestratorEventBus; } });
942
+ var agent_conversation_2 = require("./lib/agent-conversation");
943
+ Object.defineProperty(exports, "AgentConversationLog", { enumerable: true, get: function () { return agent_conversation_2.AgentConversationLog; } });
944
+ var otel_bridge_2 = require("./lib/otel-bridge");
945
+ Object.defineProperty(exports, "OTelBridge", { enumerable: true, get: function () { return otel_bridge_2.OTelBridge; } });
946
+ Object.defineProperty(exports, "SpanStatus", { enumerable: true, get: function () { return otel_bridge_2.SpanStatus; } });
947
+ var metrics_2 = require("./lib/metrics");
948
+ Object.defineProperty(exports, "MetricsRegistry", { enumerable: true, get: function () { return metrics_2.MetricsRegistry; } });
949
+ Object.defineProperty(exports, "Counter", { enumerable: true, get: function () { return metrics_2.Counter; } });
950
+ Object.defineProperty(exports, "Gauge", { enumerable: true, get: function () { return metrics_2.Gauge; } });
951
+ Object.defineProperty(exports, "Histogram", { enumerable: true, get: function () { return metrics_2.Histogram; } });
952
+ Object.defineProperty(exports, "createOrchestratorMetrics", { enumerable: true, get: function () { return metrics_2.createOrchestratorMetrics; } });
953
+ var cost_heatmap_2 = require("./lib/cost-heatmap");
954
+ Object.defineProperty(exports, "CostHeatmap", { enumerable: true, get: function () { return cost_heatmap_2.CostHeatmap; } });
955
+ var timeline_scrubber_1 = require("./lib/timeline-scrubber");
956
+ Object.defineProperty(exports, "TimelineScrubber", { enumerable: true, get: function () { return timeline_scrubber_1.TimelineScrubber; } });
957
+ var anomaly_detector_2 = require("./lib/anomaly-detector");
958
+ Object.defineProperty(exports, "AnomalyDetector", { enumerable: true, get: function () { return anomaly_detector_2.AnomalyDetector; } });
959
+ var cost_governor_1 = require("./lib/cost-governor");
960
+ Object.defineProperty(exports, "CostGovernor", { enumerable: true, get: function () { return cost_governor_1.CostGovernor; } });
961
+ Object.defineProperty(exports, "LookupCostModel", { enumerable: true, get: function () { return cost_governor_1.LookupCostModel; } });
962
+ var dry_run_1 = require("./lib/dry-run");
963
+ Object.defineProperty(exports, "DryRunSimulator", { enumerable: true, get: function () { return dry_run_1.DryRunSimulator; } });
964
+ var config_watcher_1 = require("./lib/config-watcher");
965
+ Object.defineProperty(exports, "ConfigWatcher", { enumerable: true, get: function () { return config_watcher_1.ConfigWatcher; } });
966
+ var lifecycle_hooks_2 = require("./lib/lifecycle-hooks");
967
+ Object.defineProperty(exports, "OrchestratorLifecycleHooks", { enumerable: true, get: function () { return lifecycle_hooks_2.OrchestratorLifecycleHooks; } });
968
+ var agent_memory_1 = require("./lib/agent-memory");
969
+ Object.defineProperty(exports, "AgentMemory", { enumerable: true, get: function () { return agent_memory_1.AgentMemory; } });
970
+ Object.defineProperty(exports, "EpisodicMemory", { enumerable: true, get: function () { return agent_memory_1.EpisodicMemory; } });
971
+ Object.defineProperty(exports, "ProceduralMemory", { enumerable: true, get: function () { return agent_memory_1.ProceduralMemory; } });
972
+ Object.defineProperty(exports, "SharedLongTermMemory", { enumerable: true, get: function () { return agent_memory_1.SharedLongTermMemory; } });
973
+ var learning_loop_1 = require("./lib/learning-loop");
974
+ Object.defineProperty(exports, "LearningLoop", { enumerable: true, get: function () { return learning_loop_1.LearningLoop; } });
975
+ var speculative_executor_1 = require("./lib/speculative-executor");
976
+ Object.defineProperty(exports, "SpeculativeExecutor", { enumerable: true, get: function () { return speculative_executor_1.SpeculativeExecutor; } });
977
+ var agent_debate_1 = require("./lib/agent-debate");
978
+ Object.defineProperty(exports, "AgentDebate", { enumerable: true, get: function () { return agent_debate_1.AgentDebate; } });
979
+ // Basis tier — SAP-inspired transport and landscape agents
980
+ var transport_agent_1 = require("./lib/transport-agent");
981
+ Object.defineProperty(exports, "TransportAgent", { enumerable: true, get: function () { return transport_agent_1.TransportAgent; } });
982
+ var landscape_agent_1 = require("./lib/landscape-agent");
983
+ Object.defineProperty(exports, "LandscapeAgent", { enumerable: true, get: function () { return landscape_agent_1.LandscapeAgent; } });
984
+ var approval_inbox_1 = require("./lib/approval-inbox");
985
+ Object.defineProperty(exports, "ApprovalInbox", { enumerable: true, get: function () { return approval_inbox_1.ApprovalInbox; } });
986
+ var adapter_test_harness_1 = require("./lib/adapter-test-harness");
987
+ Object.defineProperty(exports, "createAdapterTestSuite", { enumerable: true, get: function () { return adapter_test_harness_1.createAdapterTestSuite; } });
988
+ var swarm_transport_1 = require("./lib/swarm-transport");
989
+ Object.defineProperty(exports, "SwarmTransportServer", { enumerable: true, get: function () { return swarm_transport_1.SwarmTransportServer; } });
990
+ Object.defineProperty(exports, "SwarmTransportClient", { enumerable: true, get: function () { return swarm_transport_1.SwarmTransportClient; } });
991
+ var job_queue_1 = require("./lib/job-queue");
992
+ Object.defineProperty(exports, "JobQueue", { enumerable: true, get: function () { return job_queue_1.JobQueue; } });
993
+ Object.defineProperty(exports, "FileJobStore", { enumerable: true, get: function () { return job_queue_1.FileJobStore; } });
994
+ var playground_1 = require("./lib/playground");
995
+ Object.defineProperty(exports, "startPlayground", { enumerable: true, get: function () { return playground_1.startPlayground; } });
996
+ Object.defineProperty(exports, "MockAgentRegistry", { enumerable: true, get: function () { return playground_1.MockAgentRegistry; } });
997
+ var goal_dsl_1 = require("./lib/goal-dsl");
998
+ Object.defineProperty(exports, "parseGoal", { enumerable: true, get: function () { return goal_dsl_1.parseGoal; } });
999
+ Object.defineProperty(exports, "goalFromObject", { enumerable: true, get: function () { return goal_dsl_1.goalFromObject; } });
1000
+ Object.defineProperty(exports, "validateGoal", { enumerable: true, get: function () { return goal_dsl_1.validateGoal; } });
1001
+ Object.defineProperty(exports, "compileGoal", { enumerable: true, get: function () { return goal_dsl_1.compileGoal; } });
1002
+ var agent_vcr_1 = require("./lib/agent-vcr");
1003
+ Object.defineProperty(exports, "AgentVCR", { enumerable: true, get: function () { return agent_vcr_1.AgentVCR; } });
1004
+ var coverage_reporter_1 = require("./lib/coverage-reporter");
1005
+ Object.defineProperty(exports, "CoverageReporter", { enumerable: true, get: function () { return coverage_reporter_1.CoverageReporter; } });
1006
+ var comparison_runner_1 = require("./lib/comparison-runner");
1007
+ Object.defineProperty(exports, "ComparisonRunner", { enumerable: true, get: function () { return comparison_runner_1.ComparisonRunner; } });
1008
+ var auth_validator_1 = require("./lib/auth-validator");
1009
+ Object.defineProperty(exports, "NoOpAuthValidator", { enumerable: true, get: function () { return auth_validator_1.NoOpAuthValidator; } });
1010
+ // Quality gate & validation exports
1011
+ var blackboard_validator_2 = require("./lib/blackboard-validator");
1012
+ Object.defineProperty(exports, "BlackboardValidator", { enumerable: true, get: function () { return blackboard_validator_2.BlackboardValidator; } });
1013
+ Object.defineProperty(exports, "QualityGateAgent", { enumerable: true, get: function () { return blackboard_validator_2.QualityGateAgent; } });
1014
+ Object.defineProperty(exports, "validateJsonSchema", { enumerable: true, get: function () { return blackboard_validator_2.validateJsonSchema; } });
1015
+ // Adapter system re-exports for convenience
1016
+ var adapter_registry_2 = require("./adapters/adapter-registry");
1017
+ Object.defineProperty(exports, "AdapterRegistry", { enumerable: true, get: function () { return adapter_registry_2.AdapterRegistry; } });
1018
+ var base_adapter_1 = require("./adapters/base-adapter");
1019
+ Object.defineProperty(exports, "BaseAdapter", { enumerable: true, get: function () { return base_adapter_1.BaseAdapter; } });
1020
+ var openclaw_adapter_1 = require("./adapters/openclaw-adapter");
1021
+ Object.defineProperty(exports, "OpenClawAdapter", { enumerable: true, get: function () { return openclaw_adapter_1.OpenClawAdapter; } });
1022
+ var langchain_adapter_1 = require("./adapters/langchain-adapter");
1023
+ Object.defineProperty(exports, "LangChainAdapter", { enumerable: true, get: function () { return langchain_adapter_1.LangChainAdapter; } });
1024
+ var autogen_adapter_1 = require("./adapters/autogen-adapter");
1025
+ Object.defineProperty(exports, "AutoGenAdapter", { enumerable: true, get: function () { return autogen_adapter_1.AutoGenAdapter; } });
1026
+ var crewai_adapter_1 = require("./adapters/crewai-adapter");
1027
+ Object.defineProperty(exports, "CrewAIAdapter", { enumerable: true, get: function () { return crewai_adapter_1.CrewAIAdapter; } });
1028
+ var mcp_adapter_1 = require("./adapters/mcp-adapter");
1029
+ Object.defineProperty(exports, "MCPAdapter", { enumerable: true, get: function () { return mcp_adapter_1.MCPAdapter; } });
1030
+ var custom_adapter_1 = require("./adapters/custom-adapter");
1031
+ Object.defineProperty(exports, "CustomAdapter", { enumerable: true, get: function () { return custom_adapter_1.CustomAdapter; } });
1032
+ var mcp_tool_consumer_1 = require("./lib/mcp-tool-consumer");
1033
+ Object.defineProperty(exports, "MCPToolConsumer", { enumerable: true, get: function () { return mcp_tool_consumer_1.MCPToolConsumer; } });
1034
+ Object.defineProperty(exports, "StdioClientTransport", { enumerable: true, get: function () { return mcp_tool_consumer_1.StdioClientTransport; } });
1035
+ Object.defineProperty(exports, "HttpClientTransport", { enumerable: true, get: function () { return mcp_tool_consumer_1.HttpClientTransport; } });
1036
+ // LockedBlackboard WAL / sweep public API
1037
+ var locked_blackboard_1 = require("./lib/locked-blackboard");
1038
+ Object.defineProperty(exports, "LockedBlackboard", { enumerable: true, get: function () { return locked_blackboard_1.LockedBlackboard; } });
1039
+ // Phase 5 Part 2: Pluggable Backend API
1040
+ var blackboard_backend_2 = require("./lib/blackboard-backend");
1041
+ Object.defineProperty(exports, "FileBackend", { enumerable: true, get: function () { return blackboard_backend_2.FileBackend; } });
1042
+ Object.defineProperty(exports, "MemoryBackend", { enumerable: true, get: function () { return blackboard_backend_2.MemoryBackend; } });
1043
+ // Phase 5 Part 3: Redis Backend
1044
+ var blackboard_backend_redis_1 = require("./lib/blackboard-backend-redis");
1045
+ Object.defineProperty(exports, "RedisBackend", { enumerable: true, get: function () { return blackboard_backend_redis_1.RedisBackend; } });
1046
+ // Phase 5 Part 4: CRDT Backend
1047
+ var blackboard_backend_crdt_1 = require("./lib/blackboard-backend-crdt");
1048
+ Object.defineProperty(exports, "CrdtBackend", { enumerable: true, get: function () { return blackboard_backend_crdt_1.CrdtBackend; } });
1049
+ var crdt_1 = require("./lib/crdt");
1050
+ Object.defineProperty(exports, "tickClock", { enumerable: true, get: function () { return crdt_1.tickClock; } });
1051
+ Object.defineProperty(exports, "mergeClock", { enumerable: true, get: function () { return crdt_1.mergeClock; } });
1052
+ Object.defineProperty(exports, "happensBefore", { enumerable: true, get: function () { return crdt_1.happensBefore; } });
1053
+ Object.defineProperty(exports, "isConcurrent", { enumerable: true, get: function () { return crdt_1.isConcurrent; } });
1054
+ Object.defineProperty(exports, "compareClock", { enumerable: true, get: function () { return crdt_1.compareClock; } });
1055
+ Object.defineProperty(exports, "mergeEntry", { enumerable: true, get: function () { return crdt_1.mergeEntry; } });
1056
+ // Phase 5 Part 5: Configurable Consistency Levels
1057
+ var consistency_2 = require("./lib/consistency");
1058
+ Object.defineProperty(exports, "ConsistentBackend", { enumerable: true, get: function () { return consistency_2.ConsistentBackend; } });
1059
+ Object.defineProperty(exports, "isFlushable", { enumerable: true, get: function () { return consistency_2.isFlushable; } });
1060
+ // Phase 5 Part 6: Federated Budget Tracking
1061
+ var federated_budget_1 = require("./lib/federated-budget");
1062
+ Object.defineProperty(exports, "FederatedBudget", { enumerable: true, get: function () { return federated_budget_1.FederatedBudget; } });
1063
+ // Phase 5 Part 7: MCP Networking
1064
+ var mcp_bridge_1 = require("./lib/mcp-bridge");
1065
+ Object.defineProperty(exports, "McpBlackboardBridge", { enumerable: true, get: function () { return mcp_bridge_1.McpBlackboardBridge; } });
1066
+ Object.defineProperty(exports, "McpBridgeClient", { enumerable: true, get: function () { return mcp_bridge_1.McpBridgeClient; } });
1067
+ Object.defineProperty(exports, "McpBridgeRouter", { enumerable: true, get: function () { return mcp_bridge_1.McpBridgeRouter; } });
1068
+ Object.defineProperty(exports, "McpInProcessTransport", { enumerable: true, get: function () { return mcp_bridge_1.McpInProcessTransport; } });
1069
+ // Logger
1070
+ var logger_2 = require("./lib/logger");
1071
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_2.Logger; } });
1072
+ Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return logger_2.LogLevel; } });
1073
+ // Typed errors
1074
+ var errors_2 = require("./lib/errors");
1075
+ Object.defineProperty(exports, "NetworkAIError", { enumerable: true, get: function () { return errors_2.NetworkAIError; } });
1076
+ Object.defineProperty(exports, "IdentityVerificationError", { enumerable: true, get: function () { return errors_2.IdentityVerificationError; } });
1077
+ Object.defineProperty(exports, "NamespaceViolationError", { enumerable: true, get: function () { return errors_2.NamespaceViolationError; } });
1078
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_2.ValidationError; } });
1079
+ Object.defineProperty(exports, "LockAcquisitionError", { enumerable: true, get: function () { return errors_2.LockAcquisitionError; } });
1080
+ Object.defineProperty(exports, "ConflictError", { enumerable: true, get: function () { return errors_2.ConflictError; } });
1081
+ Object.defineProperty(exports, "AdapterAlreadyRegisteredError", { enumerable: true, get: function () { return errors_2.AdapterAlreadyRegisteredError; } });
1082
+ Object.defineProperty(exports, "AdapterNotFoundError", { enumerable: true, get: function () { return errors_2.AdapterNotFoundError; } });
1083
+ Object.defineProperty(exports, "AdapterNotInitializedError", { enumerable: true, get: function () { return errors_2.AdapterNotInitializedError; } });
1084
+ Object.defineProperty(exports, "ParallelLimitError", { enumerable: true, get: function () { return errors_2.ParallelLimitError; } });
1085
+ Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return errors_2.TimeoutError; } });
1086
+ Object.defineProperty(exports, "mapErrorToSkillResult", { enumerable: true, get: function () { return errors_2.mapErrorToSkillResult; } });
1087
+ // ============================================================================
1088
+ // Phase 4: Behavioral Control Plane
1089
+ // ============================================================================
1090
+ // FSM Journey Layer
1091
+ var fsm_journey_1 = require("./lib/fsm-journey");
1092
+ Object.defineProperty(exports, "JourneyFSM", { enumerable: true, get: function () { return fsm_journey_1.JourneyFSM; } });
1093
+ Object.defineProperty(exports, "ToolAuthorizationMatrix", { enumerable: true, get: function () { return fsm_journey_1.ToolAuthorizationMatrix; } });
1094
+ Object.defineProperty(exports, "ComplianceMiddleware", { enumerable: true, get: function () { return fsm_journey_1.ComplianceMiddleware; } });
1095
+ Object.defineProperty(exports, "ComplianceViolationError", { enumerable: true, get: function () { return fsm_journey_1.ComplianceViolationError; } });
1096
+ Object.defineProperty(exports, "createDeliveryPipelineFSM", { enumerable: true, get: function () { return fsm_journey_1.createDeliveryPipelineFSM; } });
1097
+ Object.defineProperty(exports, "WORKFLOW_STATES", { enumerable: true, get: function () { return fsm_journey_1.WORKFLOW_STATES; } });
1098
+ // Real-Time Compliance Monitor
1099
+ var compliance_monitor_1 = require("./lib/compliance-monitor");
1100
+ Object.defineProperty(exports, "ComplianceMonitor", { enumerable: true, get: function () { return compliance_monitor_1.ComplianceMonitor; } });
1101
+ // Claim Verifier (Tier 1 Agent Honesty / Lie Detector)
1102
+ var claim_verifier_1 = require("./lib/claim-verifier");
1103
+ Object.defineProperty(exports, "ClaimVerifier", { enumerable: true, get: function () { return claim_verifier_1.ClaimVerifier; } });
1104
+ // QA Orchestrator Agent
1105
+ var qa_orchestrator_1 = require("./lib/qa-orchestrator");
1106
+ Object.defineProperty(exports, "QAOrchestratorAgent", { enumerable: true, get: function () { return qa_orchestrator_1.QAOrchestratorAgent; } });
1107
+ // Adapter Hook Middleware (Phase 7b)
1108
+ var adapter_hooks_1 = require("./lib/adapter-hooks");
1109
+ Object.defineProperty(exports, "AdapterHookManager", { enumerable: true, get: function () { return adapter_hooks_1.AdapterHookManager; } });
1110
+ Object.defineProperty(exports, "matchGlob", { enumerable: true, get: function () { return adapter_hooks_1.matchGlob; } });
1111
+ Object.defineProperty(exports, "matchToolPattern", { enumerable: true, get: function () { return adapter_hooks_1.matchToolPattern; } });
1112
+ // Skill Composer (Phase 7d)
1113
+ var skill_composer_1 = require("./lib/skill-composer");
1114
+ Object.defineProperty(exports, "SkillComposer", { enumerable: true, get: function () { return skill_composer_1.SkillComposer; } });
1115
+ // Semantic Memory Search (Phase 7e)
1116
+ var semantic_search_1 = require("./lib/semantic-search");
1117
+ Object.defineProperty(exports, "SemanticMemory", { enumerable: true, get: function () { return semantic_search_1.SemanticMemory; } });
1118
+ // Phase Pipeline — Multi-phase workflows with approval gates (Phase 8a)
1119
+ var phase_pipeline_1 = require("./lib/phase-pipeline");
1120
+ Object.defineProperty(exports, "PhasePipeline", { enumerable: true, get: function () { return phase_pipeline_1.PhasePipeline; } });
1121
+ // Confidence Filter — Multi-agent result scoring & filtering (Phase 8b)
1122
+ var confidence_filter_1 = require("./lib/confidence-filter");
1123
+ Object.defineProperty(exports, "ConfidenceFilter", { enumerable: true, get: function () { return confidence_filter_1.ConfidenceFilter; } });
1124
+ // Fan-Out / Fan-In — Parallel agent aggregation (Phase 8d)
1125
+ var fan_out_1 = require("./lib/fan-out");
1126
+ Object.defineProperty(exports, "FanOutFanIn", { enumerable: true, get: function () { return fan_out_1.FanOutFanIn; } });
1127
+ // Agent Runtime — Sandboxed execution environment (Phase 9a)
1128
+ var agent_runtime_1 = require("./lib/agent-runtime");
1129
+ Object.defineProperty(exports, "SandboxPolicy", { enumerable: true, get: function () { return agent_runtime_1.SandboxPolicy; } });
1130
+ Object.defineProperty(exports, "ShellExecutor", { enumerable: true, get: function () { return agent_runtime_1.ShellExecutor; } });
1131
+ Object.defineProperty(exports, "FileAccessor", { enumerable: true, get: function () { return agent_runtime_1.FileAccessor; } });
1132
+ Object.defineProperty(exports, "ApprovalGate", { enumerable: true, get: function () { return agent_runtime_1.ApprovalGate; } });
1133
+ Object.defineProperty(exports, "AgentRuntime", { enumerable: true, get: function () { return agent_runtime_1.AgentRuntime; } });
1134
+ Object.defineProperty(exports, "RuntimePolicyError", { enumerable: true, get: function () { return agent_runtime_1.RuntimePolicyError; } });
1135
+ Object.defineProperty(exports, "RuntimeApprovalError", { enumerable: true, get: function () { return agent_runtime_1.RuntimeApprovalError; } });
1136
+ Object.defineProperty(exports, "RuntimeExecutionError", { enumerable: true, get: function () { return agent_runtime_1.RuntimeExecutionError; } });
1137
+ // Console UI — Interactive terminal dashboard (Phase 9b)
1138
+ var console_ui_1 = require("./lib/console-ui");
1139
+ Object.defineProperty(exports, "ConsoleUI", { enumerable: true, get: function () { return console_ui_1.ConsoleUI; } });
1140
+ Object.defineProperty(exports, "ansi", { enumerable: true, get: function () { return console_ui_1.ansi; } });
1141
+ // Strategy Agent — AI Meta-Orchestrator (Phase 9c)
1142
+ var strategy_agent_1 = require("./lib/strategy-agent");
1143
+ Object.defineProperty(exports, "AgentPool", { enumerable: true, get: function () { return strategy_agent_1.AgentPool; } });
1144
+ Object.defineProperty(exports, "WorkloadPartitioner", { enumerable: true, get: function () { return strategy_agent_1.WorkloadPartitioner; } });
1145
+ Object.defineProperty(exports, "StrategyAgent", { enumerable: true, get: function () { return strategy_agent_1.StrategyAgent; } });
1146
+ Object.defineProperty(exports, "adaptiveStrategy", { enumerable: true, get: function () { return strategy_agent_1.adaptiveStrategy; } });
1147
+ // Goal Decomposer — LLM-powered goal → task DAG → parallel execution (Phase 10)
1148
+ var goal_decomposer_1 = require("./lib/goal-decomposer");
1149
+ Object.defineProperty(exports, "GoalDecomposer", { enumerable: true, get: function () { return goal_decomposer_1.GoalDecomposer; } });
1150
+ Object.defineProperty(exports, "TeamRunner", { enumerable: true, get: function () { return goal_decomposer_1.TeamRunner; } });
1151
+ Object.defineProperty(exports, "runTeam", { enumerable: true, get: function () { return goal_decomposer_1.runTeam; } });
1152
+ Object.defineProperty(exports, "createLLMPlanner", { enumerable: true, get: function () { return goal_decomposer_1.createLLMPlanner; } });
1153
+ Object.defineProperty(exports, "validateDAG", { enumerable: true, get: function () { return goal_decomposer_1.validateDAG; } });
1154
+ Object.defineProperty(exports, "topologicalLayers", { enumerable: true, get: function () { return goal_decomposer_1.topologicalLayers; } });
1155
+ Object.defineProperty(exports, "parsePlanJSON", { enumerable: true, get: function () { return goal_decomposer_1.parsePlanJSON; } });
1156
+ // Context Throttler — Metadata-driven blackboard pruning (Phase 12)
1157
+ var context_throttler_1 = require("./lib/context-throttler");
1158
+ Object.defineProperty(exports, "ContextThrottler", { enumerable: true, get: function () { return context_throttler_1.ContextThrottler; } });
1159
+ Object.defineProperty(exports, "filterState", { enumerable: true, get: function () { return context_throttler_1.filterState; } });
1160
+ // Partition Planner — Logical work partitioning to prevent redundant research (Phase 12)
1161
+ var partition_planner_1 = require("./lib/partition-planner");
1162
+ Object.defineProperty(exports, "PartitionPlanner", { enumerable: true, get: function () { return partition_planner_1.PartitionPlanner; } });
1163
+ Object.defineProperty(exports, "createLexicalOverlapChecker", { enumerable: true, get: function () { return partition_planner_1.createLexicalOverlapChecker; } });
1164
+ Object.defineProperty(exports, "createLLMPartitionPlanner", { enumerable: true, get: function () { return partition_planner_1.createLLMPartitionPlanner; } });
1165
+ Object.defineProperty(exports, "parsePartitionJSON", { enumerable: true, get: function () { return partition_planner_1.parsePartitionJSON; } });
1166
+ // Coverage Gate — Recursive refinement loop with score-gated completion (Phase 12)
1167
+ var coverage_gate_1 = require("./lib/coverage-gate");
1168
+ Object.defineProperty(exports, "CoverageGate", { enumerable: true, get: function () { return coverage_gate_1.CoverageGate; } });
1169
+ Object.defineProperty(exports, "createKeywordEvaluator", { enumerable: true, get: function () { return coverage_gate_1.createKeywordEvaluator; } });
1170
+ Object.defineProperty(exports, "createLLMEvaluator", { enumerable: true, get: function () { return coverage_gate_1.createLLMEvaluator; } });
1171
+ // Route Classifier — Short-circuit routing for factual lookups (Phase 12)
1172
+ var route_classifier_1 = require("./lib/route-classifier");
1173
+ Object.defineProperty(exports, "RouteClassifier", { enumerable: true, get: function () { return route_classifier_1.RouteClassifier; } });
1174
+ Object.defineProperty(exports, "createHeuristicClassifier", { enumerable: true, get: function () { return route_classifier_1.createHeuristicClassifier; } });
1175
+ Object.defineProperty(exports, "createLLMClassifier", { enumerable: true, get: function () { return route_classifier_1.createLLMClassifier; } });
1176
+ // Live Agent Topology — Real-time agent graph + dashboard (Phase 11)
1177
+ var topology_1 = require("./lib/topology");
1178
+ Object.defineProperty(exports, "TopologyTracker", { enumerable: true, get: function () { return topology_1.TopologyTracker; } });
1179
+ var dashboard_server_1 = require("./lib/dashboard-server");
1180
+ Object.defineProperty(exports, "DashboardServer", { enumerable: true, get: function () { return dashboard_server_1.DashboardServer; } });
1181
+ // WorkTree — Hierarchical task decomposition tree with rollup
1182
+ var work_tree_1 = require("./lib/work-tree");
1183
+ Object.defineProperty(exports, "WorkTree", { enumerable: true, get: function () { return work_tree_1.WorkTree; } });
1184
+ // WorkTreeUI — Terminal renderer for WorkTree hierarchies
1185
+ var work_tree_ui_1 = require("./lib/work-tree-ui");
1186
+ Object.defineProperty(exports, "WorkTreeUI", { enumerable: true, get: function () { return work_tree_ui_1.WorkTreeUI; } });
1187
+ // WorkTreeDashboard — Browser-based live WorkTree visualization
1188
+ var work_tree_dashboard_1 = require("./lib/work-tree-dashboard");
1189
+ Object.defineProperty(exports, "WorkTreeDashboard", { enumerable: true, get: function () { return work_tree_dashboard_1.WorkTreeDashboard; } });
1190
+ // ControlPlane — Multi-workspace unified dashboard
1191
+ var control_plane_1 = require("./lib/control-plane");
1192
+ Object.defineProperty(exports, "ControlPlane", { enumerable: true, get: function () { return control_plane_1.ControlPlane; } });
1193
+ // ============================================================================
1194
+ // Phase 13 (v5.4.0): Multi-Environment Isolation
1195
+ // ============================================================================
1196
+ // Environment Manager — isolated data dirs, promotion chain, backup/restore
1197
+ var env_manager_1 = require("./lib/env-manager");
1198
+ Object.defineProperty(exports, "EnvironmentManager", { enumerable: true, get: function () { return env_manager_1.EnvironmentManager; } });
1199
+ // Source Protection — blocks agent access to source code files
1200
+ var agent_runtime_2 = require("./lib/agent-runtime");
1201
+ Object.defineProperty(exports, "SourceProtectionError", { enumerable: true, get: function () { return agent_runtime_2.SourceProtectionError; } });
1202
+ // QuadTree — Barnes-Hut spatial indexing (Tier 1 scalability)
1203
+ var quadtree_1 = require("./lib/quadtree");
1204
+ Object.defineProperty(exports, "QuadTree", { enumerable: true, get: function () { return quadtree_1.QuadTree; } });
1205
+ // MCP Blackboard Tool Bindings
1206
+ var mcp_blackboard_tools_1 = require("./lib/mcp-blackboard-tools");
1207
+ Object.defineProperty(exports, "BlackboardMCPTools", { enumerable: true, get: function () { return mcp_blackboard_tools_1.BlackboardMCPTools; } });
1208
+ Object.defineProperty(exports, "registerBlackboardTools", { enumerable: true, get: function () { return mcp_blackboard_tools_1.registerBlackboardTools; } });
1209
+ Object.defineProperty(exports, "BLACKBOARD_TOOL_DEFINITIONS", { enumerable: true, get: function () { return mcp_blackboard_tools_1.BLACKBOARD_TOOL_DEFINITIONS; } });
1210
+ /**
1211
+ * Factory function for creating a configured SwarmOrchestrator instance.
1212
+ *
1213
+ * For plug-and-play with other agent systems, pass adapters:
1214
+ *
1215
+ * const orchestrator = createSwarmOrchestrator({
1216
+ * adapters: [{ adapter: new LangChainAdapter(), config: {} }],
1217
+ * });
1218
+ */
1219
+ /**
1220
+ * Factory function for creating a fully configured {@link SwarmOrchestrator}.
1221
+ *
1222
+ * Accepts optional configuration for adapters, trust levels, resource profiles,
1223
+ * quality gate settings, and runtime overrides.
1224
+ *
1225
+ * @param config - Optional configuration object. Pass `undefined` for all defaults.
1226
+ * @returns A ready-to-use SwarmOrchestrator instance.
1227
+ *
1228
+ * @example
1229
+ * ```typescript
1230
+ * import { createSwarmOrchestrator, LangChainAdapter } from 'network-ai';
1231
+ *
1232
+ * // Minimal
1233
+ * const orc = createSwarmOrchestrator();
1234
+ *
1235
+ * // With adapters and trust
1236
+ * const orc2 = createSwarmOrchestrator({
1237
+ * adapters: [{ adapter: new LangChainAdapter() }],
1238
+ * trustLevels: [{ agentId: 'analyst', trustLevel: 0.8 }],
1239
+ * qualityThreshold: 0.7,
1240
+ * });
1241
+ * ```
1242
+ */
1243
+ function createSwarmOrchestrator(config) {
1244
+ if (config !== undefined && (typeof config !== 'object' || config === null || Array.isArray(config))) {
1245
+ throw new errors_1.ValidationError('config must be a plain object');
1246
+ }
1247
+ if (config) {
1248
+ const { adapters: adapterList, adapterRegistry, trustLevels, resourceProfiles, validationConfig, qualityThreshold, aiReviewCallback, ...rest } = config;
1249
+ Object.assign(orchestrator_types_1.CONFIG, rest);
1250
+ const registry = adapterRegistry ?? new adapter_registry_1.AdapterRegistry();
1251
+ const orchestrator = new SwarmOrchestrator(undefined, registry, {
1252
+ trustLevels,
1253
+ resourceProfiles,
1254
+ validationConfig,
1255
+ qualityThreshold,
1256
+ aiReviewCallback,
1257
+ });
1258
+ // Initialize adapters if provided
1259
+ if (adapterList) {
1260
+ Promise.all(adapterList.map(({ adapter, config: adapterConfig }) => orchestrator.addAdapter(adapter, adapterConfig ?? {}))).catch(err => log.error('Adapter init error', { error: err instanceof Error ? err.message : String(err) }));
1261
+ }
1262
+ return orchestrator;
1263
+ }
1264
+ return new SwarmOrchestrator();
1265
+ }
1266
+ function getConfig(key) {
1267
+ if (key !== undefined)
1268
+ return orchestrator_types_1.CONFIG[key];
1269
+ return { ...orchestrator_types_1.CONFIG };
1270
+ }
1271
+ /**
1272
+ * Update a CONFIG key at runtime. Changes take effect immediately for all
1273
+ * subsequent orchestrator operations.
1274
+ *
1275
+ * @example
1276
+ * ```typescript
1277
+ * setConfig('maxParallelAgents', 10);
1278
+ * setConfig('enableTracing', false);
1279
+ * ```
1280
+ */
1281
+ function setConfig(key, value) {
1282
+ orchestrator_types_1.CONFIG[key] = value;
1283
+ }
1284
+ // Phase 6: SSE transport + extended/control tools
1285
+ var mcp_transport_sse_1 = require("./lib/mcp-transport-sse");
1286
+ Object.defineProperty(exports, "McpSseServer", { enumerable: true, get: function () { return mcp_transport_sse_1.McpSseServer; } });
1287
+ Object.defineProperty(exports, "McpSseTransport", { enumerable: true, get: function () { return mcp_transport_sse_1.McpSseTransport; } });
1288
+ Object.defineProperty(exports, "McpCombinedBridge", { enumerable: true, get: function () { return mcp_transport_sse_1.McpCombinedBridge; } });
1289
+ Object.defineProperty(exports, "McpBlackboardBridgeAdapter", { enumerable: true, get: function () { return mcp_transport_sse_1.McpBlackboardBridgeAdapter; } });
1290
+ // MCP Streamable HTTP Transport — 2025 MCP spec (tools + resources + prompts)
1291
+ var mcp_transport_http_1 = require("./lib/mcp-transport-http");
1292
+ Object.defineProperty(exports, "McpStreamableServer", { enumerable: true, get: function () { return mcp_transport_http_1.McpStreamableServer; } });
1293
+ Object.defineProperty(exports, "BlackboardResourceProvider", { enumerable: true, get: function () { return mcp_transport_http_1.BlackboardResourceProvider; } });
1294
+ Object.defineProperty(exports, "OrchestrationPromptProvider", { enumerable: true, get: function () { return mcp_transport_http_1.OrchestrationPromptProvider; } });
1295
+ var mcp_tools_extended_1 = require("./lib/mcp-tools-extended");
1296
+ Object.defineProperty(exports, "ExtendedMcpTools", { enumerable: true, get: function () { return mcp_tools_extended_1.ExtendedMcpTools; } });
1297
+ var mcp_tools_control_1 = require("./lib/mcp-tools-control");
1298
+ Object.defineProperty(exports, "ControlMcpTools", { enumerable: true, get: function () { return mcp_tools_control_1.ControlMcpTools; } });
1299
+ // Streaming adapters
1300
+ var streaming_base_adapter_1 = require("./adapters/streaming-base-adapter");
1301
+ Object.defineProperty(exports, "StreamingBaseAdapter", { enumerable: true, get: function () { return streaming_base_adapter_1.StreamingBaseAdapter; } });
1302
+ Object.defineProperty(exports, "collectStream", { enumerable: true, get: function () { return streaming_base_adapter_1.collectStream; } });
1303
+ var langchain_streaming_adapter_1 = require("./adapters/langchain-streaming-adapter");
1304
+ Object.defineProperty(exports, "LangChainStreamingAdapter", { enumerable: true, get: function () { return langchain_streaming_adapter_1.LangChainStreamingAdapter; } });
1305
+ var custom_streaming_adapter_1 = require("./adapters/custom-streaming-adapter");
1306
+ Object.defineProperty(exports, "CustomStreamingAdapter", { enumerable: true, get: function () { return custom_streaming_adapter_1.CustomStreamingAdapter; } });
1307
+ // A2A (Agent-to-Agent) protocol adapter
1308
+ var a2a_adapter_1 = require("./adapters/a2a-adapter");
1309
+ Object.defineProperty(exports, "A2AAdapter", { enumerable: true, get: function () { return a2a_adapter_1.A2AAdapter; } });
1310
+ // Codex adapter (OpenAI Codex CLI / chat / completion)
1311
+ var codex_adapter_1 = require("./adapters/codex-adapter");
1312
+ Object.defineProperty(exports, "CodexAdapter", { enumerable: true, get: function () { return codex_adapter_1.CodexAdapter; } });
1313
+ // MiniMax adapter (MiniMax LLM API)
1314
+ var minimax_adapter_1 = require("./adapters/minimax-adapter");
1315
+ Object.defineProperty(exports, "MiniMaxAdapter", { enumerable: true, get: function () { return minimax_adapter_1.MiniMaxAdapter; } });
1316
+ // NemoClaw adapter (NVIDIA NemoClaw — sandboxed agent execution via OpenShell)
1317
+ var nemoclaw_adapter_1 = require("./adapters/nemoclaw-adapter");
1318
+ Object.defineProperty(exports, "NemoClawAdapter", { enumerable: true, get: function () { return nemoclaw_adapter_1.NemoClawAdapter; } });
1319
+ // Copilot adapter (GitHub Copilot — code generation, review, analysis)
1320
+ var copilot_adapter_1 = require("./adapters/copilot-adapter");
1321
+ Object.defineProperty(exports, "CopilotAdapter", { enumerable: true, get: function () { return copilot_adapter_1.CopilotAdapter; } });
1322
+ // LangGraph adapter
1323
+ var langgraph_adapter_1 = require("./adapters/langgraph-adapter");
1324
+ Object.defineProperty(exports, "LangGraphAdapter", { enumerable: true, get: function () { return langgraph_adapter_1.LangGraphAdapter; } });
1325
+ // Anthropic Computer Use adapter
1326
+ var anthropic_computer_use_adapter_1 = require("./adapters/anthropic-computer-use-adapter");
1327
+ Object.defineProperty(exports, "AnthropicComputerUseAdapter", { enumerable: true, get: function () { return anthropic_computer_use_adapter_1.AnthropicComputerUseAdapter; } });
1328
+ // OpenAI Agents SDK adapter
1329
+ var openai_agents_adapter_1 = require("./adapters/openai-agents-adapter");
1330
+ Object.defineProperty(exports, "OpenAIAgentsAdapter", { enumerable: true, get: function () { return openai_agents_adapter_1.OpenAIAgentsAdapter; } });
1331
+ // Vertex AI adapter
1332
+ var vertex_ai_adapter_1 = require("./adapters/vertex-ai-adapter");
1333
+ Object.defineProperty(exports, "VertexAIAdapter", { enumerable: true, get: function () { return vertex_ai_adapter_1.VertexAIAdapter; } });
1334
+ // Pydantic AI adapter
1335
+ var pydantic_ai_adapter_1 = require("./adapters/pydantic-ai-adapter");
1336
+ Object.defineProperty(exports, "PydanticAIAdapter", { enumerable: true, get: function () { return pydantic_ai_adapter_1.PydanticAIAdapter; } });
1337
+ // Browser Agent adapter
1338
+ var browser_agent_adapter_1 = require("./adapters/browser-agent-adapter");
1339
+ Object.defineProperty(exports, "BrowserAgentAdapter", { enumerable: true, get: function () { return browser_agent_adapter_1.BrowserAgentAdapter; } });
1340
+ // Orchestrator adapter (hierarchical multi-orchestrator coordination)
1341
+ var orchestrator_adapter_1 = require("./adapters/orchestrator-adapter");
1342
+ Object.defineProperty(exports, "OrchestratorAdapter", { enumerable: true, get: function () { return orchestrator_adapter_1.OrchestratorAdapter; } });
1343
+ // Circuit Breaker (v5.6.1)
1344
+ var circuit_breaker_1 = require("./lib/circuit-breaker");
1345
+ Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.CircuitBreaker; } });
1346
+ Object.defineProperty(exports, "CircuitOpenError", { enumerable: true, get: function () { return circuit_breaker_1.CircuitOpenError; } });
1347
+ // Telemetry Provider — BYOT (v5.7.0)
1348
+ var telemetry_provider_1 = require("./lib/telemetry-provider");
1349
+ Object.defineProperty(exports, "NullTelemetryProvider", { enumerable: true, get: function () { return telemetry_provider_1.NullTelemetryProvider; } });
1350
+ Object.defineProperty(exports, "CapturingTelemetryProvider", { enumerable: true, get: function () { return telemetry_provider_1.CapturingTelemetryProvider; } });
1351
+ Object.defineProperty(exports, "createOtelHooks", { enumerable: true, get: function () { return telemetry_provider_1.createOtelHooks; } });
1352
+ //# sourceMappingURL=index.js.map