@zhivex-ai/core 0.4.0 → 0.5.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 (64) hide show
  1. package/dist/agent-approval.d.ts +6 -0
  2. package/dist/agent-approval.d.ts.map +1 -0
  3. package/dist/agent-approval.js +38 -0
  4. package/dist/agent-approval.js.map +1 -0
  5. package/dist/agent-handoff.d.ts +11 -0
  6. package/dist/agent-handoff.d.ts.map +1 -0
  7. package/dist/agent-handoff.js +20 -0
  8. package/dist/agent-handoff.js.map +1 -0
  9. package/dist/agent-store.d.ts +20 -0
  10. package/dist/agent-store.d.ts.map +1 -0
  11. package/dist/agent-store.js +252 -0
  12. package/dist/agent-store.js.map +1 -0
  13. package/dist/agent.d.ts +8 -0
  14. package/dist/agent.d.ts.map +1 -0
  15. package/dist/agent.js +701 -0
  16. package/dist/agent.js.map +1 -0
  17. package/dist/catalog.js +1 -1
  18. package/dist/catalog.js.map +1 -1
  19. package/dist/errors.d.ts +8 -0
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +9 -0
  22. package/dist/errors.js.map +1 -1
  23. package/dist/generate-text.d.ts.map +1 -1
  24. package/dist/generate-text.js +87 -9
  25. package/dist/generate-text.js.map +1 -1
  26. package/dist/index.d.ts +13 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +10 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/live-agent.d.ts +3 -0
  31. package/dist/live-agent.d.ts.map +1 -0
  32. package/dist/live-agent.js +565 -0
  33. package/dist/live-agent.js.map +1 -0
  34. package/dist/mcp.d.ts +40 -0
  35. package/dist/mcp.d.ts.map +1 -0
  36. package/dist/mcp.js +167 -0
  37. package/dist/mcp.js.map +1 -0
  38. package/dist/messages.d.ts +9 -1
  39. package/dist/messages.d.ts.map +1 -1
  40. package/dist/messages.js +55 -0
  41. package/dist/messages.js.map +1 -1
  42. package/dist/observability.d.ts +51 -0
  43. package/dist/observability.d.ts.map +1 -0
  44. package/dist/observability.js +276 -0
  45. package/dist/observability.js.map +1 -0
  46. package/dist/realtime.d.ts +52 -0
  47. package/dist/realtime.d.ts.map +1 -0
  48. package/dist/realtime.js +304 -0
  49. package/dist/realtime.js.map +1 -0
  50. package/dist/stream.d.ts +5 -2
  51. package/dist/stream.d.ts.map +1 -1
  52. package/dist/stream.js +1 -0
  53. package/dist/stream.js.map +1 -1
  54. package/dist/tool-registry.d.ts +17 -0
  55. package/dist/tool-registry.d.ts.map +1 -0
  56. package/dist/tool-registry.js +74 -0
  57. package/dist/tool-registry.js.map +1 -0
  58. package/dist/types.d.ts +589 -6
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/ui.d.ts +4 -2
  61. package/dist/ui.d.ts.map +1 -1
  62. package/dist/ui.js +47 -0
  63. package/dist/ui.js.map +1 -1
  64. package/package.json +1 -1
