@nyuchi/mzizi-mcp 0.5.0-beta.6 → 0.5.0-beta.7

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.
@@ -0,0 +1,97 @@
1
+ /**
2
+ * mzizi-mcp as an A2A client — the fundi bridge (A2A stage 2).
3
+ *
4
+ * See docs/a2a-fundi.md §4 (the source of truth) and CLAUDE.md §19. Three MCP
5
+ * tools sit over fundi's `POST /a2a` JSON-RPC surface:
6
+ *
7
+ * mzizi_fundi_submit_test → message/send (returns a task id, immediately)
8
+ * mzizi_fundi_task_status → tasks/get (state + artifacts)
9
+ * mzizi_fundi_cancel_task → tasks/cancel (final state)
10
+ *
11
+ * Four things this module exists to get right:
12
+ *
13
+ * 1. **Submit and poll; never block.** `fundi_submit_test` issues exactly one
14
+ * JSON-RPC call and returns whatever fundi answers with. It does NOT wait for
15
+ * the run, does NOT loop on `tasks/get`, and has no timeout/retry budget for
16
+ * a task to progress — a synchronous MCP call held open for minutes is the
17
+ * failure mode A2A exists here to avoid.
18
+ * 2. **The skill is named, never inferred.** `skill` is a required argument
19
+ * validated against the mirror below BEFORE any network call, so a bad id
20
+ * costs nothing and reads as a list of valid ids rather than as a JSON-RPC
21
+ * `-32602` from a remote worker.
22
+ * 3. **These are CORE code tools.** They dispatch to another agent, not to a
23
+ * `sql_function` / `edge_function` / `source_table`, so they have no
24
+ * `mcp_tool_registry` row and no `a2a` dispatch kind was added to make them
25
+ * fit. Their annotations live here for the same reason `fundi_status`'s do.
26
+ * 4. **The M2M secret stays in this Worker.** Callers reach fundi *through*
27
+ * mzizi-mcp: `FundiCaller.call()` mints the client-credentials token and
28
+ * forwards the signed-in user's token as `X-Fundi-User-Token`. The CLI never
29
+ * holds the secret (CLAUDE.md §7, §14).
30
+ */
31
+ import type { FundiToolContext } from "./fundi-client.js";
32
+ /**
33
+ * The skills fundi declares, mirrored from `fundi/src/a2a/skills.ts` — which
34
+ * remains the source of truth and re-validates every submission (`-32602` for an
35
+ * unknown id, HTTP 403 for a missing scope).
36
+ *
37
+ * This is a mirror rather than an import because `@nyuchi/fundi-tester` is a
38
+ * private Worker package that mzizi-mcp does not depend on, and rather than a
39
+ * runtime fetch of `/.well-known/agent-card.json` because building the tool
40
+ * schema would then need a network round trip at server construction — turning a
41
+ * fundi outage into an mzizi-mcp startup failure. `scopes` is carried so a 403
42
+ * can name what the caller was missing (see `scopeAdvice`).
43
+ *
44
+ * Keep in sync with `fundi/src/a2a/skills.ts`; fundi refusing an id this list
45
+ * accepts is the drift signal.
46
+ */
47
+ export declare const FUNDI_SKILLS: readonly [{
48
+ readonly id: "security-scan";
49
+ readonly summary: "Scan a component or worker surface for security defects; each finding becomes a fundi_issues row.";
50
+ readonly scopes: readonly ["fundi:security", "fundi:admin"];
51
+ }, {
52
+ readonly id: "chaos-run";
53
+ readonly summary: "Inject a deliberate fault and report how the surface degraded (recorded via record_chaos_event).";
54
+ readonly scopes: readonly ["fundi:chaos", "fundi:admin"];
55
+ }, {
56
+ readonly id: "a11y-audit";
57
+ readonly summary: "Audit a component's contrast, focus order and ARIA surface. Non-destructive.";
58
+ readonly scopes: readonly ["fundi:admin", "fundi:security", "fundi:chaos"];
59
+ }, {
60
+ readonly id: "heal-issue";
61
+ readonly summary: "Turn an open fundi_issues row into a draft pull request, leaving the human merge gate intact.";
62
+ readonly scopes: readonly ["fundi:admin"];
63
+ }];
64
+ export declare const FUNDI_SKILL_IDS: readonly string[];
65
+ /** The three bridge tool names, unprefixed (the server applies `mzizi_`). */
66
+ export declare const FUNDI_SUBMIT_TOOL = "fundi_submit_test";
67
+ export declare const FUNDI_STATUS_TOOL = "fundi_task_status";
68
+ export declare const FUNDI_CANCEL_TOOL = "fundi_cancel_task";
69
+ export declare function isFundiA2AToolName(name: string): boolean;
70
+ export interface FundiA2AToolDef {
71
+ /** Unprefixed tool name. */
72
+ name: string;
73
+ description: string;
74
+ inputSchema: Record<string, unknown>;
75
+ outputSchema: Record<string, unknown>;
76
+ /** Full behaviour hints — these tools have no registry row to read them from. */
77
+ annotations: {
78
+ readOnlyHint: boolean;
79
+ destructiveHint: boolean;
80
+ idempotentHint: boolean;
81
+ openWorldHint: boolean;
82
+ };
83
+ /** `_meta` category, matching the registry's `fundi` grouping. */
84
+ category: string;
85
+ }
86
+ export declare const FUNDI_A2A_TOOLS: readonly FundiA2AToolDef[];
87
+ /**
88
+ * Dispatch one bridge tool. `name` is the unprefixed tool name and must satisfy
89
+ * `isFundiA2AToolName`; the server checks that before calling in.
90
+ */
91
+ export declare function dispatchFundiA2A(name: string, args: Record<string, unknown>, fundi: FundiToolContext): Promise<{
92
+ content: {
93
+ type: "text";
94
+ text: string;
95
+ }[];
96
+ }>;
97
+ //# sourceMappingURL=fundi-a2a.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fundi-a2a.d.ts","sourceRoot":"","sources":["../src/fundi-a2a.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;EAyBf,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAAkC,CAAC;AAKhF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAQrD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAID,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iFAAiF;IACjF,WAAW,EAAE;QACX,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2BD,eAAO,MAAM,eAAe,EAAE,SAAS,eAAe,EA0HrD,CAAC;AAkRF;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,gBAAgB;;;;;GAYxB"}
@@ -0,0 +1,459 @@
1
+ /**
2
+ * mzizi-mcp as an A2A client — the fundi bridge (A2A stage 2).
3
+ *
4
+ * See docs/a2a-fundi.md §4 (the source of truth) and CLAUDE.md §19. Three MCP
5
+ * tools sit over fundi's `POST /a2a` JSON-RPC surface:
6
+ *
7
+ * mzizi_fundi_submit_test → message/send (returns a task id, immediately)
8
+ * mzizi_fundi_task_status → tasks/get (state + artifacts)
9
+ * mzizi_fundi_cancel_task → tasks/cancel (final state)
10
+ *
11
+ * Four things this module exists to get right:
12
+ *
13
+ * 1. **Submit and poll; never block.** `fundi_submit_test` issues exactly one
14
+ * JSON-RPC call and returns whatever fundi answers with. It does NOT wait for
15
+ * the run, does NOT loop on `tasks/get`, and has no timeout/retry budget for
16
+ * a task to progress — a synchronous MCP call held open for minutes is the
17
+ * failure mode A2A exists here to avoid.
18
+ * 2. **The skill is named, never inferred.** `skill` is a required argument
19
+ * validated against the mirror below BEFORE any network call, so a bad id
20
+ * costs nothing and reads as a list of valid ids rather than as a JSON-RPC
21
+ * `-32602` from a remote worker.
22
+ * 3. **These are CORE code tools.** They dispatch to another agent, not to a
23
+ * `sql_function` / `edge_function` / `source_table`, so they have no
24
+ * `mcp_tool_registry` row and no `a2a` dispatch kind was added to make them
25
+ * fit. Their annotations live here for the same reason `fundi_status`'s do.
26
+ * 4. **The M2M secret stays in this Worker.** Callers reach fundi *through*
27
+ * mzizi-mcp: `FundiCaller.call()` mints the client-credentials token and
28
+ * forwards the signed-in user's token as `X-Fundi-User-Token`. The CLI never
29
+ * holds the secret (CLAUDE.md §7, §14).
30
+ */
31
+ import { jsonContent, toolError } from "./tool-result.js";
32
+ /** fundi's A2A JSON-RPC endpoint, resolved against `FUNDI_URL`. */
33
+ const A2A_PATH = "/a2a";
34
+ /**
35
+ * The skills fundi declares, mirrored from `fundi/src/a2a/skills.ts` — which
36
+ * remains the source of truth and re-validates every submission (`-32602` for an
37
+ * unknown id, HTTP 403 for a missing scope).
38
+ *
39
+ * This is a mirror rather than an import because `@nyuchi/fundi-tester` is a
40
+ * private Worker package that mzizi-mcp does not depend on, and rather than a
41
+ * runtime fetch of `/.well-known/agent-card.json` because building the tool
42
+ * schema would then need a network round trip at server construction — turning a
43
+ * fundi outage into an mzizi-mcp startup failure. `scopes` is carried so a 403
44
+ * can name what the caller was missing (see `scopeAdvice`).
45
+ *
46
+ * Keep in sync with `fundi/src/a2a/skills.ts`; fundi refusing an id this list
47
+ * accepts is the drift signal.
48
+ */
49
+ export const FUNDI_SKILLS = [
50
+ {
51
+ id: "security-scan",
52
+ summary: "Scan a component or worker surface for security defects; each finding becomes a fundi_issues row.",
53
+ scopes: ["fundi:security", "fundi:admin"],
54
+ },
55
+ {
56
+ id: "chaos-run",
57
+ summary: "Inject a deliberate fault and report how the surface degraded (recorded via record_chaos_event).",
58
+ scopes: ["fundi:chaos", "fundi:admin"],
59
+ },
60
+ {
61
+ id: "a11y-audit",
62
+ summary: "Audit a component's contrast, focus order and ARIA surface. Non-destructive.",
63
+ scopes: ["fundi:admin", "fundi:security", "fundi:chaos"],
64
+ },
65
+ {
66
+ id: "heal-issue",
67
+ summary: "Turn an open fundi_issues row into a draft pull request, leaving the human merge gate intact.",
68
+ scopes: ["fundi:admin"],
69
+ },
70
+ ];
71
+ export const FUNDI_SKILL_IDS = FUNDI_SKILLS.map((s) => s.id);
72
+ /** A2A task states from which a task can no longer move (A2A 0.3.0). */
73
+ const TERMINAL_STATES = ["completed", "failed", "canceled", "rejected"];
74
+ /** The three bridge tool names, unprefixed (the server applies `mzizi_`). */
75
+ export const FUNDI_SUBMIT_TOOL = "fundi_submit_test";
76
+ export const FUNDI_STATUS_TOOL = "fundi_task_status";
77
+ export const FUNDI_CANCEL_TOOL = "fundi_cancel_task";
78
+ const A2A_TOOL_NAMES = new Set([
79
+ FUNDI_SUBMIT_TOOL,
80
+ FUNDI_STATUS_TOOL,
81
+ FUNDI_CANCEL_TOOL,
82
+ ]);
83
+ export function isFundiA2AToolName(name) {
84
+ return A2A_TOOL_NAMES.has(name);
85
+ }
86
+ /** Fields every task-shaped result carries. */
87
+ const TASK_PROPERTIES = {
88
+ taskId: { type: "string", description: "The A2A task id." },
89
+ contextId: { type: ["string", "null"] },
90
+ state: {
91
+ type: "string",
92
+ description: "A2A lifecycle state: submitted | working | input-required | auth-required | completed | failed | canceled | rejected.",
93
+ },
94
+ terminal: {
95
+ type: "boolean",
96
+ description: "True when the task can no longer change state.",
97
+ },
98
+ timestamp: { type: ["string", "null"] },
99
+ skill: { type: ["string", "null"] },
100
+ executionStatus: {
101
+ type: ["string", "null"],
102
+ description: "fundi's own note on whether the run happened. `accepted-not-executed` means the task was recorded but the skill does not execute yet.",
103
+ },
104
+ note: { type: ["string", "null"] },
105
+ };
106
+ const TASK_REQUIRED = ["taskId", "state", "terminal"];
107
+ export const FUNDI_A2A_TOOLS = [
108
+ {
109
+ name: FUNDI_SUBMIT_TOOL,
110
+ description: "Delegate a test run to fundi — the self-healing agent — as an A2A task, and return the task id IMMEDIATELY. This never waits for the run to finish: poll mzizi_fundi_task_status with the returned taskId, and cancel with mzizi_fundi_cancel_task. `skill` must name one of fundi's declared skills; it is never inferred from the instruction text. fundi is machine-to-machine, so the call is routed through mzizi-mcp, which holds the M2M credential and forwards your signed-in identity. Each skill requires an M2M scope (security-scan → fundi:security, chaos-run → fundi:chaos, heal-issue → fundi:admin, a11y-audit → any of the three); a caller without one is refused at submit time. Note: fundi currently records a submitted task and parks it — the executors are not built yet, so `executionStatus` comes back `accepted-not-executed`.",
111
+ inputSchema: {
112
+ type: "object",
113
+ properties: {
114
+ skill: {
115
+ type: "string",
116
+ enum: [...FUNDI_SKILL_IDS],
117
+ description: FUNDI_SKILLS.map((s) => `${s.id} — ${s.summary}`).join(" | "),
118
+ },
119
+ instruction: {
120
+ type: "string",
121
+ description: "What fundi should do, in plain text, e.g. 'audit the button primitive against the APCA AAA floor'.",
122
+ },
123
+ context: {
124
+ type: ["object", "null"],
125
+ description: "Optional structured context sent as an A2A data part (component name, issue id, target environment, …).",
126
+ },
127
+ },
128
+ required: ["skill", "instruction"],
129
+ },
130
+ outputSchema: {
131
+ type: "object",
132
+ properties: {
133
+ ...TASK_PROPERTIES,
134
+ pollWith: {
135
+ type: "string",
136
+ description: "The tool to poll this task's state with.",
137
+ },
138
+ },
139
+ required: [...TASK_REQUIRED, "pollWith"],
140
+ },
141
+ // Submitting reaches another agent and creates state there: not read-only,
142
+ // not idempotent (two calls make two tasks), open-world.
143
+ annotations: {
144
+ readOnlyHint: false,
145
+ destructiveHint: false,
146
+ idempotentHint: false,
147
+ openWorldHint: true,
148
+ },
149
+ category: "fundi",
150
+ },
151
+ {
152
+ name: FUNDI_STATUS_TOOL,
153
+ description: "Poll one fundi A2A task: its lifecycle state and any artifacts it has produced. Cheap and safe to repeat. A task you did not submit reports as not found.",
154
+ inputSchema: {
155
+ type: "object",
156
+ properties: {
157
+ taskId: {
158
+ type: "string",
159
+ description: "Task id returned by mzizi_fundi_submit_test.",
160
+ },
161
+ },
162
+ required: ["taskId"],
163
+ },
164
+ outputSchema: {
165
+ type: "object",
166
+ properties: {
167
+ ...TASK_PROPERTIES,
168
+ artifacts: {
169
+ type: "array",
170
+ description: "Artifacts the task has produced so far.",
171
+ items: { type: "object" },
172
+ },
173
+ historyLength: {
174
+ type: "integer",
175
+ description: "Number of messages recorded against the task.",
176
+ },
177
+ },
178
+ required: [...TASK_REQUIRED, "artifacts"],
179
+ },
180
+ annotations: {
181
+ readOnlyHint: true,
182
+ destructiveHint: false,
183
+ idempotentHint: true,
184
+ openWorldHint: true,
185
+ },
186
+ category: "fundi",
187
+ },
188
+ {
189
+ name: FUNDI_CANCEL_TOOL,
190
+ description: "Cancel a running fundi A2A task and return its final state. Cancellation is one-way — a canceled task cannot be resumed, so submit a new one instead. Cancelling an already-terminal task is refused rather than silently accepted.",
191
+ inputSchema: {
192
+ type: "object",
193
+ properties: {
194
+ taskId: {
195
+ type: "string",
196
+ description: "Task id returned by mzizi_fundi_submit_test.",
197
+ },
198
+ },
199
+ required: ["taskId"],
200
+ },
201
+ outputSchema: {
202
+ type: "object",
203
+ properties: {
204
+ ...TASK_PROPERTIES,
205
+ canceled: {
206
+ type: "boolean",
207
+ description: "True when the task is now in the `canceled` state.",
208
+ },
209
+ },
210
+ required: [...TASK_REQUIRED, "canceled"],
211
+ },
212
+ // Terminates a run irreversibly, and a second call is refused: destructive
213
+ // and not idempotent.
214
+ annotations: {
215
+ readOnlyHint: false,
216
+ destructiveHint: true,
217
+ idempotentHint: false,
218
+ openWorldHint: true,
219
+ },
220
+ category: "fundi",
221
+ },
222
+ ];
223
+ // ── A2A transport ───────────────────────────────────────────────────────────
224
+ function isRecord(value) {
225
+ return typeof value === "object" && value !== null && !Array.isArray(value);
226
+ }
227
+ function optionalString(value) {
228
+ return typeof value === "string" && value.length > 0 ? value : null;
229
+ }
230
+ /** Names for the JSON-RPC / A2A error codes fundi can return. */
231
+ const RPC_CODE_NAMES = {
232
+ [-32700]: "ParseError",
233
+ [-32600]: "InvalidRequest",
234
+ [-32601]: "MethodNotFound",
235
+ [-32602]: "InvalidParams",
236
+ [-32603]: "InternalError",
237
+ [-32001]: "TaskNotFound",
238
+ [-32002]: "TaskNotCancelable",
239
+ [-32005]: "ContentTypeNotSupported",
240
+ };
241
+ /**
242
+ * The operator-facing half of an `insufficient_scope` refusal.
243
+ *
244
+ * fundi's scopes are claims on the shared M2M application's token, so a refusal
245
+ * here is a provisioning gap in WorkOS, not something a caller can retry around.
246
+ * As of this writing the M2M application carries NO permissions at all, so every
247
+ * submit is refused — saying that plainly is the difference between an actionable
248
+ * error and a mystery.
249
+ */
250
+ function scopeAdvice(skill, required, granted) {
251
+ const req = required.length > 0 ? required.join(" or ") : "a fundi scope";
252
+ const got = granted.length > 0 ? granted.join(", ") : "none (no scopes were granted)";
253
+ return [
254
+ `fundi refused the "${skill}" skill: insufficient scope.`,
255
+ `Required (any of): ${req}. Granted: ${got}.`,
256
+ "These are scopes on the shared fundi WorkOS M2M application, not per-user tags, so this is not retryable from here —",
257
+ "an operator has to add the permission to that M2M application; no code change or redeploy is involved.",
258
+ "Until fundi:admin / fundi:security / fundi:chaos exist as permissions on it, every A2A submission is refused this way.",
259
+ ].join(" ");
260
+ }
261
+ /**
262
+ * One A2A JSON-RPC round trip. Exactly one request — no polling loop, no
263
+ * retry-until-complete. Every failure mode is turned into a sentence a caller
264
+ * can act on, because "fundi call failed (403)" tells nobody anything.
265
+ */
266
+ async function a2aCall(fundi, method, params) {
267
+ let res;
268
+ try {
269
+ res = await fundi.caller.call(A2A_PATH, fundi.userAccessToken, {
270
+ method: "POST",
271
+ headers: {
272
+ "Content-Type": "application/json",
273
+ Accept: "application/json",
274
+ },
275
+ body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
276
+ });
277
+ }
278
+ catch (err) {
279
+ const detail = err instanceof Error ? err.message : String(err);
280
+ return {
281
+ ok: false,
282
+ message: `fundi A2A "${method}" never reached the worker: ${detail}`,
283
+ };
284
+ }
285
+ const raw = await res.text();
286
+ let parsed = undefined;
287
+ try {
288
+ parsed = JSON.parse(raw);
289
+ }
290
+ catch {
291
+ // Leave `parsed` undefined — the gate answers in plain text.
292
+ }
293
+ if (res.status === 403) {
294
+ if (isRecord(parsed) && parsed.error === "insufficient_scope") {
295
+ const required = Array.isArray(parsed.required_any_of)
296
+ ? parsed.required_any_of.filter((s) => typeof s === "string")
297
+ : [];
298
+ const granted = Array.isArray(parsed.granted)
299
+ ? parsed.granted.filter((s) => typeof s === "string")
300
+ : [];
301
+ const skill = optionalString(parsed.skill) ?? "requested";
302
+ return { ok: false, message: scopeAdvice(skill, required, granted) };
303
+ }
304
+ // The other 403 fundi serves: the user token was absent, so it declined to
305
+ // act for nobody.
306
+ return {
307
+ ok: false,
308
+ message: `fundi declined the request (403): ${raw.slice(0, 300)}`,
309
+ };
310
+ }
311
+ if (res.status === 401) {
312
+ return {
313
+ ok: false,
314
+ message: `fundi rejected the credentials (401): ${raw.slice(0, 300)}. The M2M token or the forwarded user token is invalid or expired.`,
315
+ };
316
+ }
317
+ if (res.status === 404) {
318
+ return {
319
+ ok: false,
320
+ message: `fundi has no A2A endpoint at ${A2A_PATH} (404). FUNDI_URL points at a worker that does not serve A2A — check the deployed build.`,
321
+ };
322
+ }
323
+ if (!res.ok) {
324
+ return {
325
+ ok: false,
326
+ message: `fundi A2A "${method}" failed (${res.status}): ${raw.slice(0, 300)}`,
327
+ };
328
+ }
329
+ if (!isRecord(parsed)) {
330
+ return {
331
+ ok: false,
332
+ message: `fundi returned a non-JSON A2A response: ${raw.slice(0, 300)}`,
333
+ };
334
+ }
335
+ if (isRecord(parsed.error)) {
336
+ const code = typeof parsed.error.code === "number" ? parsed.error.code : null;
337
+ const label = code === null ? "error" : `${RPC_CODE_NAMES[code] ?? "error"} ${code}`;
338
+ const detail = optionalString(parsed.error.message) ?? "no message";
339
+ const data = parsed.error.data === undefined
340
+ ? ""
341
+ : ` ${JSON.stringify(parsed.error.data)}`;
342
+ return {
343
+ ok: false,
344
+ message: `fundi declined "${method}" (${label}): ${detail}${data}`,
345
+ };
346
+ }
347
+ if (parsed.result === undefined) {
348
+ return {
349
+ ok: false,
350
+ message: `fundi returned neither a result nor an error for "${method}".`,
351
+ };
352
+ }
353
+ return { ok: true, result: parsed.result };
354
+ }
355
+ /** Flatten an A2A Task into the shape the bridge tools declare. */
356
+ function summariseTask(raw) {
357
+ const task = isRecord(raw) ? raw : {};
358
+ const status = isRecord(task.status) ? task.status : {};
359
+ const metadata = isRecord(task.metadata) ? task.metadata : {};
360
+ const state = optionalString(status.state) ?? "unknown";
361
+ return {
362
+ taskId: optionalString(task.id),
363
+ contextId: optionalString(task.contextId),
364
+ state,
365
+ terminal: TERMINAL_STATES.includes(state),
366
+ timestamp: optionalString(status.timestamp),
367
+ skill: optionalString(metadata.skillId),
368
+ executionStatus: optionalString(metadata.executionStatus),
369
+ note: optionalString(metadata.note),
370
+ artifacts: Array.isArray(task.artifacts) ? task.artifacts : [],
371
+ historyLength: Array.isArray(task.history) ? task.history.length : 0,
372
+ };
373
+ }
374
+ // ── Dispatch ────────────────────────────────────────────────────────────────
375
+ /** `taskId` is required by every polling tool; validate before the network. */
376
+ function requireTaskId(args) {
377
+ const taskId = args["taskId"];
378
+ return typeof taskId === "string" && taskId.trim().length > 0
379
+ ? taskId.trim()
380
+ : null;
381
+ }
382
+ async function submitTest(fundi, args) {
383
+ const skill = args["skill"];
384
+ // Validated here, before any network call: the skill is named explicitly and
385
+ // never inferred, and an unknown id should cost a caller nothing.
386
+ if (typeof skill !== "string" || !FUNDI_SKILL_IDS.includes(skill)) {
387
+ return toolError(`\`skill\` must name one of fundi's declared skills: ${FUNDI_SKILL_IDS.join(", ")}. It is never inferred from the instruction text.`);
388
+ }
389
+ const instruction = args["instruction"];
390
+ if (typeof instruction !== "string" || instruction.trim().length === 0) {
391
+ return toolError("`instruction` is required — describe what fundi should do, in plain text.");
392
+ }
393
+ const context = args["context"];
394
+ if (context !== undefined && context !== null && !isRecord(context)) {
395
+ return toolError("`context`, when given, must be a JSON object.");
396
+ }
397
+ const parts = [
398
+ { kind: "text", text: instruction.trim() },
399
+ ];
400
+ if (isRecord(context))
401
+ parts.push({ kind: "data", data: context });
402
+ const outcome = await a2aCall(fundi, "message/send", {
403
+ message: {
404
+ kind: "message",
405
+ role: "user",
406
+ messageId: crypto.randomUUID(),
407
+ parts,
408
+ // fundi requires the skill on the message metadata (or on params); it is a
409
+ // hard requirement there, not a hint.
410
+ metadata: { skillId: skill },
411
+ },
412
+ });
413
+ if (!outcome.ok)
414
+ return toolError(outcome.message);
415
+ const summary = summariseTask(outcome.result);
416
+ if (!summary.taskId) {
417
+ return toolError(`fundi accepted "${skill}" but returned no task id: ${JSON.stringify(outcome.result).slice(0, 300)}`);
418
+ }
419
+ // Deliberately returns here — the run is not awaited. Poll, do not block.
420
+ const { artifacts: _artifacts, historyLength: _history, ...rest } = summary;
421
+ return jsonContent({ ...rest, pollWith: `mzizi_${FUNDI_STATUS_TOOL}` });
422
+ }
423
+ async function taskStatus(fundi, args) {
424
+ const taskId = requireTaskId(args);
425
+ if (!taskId)
426
+ return toolError("`taskId` is required.");
427
+ const outcome = await a2aCall(fundi, "tasks/get", { id: taskId });
428
+ if (!outcome.ok)
429
+ return toolError(outcome.message);
430
+ return jsonContent(summariseTask(outcome.result));
431
+ }
432
+ async function cancelTask(fundi, args) {
433
+ const taskId = requireTaskId(args);
434
+ if (!taskId)
435
+ return toolError("`taskId` is required.");
436
+ const outcome = await a2aCall(fundi, "tasks/cancel", { id: taskId });
437
+ if (!outcome.ok)
438
+ return toolError(outcome.message);
439
+ const summary = summariseTask(outcome.result);
440
+ const { artifacts: _artifacts, historyLength: _history, ...rest } = summary;
441
+ return jsonContent({ ...rest, canceled: summary.state === "canceled" });
442
+ }
443
+ /**
444
+ * Dispatch one bridge tool. `name` is the unprefixed tool name and must satisfy
445
+ * `isFundiA2AToolName`; the server checks that before calling in.
446
+ */
447
+ export async function dispatchFundiA2A(name, args, fundi) {
448
+ switch (name) {
449
+ case FUNDI_SUBMIT_TOOL:
450
+ return submitTest(fundi, args);
451
+ case FUNDI_STATUS_TOOL:
452
+ return taskStatus(fundi, args);
453
+ case FUNDI_CANCEL_TOOL:
454
+ return cancelTask(fundi, args);
455
+ default:
456
+ return toolError(`Unknown fundi A2A tool: ${name}`);
457
+ }
458
+ }
459
+ //# sourceMappingURL=fundi-a2a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fundi-a2a.js","sourceRoot":"","sources":["../src/fundi-a2a.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -23,7 +23,7 @@
23
23
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
24
24
  import type { SupabaseClient } from "@supabase/supabase-js";
