network-ai 4.15.3 → 5.0.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 (204) hide show
  1. package/INTEGRATION_GUIDE.md +11 -4
  2. package/QUICKSTART.md +31 -4
  3. package/README.md +37 -15
  4. package/bin/dashboard.ts +146 -0
  5. package/bin/mcp-server.ts +3 -2
  6. package/dist/adapters/adapter-registry.d.ts +33 -1
  7. package/dist/adapters/adapter-registry.d.ts.map +1 -1
  8. package/dist/adapters/adapter-registry.js +49 -0
  9. package/dist/adapters/adapter-registry.js.map +1 -1
  10. package/dist/adapters/anthropic-computer-use-adapter.d.ts +132 -0
  11. package/dist/adapters/anthropic-computer-use-adapter.d.ts.map +1 -0
  12. package/dist/adapters/anthropic-computer-use-adapter.js +180 -0
  13. package/dist/adapters/anthropic-computer-use-adapter.js.map +1 -0
  14. package/dist/adapters/browser-agent-adapter.d.ts +121 -0
  15. package/dist/adapters/browser-agent-adapter.d.ts.map +1 -0
  16. package/dist/adapters/browser-agent-adapter.js +219 -0
  17. package/dist/adapters/browser-agent-adapter.js.map +1 -0
  18. package/dist/adapters/copilot-adapter.d.ts +59 -0
  19. package/dist/adapters/copilot-adapter.d.ts.map +1 -0
  20. package/dist/adapters/copilot-adapter.js +132 -0
  21. package/dist/adapters/copilot-adapter.js.map +1 -0
  22. package/dist/adapters/index.d.ts +15 -1
  23. package/dist/adapters/index.d.ts.map +1 -1
  24. package/dist/adapters/index.js +22 -1
  25. package/dist/adapters/index.js.map +1 -1
  26. package/dist/adapters/langgraph-adapter.d.ts +70 -0
  27. package/dist/adapters/langgraph-adapter.d.ts.map +1 -0
  28. package/dist/adapters/langgraph-adapter.js +119 -0
  29. package/dist/adapters/langgraph-adapter.js.map +1 -0
  30. package/dist/adapters/openai-agents-adapter.d.ts +100 -0
  31. package/dist/adapters/openai-agents-adapter.d.ts.map +1 -0
  32. package/dist/adapters/openai-agents-adapter.js +118 -0
  33. package/dist/adapters/openai-agents-adapter.js.map +1 -0
  34. package/dist/adapters/pydantic-ai-adapter.d.ts +104 -0
  35. package/dist/adapters/pydantic-ai-adapter.d.ts.map +1 -0
  36. package/dist/adapters/pydantic-ai-adapter.js +163 -0
  37. package/dist/adapters/pydantic-ai-adapter.js.map +1 -0
  38. package/dist/adapters/vertex-ai-adapter.d.ts +122 -0
  39. package/dist/adapters/vertex-ai-adapter.d.ts.map +1 -0
  40. package/dist/adapters/vertex-ai-adapter.js +166 -0
  41. package/dist/adapters/vertex-ai-adapter.js.map +1 -0
  42. package/dist/bin/dashboard.d.ts +11 -0
  43. package/dist/bin/dashboard.d.ts.map +1 -0
  44. package/dist/bin/dashboard.js +135 -0
  45. package/dist/bin/dashboard.js.map +1 -0
  46. package/dist/bin/mcp-server.js +3 -2
  47. package/dist/bin/mcp-server.js.map +1 -1
  48. package/dist/index.d.ts +103 -559
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +295 -1074
  51. package/dist/index.js.map +1 -1
  52. package/dist/lib/adapter-test-harness.d.ts +88 -0
  53. package/dist/lib/adapter-test-harness.d.ts.map +1 -0
  54. package/dist/lib/adapter-test-harness.js +118 -0
  55. package/dist/lib/adapter-test-harness.js.map +1 -0
  56. package/dist/lib/agent-conversation.d.ts +115 -0
  57. package/dist/lib/agent-conversation.d.ts.map +1 -0
  58. package/dist/lib/agent-conversation.js +155 -0
  59. package/dist/lib/agent-conversation.js.map +1 -0
  60. package/dist/lib/agent-debate.d.ts +115 -0
  61. package/dist/lib/agent-debate.d.ts.map +1 -0
  62. package/dist/lib/agent-debate.js +146 -0
  63. package/dist/lib/agent-debate.js.map +1 -0
  64. package/dist/lib/agent-memory.d.ts +157 -0
  65. package/dist/lib/agent-memory.d.ts.map +1 -0
  66. package/dist/lib/agent-memory.js +336 -0
  67. package/dist/lib/agent-memory.js.map +1 -0
  68. package/dist/lib/agent-vcr.d.ts +133 -0
  69. package/dist/lib/agent-vcr.d.ts.map +1 -0
  70. package/dist/lib/agent-vcr.js +218 -0
  71. package/dist/lib/agent-vcr.js.map +1 -0
  72. package/dist/lib/anomaly-detector.d.ts +112 -0
  73. package/dist/lib/anomaly-detector.d.ts.map +1 -0
  74. package/dist/lib/anomaly-detector.js +178 -0
  75. package/dist/lib/anomaly-detector.js.map +1 -0
  76. package/dist/lib/approval-inbox.d.ts +147 -0
  77. package/dist/lib/approval-inbox.d.ts.map +1 -0
  78. package/dist/lib/approval-inbox.js +385 -0
  79. package/dist/lib/approval-inbox.js.map +1 -0
  80. package/dist/lib/auth-guardian.d.ts +170 -0
  81. package/dist/lib/auth-guardian.d.ts.map +1 -0
  82. package/dist/lib/auth-guardian.js +604 -0
  83. package/dist/lib/auth-guardian.js.map +1 -0
  84. package/dist/lib/auth-validator.d.ts +70 -0
  85. package/dist/lib/auth-validator.d.ts.map +1 -0
  86. package/dist/lib/auth-validator.js +32 -0
  87. package/dist/lib/auth-validator.js.map +1 -0
  88. package/dist/lib/blackboard-validator.d.ts +56 -0
  89. package/dist/lib/blackboard-validator.d.ts.map +1 -1
  90. package/dist/lib/blackboard-validator.js +181 -4
  91. package/dist/lib/blackboard-validator.js.map +1 -1
  92. package/dist/lib/comparison-runner.d.ts +99 -0
  93. package/dist/lib/comparison-runner.d.ts.map +1 -0
  94. package/dist/lib/comparison-runner.js +138 -0
  95. package/dist/lib/comparison-runner.js.map +1 -0
  96. package/dist/lib/config-watcher.d.ts +109 -0
  97. package/dist/lib/config-watcher.d.ts.map +1 -0
  98. package/dist/lib/config-watcher.js +215 -0
  99. package/dist/lib/config-watcher.js.map +1 -0
  100. package/dist/lib/cost-governor.d.ts +105 -0
  101. package/dist/lib/cost-governor.d.ts.map +1 -0
  102. package/dist/lib/cost-governor.js +128 -0
  103. package/dist/lib/cost-governor.js.map +1 -0
  104. package/dist/lib/cost-heatmap.d.ts +104 -0
  105. package/dist/lib/cost-heatmap.d.ts.map +1 -0
  106. package/dist/lib/cost-heatmap.js +161 -0
  107. package/dist/lib/cost-heatmap.js.map +1 -0
  108. package/dist/lib/coverage-reporter.d.ts +92 -0
  109. package/dist/lib/coverage-reporter.d.ts.map +1 -0
  110. package/dist/lib/coverage-reporter.js +177 -0
  111. package/dist/lib/coverage-reporter.js.map +1 -0
  112. package/dist/lib/dashboard-server.d.ts +71 -0
  113. package/dist/lib/dashboard-server.d.ts.map +1 -0
  114. package/dist/lib/dashboard-server.js +403 -0
  115. package/dist/lib/dashboard-server.js.map +1 -0
  116. package/dist/lib/dry-run.d.ts +73 -0
  117. package/dist/lib/dry-run.d.ts.map +1 -0
  118. package/dist/lib/dry-run.js +130 -0
  119. package/dist/lib/dry-run.js.map +1 -0
  120. package/dist/lib/errors.d.ts +15 -0
  121. package/dist/lib/errors.d.ts.map +1 -1
  122. package/dist/lib/errors.js +38 -0
  123. package/dist/lib/errors.js.map +1 -1
  124. package/dist/lib/event-bus.d.ts +167 -0
  125. package/dist/lib/event-bus.d.ts.map +1 -0
  126. package/dist/lib/event-bus.js +229 -0
  127. package/dist/lib/event-bus.js.map +1 -0
  128. package/dist/lib/explainability.d.ts +85 -0
  129. package/dist/lib/explainability.d.ts.map +1 -0
  130. package/dist/lib/explainability.js +102 -0
  131. package/dist/lib/explainability.js.map +1 -0
  132. package/dist/lib/goal-dsl.d.ts +157 -0
  133. package/dist/lib/goal-dsl.d.ts.map +1 -0
  134. package/dist/lib/goal-dsl.js +392 -0
  135. package/dist/lib/goal-dsl.js.map +1 -0
  136. package/dist/lib/job-queue.d.ts +183 -0
  137. package/dist/lib/job-queue.d.ts.map +1 -0
  138. package/dist/lib/job-queue.js +310 -0
  139. package/dist/lib/job-queue.js.map +1 -0
  140. package/dist/lib/learning-loop.d.ts +113 -0
  141. package/dist/lib/learning-loop.d.ts.map +1 -0
  142. package/dist/lib/learning-loop.js +181 -0
  143. package/dist/lib/learning-loop.js.map +1 -0
  144. package/dist/lib/lifecycle-hooks.d.ts +116 -0
  145. package/dist/lib/lifecycle-hooks.d.ts.map +1 -0
  146. package/dist/lib/lifecycle-hooks.js +148 -0
  147. package/dist/lib/lifecycle-hooks.js.map +1 -0
  148. package/dist/lib/locked-blackboard.d.ts.map +1 -1
  149. package/dist/lib/locked-blackboard.js +9 -5
  150. package/dist/lib/locked-blackboard.js.map +1 -1
  151. package/dist/lib/mcp-tool-consumer.d.ts +153 -0
  152. package/dist/lib/mcp-tool-consumer.d.ts.map +1 -0
  153. package/dist/lib/mcp-tool-consumer.js +320 -0
  154. package/dist/lib/mcp-tool-consumer.js.map +1 -0
  155. package/dist/lib/metrics.d.ts +119 -0
  156. package/dist/lib/metrics.d.ts.map +1 -0
  157. package/dist/lib/metrics.js +284 -0
  158. package/dist/lib/metrics.js.map +1 -0
  159. package/dist/lib/orchestrator-types.d.ts +309 -0
  160. package/dist/lib/orchestrator-types.d.ts.map +1 -0
  161. package/dist/lib/orchestrator-types.js +61 -0
  162. package/dist/lib/orchestrator-types.js.map +1 -0
  163. package/dist/lib/otel-bridge.d.ts +74 -0
  164. package/dist/lib/otel-bridge.d.ts.map +1 -0
  165. package/dist/lib/otel-bridge.js +167 -0
  166. package/dist/lib/otel-bridge.js.map +1 -0
  167. package/dist/lib/playground.d.ts +76 -0
  168. package/dist/lib/playground.d.ts.map +1 -0
  169. package/dist/lib/playground.js +224 -0
  170. package/dist/lib/playground.js.map +1 -0
  171. package/dist/lib/quadtree.d.ts +114 -0
  172. package/dist/lib/quadtree.d.ts.map +1 -0
  173. package/dist/lib/quadtree.js +259 -0
  174. package/dist/lib/quadtree.js.map +1 -0
  175. package/dist/lib/shared-blackboard.d.ts +101 -0
  176. package/dist/lib/shared-blackboard.d.ts.map +1 -0
  177. package/dist/lib/shared-blackboard.js +249 -0
  178. package/dist/lib/shared-blackboard.js.map +1 -0
  179. package/dist/lib/speculative-executor.d.ts +89 -0
  180. package/dist/lib/speculative-executor.d.ts.map +1 -0
  181. package/dist/lib/speculative-executor.js +107 -0
  182. package/dist/lib/speculative-executor.js.map +1 -0
  183. package/dist/lib/swarm-transport.d.ts +150 -0
  184. package/dist/lib/swarm-transport.d.ts.map +1 -0
  185. package/dist/lib/swarm-transport.js +307 -0
  186. package/dist/lib/swarm-transport.js.map +1 -0
  187. package/dist/lib/task-decomposer.d.ts +41 -0
  188. package/dist/lib/task-decomposer.d.ts.map +1 -0
  189. package/dist/lib/task-decomposer.js +272 -0
  190. package/dist/lib/task-decomposer.js.map +1 -0
  191. package/dist/lib/timeline-scrubber.d.ts +84 -0
  192. package/dist/lib/timeline-scrubber.d.ts.map +1 -0
  193. package/dist/lib/timeline-scrubber.js +173 -0
  194. package/dist/lib/timeline-scrubber.js.map +1 -0
  195. package/dist/lib/topology.d.ts +361 -0
  196. package/dist/lib/topology.d.ts.map +1 -0
  197. package/dist/lib/topology.js +591 -0
  198. package/dist/lib/topology.js.map +1 -0
  199. package/dist/security.d.ts +95 -0
  200. package/dist/security.d.ts.map +1 -1
  201. package/dist/security.js +266 -4
  202. package/dist/security.js.map +1 -1
  203. package/package.json +7 -5
  204. package/types/agent-adapter.d.ts +5 -0
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ /**
3
+ * MCPToolConsumer — Connect to external MCP servers and consume their tools.
4
+ *
5
+ * Implements `MCPServerConnection` for the MCPAdapter, providing:
6
+ * - Stdio-based client transport (spawn child process)
7
+ * - SSE-based client transport (HTTP long-poll)
8
+ * - Auto-discovery of remote tools with caching
9
+ * - Permission-gated remote tool execution
10
+ *
11
+ * BYOC: No external MCP client library required.
12
+ *
13
+ * @module MCPToolConsumer
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.MCPToolConsumer = exports.HttpClientTransport = exports.StdioClientTransport = void 0;
50
+ const events_1 = require("events");
51
+ // ============================================================================
52
+ // STDIO CLIENT TRANSPORT
53
+ // ============================================================================
54
+ /**
55
+ * Stdio-based MCP client transport.
56
+ * Spawns a child process and communicates via stdin/stdout JSON-RPC.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const transport = new StdioClientTransport('npx', ['some-mcp-server']);
61
+ * const consumer = new MCPToolConsumer({ transport });
62
+ * ```
63
+ */
64
+ class StdioClientTransport {
65
+ command;
66
+ args;
67
+ process = null;
68
+ pendingRequests = new Map();
69
+ nextId = 1;
70
+ buffer = '';
71
+ spawnFn = null;
72
+ constructor(command, args = []) {
73
+ this.command = command;
74
+ this.args = args;
75
+ }
76
+ async send(request) {
77
+ if (!this.process)
78
+ await this.start();
79
+ const id = this.nextId++;
80
+ const req = { ...request, id };
81
+ return new Promise((resolve, reject) => {
82
+ this.pendingRequests.set(id, { resolve, reject });
83
+ this.process.stdin.write(JSON.stringify(req) + '\n');
84
+ });
85
+ }
86
+ async close() {
87
+ if (this.process) {
88
+ this.process.kill();
89
+ this.process = null;
90
+ }
91
+ for (const { reject } of this.pendingRequests.values()) {
92
+ reject(new Error('Transport closed'));
93
+ }
94
+ this.pendingRequests.clear();
95
+ }
96
+ async start() {
97
+ if (!this.spawnFn) {
98
+ // Dynamic import to avoid bundling child_process in browser contexts
99
+ const cp = await Promise.resolve().then(() => __importStar(require('child_process')));
100
+ this.spawnFn = cp.spawn;
101
+ }
102
+ this.process = this.spawnFn(this.command, this.args, {
103
+ stdio: ['pipe', 'pipe', 'pipe'],
104
+ });
105
+ this.process.stdout.on('data', (chunk) => {
106
+ this.buffer += chunk.toString();
107
+ this.processBuffer();
108
+ });
109
+ this.process.on('exit', () => {
110
+ for (const { reject } of this.pendingRequests.values()) {
111
+ reject(new Error('MCP server process exited'));
112
+ }
113
+ this.pendingRequests.clear();
114
+ });
115
+ }
116
+ processBuffer() {
117
+ const lines = this.buffer.split('\n');
118
+ this.buffer = lines.pop() ?? '';
119
+ for (const line of lines) {
120
+ const trimmed = line.trim();
121
+ if (!trimmed)
122
+ continue;
123
+ try {
124
+ const response = JSON.parse(trimmed);
125
+ if (response.id !== undefined && this.pendingRequests.has(response.id)) {
126
+ const { resolve } = this.pendingRequests.get(response.id);
127
+ this.pendingRequests.delete(response.id);
128
+ resolve(response);
129
+ }
130
+ }
131
+ catch {
132
+ // Not valid JSON — skip
133
+ }
134
+ }
135
+ }
136
+ }
137
+ exports.StdioClientTransport = StdioClientTransport;
138
+ // ============================================================================
139
+ // HTTP CLIENT TRANSPORT
140
+ // ============================================================================
141
+ /**
142
+ * HTTP-based MCP client transport.
143
+ * Sends JSON-RPC over HTTP POST requests to an MCP server endpoint.
144
+ */
145
+ class HttpClientTransport {
146
+ url;
147
+ headers;
148
+ nextId = 1;
149
+ constructor(url, headers = {}) {
150
+ this.url = url;
151
+ this.headers = headers;
152
+ }
153
+ async send(request) {
154
+ const id = this.nextId++;
155
+ const req = { ...request, id };
156
+ const response = await fetch(this.url, {
157
+ method: 'POST',
158
+ headers: { 'Content-Type': 'application/json', ...this.headers },
159
+ body: JSON.stringify(req),
160
+ });
161
+ if (!response.ok) {
162
+ throw new Error(`MCP HTTP error: ${response.status} ${response.statusText}`);
163
+ }
164
+ return response.json();
165
+ }
166
+ async close() {
167
+ // HTTP is stateless — nothing to close
168
+ }
169
+ }
170
+ exports.HttpClientTransport = HttpClientTransport;
171
+ // ============================================================================
172
+ // MCP TOOL CONSUMER
173
+ // ============================================================================
174
+ /**
175
+ * Consume tools from an external MCP server.
176
+ * Implements MCPServerConnection for use with MCPAdapter.
177
+ *
178
+ * @example
179
+ * ```ts
180
+ * const transport = new HttpClientTransport('http://localhost:3001/mcp');
181
+ * const consumer = new MCPToolConsumer({ transport });
182
+ *
183
+ * // Use with MCPAdapter:
184
+ * const adapter = new MCPAdapter();
185
+ * adapter.initialize({ options: { serverConnection: consumer } });
186
+ * await adapter.discoverServerTools();
187
+ * ```
188
+ */
189
+ class MCPToolConsumer extends events_1.EventEmitter {
190
+ transport;
191
+ toolCache = null;
192
+ toolCacheTime = 0;
193
+ toolCacheTtlMs;
194
+ callTimeoutMs;
195
+ prefix;
196
+ toolInfo = new Map();
197
+ initialized = false;
198
+ constructor(options) {
199
+ super();
200
+ this.transport = options.transport;
201
+ this.toolCacheTtlMs = options.toolCacheTtlMs ?? 60_000;
202
+ this.callTimeoutMs = options.callTimeoutMs ?? 30_000;
203
+ this.prefix = options.prefix ?? 'mcp';
204
+ }
205
+ /**
206
+ * Initialize the MCP connection (send initialize handshake).
207
+ */
208
+ async initialize(clientInfo) {
209
+ if (this.initialized)
210
+ return;
211
+ const response = await this.transport.send({
212
+ jsonrpc: '2.0',
213
+ id: 0,
214
+ method: 'initialize',
215
+ params: {
216
+ protocolVersion: '2024-11-05',
217
+ capabilities: {},
218
+ clientInfo: clientInfo ?? { name: 'network-ai', version: '5.0.0' },
219
+ },
220
+ });
221
+ if (response.error) {
222
+ throw new Error(`MCP initialize failed: ${response.error.message}`);
223
+ }
224
+ this.initialized = true;
225
+ }
226
+ /**
227
+ * List available tools from the remote MCP server.
228
+ * Results are cached for `toolCacheTtlMs`.
229
+ */
230
+ async listTools() {
231
+ if (!this.initialized)
232
+ await this.initialize();
233
+ const now = Date.now();
234
+ if (this.toolCache && (now - this.toolCacheTime) < this.toolCacheTtlMs) {
235
+ return this.toolCache;
236
+ }
237
+ const response = await this.transport.send({
238
+ jsonrpc: '2.0',
239
+ id: 0,
240
+ method: 'tools/list',
241
+ });
242
+ if (response.error) {
243
+ throw new Error(`tools/list failed: ${response.error.message}`);
244
+ }
245
+ const result = response.result;
246
+ const tools = result?.tools ?? [];
247
+ this.toolCache = tools;
248
+ this.toolCacheTime = now;
249
+ // Update tool info registry
250
+ for (const tool of tools) {
251
+ if (!this.toolInfo.has(tool.name)) {
252
+ this.toolInfo.set(tool.name, {
253
+ tool,
254
+ serverPrefix: this.prefix,
255
+ lastDiscovered: now,
256
+ callCount: 0,
257
+ errorCount: 0,
258
+ });
259
+ }
260
+ }
261
+ this.emit('tools-discovered', tools);
262
+ return tools;
263
+ }
264
+ /**
265
+ * Call a tool on the remote MCP server.
266
+ */
267
+ async callTool(name, args) {
268
+ if (!this.initialized)
269
+ await this.initialize();
270
+ const info = this.toolInfo.get(name);
271
+ if (info)
272
+ info.callCount++;
273
+ const resultPromise = this.transport.send({
274
+ jsonrpc: '2.0',
275
+ id: 0,
276
+ method: 'tools/call',
277
+ params: { name, arguments: args },
278
+ });
279
+ const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool call timeout: ${name}`)), this.callTimeoutMs));
280
+ try {
281
+ const response = await Promise.race([resultPromise, timeoutPromise]);
282
+ if (response.error) {
283
+ if (info)
284
+ info.errorCount++;
285
+ return {
286
+ content: [{ type: 'text', text: response.error.message }],
287
+ isError: true,
288
+ };
289
+ }
290
+ const result = response.result;
291
+ return result ?? { content: [{ type: 'text', text: 'No result' }] };
292
+ }
293
+ catch (err) {
294
+ if (info)
295
+ info.errorCount++;
296
+ throw err;
297
+ }
298
+ }
299
+ /** Close the transport connection */
300
+ async close() {
301
+ await this.transport.close();
302
+ this.toolCache = null;
303
+ this.initialized = false;
304
+ }
305
+ /** Get info about discovered tools */
306
+ getToolInfo() {
307
+ return [...this.toolInfo.values()];
308
+ }
309
+ /** Invalidate the tool cache to force re-discovery */
310
+ invalidateCache() {
311
+ this.toolCache = null;
312
+ this.toolCacheTime = 0;
313
+ }
314
+ /** Get the prefix used for agent naming */
315
+ getPrefix() {
316
+ return this.prefix;
317
+ }
318
+ }
319
+ exports.MCPToolConsumer = MCPToolConsumer;
320
+ //# sourceMappingURL=mcp-tool-consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tool-consumer.js","sourceRoot":"","sources":["../../lib/mcp-tool-consumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * MetricsRegistry — Zero-dependency Prometheus-compatible metrics.
3
+ *
4
+ * Provides Counter, Gauge, and Histogram metric types with label support.
5
+ * Exports metrics in Prometheus text exposition format for scraping.
6
+ *
7
+ * No runtime dependencies — drop-in for any HTTP server or the MCP endpoint.
8
+ *
9
+ * @module Metrics
10
+ */
11
+ /** Supported metric types */
12
+ export type MetricType = 'counter' | 'gauge' | 'histogram';
13
+ /** A set of label key-value pairs */
14
+ export type Labels = Record<string, string>;
15
+ /** Configuration for a histogram */
16
+ export interface HistogramBuckets {
17
+ /** Upper bounds for each bucket (must be sorted ascending) */
18
+ boundaries: number[];
19
+ }
20
+ /** Monotonically increasing counter */
21
+ export declare class Counter {
22
+ readonly name: string;
23
+ readonly help: string;
24
+ private series;
25
+ private labelMap;
26
+ constructor(name: string, help: string);
27
+ inc(labels?: Labels, amount?: number): void;
28
+ get(labels?: Labels): number;
29
+ /** Prometheus text lines */
30
+ expose(): string;
31
+ }
32
+ /** Gauge — can go up or down */
33
+ export declare class Gauge {
34
+ readonly name: string;
35
+ readonly help: string;
36
+ private series;
37
+ private labelMap;
38
+ constructor(name: string, help: string);
39
+ set(labels: Labels, value: number): void;
40
+ set(value: number): void;
41
+ inc(labels?: Labels, amount?: number): void;
42
+ dec(labels?: Labels, amount?: number): void;
43
+ get(labels?: Labels): number;
44
+ expose(): string;
45
+ }
46
+ /** Histogram with configurable buckets */
47
+ export declare class Histogram {
48
+ readonly name: string;
49
+ readonly help: string;
50
+ readonly boundaries: number[];
51
+ private series;
52
+ private labelMap;
53
+ constructor(name: string, help: string, buckets?: HistogramBuckets);
54
+ observe(labels: Labels, value: number): void;
55
+ observe(value: number): void;
56
+ expose(): string;
57
+ }
58
+ /**
59
+ * Central metrics registry. Collects all metrics and exposes them in
60
+ * Prometheus text format.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const registry = new MetricsRegistry();
65
+ * const delegations = registry.counter('nai_delegations_total', 'Total delegations');
66
+ * const activeAgents = registry.gauge('nai_active_agents', 'Currently active agents');
67
+ * const latency = registry.histogram('nai_delegation_duration_ms', 'Delegation latency');
68
+ *
69
+ * delegations.inc({ agent: 'planner' });
70
+ * activeAgents.set(5);
71
+ * latency.observe({ agent: 'planner' }, 142);
72
+ *
73
+ * const text = registry.expose(); // Prometheus text exposition format
74
+ * ```
75
+ */
76
+ export declare class MetricsRegistry {
77
+ private counters;
78
+ private gauges;
79
+ private histograms;
80
+ /** Create or retrieve a counter */
81
+ counter(name: string, help: string): Counter;
82
+ /** Create or retrieve a gauge */
83
+ gauge(name: string, help: string): Gauge;
84
+ /** Create or retrieve a histogram */
85
+ histogram(name: string, help: string, buckets?: HistogramBuckets): Histogram;
86
+ /**
87
+ * Export all registered metrics in Prometheus text exposition format.
88
+ */
89
+ expose(): string;
90
+ /** Get a specific counter by name */
91
+ getCounter(name: string): Counter | undefined;
92
+ /** Get a specific gauge by name */
93
+ getGauge(name: string): Gauge | undefined;
94
+ /** Get a specific histogram by name */
95
+ getHistogram(name: string): Histogram | undefined;
96
+ /** Total number of registered metrics */
97
+ get size(): number;
98
+ }
99
+ /**
100
+ * Create a pre-configured MetricsRegistry with standard orchestrator metrics.
101
+ *
102
+ * Returns the registry and named handles to the individual metrics.
103
+ */
104
+ export declare function createOrchestratorMetrics(): {
105
+ registry: MetricsRegistry;
106
+ delegationsTotal: Counter;
107
+ delegationErrors: Counter;
108
+ permissionChecks: Counter;
109
+ permissionDenials: Counter;
110
+ injectionBlocks: Counter;
111
+ qualityRejections: Counter;
112
+ blackboardWrites: Counter;
113
+ activeAgents: Gauge;
114
+ blackboardSize: Gauge;
115
+ budgetUsedPercent: Gauge;
116
+ delegationDurationMs: Histogram;
117
+ adapterDurationMs: Histogram;
118
+ };
119
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../lib/metrics.ts"],"names":[],"mappings":"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"}