@zauso-ai/capstan-agent 0.2.0 → 0.3.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.
package/dist/a2a.d.ts CHANGED
@@ -29,6 +29,11 @@ export interface A2ATask {
29
29
  output?: unknown;
30
30
  error?: string;
31
31
  }
32
+ /** SSE event for A2A streaming responses. */
33
+ export interface A2AStreamEvent {
34
+ type: "task_status" | "task_result";
35
+ task: A2ATask;
36
+ }
32
37
  /** JSON-RPC response envelope. */
33
38
  interface A2AJsonRpcResponse {
34
39
  jsonrpc: "2.0";
@@ -45,6 +50,14 @@ interface A2AJsonRpcResponse {
45
50
  * routes. Each route is mapped to an A2A "skill".
46
51
  */
47
52
  export declare function generateA2AAgentCard(config: AgentConfig, routes: RouteRegistryEntry[]): A2AAgentCard;
53
+ /**
54
+ * Format an A2AStreamEvent as an SSE data line.
55
+ *
56
+ * Each event is serialised as:
57
+ * event: <type>\n
58
+ * data: <json>\n\n
59
+ */
60
+ export declare function formatSseEvent(event: A2AStreamEvent): string;
48
61
  /**
49
62
  * Create an A2A handler that processes JSON-RPC requests according to
50
63
  * Google's Agent-to-Agent protocol.
@@ -56,9 +69,17 @@ export declare function generateA2AAgentCard(config: AgentConfig, routes: RouteR
56
69
  *
57
70
  * Tasks are tracked in an in-memory Map so callers can query status after
58
71
  * submission.
72
+ *
73
+ * When `handleStreamRequest` is used (for `Accept: text/event-stream`
74
+ * requests), the handler returns an `AsyncGenerator` of `A2AStreamEvent`
75
+ * objects that the caller can pipe to an SSE response. Progress events
76
+ * (`task_status`) are emitted as the task transitions through its
77
+ * lifecycle, followed by a final `task_result` event on completion or
78
+ * failure.
59
79
  */
60
80
  export declare function createA2AHandler(config: AgentConfig, routes: RouteRegistryEntry[], executeRoute: (method: string, path: string, input: unknown) => Promise<unknown>): {
61
81
  handleRequest: (body: unknown) => Promise<A2AJsonRpcResponse>;
82
+ handleStreamRequest: (body: unknown) => AsyncGenerator<A2AStreamEvent, void, unknown>;
62
83
  getAgentCard: () => A2AAgentCard;
63
84
  };
64
85
  export {};
package/dist/a2a.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../src/a2a.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAOlE,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE;QACZ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC,CAAC,CAAC;IACH,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EACF,WAAW,GACX,SAAS,GACT,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,kCAAkC;AAClC,UAAU,kBAAkB;IAC1B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D;AAkBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,kBAAkB,EAAE,GAC3B,YAAY,CAkCd;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,kBAAkB,EAAE,EAC5B,YAAY,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,OAAO,CAAC,GACpB;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,YAAY,EAAE,MAAM,YAAY,CAAC;CAClC,CA8HA"}
1
+ {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../src/a2a.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQlE,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE;QACZ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC,CAAC,CAAC;IACH,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EACF,WAAW,GACX,SAAS,GACT,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;CACf;AAUD,kCAAkC;AAClC,UAAU,kBAAkB;IAC1B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D;AAkBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,kBAAkB,EAAE,GAC3B,YAAY,CAkCd;AA4BD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,kBAAkB,EAAE,EAC5B,YAAY,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,OAAO,CAAC,GACpB;IACD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9D,mBAAmB,EAAE,CACnB,IAAI,EAAE,OAAO,KACV,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,YAAY,EAAE,MAAM,YAAY,CAAC;CAClC,CA0RA"}
package/dist/a2a.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { routeToToolName } from "./mcp.js";
2
+ import { withSpan } from "./telemetry.js";
2
3
  // ---------------------------------------------------------------------------
3
4
  // Agent Card generation
4
5
  // ---------------------------------------------------------------------------
@@ -42,7 +43,7 @@ export function generateA2AAgentCard(config, routes) {
42
43
  url: config.baseUrl ?? "http://localhost:3000",
43
44
  version: "1.0.0",
44
45
  capabilities: {
45
- streaming: false,
46
+ streaming: true,
46
47
  pushNotifications: false,
47
48
  },
48
49
  skills,
@@ -71,6 +72,16 @@ function resolveSkill(skillId, routes) {
71
72
  }
72
73
  return null;
73
74
  }
75
+ /**
76
+ * Format an A2AStreamEvent as an SSE data line.
77
+ *
78
+ * Each event is serialised as:
79
+ * event: <type>\n
80
+ * data: <json>\n\n
81
+ */
82
+ export function formatSseEvent(event) {
83
+ return `event: ${event.type}\ndata: ${JSON.stringify(event.task)}\n\n`;
84
+ }
74
85
  /**
75
86
  * Create an A2A handler that processes JSON-RPC requests according to
76
87
  * Google's Agent-to-Agent protocol.
@@ -82,6 +93,13 @@ function resolveSkill(skillId, routes) {
82
93
  *
83
94
  * Tasks are tracked in an in-memory Map so callers can query status after
84
95
  * submission.
96
+ *
97
+ * When `handleStreamRequest` is used (for `Accept: text/event-stream`
98
+ * requests), the handler returns an `AsyncGenerator` of `A2AStreamEvent`
99
+ * objects that the caller can pipe to an SSE response. Progress events
100
+ * (`task_status`) are emitted as the task transitions through its
101
+ * lifecycle, followed by a final `task_result` event on completion or
102
+ * failure.
85
103
  */
86
104
  export function createA2AHandler(config, routes, executeRoute) {
87
105
  const tasks = new Map();
@@ -119,6 +137,68 @@ export function createA2AHandler(config, routes, executeRoute) {
119
137
  tasks.set(taskId, task);
120
138
  // Transition to working.
121
139
  task.status = "working";
140
+ return withSpan("capstan.a2a.tasks/send", {
141
+ "capstan.a2a.method": "tasks/send",
142
+ "capstan.a2a.taskId": taskId,
143
+ "capstan.a2a.skill": skillId,
144
+ }, async (span) => {
145
+ try {
146
+ const result = await executeRoute(resolved.method, resolved.path, params["input"]);
147
+ task.status = "completed";
148
+ task.output = result;
149
+ span?.setAttribute("capstan.a2a.status", "completed");
150
+ }
151
+ catch (err) {
152
+ task.status = "failed";
153
+ task.error =
154
+ err instanceof Error
155
+ ? err.message
156
+ : "Unknown error during execution";
157
+ span?.setAttribute("capstan.a2a.status", "failed");
158
+ }
159
+ return successResponse(reqId, task);
160
+ });
161
+ }
162
+ /**
163
+ * Streaming variant of `handleTasksSend`. Yields SSE events as the task
164
+ * transitions through submitted -> working -> completed/failed.
165
+ */
166
+ async function* handleTasksSendStream(params) {
167
+ const skillId = params["skill"];
168
+ if (!skillId) {
169
+ const errTask = {
170
+ id: generateTaskId(),
171
+ status: "failed",
172
+ skill: "unknown",
173
+ error: "Missing required parameter: skill",
174
+ };
175
+ yield { type: "task_result", task: errTask };
176
+ return;
177
+ }
178
+ const resolved = resolveSkill(skillId, routes);
179
+ if (!resolved) {
180
+ const errTask = {
181
+ id: generateTaskId(),
182
+ status: "failed",
183
+ skill: skillId,
184
+ error: `Unknown skill: ${skillId}`,
185
+ };
186
+ yield { type: "task_result", task: errTask };
187
+ return;
188
+ }
189
+ const taskId = generateTaskId();
190
+ const task = {
191
+ id: taskId,
192
+ status: "submitted",
193
+ skill: skillId,
194
+ input: params["input"],
195
+ };
196
+ tasks.set(taskId, task);
197
+ // Emit submitted status
198
+ yield { type: "task_status", task: { ...task } };
199
+ // Transition to working
200
+ task.status = "working";
201
+ yield { type: "task_status", task: { ...task } };
122
202
  try {
123
203
  const result = await executeRoute(resolved.method, resolved.path, params["input"]);
124
204
  task.status = "completed";
@@ -129,7 +209,8 @@ export function createA2AHandler(config, routes, executeRoute) {
129
209
  task.error =
130
210
  err instanceof Error ? err.message : "Unknown error during execution";
131
211
  }
132
- return successResponse(reqId, task);
212
+ // Emit final result event
213
+ yield { type: "task_result", task: { ...task } };
133
214
  }
134
215
  function handleTasksGet(reqId, params) {
135
216
  const taskId = params["id"];
@@ -154,19 +235,79 @@ export function createA2AHandler(config, routes, executeRoute) {
154
235
  return errorResponse(rpc.id, -32600, "Invalid JSON-RPC version");
155
236
  }
156
237
  const params = rpc.params ?? {};
157
- switch (rpc.method) {
158
- case "tasks/send":
159
- return handleTasksSend(rpc.id, params);
160
- case "tasks/get":
161
- return handleTasksGet(rpc.id, params);
162
- case "agent/card":
163
- return successResponse(rpc.id, agentCard);
164
- default:
165
- return errorResponse(rpc.id, -32601, `Method not found: ${rpc.method}`);
238
+ return withSpan(`capstan.a2a.${rpc.method}`, {
239
+ "capstan.a2a.method": rpc.method,
240
+ }, async (span) => {
241
+ let response;
242
+ switch (rpc.method) {
243
+ case "tasks/send":
244
+ response = await handleTasksSend(rpc.id, params);
245
+ break;
246
+ case "tasks/get":
247
+ response = handleTasksGet(rpc.id, params);
248
+ break;
249
+ case "agent/card":
250
+ response = successResponse(rpc.id, agentCard);
251
+ break;
252
+ default:
253
+ response = errorResponse(rpc.id, -32601, `Method not found: ${rpc.method}`);
254
+ }
255
+ span?.setAttribute("capstan.a2a.status", response.error ? "error" : "ok");
256
+ return response;
257
+ });
258
+ }
259
+ /**
260
+ * SSE streaming request handler.
261
+ *
262
+ * Validates the JSON-RPC envelope and, for `tasks/send`, returns an async
263
+ * generator of `A2AStreamEvent` values. For non-streamable methods the
264
+ * generator yields a single `task_result` event wrapping the synchronous
265
+ * response.
266
+ */
267
+ async function* handleStreamRequest(body) {
268
+ if (body === null ||
269
+ typeof body !== "object" ||
270
+ !("method" in body)) {
271
+ const errTask = {
272
+ id: generateTaskId(),
273
+ status: "failed",
274
+ skill: "unknown",
275
+ error: "Invalid JSON-RPC request",
276
+ };
277
+ yield { type: "task_result", task: errTask };
278
+ return;
279
+ }
280
+ const rpc = body;
281
+ if (rpc.jsonrpc !== "2.0") {
282
+ const errTask = {
283
+ id: generateTaskId(),
284
+ status: "failed",
285
+ skill: "unknown",
286
+ error: "Invalid JSON-RPC version",
287
+ };
288
+ yield { type: "task_result", task: errTask };
289
+ return;
290
+ }
291
+ const params = rpc.params ?? {};
292
+ if (rpc.method === "tasks/send") {
293
+ yield* handleTasksSendStream(params);
294
+ return;
166
295
  }
296
+ // Non-streamable methods: fall back to synchronous handling and wrap
297
+ // the result in a single event.
298
+ const response = await handleRequest(body);
299
+ const fallbackTask = {
300
+ id: generateTaskId(),
301
+ status: response.error ? "failed" : "completed",
302
+ skill: "unknown",
303
+ ...(response.result !== undefined ? { output: response.result } : {}),
304
+ ...(response.error ? { error: response.error.message } : {}),
305
+ };
306
+ yield { type: "task_result", task: fallbackTask };
167
307
  }
168
308
  return {
169
309
  handleRequest,
310
+ handleStreamRequest,
170
311
  getAgentCard: () => agentCard,
171
312
  };
172
313
  }
package/dist/a2a.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../src/a2a.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../src/a2a.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkE1C,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO,QAAQ;SACZ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAmB,EACnB,MAA4B;IAE5B,MAAM,MAAM,GAA2B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1D,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO;YACL,EAAE;YACF,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,gBAAgB,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;YACrC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,EAAE,MAAM,CAAC,OAAO,IAAI,uBAAuB;QAC9C,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE,KAAK;SACzB;QACD,MAAM;QACN,cAAc,EAAE;YACd,OAAO,EAAE,CAAC,QAAQ,CAAC;SACpB;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,iCAAiC;AACjC,SAAS,cAAc;IACrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,OAAO,QAAQ,SAAS,IAAI,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,OAAe,EACf,MAA4B;IAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,OAAO,UAAU,KAAK,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,MAA4B,EAC5B,YAIqB;IAQrB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvD,SAAS,aAAa,CACpB,EAAsC,EACtC,IAAY,EACZ,OAAe,EACf,IAAc;QAEd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,EAAE,IAAI,IAAI;YACd,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SAClE,CAAC;IACJ,CAAC;IAED,SAAS,eAAe,CACtB,EAAsC,EACtC,MAAe;QAEf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,EAAE,IAAI,IAAI;YACd,MAAM;SACP,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,eAAe,CAC5B,KAAkC,EAClC,MAA+B;QAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAuB,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,kBAAkB,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,GAAY;YACpB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;SACvB,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAExB,yBAAyB;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,OAAO,QAAQ,CACb,wBAAwB,EACxB;YACE,oBAAoB,EAAE,YAAY;YAClC,oBAAoB,EAAE,MAAM;YAC5B,mBAAmB,EAAE,OAAO;SAC7B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,IAAI,EACb,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;gBACF,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;gBAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,EAAE,YAAY,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK;oBACR,GAAG,YAAY,KAAK;wBAClB,CAAC,CAAC,GAAG,CAAC,OAAO;wBACb,CAAC,CAAC,gCAAgC,CAAC;gBACvC,IAAI,EAAE,YAAY,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,SAAS,CAAC,CAAC,qBAAqB,CACnC,MAA+B;QAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAuB,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,cAAc,EAAE;gBACpB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,mCAAmC;aAC3C,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,cAAc,EAAE;gBACpB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,kBAAkB,OAAO,EAAE;aACnC,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,GAAY;YACpB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;SACvB,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAExB,wBAAwB;QACxB,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;QAEjD,wBAAwB;QACxB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,IAAI,EACb,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,KAAK;gBACR,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC;QAC1E,CAAC;QAED,0BAA0B;QAC1B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,SAAS,cAAc,CACrB,KAAkC,EAClC,MAA+B;QAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAuB,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,IAAa;QACxC,8BAA8B;QAC9B,IACE,IAAI,KAAK,IAAI;YACb,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,QAAQ,IAAK,IAAe,CAAC,EAC/B,CAAC;YACD,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,GAAG,GAAG,IAAyB,CAAC;QAEtC,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAEhC,OAAO,QAAQ,CACb,eAAe,GAAG,CAAC,MAAM,EAAE,EAC3B;YACE,oBAAoB,EAAE,GAAG,CAAC,MAAM;SACjC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,QAA4B,CAAC;YACjC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,YAAY;oBACf,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,WAAW;oBACd,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,YAAY;oBACf,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACR;oBACE,QAAQ,GAAG,aAAa,CACtB,GAAG,CAAC,EAAE,EACN,CAAC,KAAK,EACN,qBAAqB,GAAG,CAAC,MAAM,EAAE,CAClC,CAAC;YACN,CAAC;YACD,IAAI,EAAE,YAAY,CAChB,oBAAoB,EACpB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAChC,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACjC,IAAa;QAEb,IACE,IAAI,KAAK,IAAI;YACb,OAAO,IAAI,KAAK,QAAQ;YACxB,CAAC,CAAC,QAAQ,IAAK,IAAe,CAAC,EAC/B,CAAC;YACD,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,cAAc,EAAE;gBACpB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,0BAA0B;aAClC,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAyB,CAAC;QAEtC,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,cAAc,EAAE;gBACpB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,0BAA0B;aAClC,CAAC;YACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAEhC,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,qEAAqE;QACrE,gCAAgC;QAChC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAY;YAC5B,EAAE,EAAE,cAAc,EAAE;YACpB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;YAC/C,KAAK,EAAE,SAAS;YAChB,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACpD,CAAC;IAED,OAAO;QACL,aAAa;QACb,mBAAmB;QACnB,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ export interface PaymentMandate {
2
+ /** Unique mandate ID */
3
+ id: string;
4
+ /** Maximum amount authorized */
5
+ maxAmount: number;
6
+ /** Currency code (ISO 4217) */
7
+ currency: string;
8
+ /** Mandate expiry (ISO 8601) */
9
+ expiresAt: string;
10
+ /** User who authorized this mandate */
11
+ authorizedBy: string;
12
+ /** Cryptographic signature of the mandate */
13
+ signature?: string;
14
+ }
15
+ export interface TransactionConfig {
16
+ /** Transaction name for discovery */
17
+ name: string;
18
+ /** Amount calculator */
19
+ amount: (input: unknown) => number;
20
+ /** Currency (default: USD) */
21
+ currency?: string;
22
+ /** Maximum amount per transaction */
23
+ maxAmount?: number;
24
+ }
25
+ export interface TransactionResult {
26
+ transactionId: string;
27
+ amount: number;
28
+ currency: string;
29
+ status: "completed" | "pending" | "failed";
30
+ mandateId?: string;
31
+ }
32
+ /**
33
+ * Define a transactable API endpoint.
34
+ * When an agent calls this, it must present a valid payment mandate.
35
+ */
36
+ export declare function defineTransaction(config: TransactionConfig): TransactionConfig;
37
+ /**
38
+ * Validate a payment mandate.
39
+ */
40
+ export declare function validateMandate(mandate: PaymentMandate): {
41
+ valid: boolean;
42
+ reason?: string;
43
+ };
44
+ /**
45
+ * Create a metered usage tracker for API calls.
46
+ */
47
+ export declare class UsageMeter {
48
+ private usage;
49
+ record(agentId: string, amount: number): void;
50
+ getUsage(agentId: string): {
51
+ calls: number;
52
+ totalAmount: number;
53
+ };
54
+ getAllUsage(): {
55
+ [k: string]: {
56
+ calls: number;
57
+ totalAmount: number;
58
+ };
59
+ };
60
+ reset(): void;
61
+ }
62
+ //# sourceMappingURL=commerce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce.d.ts","sourceRoot":"","sources":["../src/commerce.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACnC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAE9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAO5F;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA6D;IAE1E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO7C,QAAQ,CAAC,OAAO,EAAE,MAAM;eATiB,MAAM;qBAAe,MAAM;;IAUpE,WAAW;;mBAV8B,MAAM;yBAAe,MAAM;;;IAWpE,KAAK;CACN"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Define a transactable API endpoint.
3
+ * When an agent calls this, it must present a valid payment mandate.
4
+ */
5
+ export function defineTransaction(config) {
6
+ return config;
7
+ }
8
+ /**
9
+ * Validate a payment mandate.
10
+ */
11
+ export function validateMandate(mandate) {
12
+ if (!mandate.id)
13
+ return { valid: false, reason: "Missing mandate ID" };
14
+ if (!mandate.maxAmount || mandate.maxAmount <= 0)
15
+ return { valid: false, reason: "Invalid amount" };
16
+ if (!mandate.currency)
17
+ return { valid: false, reason: "Missing currency" };
18
+ if (new Date(mandate.expiresAt) < new Date())
19
+ return { valid: false, reason: "Mandate expired" };
20
+ if (!mandate.authorizedBy)
21
+ return { valid: false, reason: "Missing authorization" };
22
+ return { valid: true };
23
+ }
24
+ /**
25
+ * Create a metered usage tracker for API calls.
26
+ */
27
+ export class UsageMeter {
28
+ usage = new Map();
29
+ record(agentId, amount) {
30
+ const current = this.usage.get(agentId) ?? { calls: 0, totalAmount: 0 };
31
+ current.calls++;
32
+ current.totalAmount += amount;
33
+ this.usage.set(agentId, current);
34
+ }
35
+ getUsage(agentId) { return this.usage.get(agentId) ?? { calls: 0, totalAmount: 0 }; }
36
+ getAllUsage() { return Object.fromEntries(this.usage); }
37
+ reset() { this.usage.clear(); }
38
+ }
39
+ //# sourceMappingURL=commerce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce.js","sourceRoot":"","sources":["../src/commerce.ts"],"names":[],"mappings":"AAkCA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB;IACrD,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACvE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpG,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC3E,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACjG,IAAI,CAAC,OAAO,CAAC,YAAY;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IACpF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAAG,IAAI,GAAG,EAAkD,CAAC;IAE1E,MAAM,CAAC,OAAe,EAAE,MAAc;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,OAAe,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,WAAW,KAAK,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAChC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,17 @@
1
1
  export { generateAgentManifest } from "./manifest.js";
2
- export { createMcpServer, serveMcpStdio, routeToToolName } from "./mcp.js";
2
+ export { createMcpServer, createMcpHttpHandler, serveMcpStdio, routeToToolName, inputSchemaToZodShape, } from "./mcp.js";
3
3
  export { generateOpenApiSpec } from "./openapi.js";
4
- export { generateA2AAgentCard, createA2AHandler, } from "./a2a.js";
5
- export type { A2AAgentCard, A2ATask } from "./a2a.js";
4
+ export { generateA2AAgentCard, createA2AHandler, formatSseEvent, } from "./a2a.js";
5
+ export type { A2AAgentCard, A2ATask, A2AStreamEvent } from "./a2a.js";
6
6
  export { CapabilityRegistry } from "./registry.js";
7
+ export { withSpan } from "./telemetry.js";
8
+ export { createMcpClient } from "./mcp-client.js";
9
+ export type { McpClient, McpClientOptions, McpTool } from "./mcp-client.js";
10
+ export { McpTestHarness, McpHttpTestClient } from "./testing.js";
11
+ export type { McpTestResult } from "./testing.js";
12
+ export { toLangChainTools, toLangChainToolSpecs } from "./langchain.js";
13
+ export type { LangChainToolDefinition, ToLangChainOptions } from "./langchain.js";
7
14
  export type { AgentManifest, RouteRegistryEntry, AgentConfig } from "./types.js";
15
+ export { openaiProvider, anthropicProvider } from "./llm.js";
16
+ export type { LLMProvider, LLMMessage, LLMResponse, LLMStreamChunk, LLMOptions, } from "./llm.js";
8
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClF,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7D,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,11 @@
1
1
  export { generateAgentManifest } from "./manifest.js";
2
- export { createMcpServer, serveMcpStdio, routeToToolName } from "./mcp.js";
2
+ export { createMcpServer, createMcpHttpHandler, serveMcpStdio, routeToToolName, inputSchemaToZodShape, } from "./mcp.js";
3
3
  export { generateOpenApiSpec } from "./openapi.js";
4
- export { generateA2AAgentCard, createA2AHandler, } from "./a2a.js";
4
+ export { generateA2AAgentCard, createA2AHandler, formatSseEvent, } from "./a2a.js";
5
5
  export { CapabilityRegistry } from "./registry.js";
6
+ export { withSpan } from "./telemetry.js";
7
+ export { createMcpClient } from "./mcp-client.js";
8
+ export { McpTestHarness, McpHttpTestClient } from "./testing.js";
9
+ export { toLangChainTools, toLangChainToolSpecs } from "./langchain.js";
10
+ export { openaiProvider, anthropicProvider } from "./llm.js";
6
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { CapabilityRegistry } from "./registry.js";
2
+ /**
3
+ * LangChain DynamicTool-compatible definition.
4
+ *
5
+ * This interface mirrors LangChain's tool format so consumers can pass these
6
+ * directly to LangChain agents without importing LangChain as a dependency
7
+ * of this package.
8
+ */
9
+ export interface LangChainToolDefinition {
10
+ name: string;
11
+ description: string;
12
+ /** JSON Schema for the tool's input. */
13
+ schema: Record<string, unknown>;
14
+ /** Execute the tool — calls the Capstan API over HTTP. */
15
+ func: (input: string | Record<string, unknown>) => Promise<string>;
16
+ }
17
+ export interface ToLangChainOptions {
18
+ /** Base URL of the running Capstan server (e.g. "http://localhost:3000"). */
19
+ baseUrl: string;
20
+ /** Value for the Authorization header (e.g. "Bearer <token>"). */
21
+ authorization?: string;
22
+ /** Only include routes whose capability matches one of these values. */
23
+ capabilities?: ("read" | "write")[];
24
+ }
25
+ /**
26
+ * Convert a {@link CapabilityRegistry} into an array of LangChain-compatible
27
+ * tool definitions.
28
+ *
29
+ * Each tool invokes the corresponding Capstan API endpoint over HTTP when
30
+ * called, so the Capstan server must be running at `options.baseUrl`.
31
+ *
32
+ * @param registry - The Capstan capability registry.
33
+ * @param options - Connection and filtering options.
34
+ * @returns An array of tool definitions ready to hand to a LangChain agent.
35
+ */
36
+ export declare function toLangChainTools(registry: CapabilityRegistry, options: ToLangChainOptions): LangChainToolDefinition[];
37
+ /**
38
+ * Generate LangChain-compatible tool specifications (metadata only, no
39
+ * executable function).
40
+ *
41
+ * Useful for sending tool definitions over the wire or for inspection
42
+ * without needing a live server connection.
43
+ *
44
+ * @param registry - The Capstan capability registry.
45
+ * @returns An array of tool spec objects.
46
+ */
47
+ export declare function toLangChainToolSpecs(registry: CapabilityRegistry): Array<{
48
+ name: string;
49
+ description: string;
50
+ parameters: Record<string, unknown>;
51
+ }>;
52
+ //# sourceMappingURL=langchain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain.d.ts","sourceRoot":"","sources":["../src/langchain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAOxD;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,0DAA0D;IAC1D,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,YAAY,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CACrC;AAmGD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,EAAE,CAkD3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,GAC3B,KAAK,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC,CAiBD"}