bhived-mcp 1.1.5

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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +396 -0
  3. package/dist/agentsMd.d.ts +38 -0
  4. package/dist/agentsMd.d.ts.map +1 -0
  5. package/dist/agentsMd.js +392 -0
  6. package/dist/agentsMd.js.map +1 -0
  7. package/dist/childMcp/delivery.d.ts +73 -0
  8. package/dist/childMcp/delivery.d.ts.map +1 -0
  9. package/dist/childMcp/delivery.js +130 -0
  10. package/dist/childMcp/delivery.js.map +1 -0
  11. package/dist/childMcp/manager.d.ts +111 -0
  12. package/dist/childMcp/manager.d.ts.map +1 -0
  13. package/dist/childMcp/manager.js +454 -0
  14. package/dist/childMcp/manager.js.map +1 -0
  15. package/dist/client/restClient.d.ts +36 -0
  16. package/dist/client/restClient.d.ts.map +1 -0
  17. package/dist/client/restClient.js +154 -0
  18. package/dist/client/restClient.js.map +1 -0
  19. package/dist/client/types.d.ts +220 -0
  20. package/dist/client/types.d.ts.map +1 -0
  21. package/dist/client/types.js +8 -0
  22. package/dist/client/types.js.map +1 -0
  23. package/dist/config.d.ts +36 -0
  24. package/dist/config.d.ts.map +1 -0
  25. package/dist/config.js +28 -0
  26. package/dist/config.js.map +1 -0
  27. package/dist/formatters/inspectFormatter.d.ts +13 -0
  28. package/dist/formatters/inspectFormatter.d.ts.map +1 -0
  29. package/dist/formatters/inspectFormatter.js +68 -0
  30. package/dist/formatters/inspectFormatter.js.map +1 -0
  31. package/dist/formatters/queryFormatter.d.ts +18 -0
  32. package/dist/formatters/queryFormatter.d.ts.map +1 -0
  33. package/dist/formatters/queryFormatter.js +250 -0
  34. package/dist/formatters/queryFormatter.js.map +1 -0
  35. package/dist/formatters/writeFormatter.d.ts +16 -0
  36. package/dist/formatters/writeFormatter.d.ts.map +1 -0
  37. package/dist/formatters/writeFormatter.js +56 -0
  38. package/dist/formatters/writeFormatter.js.map +1 -0
  39. package/dist/index.d.ts +9 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +387 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/prompts/learnAndShare.d.ts +8 -0
  44. package/dist/prompts/learnAndShare.d.ts.map +1 -0
  45. package/dist/prompts/learnAndShare.js +77 -0
  46. package/dist/prompts/learnAndShare.js.map +1 -0
  47. package/dist/prompts/reviewMemory.d.ts +8 -0
  48. package/dist/prompts/reviewMemory.d.ts.map +1 -0
  49. package/dist/prompts/reviewMemory.js +61 -0
  50. package/dist/prompts/reviewMemory.js.map +1 -0
  51. package/dist/registries/childMcpRegistry.d.ts +65 -0
  52. package/dist/registries/childMcpRegistry.d.ts.map +1 -0
  53. package/dist/registries/childMcpRegistry.js +74 -0
  54. package/dist/registries/childMcpRegistry.js.map +1 -0
  55. package/dist/registries/index.d.ts +12 -0
  56. package/dist/registries/index.d.ts.map +1 -0
  57. package/dist/registries/index.js +9 -0
  58. package/dist/registries/index.js.map +1 -0
  59. package/dist/registries/resourceRegistry.d.ts +48 -0
  60. package/dist/registries/resourceRegistry.d.ts.map +1 -0
  61. package/dist/registries/resourceRegistry.js +91 -0
  62. package/dist/registries/resourceRegistry.js.map +1 -0
  63. package/dist/registries/skillRegistry.d.ts +48 -0
  64. package/dist/registries/skillRegistry.d.ts.map +1 -0
  65. package/dist/registries/skillRegistry.js +47 -0
  66. package/dist/registries/skillRegistry.js.map +1 -0
  67. package/dist/resources/guide.d.ts +7 -0
  68. package/dist/resources/guide.d.ts.map +1 -0
  69. package/dist/resources/guide.js +77 -0
  70. package/dist/resources/guide.js.map +1 -0
  71. package/dist/resources/status.d.ts +7 -0
  72. package/dist/resources/status.d.ts.map +1 -0
  73. package/dist/resources/status.js +38 -0
  74. package/dist/resources/status.js.map +1 -0
  75. package/dist/tools/initiateMcp.d.ts +10 -0
  76. package/dist/tools/initiateMcp.d.ts.map +1 -0
  77. package/dist/tools/initiateMcp.js +224 -0
  78. package/dist/tools/initiateMcp.js.map +1 -0
  79. package/dist/tools/initiateSkill.d.ts +13 -0
  80. package/dist/tools/initiateSkill.d.ts.map +1 -0
  81. package/dist/tools/initiateSkill.js +277 -0
  82. package/dist/tools/initiateSkill.js.map +1 -0
  83. package/dist/tools/inspect.d.ts +8 -0
  84. package/dist/tools/inspect.d.ts.map +1 -0
  85. package/dist/tools/inspect.js +110 -0
  86. package/dist/tools/inspect.js.map +1 -0
  87. package/dist/tools/listActive.d.ts +9 -0
  88. package/dist/tools/listActive.d.ts.map +1 -0
  89. package/dist/tools/listActive.js +177 -0
  90. package/dist/tools/listActive.js.map +1 -0
  91. package/dist/tools/query.d.ts +15 -0
  92. package/dist/tools/query.d.ts.map +1 -0
  93. package/dist/tools/query.js +98 -0
  94. package/dist/tools/query.js.map +1 -0
  95. package/dist/tools/readResource.d.ts +9 -0
  96. package/dist/tools/readResource.d.ts.map +1 -0
  97. package/dist/tools/readResource.js +110 -0
  98. package/dist/tools/readResource.js.map +1 -0
  99. package/dist/tools/runScript.d.ts +17 -0
  100. package/dist/tools/runScript.d.ts.map +1 -0
  101. package/dist/tools/runScript.js +320 -0
  102. package/dist/tools/runScript.js.map +1 -0
  103. package/dist/tools/stopMcp.d.ts +8 -0
  104. package/dist/tools/stopMcp.d.ts.map +1 -0
  105. package/dist/tools/stopMcp.js +91 -0
  106. package/dist/tools/stopMcp.js.map +1 -0
  107. package/dist/tools/useTool.d.ts +10 -0
  108. package/dist/tools/useTool.d.ts.map +1 -0
  109. package/dist/tools/useTool.js +127 -0
  110. package/dist/tools/useTool.js.map +1 -0
  111. package/dist/tools/write.d.ts +9 -0
  112. package/dist/tools/write.d.ts.map +1 -0
  113. package/dist/tools/write.js +224 -0
  114. package/dist/tools/write.js.map +1 -0
  115. package/package.json +59 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * hivemind_initiate_mcp Tool
