fushiguro-mcp 0.1.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 +21 -0
- package/README.md +278 -0
- package/catalog/agents/backend-api.md +71 -0
- package/catalog/agents/content-editor.md +59 -0
- package/catalog/agents/customer-support.md +60 -0
- package/catalog/agents/data-analyst.md +66 -0
- package/catalog/agents/database.md +65 -0
- package/catalog/agents/docs.md +52 -0
- package/catalog/agents/process-automation.md +61 -0
- package/catalog/agents/research-analyst.md +57 -0
- package/catalog/agents/security.md +68 -0
- package/catalog/agents/testing.md +63 -0
- package/catalog/agents/ux-ui-specialist.md +87 -0
- package/catalog/connectors/crm.md +24 -0
- package/catalog/connectors/data-warehouse.md +26 -0
- package/catalog/connectors/document-store.md +23 -0
- package/catalog/connectors/helpdesk.md +24 -0
- package/catalog/knowledge/platform/using-this-catalog.md +50 -0
- package/catalog/runbooks/_TEMPLATE.md +52 -0
- package/catalog/runbooks/ai-use-case-intake.md +89 -0
- package/catalog/runbooks/change-release.md +54 -0
- package/catalog/runbooks/customer-escalation.md +67 -0
- package/catalog/skills/cite-sources.md +18 -0
- package/catalog/skills/clarify-scope.md +18 -0
- package/catalog/skills/data-quality-check.md +22 -0
- package/catalog/skills/risk-and-compliance-check.md +21 -0
- package/catalog/skills/stakeholder-summary.md +21 -0
- package/catalog/tools/knowledge-search.md +14 -0
- package/catalog/tools/shell.md +15 -0
- package/catalog/tools/web-fetch.md +15 -0
- package/catalog/tools/web-search.md +15 -0
- package/catalog/topics/ai-adoption.md +25 -0
- package/catalog/topics/customer-operations.md +21 -0
- package/catalog/topics/data-and-reporting.md +20 -0
- package/catalog/topics/marketing-content.md +19 -0
- package/catalog/topics/product-engineering.md +20 -0
- package/dist/catalog.d.ts +34 -0
- package/dist/catalog.js +412 -0
- package/dist/catalog.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.js +48 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +5 -0
- package/dist/init.js +159 -0
- package/dist/init.js.map +1 -0
- package/dist/knowledge.d.ts +31 -0
- package/dist/knowledge.js +126 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +22 -0
- package/dist/main.js.map +1 -0
- package/dist/memory.d.ts +85 -0
- package/dist/memory.js +374 -0
- package/dist/memory.js.map +1 -0
- package/dist/quiet.d.ts +1 -0
- package/dist/quiet.js +21 -0
- package/dist/quiet.js.map +1 -0
- package/dist/registry.d.ts +15 -0
- package/dist/registry.js +128 -0
- package/dist/registry.js.map +1 -0
- package/dist/router.d.ts +55 -0
- package/dist/router.js +358 -0
- package/dist/router.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +529 -0
- package/dist/server.js.map +1 -0
- package/dist/text.d.ts +20 -0
- package/dist/text.js +72 -0
- package/dist/text.js.map +1 -0
- package/dist/types.d.ts +195 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -0
package/dist/catalog.js
ADDED
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
3
|
+
import { extname, join, relative, sep } from "node:path";
|
|
4
|
+
import { parse as parseYaml } from "yaml";
|
|
5
|
+
const FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/;
|
|
6
|
+
/** Knowledge chunks aim for this many characters before a heading break wins. */
|
|
7
|
+
const CHUNK_TARGET = 1200;
|
|
8
|
+
const CHUNK_OVERLAP = 150;
|
|
9
|
+
function strings(value) {
|
|
10
|
+
if (Array.isArray(value))
|
|
11
|
+
return value.map((v) => String(v).trim()).filter(Boolean);
|
|
12
|
+
if (typeof value === "string") {
|
|
13
|
+
return value.split(",").map((v) => v.trim()).filter(Boolean);
|
|
14
|
+
}
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
function slugify(input) {
|
|
18
|
+
return input
|
|
19
|
+
.toLowerCase()
|
|
20
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
21
|
+
.replace(/^-|-$/g, "");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Splits a document on headings, then packs sections up to a target size so a
|
|
25
|
+
* retrieved chunk is big enough to answer with and small enough to cite.
|
|
26
|
+
*/
|
|
27
|
+
function chunkDocument(docName, collection, body) {
|
|
28
|
+
const lines = body.split(/\r?\n/);
|
|
29
|
+
const trail = [];
|
|
30
|
+
const sections = [];
|
|
31
|
+
let current = [];
|
|
32
|
+
let currentHeading = "";
|
|
33
|
+
const flush = () => {
|
|
34
|
+
const text = current.join("\n").trim();
|
|
35
|
+
if (text)
|
|
36
|
+
sections.push({ heading: currentHeading, text });
|
|
37
|
+
current = [];
|
|
38
|
+
};
|
|
39
|
+
for (const line of lines) {
|
|
40
|
+
const heading = /^(#{1,6})\s+(.*)$/.exec(line);
|
|
41
|
+
if (heading) {
|
|
42
|
+
flush();
|
|
43
|
+
const level = heading[1].length;
|
|
44
|
+
trail.length = Math.max(0, level - 1);
|
|
45
|
+
trail[level - 1] = heading[2].trim();
|
|
46
|
+
currentHeading = trail.filter(Boolean).join(" > ");
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
current.push(line);
|
|
50
|
+
}
|
|
51
|
+
flush();
|
|
52
|
+
const chunks = [];
|
|
53
|
+
let buffer = "";
|
|
54
|
+
let bufferHeading = "";
|
|
55
|
+
const emit = () => {
|
|
56
|
+
const text = buffer.trim();
|
|
57
|
+
if (!text)
|
|
58
|
+
return;
|
|
59
|
+
chunks.push({
|
|
60
|
+
id: `${docName}#${chunks.length}`,
|
|
61
|
+
docName,
|
|
62
|
+
collection,
|
|
63
|
+
heading: bufferHeading,
|
|
64
|
+
text,
|
|
65
|
+
index: chunks.length,
|
|
66
|
+
});
|
|
67
|
+
// Carry a tail forward so a fact split across a boundary is still findable.
|
|
68
|
+
buffer = text.length > CHUNK_OVERLAP ? `${text.slice(-CHUNK_OVERLAP)}\n` : "";
|
|
69
|
+
};
|
|
70
|
+
for (const section of sections) {
|
|
71
|
+
if (buffer && buffer.length + section.text.length > CHUNK_TARGET)
|
|
72
|
+
emit();
|
|
73
|
+
if (!buffer.trim())
|
|
74
|
+
bufferHeading = section.heading;
|
|
75
|
+
buffer += `${section.heading && !buffer.includes(section.heading) ? `${section.heading}\n` : ""}${section.text}\n\n`;
|
|
76
|
+
while (buffer.length > CHUNK_TARGET * 1.6)
|
|
77
|
+
emit();
|
|
78
|
+
}
|
|
79
|
+
emit();
|
|
80
|
+
return chunks;
|
|
81
|
+
}
|
|
82
|
+
function tocOf(body) {
|
|
83
|
+
const out = [];
|
|
84
|
+
body.split(/\r?\n/).forEach((line, i) => {
|
|
85
|
+
const m = /^(#{1,6})\s+(.*)$/.exec(line);
|
|
86
|
+
if (m)
|
|
87
|
+
out.push({ level: m[1].length, title: m[2].trim(), line: i });
|
|
88
|
+
});
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
function readRaw(layer, file, raw, relPath) {
|
|
92
|
+
const match = FRONTMATTER.exec(raw);
|
|
93
|
+
const meta = (match ? (parseYaml(match[1]) ?? {}) : {});
|
|
94
|
+
const body = (match ? raw.slice(match[0].length) : raw).trim();
|
|
95
|
+
// Knowledge files are ordinary documents, so their name falls back to the path.
|
|
96
|
+
const fallbackName = slugify(relPath.replace(/\.[^.]+$/, "").split(sep).join("-"));
|
|
97
|
+
const name = String(meta.name ?? fallbackName).trim();
|
|
98
|
+
return { name, meta, body, file, relPath, layer, hasFrontmatter: Boolean(match) };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Folds a custom file into the base file of the same name. Scalars from the
|
|
102
|
+
* custom file win, list fields union, and the custom body is appended under its
|
|
103
|
+
* own heading — unless the custom file sets `override: true`, which replaces
|
|
104
|
+
* the base body outright.
|
|
105
|
+
*/
|
|
106
|
+
function mergeRaw(base, custom) {
|
|
107
|
+
const meta = { ...base.meta };
|
|
108
|
+
for (const [key, value] of Object.entries(custom.meta)) {
|
|
109
|
+
const prior = base.meta[key];
|
|
110
|
+
if (Array.isArray(value) && Array.isArray(prior)) {
|
|
111
|
+
meta[key] = [...new Set([...prior, ...value].map(String))];
|
|
112
|
+
}
|
|
113
|
+
else if (value !== undefined && value !== null && value !== "") {
|
|
114
|
+
meta[key] = value;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const body = custom.meta.override === true
|
|
118
|
+
? custom.body
|
|
119
|
+
: `${base.body}\n\n## Organisation-specific additions\n\n${custom.body}`;
|
|
120
|
+
return {
|
|
121
|
+
name: base.name,
|
|
122
|
+
meta,
|
|
123
|
+
body,
|
|
124
|
+
file: `${base.file} + ${custom.file}`,
|
|
125
|
+
relPath: base.relPath,
|
|
126
|
+
layer: "base+custom",
|
|
127
|
+
hasFrontmatter: base.hasFrontmatter || custom.hasFrontmatter,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function buildEntity(kind, raw) {
|
|
131
|
+
const { name, meta, body, file, relPath, layer } = raw;
|
|
132
|
+
if (!name)
|
|
133
|
+
throw new Error(`${file}: could not determine a name`);
|
|
134
|
+
if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
|
|
135
|
+
throw new Error(`${file}: name must be lowercase kebab-case, got '${name}'`);
|
|
136
|
+
}
|
|
137
|
+
if (kind !== "knowledge" && !raw.hasFrontmatter) {
|
|
138
|
+
throw new Error(`${file}: missing YAML frontmatter (a --- delimited block at the top)`);
|
|
139
|
+
}
|
|
140
|
+
if (!body)
|
|
141
|
+
throw new Error(`${file}: no content below the frontmatter`);
|
|
142
|
+
const patterns = [];
|
|
143
|
+
for (const src of strings(meta.patterns)) {
|
|
144
|
+
try {
|
|
145
|
+
patterns.push(new RegExp(src, "i"));
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
throw new Error(`${file}: invalid regex '${src}' (${err.message})`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const base = {
|
|
152
|
+
kind,
|
|
153
|
+
layer,
|
|
154
|
+
name,
|
|
155
|
+
title: String(meta.title ?? name),
|
|
156
|
+
description: String(meta.description ?? ""),
|
|
157
|
+
keywords: strings(meta.keywords).map((k) => k.toLowerCase()),
|
|
158
|
+
triggers: strings(meta.triggers),
|
|
159
|
+
patterns,
|
|
160
|
+
topics: strings(meta.topics),
|
|
161
|
+
tags: strings(meta.tags),
|
|
162
|
+
body,
|
|
163
|
+
file,
|
|
164
|
+
meta,
|
|
165
|
+
};
|
|
166
|
+
switch (kind) {
|
|
167
|
+
case "agent":
|
|
168
|
+
return {
|
|
169
|
+
...base,
|
|
170
|
+
kind: "agent",
|
|
171
|
+
model: meta.model ? String(meta.model) : undefined,
|
|
172
|
+
tools: strings(meta.tools),
|
|
173
|
+
skills: strings(meta.skills),
|
|
174
|
+
connectors: strings(meta.connectors),
|
|
175
|
+
runbooks: strings(meta.runbooks),
|
|
176
|
+
knowledge: strings(meta.knowledge),
|
|
177
|
+
};
|
|
178
|
+
case "skill":
|
|
179
|
+
return {
|
|
180
|
+
...base,
|
|
181
|
+
kind: "skill",
|
|
182
|
+
appliesTo: strings(meta.applies_to ?? meta.appliesTo),
|
|
183
|
+
always: meta.always === true,
|
|
184
|
+
};
|
|
185
|
+
case "knowledge": {
|
|
186
|
+
const collection = relPath.includes(sep) ? relPath.split(sep)[0] : "general";
|
|
187
|
+
return {
|
|
188
|
+
...base,
|
|
189
|
+
kind: "knowledge",
|
|
190
|
+
collection: String(meta.collection ?? collection),
|
|
191
|
+
sourceUrl: meta.source_url ? String(meta.source_url) : undefined,
|
|
192
|
+
reviewed: meta.reviewed ? String(meta.reviewed) : undefined,
|
|
193
|
+
chunks: chunkDocument(name, String(meta.collection ?? collection), body),
|
|
194
|
+
hash: createHash("sha256").update(body).digest("hex").slice(0, 16),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
case "runbook":
|
|
198
|
+
return {
|
|
199
|
+
...base,
|
|
200
|
+
kind: "runbook",
|
|
201
|
+
// A template stays a template until a business says otherwise, so an
|
|
202
|
+
// unedited packaged runbook can never read as agreed process.
|
|
203
|
+
template: meta.template !== false,
|
|
204
|
+
placeholders: (body.match(/\[FILL:/g) ?? []).length,
|
|
205
|
+
toc: tocOf(body),
|
|
206
|
+
steps: strings(meta.steps),
|
|
207
|
+
agents: strings(meta.agents),
|
|
208
|
+
knowledge: strings(meta.knowledge),
|
|
209
|
+
connectors: strings(meta.connectors),
|
|
210
|
+
owner: meta.owner ? String(meta.owner) : undefined,
|
|
211
|
+
sla: meta.sla ? String(meta.sla) : undefined,
|
|
212
|
+
escalation: meta.escalation ? String(meta.escalation) : undefined,
|
|
213
|
+
};
|
|
214
|
+
case "topic":
|
|
215
|
+
return {
|
|
216
|
+
...base,
|
|
217
|
+
kind: "topic",
|
|
218
|
+
agents: strings(meta.agents),
|
|
219
|
+
skills: strings(meta.skills),
|
|
220
|
+
runbooks: strings(meta.runbooks),
|
|
221
|
+
connectors: strings(meta.connectors),
|
|
222
|
+
knowledge: strings(meta.knowledge),
|
|
223
|
+
};
|
|
224
|
+
case "tool":
|
|
225
|
+
return {
|
|
226
|
+
...base,
|
|
227
|
+
kind: "tool",
|
|
228
|
+
hostTool: String(meta.host_tool ?? meta.hostTool ?? name),
|
|
229
|
+
when: String(meta.when ?? base.description),
|
|
230
|
+
requiresApproval: meta.requires_approval === true || meta.requiresApproval === true,
|
|
231
|
+
};
|
|
232
|
+
case "connector":
|
|
233
|
+
return {
|
|
234
|
+
...base,
|
|
235
|
+
kind: "connector",
|
|
236
|
+
connectorKind: String(meta.connector_kind ?? meta.type ?? "rest"),
|
|
237
|
+
auth: String(meta.auth ?? "none"),
|
|
238
|
+
env: strings(meta.env),
|
|
239
|
+
capabilities: strings(meta.capabilities),
|
|
240
|
+
guardrails: strings(meta.guardrails),
|
|
241
|
+
baseUrl: meta.base_url ? String(meta.base_url) : undefined,
|
|
242
|
+
status: ["available", "planned", "deprecated"].includes(meta.status)
|
|
243
|
+
? meta.status
|
|
244
|
+
: "available",
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** Every markdown file under `dir`, recursively, with its path relative to `dir`. */
|
|
249
|
+
function walk(dir) {
|
|
250
|
+
let entries;
|
|
251
|
+
try {
|
|
252
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
const out = [];
|
|
258
|
+
for (const entry of entries) {
|
|
259
|
+
const full = join(dir, entry.name);
|
|
260
|
+
if (entry.isDirectory()) {
|
|
261
|
+
out.push(...walk(full));
|
|
262
|
+
}
|
|
263
|
+
else if (
|
|
264
|
+
// A leading underscore marks a file as documentation — a template to copy,
|
|
265
|
+
// a README — rather than a live catalog entry.
|
|
266
|
+
!entry.name.startsWith("_") &&
|
|
267
|
+
[".md", ".markdown", ".txt"].includes(extname(entry.name).toLowerCase())) {
|
|
268
|
+
out.push({ path: full, rel: entry.name });
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Recompute rel against the root of this walk.
|
|
272
|
+
return out.map((f) => ({ path: f.path, rel: relative(dir, f.path) }));
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Loads every catalog entity from disk, layering custom and workspace
|
|
276
|
+
* definitions over the packaged base set, and reloading when a file changes.
|
|
277
|
+
*/
|
|
278
|
+
export class Catalog {
|
|
279
|
+
sources;
|
|
280
|
+
#entities = new Map();
|
|
281
|
+
#signature = "";
|
|
282
|
+
#errors = [];
|
|
283
|
+
constructor(sources) {
|
|
284
|
+
this.sources = sources;
|
|
285
|
+
this.refresh();
|
|
286
|
+
}
|
|
287
|
+
#fingerprint() {
|
|
288
|
+
const parts = [];
|
|
289
|
+
for (const source of this.sources) {
|
|
290
|
+
for (const file of walk(source.dir)) {
|
|
291
|
+
try {
|
|
292
|
+
const s = statSync(file.path);
|
|
293
|
+
parts.push(`${file.path}:${s.mtimeMs}:${s.size}`);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
// Raced with a delete; the next refresh will pick it up.
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return parts.sort().join("|");
|
|
301
|
+
}
|
|
302
|
+
refresh() {
|
|
303
|
+
const signature = this.#fingerprint();
|
|
304
|
+
if (signature === this.#signature && this.#entities.size > 0)
|
|
305
|
+
return;
|
|
306
|
+
this.#signature = signature;
|
|
307
|
+
const next = new Map();
|
|
308
|
+
const errors = [];
|
|
309
|
+
// Collect every file first, so a custom file can be folded into its base
|
|
310
|
+
// counterpart before either is turned into an entity.
|
|
311
|
+
const raws = new Map();
|
|
312
|
+
for (const source of this.sources) {
|
|
313
|
+
const bucket = raws.get(source.kind) ?? new Map();
|
|
314
|
+
raws.set(source.kind, bucket);
|
|
315
|
+
for (const file of walk(source.dir)) {
|
|
316
|
+
try {
|
|
317
|
+
const raw = readRaw(source.layer, file.path, readFileSync(file.path, "utf8"), file.rel);
|
|
318
|
+
const existing = bucket.get(raw.name);
|
|
319
|
+
if (!existing) {
|
|
320
|
+
bucket.set(raw.name, raw);
|
|
321
|
+
}
|
|
322
|
+
else if (existing.layer === "custom" && raw.layer === "custom") {
|
|
323
|
+
errors.push(`duplicate ${source.kind} '${raw.name}' in ${raw.file}; keeping ${existing.file}`);
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
// One side is base, the other custom — merge, whichever arrived first.
|
|
327
|
+
const base = existing.layer === "custom" ? raw : existing;
|
|
328
|
+
const custom = existing.layer === "custom" ? existing : raw;
|
|
329
|
+
bucket.set(raw.name, mergeRaw(base, custom));
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
errors.push(err.message);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
for (const [kind, bucket] of raws) {
|
|
338
|
+
const built = new Map();
|
|
339
|
+
next.set(kind, built);
|
|
340
|
+
for (const raw of bucket.values()) {
|
|
341
|
+
try {
|
|
342
|
+
built.set(raw.name, buildEntity(kind, raw));
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
// One malformed file must never take down the whole catalog.
|
|
346
|
+
errors.push(err.message);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
this.#entities = next;
|
|
351
|
+
this.#errors = errors;
|
|
352
|
+
}
|
|
353
|
+
all(kind) {
|
|
354
|
+
this.refresh();
|
|
355
|
+
return [...(this.#entities.get(kind)?.values() ?? [])];
|
|
356
|
+
}
|
|
357
|
+
get(kind, name) {
|
|
358
|
+
this.refresh();
|
|
359
|
+
return this.#entities.get(kind)?.get(name);
|
|
360
|
+
}
|
|
361
|
+
agents() {
|
|
362
|
+
return this.all("agent");
|
|
363
|
+
}
|
|
364
|
+
skills() {
|
|
365
|
+
return this.all("skill");
|
|
366
|
+
}
|
|
367
|
+
knowledge() {
|
|
368
|
+
return this.all("knowledge");
|
|
369
|
+
}
|
|
370
|
+
runbooks() {
|
|
371
|
+
return this.all("runbook");
|
|
372
|
+
}
|
|
373
|
+
topics() {
|
|
374
|
+
return this.all("topic");
|
|
375
|
+
}
|
|
376
|
+
tools() {
|
|
377
|
+
return this.all("tool");
|
|
378
|
+
}
|
|
379
|
+
connectors() {
|
|
380
|
+
return this.all("connector");
|
|
381
|
+
}
|
|
382
|
+
/** Every knowledge chunk in the corpus, for the search index to consume. */
|
|
383
|
+
chunks() {
|
|
384
|
+
return this.knowledge().flatMap((doc) => doc.chunks);
|
|
385
|
+
}
|
|
386
|
+
/** A hash of the corpus, so the index only rebuilds when content really changed. */
|
|
387
|
+
knowledgeSignature() {
|
|
388
|
+
return createHash("sha256")
|
|
389
|
+
.update(this.knowledge().map((d) => `${d.name}:${d.hash}`).sort().join("|"))
|
|
390
|
+
.digest("hex")
|
|
391
|
+
.slice(0, 16);
|
|
392
|
+
}
|
|
393
|
+
counts() {
|
|
394
|
+
this.refresh();
|
|
395
|
+
const kinds = [
|
|
396
|
+
"agent",
|
|
397
|
+
"skill",
|
|
398
|
+
"knowledge",
|
|
399
|
+
"runbook",
|
|
400
|
+
"topic",
|
|
401
|
+
"tool",
|
|
402
|
+
"connector",
|
|
403
|
+
];
|
|
404
|
+
return Object.fromEntries(kinds.map((k) => [k, this.#entities.get(k)?.size ?? 0]));
|
|
405
|
+
}
|
|
406
|
+
/** Parse failures from the last load, surfaced so bad files are never silent. */
|
|
407
|
+
errors() {
|
|
408
|
+
this.refresh();
|
|
409
|
+
return this.#errors;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CatalogSource } from "./catalog.js";
|
|
2
|
+
export interface Config {
|
|
3
|
+
/** Packaged catalog that ships with the server — the `base` layer. */
|
|
4
|
+
baseCatalogDir: string;
|
|
5
|
+
/** The business's own catalog — the `custom` layer, merged over base by name. */
|
|
6
|
+
customCatalogDir: string;
|
|
7
|
+
dbPath: string;
|
|
8
|
+
/** Keys `project`-scoped memories, so preferences don't bleed between codebases. */
|
|
9
|
+
projectRoot: string;
|
|
10
|
+
/** Below this normalised score, the router reports no confident match. */
|
|
11
|
+
minScore: number;
|
|
12
|
+
/** Top two candidates within this ratio of each other are reported as ambiguous. */
|
|
13
|
+
ambiguityRatio: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function loadConfig(): Config;
|
|
16
|
+
/** Base sources first, then custom, so custom files merge over base ones. */
|
|
17
|
+
export declare function catalogSources(config: Config): CatalogSource[];
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
/** Package root — this file runs from `dist/`, so step up one level. */
|
|
6
|
+
const packageRoot = resolve(here, "..");
|
|
7
|
+
function expand(p) {
|
|
8
|
+
const expanded = p.startsWith("~") ? join(homedir(), p.slice(1)) : p;
|
|
9
|
+
return isAbsolute(expanded) ? expanded : resolve(process.cwd(), expanded);
|
|
10
|
+
}
|
|
11
|
+
/** Directory name on disk for each entity kind. */
|
|
12
|
+
const DIRS = {
|
|
13
|
+
agent: "agents",
|
|
14
|
+
skill: "skills",
|
|
15
|
+
knowledge: "knowledge",
|
|
16
|
+
runbook: "runbooks",
|
|
17
|
+
topic: "topics",
|
|
18
|
+
tool: "tools",
|
|
19
|
+
connector: "connectors",
|
|
20
|
+
};
|
|
21
|
+
export function loadConfig() {
|
|
22
|
+
const projectRoot = expand(process.env.FUSHIGURO_PROJECT_ROOT ?? process.cwd());
|
|
23
|
+
return {
|
|
24
|
+
baseCatalogDir: expand(process.env.FUSHIGURO_BASE_CATALOG ?? join(packageRoot, "catalog")),
|
|
25
|
+
customCatalogDir: expand(process.env.FUSHIGURO_CATALOG ?? join(projectRoot, ".fushiguro", "catalog")),
|
|
26
|
+
dbPath: expand(process.env.FUSHIGURO_DB ?? join(homedir(), ".fushiguro", "memory.db")),
|
|
27
|
+
projectRoot,
|
|
28
|
+
minScore: Number(process.env.FUSHIGURO_MIN_SCORE ?? 0.12),
|
|
29
|
+
ambiguityRatio: Number(process.env.FUSHIGURO_AMBIGUITY_RATIO ?? 0.85),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Base sources first, then custom, so custom files merge over base ones. */
|
|
33
|
+
export function catalogSources(config) {
|
|
34
|
+
const kinds = Object.keys(DIRS);
|
|
35
|
+
return [
|
|
36
|
+
...kinds.map((kind) => ({
|
|
37
|
+
kind,
|
|
38
|
+
dir: join(config.baseCatalogDir, DIRS[kind]),
|
|
39
|
+
layer: "base",
|
|
40
|
+
})),
|
|
41
|
+
...kinds.map((kind) => ({
|
|
42
|
+
kind,
|
|
43
|
+
dir: join(config.customCatalogDir, DIRS[kind]),
|
|
44
|
+
layer: "custom",
|
|
45
|
+
})),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,wEAAwE;AACxE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAExC,SAAS,MAAM,CAAC,CAAS;IACvB,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,mDAAmD;AACnD,MAAM,IAAI,GAA+B;IACvC,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,YAAY;CACxB,CAAC;AAgBF,MAAM,UAAU,UAAU;IACxB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChF,OAAO;QACL,cAAc,EAAE,MAAM,CACpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CACnE;QACD,gBAAgB,EAAE,MAAM,CACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAC5E;QACD,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACtF,WAAW;QACX,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC;QACzD,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,IAAI,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAiB,CAAC;IAChD,OAAO;QACL,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,KAAK,EAAE,MAAe;SACvB,CAAC,CAAC;QACH,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,KAAK,EAAE,QAAiB;SACzB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Launcher. `quiet.js` must install its filter before `node:sqlite` is linked,
|
|
4
|
+
* and a static import graph is linked in full before any module body runs — so
|
|
5
|
+
* the server is pulled in dynamically, after the filter is in place.
|
|
6
|
+
*
|
|
7
|
+
* `init` scaffolds a business's own catalog and never touches the database, so
|
|
8
|
+
* it is imported statically and returns without starting a server.
|
|
9
|
+
*/
|
|
10
|
+
import "./quiet.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Launcher. `quiet.js` must install its filter before `node:sqlite` is linked,
|
|
4
|
+
* and a static import graph is linked in full before any module body runs — so
|
|
5
|
+
* the server is pulled in dynamically, after the filter is in place.
|
|
6
|
+
*
|
|
7
|
+
* `init` scaffolds a business's own catalog and never touches the database, so
|
|
8
|
+
* it is imported statically and returns without starting a server.
|
|
9
|
+
*/
|
|
10
|
+
import "./quiet.js";
|
|
11
|
+
import { init } from "./init.js";
|
|
12
|
+
const [command, ...args] = process.argv.slice(2);
|
|
13
|
+
if (command === "init") {
|
|
14
|
+
init(args[0]);
|
|
15
|
+
}
|
|
16
|
+
else if (command === "--help" || command === "-h" || command === "help") {
|
|
17
|
+
process.stdout.write([
|
|
18
|
+
"fushiguro-mcp — routes tasks to specialist agents and remembers your preferences",
|
|
19
|
+
"",
|
|
20
|
+
"Usage:",
|
|
21
|
+
" fushiguro-mcp Start the MCP server on stdio (what a host runs)",
|
|
22
|
+
" fushiguro-mcp init [dir] Scaffold a business catalog (default: .fushiguro/catalog)",
|
|
23
|
+
"",
|
|
24
|
+
"Register with Claude Code:",
|
|
25
|
+
" claude mcp add fushiguro --scope project -- npx -y fushiguro-mcp",
|
|
26
|
+
"",
|
|
27
|
+
"Environment:",
|
|
28
|
+
" FUSHIGURO_CATALOG Your catalog (default: <cwd>/.fushiguro/catalog)",
|
|
29
|
+
" FUSHIGURO_BASE_CATALOG Packaged catalog (default: bundled)",
|
|
30
|
+
" FUSHIGURO_DB Memory + index db (default: ~/.fushiguro/memory.db)",
|
|
31
|
+
" FUSHIGURO_PROJECT_ROOT Keys project-scoped memories (default: cwd)",
|
|
32
|
+
"",
|
|
33
|
+
].join("\n"));
|
|
34
|
+
}
|
|
35
|
+
else if (command !== undefined) {
|
|
36
|
+
process.stderr.write(`fushiguro-mcp: unknown command '${command}'. Try --help.\n`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const { main } = await import("./main.js");
|
|
41
|
+
main().catch((err) => {
|
|
42
|
+
process.stderr.write(`fushiguro-mcp failed to start: ${err.stack ?? err}\n`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AACH,OAAO,YAAY,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEjD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,kFAAkF;QAClF,EAAE;QACF,QAAQ;QACR,+EAA+E;QAC/E,wFAAwF;QACxF,EAAE;QACF,4BAA4B;QAC5B,oEAAoE;QACpE,EAAE;QACF,cAAc;QACd,6EAA6E;QAC7E,gEAAgE;QAChE,gFAAgF;QAChF,wEAAwE;QACxE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;KAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,kBAAkB,CAAC,CAAC;IACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAmC,GAAa,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|