@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.
Files changed (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/config/default-triggers.json +119 -0
  4. package/dist/adapters/runtime-adapter.d.ts +124 -0
  5. package/dist/adapters/runtime-adapter.d.ts.map +1 -0
  6. package/dist/adapters/runtime-adapter.js +5 -0
  7. package/dist/adapters/runtime-adapter.js.map +1 -0
  8. package/dist/config/datacore-constants.d.ts +21 -0
  9. package/dist/config/datacore-constants.d.ts.map +1 -0
  10. package/dist/config/datacore-constants.js +68 -0
  11. package/dist/config/datacore-constants.js.map +1 -0
  12. package/dist/domain/embeddable.d.ts +19 -0
  13. package/dist/domain/embeddable.d.ts.map +1 -0
  14. package/dist/domain/embeddable.js +106 -0
  15. package/dist/domain/embeddable.js.map +1 -0
  16. package/dist/domain/gold-store.d.ts +11 -0
  17. package/dist/domain/gold-store.d.ts.map +1 -0
  18. package/dist/domain/gold-store.js +210 -0
  19. package/dist/domain/gold-store.js.map +1 -0
  20. package/dist/domain/inbox.d.ts +14 -0
  21. package/dist/domain/inbox.d.ts.map +1 -0
  22. package/dist/domain/inbox.js +138 -0
  23. package/dist/domain/inbox.js.map +1 -0
  24. package/dist/domain/office-status.d.ts +31 -0
  25. package/dist/domain/office-status.d.ts.map +1 -0
  26. package/dist/domain/office-status.js +138 -0
  27. package/dist/domain/office-status.js.map +1 -0
  28. package/dist/domain/questions.d.ts +3 -0
  29. package/dist/domain/questions.d.ts.map +1 -0
  30. package/dist/domain/questions.js +60 -0
  31. package/dist/domain/questions.js.map +1 -0
  32. package/dist/domain/run-manager.d.ts +14 -0
  33. package/dist/domain/run-manager.d.ts.map +1 -0
  34. package/dist/domain/run-manager.js +25 -0
  35. package/dist/domain/run-manager.js.map +1 -0
  36. package/dist/domain/task-event-index.d.ts +31 -0
  37. package/dist/domain/task-event-index.d.ts.map +1 -0
  38. package/dist/domain/task-event-index.js +117 -0
  39. package/dist/domain/task-event-index.js.map +1 -0
  40. package/dist/domain/tasks.d.ts +3 -0
  41. package/dist/domain/tasks.d.ts.map +1 -0
  42. package/dist/domain/tasks.js +112 -0
  43. package/dist/domain/tasks.js.map +1 -0
  44. package/dist/domain/warm-start-builders.d.ts +18 -0
  45. package/dist/domain/warm-start-builders.d.ts.map +1 -0
  46. package/dist/domain/warm-start-builders.js +157 -0
  47. package/dist/domain/warm-start-builders.js.map +1 -0
  48. package/dist/domain/warm-start-extractors.d.ts +37 -0
  49. package/dist/domain/warm-start-extractors.d.ts.map +1 -0
  50. package/dist/domain/warm-start-extractors.js +372 -0
  51. package/dist/domain/warm-start-extractors.js.map +1 -0
  52. package/dist/domain/warm-start.d.ts +17 -0
  53. package/dist/domain/warm-start.d.ts.map +1 -0
  54. package/dist/domain/warm-start.js +225 -0
  55. package/dist/domain/warm-start.js.map +1 -0
  56. package/dist/index.d.ts +7 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +8 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/mcp-slim-ack.d.ts +12 -0
  61. package/dist/mcp-slim-ack.d.ts.map +1 -0
  62. package/dist/mcp-slim-ack.js +16 -0
  63. package/dist/mcp-slim-ack.js.map +1 -0
  64. package/dist/routing/capability-registry.d.ts +38 -0
  65. package/dist/routing/capability-registry.d.ts.map +1 -0
  66. package/dist/routing/capability-registry.js +52 -0
  67. package/dist/routing/capability-registry.js.map +1 -0
  68. package/dist/routing/runtime-target-resolver.d.ts +42 -0
  69. package/dist/routing/runtime-target-resolver.d.ts.map +1 -0
  70. package/dist/routing/runtime-target-resolver.js +139 -0
  71. package/dist/routing/runtime-target-resolver.js.map +1 -0
  72. package/dist/search/azure-search-client.d.ts +53 -0
  73. package/dist/search/azure-search-client.d.ts.map +1 -0
  74. package/dist/search/azure-search-client.js +191 -0
  75. package/dist/search/azure-search-client.js.map +1 -0
  76. package/dist/search/circuit-breaker.d.ts +46 -0
  77. package/dist/search/circuit-breaker.d.ts.map +1 -0
  78. package/dist/search/circuit-breaker.js +87 -0
  79. package/dist/search/circuit-breaker.js.map +1 -0
  80. package/dist/search/deep-search.d.ts +24 -0
  81. package/dist/search/deep-search.d.ts.map +1 -0
  82. package/dist/search/deep-search.js +98 -0
  83. package/dist/search/deep-search.js.map +1 -0
  84. package/dist/search/search.d.ts +3 -0
  85. package/dist/search/search.d.ts.map +1 -0
  86. package/dist/search/search.js +76 -0
  87. package/dist/search/search.js.map +1 -0
  88. package/dist/server.d.ts +3 -0
  89. package/dist/server.d.ts.map +1 -0
  90. package/dist/server.js +39 -0
  91. package/dist/server.js.map +1 -0
  92. package/dist/skills/index.d.ts +3 -0
  93. package/dist/skills/index.d.ts.map +1 -0
  94. package/dist/skills/index.js +8 -0
  95. package/dist/skills/index.js.map +1 -0
  96. package/dist/skills/knowledge.d.ts +3 -0
  97. package/dist/skills/knowledge.d.ts.map +1 -0
  98. package/dist/skills/knowledge.js +78 -0
  99. package/dist/skills/knowledge.js.map +1 -0
  100. package/dist/skills/task-workflow.d.ts +3 -0
  101. package/dist/skills/task-workflow.d.ts.map +1 -0
  102. package/dist/skills/task-workflow.js +205 -0
  103. package/dist/skills/task-workflow.js.map +1 -0
  104. package/dist/storage/active-backend.d.ts +4 -0
  105. package/dist/storage/active-backend.d.ts.map +1 -0
  106. package/dist/storage/active-backend.js +12 -0
  107. package/dist/storage/active-backend.js.map +1 -0
  108. package/dist/storage/backend.d.ts +12 -0
  109. package/dist/storage/backend.d.ts.map +1 -0
  110. package/dist/storage/backend.js +5 -0
  111. package/dist/storage/backend.js.map +1 -0
  112. package/dist/storage/cosmos-client.d.ts +6 -0
  113. package/dist/storage/cosmos-client.d.ts.map +1 -0
  114. package/dist/storage/cosmos-client.js +38 -0
  115. package/dist/storage/cosmos-client.js.map +1 -0
  116. package/dist/storage/lancedb-backend.d.ts +13 -0
  117. package/dist/storage/lancedb-backend.d.ts.map +1 -0
  118. package/dist/storage/lancedb-backend.js +373 -0
  119. package/dist/storage/lancedb-backend.js.map +1 -0
  120. package/dist/storage/store.d.ts +8 -0
  121. package/dist/storage/store.d.ts.map +1 -0
  122. package/dist/storage/store.js +294 -0
  123. package/dist/storage/store.js.map +1 -0
  124. package/dist/storage/task-compaction.d.ts +12 -0
  125. package/dist/storage/task-compaction.d.ts.map +1 -0
  126. package/dist/storage/task-compaction.js +112 -0
  127. package/dist/storage/task-compaction.js.map +1 -0
  128. package/dist/storage/task-context-snapshot.d.ts +6 -0
  129. package/dist/storage/task-context-snapshot.d.ts.map +1 -0
  130. package/dist/storage/task-context-snapshot.js +87 -0
  131. package/dist/storage/task-context-snapshot.js.map +1 -0
  132. package/dist/storage/trigger-engine.d.ts +39 -0
  133. package/dist/storage/trigger-engine.d.ts.map +1 -0
  134. package/dist/storage/trigger-engine.js +212 -0
  135. package/dist/storage/trigger-engine.js.map +1 -0
  136. package/dist/tools.d.ts +3 -0
  137. package/dist/tools.d.ts.map +1 -0
  138. package/dist/tools.js +413 -0
  139. package/dist/tools.js.map +1 -0
  140. package/dist/transport/client.d.ts +68 -0
  141. package/dist/transport/client.d.ts.map +1 -0
  142. package/dist/transport/client.js +210 -0
  143. package/dist/transport/client.js.map +1 -0
  144. package/dist/transport/http-server.d.ts +3 -0
  145. package/dist/transport/http-server.d.ts.map +1 -0
  146. package/dist/transport/http-server.js +337 -0
  147. package/dist/transport/http-server.js.map +1 -0
  148. package/dist/types.d.ts +185 -0
  149. package/dist/types.d.ts.map +1 -0
  150. package/dist/types.js +3 -0
  151. package/dist/types.js.map +1 -0
  152. package/package.json +71 -0
  153. package/scripts/run-server.mjs +3 -0
  154. 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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"}
@@ -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,3 @@
1
+ // types.ts — What shapes exist in the system?
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -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,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import "../dist/server.js";
@@ -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);