25
25
  import type { FundiToolContext } from "./fundi-client.js";
26
- export declare const MZIZI_MCP_VERSION = "0.5.0-beta.6";
26
+ export declare const MZIZI_MCP_VERSION = "0.5.0-beta.7";
27
27
  /**
28
28
  * Build the Mzizi MCP server bound to a Supabase client with public read on
29
29
  * `mcp_tool_registry` / `component_documents` and EXECUTE on the backing RPCs.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAogBhD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAAO,GACtC,OAAO,CAAC,SAAS,CAAC,CAsSpB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAwehD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,cAAc,EACxB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAAO,GACtC,OAAO,CAAC,SAAS,CAAC,CAwTpB"}
package/dist/server.js CHANGED
@@ -22,7 +22,9 @@
22
22
  */
23
23
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
24
24
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
25
- export const MZIZI_MCP_VERSION = "0.5.0-beta.6";
25
+ import { FUNDI_A2A_TOOLS, dispatchFundiA2A, isFundiA2AToolName, } from "./fundi-a2a.js";
26
+ import { jsonContent, toolError } from "./tool-result.js";
27
+ export const MZIZI_MCP_VERSION = "0.5.0-beta.7";
26
28
  /**
27
29
  * Every tool this server exposes is prefixed with `mzizi_` so the surface is
28
30
  * unambiguous when mounted alongside other MCP servers (see the mcp-builder
@@ -432,29 +434,6 @@ async function fetchCollectionRows(supabase) {
432
434
  return { rows, error: null };
433
435
  }
434
436
  }
435
- function jsonContent(value, wrapKey) {
436
- const text = {
437
- content: [{ type: "text", text: JSON.stringify(value, null, 2) }],
438
- };
439
- // `structuredContent` must be a JSON object per spec. When the tool declares an
440
- // `outputSchema`, its result is wrapped under the schema's single top-level key
441
- // (`rows` for arrays, `result` for scalars/jsonb) so the two stay in lock-step.
442
- if (wrapKey) {
443
- return {
444
- ...text,
445
- structuredContent: { [wrapKey]: value ?? null },
446
- };
447
- }
448
- // No declared schema: attach plain objects directly, leave arrays/primitives
449
- // text-only to keep their shape backward-compatible.
450
- if (value && typeof value === "object" && !Array.isArray(value)) {
451
- return { ...text, structuredContent: value };
452
- }
453
- return text;
454
- }
455
- function toolError(message) {
456
- return { isError: true, content: [{ type: "text", text: message }] };
457
- }
458
437
  function hasProperties(schema) {
459
438
  const props = schema && schema.properties;
460
439
  return (!!props &&
@@ -570,6 +549,19 @@ export async function createMziziMcpServer(supabase, opts = {}) {
570
549
  annotations: annotationsFor("fundi_status", { openWorldHint: true }),
571
550
  _meta: metaFor("fundi"),
572
551
  });
552
+ // The A2A bridge (docs/a2a-fundi.md §4): delegate a run to fundi as a task
553
+ // and poll it. Same condition as fundi_status — a tool that always appears
554
+ // and always fails is worse than an absent one.
555
+ for (const def of FUNDI_A2A_TOOLS) {
556
+ coreTools.push({
557
+ name: `${TOOL_PREFIX}${def.name}`,
558
+ description: def.description,
559
+ inputSchema: def.inputSchema,
560
+ outputSchema: def.outputSchema,
561
+ annotations: annotationsFor(def.name, def.annotations),
562
+ _meta: metaFor(def.category),
563
+ });
564
+ }
573
565
  }
574
566
  const tools = [
575
567
  ...rows.map((r) => {
@@ -640,6 +632,11 @@ export async function createMziziMcpServer(supabase, opts = {}) {
640
632
  return jsonContent({ ok: true, raw: body });
641
633
  }
642
634
  }
635
+ if (isFundiA2AToolName(name)) {
636
+ if (!opts.fundi)
637
+ return toolError("fundi is not configured on this server");
638
+ return dispatchFundiA2A(name, args, opts.fundi);
639
+ }
643
640
  const row = byName.get(name);
644
641
  if (!row)
645
642
  return toolError(`Unknown tool: ${name}`);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAI5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B,oGAAoG;AACpG,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,IAAI;SACf,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,IAAI,EAAE,CAAC;IACV,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAgBD,MAAM,eAAe,GAAmB;IACtC,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,GAAmB;IAClC,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,KAAK;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,2BAA2B;IAC3B,4BAA4B;IAC5B,oBAAoB;CACrB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,YAAqC,EAAE;IAC3E,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,eAAe,EAAE,GAAG,SAAS,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,GAAgB;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;IAC1E,MAAM,IAAI,GAAG,CAAC,GAAmB,EAAE,GAAY,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;IAC/D,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3C,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC;QAC7D,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,eAAe,CAAC;QACrE,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC;QAClE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC;KACjE,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,QAAmC;IAClD,OAAO,EAAE,oBAAoB,EAAE,QAAQ,IAAI,eAAe,EAAE,CAAC;AAC/D,CAAC;AAwBD;;;;;;;;GAQG;AACH,SAAS,aAAa,CACpB,GAAmC;IAEnC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAE,GAAG,CAAC,UAAU,CAAc;QAC/B,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAQD,MAAM,GAAG,GAAG,CAAC,WAAoB,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxB,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,WAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;AAC3E,MAAM,GAAG,GAAG,CAAC,WAAoB,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACzB,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,WAAoB,EAAE,EAAE,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;IACzB,WAAW;CACZ,CAAC,CAAC;AACH,MAAM,GAAG,GAAG,CAAC,WAAoB,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;IACxB,WAAW;CACZ,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,oBAAoB,GACxB,yEAAyE;IACzE,iFAAiF,CAAC;AAEpF,MAAM,aAAa,GAA+B;IAChD,YAAY;IACZ,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,+BAA+B,CAAC,EAAE;QAC/D,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;YAC1C,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC;SACtC;QACD,QAAQ,EAAE,CAAC,kBAAkB,CAAC;KAC/B;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAChD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC;YACjC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC;YAC9B,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAClC,OAAO,EAAE,GAAG,CAAC,wBAAwB,CAAC;YACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;SACxB;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC;YAC/B,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC;SACtC;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB,sBAAsB,CAAC,EAAE;KAC3E;IACD,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB,oCAAoC,CAAC;SACzE;KACF;IACD,YAAY;IACZ,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC;YACjC,YAAY,EAAE,GAAG,CAAC,2CAA2C,CAAC;YAC9D,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC;YAClC,OAAO,EAAE,GAAG,CAAC,2CAA2C,CAAC;YACzD,OAAO,EAAE,GAAG,CAAC,yBAAyB,CAAC;SACxC;KACF;IACD,SAAS;IACT,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE;QAC5C,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,KAAK;IACL,mBAAmB,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,wCAAwC,CAAC,EAAE;QACxE,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,kBAAkB,CAAC,EAAE;KAClD;IACD,QAAQ;IACR,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE;QACpD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAAE;KAC3D;IACD,aAAa;IACb,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE;QACjD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,UAAU;IACV,mBAAmB,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAAE;QAC1D,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;IACD,4BAA4B,EAAE;QAC5B,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAChD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;QAC5C,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,MAAM,CAAC,2BAA2B,CAAC;YAC5C,OAAO,EAAE,GAAG,CAAC,6BAA6B,CAAC;SAC5C;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC;YACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;SACxB;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC;SACtC;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,gBAAgB;IAChB,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE,GAAG,CAAC,oBAAoB,CAAC;YACrC,OAAO,EAAE,GAAG,CAAC,wBAAwB,CAAC;SACvC;KACF;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC;YAC9B,UAAU,EAAE,GAAG,CAAC,iBAAiB,CAAC;YAClC,OAAO,EAAE,GAAG,CAAC,uBAAuB,CAAC;SACtC;KACF;IACD,WAAW;IACX,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC;YAC1C,iBAAiB,EAAE,MAAM,CAAC,yCAAyC,CAAC;SACrE;QACD,QAAQ,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;KACpD;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAC1D,QAAQ,EAAE,CAAC,kBAAkB,CAAC;KAC/B;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,yBAAyB,CAAC,EAAE;KAC/D;IACD,gBAAgB;IAChB,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1B,SAAS,EAAE,GAAG,CAAC,kCAAkC,CAAC;SACnD;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE;KACjD;IACD,yBAAyB,EAAE;QACzB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC;YAC9B,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,CAAC;YACzC,YAAY,EAAE,GAAG,CAAC,mBAAmB,CAAC;YACtC,OAAO,EAAE,GAAG,CAAC,wBAAwB,CAAC;SACvC;KACF;IACD,eAAe;IACf,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC;YAC9B,aAAa,EAAE,GAAG,CAAC,oBAAoB,CAAC;YACxC,YAAY,EAAE,GAAG,CAAC,mBAAmB,CAAC;YACtC,OAAO,EAAE,GAAG,CAAC,wBAAwB,CAAC;SACvC;KACF;IACD,OAAO;IACP,wBAAwB,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,gCAAgC,CAAC;YAChD,MAAM,EAAE,MAAM,CAAC,gCAAgC,CAAC;SACjD;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC/B;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE;QACzC,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,8CAA8C,CAAC;SAChE;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;KAC7B;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,mBAAmB,EAAE,IAAI,CACvB,+CAA+C,CAChD;YACD,gBAAgB,EAAE,GAAG,CAAC,sCAAsC,CAAC;SAC9D;KACF;IACD,OAAO;IACP,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE,GAAG,CAAC,oBAAoB,CAAC;YACrC,WAAW,EAAE,GAAG,CAAC,qBAAqB,CAAC;YACvC,WAAW,EAAE,GAAG,CAAC,qBAAqB,CAAC;SACxC;KACF;CACF,CAAC;AAEF,MAAM,YAAY,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAEpE;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAAC,QAAwB;IAIzD,MAAM,IAAI,GAIL,EAAE,CAAC;IACR,MAAM,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;aACnC,IAAI,CAAC,qBAAqB,CAAC;aAC3B,MAAM,CAAC,yBAAyB,CAAC;aACjC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACxC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aAClC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;QAChC,IAAI,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,KAAK,GAAI,IAA2B,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,OAAuB;IAC1D,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC;IACF,gFAAgF;IAChF,gFAAgF;IAChF,gFAAgF;IAChF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,GAAG,IAAI;YACP,iBAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,EAG5C;SACF,CAAC;IACJ,CAAC;IACD,6EAA6E;IAC7E,qDAAqD;IACrD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAgC,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CACpB,MAAsC;IAEtC,MAAM,KAAK,GAAG,MAAM,IAAK,MAAmC,CAAC,UAAU,CAAC;IACxE,OAAO,CACL,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAgB;IACjC,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO,GAAG,CAAC,YAAY,CAAC;IAC7D,OAAO,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAwB,EACxB,OAAqC,EAAE;IAEvC,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,OAAO;KACf,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAC5B,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;SACjC;QACD,YAAY,EACV,4gBAA4gB;KAC/gB,CACF,CAAC;IAEF,8EAA8E;IAC9E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;SACnC,IAAI,CAAC,mBAAmB,CAAC;SACzB,MAAM,CACL,qNAAqN,CACtN;SACA,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEvB,IAAI,KAAK,EAAE,CAAC;QACV,8EAA8E;QAC9E,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnE,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,GAAG,WAAW,sBAAsB;oBAC1C,WAAW,EAAE,4CAA4C,KAAK,CAAC,OAAO,EAAE;oBACxE,WAAW,EAAE,YAAY;oBACzB,WAAW,EAAE,cAAc,CAAC,sBAAsB,CAAC;iBACrC;aACjB;SACF,CAAC,CAAC,CAAC;QACJ,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAChE,SAAS,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,CAAE,IAA6B,IAAI,EAAE,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,oBAAoB;QACvB,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACnE,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,yEAAyE;IACzE,uDAAuD;IACvD,MAAM,iBAAiB,GAAG;QACxB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;wBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;wBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC5B;iBACF;aACF;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,oBAAoB,GAAG;QAC3B,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9B,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9B;QACD,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC;KAC1E,CAAC;IACF,MAAM,SAAS,GAAW;QACxB;YACE,IAAI,EAAE,GAAG,WAAW,kBAAkB;YACtC,WAAW,EACT,gKAAgK;YAClK,WAAW,EAAE,YAA8C;YAC3D,YAAY,EAAE,iBAAoD;YAClE,WAAW,EAAE,cAAc,CAAC,kBAAkB,CAAC;YAC/C,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;SAC5B;QACD;YACE,IAAI,EAAE,GAAG,WAAW,qBAAqB;YACzC,WAAW,EACT,uEAAuE;YACzE,WAAW,EAAE,YAA8C;YAC3D,YAAY,EAAE,oBAAuD;YACrE,WAAW,EAAE,cAAc,CAAC,qBAAqB,CAAC;YAClD,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;SACzB;KACF,CAAC;IAEF,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,GAAG,WAAW,cAAc;YAClC,WAAW,EACT,8NAA8N;YAChO,WAAW,EAAE,YAA8C;YAC3D,4EAA4E;YAC5E,WAAW,EAAE,cAAc,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YACpE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAW;QACpB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO;gBACL,IAAI,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC,SAAS,EAAE;gBACpC,WAAW,EACT,CAAC,CAAC,WAAW;oBACb,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,0BAA0B;gBAC7E,WAAW,EAAE,SAAS,CAAC,CAAC,CAAmC;gBAC3D,GAAG,CAAC,OAAO;oBACT,CAAC,CAAC;wBACE,YAAY,EACV,OAAO,CAAC,YAA+C;qBAC1D;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAClC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;aAC3B,CAAC;QACJ,CAAC,CAAC;QACF,GAAG,SAAS;KACb,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACnE,KAAK;KACN,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACvE,4EAA4E;QAC5E,2EAA2E;QAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACtC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;QAEzE,mDAAmD;QACnD,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,KAAK;gBAAE,OAAO,SAAS,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;YACjE,OAAO,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,QAAQ;iBACxB,IAAI,CAAC,qBAAqB,CAAC;iBAC3B,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,QAAQ;iBAC9B,IAAI,CAAC,mBAAmB,CAAC;iBACzB,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iBAC3C,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvB,OAAO,WAAW,CAAC;gBACjB,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;gBAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO;gBAC1B,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;gBAC1B,aAAa,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;gBACpC,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,KAAK;gBACb,OAAO,SAAS,CAAC,wCAAwC,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACtC,eAAe,EACf,IAAI,CAAC,KAAK,CAAC,eAAe,CAC3B,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,SAAS,CAAC,sBAAsB,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC;gBACH,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;QACjE,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACrB,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACrD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACrD,IAAI,KAAK;oBACP,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CACrD,GAAG,CAAC,aAAa,EACjB,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;gBACF,IAAI,KAAK;oBACP,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACrB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;qBACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBACtB,MAAM,CAAC,GAAG,CAAC;qBACX,KAAK,CAAC,GAAG,CAAC,CAAC;gBACd,IAAI,KAAK;oBACP,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,SAAS,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,SAAS,CACd,GAAG,GAAG,CAAC,SAAS,0CAA0C,CAC3D,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CACd,GAAG,GAAG,CAAC,SAAS,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,MAAM,CAAC,QAAQ,CACb,aAAa,EACb,qBAAqB,EACrB;QACE,WAAW,EACT,qGAAqG;KACxG,EACD,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,qBAAqB;oBAC1B,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,QAAQ,CACb,YAAY,EACZ,oBAAoB,EACpB;QACE,WAAW,EACT,sHAAsH;KACzH,EACD,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE;YACpD,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,IAAI,GACP,IAIS,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI;YACpC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI;YACxC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI;SACnD,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,oBAAoB;oBACzB,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,SAAS,oBAAoB,CAC3B,IAAuE;IAEvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAQpB,CAAC;IACJ,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI;YAC3C,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * MCP tool-result helpers, shared by the registry dispatcher (`server.ts`) and
3
+ * the fundi A2A bridge (`fundi-a2a.ts`).
4
+ *
5
+ * These lived in `server.ts` until the A2A bridge needed the same two shapes.
6
+ * A second copy is how the `structuredContent` contract drifts apart — the wrap
7
+ * rule below is subtle enough that two implementations would not stay equal.
8
+ */
9
+ /**
10
+ * Render a value as an MCP tool result.
11
+ *
12
+ * `structuredContent` must be a JSON object per spec. When the calling tool
13
+ * declares an `outputSchema` whose payload sits under a single top-level key
14
+ * (`rows` for arrays, `result` for scalars/jsonb), pass that key as `wrapKey`
15
+ * so the schema and the structured result stay in lock-step.
16
+ */
17
+ export declare function jsonContent(value: unknown, wrapKey?: string | null): {
18
+ content: {
19
+ type: "text";
20
+ text: string;
21
+ }[];
22
+ } | {
23
+ structuredContent: Record<string, unknown>;
24
+ content: {
25
+ type: "text";
26
+ text: string;
27
+ }[];
28
+ };
29
+ /** An error result. MCP reports tool failures in-band, not as a transport error. */
30
+ export declare function toolError(message: string): {
31
+ isError: boolean;
32
+ content: {
33
+ type: "text";
34
+ text: string;
35
+ }[];
36
+ };
37
+ //# sourceMappingURL=tool-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.d.ts","sourceRoot":"","sources":["../src/tool-result.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;;;;;;uBAOV,MAAM,CACvD,MAAM,EACN,OAAO,CACR;;;;;EASN;AAED,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM;;;;;;EAExC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * MCP tool-result helpers, shared by the registry dispatcher (`server.ts`) and
3
+ * the fundi A2A bridge (`fundi-a2a.ts`).
4
+ *
5
+ * These lived in `server.ts` until the A2A bridge needed the same two shapes.
6
+ * A second copy is how the `structuredContent` contract drifts apart — the wrap
7
+ * rule below is subtle enough that two implementations would not stay equal.
8
+ */
9
+ /**
10
+ * Render a value as an MCP tool result.
11
+ *
12
+ * `structuredContent` must be a JSON object per spec. When the calling tool
13
+ * declares an `outputSchema` whose payload sits under a single top-level key
14
+ * (`rows` for arrays, `result` for scalars/jsonb), pass that key as `wrapKey`
15
+ * so the schema and the structured result stay in lock-step.
16
+ */
17
+ export function jsonContent(value, wrapKey) {
18
+ const text = {
19
+ content: [{ type: "text", text: JSON.stringify(value, null, 2) }],
20
+ };
21
+ if (wrapKey) {
22
+ return {
23
+ ...text,
24
+ structuredContent: { [wrapKey]: value ?? null },
25
+ };
26
+ }
27
+ // No wrap key: attach plain objects directly, leave arrays/primitives
28
+ // text-only to keep their shape backward-compatible.
29
+ if (value && typeof value === "object" && !Array.isArray(value)) {
30
+ return { ...text, structuredContent: value };
31
+ }
32
+ return text;
33
+ }
34
+ /** An error result. MCP reports tool failures in-band, not as a transport error. */
35
+ export function toolError(message) {
36
+ return { isError: true, content: [{ type: "text", text: message }] };
37
+ }
38
+ //# sourceMappingURL=tool-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result.js","sourceRoot":"","sources":["../src/tool-result.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,OAAuB;IACjE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,GAAG,IAAI;YACP,iBAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,EAG5C;SACF,CAAC;IACJ,CAAC;IACD,sEAAsE;IACtE,qDAAqD;IACrD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAgC,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nyuchi/mzizi-mcp",
3
- "version": "0.5.0-beta.6",
3
+ "version": "0.5.0-beta.7",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },