@nyuchi/mzizi-mcp 0.9.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +115 -85
- package/dist/access.d.ts +69 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +72 -0
- package/dist/access.js.map +1 -0
- package/dist/auth/authkit-handler.d.ts +4 -3
- package/dist/auth/authkit-handler.d.ts.map +1 -1
- package/dist/auth/authkit-handler.js +52 -6
- package/dist/auth/authkit-handler.js.map +1 -1
- package/dist/auth/front.d.ts +17 -0
- package/dist/auth/front.d.ts.map +1 -0
- package/dist/auth/front.js +25 -0
- package/dist/auth/front.js.map +1 -0
- package/dist/auth/mcp-api-handler.d.ts +20 -7
- package/dist/auth/mcp-api-handler.d.ts.map +1 -1
- package/dist/auth/mcp-api-handler.js +43 -29
- package/dist/auth/mcp-api-handler.js.map +1 -1
- package/dist/desk-context.d.ts +33 -0
- package/dist/desk-context.d.ts.map +1 -0
- package/dist/desk-context.js +49 -0
- package/dist/desk-context.js.map +1 -0
- package/dist/docs-federation.d.ts +68 -0
- package/dist/docs-federation.d.ts.map +1 -0
- package/dist/docs-federation.js +282 -0
- package/dist/docs-federation.js.map +1 -0
- package/dist/env.d.ts +7 -8
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +5 -5
- package/dist/fundi-a2a.d.ts +1 -1
- package/dist/fundi-a2a.js +2 -2
- package/dist/fundi-a2a.js.map +1 -1
- package/dist/fundi-client.d.ts +24 -4
- package/dist/fundi-client.d.ts.map +1 -1
- package/dist/fundi-client.js +91 -4
- package/dist/fundi-client.js.map +1 -1
- package/dist/generated/registry-pin.d.ts +5 -0
- package/dist/generated/registry-pin.d.ts.map +1 -0
- package/dist/generated/registry-pin.js +3 -0
- package/dist/generated/registry-pin.js.map +1 -0
- package/dist/generated/registry.d.ts +23 -0
- package/dist/generated/registry.d.ts.map +1 -0
- package/dist/generated/registry.js +1204 -0
- package/dist/generated/registry.js.map +1 -0
- package/dist/generated/skills.d.ts +18 -0
- package/dist/generated/skills.d.ts.map +1 -0
- package/dist/generated/skills.js +67 -0
- package/dist/generated/skills.js.map +1 -0
- package/dist/http.d.ts +18 -9
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +16 -13
- package/dist/http.js.map +1 -1
- package/dist/issue-desk.d.ts +152 -0
- package/dist/issue-desk.d.ts.map +1 -0
- package/dist/issue-desk.js +392 -0
- package/dist/issue-desk.js.map +1 -0
- package/dist/issue-log.d.ts +80 -0
- package/dist/issue-log.d.ts.map +1 -0
- package/dist/issue-log.js +146 -0
- package/dist/issue-log.js.map +1 -0
- package/dist/issue-report.d.ts +138 -0
- package/dist/issue-report.d.ts.map +1 -0
- package/dist/issue-report.js +112 -0
- package/dist/issue-report.js.map +1 -0
- package/dist/rate-limit.d.ts +41 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +58 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/registry.d.ts +126 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +280 -0
- package/dist/registry.js.map +1 -0
- package/dist/server.d.ts +96 -22
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +76 -32
- package/dist/server.js.map +1 -1
- package/dist/stdio.d.ts +6 -13
- package/dist/stdio.d.ts.map +1 -1
- package/dist/stdio.js +6 -29
- package/dist/stdio.js.map +1 -1
- package/dist/tools.d.ts +45 -6
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +299 -82
- package/dist/tools.js.map +1 -1
- package/dist/worker.d.ts +26 -14
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +42 -14
- package/dist/worker.js.map +1 -1
- package/package.json +24 -19
- package/dist/api-client.d.ts +0 -101
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js +0 -200
- package/dist/api-client.js.map +0 -1
- package/dist/defaults.d.ts +0 -29
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js +0 -29
- package/dist/defaults.js.map +0 -1
package/dist/tools.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The Mzizi MCP tool surface — 10 tools, defined in code.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Eight are free. `fundi` and `report_issue` act as a console user and need
|
|
5
|
+
* the WorkOS sign-in; `access.ts` says which is which and how to sign in.
|
|
6
|
+
*
|
|
7
|
+
* The registry tools answer from files bundled into this build (`registry.ts`,
|
|
8
|
+
* generated from mzizi-dev/mzizi-registry at the commit in `registry.pin.json`), and
|
|
9
|
+
* skills from the skill files in this repo. There is no database and no request-time
|
|
10
|
+
* registry API call. Docs are federated separately (`docs-federation.ts`).
|
|
8
11
|
*
|
|
9
12
|
* Defining the tools here rather than loading them from a table is the point. A
|
|
10
13
|
* registry-driven surface changed what the server exposed whenever someone edited a
|
|
@@ -16,10 +19,13 @@
|
|
|
16
19
|
* be checked mechanically rather than argued about.
|
|
17
20
|
*/
|
|
18
21
|
import { z } from "zod";
|
|
22
|
+
import { bundledRegistry } from "./registry.js";
|
|
19
23
|
import { dispatchFundiA2A, FUNDI_SUBMIT_TOOL, FUNDI_STATUS_TOOL, FUNDI_CANCEL_TOOL, } from "./fundi-a2a.js";
|
|
20
24
|
import { jsonContent, toolError } from "./tool-result.js";
|
|
25
|
+
import { signInRequired } from "./access.js";
|
|
26
|
+
import { BUNDLED_SKILLS, SKILLS_VERSION } from "./generated/skills.js";
|
|
21
27
|
export const TOOL_PREFIX = "mzizi_";
|
|
22
|
-
/** Unwrap
|
|
28
|
+
/** Unwrap a registry result into an MCP tool result, keeping the failure readable. */
|
|
23
29
|
function respond(result, wrapKey) {
|
|
24
30
|
if (!result.ok)
|
|
25
31
|
return toolError(result.message);
|
|
@@ -27,10 +33,14 @@ function respond(result, wrapKey) {
|
|
|
27
33
|
}
|
|
28
34
|
/**
|
|
29
35
|
* Annotations are declared per tool, honestly. A read is read-only and idempotent; a
|
|
30
|
-
* write is neither.
|
|
31
|
-
*
|
|
36
|
+
* write is neither. The registry reads are closed-world — they answer from the bundle
|
|
37
|
+
* and reach nothing — while the writes (the issue desk, fundi) reach other services.
|
|
32
38
|
*/
|
|
33
|
-
const READ = {
|
|
39
|
+
const READ = {
|
|
40
|
+
readOnlyHint: true,
|
|
41
|
+
idempotentHint: true,
|
|
42
|
+
openWorldHint: false,
|
|
43
|
+
};
|
|
34
44
|
/**
|
|
35
45
|
* Default rows per `list_components` call.
|
|
36
46
|
*
|
|
@@ -80,14 +90,23 @@ export const TOOL_COVERAGE = {
|
|
|
80
90
|
"resolve_primitive",
|
|
81
91
|
"list_primitive_sources",
|
|
82
92
|
],
|
|
83
|
-
list_components: [
|
|
93
|
+
list_components: [
|
|
94
|
+
"list_components",
|
|
95
|
+
"list_collections",
|
|
96
|
+
"get_node_categories",
|
|
97
|
+
"get_node_counts",
|
|
98
|
+
],
|
|
84
99
|
get_tokens: [
|
|
85
100
|
"get_brand_tokens",
|
|
86
101
|
"list_brand_token_categories",
|
|
87
102
|
"get_token_counts",
|
|
88
103
|
"list_ecosystem_brands",
|
|
89
104
|
],
|
|
90
|
-
get_architecture: [
|
|
105
|
+
get_architecture: [
|
|
106
|
+
"get_architecture",
|
|
107
|
+
"get_node_detail",
|
|
108
|
+
"get_node_documents",
|
|
109
|
+
],
|
|
91
110
|
get_doctrine: [
|
|
92
111
|
"get_ubuntu_pillars",
|
|
93
112
|
"get_ubuntu_principles",
|
|
@@ -107,11 +126,20 @@ export const TOOL_COVERAGE = {
|
|
|
107
126
|
"run_accessibility_audit",
|
|
108
127
|
"get_accessibility_summary",
|
|
109
128
|
],
|
|
110
|
-
report_issue: [
|
|
111
|
-
|
|
129
|
+
report_issue: [
|
|
130
|
+
"submit_component_feedback",
|
|
131
|
+
"record_observability_event",
|
|
132
|
+
"record_chaos_event",
|
|
133
|
+
],
|
|
134
|
+
fundi: [
|
|
135
|
+
"fundi_status",
|
|
136
|
+
"fundi_submit_test",
|
|
137
|
+
"fundi_task_status",
|
|
138
|
+
"fundi_cancel_task",
|
|
139
|
+
],
|
|
112
140
|
};
|
|
113
141
|
export function registerMziziTools(server, opts) {
|
|
114
|
-
const
|
|
142
|
+
const reg = opts.registry ?? bundledRegistry;
|
|
115
143
|
const registered = [];
|
|
116
144
|
// Records the bare name and returns the prefixed one, so registerTool is called
|
|
117
145
|
// directly and keeps its generic inference over the Zod input schema.
|
|
@@ -122,14 +150,16 @@ export function registerMziziTools(server, opts) {
|
|
|
122
150
|
// 1 ─ search
|
|
123
151
|
server.registerTool(note("search"), {
|
|
124
152
|
title: "Search Mzizi",
|
|
125
|
-
description: "Search
|
|
126
|
-
inputSchema: {
|
|
153
|
+
description: "Search the registry by words: components, conventions, AI instruction sets and releases. Start here when you do not know the exact name of what you want. Documentation pages are searched by the docs_* tools.",
|
|
154
|
+
inputSchema: {
|
|
155
|
+
query: z.string().min(1).describe("Free-text search term."),
|
|
156
|
+
},
|
|
127
157
|
annotations: READ,
|
|
128
|
-
}, async ({ query }) => respond(await
|
|
158
|
+
}, async ({ query }) => respond((await reg()).search(query), "results"));
|
|
129
159
|
// 2 ─ get_component — one read, everything
|
|
130
160
|
server.registerTool(note("get_component"), {
|
|
131
161
|
title: "Get a component",
|
|
132
|
-
description: "Fetch one component in full: metadata, dependencies, registryDependencies, files[]
|
|
162
|
+
description: "Fetch one component in full: metadata, dependencies, registryDependencies, files[] with source inline, docs (use cases, variants, a11y) and version history (from the changelog). One read, everything. Former nyuchi-* names resolve to their mzizi-* successors.",
|
|
133
163
|
inputSchema: {
|
|
134
164
|
name: z.string().min(1).describe("Component name, e.g. 'button'."),
|
|
135
165
|
include: z
|
|
@@ -139,14 +169,17 @@ export function registerMziziTools(server, opts) {
|
|
|
139
169
|
},
|
|
140
170
|
annotations: READ,
|
|
141
171
|
}, async ({ name, include }) => {
|
|
142
|
-
const
|
|
172
|
+
const r = await reg();
|
|
173
|
+
const base = r.getComponent(name);
|
|
143
174
|
if (!base.ok)
|
|
144
175
|
return toolError(base.message);
|
|
145
176
|
const out = { component: base.data };
|
|
146
|
-
//
|
|
147
|
-
//
|
|
177
|
+
// A failure in an extra section must not discard the component the caller
|
|
178
|
+
// actually asked for -- it is reported alongside it.
|
|
148
179
|
for (const section of include ?? []) {
|
|
149
|
-
const res = section === "docs"
|
|
180
|
+
const res = section === "docs"
|
|
181
|
+
? r.getComponentDocs(name)
|
|
182
|
+
: r.getComponentVersions(name);
|
|
150
183
|
out[section] = res.ok ? res.data : { error: res.message };
|
|
151
184
|
}
|
|
152
185
|
return jsonContent(out);
|
|
@@ -161,7 +194,10 @@ export function registerMziziTools(server, opts) {
|
|
|
161
194
|
inputSchema: {
|
|
162
195
|
// No .max(): the node set is uncapped, and a Zod bound would reject a filter
|
|
163
196
|
// before it reached the data, turning a new node into a schema error.
|
|
164
|
-
node: NUM.int()
|
|
197
|
+
node: NUM.int()
|
|
198
|
+
.positive()
|
|
199
|
+
.optional()
|
|
200
|
+
.describe("Filter by node number (uncapped)."),
|
|
165
201
|
owner: z
|
|
166
202
|
.string()
|
|
167
203
|
.optional()
|
|
@@ -174,34 +210,29 @@ export function registerMziziTools(server, opts) {
|
|
|
174
210
|
.string()
|
|
175
211
|
.optional()
|
|
176
212
|
.describe("Filter by registry type, e.g. registry:ui | registry:lib | registry:block."),
|
|
177
|
-
limit: NUM.int()
|
|
178
|
-
|
|
213
|
+
limit: NUM.int()
|
|
214
|
+
.positive()
|
|
215
|
+
.optional()
|
|
216
|
+
.describe(`Rows per call (default ${LIST_DEFAULT_LIMIT}).`),
|
|
217
|
+
offset: NUM.int()
|
|
218
|
+
.min(0)
|
|
219
|
+
.optional()
|
|
220
|
+
.describe("Rows to skip, for paging."),
|
|
179
221
|
},
|
|
180
222
|
annotations: READ,
|
|
181
223
|
}, async ({ node, owner, collection, type, limit, offset }) => {
|
|
182
|
-
// Filtering and paging happen UPSTREAM. Doing it here is what was broken: the index
|
|
183
|
-
// carried none of these fields, so every filter compared against `undefined` and
|
|
184
|
-
// returned nothing — for every value, without ever saying so.
|
|
185
224
|
const take = limit ?? LIST_DEFAULT_LIMIT;
|
|
186
225
|
const skip = offset ?? 0;
|
|
187
|
-
const res = await
|
|
188
|
-
|
|
189
|
-
|
|
226
|
+
const res = (await reg()).listComponents({
|
|
227
|
+
node,
|
|
228
|
+
owner,
|
|
229
|
+
collection,
|
|
230
|
+
type,
|
|
231
|
+
limit: take,
|
|
232
|
+
offset: skip,
|
|
233
|
+
});
|
|
190
234
|
const payload = res.data;
|
|
191
235
|
const rows = payload.items ?? [];
|
|
192
|
-
// Refuse rather than mislead when the upstream is older than this tool.
|
|
193
|
-
//
|
|
194
|
-
// An API that does not know these params IGNORES them and returns the whole
|
|
195
|
-
// registry. Paging that and labelling it `node=3` would hand back 400 unrelated
|
|
196
|
-
// components as though they matched — a wrong answer dressed as a right one, which
|
|
197
|
-
// is worse than the empty list this tool used to return. The `meta.filters` echo is
|
|
198
|
-
// the upstream saying "I applied these"; no echo, no claim.
|
|
199
|
-
const askedToFilter = node !== undefined || owner !== undefined || collection !== undefined || type !== undefined;
|
|
200
|
-
if (askedToFilter && payload.meta?.filters === undefined) {
|
|
201
|
-
return toolError("The Mzizi API did not confirm it applied the filter, so these results cannot be " +
|
|
202
|
-
"trusted as filtered — it is serving a build older than this tool. Retry without " +
|
|
203
|
-
"node/owner/collection/type, or use search.");
|
|
204
|
-
}
|
|
205
236
|
const total = payload.meta?.total ?? rows.length;
|
|
206
237
|
const registryTotal = payload.meta?.registryTotal;
|
|
207
238
|
// The lean row. `description` and `dependencies` are deliberately absent: with them
|
|
@@ -223,7 +254,10 @@ export function registerMziziTools(server, opts) {
|
|
|
223
254
|
offset: skip,
|
|
224
255
|
hasMore: returned < total,
|
|
225
256
|
...(returned < total
|
|
226
|
-
? {
|
|
257
|
+
? {
|
|
258
|
+
nextOffset: returned,
|
|
259
|
+
hint: `Call again with offset=${returned}, or narrow with node/owner/collection.`,
|
|
260
|
+
}
|
|
227
261
|
: {}),
|
|
228
262
|
// Present so a caller can distinguish "your filter matched nothing" from "the
|
|
229
263
|
// registry is empty" — the two look identical in an empty items array, and the
|
|
@@ -235,24 +269,98 @@ export function registerMziziTools(server, opts) {
|
|
|
235
269
|
// 4 ─ get_tokens
|
|
236
270
|
server.registerTool(note("get_tokens"), {
|
|
237
271
|
title: "Get design tokens",
|
|
238
|
-
description: "The Mzizi brand system: minerals, heritage
|
|
272
|
+
description: "The Mzizi brand system: 21 colour families (7 minerals, 7 heritage, 7 experimental), semantic colours, typography, spacing, radii and the ecosystem brands. Ask for `colors` to get every colour family in one call.",
|
|
239
273
|
inputSchema: {
|
|
240
274
|
family: z
|
|
241
275
|
.string()
|
|
242
276
|
.optional()
|
|
243
|
-
.describe("
|
|
277
|
+
.describe("One of: colors (all 21 colour families at once), minerals, heritage, experimental, semantic, backgrounds, typography, spacing, radii, ecosystem, componentSpecs, accessibility, voiceAndTone, philosophy. Common aliases resolve (status/semanticColors, radius, type/fonts, exp). Omit for everything."),
|
|
244
278
|
},
|
|
245
279
|
annotations: READ,
|
|
246
280
|
}, async ({ family }) => {
|
|
247
|
-
const res = await
|
|
248
|
-
if (!res.ok)
|
|
249
|
-
return toolError(res.message);
|
|
281
|
+
const res = (await reg()).getBrand();
|
|
250
282
|
if (!family)
|
|
251
283
|
return jsonContent(res.data);
|
|
252
284
|
const brand = res.data;
|
|
253
|
-
|
|
285
|
+
// The payload is JSON-LD, so it carries an envelope ($schema, @context,
|
|
286
|
+
// @type) and metadata (version, name, lastUpdated, homepage) alongside the
|
|
287
|
+
// token families. Those are not selectable families, and listing them as
|
|
288
|
+
// such was actively misleading: an agent that asked for a real family and
|
|
289
|
+
// missed was told "Available: $schema, @context, @type, version, name, …".
|
|
290
|
+
// `name` was also reachable by the old substring match, so `family:
|
|
291
|
+
// "name"` returned the brand's name instead of an error.
|
|
292
|
+
const ENVELOPE = new Set([
|
|
293
|
+
"$schema",
|
|
294
|
+
"@context",
|
|
295
|
+
"@type",
|
|
296
|
+
"version",
|
|
297
|
+
"name",
|
|
298
|
+
"lastUpdated",
|
|
299
|
+
"homepage",
|
|
300
|
+
]);
|
|
301
|
+
const families = Object.keys(brand).filter((k) => !ENVELOPE.has(k));
|
|
302
|
+
// Every family name this tool has ever advertised resolves, plus the
|
|
303
|
+
// synonyms a model reaches for first. The previous resolver was a
|
|
304
|
+
// substring match over raw keys, so `heritage`, `status`, `radius` and
|
|
305
|
+
// `type` — four of the seven names in its own schema — simply errored.
|
|
306
|
+
const ALIASES = {
|
|
307
|
+
minerals: "minerals",
|
|
308
|
+
mineral: "minerals",
|
|
309
|
+
heritage: "heritage",
|
|
310
|
+
heritagecolors: "heritage",
|
|
311
|
+
heritagecolours: "heritage",
|
|
312
|
+
experimental: "experimental",
|
|
313
|
+
exp: "experimental",
|
|
314
|
+
semantic: "semanticColors",
|
|
315
|
+
semanticcolors: "semanticColors",
|
|
316
|
+
semanticcolours: "semanticColors",
|
|
317
|
+
status: "semanticColors",
|
|
318
|
+
background: "backgrounds",
|
|
319
|
+
backgrounds: "backgrounds",
|
|
320
|
+
type: "typography",
|
|
321
|
+
typography: "typography",
|
|
322
|
+
font: "typography",
|
|
323
|
+
fonts: "typography",
|
|
324
|
+
spacing: "spacing",
|
|
325
|
+
space: "spacing",
|
|
326
|
+
radius: "radii",
|
|
327
|
+
radii: "radii",
|
|
328
|
+
ecosystem: "ecosystem",
|
|
329
|
+
brands: "ecosystem",
|
|
330
|
+
componentspecs: "componentSpecs",
|
|
331
|
+
components: "componentSpecs",
|
|
332
|
+
accessibility: "accessibility",
|
|
333
|
+
a11y: "accessibility",
|
|
334
|
+
voiceandtone: "voiceAndTone",
|
|
335
|
+
voice: "voiceAndTone",
|
|
336
|
+
philosophy: "philosophy",
|
|
337
|
+
};
|
|
338
|
+
const asked = family.toLowerCase().replace(/[\s_-]/g, "");
|
|
339
|
+
// One call for the whole palette. An agent styling anything needs the
|
|
340
|
+
// colours and nothing else; making it guess three family names — or fetch
|
|
341
|
+
// the entire brand payload including philosophy prose — is the round-trip
|
|
342
|
+
// cost this shortcut removes.
|
|
343
|
+
if (asked === "colors" || asked === "colours" || asked === "palette") {
|
|
344
|
+
const colourFamilies = [
|
|
345
|
+
"minerals",
|
|
346
|
+
"heritage",
|
|
347
|
+
"experimental",
|
|
348
|
+
"semanticColors",
|
|
349
|
+
"backgrounds",
|
|
350
|
+
];
|
|
351
|
+
const out = {};
|
|
352
|
+
for (const k of colourFamilies)
|
|
353
|
+
if (k in brand)
|
|
354
|
+
out[k] = brand[k];
|
|
355
|
+
return jsonContent(out);
|
|
356
|
+
}
|
|
357
|
+
const resolved = ALIASES[asked];
|
|
358
|
+
const key = resolved && resolved in brand
|
|
359
|
+
? resolved
|
|
360
|
+
: families.find((k) => k.toLowerCase() === asked);
|
|
254
361
|
if (!key) {
|
|
255
|
-
return toolError(`No token family matching "${family}". Available: ${
|
|
362
|
+
return toolError(`No token family matching "${family}". Available: ${families.join(", ")}. ` +
|
|
363
|
+
`Use "colors" for every colour family at once.`);
|
|
256
364
|
}
|
|
257
365
|
return jsonContent({ [key]: brand[key] });
|
|
258
366
|
});
|
|
@@ -261,35 +369,74 @@ export function registerMziziTools(server, opts) {
|
|
|
261
369
|
title: "Get the architecture",
|
|
262
370
|
description: "The Mzizi DNA double helix — nodes, rungs and strands — with live counts. Pass `node` for one node's covenant, stakeholder and implementation rules.",
|
|
263
371
|
inputSchema: {
|
|
264
|
-
node: NUM.int()
|
|
372
|
+
node: NUM.int()
|
|
373
|
+
.positive()
|
|
374
|
+
.optional()
|
|
375
|
+
.describe("One node's detail (uncapped)."),
|
|
265
376
|
},
|
|
266
377
|
annotations: READ,
|
|
267
|
-
}, async ({ node }) =>
|
|
378
|
+
}, async ({ node }) => {
|
|
379
|
+
const r = await reg();
|
|
380
|
+
return respond(node === undefined ? r.getArchitecture() : r.getNode(node));
|
|
381
|
+
});
|
|
268
382
|
// 6 ─ get_doctrine
|
|
269
383
|
server.registerTool(note("get_doctrine"), {
|
|
270
384
|
title: "Get doctrine",
|
|
271
|
-
description: "How to build here: Ubuntu pillars and principles,
|
|
385
|
+
description: "How to build here: Ubuntu pillars and principles, mzizi conventions, and the AI instruction sets.",
|
|
272
386
|
inputSchema: {
|
|
273
387
|
topic: z
|
|
274
|
-
.enum(["ubuntu-pillars", "ubuntu-principles", "ai-instructions"])
|
|
388
|
+
.enum(["ubuntu-pillars", "ubuntu-principles", "ai-instructions", "conventions"])
|
|
275
389
|
.describe("Which doctrine to read."),
|
|
276
|
-
name: z
|
|
390
|
+
name: z
|
|
391
|
+
.string()
|
|
392
|
+
.optional()
|
|
393
|
+
.describe("For ai-instructions, the name or target to fetch; for conventions, the convention's name. Omit to list."),
|
|
277
394
|
},
|
|
278
395
|
annotations: READ,
|
|
279
396
|
}, async ({ topic, name }) => {
|
|
397
|
+
const r = await reg();
|
|
280
398
|
if (topic === "ubuntu-pillars")
|
|
281
|
-
return respond(
|
|
399
|
+
return respond(r.getUbuntuPillars(), "pillars");
|
|
282
400
|
if (topic === "ubuntu-principles")
|
|
283
|
-
return respond(
|
|
284
|
-
|
|
401
|
+
return respond(r.getUbuntuPrinciples(), "principles");
|
|
402
|
+
if (topic === "conventions")
|
|
403
|
+
return respond(name ? r.getConvention(name) : r.listConventions());
|
|
404
|
+
return respond(name ? r.getAiInstructions(name) : r.listAiInstructions());
|
|
285
405
|
});
|
|
286
|
-
// 7 ─ get_skills
|
|
406
|
+
// 7 ─ get_skills — served from the bundle this Worker ships with
|
|
287
407
|
server.registerTool(note("get_skills"), {
|
|
288
408
|
title: "Get agent skills",
|
|
289
|
-
description: "List the published Mzizi agent skills, or fetch one in full. Skills are what an agent loads first.",
|
|
290
|
-
inputSchema: {
|
|
409
|
+
description: "List the published Mzizi agent skills, or fetch one in full. Skills are what an agent loads first. Served from the skill files bundled into this server at build time, so they are exactly the text in mzizi-dev/agent-tools at the deployed commit.",
|
|
410
|
+
inputSchema: {
|
|
411
|
+
name: z.string().optional().describe("Skill name. Omit to list all."),
|
|
412
|
+
},
|
|
291
413
|
annotations: READ,
|
|
292
|
-
},
|
|
414
|
+
},
|
|
415
|
+
// No network call, and that is the point. This used to read
|
|
416
|
+
// mzizi.dev/api/v1/skills, which read a database row, which a script had to
|
|
417
|
+
// be remembered to sync from git. It was not, and the MCP served skills
|
|
418
|
+
// instructing agents to write into a database column that had been cleared.
|
|
419
|
+
// The Worker now answers from the bundle it was built with: one hop, and a
|
|
420
|
+
// merge is the only way the answer changes.
|
|
421
|
+
async ({ name }) => {
|
|
422
|
+
if (!name) {
|
|
423
|
+
// The list omits bodies — nine full skills is ~60 kB, and a client
|
|
424
|
+
// asking "what is available" is choosing, not reading.
|
|
425
|
+
return jsonContent({
|
|
426
|
+
version: SKILLS_VERSION,
|
|
427
|
+
skills: BUNDLED_SKILLS.map(({ name: n, description, source }) => ({
|
|
428
|
+
name: n,
|
|
429
|
+
description,
|
|
430
|
+
source,
|
|
431
|
+
})),
|
|
432
|
+
}, "skills");
|
|
433
|
+
}
|
|
434
|
+
const skill = BUNDLED_SKILLS.find((s) => s.name === name);
|
|
435
|
+
if (!skill) {
|
|
436
|
+
return toolError(`No skill named "${name}". Available: ${BUNDLED_SKILLS.map((s) => s.name).join(", ")}.`);
|
|
437
|
+
}
|
|
438
|
+
return jsonContent({ version: SKILLS_VERSION, ...skill }, "skills");
|
|
439
|
+
});
|
|
293
440
|
// 8 ─ check_accessibility
|
|
294
441
|
server.registerTool(note("check_accessibility"), {
|
|
295
442
|
title: "Check accessibility",
|
|
@@ -327,49 +474,119 @@ export function registerMziziTools(server, opts) {
|
|
|
327
474
|
foreground,
|
|
328
475
|
background,
|
|
329
476
|
contrastRatio: rounded,
|
|
330
|
-
passes: {
|
|
477
|
+
passes: {
|
|
478
|
+
aaLarge: rounded >= 3,
|
|
479
|
+
aa: rounded >= 4.5,
|
|
480
|
+
aaa: rounded >= 7,
|
|
481
|
+
},
|
|
331
482
|
// Mzizi's floor is AAA (7:1), stricter than WCAG AA -- say so rather than
|
|
332
483
|
// letting a 4.5 look like a pass here.
|
|
333
484
|
meetsMziziFloor: rounded >= 7,
|
|
334
485
|
});
|
|
335
486
|
});
|
|
336
|
-
// 9 ─ report_issue — the
|
|
487
|
+
// 9 ─ report_issue — the write sink, backed by the per-user issue desk
|
|
337
488
|
server.registerTool(note("report_issue"), {
|
|
338
489
|
title: "Report an issue",
|
|
339
|
-
description: "
|
|
490
|
+
description: "Report a problem with a component or the registry. It goes to your own issue desk — a Durable Object holding your reports — which reproduces it via fundi, drafts an issue body including what the reproduction actually returned, and logs it to fundi. fundi files the GitHub issue with its proposed fix in it and tracks that issue afterwards, so action 'get' shows where yours got to: filed, picked up, closed. Use 'list' to see your earlier reports and 'retry' to re-attempt one that drafted but could not be logged. Your history is included in each new issue, because a repeated complaint from one reporter is often one bug. Needs sign-in: the desk belongs to your Mzizi console user.",
|
|
340
491
|
inputSchema: {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
492
|
+
action: z
|
|
493
|
+
.enum(["file", "list", "get", "retry"])
|
|
494
|
+
.default("file")
|
|
495
|
+
.describe("What to do. Defaults to filing a new report."),
|
|
496
|
+
kind: z
|
|
497
|
+
.enum(["feedback", "observability", "chaos"])
|
|
498
|
+
.optional()
|
|
499
|
+
.describe("Report kind. Required for action 'file'."),
|
|
500
|
+
component: z
|
|
501
|
+
.string()
|
|
502
|
+
.optional()
|
|
503
|
+
.describe("Component the report concerns."),
|
|
504
|
+
message: z
|
|
505
|
+
.string()
|
|
506
|
+
.optional()
|
|
507
|
+
.describe("What happened. Required for action 'file'."),
|
|
344
508
|
severity: z.enum(["low", "medium", "high", "critical"]).optional(),
|
|
509
|
+
skill: z
|
|
510
|
+
.string()
|
|
511
|
+
.optional()
|
|
512
|
+
.describe("fundi skill to run for the reproduction. fundi never infers a skill from text, so omit this to let the report kind choose one."),
|
|
513
|
+
reportId: z
|
|
514
|
+
.string()
|
|
515
|
+
.optional()
|
|
516
|
+
.describe("Report id. Required for actions 'get' and 'retry'."),
|
|
517
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
345
518
|
},
|
|
346
519
|
annotations: WRITE,
|
|
347
|
-
}, async (
|
|
348
|
-
|
|
349
|
-
//
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
520
|
+
}, async (args) => {
|
|
521
|
+
const desk = opts.desk;
|
|
522
|
+
// An anonymous caller on the Worker: the desk exists, the user does not.
|
|
523
|
+
if (!desk && opts.anonymous)
|
|
524
|
+
return signInRequired("report_issue");
|
|
525
|
+
// The desk is per USER, so it needs an identity. The stdio bin and
|
|
526
|
+
// `wrangler dev` have neither a binding nor a signed-in user, and saying
|
|
527
|
+
// that plainly beats a null-object desk that accepts reports into nothing.
|
|
528
|
+
if (!desk) {
|
|
529
|
+
return toolError("The issue desk is not available on this server. It needs the ISSUE_DESK Durable Object binding and a signed-in user, which the deployed Worker at mcp.mzizi.dev has and the stdio bin does not. " +
|
|
530
|
+
"File it directly at https://github.com/mzizi-dev/mzizi-registry/issues.");
|
|
531
|
+
}
|
|
532
|
+
const action = args.action ?? "file";
|
|
533
|
+
if (action === "list") {
|
|
534
|
+
return jsonContent(await desk.list(args.limit ?? 20), "reports");
|
|
535
|
+
}
|
|
536
|
+
if (action === "get") {
|
|
537
|
+
if (!args.reportId)
|
|
538
|
+
return toolError("action 'get' needs a reportId.");
|
|
539
|
+
const report = await desk.get(args.reportId);
|
|
540
|
+
if (!report) {
|
|
541
|
+
return toolError(`No report ${args.reportId} on your desk. Use action 'list' to see the ids you own — a desk holds one person's reports, so an id from someone else's will not be found here.`);
|
|
542
|
+
}
|
|
543
|
+
return jsonContent(report, "report");
|
|
544
|
+
}
|
|
545
|
+
if (action === "retry") {
|
|
546
|
+
if (!args.reportId)
|
|
547
|
+
return toolError("action 'retry' needs a reportId.");
|
|
548
|
+
const report = await desk.retry(args.reportId);
|
|
549
|
+
if (!report)
|
|
550
|
+
return toolError(`No report ${args.reportId} on your desk.`);
|
|
551
|
+
return jsonContent(report, "report");
|
|
552
|
+
}
|
|
553
|
+
if (!args.kind || !args.message) {
|
|
554
|
+
return toolError("action 'file' needs both a kind and a message.");
|
|
555
|
+
}
|
|
556
|
+
return jsonContent(await desk.open({
|
|
557
|
+
kind: args.kind,
|
|
558
|
+
message: args.message,
|
|
559
|
+
component: args.component,
|
|
560
|
+
severity: args.severity,
|
|
561
|
+
skill: args.skill,
|
|
562
|
+
}), "report");
|
|
355
563
|
});
|
|
356
|
-
// 10 ─ fundi — only when this server
|
|
357
|
-
|
|
564
|
+
// 10 ─ fundi — only when this server can reach fundi. Listed to an anonymous
|
|
565
|
+
// caller too, so the refusal can say how to sign in.
|
|
566
|
+
if (opts.fundi || opts.anonymous?.fundi) {
|
|
358
567
|
const f = opts.fundi;
|
|
359
568
|
server.registerTool(note("fundi"), {
|
|
360
569
|
title: "fundi",
|
|
361
|
-
description: "Delegate a task to the fundi agent, or check on one. Submit-and-poll: `submit` returns a task id immediately and never waits for the run.",
|
|
570
|
+
description: "Delegate a task to the fundi agent, or check on one. Submit-and-poll: `submit` returns a task id immediately and never waits for the run. Needs sign-in: fundi runs as your Mzizi console user.",
|
|
362
571
|
inputSchema: {
|
|
363
572
|
action: z.enum(["submit", "task_status", "cancel"]),
|
|
364
573
|
skill: z
|
|
365
574
|
.enum(["security-scan", "chaos-run", "a11y-audit", "heal-issue"])
|
|
366
575
|
.optional()
|
|
367
576
|
.describe("Required for submit."),
|
|
368
|
-
instruction: z
|
|
369
|
-
|
|
577
|
+
instruction: z
|
|
578
|
+
.string()
|
|
579
|
+
.optional()
|
|
580
|
+
.describe("What fundi should do. Required for submit."),
|
|
581
|
+
taskId: z
|
|
582
|
+
.string()
|
|
583
|
+
.optional()
|
|
584
|
+
.describe("Required for task_status and cancel."),
|
|
370
585
|
},
|
|
371
586
|
annotations: { ...WRITE, destructiveHint: true },
|
|
372
587
|
}, async ({ action, skill, instruction, taskId }) => {
|
|
588
|
+
if (!f)
|
|
589
|
+
return signInRequired("fundi");
|
|
373
590
|
// Dispatch to the existing A2A layer rather than reimplementing it: it already
|
|
374
591
|
// owns the transport, the submit-and-poll guarantee (exactly one round trip on
|
|
375
592
|
// submit) and the entitlement refusals worded for a caller to act on.
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|