@nyuchi/mzizi-mcp 0.9.0 → 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 +313 -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
|
*
|
|
@@ -48,6 +58,20 @@ const READ = { readOnlyHint: true, idempotentHint: true, openWorldHint: true };
|
|
|
48
58
|
* are always reported, so nothing is hidden and nothing is silently truncated.
|
|
49
59
|
*/
|
|
50
60
|
const LIST_DEFAULT_LIMIT = 400;
|
|
61
|
+
/**
|
|
62
|
+
* A number argument that also accepts the string form of itself.
|
|
63
|
+
*
|
|
64
|
+
* MCP arguments arrive as JSON, but clients are not consistent about typing them: the same
|
|
65
|
+
* client that sent `node: 2` as a number sent `limit: 3` as `"3"`, and a bare `z.number()`
|
|
66
|
+
* rejected the whole call with a schema error before it reached the tool. From the agent's
|
|
67
|
+
* side that is indistinguishable from the filter being unsupported — the failure mode this
|
|
68
|
+
* tool has just been fixed for.
|
|
69
|
+
*
|
|
70
|
+
* Coercion is safe here because every one of these is `.int()`-bounded afterwards, so
|
|
71
|
+
* "abc" still fails and "3" resolves to 3. Being strict about a wire-format detail the
|
|
72
|
+
* caller does not control buys nothing.
|
|
73
|
+
*/
|
|
74
|
+
const NUM = z.coerce.number();
|
|
51
75
|
const WRITE = {
|
|
52
76
|
readOnlyHint: false,
|
|
53
77
|
destructiveHint: false,
|
|
@@ -66,14 +90,23 @@ export const TOOL_COVERAGE = {
|
|
|
66
90
|
"resolve_primitive",
|
|
67
91
|
"list_primitive_sources",
|
|
68
92
|
],
|
|
69
|
-
list_components: [
|
|
93
|
+
list_components: [
|
|
94
|
+
"list_components",
|
|
95
|
+
"list_collections",
|
|
96
|
+
"get_node_categories",
|
|
97
|
+
"get_node_counts",
|
|
98
|
+
],
|
|
70
99
|
get_tokens: [
|
|
71
100
|
"get_brand_tokens",
|
|
72
101
|
"list_brand_token_categories",
|
|
73
102
|
"get_token_counts",
|
|
74
103
|
"list_ecosystem_brands",
|
|
75
104
|
],
|
|
76
|
-
get_architecture: [
|
|
105
|
+
get_architecture: [
|
|
106
|
+
"get_architecture",
|
|
107
|
+
"get_node_detail",
|
|
108
|
+
"get_node_documents",
|
|
109
|
+
],
|
|
77
110
|
get_doctrine: [
|
|
78
111
|
"get_ubuntu_pillars",
|
|
79
112
|
"get_ubuntu_principles",
|
|
@@ -93,11 +126,20 @@ export const TOOL_COVERAGE = {
|
|
|
93
126
|
"run_accessibility_audit",
|
|
94
127
|
"get_accessibility_summary",
|
|
95
128
|
],
|
|
96
|
-
report_issue: [
|
|
97
|
-
|
|
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
|
+
],
|
|
98
140
|
};
|
|
99
141
|
export function registerMziziTools(server, opts) {
|
|
100
|
-
const
|
|
142
|
+
const reg = opts.registry ?? bundledRegistry;
|
|
101
143
|
const registered = [];
|
|
102
144
|
// Records the bare name and returns the prefixed one, so registerTool is called
|
|
103
145
|
// directly and keeps its generic inference over the Zod input schema.
|
|
@@ -108,14 +150,16 @@ export function registerMziziTools(server, opts) {
|
|
|
108
150
|
// 1 ─ search
|
|
109
151
|
server.registerTool(note("search"), {
|
|
110
152
|
title: "Search Mzizi",
|
|
111
|
-
description: "Search
|
|
112
|
-
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
|
+
},
|
|
113
157
|
annotations: READ,
|
|
114
|
-
}, async ({ query }) => respond(await
|
|
158
|
+
}, async ({ query }) => respond((await reg()).search(query), "results"));
|
|
115
159
|
// 2 ─ get_component — one read, everything
|
|
116
160
|
server.registerTool(note("get_component"), {
|
|
117
161
|
title: "Get a component",
|
|
118
|
-
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.",
|
|
119
163
|
inputSchema: {
|
|
120
164
|
name: z.string().min(1).describe("Component name, e.g. 'button'."),
|
|
121
165
|
include: z
|
|
@@ -125,14 +169,17 @@ export function registerMziziTools(server, opts) {
|
|
|
125
169
|
},
|
|
126
170
|
annotations: READ,
|
|
127
171
|
}, async ({ name, include }) => {
|
|
128
|
-
const
|
|
172
|
+
const r = await reg();
|
|
173
|
+
const base = r.getComponent(name);
|
|
129
174
|
if (!base.ok)
|
|
130
175
|
return toolError(base.message);
|
|
131
176
|
const out = { component: base.data };
|
|
132
|
-
//
|
|
133
|
-
//
|
|
177
|
+
// A failure in an extra section must not discard the component the caller
|
|
178
|
+
// actually asked for -- it is reported alongside it.
|
|
134
179
|
for (const section of include ?? []) {
|
|
135
|
-
const res = section === "docs"
|
|
180
|
+
const res = section === "docs"
|
|
181
|
+
? r.getComponentDocs(name)
|
|
182
|
+
: r.getComponentVersions(name);
|
|
136
183
|
out[section] = res.ok ? res.data : { error: res.message };
|
|
137
184
|
}
|
|
138
185
|
return jsonContent(out);
|
|
@@ -147,7 +194,10 @@ export function registerMziziTools(server, opts) {
|
|
|
147
194
|
inputSchema: {
|
|
148
195
|
// No .max(): the node set is uncapped, and a Zod bound would reject a filter
|
|
149
196
|
// before it reached the data, turning a new node into a schema error.
|
|
150
|
-
node:
|
|
197
|
+
node: NUM.int()
|
|
198
|
+
.positive()
|
|
199
|
+
.optional()
|
|
200
|
+
.describe("Filter by node number (uncapped)."),
|
|
151
201
|
owner: z
|
|
152
202
|
.string()
|
|
153
203
|
.optional()
|
|
@@ -160,34 +210,29 @@ export function registerMziziTools(server, opts) {
|
|
|
160
210
|
.string()
|
|
161
211
|
.optional()
|
|
162
212
|
.describe("Filter by registry type, e.g. registry:ui | registry:lib | registry:block."),
|
|
163
|
-
limit:
|
|
164
|
-
|
|
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."),
|
|
165
221
|
},
|
|
166
222
|
annotations: READ,
|
|
167
223
|
}, async ({ node, owner, collection, type, limit, offset }) => {
|
|
168
|
-
// Filtering and paging happen UPSTREAM. Doing it here is what was broken: the index
|
|
169
|
-
// carried none of these fields, so every filter compared against `undefined` and
|
|
170
|
-
// returned nothing — for every value, without ever saying so.
|
|
171
224
|
const take = limit ?? LIST_DEFAULT_LIMIT;
|
|
172
225
|
const skip = offset ?? 0;
|
|
173
|
-
const res = await
|
|
174
|
-
|
|
175
|
-
|
|
226
|
+
const res = (await reg()).listComponents({
|
|
227
|
+
node,
|
|
228
|
+
owner,
|
|
229
|
+
collection,
|
|
230
|
+
type,
|
|
231
|
+
limit: take,
|
|
232
|
+
offset: skip,
|
|
233
|
+
});
|
|
176
234
|
const payload = res.data;
|
|
177
235
|
const rows = payload.items ?? [];
|
|
178
|
-
// Refuse rather than mislead when the upstream is older than this tool.
|
|
179
|
-
//
|
|
180
|
-
// An API that does not know these params IGNORES them and returns the whole
|
|
181
|
-
// registry. Paging that and labelling it `node=3` would hand back 400 unrelated
|
|
182
|
-
// components as though they matched — a wrong answer dressed as a right one, which
|
|
183
|
-
// is worse than the empty list this tool used to return. The `meta.filters` echo is
|
|
184
|
-
// the upstream saying "I applied these"; no echo, no claim.
|
|
185
|
-
const askedToFilter = node !== undefined || owner !== undefined || collection !== undefined || type !== undefined;
|
|
186
|
-
if (askedToFilter && payload.meta?.filters === undefined) {
|
|
187
|
-
return toolError("The Mzizi API did not confirm it applied the filter, so these results cannot be " +
|
|
188
|
-
"trusted as filtered — it is serving a build older than this tool. Retry without " +
|
|
189
|
-
"node/owner/collection/type, or use search.");
|
|
190
|
-
}
|
|
191
236
|
const total = payload.meta?.total ?? rows.length;
|
|
192
237
|
const registryTotal = payload.meta?.registryTotal;
|
|
193
238
|
// The lean row. `description` and `dependencies` are deliberately absent: with them
|
|
@@ -209,7 +254,10 @@ export function registerMziziTools(server, opts) {
|
|
|
209
254
|
offset: skip,
|
|
210
255
|
hasMore: returned < total,
|
|
211
256
|
...(returned < total
|
|
212
|
-
? {
|
|
257
|
+
? {
|
|
258
|
+
nextOffset: returned,
|
|
259
|
+
hint: `Call again with offset=${returned}, or narrow with node/owner/collection.`,
|
|
260
|
+
}
|
|
213
261
|
: {}),
|
|
214
262
|
// Present so a caller can distinguish "your filter matched nothing" from "the
|
|
215
263
|
// registry is empty" — the two look identical in an empty items array, and the
|
|
@@ -221,24 +269,98 @@ export function registerMziziTools(server, opts) {
|
|
|
221
269
|
// 4 ─ get_tokens
|
|
222
270
|
server.registerTool(note("get_tokens"), {
|
|
223
271
|
title: "Get design tokens",
|
|
224
|
-
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.",
|
|
225
273
|
inputSchema: {
|
|
226
274
|
family: z
|
|
227
275
|
.string()
|
|
228
276
|
.optional()
|
|
229
|
-
.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."),
|
|
230
278
|
},
|
|
231
279
|
annotations: READ,
|
|
232
280
|
}, async ({ family }) => {
|
|
233
|
-
const res = await
|
|
234
|
-
if (!res.ok)
|
|
235
|
-
return toolError(res.message);
|
|
281
|
+
const res = (await reg()).getBrand();
|
|
236
282
|
if (!family)
|
|
237
283
|
return jsonContent(res.data);
|
|
238
284
|
const brand = res.data;
|
|
239
|
-
|
|
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);
|
|
240
361
|
if (!key) {
|
|
241
|
-
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.`);
|
|
242
364
|
}
|
|
243
365
|
return jsonContent({ [key]: brand[key] });
|
|
244
366
|
});
|
|
@@ -247,35 +369,74 @@ export function registerMziziTools(server, opts) {
|
|
|
247
369
|
title: "Get the architecture",
|
|
248
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.",
|
|
249
371
|
inputSchema: {
|
|
250
|
-
node:
|
|
372
|
+
node: NUM.int()
|
|
373
|
+
.positive()
|
|
374
|
+
.optional()
|
|
375
|
+
.describe("One node's detail (uncapped)."),
|
|
251
376
|
},
|
|
252
377
|
annotations: READ,
|
|
253
|
-
}, async ({ node }) =>
|
|
378
|
+
}, async ({ node }) => {
|
|
379
|
+
const r = await reg();
|
|
380
|
+
return respond(node === undefined ? r.getArchitecture() : r.getNode(node));
|
|
381
|
+
});
|
|
254
382
|
// 6 ─ get_doctrine
|
|
255
383
|
server.registerTool(note("get_doctrine"), {
|
|
256
384
|
title: "Get doctrine",
|
|
257
|
-
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.",
|
|
258
386
|
inputSchema: {
|
|
259
387
|
topic: z
|
|
260
|
-
.enum(["ubuntu-pillars", "ubuntu-principles", "ai-instructions"])
|
|
388
|
+
.enum(["ubuntu-pillars", "ubuntu-principles", "ai-instructions", "conventions"])
|
|
261
389
|
.describe("Which doctrine to read."),
|
|
262
|
-
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."),
|
|
263
394
|
},
|
|
264
395
|
annotations: READ,
|
|
265
396
|
}, async ({ topic, name }) => {
|
|
397
|
+
const r = await reg();
|
|
266
398
|
if (topic === "ubuntu-pillars")
|
|
267
|
-
return respond(
|
|
399
|
+
return respond(r.getUbuntuPillars(), "pillars");
|
|
268
400
|
if (topic === "ubuntu-principles")
|
|
269
|
-
return respond(
|
|
270
|
-
|
|
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());
|
|
271
405
|
});
|
|
272
|
-
// 7 ─ get_skills
|
|
406
|
+
// 7 ─ get_skills — served from the bundle this Worker ships with
|
|
273
407
|
server.registerTool(note("get_skills"), {
|
|
274
408
|
title: "Get agent skills",
|
|
275
|
-
description: "List the published Mzizi agent skills, or fetch one in full. Skills are what an agent loads first.",
|
|
276
|
-
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
|
+
},
|
|
277
413
|
annotations: READ,
|
|
278
|
-
},
|
|
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
|
+
});
|
|
279
440
|
// 8 ─ check_accessibility
|
|
280
441
|
server.registerTool(note("check_accessibility"), {
|
|
281
442
|
title: "Check accessibility",
|
|
@@ -313,49 +474,119 @@ export function registerMziziTools(server, opts) {
|
|
|
313
474
|
foreground,
|
|
314
475
|
background,
|
|
315
476
|
contrastRatio: rounded,
|
|
316
|
-
passes: {
|
|
477
|
+
passes: {
|
|
478
|
+
aaLarge: rounded >= 3,
|
|
479
|
+
aa: rounded >= 4.5,
|
|
480
|
+
aaa: rounded >= 7,
|
|
481
|
+
},
|
|
317
482
|
// Mzizi's floor is AAA (7:1), stricter than WCAG AA -- say so rather than
|
|
318
483
|
// letting a 4.5 look like a pass here.
|
|
319
484
|
meetsMziziFloor: rounded >= 7,
|
|
320
485
|
});
|
|
321
486
|
});
|
|
322
|
-
// 9 ─ report_issue — the
|
|
487
|
+
// 9 ─ report_issue — the write sink, backed by the per-user issue desk
|
|
323
488
|
server.registerTool(note("report_issue"), {
|
|
324
489
|
title: "Report an issue",
|
|
325
|
-
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.",
|
|
326
491
|
inputSchema: {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
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'."),
|
|
330
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(),
|
|
331
518
|
},
|
|
332
519
|
annotations: WRITE,
|
|
333
|
-
}, async (
|
|
334
|
-
|
|
335
|
-
//
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
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");
|
|
341
563
|
});
|
|
342
|
-
// 10 ─ fundi — only when this server
|
|
343
|
-
|
|
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) {
|
|
344
567
|
const f = opts.fundi;
|
|
345
568
|
server.registerTool(note("fundi"), {
|
|
346
569
|
title: "fundi",
|
|
347
|
-
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.",
|
|
348
571
|
inputSchema: {
|
|
349
572
|
action: z.enum(["submit", "task_status", "cancel"]),
|
|
350
573
|
skill: z
|
|
351
574
|
.enum(["security-scan", "chaos-run", "a11y-audit", "heal-issue"])
|
|
352
575
|
.optional()
|
|
353
576
|
.describe("Required for submit."),
|
|
354
|
-
instruction: z
|
|
355
|
-
|
|
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."),
|
|
356
585
|
},
|
|
357
586
|
annotations: { ...WRITE, destructiveHint: true },
|
|
358
587
|
}, async ({ action, skill, instruction, taskId }) => {
|
|
588
|
+
if (!f)
|
|
589
|
+
return signInRequired("fundi");
|
|
359
590
|
// Dispatch to the existing A2A layer rather than reimplementing it: it already
|
|
360
591
|
// owns the transport, the submit-and-poll guarantee (exactly one round trip on
|
|
361
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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAEnC,kFAAkF;AAClF,SAAS,OAAO,CAAC,MAA0B,EAAE,OAAuB;IAClE,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAChD,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAW,CAAA;AAEvF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAC9B,MAAM,KAAK,GAAG;IACZ,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,KAAK;IACrB,aAAa,EAAE,IAAI;CACX,CAAA;AAEV,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAsC;IAC9D,MAAM,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IACvC,aAAa,EAAE;QACb,eAAe;QACf,gBAAgB;QAChB,uBAAuB;QACvB,qBAAqB;QACrB,8BAA8B;QAC9B,mBAAmB;QACnB,wBAAwB;KACzB;IACD,eAAe,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,CAAC;IAClG,UAAU,EAAE;QACV,kBAAkB;QAClB,6BAA6B;QAC7B,kBAAkB;QAClB,uBAAuB;KACxB;IACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;IAC/E,YAAY,EAAE;QACZ,oBAAoB;QACpB,uBAAuB;QACvB,qBAAqB;QACrB,mBAAmB;QACnB,wBAAwB;QACxB,sBAAsB;QACtB,uBAAuB;QACvB,qBAAqB;QACrB,sBAAsB;KACvB;IACD,UAAU,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,oBAAoB,CAAC;IAC9D,mBAAmB,EAAE;QACnB,0BAA0B;QAC1B,oBAAoB;QACpB,0BAA0B;QAC1B,yBAAyB;QACzB,2BAA2B;KAC5B;IACD,YAAY,EAAE,CAAC,2BAA2B,EAAE,4BAA4B,EAAE,oBAAoB,CAAC;IAC/F,KAAK,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;CACvF,CAAA;AAQD,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,IAAqB;IACzE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;IACpB,MAAM,UAAU,GAAa,EAAE,CAAA;IAE/B,gFAAgF;IAChF,sEAAsE;IACtE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,CAAA;IAChC,CAAC,CAAA;IAED,aAAa;IACb,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,QAAQ,CAAC,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,wHAAwH;QAC1H,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE;QAC5E,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CACjE,CAAA;IAED,2CAA2C;IAC3C,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,eAAe,CAAC,EACrB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,kLAAkL;QACpL,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAClE,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;iBACnC,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;SAChE;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE5C,MAAM,GAAG,GAA4B,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7D,kFAAkF;QAClF,0EAA0E;QAC1E,KAAK,MAAM,OAAO,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,GAAG,GACP,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAC9F,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;QAC3D,CAAC;QACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CACF,CAAA;IAED,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,iBAAiB,CAAC,EACvB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,8EAA8E;YAC9E,+EAA+E;YAC/E,+EAA+E;YAC/E,gBAAgB,kBAAkB,kDAAkD;QACtF,WAAW,EAAE;YACX,6EAA6E;YAC7E,sEAAsE;YACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YAC1F,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qEAAqE,CAAC;YAClF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4EAA4E,CAAC;YACzF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,kBAAkB,IAAI,CAAC;YACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACjF;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QACzD,oFAAoF;QACpF,iFAAiF;QACjF,8DAA8D;QAC9D,MAAM,IAAI,GAAG,KAAK,IAAI,kBAAkB,CAAA;QACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAClG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE1C,MAAM,OAAO,GAAG,GAAG,CAAC,IAGnB,CAAA;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;QAEhC,wEAAwE;QACxE,EAAE;QACF,4EAA4E;QAC5E,gFAAgF;QAChF,mFAAmF;QACnF,oFAAoF;QACpF,4DAA4D;QAC5D,MAAM,aAAa,GACjB,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAA;QAC7F,IAAI,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,SAAS,CACd,kFAAkF;gBAChF,kFAAkF;gBAClF,4CAA4C,CAC/C,CAAA;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAA;QAChD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAA;QAEjD,oFAAoF;QACpF,oFAAoF;QACpF,qFAAqF;QACrF,sEAAsE;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC,CAAA;QAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;QACpC,OAAO,WAAW,CAAC;YACjB,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,KAAK;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,QAAQ,GAAG,KAAK;YACzB,GAAG,CAAC,QAAQ,GAAG,KAAK;gBAClB,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,QAAQ,yCAAyC,EAAE;gBAC7G,CAAC,CAAC,EAAE,CAAC;YACP,8EAA8E;YAC9E,+EAA+E;YAC/E,6DAA6D;YAC7D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,KAAK;SACN,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAED,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,YAAY,CAAC,EAClB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,yHAAyH;QAC3H,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,oHAAoH,CACrH;SACJ;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEzC,MAAM,KAAK,GAAG,GAAG,CAAC,IAA+B,CAAA;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAC1F,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,SAAS,CACd,6BAA6B,MAAM,iBAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrF,CAAA;QACH,CAAC;QACD,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC,CACF,CAAA;IAED,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,kBAAkB,CAAC,EACxB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,sJAAsJ;QACxJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACvF;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACtF,CAAA;IAED,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,cAAc,CAAC,EACpB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,mGAAmG;QACrG,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,IAAI,CAAC,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;iBAChE,QAAQ,CAAC,yBAAyB,CAAC;YACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SAClF;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;QACxB,IAAI,KAAK,KAAK,gBAAgB;YAAE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAA;QACvF,IAAI,KAAK,KAAK,mBAAmB;YAAE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,mBAAmB,EAAE,EAAE,YAAY,CAAC,CAAA;QAChG,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAC3F,CAAC,CACF,CAAA;IAED,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,YAAY,CAAC,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,oGAAoG;QACtG,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE;QACtF,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,CAChG,CAAA;IAED,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,qBAAqB,CAAC,EAC3B;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,4HAA4H;QAC9H,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAChE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACjE;QACD,WAAW,EAAE,IAAI;KAClB,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAmC,EAAE;YAC7D,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/C,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAA;YACxB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACnC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;QACnD,CAAC,CAAA;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;QAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;QAC5B,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC,iDAAiD,CAAC,CAAA;QAEnF,2BAA2B;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAA2B,EAAE,EAAE;YAClD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;gBACjB,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAA;YAChE,CAAC,CAA6B,CAAA;YAC9B,OAAO,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAA;QAChD,CAAC,CAAA;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAE7C,OAAO,WAAW,CAAC;YACjB,UAAU;YACV,UAAU;YACV,aAAa,EAAE,OAAO;YACtB,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE;YACxE,0EAA0E;YAC1E,uCAAuC;YACvC,eAAe,EAAE,OAAO,IAAI,CAAC;SAC9B,CAAC,CAAA;IACJ,CAAC,CACF,CAAA;IAED,2CAA2C;IAC3C,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,cAAc,CAAC,EACpB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,yGAAyG;QAC3G,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACxF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC3E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;SACnE;QACD,WAAW,EAAE,KAAK;KACnB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/C,kFAAkF;QAClF,8EAA8E;QAC9E,6EAA6E;QAC7E,OAAO,SAAS,CACd,mGAAmG,IAAI,KAAK;YAC1G,8DAA8D;YAC9D,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,aAAa,OAAO,EAAE,CACzB,CAAA;IACH,CAAC,CACF,CAAA;IAED,gEAAgE;IAChE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;QACpB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,OAAO,CAAC,EACb;YACE,KAAK,EAAE,OAAO;YACd,WAAW,EACT,2IAA2I;YAC7I,WAAW,EAAE;gBACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACnD,KAAK,EAAE,CAAC;qBACL,IAAI,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;qBAChE,QAAQ,EAAE;qBACV,QAAQ,CAAC,sBAAsB,CAAC;gBACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;gBACzF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;aAC/E;YACD,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;SACjD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;YAC/C,+EAA+E;YAC/E,+EAA+E;YAC/E,sEAAsE;YACtE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK;oBAAE,OAAO,SAAS,CAAC,0DAA0D,CAAC,CAAA;gBACxF,IAAI,CAAC,WAAW;oBAAE,OAAO,SAAS,CAAC,gCAAgC,CAAC,CAAA;gBACpE,OAAO,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;YACvE,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC,GAAG,MAAM,uBAAuB,CAAC,CAAA;YAC/D,OAAO,gBAAgB,CACrB,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,EAC3D,EAAE,MAAM,EAAE,EACV,CAAC,CACF,CAAA;QACH,CAAC,CACF,CAAA;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|