@davidjinguoxu/agentcore 0.4.1
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 +198 -0
- package/config/default-triggers.json +119 -0
- package/dist/adapters/runtime-adapter.d.ts +124 -0
- package/dist/adapters/runtime-adapter.d.ts.map +1 -0
- package/dist/adapters/runtime-adapter.js +5 -0
- package/dist/adapters/runtime-adapter.js.map +1 -0
- package/dist/config/datacore-constants.d.ts +21 -0
- package/dist/config/datacore-constants.d.ts.map +1 -0
- package/dist/config/datacore-constants.js +68 -0
- package/dist/config/datacore-constants.js.map +1 -0
- package/dist/domain/embeddable.d.ts +19 -0
- package/dist/domain/embeddable.d.ts.map +1 -0
- package/dist/domain/embeddable.js +106 -0
- package/dist/domain/embeddable.js.map +1 -0
- package/dist/domain/gold-store.d.ts +11 -0
- package/dist/domain/gold-store.d.ts.map +1 -0
- package/dist/domain/gold-store.js +210 -0
- package/dist/domain/gold-store.js.map +1 -0
- package/dist/domain/inbox.d.ts +14 -0
- package/dist/domain/inbox.d.ts.map +1 -0
- package/dist/domain/inbox.js +138 -0
- package/dist/domain/inbox.js.map +1 -0
- package/dist/domain/office-status.d.ts +31 -0
- package/dist/domain/office-status.d.ts.map +1 -0
- package/dist/domain/office-status.js +138 -0
- package/dist/domain/office-status.js.map +1 -0
- package/dist/domain/questions.d.ts +3 -0
- package/dist/domain/questions.d.ts.map +1 -0
- package/dist/domain/questions.js +60 -0
- package/dist/domain/questions.js.map +1 -0
- package/dist/domain/run-manager.d.ts +14 -0
- package/dist/domain/run-manager.d.ts.map +1 -0
- package/dist/domain/run-manager.js +25 -0
- package/dist/domain/run-manager.js.map +1 -0
- package/dist/domain/task-event-index.d.ts +31 -0
- package/dist/domain/task-event-index.d.ts.map +1 -0
- package/dist/domain/task-event-index.js +117 -0
- package/dist/domain/task-event-index.js.map +1 -0
- package/dist/domain/tasks.d.ts +3 -0
- package/dist/domain/tasks.d.ts.map +1 -0
- package/dist/domain/tasks.js +112 -0
- package/dist/domain/tasks.js.map +1 -0
- package/dist/domain/warm-start-builders.d.ts +18 -0
- package/dist/domain/warm-start-builders.d.ts.map +1 -0
- package/dist/domain/warm-start-builders.js +157 -0
- package/dist/domain/warm-start-builders.js.map +1 -0
- package/dist/domain/warm-start-extractors.d.ts +37 -0
- package/dist/domain/warm-start-extractors.d.ts.map +1 -0
- package/dist/domain/warm-start-extractors.js +372 -0
- package/dist/domain/warm-start-extractors.js.map +1 -0
- package/dist/domain/warm-start.d.ts +17 -0
- package/dist/domain/warm-start.d.ts.map +1 -0
- package/dist/domain/warm-start.js +225 -0
- package/dist/domain/warm-start.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-slim-ack.d.ts +12 -0
- package/dist/mcp-slim-ack.d.ts.map +1 -0
- package/dist/mcp-slim-ack.js +16 -0
- package/dist/mcp-slim-ack.js.map +1 -0
- package/dist/routing/capability-registry.d.ts +38 -0
- package/dist/routing/capability-registry.d.ts.map +1 -0
- package/dist/routing/capability-registry.js +52 -0
- package/dist/routing/capability-registry.js.map +1 -0
- package/dist/routing/runtime-target-resolver.d.ts +42 -0
- package/dist/routing/runtime-target-resolver.d.ts.map +1 -0
- package/dist/routing/runtime-target-resolver.js +139 -0
- package/dist/routing/runtime-target-resolver.js.map +1 -0
- package/dist/search/azure-search-client.d.ts +53 -0
- package/dist/search/azure-search-client.d.ts.map +1 -0
- package/dist/search/azure-search-client.js +191 -0
- package/dist/search/azure-search-client.js.map +1 -0
- package/dist/search/circuit-breaker.d.ts +46 -0
- package/dist/search/circuit-breaker.d.ts.map +1 -0
- package/dist/search/circuit-breaker.js +87 -0
- package/dist/search/circuit-breaker.js.map +1 -0
- package/dist/search/deep-search.d.ts +24 -0
- package/dist/search/deep-search.d.ts.map +1 -0
- package/dist/search/deep-search.js +98 -0
- package/dist/search/deep-search.js.map +1 -0
- package/dist/search/search.d.ts +3 -0
- package/dist/search/search.d.ts.map +1 -0
- package/dist/search/search.js +76 -0
- package/dist/search/search.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +39 -0
- package/dist/server.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/knowledge.d.ts +3 -0
- package/dist/skills/knowledge.d.ts.map +1 -0
- package/dist/skills/knowledge.js +78 -0
- package/dist/skills/knowledge.js.map +1 -0
- package/dist/skills/task-workflow.d.ts +3 -0
- package/dist/skills/task-workflow.d.ts.map +1 -0
- package/dist/skills/task-workflow.js +205 -0
- package/dist/skills/task-workflow.js.map +1 -0
- package/dist/storage/active-backend.d.ts +4 -0
- package/dist/storage/active-backend.d.ts.map +1 -0
- package/dist/storage/active-backend.js +12 -0
- package/dist/storage/active-backend.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +5 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/cosmos-client.d.ts +6 -0
- package/dist/storage/cosmos-client.d.ts.map +1 -0
- package/dist/storage/cosmos-client.js +38 -0
- package/dist/storage/cosmos-client.js.map +1 -0
- package/dist/storage/lancedb-backend.d.ts +13 -0
- package/dist/storage/lancedb-backend.d.ts.map +1 -0
- package/dist/storage/lancedb-backend.js +373 -0
- package/dist/storage/lancedb-backend.js.map +1 -0
- package/dist/storage/store.d.ts +8 -0
- package/dist/storage/store.d.ts.map +1 -0
- package/dist/storage/store.js +294 -0
- package/dist/storage/store.js.map +1 -0
- package/dist/storage/task-compaction.d.ts +12 -0
- package/dist/storage/task-compaction.d.ts.map +1 -0
- package/dist/storage/task-compaction.js +112 -0
- package/dist/storage/task-compaction.js.map +1 -0
- package/dist/storage/task-context-snapshot.d.ts +6 -0
- package/dist/storage/task-context-snapshot.d.ts.map +1 -0
- package/dist/storage/task-context-snapshot.js +87 -0
- package/dist/storage/task-context-snapshot.js.map +1 -0
- package/dist/storage/trigger-engine.d.ts +39 -0
- package/dist/storage/trigger-engine.d.ts.map +1 -0
- package/dist/storage/trigger-engine.js +212 -0
- package/dist/storage/trigger-engine.js.map +1 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +413 -0
- package/dist/tools.js.map +1 -0
- package/dist/transport/client.d.ts +68 -0
- package/dist/transport/client.d.ts.map +1 -0
- package/dist/transport/client.js +210 -0
- package/dist/transport/client.js.map +1 -0
- package/dist/transport/http-server.d.ts +3 -0
- package/dist/transport/http-server.d.ts.map +1 -0
- package/dist/transport/http-server.js +337 -0
- package/dist/transport/http-server.js.map +1 -0
- package/dist/types.d.ts +185 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +71 -0
- package/scripts/run-server.mjs +3 -0
- package/scripts/stdio-only.mjs +23 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
// http-server.ts — How does the HTTP API work?
|
|
2
|
+
// Runs alongside MCP stdio. Same process, same database, two transports.
|
|
3
|
+
// Uses Node's built-in http module — no express/fastify.
|
|
4
|
+
// Domain logic lives in server/src/domain/ — this file is thin routing only.
|
|
5
|
+
import http from "node:http";
|
|
6
|
+
import crypto from "node:crypto";
|
|
7
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
9
|
+
import { appendEvent } from "../storage/store.js";
|
|
10
|
+
import { searchEvents } from "../search/search.js";
|
|
11
|
+
import { getTasks } from "../domain/tasks.js";
|
|
12
|
+
import { queryEntities, upsertEntity, getLinkedEntities, } from "../domain/gold-store.js";
|
|
13
|
+
import { getQuestions } from "../domain/questions.js";
|
|
14
|
+
import { deepSearch } from "../search/deep-search.js";
|
|
15
|
+
import { buildInbox } from "../domain/inbox.js";
|
|
16
|
+
import { buildStatus } from "../domain/office-status.js";
|
|
17
|
+
import { buildWarmStartPreamble } from "../domain/warm-start.js";
|
|
18
|
+
import { isCosmosEnabled, pingCosmos } from "../storage/cosmos-client.js";
|
|
19
|
+
import { registerTools } from "../tools.js";
|
|
20
|
+
import { getApiKey, getHttpPort, getMcpServerPackageVersion, } from "../config/datacore-constants.js";
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
const API_KEY_HEADER = "x-api-key";
|
|
23
|
+
const NO_AUTH_PATHS = new Set(["/health", "/ready"]);
|
|
24
|
+
const sessions = new Map();
|
|
25
|
+
function resolveApiKey() {
|
|
26
|
+
const key = process.env["MCP_API_KEY"];
|
|
27
|
+
if (key)
|
|
28
|
+
return key;
|
|
29
|
+
if (process.env["NODE_ENV"] === "production") {
|
|
30
|
+
throw new Error("MCP_API_KEY must be set in production — refusing to start with no auth.");
|
|
31
|
+
}
|
|
32
|
+
// eslint-disable-next-line no-console -- intentional dev-only startup warning
|
|
33
|
+
console.warn("[WARN] MCP_API_KEY not set — using insecure dev-only fallback. Do not run this configuration in production.");
|
|
34
|
+
return getApiKey();
|
|
35
|
+
}
|
|
36
|
+
const resolvedApiKey = resolveApiKey();
|
|
37
|
+
function readHeader(req, name) {
|
|
38
|
+
const value = req.headers[name];
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return value[0];
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function authorize(req, res, skip) {
|
|
44
|
+
if (skip)
|
|
45
|
+
return true;
|
|
46
|
+
const header = readHeader(req, API_KEY_HEADER);
|
|
47
|
+
if (!header) {
|
|
48
|
+
err(res, 401, "UNAUTHORIZED", `Missing ${API_KEY_HEADER} header`);
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
if (header !== resolvedApiKey) {
|
|
52
|
+
err(res, 401, "UNAUTHORIZED", "Invalid API key");
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
function createMcpServer() {
|
|
58
|
+
const server = new McpServer({
|
|
59
|
+
name: "datacore",
|
|
60
|
+
version: getMcpServerPackageVersion(),
|
|
61
|
+
});
|
|
62
|
+
registerTools(server);
|
|
63
|
+
return server;
|
|
64
|
+
}
|
|
65
|
+
async function handleNewSession(req, res) {
|
|
66
|
+
const transport = new StreamableHTTPServerTransport({
|
|
67
|
+
sessionIdGenerator: () => crypto.randomUUID(),
|
|
68
|
+
});
|
|
69
|
+
const server = createMcpServer();
|
|
70
|
+
transport.onclose = () => {
|
|
71
|
+
const sid = transport.sessionId;
|
|
72
|
+
if (sid)
|
|
73
|
+
sessions.delete(sid);
|
|
74
|
+
server
|
|
75
|
+
.close()
|
|
76
|
+
.catch((error) => process.stderr.write(`[streamable] Failed to close MCP server: ${String(error)}\n`));
|
|
77
|
+
};
|
|
78
|
+
await server.connect(transport);
|
|
79
|
+
await transport.handleRequest(req, res);
|
|
80
|
+
const sid = transport.sessionId;
|
|
81
|
+
if (sid && !sessions.has(sid)) {
|
|
82
|
+
sessions.set(sid, transport);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function handleStreamableRequest(req, res) {
|
|
86
|
+
const sessionId = readHeader(req, "mcp-session-id");
|
|
87
|
+
if (sessionId) {
|
|
88
|
+
const existing = sessions.get(sessionId);
|
|
89
|
+
if (existing) {
|
|
90
|
+
await existing.handleRequest(req, res);
|
|
91
|
+
if (req.method?.toUpperCase() === "DELETE") {
|
|
92
|
+
sessions.delete(sessionId);
|
|
93
|
+
}
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
await handleNewSession(req, res);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error("[streamable] Failed to create session:", error); // eslint-disable-line no-console
|
|
102
|
+
err(res, 500, "SESSION_ERROR", "Failed to create MCP session");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function parseBody(req) {
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
const chunks = [];
|
|
108
|
+
req.on("data", (chunk) => chunks.push(chunk));
|
|
109
|
+
req.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
|
|
110
|
+
req.on("error", reject);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function json(res, status, data) {
|
|
114
|
+
const body = JSON.stringify(data);
|
|
115
|
+
res.writeHead(status, {
|
|
116
|
+
"Content-Type": "application/json",
|
|
117
|
+
"Content-Length": Buffer.byteLength(body),
|
|
118
|
+
"Access-Control-Allow-Origin": "*",
|
|
119
|
+
});
|
|
120
|
+
res.end(body);
|
|
121
|
+
}
|
|
122
|
+
function err(res, status, code, message, extra) {
|
|
123
|
+
json(res, status, { error: message, code, ...extra });
|
|
124
|
+
}
|
|
125
|
+
async function parseJsonBody(req) {
|
|
126
|
+
const raw = await parseBody(req);
|
|
127
|
+
try {
|
|
128
|
+
return { ok: true, data: JSON.parse(raw) };
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return { ok: false, message: "Invalid JSON body" };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function parseQuery(url) {
|
|
135
|
+
const idx = url.indexOf("?");
|
|
136
|
+
if (idx < 0)
|
|
137
|
+
return {};
|
|
138
|
+
const params = {};
|
|
139
|
+
const search = url.slice(idx + 1);
|
|
140
|
+
for (const pair of search.split("&")) {
|
|
141
|
+
const [k, v] = pair.split("=");
|
|
142
|
+
if (k)
|
|
143
|
+
params[decodeURIComponent(k)] = decodeURIComponent(v ?? "");
|
|
144
|
+
}
|
|
145
|
+
return params;
|
|
146
|
+
}
|
|
147
|
+
function pathname(url) {
|
|
148
|
+
const idx = url.indexOf("?");
|
|
149
|
+
return idx < 0 ? url : url.slice(0, idx);
|
|
150
|
+
}
|
|
151
|
+
async function handleRequest(req, res) {
|
|
152
|
+
const method = req.method ?? "GET";
|
|
153
|
+
const path = pathname(req.url ?? "/");
|
|
154
|
+
const query = parseQuery(req.url ?? "/");
|
|
155
|
+
try {
|
|
156
|
+
if (method === "OPTIONS") {
|
|
157
|
+
res.writeHead(204, {
|
|
158
|
+
"Access-Control-Allow-Origin": "*",
|
|
159
|
+
"Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
|
|
160
|
+
"Access-Control-Allow-Headers": "Content-Type, x-api-key, mcp-session-id",
|
|
161
|
+
});
|
|
162
|
+
res.end();
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (path === "/health" && method === "GET") {
|
|
166
|
+
const uptimeSeconds = Math.floor((Date.now() - startTime) / 1000);
|
|
167
|
+
const backend = isCosmosEnabled() ? "cosmos" : "local";
|
|
168
|
+
return json(res, 200, {
|
|
169
|
+
status: "ok",
|
|
170
|
+
uptime_seconds: uptimeSeconds,
|
|
171
|
+
version: getMcpServerPackageVersion(),
|
|
172
|
+
backend,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (path === "/ready" && method === "GET") {
|
|
176
|
+
if (!isCosmosEnabled()) {
|
|
177
|
+
return json(res, 200, { ready: true, backend: "local" });
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
await pingCosmos();
|
|
181
|
+
return json(res, 200, { ready: true, backend: "cosmos" });
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
return json(res, 503, {
|
|
185
|
+
ready: false,
|
|
186
|
+
error: "Cosmos DB not accessible",
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const requiresAuth = !NO_AUTH_PATHS.has(path);
|
|
191
|
+
if (!authorize(req, res, !requiresAuth))
|
|
192
|
+
return;
|
|
193
|
+
if (path === "/mcp" &&
|
|
194
|
+
(method === "POST" || method === "GET" || method === "DELETE")) {
|
|
195
|
+
await handleStreamableRequest(req, res);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (path === "/log" && method === "POST") {
|
|
199
|
+
const parsed = await parseJsonBody(req);
|
|
200
|
+
if (parsed.ok === false)
|
|
201
|
+
return err(res, 400, "INVALID_JSON", parsed.message);
|
|
202
|
+
const body = parsed.data;
|
|
203
|
+
const missing = ["source", "type", "content"].filter((f) => !body[f]);
|
|
204
|
+
if (missing.length > 0) {
|
|
205
|
+
return err(res, 400, "MISSING_FIELDS", `Missing required fields: ${missing.join(", ")}`, {
|
|
206
|
+
required: missing,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
const result = await appendEvent({
|
|
210
|
+
source: body.source,
|
|
211
|
+
type: body.type,
|
|
212
|
+
content: body.content,
|
|
213
|
+
context: body.context,
|
|
214
|
+
});
|
|
215
|
+
return json(res, 201, {
|
|
216
|
+
status: "ok",
|
|
217
|
+
event_id: result.record._event_id,
|
|
218
|
+
backend: result.bronzeDir,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
if (path === "/search" && method === "GET") {
|
|
222
|
+
const result = await searchEvents({
|
|
223
|
+
query: query.q ?? query.query ?? "",
|
|
224
|
+
maxResults: query.max ? parseInt(query.max, 10) : undefined,
|
|
225
|
+
source: query.source,
|
|
226
|
+
type: query.type,
|
|
227
|
+
});
|
|
228
|
+
return json(res, 200, result);
|
|
229
|
+
}
|
|
230
|
+
if (path === "/tasks" && method === "GET") {
|
|
231
|
+
const result = await getTasks({
|
|
232
|
+
status: query.status,
|
|
233
|
+
assigned_to: query.assigned_to,
|
|
234
|
+
task_id: query.task_id,
|
|
235
|
+
task_type: query.task_type,
|
|
236
|
+
limit: query.limit ? parseInt(query.limit, 10) : undefined,
|
|
237
|
+
});
|
|
238
|
+
return json(res, 200, result);
|
|
239
|
+
}
|
|
240
|
+
if (path === "/facts" && method === "GET") {
|
|
241
|
+
const result = await queryEntities({
|
|
242
|
+
entity_type: query.entity_type,
|
|
243
|
+
project: query.project,
|
|
244
|
+
tag: query.tag,
|
|
245
|
+
query: query.q ?? query.query,
|
|
246
|
+
});
|
|
247
|
+
return json(res, 200, result);
|
|
248
|
+
}
|
|
249
|
+
if (path === "/facts" && method === "POST") {
|
|
250
|
+
const parsed = await parseJsonBody(req);
|
|
251
|
+
if (parsed.ok === false)
|
|
252
|
+
return err(res, 400, "INVALID_JSON", parsed.message);
|
|
253
|
+
const result = await upsertEntity(parsed.data);
|
|
254
|
+
return json(res, 201, result);
|
|
255
|
+
}
|
|
256
|
+
if (path === "/linked" && method === "GET") {
|
|
257
|
+
const id = query.id ?? query.entity_id;
|
|
258
|
+
if (!id)
|
|
259
|
+
return err(res, 400, "MISSING_PARAM", "Required: ?id=<entity_id>");
|
|
260
|
+
const result = await getLinkedEntities(id);
|
|
261
|
+
if (!result.entity)
|
|
262
|
+
return err(res, 404, "NOT_FOUND", `No entity with id=${id}`);
|
|
263
|
+
return json(res, 200, result);
|
|
264
|
+
}
|
|
265
|
+
if (path === "/questions" && method === "GET") {
|
|
266
|
+
const result = await getQuestions({
|
|
267
|
+
directed_to: query.directed_to,
|
|
268
|
+
status: query.status,
|
|
269
|
+
task_id: query.task_id,
|
|
270
|
+
limit: query.limit ? parseInt(query.limit, 10) : undefined,
|
|
271
|
+
});
|
|
272
|
+
return json(res, 200, result);
|
|
273
|
+
}
|
|
274
|
+
if (path === "/search/deep" && method === "POST") {
|
|
275
|
+
const parsed = await parseJsonBody(req);
|
|
276
|
+
if (parsed.ok === false)
|
|
277
|
+
return err(res, 400, "INVALID_JSON", parsed.message);
|
|
278
|
+
const result = await deepSearch(parsed.data);
|
|
279
|
+
return json(res, 200, result);
|
|
280
|
+
}
|
|
281
|
+
// --- Virtual Office endpoints (domain logic in domain/) ---
|
|
282
|
+
if (path === "/inbox" && method === "GET") {
|
|
283
|
+
const agent = query.agent;
|
|
284
|
+
if (!agent)
|
|
285
|
+
return err(res, 400, "MISSING_PARAM", "Required: ?agent=<name>");
|
|
286
|
+
return json(res, 200, await buildInbox(agent));
|
|
287
|
+
}
|
|
288
|
+
if (path === "/status" && method === "GET") {
|
|
289
|
+
return json(res, 200, await buildStatus());
|
|
290
|
+
}
|
|
291
|
+
if (path === "/warm-start" && method === "GET") {
|
|
292
|
+
const task_id = query.task_id ?? query.task;
|
|
293
|
+
const agent = query.agent;
|
|
294
|
+
if (!task_id)
|
|
295
|
+
return err(res, 400, "MISSING_PARAM", "Required: ?task_id=<id>");
|
|
296
|
+
if (!agent)
|
|
297
|
+
return err(res, 400, "MISSING_PARAM", "Required: ?agent=<name>");
|
|
298
|
+
const budget = query.budget ? parseInt(query.budget, 10) : undefined;
|
|
299
|
+
const result = await buildWarmStartPreamble({
|
|
300
|
+
task_id,
|
|
301
|
+
agent,
|
|
302
|
+
budget_tokens: budget,
|
|
303
|
+
});
|
|
304
|
+
return json(res, result.error && result.layers_included.length <= 1 ? 404 : 200, result);
|
|
305
|
+
}
|
|
306
|
+
return err(res, 404, "NOT_FOUND", "Not found", { path });
|
|
307
|
+
}
|
|
308
|
+
catch (e) {
|
|
309
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
310
|
+
return err(res, 500, "INTERNAL_ERROR", message);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
export function startHttpServer() {
|
|
314
|
+
return new Promise((resolve) => {
|
|
315
|
+
const port = getHttpPort();
|
|
316
|
+
const server = http.createServer(handleRequest);
|
|
317
|
+
server.on("error", (err) => {
|
|
318
|
+
// Silently disable HTTP if port is taken — stdio MCP still works fine
|
|
319
|
+
if (err.code !== "EADDRINUSE") {
|
|
320
|
+
process.stderr.write(`[http] HTTP disabled: ${err.code ?? err.message}\n`);
|
|
321
|
+
}
|
|
322
|
+
resolve(server);
|
|
323
|
+
});
|
|
324
|
+
server.on("close", () => {
|
|
325
|
+
for (const transport of Array.from(sessions.values())) {
|
|
326
|
+
transport
|
|
327
|
+
.close()
|
|
328
|
+
.catch((error) => process.stderr.write(`[streamable] Failed to close transport: ${String(error)}\n`));
|
|
329
|
+
}
|
|
330
|
+
sessions.clear();
|
|
331
|
+
});
|
|
332
|
+
server.listen(port, () => {
|
|
333
|
+
resolve(server);
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/transport/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
export interface GoldEntity {
|
|
2
|
+
entity_type: string;
|
|
3
|
+
entity_id: string;
|
|
4
|
+
summary: string;
|
|
5
|
+
project?: string;
|
|
6
|
+
tags?: string[];
|
|
7
|
+
/** Outgoing graph edges — other Gold entity_ids this row links to (DC-T12). */
|
|
8
|
+
links_to?: string[];
|
|
9
|
+
source_events?: string[];
|
|
10
|
+
data?: unknown;
|
|
11
|
+
created_at: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AddEntityInput {
|
|
15
|
+
entity_type: string;
|
|
16
|
+
summary: string;
|
|
17
|
+
project?: string;
|
|
18
|
+
tags?: string[];
|
|
19
|
+
links_to?: string[];
|
|
20
|
+
source_events?: string[];
|
|
21
|
+
data?: unknown;
|
|
22
|
+
}
|
|
23
|
+
export interface AddEntityResult {
|
|
24
|
+
entity_id: string;
|
|
25
|
+
file_path: string;
|
|
26
|
+
action: "created" | "updated";
|
|
27
|
+
}
|
|
28
|
+
export interface GetFactsInput {
|
|
29
|
+
entity_type?: string;
|
|
30
|
+
project?: string;
|
|
31
|
+
tag?: string;
|
|
32
|
+
query?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface GetFactsResult {
|
|
35
|
+
entities: GoldEntity[];
|
|
36
|
+
total: number;
|
|
37
|
+
}
|
|
38
|
+
export interface GetLinkedResult {
|
|
39
|
+
entity: GoldEntity | null;
|
|
40
|
+
links_out: GoldEntity[];
|
|
41
|
+
links_in: GoldEntity[];
|
|
42
|
+
total_connections: number;
|
|
43
|
+
}
|
|
44
|
+
export type TrustLevel = "verified" | "ai-generated" | "external";
|
|
45
|
+
export interface BronzeRecord {
|
|
46
|
+
source: string;
|
|
47
|
+
type: string;
|
|
48
|
+
content: string;
|
|
49
|
+
project?: string;
|
|
50
|
+
context?: Record<string, unknown>;
|
|
51
|
+
run_id?: string;
|
|
52
|
+
_timestamp: string;
|
|
53
|
+
_source: string;
|
|
54
|
+
_event_id: string;
|
|
55
|
+
_trust: TrustLevel;
|
|
56
|
+
_filePath?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface AppendEventInput {
|
|
59
|
+
source: string;
|
|
60
|
+
type: string;
|
|
61
|
+
content: string;
|
|
62
|
+
project?: string;
|
|
63
|
+
context?: Record<string, unknown>;
|
|
64
|
+
run_id?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface AppendEventResult {
|
|
67
|
+
bronzeDir: string;
|
|
68
|
+
filePath: string;
|
|
69
|
+
record: BronzeRecord;
|
|
70
|
+
}
|
|
71
|
+
export interface SearchInput {
|
|
72
|
+
query: string;
|
|
73
|
+
maxResults?: number;
|
|
74
|
+
source?: string;
|
|
75
|
+
type?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface SearchResult {
|
|
78
|
+
eventId: string | null;
|
|
79
|
+
timestamp: string | null;
|
|
80
|
+
source: string | null;
|
|
81
|
+
type: string | null;
|
|
82
|
+
trust: TrustLevel | null;
|
|
83
|
+
snippet: string;
|
|
84
|
+
filePath: string;
|
|
85
|
+
}
|
|
86
|
+
export interface SearchOutput {
|
|
87
|
+
bronzeDir: string;
|
|
88
|
+
filesScanned: number;
|
|
89
|
+
eventsScanned: number;
|
|
90
|
+
parseErrors: number;
|
|
91
|
+
totalMatches: number;
|
|
92
|
+
results: SearchResult[];
|
|
93
|
+
sourceCounts: Record<string, number>;
|
|
94
|
+
typeCounts: Record<string, number>;
|
|
95
|
+
}
|
|
96
|
+
export interface TaskInput {
|
|
97
|
+
status?: string;
|
|
98
|
+
assigned_to?: string;
|
|
99
|
+
task_type?: string;
|
|
100
|
+
task_id?: string;
|
|
101
|
+
limit?: number;
|
|
102
|
+
}
|
|
103
|
+
export interface TaskSummary {
|
|
104
|
+
task_id: string;
|
|
105
|
+
status: string;
|
|
106
|
+
task_type: string | null;
|
|
107
|
+
assigned_to: string | null;
|
|
108
|
+
score: unknown;
|
|
109
|
+
problem: unknown;
|
|
110
|
+
impact: unknown;
|
|
111
|
+
project: unknown;
|
|
112
|
+
workflow_stage: unknown;
|
|
113
|
+
phase: unknown;
|
|
114
|
+
depends_on: unknown;
|
|
115
|
+
pattern: unknown;
|
|
116
|
+
acceptance: unknown;
|
|
117
|
+
spec_file: unknown;
|
|
118
|
+
summary: string | null;
|
|
119
|
+
latest_update: string | null;
|
|
120
|
+
latest_type: string | null;
|
|
121
|
+
created_at: string | null;
|
|
122
|
+
updated_at: string | null;
|
|
123
|
+
event_count: number;
|
|
124
|
+
tags: unknown;
|
|
125
|
+
lessons: unknown;
|
|
126
|
+
}
|
|
127
|
+
export interface TaskEvent {
|
|
128
|
+
eventId: string | null;
|
|
129
|
+
timestamp: string | null;
|
|
130
|
+
source: string | null;
|
|
131
|
+
type: string | null;
|
|
132
|
+
content: string | null;
|
|
133
|
+
context: Record<string, unknown> | null;
|
|
134
|
+
}
|
|
135
|
+
export interface Filters {
|
|
136
|
+
source?: string;
|
|
137
|
+
type?: string;
|
|
138
|
+
limit?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface ReadAllResult {
|
|
141
|
+
bronzeDir: string;
|
|
142
|
+
files: string[];
|
|
143
|
+
records: BronzeRecord[];
|
|
144
|
+
parseErrors: number;
|
|
145
|
+
}
|
|
146
|
+
export interface TaskBoardResult {
|
|
147
|
+
bronzeDir: string;
|
|
148
|
+
mode: "board";
|
|
149
|
+
status_filter: string;
|
|
150
|
+
total_tasks: number;
|
|
151
|
+
tasks: TaskSummary[];
|
|
152
|
+
parseErrors: number;
|
|
153
|
+
}
|
|
154
|
+
export interface TaskHistoryResult {
|
|
155
|
+
bronzeDir: string;
|
|
156
|
+
mode: "history";
|
|
157
|
+
task_id: string;
|
|
158
|
+
events: TaskEvent[];
|
|
159
|
+
totalEvents: number;
|
|
160
|
+
}
|
|
161
|
+
export type TaskResult = TaskBoardResult | TaskHistoryResult;
|
|
162
|
+
export interface QuestionInput {
|
|
163
|
+
directed_to?: string;
|
|
164
|
+
status?: "open" | "answered" | "all";
|
|
165
|
+
task_id?: string;
|
|
166
|
+
limit?: number;
|
|
167
|
+
}
|
|
168
|
+
export interface QuestionSummary {
|
|
169
|
+
thread_id: string;
|
|
170
|
+
question: string;
|
|
171
|
+
asked_by: string | null;
|
|
172
|
+
directed_to: string | null;
|
|
173
|
+
task_id: string | null;
|
|
174
|
+
status: "open" | "answered";
|
|
175
|
+
asked_at: string | null;
|
|
176
|
+
answered_at: string | null;
|
|
177
|
+
answer: string | null;
|
|
178
|
+
answered_by: string | null;
|
|
179
|
+
}
|
|
180
|
+
export interface QuestionResult {
|
|
181
|
+
bronzeDir: string;
|
|
182
|
+
total: number;
|
|
183
|
+
questions: QuestionSummary[];
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8CAA8C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@davidjinguoxu/agentcore",
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "Local-first AI memory engine for multi-agent workflows — 17-tool MCP server. Zero config (LanceDB) or Azure (Cosmos + AI Search).",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "David Xu",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=22"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"start": "node dist/server.js",
|
|
14
|
+
"smoke": "node scripts/dev/smoke.mjs",
|
|
15
|
+
"inspect": "bash scripts/dev/inspect.sh",
|
|
16
|
+
"format": "npx prettier --write src/ tests/",
|
|
17
|
+
"format:check": "npx prettier --check src/ tests/",
|
|
18
|
+
"lint": "npx eslint src/",
|
|
19
|
+
"pretest": "pnpm run build",
|
|
20
|
+
"test": "node --test tests/*.test.mjs",
|
|
21
|
+
"check": "pnpm run format:check && pnpm run lint && pnpm run build && pnpm run test",
|
|
22
|
+
"migrate:sqlite": "node scripts/migrations/migrate-to-sqlite.mjs",
|
|
23
|
+
"triggers:check": "node scripts/dev/check-time-triggers.mjs"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@azure/cosmos": "^4.9.2",
|
|
27
|
+
"@lancedb/lancedb": "^0.27.2",
|
|
28
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
29
|
+
"@xenova/transformers": "^2.17.2",
|
|
30
|
+
"zod": "^4.3.6"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@eslint/js": "^10.0.1",
|
|
34
|
+
"@types/node": "^25.5.0",
|
|
35
|
+
"eslint": "^10.1.0",
|
|
36
|
+
"prettier": "^3.8.1",
|
|
37
|
+
"typescript": "5.8",
|
|
38
|
+
"typescript-eslint": "^8.57.2"
|
|
39
|
+
},
|
|
40
|
+
"bin": {
|
|
41
|
+
"agentcore": "scripts/run-server.mjs"
|
|
42
|
+
},
|
|
43
|
+
"exports": {
|
|
44
|
+
".": {
|
|
45
|
+
"import": "./dist/index.js",
|
|
46
|
+
"types": "./dist/index.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"./types": {
|
|
49
|
+
"import": "./dist/types.js",
|
|
50
|
+
"types": "./dist/types.d.ts"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"dist/",
|
|
55
|
+
"config/",
|
|
56
|
+
"scripts/run-server.mjs",
|
|
57
|
+
"scripts/stdio-only.mjs",
|
|
58
|
+
"README.md"
|
|
59
|
+
],
|
|
60
|
+
"keywords": [
|
|
61
|
+
"mcp",
|
|
62
|
+
"ai-memory",
|
|
63
|
+
"datacore",
|
|
64
|
+
"lancedb",
|
|
65
|
+
"semantic-search",
|
|
66
|
+
"agent",
|
|
67
|
+
"cursor",
|
|
68
|
+
"claude"
|
|
69
|
+
],
|
|
70
|
+
"homepage": "https://github.com/david3xu/agentcore"
|
|
71
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
7
|
+
import process from 'node:process';
|
|
8
|
+
import { registerTools } from '../dist/tools.js';
|
|
9
|
+
|
|
10
|
+
const pkgDir = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const pkg = JSON.parse(readFileSync(join(pkgDir, '..', 'package.json'), 'utf8'));
|
|
12
|
+
const version = typeof pkg.version === 'string' ? pkg.version : '0.0.0';
|
|
13
|
+
|
|
14
|
+
const server = new McpServer({ name: 'datacore', version });
|
|
15
|
+
registerTools(server);
|
|
16
|
+
await server.connect(new StdioServerTransport());
|
|
17
|
+
|
|
18
|
+
async function shutdown() {
|
|
19
|
+
await server.close().catch(() => {});
|
|
20
|
+
process.exit(0);
|
|
21
|
+
}
|
|
22
|
+
process.on('SIGINT', shutdown);
|
|
23
|
+
process.on('SIGTERM', shutdown);
|