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.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +278 -0
  3. package/catalog/agents/backend-api.md +71 -0
  4. package/catalog/agents/content-editor.md +59 -0
  5. package/catalog/agents/customer-support.md +60 -0
  6. package/catalog/agents/data-analyst.md +66 -0
  7. package/catalog/agents/database.md +65 -0
  8. package/catalog/agents/docs.md +52 -0
  9. package/catalog/agents/process-automation.md +61 -0
  10. package/catalog/agents/research-analyst.md +57 -0
  11. package/catalog/agents/security.md +68 -0
  12. package/catalog/agents/testing.md +63 -0
  13. package/catalog/agents/ux-ui-specialist.md +87 -0
  14. package/catalog/connectors/crm.md +24 -0
  15. package/catalog/connectors/data-warehouse.md +26 -0
  16. package/catalog/connectors/document-store.md +23 -0
  17. package/catalog/connectors/helpdesk.md +24 -0
  18. package/catalog/knowledge/platform/using-this-catalog.md +50 -0
  19. package/catalog/runbooks/_TEMPLATE.md +52 -0
  20. package/catalog/runbooks/ai-use-case-intake.md +89 -0
  21. package/catalog/runbooks/change-release.md +54 -0
  22. package/catalog/runbooks/customer-escalation.md +67 -0
  23. package/catalog/skills/cite-sources.md +18 -0
  24. package/catalog/skills/clarify-scope.md +18 -0
  25. package/catalog/skills/data-quality-check.md +22 -0
  26. package/catalog/skills/risk-and-compliance-check.md +21 -0
  27. package/catalog/skills/stakeholder-summary.md +21 -0
  28. package/catalog/tools/knowledge-search.md +14 -0
  29. package/catalog/tools/shell.md +15 -0
  30. package/catalog/tools/web-fetch.md +15 -0
  31. package/catalog/tools/web-search.md +15 -0
  32. package/catalog/topics/ai-adoption.md +25 -0
  33. package/catalog/topics/customer-operations.md +21 -0
  34. package/catalog/topics/data-and-reporting.md +20 -0
  35. package/catalog/topics/marketing-content.md +19 -0
  36. package/catalog/topics/product-engineering.md +20 -0
  37. package/dist/catalog.d.ts +34 -0
  38. package/dist/catalog.js +412 -0
  39. package/dist/catalog.js.map +1 -0
  40. package/dist/config.d.ts +17 -0
  41. package/dist/config.js +48 -0
  42. package/dist/config.js.map +1 -0
  43. package/dist/index.d.ts +10 -0
  44. package/dist/index.js +46 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/init.d.ts +5 -0
  47. package/dist/init.js +159 -0
  48. package/dist/init.js.map +1 -0
  49. package/dist/knowledge.d.ts +31 -0
  50. package/dist/knowledge.js +126 -0
  51. package/dist/knowledge.js.map +1 -0
  52. package/dist/main.d.ts +1 -0
  53. package/dist/main.js +22 -0
  54. package/dist/main.js.map +1 -0
  55. package/dist/memory.d.ts +85 -0
  56. package/dist/memory.js +374 -0
  57. package/dist/memory.js.map +1 -0
  58. package/dist/quiet.d.ts +1 -0
  59. package/dist/quiet.js +21 -0
  60. package/dist/quiet.js.map +1 -0
  61. package/dist/registry.d.ts +15 -0
  62. package/dist/registry.js +128 -0
  63. package/dist/registry.js.map +1 -0
  64. package/dist/router.d.ts +55 -0
  65. package/dist/router.js +358 -0
  66. package/dist/router.js.map +1 -0
  67. package/dist/server.d.ts +6 -0
  68. package/dist/server.js +529 -0
  69. package/dist/server.js.map +1 -0
  70. package/dist/text.d.ts +20 -0
  71. package/dist/text.js +72 -0
  72. package/dist/text.js.map +1 -0
  73. package/dist/types.d.ts +195 -0
  74. package/dist/types.js +3 -0
  75. package/dist/types.js.map +1 -0
  76. package/package.json +57 -0