@@ -0,0 +1,565 @@
1
+ import { GuardrailTriggeredError } from "./errors.js";
2
+ import { normalizeMessages } from "./generate-text.js";
3
+ import { createTextMessage, getTextFromParts, isCallableToolDefinition, serializeJsonValue, toolResultPart } from "./messages.js";
4
+ import { toToolSet } from "./tool-registry.js";
5
+ const randomId = (prefix) => `${prefix}_${Math.random().toString(36).slice(2, 10)}`;
6
+ const joinInstructions = (...parts) => {
7
+ const content = parts.map((part) => part?.trim()).filter((part) => Boolean(part));
8
+ return content.length ? content.join("\n\n") : undefined;
9
+ };
10
+ const cloneMetadata = (...values) => {
11
+ const merged = Object.assign({}, ...values.filter(Boolean));
12
+ return Object.keys(merged).length ? merged : undefined;
13
+ };
14
+ const cloneState = (state) => JSON.parse(JSON.stringify(state));
15
+ const createBaseState = (provider, modelId, initialMessages, metadata, agentId, runId) => {
16
+ const startedAt = Date.now();
17
+ return {
18
+ runId,
19
+ agentId,
20
+ provider,
21
+ modelId,
22
+ status: "running",
23
+ messages: initialMessages,
24
+ steps: [],
25
+ toolResults: [],
26
+ currentStep: 0,
27
+ maxSteps: 1,
28
+ outputText: "",
29
+ pendingApprovals: [],
30
+ metadata,
31
+ startedAt,
32
+ updatedAt: startedAt
33
+ };
34
+ };
35
+ const createFailedState = (state, message) => ({
36
+ ...state,
37
+ status: "failed",
38
+ error: { message },
39
+ updatedAt: Date.now()
40
+ });
41
+ const applyGuardrailFailure = (state, stage, trigger) => ({
42
+ ...state,
43
+ status: "failed",
44
+ error: {
45
+ message: trigger.reason ?? `Agent ${stage} guardrail triggered.`
46
+ },
47
+ updatedAt: Date.now()
48
+ });
49
+ const emitTelemetryEvent = async (agent, event) => {
50
+ await agent.onTelemetryEvent?.(event);
51
+ };
52
+ const persistState = async (agent, state) => {
53
+ state.updatedAt = Date.now();
54
+ await agent.store?.save(cloneState(state));
55
+ await emitTelemetryEvent(agent, {
56
+ type: "state-saved",
57
+ runId: state.runId,
58
+ agentId: state.agentId,
59
+ status: state.status
60
+ });
61
+ await agent.memory?.save?.({
62
+ runId: state.runId,
63
+ agentId: state.agentId,
64
+ state: cloneState(state),
65
+ metadata: state.metadata
66
+ });
67
+ };
68
+ const runGuardrails = async (agent, state, stage, guardrails, requestFactory) => {
69
+ for (const [index, guardrail] of (guardrails ?? []).entries()) {
70
+ const trigger = await guardrail(requestFactory(index));
71
+ if (!trigger?.triggered) {
72
+ continue;
73
+ }
74
+ await agent.onTelemetryEvent?.({
75
+ type: "guardrail-triggered",
76
+ runId: state.runId,
77
+ agentId: state.agentId,
78
+ stage,
79
+ reason: trigger.reason ?? `Agent ${stage} guardrail #${index + 1} triggered.`,
80
+ metadata: trigger.metadata
81
+ });
82
+ return trigger;
83
+ }
84
+ return undefined;
85
+ };
86
+ const emitRunStartTelemetry = async (agent, state, memoryMessages) => {
87
+ await emitTelemetryEvent(agent, {
88
+ type: "run-start",
89
+ runId: state.runId,
90
+ agentId: state.agentId,
91
+ provider: state.provider,
92
+ modelId: state.modelId,
93
+ maxSteps: state.maxSteps
94
+ });
95
+ if (memoryMessages.length) {
96
+ await emitTelemetryEvent(agent, {
97
+ type: "memory-loaded",
98
+ runId: state.runId,
99
+ agentId: state.agentId,
100
+ messageCount: memoryMessages.length
101
+ });
102
+ }
103
+ };
104
+ const emitRunFinishTelemetry = async (agent, state) => {
105
+ await emitTelemetryEvent(agent, {
106
+ type: "run-finish",
107
+ runId: state.runId,
108
+ agentId: state.agentId,
109
+ status: state.status,
110
+ state: cloneState(state)
111
+ });
112
+ };
113
+ const withToolTimeout = async (operation, timeoutMs) => {
114
+ if (!timeoutMs) {
115
+ return operation;
116
+ }
117
+ return new Promise((resolve, reject) => {
118
+ const timer = setTimeout(() => reject(new Error(`Tool execution timed out after ${timeoutMs}ms.`)), timeoutMs);
119
+ operation
120
+ .then((value) => {
121
+ clearTimeout(timer);
122
+ resolve(value);
123
+ })
124
+ .catch((error) => {
125
+ clearTimeout(timer);
126
+ reject(error);
127
+ });
128
+ });
129
+ };
130
+ const injectContextMessages = (messages, extraMessages) => {
131
+ if (!extraMessages.length) {
132
+ return messages;
133
+ }
134
+ if (messages[0]?.role === "system") {
135
+ return [messages[0], ...extraMessages, ...messages.slice(1)];
136
+ }
137
+ return [...extraMessages, ...messages];
138
+ };
139
+ const textFromMessage = (message) => getTextFromParts(message.parts).trim();
140
+ const createResult = (state) => ({
141
+ status: state.status,
142
+ outputText: state.outputText,
143
+ messages: state.messages,
144
+ toolResults: state.toolResults,
145
+ state,
146
+ error: state.error
147
+ });
148
+ const createBroadcast = () => {
149
+ const subscribers = new Set();
150
+ const history = [];
151
+ let done = false;
152
+ const publish = (value) => {
153
+ history.push(value);
154
+ for (const subscriber of subscribers) {
155
+ subscriber(value);
156
+ }
157
+ if (value.done) {
158
+ done = true;
159
+ }
160
+ };
161
+ const stream = async function* () {
162
+ let cursor = 0;
163
+ while (true) {
164
+ while (cursor < history.length) {
165
+ const item = history[cursor];
166
+ cursor += 1;
167
+ if (item.done) {
168
+ return;
169
+ }
170
+ yield item.value;
171
+ }
172
+ if (done) {
173
+ return;
174
+ }
175
+ await new Promise((resolve) => {
176
+ const subscriber = (value) => {
177
+ subscribers.delete(subscriber);
178
+ resolve(value);
179
+ };
180
+ subscribers.add(subscriber);
181
+ });
182
+ }
183
+ };
184
+ return {
185
+ publish,
186
+ stream
187
+ };
188
+ };
189
+ const resolveApproval = async (options) => {
190
+ const policy = options.input.toolApprovalPolicy ?? options.agent.toolApprovalPolicy;
191
+ const request = {
192
+ toolCall: options.call,
193
+ tool: options.tool,
194
+ input: options.parsedInput,
195
+ step: 1,
196
+ model: options.agent.model,
197
+ realtimeConfig: options.realtimeConfig
198
+ };
199
+ const decision = !policy
200
+ ? options.tool.requiresApproval
201
+ ? {
202
+ approved: false,
203
+ reason: `Tool "${options.call.name}" requires approval, but no toolApprovalPolicy is configured.`
204
+ }
205
+ : { approved: true }
206
+ : await policy(request);
207
+ const normalized = typeof decision === "boolean"
208
+ ? {
209
+ approved: decision,
210
+ reason: decision ? undefined : `Tool "${options.call.name}" was denied by the approval policy.`
211
+ }
212
+ : (decision ?? { approved: true });
213
+ await emitTelemetryEvent(options.agent, {
214
+ type: "tool-approval",
215
+ runId: options.state.runId,
216
+ agentId: options.state.agentId,
217
+ toolCall: options.call,
218
+ approved: normalized.approved,
219
+ reason: normalized.reason,
220
+ metadata: normalized.metadata
221
+ });
222
+ return normalized;
223
+ };
224
+ export const streamLiveAgent = (agent, input = {}) => {
225
+ const broadcast = createBroadcast();
226
+ let resolveSession;
227
+ let rejectSession;
228
+ const sessionPromise = new Promise((resolve, reject) => {
229
+ resolveSession = resolve;
230
+ rejectSession = reject;
231
+ });
232
+ const runner = (async () => {
233
+ const runId = input.runId ?? randomId("run");
234
+ const metadata = cloneMetadata(agent.metadata, input.metadata);
235
+ const memoryMessages = agent.memory
236
+ ? await agent.memory.load({
237
+ runId,
238
+ agentId: agent.id,
239
+ metadata
240
+ })
241
+ : [];
242
+ let messages = normalizeMessages({
243
+ prompt: input.prompt,
244
+ messages: input.messages,
245
+ system: joinInstructions(agent.instructions, input.system)
246
+ });
247
+ messages = injectContextMessages(messages, memoryMessages);
248
+ const state = createBaseState(agent.model.provider, agent.model.modelId, messages, metadata, agent.id, runId);
249
+ await emitRunStartTelemetry(agent, state, memoryMessages);
250
+ broadcast.publish({
251
+ done: false,
252
+ value: {
253
+ type: "agent-run-start",
254
+ currentStep: 1,
255
+ maxSteps: 1
256
+ }
257
+ });
258
+ const inputGuardrail = await runGuardrails(agent, state, "input", agent.inputGuardrails, () => ({
259
+ runId: state.runId,
260
+ agentId: state.agentId,
261
+ messages,
262
+ metadata: state.metadata
263
+ }));
264
+ if (inputGuardrail) {
265
+ const failedState = applyGuardrailFailure(state, "input", inputGuardrail);
266
+ await persistState(agent, failedState);
267
+ await emitRunFinishTelemetry(agent, failedState);
268
+ const error = new GuardrailTriggeredError("input", failedState.error?.message ?? "Agent input guardrail triggered.", {
269
+ metadata: inputGuardrail.metadata
270
+ });
271
+ broadcast.publish({ done: false, value: { type: "error", error } });
272
+ broadcast.publish({
273
+ done: false,
274
+ value: {
275
+ type: "agent-run-finish",
276
+ status: failedState.status,
277
+ state: failedState
278
+ }
279
+ });
280
+ broadcast.publish({ done: true, value: undefined });
281
+ rejectSession(error);
282
+ return createResult(failedState);
283
+ }
284
+ const resolvedTools = {
285
+ ...(toToolSet(agent.tools) ?? {}),
286
+ ...(toToolSet(input.tools) ?? {})
287
+ };
288
+ const realtimeConfig = {
289
+ autoResponse: true,
290
+ ...input.realtime,
291
+ instructions: joinInstructions(agent.instructions, input.system, input.realtime?.instructions),
292
+ tools: Object.keys(resolvedTools).length ? resolvedTools : undefined,
293
+ toolChoice: input.toolChoice ?? input.realtime?.toolChoice ?? agent.toolChoice,
294
+ providerOptions: {
295
+ ...(agent.providerOptions ?? {}),
296
+ ...(input.providerOptions ?? {}),
297
+ ...(input.realtime?.providerOptions ?? {})
298
+ }
299
+ };
300
+ let session;
301
+ let sessionError;
302
+ let transcript = [...messages];
303
+ const toolResults = [];
304
+ const assistantBuffer = [];
305
+ let finalText = "";
306
+ try {
307
+ session = await agent.model.connect(realtimeConfig, input.connectOptions);
308
+ resolveSession(session);
309
+ if (input.messages) {
310
+ for (const message of input.messages) {
311
+ if (message.role !== "user") {
312
+ continue;
313
+ }
314
+ const text = textFromMessage(message);
315
+ if (text) {
316
+ await session.sendText(text);
317
+ }
318
+ }
319
+ }
320
+ else if (input.prompt) {
321
+ await session.sendText(input.prompt);
322
+ }
323
+ for await (const event of session.eventStream()) {
324
+ broadcast.publish({ done: false, value: event });
325
+ if (event.type === "realtime-text-delta") {
326
+ assistantBuffer.push(event.textDelta);
327
+ broadcast.publish({
328
+ done: false,
329
+ value: {
330
+ type: "text-delta",
331
+ textDelta: event.textDelta
332
+ }
333
+ });
334
+ continue;
335
+ }
336
+ if (event.type === "realtime-transcript") {
337
+ if (event.role === "user" && event.isFinal && event.text) {
338
+ transcript.push(createTextMessage("user", event.text));
339
+ }
340
+ if (event.role === "assistant" && event.isFinal) {
341
+ const text = event.text || assistantBuffer.join("");
342
+ if (text) {
343
+ finalText = text;
344
+ transcript.push(createTextMessage("assistant", text));
345
+ assistantBuffer.length = 0;
346
+ }
347
+ }
348
+ continue;
349
+ }
350
+ if (event.type === "realtime-tool-call") {
351
+ broadcast.publish({
352
+ done: false,
353
+ value: {
354
+ type: "tool-call",
355
+ toolCall: event.toolCall
356
+ }
357
+ });
358
+ const definition = resolvedTools[event.toolCall.name];
359
+ if (!definition) {
360
+ const result = {
361
+ toolCallId: event.toolCall.id,
362
+ toolName: event.toolCall.name,
363
+ error: { message: `Tool "${event.toolCall.name}" is not registered.` },
364
+ isError: true
365
+ };
366
+ toolResults.push(result);
367
+ transcript.push({
368
+ role: "tool",
369
+ parts: [toolResultPart(result)]
370
+ });
371
+ await session.sendToolResult(result);
372
+ continue;
373
+ }
374
+ if (!isCallableToolDefinition(definition)) {
375
+ const result = {
376
+ toolCallId: event.toolCall.id,
377
+ toolName: event.toolCall.name,
378
+ error: { message: `Tool "${event.toolCall.name}" is provider-hosted and cannot be executed locally.` },
379
+ isError: true
380
+ };
381
+ toolResults.push(result);
382
+ transcript.push({
383
+ role: "tool",
384
+ parts: [toolResultPart(result)]
385
+ });
386
+ await session.sendToolResult(result);
387
+ continue;
388
+ }
389
+ const parsed = definition.schema.safeParse(event.toolCall.input);
390
+ if (!parsed.success) {
391
+ const result = {
392
+ toolCallId: event.toolCall.id,
393
+ toolName: event.toolCall.name,
394
+ error: { message: `Invalid input for tool "${event.toolCall.name}": ${parsed.error.message}` },
395
+ isError: true
396
+ };
397
+ toolResults.push(result);
398
+ transcript.push({
399
+ role: "tool",
400
+ parts: [toolResultPart(result)]
401
+ });
402
+ await session.sendToolResult(result);
403
+ continue;
404
+ }
405
+ const approval = await resolveApproval({
406
+ agent,
407
+ input,
408
+ state,
409
+ call: event.toolCall,
410
+ parsedInput: serializeJsonValue(parsed.data),
411
+ tool: definition,
412
+ realtimeConfig
413
+ });
414
+ if (!approval.approved) {
415
+ const result = {
416
+ toolCallId: event.toolCall.id,
417
+ toolName: event.toolCall.name,
418
+ error: {
419
+ message: approval.reason ?? `Tool "${event.toolCall.name}" was denied by the approval policy.`
420
+ },
421
+ isError: true
422
+ };
423
+ toolResults.push(result);
424
+ transcript.push({
425
+ role: "tool",
426
+ parts: [toolResultPart(result)]
427
+ });
428
+ await session.sendToolResult(result);
429
+ continue;
430
+ }
431
+ try {
432
+ const output = serializeJsonValue(await withToolTimeout(Promise.resolve(definition.execute(parsed.data)), (input.toolExecution ?? agent.toolExecution)?.timeoutMs));
433
+ const result = {
434
+ toolCallId: event.toolCall.id,
435
+ toolName: event.toolCall.name,
436
+ output,
437
+ isError: false
438
+ };
439
+ toolResults.push(result);
440
+ transcript.push({
441
+ role: "tool",
442
+ parts: [toolResultPart(result)]
443
+ });
444
+ await session.sendToolResult(result);
445
+ }
446
+ catch (error) {
447
+ const result = {
448
+ toolCallId: event.toolCall.id,
449
+ toolName: event.toolCall.name,
450
+ error: { message: error instanceof Error ? error.message : "Tool execution failed." },
451
+ isError: true
452
+ };
453
+ toolResults.push(result);
454
+ transcript.push({
455
+ role: "tool",
456
+ parts: [toolResultPart(result)]
457
+ });
458
+ await session.sendToolResult(result);
459
+ }
460
+ continue;
461
+ }
462
+ if (event.type === "realtime-error") {
463
+ sessionError = event.error ?? new Error(event.message ?? "Realtime session failed.");
464
+ continue;
465
+ }
466
+ if (event.type === "realtime-end" && event.reason === "error") {
467
+ sessionError ??= new Error(typeof event.providerMetadata?.message === "string" ? event.providerMetadata.message : "Realtime session failed.");
468
+ }
469
+ if (event.type === "realtime-response-complete" || event.type === "realtime-end") {
470
+ break;
471
+ }
472
+ }
473
+ if (sessionError) {
474
+ throw sessionError;
475
+ }
476
+ if (assistantBuffer.length && !finalText) {
477
+ finalText = assistantBuffer.join("");
478
+ if (finalText) {
479
+ transcript.push(createTextMessage("assistant", finalText));
480
+ }
481
+ }
482
+ state.messages = transcript;
483
+ state.toolResults = toolResults;
484
+ state.outputText = finalText;
485
+ state.status = "completed";
486
+ state.updatedAt = Date.now();
487
+ state.error = undefined;
488
+ const result = createResult(state);
489
+ const outputGuardrail = await runGuardrails(agent, state, "output", agent.outputGuardrails, () => ({
490
+ runId: state.runId,
491
+ agentId: state.agentId,
492
+ state: cloneState(state),
493
+ output: result,
494
+ metadata: state.metadata
495
+ }));
496
+ const finalState = outputGuardrail ? applyGuardrailFailure(state, "output", outputGuardrail) : state;
497
+ if (outputGuardrail) {
498
+ broadcast.publish({
499
+ done: false,
500
+ value: {
501
+ type: "error",
502
+ error: new GuardrailTriggeredError("output", finalState.error?.message ?? "Agent output guardrail triggered.", {
503
+ metadata: outputGuardrail.metadata
504
+ })
505
+ }
506
+ });
507
+ }
508
+ await persistState(agent, finalState);
509
+ await emitRunFinishTelemetry(agent, finalState);
510
+ broadcast.publish({
511
+ done: false,
512
+ value: {
513
+ type: "agent-run-finish",
514
+ status: finalState.status,
515
+ state: finalState
516
+ }
517
+ });
518
+ broadcast.publish({ done: true, value: undefined });
519
+ return createResult(finalState);
520
+ }
521
+ catch (error) {
522
+ if (!session) {
523
+ rejectSession(error);
524
+ }
525
+ const failedState = createFailedState(state, error instanceof Error ? error.message : String(error));
526
+ await persistState(agent, failedState);
527
+ await emitRunFinishTelemetry(agent, failedState);
528
+ broadcast.publish({
529
+ done: false,
530
+ value: {
531
+ type: "error",
532
+ error: error instanceof Error ? error : new Error(String(error))
533
+ }
534
+ });
535
+ broadcast.publish({
536
+ done: false,
537
+ value: {
538
+ type: "agent-run-finish",
539
+ status: failedState.status,
540
+ state: failedState
541
+ }
542
+ });
543
+ broadcast.publish({ done: true, value: undefined });
544
+ throw error;
545
+ }
546
+ finally {
547
+ if (session) {
548
+ await session.close();
549
+ }
550
+ }
551
+ })();
552
+ return {
553
+ eventStream: broadcast.stream(),
554
+ textStream: (async function* () {
555
+ for await (const event of broadcast.stream()) {
556
+ if (event.type === "text-delta") {
557
+ yield event.textDelta;
558
+ }
559
+ }
560
+ })(),
561
+ session: sessionPromise,
562
+ collect: () => runner
563
+ };
564
+ };
565
+ //# sourceMappingURL=live-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-agent.js","sourceRoot":"","sources":["../src/live-agent.ts"],"names":[],"mappings":"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"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { type ToolRegistry } from "./tool-registry.js";
2
+ import type { JsonValue, ToolSet } from "./types.js";
3
+ export interface McpToolAnnotations {
4
+ readOnlyHint?: boolean;
5
+ destructiveHint?: boolean;
6
+ idempotentHint?: boolean;
7
+ openWorldHint?: boolean;
8
+ title?: string;
9
+ }
10
+ export interface McpListedTool {
11
+ name: string;
12
+ description?: string;
13
+ inputSchema?: JsonValue;
14
+ annotations?: McpToolAnnotations;
15
+ }
16
+ export interface McpListToolsResponse {
17
+ tools: McpListedTool[];
18
+ }
19
+ export interface McpCallToolRequest {
20
+ name: string;
21
+ arguments?: JsonValue;
22
+ }
23
+ export interface McpCallToolResponse {
24
+ content?: JsonValue;
25
+ structuredContent?: JsonValue;
26
+ isError?: boolean;
27
+ [key: string]: JsonValue | undefined;
28
+ }
29
+ export interface McpClient {
30
+ listTools(): Promise<McpListToolsResponse | McpListedTool[]>;
31
+ callTool(input: McpCallToolRequest): Promise<JsonValue | McpCallToolResponse>;
32
+ }
33
+ export interface McpToolSetOptions {
34
+ toolNamePrefix?: string;
35
+ includeTools?: string[];
36
+ excludeTools?: string[];
37
+ }
38
+ export declare const createMcpToolSet: (client: McpClient, options?: McpToolSetOptions) => Promise<ToolSet>;
39
+ export declare const createMcpToolRegistry: (client: McpClient, options?: McpToolSetOptions) => Promise<ToolRegistry>;
40
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,OAAO,CAAC,oBAAoB,GAAG,aAAa,EAAE,CAAC,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,GAAG,mBAAmB,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AA0KD,eAAO,MAAM,gBAAgB,GAAU,QAAQ,SAAS,EAAE,UAAS,iBAAsB,KAAG,OAAO,CAAC,OAAO,CAkD1G,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,SAAS,EACjB,UAAS,iBAAsB,KAC9B,OAAO,CAAC,YAAY,CAAgE,CAAC"}