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,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind REST Client
|
|
3
|
+
*
|
|
4
|
+
* Thin fetch-based client for the HiveMind FastAPI core.
|
|
5
|
+
* Uses native fetch (Node 18+) with AbortController timeouts
|
|
6
|
+
* and single-retry for transient failures.
|
|
7
|
+
*/
|
|
8
|
+
import { config } from "../config.js";
|
|
9
|
+
export class HiveMindRestClient {
|
|
10
|
+
baseUrl;
|
|
11
|
+
timeout;
|
|
12
|
+
apiKey;
|
|
13
|
+
constructor(baseUrl, timeout, apiKey) {
|
|
14
|
+
this.baseUrl = (baseUrl ?? config.apiUrl).replace(/\/+$/, "");
|
|
15
|
+
this.timeout = timeout ?? config.timeout;
|
|
16
|
+
this.apiKey = apiKey ?? config.apiKey;
|
|
17
|
+
}
|
|
18
|
+
// ── Public API ──────────────────────────────────────────────────
|
|
19
|
+
async query(params) {
|
|
20
|
+
return this.post("/v1/query", params);
|
|
21
|
+
}
|
|
22
|
+
async writeMemory(params) {
|
|
23
|
+
return this.post("/v1/memories", params);
|
|
24
|
+
}
|
|
25
|
+
async getMemory(memoryId) {
|
|
26
|
+
return this.get(`/v1/memories/${encodeURIComponent(memoryId)}`);
|
|
27
|
+
}
|
|
28
|
+
async getHealth() {
|
|
29
|
+
return this.get("/health");
|
|
30
|
+
}
|
|
31
|
+
async listMemories(params) {
|
|
32
|
+
const query = new URLSearchParams();
|
|
33
|
+
if (params?.status_filter)
|
|
34
|
+
query.set("status_filter", params.status_filter);
|
|
35
|
+
if (params?.type_filter)
|
|
36
|
+
query.set("type_filter", params.type_filter);
|
|
37
|
+
if (params?.agent_id)
|
|
38
|
+
query.set("agent_id", params.agent_id);
|
|
39
|
+
if (params?.limit !== undefined)
|
|
40
|
+
query.set("limit", String(params.limit));
|
|
41
|
+
const qs = query.toString();
|
|
42
|
+
return this.get(`/v1/memories${qs ? `?${qs}` : ""}`);
|
|
43
|
+
}
|
|
44
|
+
// ── Capability API (Skills & MCPs) ──────────────────────────────
|
|
45
|
+
async activateCapability(memoryId, agentId) {
|
|
46
|
+
return this.post(`/v1/capabilities/${this.encodePathSegments(memoryId)}/activate`, { agent_id: agentId });
|
|
47
|
+
}
|
|
48
|
+
async reportCapability(memoryId, params) {
|
|
49
|
+
return this.post(`/v1/capabilities/${this.encodePathSegments(memoryId)}/report`, params);
|
|
50
|
+
}
|
|
51
|
+
async getSkill(memoryId) {
|
|
52
|
+
return this.get(`/v1/admin/skills/${this.encodePathSegments(memoryId)}`);
|
|
53
|
+
}
|
|
54
|
+
async getMcp(memoryId) {
|
|
55
|
+
return this.get(`/v1/admin/mcps/${this.encodePathSegments(memoryId)}`);
|
|
56
|
+
}
|
|
57
|
+
// ── Path encoding for capability IDs ───────────────────────────
|
|
58
|
+
// Capability IDs may contain slashes (e.g. "org/repo/skill-name").
|
|
59
|
+
// We encode each segment individually while preserving slashes so
|
|
60
|
+
// FastAPI's {memory_id:path} or multi-segment routing works correctly.
|
|
61
|
+
encodePathSegments(id) {
|
|
62
|
+
return id.split("/").map(encodeURIComponent).join("/");
|
|
63
|
+
}
|
|
64
|
+
// ── Shared headers ──────────────────────────────────────────────
|
|
65
|
+
buildHeaders(contentType) {
|
|
66
|
+
const headers = {};
|
|
67
|
+
if (contentType) {
|
|
68
|
+
headers["Content-Type"] = contentType;
|
|
69
|
+
}
|
|
70
|
+
if (this.apiKey) {
|
|
71
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
72
|
+
}
|
|
73
|
+
return headers;
|
|
74
|
+
}
|
|
75
|
+
// ── HTTP helpers with retry ─────────────────────────────────────
|
|
76
|
+
async post(path, body) {
|
|
77
|
+
return this.requestWithRetry(async (signal) => {
|
|
78
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: this.buildHeaders("application/json"),
|
|
81
|
+
body: JSON.stringify(body),
|
|
82
|
+
signal,
|
|
83
|
+
});
|
|
84
|
+
return this.handleResponse(response);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async get(path) {
|
|
88
|
+
return this.requestWithRetry(async (signal) => {
|
|
89
|
+
const response = await fetch(`${this.baseUrl}${path}`, {
|
|
90
|
+
headers: this.buildHeaders(),
|
|
91
|
+
signal,
|
|
92
|
+
});
|
|
93
|
+
return this.handleResponse(response);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
async handleResponse(response) {
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
const errorBody = await response.text().catch(() => "");
|
|
99
|
+
const message = errorBody || response.statusText;
|
|
100
|
+
const err = new Error(`REST API error (${response.status}): ${message}`);
|
|
101
|
+
err.statusCode = response.status;
|
|
102
|
+
err.body = errorBody;
|
|
103
|
+
throw err;
|
|
104
|
+
}
|
|
105
|
+
return (await response.json());
|
|
106
|
+
}
|
|
107
|
+
async requestWithRetry(fn, retries = 1) {
|
|
108
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
109
|
+
const controller = new AbortController();
|
|
110
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
111
|
+
try {
|
|
112
|
+
const result = await fn(controller.signal);
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
const isLastAttempt = attempt === retries;
|
|
117
|
+
const isRetryable = this.isRetryableError(error);
|
|
118
|
+
if (isLastAttempt || !isRetryable) {
|
|
119
|
+
throw this.normalizeError(error);
|
|
120
|
+
}
|
|
121
|
+
// Exponential backoff: 500ms, 1000ms, ...
|
|
122
|
+
const delay = 500 * Math.pow(2, attempt);
|
|
123
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
clearTimeout(timeoutId);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Unreachable but TypeScript needs it
|
|
130
|
+
throw new Error("Request failed after retries");
|
|
131
|
+
}
|
|
132
|
+
isRetryableError(error) {
|
|
133
|
+
if (error instanceof DOMException && error.name === "AbortError")
|
|
134
|
+
return true;
|
|
135
|
+
if (error instanceof TypeError && error.message.includes("fetch"))
|
|
136
|
+
return true;
|
|
137
|
+
const statusCode = error.statusCode;
|
|
138
|
+
return statusCode !== undefined && statusCode >= 500;
|
|
139
|
+
}
|
|
140
|
+
normalizeError(error) {
|
|
141
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
142
|
+
return new Error(`Request timed out after ${this.timeout}ms. Is HiveMind API running at ${this.baseUrl}?`);
|
|
143
|
+
}
|
|
144
|
+
if (error instanceof TypeError && error.message.includes("fetch")) {
|
|
145
|
+
return new Error(`Cannot connect to HiveMind API at ${this.baseUrl}. Is the server running?`);
|
|
146
|
+
}
|
|
147
|
+
if (error instanceof Error)
|
|
148
|
+
return error;
|
|
149
|
+
return new Error(String(error));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** Singleton REST client instance */
|
|
153
|
+
export const restClient = new HiveMindRestClient();
|
|
154
|
+
//# sourceMappingURL=restClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restClient.js","sourceRoot":"","sources":["../../src/client/restClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind REST API — TypeScript interfaces
|
|
3
|
+
*
|
|
4
|
+
* These match the response schemas defined in endpoints.md.
|
|
5
|
+
* The MCP server consumes these types; it never defines business logic.
|
|
6
|
+
*/
|
|
7
|
+
export interface HealthStatus {
|
|
8
|
+
status: "ok" | "degraded";
|
|
9
|
+
version: string;
|
|
10
|
+
graph_connected: boolean;
|
|
11
|
+
redis_connected: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface QueryParams {
|
|
14
|
+
query: string;
|
|
15
|
+
top_k?: number;
|
|
16
|
+
include_episodes?: boolean;
|
|
17
|
+
include_warnings?: boolean;
|
|
18
|
+
include_disputed?: boolean;
|
|
19
|
+
context?: string;
|
|
20
|
+
agent_id?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface QueryMemory {
|
|
23
|
+
id: string;
|
|
24
|
+
text: string;
|
|
25
|
+
title: string;
|
|
26
|
+
type: "instruction" | "mistake" | "update" | "note";
|
|
27
|
+
status: "active" | "archived" | "disputed" | "superseded";
|
|
28
|
+
score: number;
|
|
29
|
+
corroboration_count?: number;
|
|
30
|
+
contradiction_count?: number;
|
|
31
|
+
times_retrieved?: number;
|
|
32
|
+
has_skill?: boolean;
|
|
33
|
+
has_mcp?: boolean;
|
|
34
|
+
skill_meta?: SkillCapabilityMeta;
|
|
35
|
+
mcp_meta?: McpCapabilityMeta;
|
|
36
|
+
}
|
|
37
|
+
/** Metadata about a skill capability included in query results. */
|
|
38
|
+
export interface SkillCapabilityMeta {
|
|
39
|
+
name: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
script_count?: number;
|
|
42
|
+
reference_count?: number;
|
|
43
|
+
asset_count?: number;
|
|
44
|
+
mcp_count?: number;
|
|
45
|
+
mcp_names?: string[];
|
|
46
|
+
usage_count?: number;
|
|
47
|
+
success_rate?: number;
|
|
48
|
+
}
|
|
49
|
+
/** Metadata about an MCP capability included in query results. */
|
|
50
|
+
export interface McpCapabilityMeta {
|
|
51
|
+
name: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
tools_hint?: string[];
|
|
54
|
+
usage_count?: number;
|
|
55
|
+
success_rate?: number;
|
|
56
|
+
}
|
|
57
|
+
export interface QueryEpisode {
|
|
58
|
+
id: string;
|
|
59
|
+
memories: QueryMemory[];
|
|
60
|
+
topic: string;
|
|
61
|
+
}
|
|
62
|
+
export interface QueryWarning {
|
|
63
|
+
id: string;
|
|
64
|
+
text: string;
|
|
65
|
+
title: string;
|
|
66
|
+
type: string;
|
|
67
|
+
confidence: number;
|
|
68
|
+
contradicts_memory_id?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface DisputedPair {
|
|
71
|
+
memory_a: QueryMemory;
|
|
72
|
+
memory_b: QueryMemory;
|
|
73
|
+
dispute_type: string;
|
|
74
|
+
}
|
|
75
|
+
export interface QueryResult {
|
|
76
|
+
query_id: string;
|
|
77
|
+
recommendations: QueryMemory[];
|
|
78
|
+
episodes?: QueryEpisode[];
|
|
79
|
+
warnings?: QueryWarning[];
|
|
80
|
+
disputed_pairs?: DisputedPair[];
|
|
81
|
+
total_results: number;
|
|
82
|
+
}
|
|
83
|
+
export interface WriteParams {
|
|
84
|
+
text: string;
|
|
85
|
+
title: string;
|
|
86
|
+
type: "instruction" | "mistake" | "update";
|
|
87
|
+
agent_id: string;
|
|
88
|
+
query_id?: string;
|
|
89
|
+
supersedes_id?: string;
|
|
90
|
+
action?: "new" | "update";
|
|
91
|
+
model?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface WriteResult {
|
|
94
|
+
memory_id: string;
|
|
95
|
+
entities_created: number;
|
|
96
|
+
entities_merged: number;
|
|
97
|
+
relations_created: number;
|
|
98
|
+
causal_relations: number;
|
|
99
|
+
next_edge_created: boolean;
|
|
100
|
+
provenance_steps: number;
|
|
101
|
+
fingerprint_computed: boolean;
|
|
102
|
+
query_id_linked: string | null;
|
|
103
|
+
supersedes_id_linked: string | null;
|
|
104
|
+
action_performed: "created" | "updated" | "superseded";
|
|
105
|
+
corroborations_created: number;
|
|
106
|
+
contradictions_created: number;
|
|
107
|
+
}
|
|
108
|
+
export interface DuplicateError {
|
|
109
|
+
error: "duplicate_memory";
|
|
110
|
+
duplicate_of: string;
|
|
111
|
+
jaccard_similarity: number;
|
|
112
|
+
}
|
|
113
|
+
export interface MemoryDetail {
|
|
114
|
+
id: string;
|
|
115
|
+
text: string;
|
|
116
|
+
title: string;
|
|
117
|
+
type: "instruction" | "mistake" | "update" | "note";
|
|
118
|
+
status: "active" | "archived" | "disputed" | "superseded";
|
|
119
|
+
agent_id: string;
|
|
120
|
+
created_at: string;
|
|
121
|
+
updated_at: string;
|
|
122
|
+
corroboration_count: number;
|
|
123
|
+
contradiction_count: number;
|
|
124
|
+
superseded_count: number;
|
|
125
|
+
times_retrieved: number;
|
|
126
|
+
version_count: number;
|
|
127
|
+
version_history: unknown[];
|
|
128
|
+
version_hash: string;
|
|
129
|
+
responding_to_query: string | null;
|
|
130
|
+
source: string;
|
|
131
|
+
archived_at: string | null;
|
|
132
|
+
restore_count: number;
|
|
133
|
+
}
|
|
134
|
+
export interface MemoryListParams {
|
|
135
|
+
status_filter?: string;
|
|
136
|
+
type_filter?: string;
|
|
137
|
+
agent_id?: string;
|
|
138
|
+
limit?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface MemoryListItem {
|
|
141
|
+
id: string;
|
|
142
|
+
text: string;
|
|
143
|
+
title: string;
|
|
144
|
+
type: string;
|
|
145
|
+
status: string;
|
|
146
|
+
agent_id: string;
|
|
147
|
+
created_at: string;
|
|
148
|
+
updated_at: string;
|
|
149
|
+
corroboration_count: number;
|
|
150
|
+
contradiction_count: number;
|
|
151
|
+
superseded_count: number;
|
|
152
|
+
times_retrieved: number;
|
|
153
|
+
version_count: number;
|
|
154
|
+
source: string;
|
|
155
|
+
}
|
|
156
|
+
export interface MemoryListResult {
|
|
157
|
+
memories: MemoryListItem[];
|
|
158
|
+
count: number;
|
|
159
|
+
total: number;
|
|
160
|
+
}
|
|
161
|
+
export interface SkillPayload {
|
|
162
|
+
name: string;
|
|
163
|
+
description: string;
|
|
164
|
+
skill_md: string;
|
|
165
|
+
scripts: Record<string, string>;
|
|
166
|
+
references: Record<string, string>;
|
|
167
|
+
assets: Record<string, string>;
|
|
168
|
+
mcp_configs: McpConfig[];
|
|
169
|
+
compatibility?: Record<string, unknown>;
|
|
170
|
+
license?: string;
|
|
171
|
+
metadata?: Record<string, unknown>;
|
|
172
|
+
}
|
|
173
|
+
export interface McpConfig {
|
|
174
|
+
name: string;
|
|
175
|
+
description: string;
|
|
176
|
+
command: string;
|
|
177
|
+
args: string[];
|
|
178
|
+
env: Record<string, string>;
|
|
179
|
+
}
|
|
180
|
+
export interface McpPayload {
|
|
181
|
+
name: string;
|
|
182
|
+
description: string;
|
|
183
|
+
command: string;
|
|
184
|
+
args: string[];
|
|
185
|
+
env: Record<string, string>;
|
|
186
|
+
tools_hint: string[];
|
|
187
|
+
prompts?: McpPromptHint[];
|
|
188
|
+
compatibility?: Record<string, unknown>;
|
|
189
|
+
metadata?: Record<string, unknown>;
|
|
190
|
+
}
|
|
191
|
+
export interface McpPromptHint {
|
|
192
|
+
name: string;
|
|
193
|
+
description: string;
|
|
194
|
+
arguments?: {
|
|
195
|
+
name: string;
|
|
196
|
+
required: boolean;
|
|
197
|
+
}[];
|
|
198
|
+
}
|
|
199
|
+
export interface ActivationResponse {
|
|
200
|
+
ok: boolean;
|
|
201
|
+
capability_type: "skill" | "mcp";
|
|
202
|
+
name: string;
|
|
203
|
+
skill_payload: SkillPayload | null;
|
|
204
|
+
mcp_payload: McpPayload | null;
|
|
205
|
+
}
|
|
206
|
+
export interface CapabilityReportParams {
|
|
207
|
+
agent_id: string;
|
|
208
|
+
success: boolean;
|
|
209
|
+
}
|
|
210
|
+
export interface AdminCapabilityReadResponse {
|
|
211
|
+
id: string;
|
|
212
|
+
name: string;
|
|
213
|
+
description: string;
|
|
214
|
+
capability_type: "skill" | "mcp";
|
|
215
|
+
skill_payload: SkillPayload | null;
|
|
216
|
+
mcp_payload: McpPayload | null;
|
|
217
|
+
created_at: string;
|
|
218
|
+
updated_at: string;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind MCP Server — Configuration
|
|
3
|
+
*
|
|
4
|
+
* Environment-based configuration for the REST API connection,
|
|
5
|
+
* authentication, timeouts, transport selection, and capability limits.
|
|
6
|
+
*/
|
|
7
|
+
export interface HiveMindConfig {
|
|
8
|
+
/** Base URL of the HiveMind REST API */
|
|
9
|
+
apiUrl: string;
|
|
10
|
+
/** Bearer token for REST API authentication (optional for local dev) */
|
|
11
|
+
apiKey: string | undefined;
|
|
12
|
+
/** Request timeout in milliseconds */
|
|
13
|
+
timeout: number;
|
|
14
|
+
/** Default agent ID (can be overridden per-call) */
|
|
15
|
+
defaultAgentId: string;
|
|
16
|
+
/** Transport mode: "stdio" or "http" */
|
|
17
|
+
transport: "stdio" | "http";
|
|
18
|
+
/** HTTP port (only used when transport is "http") */
|
|
19
|
+
httpPort: number;
|
|
20
|
+
/** Maximum number of active skills at any time */
|
|
21
|
+
maxActiveSkills: number;
|
|
22
|
+
/** Maximum number of standalone (non-skill-bundled) child MCPs */
|
|
23
|
+
maxStandaloneMcps: number;
|
|
24
|
+
/** Maximum total child MCP processes (standalone + skill-bundled) */
|
|
25
|
+
maxChildProcesses: number;
|
|
26
|
+
/** Maximum bundled MCPs per skill */
|
|
27
|
+
maxBundledMcps: number;
|
|
28
|
+
/** Script execution timeout in milliseconds */
|
|
29
|
+
scriptTimeout: number;
|
|
30
|
+
/** Health check interval for child MCPs in milliseconds */
|
|
31
|
+
childHealthInterval: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function loadConfig(): HiveMindConfig;
|
|
34
|
+
/** Singleton config instance */
|
|
35
|
+
export declare const config: HiveMindConfig;
|
|
36
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,cAAc;IAC3B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IAIjB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,UAAU,IAAI,cAAc,CAoB3C;AAED,gCAAgC;AAChC,eAAO,MAAM,MAAM,gBAAe,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind MCP Server — Configuration
|
|
3
|
+
*
|
|
4
|
+
* Environment-based configuration for the REST API connection,
|
|
5
|
+
* authentication, timeouts, transport selection, and capability limits.
|
|
6
|
+
*/
|
|
7
|
+
export function loadConfig() {
|
|
8
|
+
const transportArg = process.argv.find((a) => a.startsWith("--transport="));
|
|
9
|
+
const portArg = process.argv.find((a) => a.startsWith("--port="));
|
|
10
|
+
return {
|
|
11
|
+
apiUrl: process.env.HIVEMIND_API_URL ?? "http://localhost:8000",
|
|
12
|
+
apiKey: process.env.HIVEMIND_API_KEY,
|
|
13
|
+
timeout: parseInt(process.env.HIVEMIND_TIMEOUT ?? "30000", 10),
|
|
14
|
+
defaultAgentId: process.env.HIVEMIND_AGENT_ID ?? "mcp-anonymous",
|
|
15
|
+
transport: transportArg?.split("=")[1] ?? "stdio",
|
|
16
|
+
httpPort: parseInt(portArg?.split("=")[1] ?? process.env.PORT ?? "3001", 10),
|
|
17
|
+
// Capability limits (configurable via env vars)
|
|
18
|
+
maxActiveSkills: parseInt(process.env.HIVEMIND_MAX_SKILLS ?? "5", 10),
|
|
19
|
+
maxStandaloneMcps: parseInt(process.env.HIVEMIND_MAX_STANDALONE_MCPS ?? "5", 10),
|
|
20
|
+
maxChildProcesses: parseInt(process.env.HIVEMIND_MAX_CHILD_PROCESSES ?? "10", 10),
|
|
21
|
+
maxBundledMcps: parseInt(process.env.HIVEMIND_MAX_BUNDLED_MCPS ?? "3", 10),
|
|
22
|
+
scriptTimeout: parseInt(process.env.HIVEMIND_SCRIPT_TIMEOUT ?? "30000", 10),
|
|
23
|
+
childHealthInterval: parseInt(process.env.HIVEMIND_HEALTH_INTERVAL ?? "30000", 10),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Singleton config instance */
|
|
27
|
+
export const config = loadConfig();
|
|
28
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH,MAAM,UAAU,UAAU;IACtB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAElE,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,uBAAuB;QAC/D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QACpC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,EAAE,EAAE,CAAC;QAC9D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,eAAe;QAChE,SAAS,EAAG,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAsB,IAAI,OAAO;QACvE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;QAE5E,gDAAgD;QAChD,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,EAAE,EAAE,CAAC;QACrE,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,GAAG,EAAE,EAAE,CAAC;QAChF,iBAAiB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,IAAI,EAAE,EAAE,CAAC;QACjF,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,GAAG,EAAE,EAAE,CAAC;QAC1E,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,EAAE,EAAE,CAAC;QAC3E,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,EAAE,EAAE,CAAC;KACrF,CAAC;AACN,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inspect Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats GET /v1/memories/{id} response as clean Markdown
|
|
5
|
+
* optimized for LLM parsing.
|
|
6
|
+
*
|
|
7
|
+
* Design: structured sections with clear key:value pairs
|
|
8
|
+
* for reliable extraction. Uses markdown semantics that
|
|
9
|
+
* every LLM understands natively.
|
|
10
|
+
*/
|
|
11
|
+
import type { MemoryDetail } from "../client/types.js";
|
|
12
|
+
export declare function formatInspectResult(mem: MemoryDetail): string;
|
|
13
|
+
//# sourceMappingURL=inspectFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectFormatter.d.ts","sourceRoot":"","sources":["../../src/formatters/inspectFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA8C7D"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inspect Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats GET /v1/memories/{id} response as clean Markdown
|
|
5
|
+
* optimized for LLM parsing.
|
|
6
|
+
*
|
|
7
|
+
* Design: structured sections with clear key:value pairs
|
|
8
|
+
* for reliable extraction. Uses markdown semantics that
|
|
9
|
+
* every LLM understands natively.
|
|
10
|
+
*/
|
|
11
|
+
export function formatInspectResult(mem) {
|
|
12
|
+
const lines = [];
|
|
13
|
+
lines.push(`# Memory: ${mem.title}\n`);
|
|
14
|
+
// Identity
|
|
15
|
+
lines.push("## Overview\n");
|
|
16
|
+
lines.push(`- **id**: \`${mem.id}\``);
|
|
17
|
+
lines.push(`- **type**: ${mem.type}`);
|
|
18
|
+
lines.push(`- **status**: ${formatStatus(mem.status)}`);
|
|
19
|
+
lines.push(`- **agent**: \`${mem.agent_id}\``);
|
|
20
|
+
lines.push(`- **source**: ${mem.source}`);
|
|
21
|
+
// Full text
|
|
22
|
+
lines.push(`\n## Content\n`);
|
|
23
|
+
lines.push(`${mem.text}`);
|
|
24
|
+
// Evolution metrics — the core data agents need
|
|
25
|
+
lines.push(`\n## Evolution\n`);
|
|
26
|
+
lines.push(`| Metric | Value |`);
|
|
27
|
+
lines.push(`|--------|-------|`);
|
|
28
|
+
lines.push(`| Corroborations | ${mem.corroboration_count} |`);
|
|
29
|
+
lines.push(`| Contradictions | ${mem.contradiction_count} |`);
|
|
30
|
+
lines.push(`| Superseded by | ${mem.superseded_count} |`);
|
|
31
|
+
lines.push(`| Times retrieved | ${mem.times_retrieved} |`);
|
|
32
|
+
lines.push(`| Version | ${mem.version_count} |`);
|
|
33
|
+
lines.push(`| Version hash | \`${mem.version_hash}\` |`);
|
|
34
|
+
if (mem.restore_count > 0) {
|
|
35
|
+
lines.push(`| Restore count | ${mem.restore_count} |`);
|
|
36
|
+
}
|
|
37
|
+
// Timeline
|
|
38
|
+
lines.push(`\n## Timeline\n`);
|
|
39
|
+
lines.push(`- **created**: ${formatDate(mem.created_at)}`);
|
|
40
|
+
lines.push(`- **updated**: ${formatDate(mem.updated_at)}`);
|
|
41
|
+
if (mem.archived_at) {
|
|
42
|
+
lines.push(`- **archived**: ${formatDate(mem.archived_at)}`);
|
|
43
|
+
}
|
|
44
|
+
// Linkage
|
|
45
|
+
if (mem.responding_to_query) {
|
|
46
|
+
lines.push(`\n## Linkage\n`);
|
|
47
|
+
lines.push(`- **responding_to_query**: \`${mem.responding_to_query}\``);
|
|
48
|
+
}
|
|
49
|
+
return lines.join("\n");
|
|
50
|
+
}
|
|
51
|
+
function formatStatus(status) {
|
|
52
|
+
const labels = {
|
|
53
|
+
active: "🟢 active",
|
|
54
|
+
archived: "archived",
|
|
55
|
+
disputed: "⚠️ disputed",
|
|
56
|
+
superseded: "superseded",
|
|
57
|
+
};
|
|
58
|
+
return labels[status] ?? status;
|
|
59
|
+
}
|
|
60
|
+
function formatDate(iso) {
|
|
61
|
+
try {
|
|
62
|
+
return new Date(iso).toISOString();
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return iso;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=inspectFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspectFormatter.js","sourceRoot":"","sources":["../../src/formatters/inspectFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Result Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats /v1/query results as clean Markdown optimized for LLM parsing.
|
|
5
|
+
*
|
|
6
|
+
* Design principles:
|
|
7
|
+
* - Markdown for universal LLM readability
|
|
8
|
+
* - Minimal decoration, maximum information density
|
|
9
|
+
* - Clear key:value pairs for reliable extraction
|
|
10
|
+
* - Token-efficient: no box-drawing chars, no emoji spam
|
|
11
|
+
*
|
|
12
|
+
* Skills and MCPs are separated from regular recommendations into
|
|
13
|
+
* dedicated "Recommended Skills" / "Recommended MCPs" sections that
|
|
14
|
+
* display only the description, resources, and activation ID.
|
|
15
|
+
*/
|
|
16
|
+
import type { QueryResult } from "../client/types.js";
|
|
17
|
+
export declare function formatQueryResult(result: QueryResult): string;
|
|
18
|
+
//# sourceMappingURL=queryFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryFormatter.d.ts","sourceRoot":"","sources":["../../src/formatters/queryFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAA2C,MAAM,oBAAoB,CAAC;AAmB/F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA8E7D"}
|