package/dist/router.js ADDED
@@ -0,0 +1,358 @@
1
+ import { coverage, tokenize } from "./text.js";
2
+ const WEIGHT = {
3
+ /** A hand-written regex is a deliberate signal — trust it most. */
4
+ pattern: 3.0,
5
+ keyword: 1.0,
6
+ /** Multi-word keywords are far more specific than single tokens. */
7
+ phrase: 1.8,
8
+ trigger: 2.2,
9
+ description: 0.5,
10
+ /** Learned from `record_outcome`; capped so history nudges rather than dictates. */
11
+ affinity: 1.5,
12
+ /** Belonging to a topic the task matched. */
13
+ topic: 1.2,
14
+ };
15
+ /**
16
+ * Inverse document frequency over a set of entities' keywords: a term claimed by
17
+ * one entity ("elevation") is worth far more than one everybody lists ("code").
18
+ */
19
+ function keywordIdf(entities) {
20
+ const df = new Map();
21
+ for (const entity of entities) {
22
+ for (const keyword of new Set(entity.keywords)) {
23
+ df.set(keyword, (df.get(keyword) ?? 0) + 1);
24
+ }
25
+ }
26
+ const idf = new Map();
27
+ const n = Math.max(1, entities.length);
28
+ for (const [term, count] of df)
29
+ idf.set(term, Math.log(1 + n / count));
30
+ return idf;
31
+ }
32
+ /** Scores one entity against the task text. Shared by agents, topics, and runbooks. */
33
+ function scoreEntity(entity, haystack, tokens, idf) {
34
+ let raw = 0;
35
+ const why = [];
36
+ const hits = [];
37
+ for (const keyword of new Set(entity.keywords)) {
38
+ const weight = idf.get(keyword) ?? 1;
39
+ if (keyword.includes(" ")) {
40
+ if (haystack.includes(keyword)) {
41
+ raw += WEIGHT.phrase * weight;
42
+ hits.push(keyword);
43
+ }
44
+ }
45
+ else if (tokens.includes(keyword)) {
46
+ raw += WEIGHT.keyword * weight;
47
+ hits.push(keyword);
48
+ }
49
+ }
50
+ if (hits.length > 0)
51
+ why.push(`keywords: ${hits.slice(0, 6).join(", ")}`);
52
+ const patternHits = entity.patterns.filter((re) => re.test(haystack));
53
+ if (patternHits.length > 0) {
54
+ raw += WEIGHT.pattern * patternHits.length;
55
+ why.push(`matched ${patternHits.length} pattern(s)`);
56
+ }
57
+ let bestTrigger = 0;
58
+ let bestTriggerText = "";
59
+ for (const trigger of entity.triggers) {
60
+ const score = coverage(tokenize(trigger), tokens);
61
+ if (score > bestTrigger) {
62
+ bestTrigger = score;
63
+ bestTriggerText = trigger;
64
+ }
65
+ }
66
+ if (bestTrigger >= 0.4) {
67
+ raw += WEIGHT.trigger * bestTrigger;
68
+ why.push(`resembles trigger "${bestTriggerText}"`);
69
+ }
70
+ const descScore = coverage(tokenize(`${entity.title} ${entity.description}`), tokens);
71
+ if (descScore > 0)
72
+ raw += WEIGHT.description * descScore;
73
+ return { entity, raw, why };
74
+ }
75
+ /** Saturating map from an unbounded raw score to a comparable 0..1 strength. */
76
+ function strength(raw) {
77
+ return raw <= 0 ? 0 : 1 - Math.exp(-raw / 4);
78
+ }
79
+ export class Router {
80
+ catalog;
81
+ memory;
82
+ knowledge;
83
+ options;
84
+ constructor(catalog, memory, knowledge, options) {
85
+ this.catalog = catalog;
86
+ this.memory = memory;
87
+ this.knowledge = knowledge;
88
+ this.options = options;
89
+ }
90
+ /** Picks the best agent for a task, without assembling the rest of the briefing. */
91
+ routeAgent(task, context = "") {
92
+ const agents = this.catalog.agents();
93
+ if (agents.length === 0) {
94
+ return { chosen: null, confidence: 0, ambiguous: false, alternatives: [] };
95
+ }
96
+ const haystack = `${task}\n${context}`.toLowerCase();
97
+ const tokens = tokenize(haystack);
98
+ const idf = keywordIdf(agents);
99
+ const affinity = this.memory.affinity(tokens);
100
+ const matchedTopics = new Set(this.matchTopics(haystack, tokens).map((t) => t.name));
101
+ const scored = agents.map((agent) => {
102
+ const result = scoreEntity(agent, haystack, tokens, idf);
103
+ // A topic the task matched vouches for the agents it lists.
104
+ const viaTopic = agent.topics.some((t) => matchedTopics.has(t));
105
+ if (viaTopic) {
106
+ result.raw += WEIGHT.topic;
107
+ result.why.push("belongs to a matched topic");
108
+ }
109
+ // Squash learned weight so a long history cannot overpower explicit config.
110
+ const learned = affinity.get(agent.name) ?? 0;
111
+ if (learned !== 0) {
112
+ result.raw += WEIGHT.affinity * Math.tanh(learned / 4);
113
+ result.why.push(learned > 0
114
+ ? "past outcomes favour this agent for these terms"
115
+ : "past outcomes went against this agent for these terms");
116
+ }
117
+ return result;
118
+ });
119
+ scored.sort((a, b) => b.raw - a.raw);
120
+ const top = scored[0];
121
+ const second = scored[1];
122
+ const topScore = strength(top.raw);
123
+ const secondScore = second ? strength(second.raw) : 0;
124
+ const toCandidate = (entry) => ({
125
+ name: entry.entity.name,
126
+ title: entry.entity.title,
127
+ description: entry.entity.description,
128
+ score: Number(strength(entry.raw).toFixed(3)),
129
+ why: entry.why,
130
+ });
131
+ if (topScore < this.options.minScore) {
132
+ return {
133
+ chosen: null,
134
+ confidence: Number(topScore.toFixed(3)),
135
+ ambiguous: false,
136
+ alternatives: scored.slice(0, 3).filter((e) => e.raw > 0).map(toCandidate),
137
+ };
138
+ }
139
+ const margin = topScore > 0 ? (topScore - secondScore) / topScore : 1;
140
+ return {
141
+ chosen: toCandidate(top),
142
+ confidence: Number((topScore * (0.55 + 0.45 * margin)).toFixed(3)),
143
+ ambiguous: secondScore > 0 && secondScore / topScore >= this.options.ambiguityRatio,
144
+ alternatives: scored.slice(1, 4).filter((e) => e.raw > 0).map(toCandidate),
145
+ };
146
+ }
147
+ matchTopics(haystack, tokens) {
148
+ const topics = this.catalog.topics();
149
+ if (topics.length === 0)
150
+ return [];
151
+ const idf = keywordIdf(topics);
152
+ return topics
153
+ .map((topic) => scoreEntity(topic, haystack, tokens, idf))
154
+ .filter((s) => strength(s.raw) >= this.options.minScore)
155
+ .sort((a, b) => b.raw - a.raw)
156
+ .slice(0, 3)
157
+ .map((s) => s.entity);
158
+ }
159
+ /**
160
+ * Assembles everything the host needs to run one task: the agent, the skills
161
+ * and runbooks that apply, retrieved knowledge, the tools and connectors it may
162
+ * use, and the user's standing preferences — composed into one system prompt.
163
+ */
164
+ brief(task, context, options) {
165
+ const route = options.agentName
166
+ ? forcedRoute(this.catalog.get("agent", options.agentName))
167
+ : this.routeAgent(task, context);
168
+ if (!route.chosen)
169
+ return { route };
170
+ const agent = this.catalog.get("agent", route.chosen.name);
171
+ const haystack = `${task}\n${context}`.toLowerCase();
172
+ const tokens = tokenize(haystack);
173
+ const topics = this.matchTopics(haystack, tokens).concat(agent.topics
174
+ .map((name) => this.catalog.get("topic", name))
175
+ .filter((t) => Boolean(t)));
176
+ const topicNames = new Set(topics.map((t) => t.name));
177
+ const uniqueTopics = dedupe(topics);
178
+ const skills = this.selectSkills(agent, uniqueTopics, haystack, tokens);
179
+ const runbooks = this.selectRunbooks(agent, uniqueTopics, haystack, tokens);
180
+ const collections = new Set([
181
+ ...agent.knowledge,
182
+ ...uniqueTopics.flatMap((t) => t.knowledge),
183
+ ]);
184
+ const knowledge = options.knowledgeLimit > 0
185
+ ? this.knowledge.search(`${task} ${context}`, {
186
+ collections: collections.size > 0 ? [...collections] : undefined,
187
+ limit: options.knowledgeLimit,
188
+ })
189
+ : [];
190
+ const connectorNames = new Set([
191
+ ...agent.connectors,
192
+ ...uniqueTopics.flatMap((t) => t.connectors),
193
+ ...runbooks.flatMap((r) => r.connectors),
194
+ ]);
195
+ const connectors = [...connectorNames]
196
+ .map((name) => this.catalog.get("connector", name))
197
+ .filter((c) => Boolean(c));
198
+ const tools = agent.tools
199
+ .map((name) => this.catalog.tools().find((t) => t.name === name || t.hostTool === name))
200
+ .filter((t) => Boolean(t));
201
+ const memories = options.memoryLimit > 0
202
+ ? this.memory.recall({
203
+ query: `${task} ${context}`,
204
+ agent: agent.name,
205
+ scopes: options.scopes,
206
+ limit: options.memoryLimit,
207
+ })
208
+ : [];
209
+ this.memory.markUsed(memories.map((m) => m.id));
210
+ return {
211
+ agent,
212
+ route,
213
+ topics: uniqueTopics.filter((t) => topicNames.has(t.name)),
214
+ skills,
215
+ runbooks,
216
+ knowledge,
217
+ tools,
218
+ connectors,
219
+ memories,
220
+ systemPrompt: composePrompt({
221
+ agent,
222
+ skills,
223
+ runbooks,
224
+ knowledge,
225
+ tools,
226
+ connectors,
227
+ memories,
228
+ topics: uniqueTopics,
229
+ }),
230
+ };
231
+ }
232
+ selectSkills(agent, topics, haystack, tokens) {
233
+ const all = this.catalog.skills();
234
+ const idf = keywordIdf(all);
235
+ const pinned = new Set([...agent.skills, ...topics.flatMap((t) => t.skills)]);
236
+ const selected = all.filter((skill) => {
237
+ const scoped = skill.appliesTo.length === 0 || skill.appliesTo.includes(agent.name);
238
+ if (!scoped)
239
+ return false;
240
+ if (skill.always || pinned.has(skill.name))
241
+ return true;
242
+ return strength(scoreEntity(skill, haystack, tokens, idf).raw) >= this.options.minScore;
243
+ });
244
+ // Pinned skills first: they were chosen deliberately, not matched.
245
+ return selected
246
+ .sort((a, b) => Number(pinned.has(b.name)) - Number(pinned.has(a.name)))
247
+ .slice(0, 6);
248
+ }
249
+ selectRunbooks(agent, topics, haystack, tokens) {
250
+ const all = this.catalog.runbooks();
251
+ if (all.length === 0)
252
+ return [];
253
+ const idf = keywordIdf(all);
254
+ const pinned = new Set([...agent.runbooks, ...topics.flatMap((t) => t.runbooks)]);
255
+ const scored = all
256
+ .filter((rb) => rb.agents.length === 0 || rb.agents.includes(agent.name) || pinned.has(rb.name))
257
+ .map((rb) => ({
258
+ rb,
259
+ score: pinned.has(rb.name) ? 1 : strength(scoreEntity(rb, haystack, tokens, idf).raw),
260
+ }))
261
+ .filter((s) => s.score >= this.options.minScore)
262
+ .sort((a, b) => b.score - a.score);
263
+ // More than two procedures in one prompt and the agent follows none of them.
264
+ return scored.slice(0, 2).map((s) => s.rb);
265
+ }
266
+ }
267
+ function forcedRoute(agent) {
268
+ if (!agent)
269
+ return { chosen: null, confidence: 0, ambiguous: false, alternatives: [] };
270
+ return {
271
+ chosen: {
272
+ name: agent.name,
273
+ title: agent.title,
274
+ description: agent.description,
275
+ score: 1,
276
+ why: ["explicitly requested"],
277
+ },
278
+ confidence: 1,
279
+ ambiguous: false,
280
+ alternatives: [],
281
+ };
282
+ }
283
+ function dedupe(items) {
284
+ const seen = new Map();
285
+ for (const item of items)
286
+ if (!seen.has(item.name))
287
+ seen.set(item.name, item);
288
+ return [...seen.values()];
289
+ }
290
+ /**
291
+ * Builds the system prompt handed to the subagent. Order matters: the agent's own
292
+ * instructions first, then the procedures it must follow, then reference material,
293
+ * then the user's standing preferences last so they are freshest in context.
294
+ */
295
+ export function composePrompt(parts) {
296
+ const out = [parts.agent.body];
297
+ if (parts.skills.length > 0) {
298
+ out.push("", "---", "", "# Skills");
299
+ for (const skill of parts.skills) {
300
+ out.push("", `## ${skill.title}`, skill.body);
301
+ }
302
+ }
303
+ if (parts.runbooks.length > 0) {
304
+ out.push("", "---", "", "# Runbooks to follow");
305
+ for (const runbook of parts.runbooks) {
306
+ out.push("", `## ${runbook.title}`);
307
+ if (runbook.template) {
308
+ out.push("**This runbook is still a template — the business has not filled it in.**", "Treat its structure as guidance, not as agreed process. Anything written as", "`[FILL: ...]` is a decision nobody has made yet: do not invent a value for it,", "and say plainly that the process is undefined at that point rather than", "proceeding as though a policy existed.");
309
+ }
310
+ if (runbook.owner)
311
+ out.push(`Owner: ${runbook.owner}`);
312
+ if (runbook.sla)
313
+ out.push(`Target duration: ${runbook.sla}`);
314
+ if (runbook.escalation)
315
+ out.push(`Escalate to a human when: ${runbook.escalation}`);
316
+ if (runbook.steps.length > 0) {
317
+ out.push("", "Steps:", ...runbook.steps.map((s, i) => `${i + 1}. ${s}`));
318
+ }
319
+ out.push("", runbook.body);
320
+ }
321
+ }
322
+ if (parts.knowledge.length > 0) {
323
+ out.push("", "---", "", "# Retrieved knowledge", "Excerpts from the organisation's own documentation, most relevant first.", "Cite the source id in square brackets when you rely on one. If the answer is not", "here, say so rather than filling the gap from general knowledge.");
324
+ for (const chunk of parts.knowledge) {
325
+ out.push("", `## [${chunk.id}] ${chunk.docName}${chunk.heading ? ` — ${chunk.heading}` : ""}`, chunk.text);
326
+ }
327
+ }
328
+ if (parts.tools.length > 0 || parts.connectors.length > 0) {
329
+ out.push("", "---", "", "# Tools and connected systems");
330
+ for (const tool of parts.tools) {
331
+ out.push(`- \`${tool.hostTool}\` — ${tool.when}${tool.requiresApproval ? " **Ask the user before running this.**" : ""}`);
332
+ }
333
+ for (const connector of parts.connectors) {
334
+ const guard = connector.guardrails.length
335
+ ? ` Never: ${connector.guardrails.join("; ")}.`
336
+ : "";
337
+ out.push(`- **${connector.title}** (${connector.connectorKind}, ${connector.status}) — ${connector.capabilities.join("; ") || connector.description}.${guard}`);
338
+ }
339
+ }
340
+ if (parts.memories.length > 0) {
341
+ const hard = parts.memories.filter((m) => m.kind === "constraint" || m.kind === "correction");
342
+ const facts = parts.memories.filter((m) => m.kind === "fact");
343
+ const soft = parts.memories.filter((m) => !hard.includes(m) && !facts.includes(m));
344
+ out.push("", "---", "", "# What this user has told you before", "From earlier sessions. Follow these unless the current request says otherwise;", "if the request contradicts one, follow the request and name the preference you set aside.");
345
+ const section = (title, items) => {
346
+ if (items.length === 0)
347
+ return;
348
+ out.push("", `## ${title}`);
349
+ for (const m of items)
350
+ out.push(`- ${m.text}${m.why ? ` (${m.why})` : ""}`);
351
+ };
352
+ section("Non-negotiable", hard);
353
+ section("Preferences", soft);
354
+ section("Context", facts);
355
+ }
356
+ return out.join("\n").trimEnd();
357
+ }
358
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type Config } from "./config.js";
3
+ export declare function createServer(config: Config): {
4
+ server: McpServer;
5
+ close: () => void;
6
+ };