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.
- package/LICENSE +21 -0
- package/README.md +396 -0
- package/dist/agentsMd.d.ts +38 -0
- package/dist/agentsMd.d.ts.map +1 -0
- package/dist/agentsMd.js +392 -0
- package/dist/agentsMd.js.map +1 -0
- package/dist/childMcp/delivery.d.ts +73 -0
- package/dist/childMcp/delivery.d.ts.map +1 -0
- package/dist/childMcp/delivery.js +130 -0
- package/dist/childMcp/delivery.js.map +1 -0
- package/dist/childMcp/manager.d.ts +111 -0
- package/dist/childMcp/manager.d.ts.map +1 -0
- package/dist/childMcp/manager.js +454 -0
- package/dist/childMcp/manager.js.map +1 -0
- package/dist/client/restClient.d.ts +36 -0
- package/dist/client/restClient.d.ts.map +1 -0
- package/dist/client/restClient.js +154 -0
- package/dist/client/restClient.js.map +1 -0
- package/dist/client/types.d.ts +220 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +8 -0
- package/dist/client/types.js.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/formatters/inspectFormatter.d.ts +13 -0
- package/dist/formatters/inspectFormatter.d.ts.map +1 -0
- package/dist/formatters/inspectFormatter.js +68 -0
- package/dist/formatters/inspectFormatter.js.map +1 -0
- package/dist/formatters/queryFormatter.d.ts +18 -0
- package/dist/formatters/queryFormatter.d.ts.map +1 -0
- package/dist/formatters/queryFormatter.js +250 -0
- package/dist/formatters/queryFormatter.js.map +1 -0
- package/dist/formatters/writeFormatter.d.ts +16 -0
- package/dist/formatters/writeFormatter.d.ts.map +1 -0
- package/dist/formatters/writeFormatter.js +56 -0
- package/dist/formatters/writeFormatter.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +387 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/learnAndShare.d.ts +8 -0
- package/dist/prompts/learnAndShare.d.ts.map +1 -0
- package/dist/prompts/learnAndShare.js +77 -0
- package/dist/prompts/learnAndShare.js.map +1 -0
- package/dist/prompts/reviewMemory.d.ts +8 -0
- package/dist/prompts/reviewMemory.d.ts.map +1 -0
- package/dist/prompts/reviewMemory.js +61 -0
- package/dist/prompts/reviewMemory.js.map +1 -0
- package/dist/registries/childMcpRegistry.d.ts +65 -0
- package/dist/registries/childMcpRegistry.d.ts.map +1 -0
- package/dist/registries/childMcpRegistry.js +74 -0
- package/dist/registries/childMcpRegistry.js.map +1 -0
- package/dist/registries/index.d.ts +12 -0
- package/dist/registries/index.d.ts.map +1 -0
- package/dist/registries/index.js +9 -0
- package/dist/registries/index.js.map +1 -0
- package/dist/registries/resourceRegistry.d.ts +48 -0
- package/dist/registries/resourceRegistry.d.ts.map +1 -0
- package/dist/registries/resourceRegistry.js +91 -0
- package/dist/registries/resourceRegistry.js.map +1 -0
- package/dist/registries/skillRegistry.d.ts +48 -0
- package/dist/registries/skillRegistry.d.ts.map +1 -0
- package/dist/registries/skillRegistry.js +47 -0
- package/dist/registries/skillRegistry.js.map +1 -0
- package/dist/resources/guide.d.ts +7 -0
- package/dist/resources/guide.d.ts.map +1 -0
- package/dist/resources/guide.js +77 -0
- package/dist/resources/guide.js.map +1 -0
- package/dist/resources/status.d.ts +7 -0
- package/dist/resources/status.d.ts.map +1 -0
- package/dist/resources/status.js +38 -0
- package/dist/resources/status.js.map +1 -0
- package/dist/tools/initiateMcp.d.ts +10 -0
- package/dist/tools/initiateMcp.d.ts.map +1 -0
- package/dist/tools/initiateMcp.js +224 -0
- package/dist/tools/initiateMcp.js.map +1 -0
- package/dist/tools/initiateSkill.d.ts +13 -0
- package/dist/tools/initiateSkill.d.ts.map +1 -0
- package/dist/tools/initiateSkill.js +277 -0
- package/dist/tools/initiateSkill.js.map +1 -0
- package/dist/tools/inspect.d.ts +8 -0
- package/dist/tools/inspect.d.ts.map +1 -0
- package/dist/tools/inspect.js +110 -0
- package/dist/tools/inspect.js.map +1 -0
- package/dist/tools/listActive.d.ts +9 -0
- package/dist/tools/listActive.d.ts.map +1 -0
- package/dist/tools/listActive.js +177 -0
- package/dist/tools/listActive.js.map +1 -0
- package/dist/tools/query.d.ts +15 -0
- package/dist/tools/query.d.ts.map +1 -0
- package/dist/tools/query.js +98 -0
- package/dist/tools/query.js.map +1 -0
- package/dist/tools/readResource.d.ts +9 -0
- package/dist/tools/readResource.d.ts.map +1 -0
- package/dist/tools/readResource.js +110 -0
- package/dist/tools/readResource.js.map +1 -0
- package/dist/tools/runScript.d.ts +17 -0
- package/dist/tools/runScript.d.ts.map +1 -0
- package/dist/tools/runScript.js +320 -0
- package/dist/tools/runScript.js.map +1 -0
- package/dist/tools/stopMcp.d.ts +8 -0
- package/dist/tools/stopMcp.d.ts.map +1 -0
- package/dist/tools/stopMcp.js +91 -0
- package/dist/tools/stopMcp.js.map +1 -0
- package/dist/tools/useTool.d.ts +10 -0
- package/dist/tools/useTool.d.ts.map +1 -0
- package/dist/tools/useTool.js +127 -0
- package/dist/tools/useTool.js.map +1 -0
- package/dist/tools/write.d.ts +9 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +224 -0
- package/dist/tools/write.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|