3
+ *
4
+ * Activates a standalone MCP from the HiveMind backend,
5
+ * spawns it as a child process via the ChildMcpManager,
6
+ * discovers its tools, and returns usage instructions.
7
+ */
8
+ import { z } from "zod/v4";
9
+ import { restClient } from "../client/restClient.js";
10
+ import { childMcpRegistry } from "../registries/childMcpRegistry.js";
11
+ import { childMcpManager } from "../childMcp/manager.js";
12
+ import { config } from "../config.js";
13
+ // ── Input Schema ─────────────────────────────────────────────────
14
+ const InitiateMcpInputSchema = z.object({
15
+ memory_id: z
16
+ .string()
17
+ .min(1)
18
+ .describe("The ID of the memory to inspect."),
19
+ agent_id: z
20
+ .string()
21
+ .min(1)
22
+ .describe("Your unique identifier."),
23
+ }).strict();
24
+ // ── Tool Description ─────────────────────────────────────────────
25
+ const INITIATE_MCP_DESCRIPTION = `Activate and spawn a standalone MCP server from the HiveMind knowledge graph.
26
+ The MCP server will be spawned as a child process and its tools
27
+ will be discoverable via hivemind_list_active.
28
+
29
+ Use hivemind_use_tool to call the spawned MCP's tools.
30
+
31
+ Example: hivemind_initiate_mcp(memory_id="mem_ghi789",
32
+ agent_id="my-agent")`;
33
+ // ── Registration ─────────────────────────────────────────────────
34
+ export function registerInitiateMcpTool(server) {
35
+ server.registerTool("hivemind_initiate_mcp", {
36
+ title: "Initiate MCP",
37
+ description: INITIATE_MCP_DESCRIPTION,
38
+ inputSchema: InitiateMcpInputSchema,
39
+ annotations: {
40
+ readOnlyHint: false,
41
+ destructiveHint: false,
42
+ idempotentHint: true,
43
+ openWorldHint: true,
44
+ },
45
+ }, async (params) => {
46
+ let activation;
47
+ try {
48
+ // 1. Check standalone MCP limit
49
+ const standaloneCount = childMcpRegistry.countBySource("standalone");
50
+ if (standaloneCount >= config.maxStandaloneMcps) {
51
+ return {
52
+ content: [
53
+ {
54
+ type: "text",
55
+ text: `❌ Maximum standalone MCP limit reached (${config.maxStandaloneMcps}). ` +
56
+ `Stop an MCP with hivemind_stop_mcp before spawning another.\n\n` +
57
+ `Active standalone MCPs: ${childMcpRegistry
58
+ .listBySource("standalone")
59
+ .map((e) => `\`${e.config.name}\``)
60
+ .join(", ")}`,
61
+ },
62
+ ],
63
+ isError: true,
64
+ };
65
+ }
66
+ // 2. Check total child process limit
67
+ if (childMcpRegistry.count() >= config.maxChildProcesses) {
68
+ return {
69
+ content: [
70
+ {
71
+ type: "text",
72
+ text: `❌ Maximum total child process limit reached (${config.maxChildProcesses}). ` +
73
+ `Stop an MCP to free resources.`,
74
+ },
75
+ ],
76
+ isError: true,
77
+ };
78
+ }
79
+ // 3. Call backend to activate and get the payload
80
+ activation = await restClient.activateCapability(params.memory_id, params.agent_id);
81
+ // 4. Validate response
82
+ if (!activation.ok) {
83
+ return {
84
+ content: [
85
+ {
86
+ type: "text",
87
+ text: `❌ Backend declined activation for memory '${params.memory_id}'.`,
88
+ },
89
+ ],
90
+ isError: true,
91
+ };
92
+ }
93
+ if (activation.capability_type !== "mcp") {
94
+ return {
95
+ content: [
96
+ {
97
+ type: "text",
98
+ text: `❌ Memory '${params.memory_id}' is a **${activation.capability_type}**, not an MCP. ` +
99
+ `Use \`hivemind_initiate_skill\` instead.`,
100
+ },
101
+ ],
102
+ isError: true,
103
+ };
104
+ }
105
+ if (!activation.mcp_payload) {
106
+ return {
107
+ content: [
108
+ {
109
+ type: "text",
110
+ text: `❌ Activation succeeded but no MCP payload was returned. The backend may be misconfigured.`,
111
+ },
112
+ ],
113
+ isError: true,
114
+ };
115
+ }
116
+ const payload = activation.mcp_payload;
117
+ const mcpName = payload.name;
118
+ // ── Debug: log payload for diagnostics ──
119
+ console.error(`[initiateMcp] Payload received for '${mcpName}':\n` +
120
+ ` command: ${payload.command}\n` +
121
+ ` args: ${JSON.stringify(payload.args)}\n` +
122
+ ` env: ${JSON.stringify(Object.keys(payload.env || {}))}\n` +
123
+ ` tools_hint: ${JSON.stringify(payload.tools_hint)}`);
124
+ // 5. Check if already running (idempotent)
125
+ if (childMcpRegistry.has(mcpName)) {
126
+ const existing = childMcpRegistry.get(mcpName);
127
+ if (existing.status === "active") {
128
+ return {
129
+ content: [
130
+ {
131
+ type: "text",
132
+ text: formatMcpOutput(mcpName, payload.description, existing.tools, true),
133
+ },
134
+ ],
135
+ };
136
+ }
137
+ // If crashed, we'll respawn below (manager handles cleanup)
138
+ }
139
+ // 6. Spawn via ChildMcpManager
140
+ const spawnResult = await childMcpManager.spawn(payload, {
141
+ source: "standalone",
142
+ memory_id: params.memory_id,
143
+ });
144
+ // 7. Fire-and-forget activation tracking
145
+ restClient
146
+ .reportCapability(params.memory_id, {
147
+ agent_id: params.agent_id,
148
+ success: true,
149
+ })
150
+ .catch((err) => {
151
+ console.error(`[initiateMcp] Failed to report activation: ${err instanceof Error ? err.message : String(err)}`);
152
+ });
153
+ // 8. Return output with tool listing
154
+ return {
155
+ content: [
156
+ {
157
+ type: "text",
158
+ text: formatMcpOutput(mcpName, payload.description, spawnResult.tools, false),
159
+ },
160
+ ],
161
+ };
162
+ }
163
+ catch (error) {
164
+ const errorMsg = error instanceof Error ? error.message : String(error);
165
+ // Include debug info about what we tried to spawn
166
+ const debugInfo = activation?.mcp_payload
167
+ ? `\n\n**Debug payload:**\n` +
168
+ `- command: \`${activation.mcp_payload.command}\`\n` +
169
+ `- args: \`${JSON.stringify(activation.mcp_payload.args)}\`\n` +
170
+ `- env keys: ${Object.keys(activation.mcp_payload.env || {}).join(", ") || "(none)"}\n` +
171
+ `- name: ${activation.mcp_payload.name}`
172
+ : "";
173
+ return {
174
+ content: [
175
+ {
176
+ type: "text",
177
+ text: `❌ Error spawning MCP: ${errorMsg}${debugInfo}`,
178
+ },
179
+ ],
180
+ isError: true,
181
+ };
182
+ }
183
+ });
184
+ }
185
+ // ── Formatting helpers ───────────────────────────────────────────
186
+ function formatMcpOutput(mcpName, description, tools, isReconnection) {
187
+ const lines = [];
188
+ // Header
189
+ if (isReconnection) {
190
+ lines.push(`## ♻️ MCP Already Running: ${mcpName}\n`);
191
+ lines.push(`This MCP is already spawned and active.\n`);
192
+ }
193
+ else {
194
+ lines.push(`## ✅ MCP Spawned: ${mcpName}\n`);
195
+ }
196
+ // Description
197
+ if (description) {
198
+ lines.push(description);
199
+ lines.push("");
200
+ }
201
+ // Tools table
202
+ if (tools.length > 0) {
203
+ lines.push("### Available Tools\n");
204
+ lines.push("| Tool | Description |");
205
+ lines.push("|------|-------------|");
206
+ for (const tool of tools) {
207
+ const desc = tool.description
208
+ ? tool.description.split("\n")[0].substring(0, 100)
209
+ : "—";
210
+ lines.push(`| \`${tool.name}\` | ${desc} |`);
211
+ }
212
+ lines.push("");
213
+ lines.push("### Usage\n");
214
+ lines.push("Call tools via the proxy:\n");
215
+ lines.push("```");
216
+ lines.push(`hivemind_use_tool(mcp="${mcpName}", tool="<tool_name>", params={...})`);
217
+ lines.push("```");
218
+ }
219
+ else {
220
+ lines.push("\n> ⚠️ No tools discovered from this MCP. It may need additional configuration.");
221
+ }
222
+ return lines.join("\n");
223
+ }
224
+ //# sourceMappingURL=initiateMcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiateMcp.js","sourceRoot":"","sources":["../../src/tools/initiateMcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,oEAAoE;AAEpE,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kCAAkC,CAAC;IACjD,QAAQ,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,yBAAyB,CAAC;CAC3C,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,oEAAoE;AAEpE,MAAM,wBAAwB,GAAG;;;;;;;8BAOH,CAAC;AAE/B,oEAAoE;AAEpE,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACf,uBAAuB,EACvB;QACI,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,wBAAwB;QACrC,WAAW,EAAE,sBAAsB;QACnC,WAAW,EAAE;YACT,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACtB;KACJ,EACD,KAAK,EAAE,MAAwB,EAAE,EAAE;QAC/B,IAAI,UAA0C,CAAC;QAC/C,IAAI,CAAC;YACD,gCAAgC;YAChC,MAAM,eAAe,GAAG,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACrE,IAAI,eAAe,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC9C,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EACA,2CAA2C,MAAM,CAAC,iBAAiB,KAAK;gCACxE,iEAAiE;gCACjE,2BAA2B,gBAAgB;qCACtC,YAAY,CAAC,YAAY,CAAC;qCAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;qCAClC,IAAI,CAAC,IAAI,CAAC,EAAE;yBACxB;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YAED,qCAAqC;YACrC,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACvD,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EACA,gDAAgD,MAAM,CAAC,iBAAiB,KAAK;gCAC7E,gCAAgC;yBACvC;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YAED,kDAAkD;YAClD,UAAU,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAC5C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,CAClB,CAAC;YAEF,uBAAuB;YACvB,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6CAA6C,MAAM,CAAC,SAAS,IAAI;yBAC1E;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YAED,IAAI,UAAU,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;gBACvC,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EACA,aAAa,MAAM,CAAC,SAAS,YAAY,UAAU,CAAC,eAAe,kBAAkB;gCACrF,0CAA0C;yBACjD;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC1B,OAAO;oBACH,OAAO,EAAE;wBACL;4BACI,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2FAA2F;yBACpG;qBACJ;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAE7B,2CAA2C;YAC3C,OAAO,CAAC,KAAK,CACT,uCAAuC,OAAO,MAAM;gBACpD,cAAc,OAAO,CAAC,OAAO,IAAI;gBACjC,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;gBAC3C,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI;gBAC5D,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CACxD,CAAC;YAEF,2CAA2C;YAC3C,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;gBAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO;wBACH,OAAO,EAAE;4BACL;gCACI,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,eAAe,CACjB,OAAO,EACP,OAAO,CAAC,WAAW,EACnB,QAAQ,CAAC,KAAK,EACd,IAAI,CACP;6BACJ;yBACJ;qBACJ,CAAC;gBACN,CAAC;gBACD,4DAA4D;YAChE,CAAC;YAED,+BAA+B;YAC/B,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,KAAK,CAC3C,OAAO,EACP;gBACI,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B,CACJ,CAAC;YAEF,yCAAyC;YACzC,UAAU;iBACL,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE;gBAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,IAAI;aAChB,CAAC;iBACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACpB,OAAO,CAAC,KAAK,CACT,8CAA8C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnG,CAAC;YACN,CAAC,CAAC,CAAC;YAEP,qCAAqC;YACrC,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,eAAe,CACjB,OAAO,EACP,OAAO,CAAC,WAAW,EACnB,WAAW,CAAC,KAAK,EACjB,KAAK,CACR;qBACJ;iBACJ;aACJ,CAAC;QACN,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAExE,kDAAkD;YAClD,MAAM,SAAS,GAAG,UAAU,EAAE,WAAW;gBACrC,CAAC,CAAC,0BAA0B;oBAC1B,gBAAgB,UAAU,CAAC,WAAW,CAAC,OAAO,MAAM;oBACpD,aAAa,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;oBAC9D,eAAe,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI;oBACvF,WAAW,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;YAET,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yBAAyB,QAAQ,GAAG,SAAS,EAAE;qBACxD;iBACJ;gBACD,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;IACL,CAAC,CACJ,CAAC;AACN,CAAC;AAED,oEAAoE;AAEpE,SAAS,eAAe,CACpB,OAAe,EACf,WAAmB,EACnB,KAAqB,EACrB,cAAuB;IAEvB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS;IACT,IAAI,cAAc,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,8BAA8B,OAAO,IAAI,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,cAAc;IACd,IAAI,WAAW,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,cAAc;IACd,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;gBACzB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;gBACnD,CAAC,CAAC,GAAG,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CACN,0BAA0B,OAAO,sCAAsC,CAC1E,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CACN,iFAAiF,CACpF,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * hivemind_initiate_skill Tool
3
+ *
4
+ * Activates a skill from the HiveMind backend, registers it in
5
+ * the SkillRegistry, populates the ResourceRegistry, and spawns
6
+ * any bundled child MCPs via the ChildMcpManager.
7
+ *
8
+ * Returns the full SKILL.md content along with resource listings
9
+ * and bundled MCP tool tables so the agent can immediately use them.
10
+ */
11
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
12
+ export declare function registerInitiateSkillTool(server: McpServer): void;
13
+ //# sourceMappingURL=initiateSkill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiateSkill.d.ts","sourceRoot":"","sources":["../../src/tools/initiateSkill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuCzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqNjE"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * hivemind_initiate_skill Tool
3
+ *
4
+ * Activates a skill from the HiveMind backend, registers it in
5
+ * the SkillRegistry, populates the ResourceRegistry, and spawns
6
+ * any bundled child MCPs via the ChildMcpManager.
7
+ *
8
+ * Returns the full SKILL.md content along with resource listings
9
+ * and bundled MCP tool tables so the agent can immediately use them.
10
+ */
11
+ import { z } from "zod/v4";
12
+ import { restClient } from "../client/restClient.js";
13
+ import { skillRegistry } from "../registries/skillRegistry.js";
14
+ import { resourceRegistry, ResourceRegistry } from "../registries/resourceRegistry.js";
15
+ import { childMcpManager } from "../childMcp/manager.js";
16
+ import { config } from "../config.js";
17
+ // ── Input Schema ─────────────────────────────────────────────────
18
+ const InitiateSkillInputSchema = z.object({
19
+ memory_id: z
20
+ .string()
21
+ .min(1)
22
+ .describe("The ID of the memory to inspect."),
23
+ agent_id: z
24
+ .string()
25
+ .min(1)
26
+ .describe("Your unique identifier."),
27
+ }).strict();
28
+ // ── Tool Description ─────────────────────────────────────────────
29
+ const INITIATE_SKILL_DESCRIPTION = `Load and activate a skill from the HiveMind knowledge graph.
30
+ Skills are curated bundles of instructions, scripts, reference documents,
31
+ assets, and optionally bundled MCP servers. Once activated, you gain access
32
+ to the skill's SKILL.md instructions and can use:
33
+ - hivemind_run_script to execute the skill's scripts
34
+ - hivemind_read_resource to read reference docs and assets
35
+ - hivemind_use_tool for any bundled MCP tools
36
+
37
+ Example: hivemind_initiate_skill(memory_id="mem_abc123",
38
+ agent_id="my-agent")`;
39
+ // ── Registration ─────────────────────────────────────────────────
40
+ export function registerInitiateSkillTool(server) {
41
+ server.registerTool("hivemind_initiate_skill", {
42
+ title: "Initiate Skill",
43
+ description: INITIATE_SKILL_DESCRIPTION,
44
+ inputSchema: InitiateSkillInputSchema,
45
+ annotations: {
46
+ readOnlyHint: false,
47
+ destructiveHint: false,
48
+ idempotentHint: true,
49
+ openWorldHint: true,
50
+ },
51
+ }, async (params) => {
52
+ try {
53
+ // Limit is automatically managed by the registry to the last 5 skills.
54
+ // 2. Call backend to activate and get the payload
55
+ const activation = await restClient.activateCapability(params.memory_id, params.agent_id);
56
+ // 3. Validate response
57
+ if (!activation.ok) {
58
+ return {
59
+ content: [
60
+ {
61
+ type: "text",
62
+ text: `❌ Backend declined activation for memory '${params.memory_id}'.`,
63
+ },
64
+ ],
65
+ isError: true,
66
+ };
67
+ }
68
+ if (activation.capability_type !== "skill") {
69
+ return {
70
+ content: [
71
+ {
72
+ type: "text",
73
+ text: `❌ Memory '${params.memory_id}' is a **${activation.capability_type}**, not a skill. ` +
74
+ `Use \`hivemind_initiate_mcp\` instead.`,
75
+ },
76
+ ],
77
+ isError: true,
78
+ };
79
+ }
80
+ if (!activation.skill_payload) {
81
+ return {
82
+ content: [
83
+ {
84
+ type: "text",
85
+ text: `❌ Activation succeeded but no skill payload was returned. The backend may be misconfigured.`,
86
+ },
87
+ ],
88
+ isError: true,
89
+ };
90
+ }
91
+ const payload = activation.skill_payload;
92
+ const skillName = payload.name;
93
+ // 4. Normalize resource maps — backend may return keys with
94
+ // type-prefix (e.g. "scripts/generate.py" in the scripts dict).
95
+ // Strip the prefix so lookups work with plain filenames.
96
+ const cleanScripts = stripTypePrefix("scripts", payload.scripts ?? {});
97
+ const cleanRefs = stripTypePrefix("references", payload.references ?? {});
98
+ const cleanAssets = stripTypePrefix("assets", payload.assets ?? {});
99
+ // 5. Check if already active (idempotent re-activation)
100
+ if (skillRegistry.has(skillName)) {
101
+ const existing = skillRegistry.get(skillName);
102
+ return {
103
+ content: [
104
+ {
105
+ type: "text",
106
+ text: formatSkillOutput(skillName, existing.skill_md, existing.scripts, existing.references, existing.assets, existing.mcp_names, true),
107
+ },
108
+ ],
109
+ };
110
+ }
111
+ // 6. Register all resources in ResourceRegistry
112
+ const resourceTypes = [
113
+ { type: "scripts", map: cleanScripts },
114
+ { type: "references", map: cleanRefs },
115
+ { type: "assets", map: cleanAssets },
116
+ ];
117
+ for (const { type, map } of resourceTypes) {
118
+ for (const [filename, content] of Object.entries(map)) {
119
+ const uri = ResourceRegistry.buildUri(skillName, type, filename);
120
+ const mimeType = ResourceRegistry.inferMimeType(filename);
121
+ resourceRegistry.add(uri, {
122
+ content,
123
+ mimeType,
124
+ source_skill: skillName,
125
+ });
126
+ }
127
+ }
128
+ // 6. Spawn bundled MCPs (if any)
129
+ const spawnedMcpNames = [];
130
+ const allBundledTools = [];
131
+ const mcpErrors = [];
132
+ if (payload.mcp_configs && payload.mcp_configs.length > 0) {
133
+ // Enforce per-skill bundled MCP limit
134
+ const configsToSpawn = payload.mcp_configs.slice(0, config.maxBundledMcps);
135
+ if (payload.mcp_configs.length > config.maxBundledMcps) {
136
+ mcpErrors.push(`⚠️ Skill declares ${payload.mcp_configs.length} bundled MCPs but max is ${config.maxBundledMcps}. ` +
137
+ `Only the first ${config.maxBundledMcps} will be spawned.`);
138
+ }
139
+ for (const mcpConfig of configsToSpawn) {
140
+ try {
141
+ const result = await childMcpManager.spawn(mcpConfig, {
142
+ source: `skill:${skillName}`,
143
+ memory_id: params.memory_id,
144
+ });
145
+ spawnedMcpNames.push(result.name);
146
+ allBundledTools.push({
147
+ mcpName: result.name,
148
+ tools: result.tools,
149
+ });
150
+ }
151
+ catch (error) {
152
+ const msg = error instanceof Error ? error.message : String(error);
153
+ mcpErrors.push(`⚠️ Failed to spawn bundled MCP '${mcpConfig.name}': ${msg}`);
154
+ console.error(`[initiateSkill] Failed to spawn bundled MCP '${mcpConfig.name}': ${msg}`);
155
+ }
156
+ }
157
+ }
158
+ // 8. Register skill in SkillRegistry (with cleaned keys)
159
+ skillRegistry.add({
160
+ memory_id: params.memory_id,
161
+ name: skillName,
162
+ skill_md: payload.skill_md,
163
+ scripts: cleanScripts,
164
+ references: cleanRefs,
165
+ assets: cleanAssets,
166
+ mcp_names: spawnedMcpNames,
167
+ activated_at: new Date(),
168
+ status: "active",
169
+ });
170
+ // 8. Fire-and-forget activation tracking
171
+ restClient
172
+ .reportCapability(params.memory_id, {
173
+ agent_id: params.agent_id,
174
+ success: true,
175
+ })
176
+ .catch((err) => {
177
+ console.error(`[initiateSkill] Failed to report activation: ${err instanceof Error ? err.message : String(err)}`);
178
+ });
179
+ // 10. Build and return output
180
+ const output = formatSkillOutput(skillName, payload.skill_md, cleanScripts, cleanRefs, cleanAssets, spawnedMcpNames, false, allBundledTools, mcpErrors);
181
+ return {
182
+ content: [
183
+ {
184
+ type: "text",
185
+ text: output,
186
+ },
187
+ ],
188
+ };
189
+ }
190
+ catch (error) {
191
+ return {
192
+ content: [
193
+ {
194
+ type: "text",
195
+ text: `❌ Error activating skill: ${error instanceof Error ? error.message : String(error)}`,
196
+ },
197
+ ],
198
+ isError: true,
199
+ };
200
+ }
201
+ });
202
+ }
203
+ // ── Helpers ──────────────────────────────────────────────────────
204
+ /**
205
+ * Strip type-prefix from resource map keys.
206
+ * Backend may return keys like "scripts/generate.py" inside the scripts dict.
207
+ * We normalize to just "generate.py" so lookups by plain filename work.
208
+ */
209
+ function stripTypePrefix(type, map) {
210
+ const cleaned = {};
211
+ for (const [key, value] of Object.entries(map)) {
212
+ const cleanKey = key.startsWith(`${type}/`)
213
+ ? key.slice(type.length + 1)
214
+ : key;
215
+ cleaned[cleanKey] = value;
216
+ }
217
+ return cleaned;
218
+ }
219
+ function formatSkillOutput(skillName, skillMd, scripts, references, assets, mcpNames, isReactivation, bundledTools, mcpErrors) {
220
+ const lines = [];
221
+ // Header
222
+ if (isReactivation) {
223
+ lines.push(`## ♻️ Skill Already Active: ${skillName}\n`);
224
+ lines.push(`This skill is already activated. Here are its instructions:\n`);
225
+ }
226
+ else {
227
+ lines.push(`## ✅ Skill Activated: ${skillName}\n`);
228
+ }
229
+ // Full SKILL.md content
230
+ lines.push(skillMd);
231
+ lines.push("\n---");
232
+ // Resources table
233
+ const hasResources = Object.keys(scripts).length > 0 ||
234
+ Object.keys(references).length > 0 ||
235
+ Object.keys(assets).length > 0;
236
+ if (hasResources) {
237
+ lines.push("\n### Available Resources\n");
238
+ lines.push("| Type | Path | Access |");
239
+ lines.push("|------|------|--------|");
240
+ for (const [filename] of Object.entries(scripts)) {
241
+ lines.push(`| script | scripts/${filename} | \`hivemind_run_script(skill="${skillName}", script="${filename}")\` |`);
242
+ }
243
+ for (const [filename] of Object.entries(references)) {
244
+ lines.push(`| reference | references/${filename} | \`hivemind_read_resource(skill="${skillName}", path="references/${filename}")\` |`);
245
+ }
246
+ for (const [filename] of Object.entries(assets)) {
247
+ lines.push(`| asset | assets/${filename} | \`hivemind_read_resource(skill="${skillName}", path="assets/${filename}")\` |`);
248
+ }
249
+ }
250
+ // Bundled MCP tools table
251
+ if (bundledTools && bundledTools.length > 0) {
252
+ lines.push("\n### Bundled MCP Tools (spawned automatically)\n");
253
+ lines.push("| MCP | Tool | Description |");
254
+ lines.push("|-----|------|-------------|");
255
+ for (const { mcpName, tools } of bundledTools) {
256
+ for (const tool of tools) {
257
+ const desc = tool.description
258
+ ? tool.description.split("\n")[0].substring(0, 80)
259
+ : "—";
260
+ lines.push(`| ${mcpName} | \`${tool.name}\` | ${desc} |`);
261
+ }
262
+ }
263
+ lines.push(`\n> Use \`hivemind_use_tool(mcp="<name>", tool="<tool>", params={...})\` to call these tools.`);
264
+ }
265
+ else if (mcpNames.length > 0) {
266
+ lines.push(`\n### Bundled MCPs: ${mcpNames.map((n) => `\`${n}\``).join(", ")}`);
267
+ }
268
+ // MCP spawn errors/warnings
269
+ if (mcpErrors && mcpErrors.length > 0) {
270
+ lines.push("\n### ⚠️ MCP Spawn Warnings\n");
271
+ for (const err of mcpErrors) {
272
+ lines.push(`- ${err}`);
273
+ }
274
+ }
275
+ return lines.join("\n");
276
+ }
277
+ //# sourceMappingURL=initiateSkill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiateSkill.js","sourceRoot":"","sources":["../../src/tools/initiateSkill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * hivemind_inspect Tool
3
+ *
4
+ * Inspects the full state of a memory in the knowledge graph.
5
+ */
6
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
+ export declare function registerInspectTool(server: McpServer): void;
8
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyCzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2E3D"}