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

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,102 @@
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 when the caller is not entitled).
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. `entitledBy` is carried so a
42
+ * refusal can name what the caller was missing (see `entitlementAdvice`).
43
+ *
44
+ * `entitledBy` is the corrected model: the public skills are entitled by a UCP
45
+ * commerce subscription for the signed-in user, NOT by a WorkOS scope — an
46
+ * org-scoped M2M permission cannot express "any paying subscriber" (see
47
+ * `fundi/src/entitlement.ts`). Only the internal heal loop is scope-gated.
48
+ *
49
+ * Keep in sync with `fundi/src/a2a/skills.ts`; fundi refusing an id this list
50
+ * accepts is the drift signal.
51
+ */
52
+ export declare const FUNDI_SKILLS: readonly [{
53
+ readonly id: "security-scan";
54
+ readonly summary: "Scan a component or worker surface for security defects; each finding becomes a fundi_issues row.";
55
+ readonly entitledBy: "an active fundi_tester subscription (or fundi:admin)";
56
+ }, {
57
+ readonly id: "chaos-run";
58
+ readonly summary: "Inject a deliberate fault and report how the surface degraded (recorded via record_chaos_event).";
59
+ readonly entitledBy: "an active fundi_tester subscription (or fundi:admin)";
60
+ }, {
61
+ readonly id: "a11y-audit";
62
+ readonly summary: "Audit a component's contrast, focus order and ARIA surface. Non-destructive.";
63
+ readonly entitledBy: "an active fundi_tester subscription (or fundi:admin)";
64
+ }, {
65
+ readonly id: "heal-issue";
66
+ readonly summary: "Turn an open fundi_issues row into a draft pull request, leaving the human merge gate intact.";
67
+ readonly entitledBy: "the internal fundi:admin M2M claim — no subscription path";
68
+ }];
69
+ export declare const FUNDI_SKILL_IDS: readonly string[];
70
+ /** The three bridge tool names, unprefixed (the server applies `mzizi_`). */
71
+ export declare const FUNDI_SUBMIT_TOOL = "fundi_submit_test";
72
+ export declare const FUNDI_STATUS_TOOL = "fundi_task_status";
73
+ export declare const FUNDI_CANCEL_TOOL = "fundi_cancel_task";
74
+ export declare function isFundiA2AToolName(name: string): boolean;
75
+ export interface FundiA2AToolDef {
76
+ /** Unprefixed tool name. */
77
+ name: string;
78
+ description: string;
79
+ inputSchema: Record<string, unknown>;
80
+ outputSchema: Record<string, unknown>;
81
+ /** Full behaviour hints — these tools have no registry row to read them from. */
82
+ annotations: {
83
+ readOnlyHint: boolean;
84
+ destructiveHint: boolean;
85
+ idempotentHint: boolean;
86
+ openWorldHint: boolean;
87
+ };
88
+ /** `_meta` category, matching the registry's `fundi` grouping. */
89
+ category: string;
90
+ }
91
+ export declare const FUNDI_A2A_TOOLS: readonly FundiA2AToolDef[];
92
+ /**
93
+ * Dispatch one bridge tool. `name` is the unprefixed tool name and must satisfy
94
+ * `isFundiA2AToolName`; the server checks that before calling in.
95
+ */
96
+ export declare function dispatchFundiA2A(name: string, args: Record<string, unknown>, fundi: FundiToolContext): Promise<{
97
+ content: {
98
+ type: "text";
99
+ text: string;
100
+ }[];
101
+ }>;
102
+ //# 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;;;;;;;;;;;;;;;;;;;GAmBG;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;AA2WF;;;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,533 @@
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 when the caller is not entitled).
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. `entitledBy` is carried so a
44
+ * refusal can name what the caller was missing (see `entitlementAdvice`).
45
+ *
46
+ * `entitledBy` is the corrected model: the public skills are entitled by a UCP
47
+ * commerce subscription for the signed-in user, NOT by a WorkOS scope — an
48
+ * org-scoped M2M permission cannot express "any paying subscriber" (see
49
+ * `fundi/src/entitlement.ts`). Only the internal heal loop is scope-gated.
50
+ *
51
+ * Keep in sync with `fundi/src/a2a/skills.ts`; fundi refusing an id this list
52
+ * accepts is the drift signal.
53
+ */
54
+ export const FUNDI_SKILLS = [
55
+ {
56
+ id: "security-scan",
57
+ summary: "Scan a component or worker surface for security defects; each finding becomes a fundi_issues row.",
58
+ entitledBy: "an active fundi_tester subscription (or fundi:admin)",
59
+ },
60
+ {
61
+ id: "chaos-run",
62
+ summary: "Inject a deliberate fault and report how the surface degraded (recorded via record_chaos_event).",
63
+ entitledBy: "an active fundi_tester subscription (or fundi:admin)",
64
+ },
65
+ {
66
+ id: "a11y-audit",
67
+ summary: "Audit a component's contrast, focus order and ARIA surface. Non-destructive.",
68
+ entitledBy: "an active fundi_tester subscription (or fundi:admin)",
69
+ },
70
+ {
71
+ id: "heal-issue",
72
+ summary: "Turn an open fundi_issues row into a draft pull request, leaving the human merge gate intact.",
73
+ entitledBy: "the internal fundi:admin M2M claim — no subscription path",
74
+ },
75
+ ];
76
+ export const FUNDI_SKILL_IDS = FUNDI_SKILLS.map((s) => s.id);
77
+ /** A2A task states from which a task can no longer move (A2A 0.3.0). */
78
+ const TERMINAL_STATES = ["completed", "failed", "canceled", "rejected"];
79
+ /** The three bridge tool names, unprefixed (the server applies `mzizi_`). */
80
+ export const FUNDI_SUBMIT_TOOL = "fundi_submit_test";
81
+ export const FUNDI_STATUS_TOOL = "fundi_task_status";
82
+ export const FUNDI_CANCEL_TOOL = "fundi_cancel_task";
83
+ const A2A_TOOL_NAMES = new Set([
84
+ FUNDI_SUBMIT_TOOL,
85
+ FUNDI_STATUS_TOOL,
86
+ FUNDI_CANCEL_TOOL,
87
+ ]);
88
+ export function isFundiA2AToolName(name) {
89
+ return A2A_TOOL_NAMES.has(name);
90
+ }
91
+ /** Fields every task-shaped result carries. */
92
+ const TASK_PROPERTIES = {
93
+ taskId: { type: "string", description: "The A2A task id." },
94
+ contextId: { type: ["string", "null"] },
95
+ state: {
96
+ type: "string",
97
+ description: "A2A lifecycle state: submitted | working | input-required | auth-required | completed | failed | canceled | rejected.",
98
+ },
99
+ terminal: {
100
+ type: "boolean",
101
+ description: "True when the task can no longer change state.",
102
+ },
103
+ timestamp: { type: ["string", "null"] },
104
+ skill: { type: ["string", "null"] },
105
+ executionStatus: {
106
+ type: ["string", "null"],
107
+ 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.",
108
+ },
109
+ note: { type: ["string", "null"] },
110
+ };
111
+ const TASK_REQUIRED = ["taskId", "state", "terminal"];
112
+ export const FUNDI_A2A_TOOLS = [
113
+ {
114
+ name: FUNDI_SUBMIT_TOOL,
115
+ 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. Entitlement is per skill and checked at submit time: security-scan, chaos-run and a11y-audit need an active fundi_tester subscription for the signed-in user (fundi's tester tier is public and paid, $1/month or $10/year); heal-issue is internal and needs the fundi:admin M2M claim instead. Note: fundi currently records a submitted task and parks it — the executors are not built yet, so `executionStatus` comes back `accepted-not-executed`.",
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: {
119
+ skill: {
120
+ type: "string",
121
+ enum: [...FUNDI_SKILL_IDS],
122
+ description: FUNDI_SKILLS.map((s) => `${s.id} — ${s.summary}`).join(" | "),
123
+ },
124
+ instruction: {
125
+ type: "string",
126
+ description: "What fundi should do, in plain text, e.g. 'audit the button primitive against the APCA AAA floor'.",
127
+ },
128
+ context: {
129
+ type: ["object", "null"],
130
+ description: "Optional structured context sent as an A2A data part (component name, issue id, target environment, …).",
131
+ },
132
+ },
133
+ required: ["skill", "instruction"],
134
+ },
135
+ outputSchema: {
136
+ type: "object",
137
+ properties: {
138
+ ...TASK_PROPERTIES,
139
+ pollWith: {
140
+ type: "string",
141
+ description: "The tool to poll this task's state with.",
142
+ },
143
+ },
144
+ required: [...TASK_REQUIRED, "pollWith"],
145
+ },
146
+ // Submitting reaches another agent and creates state there: not read-only,
147
+ // not idempotent (two calls make two tasks), open-world.
148
+ annotations: {
149
+ readOnlyHint: false,
150
+ destructiveHint: false,
151
+ idempotentHint: false,
152
+ openWorldHint: true,
153
+ },
154
+ category: "fundi",
155
+ },
156
+ {
157
+ name: FUNDI_STATUS_TOOL,
158
+ 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.",
159
+ inputSchema: {
160
+ type: "object",
161
+ properties: {
162
+ taskId: {
163
+ type: "string",
164
+ description: "Task id returned by mzizi_fundi_submit_test.",
165
+ },
166
+ },
167
+ required: ["taskId"],
168
+ },
169
+ outputSchema: {
170
+ type: "object",
171
+ properties: {
172
+ ...TASK_PROPERTIES,
173
+ artifacts: {
174
+ type: "array",
175
+ description: "Artifacts the task has produced so far.",
176
+ items: { type: "object" },
177
+ },
178
+ historyLength: {
179
+ type: "integer",
180
+ description: "Number of messages recorded against the task.",
181
+ },
182
+ },
183
+ required: [...TASK_REQUIRED, "artifacts"],
184
+ },
185
+ annotations: {
186
+ readOnlyHint: true,
187
+ destructiveHint: false,
188
+ idempotentHint: true,
189
+ openWorldHint: true,
190
+ },
191
+ category: "fundi",
192
+ },
193
+ {
194
+ name: FUNDI_CANCEL_TOOL,
195
+ 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.",
196
+ inputSchema: {
197
+ type: "object",
198
+ properties: {
199
+ taskId: {
200
+ type: "string",
201
+ description: "Task id returned by mzizi_fundi_submit_test.",
202
+ },
203
+ },
204
+ required: ["taskId"],
205
+ },
206
+ outputSchema: {
207
+ type: "object",
208
+ properties: {
209
+ ...TASK_PROPERTIES,
210
+ canceled: {
211
+ type: "boolean",
212
+ description: "True when the task is now in the `canceled` state.",
213
+ },
214
+ },
215
+ required: [...TASK_REQUIRED, "canceled"],
216
+ },
217
+ // Terminates a run irreversibly, and a second call is refused: destructive
218
+ // and not idempotent.
219
+ annotations: {
220
+ readOnlyHint: false,
221
+ destructiveHint: true,
222
+ idempotentHint: false,
223
+ openWorldHint: true,
224
+ },
225
+ category: "fundi",
226
+ },
227
+ ];
228
+ // ── A2A transport ───────────────────────────────────────────────────────────
229
+ function isRecord(value) {
230
+ return typeof value === "object" && value !== null && !Array.isArray(value);
231
+ }
232
+ function optionalString(value) {
233
+ return typeof value === "string" && value.length > 0 ? value : null;
234
+ }
235
+ /** Names for the JSON-RPC / A2A error codes fundi can return. */
236
+ const RPC_CODE_NAMES = {
237
+ [-32700]: "ParseError",
238
+ [-32600]: "InvalidRequest",
239
+ [-32601]: "MethodNotFound",
240
+ [-32602]: "InvalidParams",
241
+ [-32603]: "InternalError",
242
+ [-32001]: "TaskNotFound",
243
+ [-32002]: "TaskNotCancelable",
244
+ [-32005]: "ContentTypeNotSupported",
245
+ };
246
+ /**
247
+ * The caller-facing half of an `insufficient_scope` refusal — fundi's INTERNAL
248
+ * skills only.
249
+ *
250
+ * `fundi:admin` is a claim on the shared M2M application's token, so a refusal
251
+ * here is a provisioning gap in WorkOS, not something a caller can retry around.
252
+ * As of this writing that application carries NO permissions at all, so every
253
+ * `heal-issue` submit is refused — saying that plainly is the difference between
254
+ * an actionable error and a mystery.
255
+ */
256
+ function scopeAdvice(skill, required, granted) {
257
+ const req = required.length > 0 ? required.join(" or ") : "a fundi scope";
258
+ const got = granted.length > 0 ? granted.join(", ") : "none (no scopes were granted)";
259
+ return [
260
+ `fundi refused the "${skill}" skill: insufficient scope.`,
261
+ `Required (any of): ${req}. Granted: ${got}.`,
262
+ "This is an internal fundi surface with no subscription path — subscribing will not grant it.",
263
+ "The scope is a claim on the shared fundi WorkOS M2M application, not a per-user tag, so this is not retryable from here —",
264
+ "an operator has to add the permission to that M2M application; no code change or redeploy is involved.",
265
+ ].join(" ");
266
+ }
267
+ /**
268
+ * The caller-facing half of a `subscription_required` refusal — fundi's PUBLIC
269
+ * tiers.
270
+ *
271
+ * Unlike a scope gap, this one the caller CAN clear themselves, which is the
272
+ * whole point of moving the public tiers onto a UCP subscription: the tester tier
273
+ * is public and paid, so the refusal has to read as a checkout instruction and
274
+ * not as "ask an administrator".
275
+ */
276
+ function subscriptionAdvice(skill, required, reason, status) {
277
+ const req = required.length > 0 ? required.join(" or ") : "a fundi subscription";
278
+ const why = reason === "no_subscription"
279
+ ? "no subscription is on file for the signed-in user"
280
+ : reason === "status_not_entitling"
281
+ ? `the subscription is "${status ?? "unknown"}" — access starts once payment clears`
282
+ : reason === "period_ended"
283
+ ? "the paid period has ended"
284
+ : reason === "trial_ended"
285
+ ? "the trial has ended"
286
+ : reason === "no_person"
287
+ ? "no platform identity is linked to the signed-in user yet"
288
+ : reason === "person_inactive"
289
+ ? "the linked platform identity is deactivated"
290
+ : (reason ?? "the subscription does not entitle it");
291
+ return [
292
+ `fundi refused the "${skill}" skill: it needs an active ${req} subscription for the signed-in user, and ${why}.`,
293
+ "fundi's tester tier is public and paid — $1/month or $10/year — so this is entitlement, not a permission an operator grants:",
294
+ "subscribe inline with the bushtrade-mcp `subscribe` verb (product slug fundi-tester), never in a browser tab.",
295
+ ].join(" ");
296
+ }
297
+ /**
298
+ * fundi could not resolve entitlement at all (HTTP 503). Distinct from a
299
+ * refusal on purpose: telling a paying subscriber "you are not entitled" because
300
+ * a database was unreachable would send them to buy a second subscription.
301
+ */
302
+ function entitlementUnavailableAdvice(skill, detail) {
303
+ return [
304
+ `fundi could not verify the subscription for the "${skill}" skill, so it refused the submission (503).`,
305
+ "This is an outage on fundi's side, not a statement about your entitlement — nothing is granted when the check cannot run.",
306
+ detail ? `fundi reported: ${detail}.` : "",
307
+ "Retry shortly; if it persists, an operator should check fundi's MONGODB_URI secret and the commerce cluster.",
308
+ ]
309
+ .filter(Boolean)
310
+ .join(" ");
311
+ }
312
+ /**
313
+ * One A2A JSON-RPC round trip. Exactly one request — no polling loop, no
314
+ * retry-until-complete. Every failure mode is turned into a sentence a caller
315
+ * can act on, because "fundi call failed (403)" tells nobody anything.
316
+ */
317
+ async function a2aCall(fundi, method, params) {
318
+ let res;
319
+ try {
320
+ res = await fundi.caller.call(A2A_PATH, fundi.userAccessToken, {
321
+ method: "POST",
322
+ headers: {
323
+ "Content-Type": "application/json",
324
+ Accept: "application/json",
325
+ },
326
+ body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
327
+ });
328
+ }
329
+ catch (err) {
330
+ const detail = err instanceof Error ? err.message : String(err);
331
+ return {
332
+ ok: false,
333
+ message: `fundi A2A "${method}" never reached the worker: ${detail}`,
334
+ };
335
+ }
336
+ const raw = await res.text();
337
+ let parsed = undefined;
338
+ try {
339
+ parsed = JSON.parse(raw);
340
+ }
341
+ catch {
342
+ // Leave `parsed` undefined — the gate answers in plain text.
343
+ }
344
+ if (res.status === 403) {
345
+ const stringList = (value) => Array.isArray(value)
346
+ ? value.filter((s) => typeof s === "string")
347
+ : [];
348
+ if (isRecord(parsed) && parsed.error === "insufficient_scope") {
349
+ const skill = optionalString(parsed.skill) ?? "requested";
350
+ return {
351
+ ok: false,
352
+ message: scopeAdvice(skill, stringList(parsed.required_any_of), stringList(parsed.granted)),
353
+ };
354
+ }
355
+ // The public tiers: entitlement is a UCP subscription, so the refusal is
356
+ // something the caller can clear themselves. Rendering it as a scope gap
357
+ // would tell a would-be subscriber to go and ask an administrator.
358
+ if (isRecord(parsed) && parsed.error === "subscription_required") {
359
+ const skill = optionalString(parsed.skill) ?? "requested";
360
+ const detail = isRecord(parsed.subscription) ? parsed.subscription : {};
361
+ return {
362
+ ok: false,
363
+ message: subscriptionAdvice(skill, stringList(parsed.required_any_of), optionalString(detail.reason) ?? null, optionalString(detail.status) ?? null),
364
+ };
365
+ }
366
+ // The other 403 fundi serves: the user token was absent, so it declined to
367
+ // act for nobody.
368
+ return {
369
+ ok: false,
370
+ message: `fundi declined the request (403): ${raw.slice(0, 300)}`,
371
+ };
372
+ }
373
+ if (res.status === 503) {
374
+ if (isRecord(parsed) && parsed.error === "entitlement_unavailable") {
375
+ return {
376
+ ok: false,
377
+ message: entitlementUnavailableAdvice(optionalString(parsed.skill) ?? "requested", optionalString(parsed.detail) ?? null),
378
+ };
379
+ }
380
+ return {
381
+ ok: false,
382
+ message: `fundi is unavailable (503): ${raw.slice(0, 300)}`,
383
+ };
384
+ }
385
+ if (res.status === 401) {
386
+ return {
387
+ ok: false,
388
+ message: `fundi rejected the credentials (401): ${raw.slice(0, 300)}. The M2M token or the forwarded user token is invalid or expired.`,
389
+ };
390
+ }
391
+ if (res.status === 404) {
392
+ return {
393
+ ok: false,
394
+ 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.`,
395
+ };
396
+ }
397
+ if (!res.ok) {
398
+ return {
399
+ ok: false,
400
+ message: `fundi A2A "${method}" failed (${res.status}): ${raw.slice(0, 300)}`,
401
+ };
402
+ }
403
+ if (!isRecord(parsed)) {
404
+ return {
405
+ ok: false,
406
+ message: `fundi returned a non-JSON A2A response: ${raw.slice(0, 300)}`,
407
+ };
408
+ }
409
+ if (isRecord(parsed.error)) {
410
+ const code = typeof parsed.error.code === "number" ? parsed.error.code : null;
411
+ const label = code === null ? "error" : `${RPC_CODE_NAMES[code] ?? "error"} ${code}`;
412
+ const detail = optionalString(parsed.error.message) ?? "no message";
413
+ const data = parsed.error.data === undefined
414
+ ? ""
415
+ : ` ${JSON.stringify(parsed.error.data)}`;
416
+ return {
417
+ ok: false,
418
+ message: `fundi declined "${method}" (${label}): ${detail}${data}`,
419
+ };
420
+ }
421
+ if (parsed.result === undefined) {
422
+ return {
423
+ ok: false,
424
+ message: `fundi returned neither a result nor an error for "${method}".`,
425
+ };
426
+ }
427
+ return { ok: true, result: parsed.result };
428
+ }
429
+ /** Flatten an A2A Task into the shape the bridge tools declare. */
430
+ function summariseTask(raw) {
431
+ const task = isRecord(raw) ? raw : {};
432
+ const status = isRecord(task.status) ? task.status : {};
433
+ const metadata = isRecord(task.metadata) ? task.metadata : {};
434
+ const state = optionalString(status.state) ?? "unknown";
435
+ return {
436
+ taskId: optionalString(task.id),
437
+ contextId: optionalString(task.contextId),
438
+ state,
439
+ terminal: TERMINAL_STATES.includes(state),
440
+ timestamp: optionalString(status.timestamp),
441
+ skill: optionalString(metadata.skillId),
442
+ executionStatus: optionalString(metadata.executionStatus),
443
+ note: optionalString(metadata.note),
444
+ artifacts: Array.isArray(task.artifacts) ? task.artifacts : [],
445
+ historyLength: Array.isArray(task.history) ? task.history.length : 0,
446
+ };
447
+ }
448
+ // ── Dispatch ────────────────────────────────────────────────────────────────
449
+ /** `taskId` is required by every polling tool; validate before the network. */
450
+ function requireTaskId(args) {
451
+ const taskId = args["taskId"];
452
+ return typeof taskId === "string" && taskId.trim().length > 0
453
+ ? taskId.trim()
454
+ : null;
455
+ }
456
+ async function submitTest(fundi, args) {
457
+ const skill = args["skill"];
458
+ // Validated here, before any network call: the skill is named explicitly and
459
+ // never inferred, and an unknown id should cost a caller nothing.
460
+ if (typeof skill !== "string" || !FUNDI_SKILL_IDS.includes(skill)) {
461
+ return toolError(`\`skill\` must name one of fundi's declared skills: ${FUNDI_SKILL_IDS.join(", ")}. It is never inferred from the instruction text.`);
462
+ }
463
+ const instruction = args["instruction"];
464
+ if (typeof instruction !== "string" || instruction.trim().length === 0) {
465
+ return toolError("`instruction` is required — describe what fundi should do, in plain text.");
466
+ }
467
+ const context = args["context"];
468
+ if (context !== undefined && context !== null && !isRecord(context)) {
469
+ return toolError("`context`, when given, must be a JSON object.");
470
+ }
471
+ const parts = [
472
+ { kind: "text", text: instruction.trim() },
473
+ ];
474
+ if (isRecord(context))
475
+ parts.push({ kind: "data", data: context });
476
+ const outcome = await a2aCall(fundi, "message/send", {
477
+ message: {
478
+ kind: "message",
479
+ role: "user",
480
+ messageId: crypto.randomUUID(),
481
+ parts,
482
+ // fundi requires the skill on the message metadata (or on params); it is a
483
+ // hard requirement there, not a hint.
484
+ metadata: { skillId: skill },
485
+ },
486
+ });
487
+ if (!outcome.ok)
488
+ return toolError(outcome.message);
489
+ const summary = summariseTask(outcome.result);
490
+ if (!summary.taskId) {
491
+ return toolError(`fundi accepted "${skill}" but returned no task id: ${JSON.stringify(outcome.result).slice(0, 300)}`);
492
+ }
493
+ // Deliberately returns here — the run is not awaited. Poll, do not block.
494
+ const { artifacts: _artifacts, historyLength: _history, ...rest } = summary;
495
+ return jsonContent({ ...rest, pollWith: `mzizi_${FUNDI_STATUS_TOOL}` });
496
+ }
497
+ async function taskStatus(fundi, args) {
498
+ const taskId = requireTaskId(args);
499
+ if (!taskId)
500
+ return toolError("`taskId` is required.");
501
+ const outcome = await a2aCall(fundi, "tasks/get", { id: taskId });
502
+ if (!outcome.ok)
503
+ return toolError(outcome.message);
504
+ return jsonContent(summariseTask(outcome.result));
505
+ }
506
+ async function cancelTask(fundi, args) {
507
+ const taskId = requireTaskId(args);
508
+ if (!taskId)
509
+ return toolError("`taskId` is required.");
510
+ const outcome = await a2aCall(fundi, "tasks/cancel", { id: taskId });
511
+ if (!outcome.ok)
512
+ return toolError(outcome.message);
513
+ const summary = summariseTask(outcome.result);
514
+ const { artifacts: _artifacts, historyLength: _history, ...rest } = summary;
515
+ return jsonContent({ ...rest, canceled: summary.state === "canceled" });
516
+ }
517
+ /**
518
+ * Dispatch one bridge tool. `name` is the unprefixed tool name and must satisfy
519
+ * `isFundiA2AToolName`; the server checks that before calling in.
520
+ */
521
+ export async function dispatchFundiA2A(name, args, fundi) {
522
+ switch (name) {
523
+ case FUNDI_SUBMIT_TOOL:
524
+ return submitTest(fundi, args);
525
+ case FUNDI_STATUS_TOOL:
526
+ return taskStatus(fundi, args);
527
+ case FUNDI_CANCEL_TOOL:
528
+ return cancelTask(fundi, args);
529
+ default:
530
+ return toolError(`Unknown fundi A2A tool: ${name}`);
531
+ }
532
+ }
533
+ //# 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.8";
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.8";
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.8",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },