@hasna/mementos 0.14.30 → 0.14.32

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 (240) hide show
  1. package/LICENSE +190 -3
  2. package/README.md +34 -34
  3. package/dist/cli/brains.d.ts +3 -0
  4. package/dist/cli/brains.d.ts.map +1 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +25767 -0
  8. package/dist/db/acl.d.ts +34 -0
  9. package/dist/db/acl.d.ts.map +1 -0
  10. package/dist/db/agents.d.ts +15 -0
  11. package/dist/db/agents.d.ts.map +1 -0
  12. package/dist/db/audit.d.ts +39 -0
  13. package/dist/db/audit.d.ts.map +1 -0
  14. package/dist/db/database.d.ts +10 -0
  15. package/dist/db/database.d.ts.map +1 -0
  16. package/dist/db/entities.d.ts +62 -0
  17. package/dist/db/entities.d.ts.map +1 -0
  18. package/dist/db/entity-memories.d.ts +34 -0
  19. package/dist/db/entity-memories.d.ts.map +1 -0
  20. package/dist/db/locks.d.ts +63 -0
  21. package/dist/db/locks.d.ts.map +1 -0
  22. package/dist/db/machines.d.ts +16 -0
  23. package/dist/db/machines.d.ts.map +1 -0
  24. package/dist/db/memories.d.ts +40 -0
  25. package/dist/db/memories.d.ts.map +1 -0
  26. package/dist/db/pg-migrate.d.ts +14 -0
  27. package/dist/db/pg-migrate.d.ts.map +1 -0
  28. package/dist/db/pg-migrations.d.ts +8 -0
  29. package/dist/db/pg-migrations.d.ts.map +1 -0
  30. package/dist/db/projects.d.ts +6 -0
  31. package/dist/db/projects.d.ts.map +1 -0
  32. package/dist/db/ratings.d.ts +23 -0
  33. package/dist/db/ratings.d.ts.map +1 -0
  34. package/dist/db/relations.d.ts +29 -0
  35. package/dist/db/relations.d.ts.map +1 -0
  36. package/dist/db/session-jobs.d.ts +49 -0
  37. package/dist/db/session-jobs.d.ts.map +1 -0
  38. package/dist/db/synthesis.d.ts +101 -0
  39. package/dist/db/synthesis.d.ts.map +1 -0
  40. package/dist/db/tool-events.d.ts +27 -0
  41. package/dist/db/tool-events.d.ts.map +1 -0
  42. package/dist/db/webhook_hooks.d.ts +25 -0
  43. package/dist/db/webhook_hooks.d.ts.map +1 -0
  44. package/dist/index.d.ts +27 -4
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +14642 -1006
  47. package/dist/lib/activation-matcher.d.ts +16 -0
  48. package/dist/lib/activation-matcher.d.ts.map +1 -0
  49. package/dist/lib/asmr/categorizer.d.ts +31 -0
  50. package/dist/lib/asmr/categorizer.d.ts.map +1 -0
  51. package/dist/lib/asmr/context-agent.d.ts +4 -0
  52. package/dist/lib/asmr/context-agent.d.ts.map +1 -0
  53. package/dist/lib/asmr/ensemble.d.ts +23 -0
  54. package/dist/lib/asmr/ensemble.d.ts.map +1 -0
  55. package/dist/lib/asmr/fact-agent.d.ts +4 -0
  56. package/dist/lib/asmr/fact-agent.d.ts.map +1 -0
  57. package/dist/lib/asmr/index.d.ts +7 -0
  58. package/dist/lib/asmr/index.d.ts.map +1 -0
  59. package/dist/lib/asmr/orchestrator.d.ts +4 -0
  60. package/dist/lib/asmr/orchestrator.d.ts.map +1 -0
  61. package/dist/lib/asmr/temporal-agent.d.ts +4 -0
  62. package/dist/lib/asmr/temporal-agent.d.ts.map +1 -0
  63. package/dist/lib/asmr/types.d.ts +27 -0
  64. package/dist/lib/asmr/types.d.ts.map +1 -0
  65. package/dist/lib/auto-inject-orchestrator.d.ts +57 -0
  66. package/dist/lib/auto-inject-orchestrator.d.ts.map +1 -0
  67. package/dist/lib/auto-memory-queue.d.ts +46 -0
  68. package/dist/lib/auto-memory-queue.d.ts.map +1 -0
  69. package/dist/lib/auto-memory.d.ts +18 -0
  70. package/dist/lib/auto-memory.d.ts.map +1 -0
  71. package/dist/lib/bench.d.ts +20 -0
  72. package/dist/lib/bench.d.ts.map +1 -0
  73. package/dist/lib/built-in-hooks.d.ts +12 -0
  74. package/dist/lib/built-in-hooks.d.ts.map +1 -0
  75. package/dist/lib/channel-pusher.d.ts +39 -0
  76. package/dist/lib/channel-pusher.d.ts.map +1 -0
  77. package/dist/lib/config.d.ts +9 -0
  78. package/dist/lib/config.d.ts.map +1 -0
  79. package/dist/lib/connectors/files.d.ts +8 -0
  80. package/dist/lib/connectors/files.d.ts.map +1 -0
  81. package/dist/lib/connectors/github.d.ts +7 -0
  82. package/dist/lib/connectors/github.d.ts.map +1 -0
  83. package/dist/lib/connectors/index.d.ts +12 -0
  84. package/dist/lib/connectors/index.d.ts.map +1 -0
  85. package/dist/lib/connectors/notion.d.ts +7 -0
  86. package/dist/lib/connectors/notion.d.ts.map +1 -0
  87. package/dist/lib/connectors/types.d.ts +27 -0
  88. package/dist/lib/connectors/types.d.ts.map +1 -0
  89. package/dist/lib/context-extractor.d.ts +14 -0
  90. package/dist/lib/context-extractor.d.ts.map +1 -0
  91. package/dist/lib/context.d.ts +35 -0
  92. package/dist/lib/context.d.ts.map +1 -0
  93. package/dist/lib/contradiction.d.ts +50 -0
  94. package/dist/lib/contradiction.d.ts.map +1 -0
  95. package/dist/lib/decay.d.ts +35 -0
  96. package/dist/lib/decay.d.ts.map +1 -0
  97. package/dist/lib/dedup.d.ts +33 -0
  98. package/dist/lib/dedup.d.ts.map +1 -0
  99. package/dist/lib/duration.d.ts +28 -0
  100. package/dist/lib/duration.d.ts.map +1 -0
  101. package/dist/lib/embeddings.d.ts +20 -0
  102. package/dist/lib/embeddings.d.ts.map +1 -0
  103. package/dist/lib/export-v1.d.ts +30 -0
  104. package/dist/lib/export-v1.d.ts.map +1 -0
  105. package/dist/lib/extractor.d.ts +9 -0
  106. package/dist/lib/extractor.d.ts.map +1 -0
  107. package/dist/lib/extractors/audio.d.ts +8 -0
  108. package/dist/lib/extractors/audio.d.ts.map +1 -0
  109. package/dist/lib/extractors/index.d.ts +12 -0
  110. package/dist/lib/extractors/index.d.ts.map +1 -0
  111. package/dist/lib/extractors/ocr.d.ts +7 -0
  112. package/dist/lib/extractors/ocr.d.ts.map +1 -0
  113. package/dist/lib/extractors/pdf.d.ts +7 -0
  114. package/dist/lib/extractors/pdf.d.ts.map +1 -0
  115. package/dist/lib/extractors/types.d.ts +12 -0
  116. package/dist/lib/extractors/types.d.ts.map +1 -0
  117. package/dist/lib/file-deps.d.ts +27 -0
  118. package/dist/lib/file-deps.d.ts.map +1 -0
  119. package/dist/lib/focus.d.ts +58 -0
  120. package/dist/lib/focus.d.ts.map +1 -0
  121. package/dist/lib/gatherer.d.ts +16 -0
  122. package/dist/lib/gatherer.d.ts.map +1 -0
  123. package/dist/lib/gdpr.d.ts +24 -0
  124. package/dist/lib/gdpr.d.ts.map +1 -0
  125. package/dist/lib/hooks.d.ts +50 -0
  126. package/dist/lib/hooks.d.ts.map +1 -0
  127. package/dist/lib/importers/index.d.ts +38 -0
  128. package/dist/lib/importers/index.d.ts.map +1 -0
  129. package/dist/lib/injector.d.ts +86 -0
  130. package/dist/lib/injector.d.ts.map +1 -0
  131. package/dist/lib/matryoshka.d.ts +50 -0
  132. package/dist/lib/matryoshka.d.ts.map +1 -0
  133. package/dist/lib/memory-lock.d.ts +58 -0
  134. package/dist/lib/memory-lock.d.ts.map +1 -0
  135. package/dist/lib/model-config.d.ts +14 -0
  136. package/dist/lib/model-config.d.ts.map +1 -0
  137. package/dist/lib/open-sessions-connector.d.ts +60 -0
  138. package/dist/lib/open-sessions-connector.d.ts.map +1 -0
  139. package/dist/lib/poisoning.d.ts +19 -0
  140. package/dist/lib/poisoning.d.ts.map +1 -0
  141. package/dist/lib/poll.d.ts +17 -0
  142. package/dist/lib/poll.d.ts.map +1 -0
  143. package/dist/lib/procedural-extractor.d.ts +21 -0
  144. package/dist/lib/procedural-extractor.d.ts.map +1 -0
  145. package/dist/lib/profile-sync.d.ts +20 -0
  146. package/dist/lib/profile-sync.d.ts.map +1 -0
  147. package/dist/lib/profile-synthesizer.d.ts +20 -0
  148. package/dist/lib/profile-synthesizer.d.ts.map +1 -0
  149. package/dist/lib/project-detect.d.ts +18 -0
  150. package/dist/lib/project-detect.d.ts.map +1 -0
  151. package/dist/lib/providers/anthropic.d.ts +21 -0
  152. package/dist/lib/providers/anthropic.d.ts.map +1 -0
  153. package/dist/lib/providers/base.d.ts +96 -0
  154. package/dist/lib/providers/base.d.ts.map +1 -0
  155. package/dist/lib/providers/cerebras.d.ts +20 -0
  156. package/dist/lib/providers/cerebras.d.ts.map +1 -0
  157. package/dist/lib/providers/grok.d.ts +19 -0
  158. package/dist/lib/providers/grok.d.ts.map +1 -0
  159. package/dist/lib/providers/index.d.ts +7 -0
  160. package/dist/lib/providers/index.d.ts.map +1 -0
  161. package/dist/lib/providers/openai-compat.d.ts +18 -0
  162. package/dist/lib/providers/openai-compat.d.ts.map +1 -0
  163. package/dist/lib/providers/openai.d.ts +20 -0
  164. package/dist/lib/providers/openai.d.ts.map +1 -0
  165. package/dist/lib/providers/registry.d.ts +38 -0
  166. package/dist/lib/providers/registry.d.ts.map +1 -0
  167. package/dist/lib/quality.d.ts +16 -0
  168. package/dist/lib/quality.d.ts.map +1 -0
  169. package/dist/lib/redact.d.ts +10 -0
  170. package/dist/lib/redact.d.ts.map +1 -0
  171. package/dist/lib/remote-sync.d.ts +49 -0
  172. package/dist/lib/remote-sync.d.ts.map +1 -0
  173. package/dist/lib/retention.d.ts +17 -0
  174. package/dist/lib/retention.d.ts.map +1 -0
  175. package/dist/lib/search.d.ts +52 -0
  176. package/dist/lib/search.d.ts.map +1 -0
  177. package/dist/lib/session-auto-resolve.d.ts +28 -0
  178. package/dist/lib/session-auto-resolve.d.ts.map +1 -0
  179. package/dist/lib/session-processor.d.ts +38 -0
  180. package/dist/lib/session-processor.d.ts.map +1 -0
  181. package/dist/lib/session-queue.d.ts +28 -0
  182. package/dist/lib/session-queue.d.ts.map +1 -0
  183. package/dist/lib/session-registry.d.ts +47 -0
  184. package/dist/lib/session-registry.d.ts.map +1 -0
  185. package/dist/lib/session-start-briefing.d.ts +10 -0
  186. package/dist/lib/session-start-briefing.d.ts.map +1 -0
  187. package/dist/lib/session-watcher.d.ts +30 -0
  188. package/dist/lib/session-watcher.d.ts.map +1 -0
  189. package/dist/lib/sync.d.ts +10 -0
  190. package/dist/lib/sync.d.ts.map +1 -0
  191. package/dist/lib/synthesis/corpus-builder.d.ts +30 -0
  192. package/dist/lib/synthesis/corpus-builder.d.ts.map +1 -0
  193. package/dist/lib/synthesis/executor.d.ts +14 -0
  194. package/dist/lib/synthesis/executor.d.ts.map +1 -0
  195. package/dist/lib/synthesis/index.d.ts +37 -0
  196. package/dist/lib/synthesis/index.d.ts.map +1 -0
  197. package/dist/lib/synthesis/llm-analyzer.d.ts +18 -0
  198. package/dist/lib/synthesis/llm-analyzer.d.ts.map +1 -0
  199. package/dist/lib/synthesis/metrics.d.ts +13 -0
  200. package/dist/lib/synthesis/metrics.d.ts.map +1 -0
  201. package/dist/lib/synthesis/scheduler.d.ts +18 -0
  202. package/dist/lib/synthesis/scheduler.d.ts.map +1 -0
  203. package/dist/lib/synthesis/validator.d.ts +19 -0
  204. package/dist/lib/synthesis/validator.d.ts.map +1 -0
  205. package/dist/lib/tool-lesson-extractor.d.ts +24 -0
  206. package/dist/lib/tool-lesson-extractor.d.ts.map +1 -0
  207. package/dist/lib/tool-memory-synthesizer.d.ts +28 -0
  208. package/dist/lib/tool-memory-synthesizer.d.ts.map +1 -0
  209. package/dist/lib/topic-clusterer.d.ts +21 -0
  210. package/dist/lib/topic-clusterer.d.ts.map +1 -0
  211. package/dist/lib/when-to-use-generator.d.ts +22 -0
  212. package/dist/lib/when-to-use-generator.d.ts.map +1 -0
  213. package/dist/mcp/index.d.ts +5 -0
  214. package/dist/mcp/index.d.ts.map +1 -0
  215. package/dist/mcp/index.js +30258 -0
  216. package/dist/mcp/memory-broadcast.d.ts +12 -0
  217. package/dist/mcp/memory-broadcast.d.ts.map +1 -0
  218. package/dist/sdk/index.js +397 -0
  219. package/dist/server/index.d.ts +7 -0
  220. package/dist/server/index.d.ts.map +1 -0
  221. package/dist/server/index.js +18250 -0
  222. package/dist/types/hooks.d.ts +136 -0
  223. package/dist/types/hooks.d.ts.map +1 -0
  224. package/dist/types/index.d.ts +345 -0
  225. package/dist/types/index.d.ts.map +1 -0
  226. package/package.json +53 -13
  227. package/dist/agent-setup.d.ts +0 -51
  228. package/dist/agent-setup.d.ts.map +0 -1
  229. package/dist/bridge.d.ts +0 -50
  230. package/dist/bridge.d.ts.map +0 -1
  231. package/dist/cli.d.ts +0 -3
  232. package/dist/cli.d.ts.map +0 -1
  233. package/dist/cli.js +0 -1362
  234. package/dist/mcp-runtime.d.ts +0 -24
  235. package/dist/mcp-runtime.d.ts.map +0 -1
  236. package/dist/mcp.d.ts +0 -3
  237. package/dist/mcp.d.ts.map +0 -1
  238. package/dist/mcp.js +0 -354
  239. package/dist/remote-client.d.ts +0 -49
  240. package/dist/remote-client.d.ts.map +0 -1
@@ -1,24 +0,0 @@
1
- import { MementosRemoteClient } from "./remote-client";
2
- export declare const MEMENTOS_MCP_VERSION = "0.14.30";
3
- export interface RemoteMcpTool {
4
- name: string;
5
- description: string;
6
- inputSchema: Record<string, unknown>;
7
- run: (input: Record<string, unknown>, client: MementosRemoteClient) => Promise<unknown>;
8
- }
9
- export declare const REMOTE_MCP_TOOLS: RemoteMcpTool[];
10
- export declare function callRemoteMcpTool(name: string, input?: Record<string, unknown>, client?: MementosRemoteClient): Promise<unknown>;
11
- export declare function handleMcpMessage(message: any, client?: MementosRemoteClient): Promise<{
12
- jsonrpc: string;
13
- id: unknown;
14
- result: unknown;
15
- } | {
16
- jsonrpc: string;
17
- id: unknown;
18
- error: {
19
- code: number;
20
- message: string;
21
- };
22
- }>;
23
- export declare function startMcpStdio(client?: MementosRemoteClient): void;
24
- //# sourceMappingURL=mcp-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-runtime.d.ts","sourceRoot":"","sources":["../src/mcp-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAElF,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACzF;AAaD,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAiI3C,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,MAAM,uBAA8B,oBAKrC;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAA8B;;;;;;;;;;;GA8BxF;AAED,wBAAgB,aAAa,CAAC,MAAM,uBAA8B,QAUjE"}
package/dist/mcp.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env bun
2
- export {};
3
- //# sourceMappingURL=mcp.d.ts.map
package/dist/mcp.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":""}
package/dist/mcp.js DELETED
@@ -1,354 +0,0 @@
1
- #!/usr/bin/env bun
2
- // @bun
3
-
4
- // src/mcp-runtime.ts
5
- import { createInterface } from "readline";
6
-
7
- // src/remote-client.ts
8
- var DEFAULT_API_URL = "https://mementos.md/api/v1";
9
-
10
- class MementosRemoteError extends Error {
11
- status;
12
- response;
13
- constructor(message, status, response) {
14
- super(message);
15
- this.name = "MementosRemoteError";
16
- this.status = status;
17
- this.response = response;
18
- }
19
- }
20
-
21
- class MementosRemoteClient {
22
- apiUrl;
23
- token;
24
- fetchImpl;
25
- constructor(config = {}) {
26
- this.apiUrl = normalizeApiUrl(config.apiUrl ?? DEFAULT_API_URL);
27
- this.token = config.token;
28
- this.fetchImpl = config.fetch ?? fetch;
29
- }
30
- listCapabilities() {
31
- return this.request("/capabilities", { requiresAuth: false });
32
- }
33
- listAgents() {
34
- return this.request("/agents");
35
- }
36
- registerAgent(input) {
37
- return this.request("/agents/register", { method: "POST", body: input });
38
- }
39
- heartbeatAgent(input) {
40
- return this.request("/agents/heartbeat", { method: "POST", body: input });
41
- }
42
- saveMemory(input) {
43
- return this.request("/memories", { method: "POST", body: input });
44
- }
45
- searchMemories(input = {}) {
46
- return this.request("/memories", { query: input });
47
- }
48
- injectionContext(input = {}) {
49
- return this.request("/injections/context", { method: "POST", body: input });
50
- }
51
- sendInboxMessage(input) {
52
- return this.request("/inbox", { method: "POST", body: input });
53
- }
54
- listInboxMessages(input = {}) {
55
- return this.request("/inbox", { query: input });
56
- }
57
- claimInboxMessage(id, input = {}) {
58
- return this.request(`/inbox/${encodeURIComponent(id)}/claim`, { method: "POST", body: input });
59
- }
60
- getMemory(id) {
61
- return this.request(`/memories/${encodeURIComponent(id)}`);
62
- }
63
- updateMemory(id, input) {
64
- return this.request(`/memories/${encodeURIComponent(id)}`, { method: "PATCH", body: input });
65
- }
66
- deleteMemory(id) {
67
- return this.request(`/memories/${encodeURIComponent(id)}`, { method: "DELETE" });
68
- }
69
- memoryUsage() {
70
- return this.request("/usage");
71
- }
72
- listRuns(input = {}) {
73
- return this.request("/runs", { query: input });
74
- }
75
- createRun(slug, input = {}) {
76
- return this.request(`/runs/${encodeURIComponent(slug)}`, { method: "POST", body: input });
77
- }
78
- getRun(id) {
79
- return this.request(`/runs/${encodeURIComponent(id)}`);
80
- }
81
- listApprovals() {
82
- return this.request("/approvals");
83
- }
84
- billingStatus() {
85
- return this.request("/billing/status");
86
- }
87
- listCreditPacks() {
88
- return this.request("/billing/credits");
89
- }
90
- buyCredits(input) {
91
- return this.request("/billing/credits", { method: "POST", body: input });
92
- }
93
- async request(path, options = {}) {
94
- const method = options.method ?? "GET";
95
- const requiresAuth = options.requiresAuth !== false;
96
- if (requiresAuth && !this.token) {
97
- throw new MementosRemoteError("MEMENTOS_API_TOKEN is required for hosted mementos.md requests", 401, null);
98
- }
99
- const url = new URL(`${this.apiUrl}${path.startsWith("/") ? path : `/${path}`}`);
100
- for (const [key, value] of Object.entries(options.query ?? {})) {
101
- if (value === undefined || value === null || value === "")
102
- continue;
103
- url.searchParams.set(key, String(value));
104
- }
105
- const headers = new Headers({ accept: "application/json" });
106
- if (requiresAuth)
107
- headers.set("authorization", `Bearer ${this.token}`);
108
- if (options.body !== undefined)
109
- headers.set("content-type", "application/json");
110
- const response = await this.fetchImpl(url, {
111
- method,
112
- headers,
113
- body: options.body === undefined ? undefined : JSON.stringify(options.body)
114
- });
115
- const payload = await readPayload(response);
116
- if (!response.ok) {
117
- throw new MementosRemoteError(readErrorMessage(payload, response.status), response.status, payload);
118
- }
119
- return payload;
120
- }
121
- }
122
- function createRemoteClientFromEnv(env = process.env) {
123
- return new MementosRemoteClient({
124
- apiUrl: env.MEMENTOS_API_URL,
125
- token: env.MEMENTOS_API_TOKEN ?? env.MEMENTOS_PLATFORM_TOKEN ?? env.PLATFORM_API_TOKEN ?? env.APP_API_KEY
126
- });
127
- }
128
- function normalizeApiUrl(input) {
129
- const trimmed = input.trim().replace(/\/+$/, "");
130
- if (!trimmed)
131
- return DEFAULT_API_URL;
132
- return trimmed.endsWith("/api/v1") ? trimmed : `${trimmed}/api/v1`;
133
- }
134
- async function readPayload(response) {
135
- const text = await response.text();
136
- if (!text)
137
- return null;
138
- try {
139
- return JSON.parse(text);
140
- } catch {
141
- return text;
142
- }
143
- }
144
- function readErrorMessage(payload, status) {
145
- if (typeof payload === "object" && payload !== null && "error" in payload) {
146
- const value = payload.error;
147
- if (typeof value === "string" && value.trim())
148
- return value;
149
- }
150
- return `mementos.md request failed with status ${status}`;
151
- }
152
-
153
- // src/mcp-runtime.ts
154
- var MEMENTOS_MCP_VERSION = "0.14.30";
155
- var AUTHLESS_SCHEMA = {
156
- type: "object",
157
- properties: {},
158
- additionalProperties: false
159
- };
160
- var OPEN_SCHEMA = {
161
- type: "object",
162
- additionalProperties: true
163
- };
164
- var REMOTE_MCP_TOOLS = [
165
- {
166
- name: "capabilities.list",
167
- description: "List hosted mementos.md capabilities.",
168
- inputSchema: AUTHLESS_SCHEMA,
169
- run: (_input, client) => client.listCapabilities()
170
- },
171
- {
172
- name: "agent.register",
173
- description: "Register a hosted mementos.md agent.",
174
- inputSchema: OPEN_SCHEMA,
175
- run: (input, client) => client.registerAgent(input)
176
- },
177
- {
178
- name: "agent.heartbeat",
179
- description: "Record a heartbeat for a hosted mementos.md agent.",
180
- inputSchema: OPEN_SCHEMA,
181
- run: (input, client) => client.heartbeatAgent(input)
182
- },
183
- {
184
- name: "memory.save",
185
- description: "Save a hosted mementos.md memory.",
186
- inputSchema: OPEN_SCHEMA,
187
- run: (input, client) => client.saveMemory(input)
188
- },
189
- {
190
- name: "memory.search",
191
- description: "Search hosted mementos.md memories.",
192
- inputSchema: OPEN_SCHEMA,
193
- run: (input, client) => client.searchMemories(input)
194
- },
195
- {
196
- name: "memory.get",
197
- description: "Read a hosted mementos.md memory by id.",
198
- inputSchema: OPEN_SCHEMA,
199
- run: (input, client) => client.getMemory(requiredText(input.id, "memory id is required"))
200
- },
201
- {
202
- name: "memory.update",
203
- description: "Update a hosted mementos.md memory by id.",
204
- inputSchema: OPEN_SCHEMA,
205
- run: (input, client) => {
206
- const { id, ...body } = input;
207
- return client.updateMemory(requiredText(id, "memory id is required"), body);
208
- }
209
- },
210
- {
211
- name: "memory.delete",
212
- description: "Delete a hosted mementos.md memory by id.",
213
- inputSchema: OPEN_SCHEMA,
214
- run: (input, client) => client.deleteMemory(requiredText(input.id, "memory id is required"))
215
- },
216
- {
217
- name: "memory.usage",
218
- description: "Read hosted mementos.md memory usage.",
219
- inputSchema: AUTHLESS_SCHEMA,
220
- run: (_input, client) => client.memoryUsage()
221
- },
222
- {
223
- name: "inbox.send",
224
- description: "Send a hosted mementos.md inbox message to an agent.",
225
- inputSchema: OPEN_SCHEMA,
226
- run: (input, client) => client.sendInboxMessage(input)
227
- },
228
- {
229
- name: "inbox.list",
230
- description: "List hosted mementos.md inbox messages for an agent.",
231
- inputSchema: OPEN_SCHEMA,
232
- run: (input, client) => client.listInboxMessages(input)
233
- },
234
- {
235
- name: "inbox.claim",
236
- description: "Claim and mark a hosted mementos.md inbox message delivered.",
237
- inputSchema: OPEN_SCHEMA,
238
- run: (input, client) => {
239
- const { id, ...body } = input;
240
- return client.claimInboxMessage(requiredText(id, "inbox message id is required"), body);
241
- }
242
- },
243
- {
244
- name: "runs.create",
245
- description: "Queue a hosted mementos.md run.",
246
- inputSchema: OPEN_SCHEMA,
247
- run: (input, client) => {
248
- const slug = requiredText(input.slug, "run slug is required");
249
- const body = readObject(input.input) ?? {};
250
- return client.createRun(slug, body);
251
- }
252
- },
253
- {
254
- name: "brain.fire",
255
- description: "Queue hosted mementos.md Cerebras brain workers.",
256
- inputSchema: OPEN_SCHEMA,
257
- run: (input, client) => client.createRun("brain.fire", input)
258
- },
259
- {
260
- name: "runs.get",
261
- description: "Read a hosted mementos.md run by id.",
262
- inputSchema: OPEN_SCHEMA,
263
- run: (input, client) => client.getRun(requiredText(input.id, "run id is required"))
264
- },
265
- {
266
- name: "approvals.list",
267
- description: "List hosted mementos.md approval requests.",
268
- inputSchema: AUTHLESS_SCHEMA,
269
- run: (_input, client) => client.listApprovals()
270
- },
271
- {
272
- name: "billing.status",
273
- description: "Read hosted mementos.md billing status.",
274
- inputSchema: AUTHLESS_SCHEMA,
275
- run: (_input, client) => client.billingStatus()
276
- },
277
- {
278
- name: "billing.credits",
279
- description: "List hosted mementos.md credit packs.",
280
- inputSchema: AUTHLESS_SCHEMA,
281
- run: (_input, client) => client.listCreditPacks()
282
- },
283
- {
284
- name: "billing.buy",
285
- description: "Create a hosted mementos.md credit checkout session.",
286
- inputSchema: OPEN_SCHEMA,
287
- run: (input, client) => {
288
- const credits = Number(input.credits);
289
- if (!Number.isInteger(credits) || credits < 1)
290
- throw new Error("credits must be a positive integer");
291
- return client.buyCredits({ credits });
292
- }
293
- }
294
- ];
295
- async function callRemoteMcpTool(name, input = {}, client = createRemoteClientFromEnv()) {
296
- const tool = REMOTE_MCP_TOOLS.find((candidate) => candidate.name === name);
297
- if (!tool)
298
- throw new Error(`Unknown MCP tool: ${name}`);
299
- return tool.run(input, client);
300
- }
301
- async function handleMcpMessage(message, client = createRemoteClientFromEnv()) {
302
- const id = message?.id ?? null;
303
- try {
304
- if (message?.method === "initialize") {
305
- return jsonRpcResult(id, {
306
- protocolVersion: "2024-11-05",
307
- serverInfo: { name: "mementos", version: MEMENTOS_MCP_VERSION },
308
- capabilities: { tools: {} }
309
- });
310
- }
311
- if (message?.method === "tools/list") {
312
- return jsonRpcResult(id, {
313
- tools: REMOTE_MCP_TOOLS.map(({ run: _run, ...tool }) => tool)
314
- });
315
- }
316
- if (message?.method === "tools/call") {
317
- const result = await callRemoteMcpTool(String(message.params?.name ?? ""), readObject(message.params?.arguments) ?? {}, client);
318
- return jsonRpcResult(id, { content: [{ type: "json", json: result }] });
319
- }
320
- return jsonRpcError(id, -32601, `Unknown method: ${String(message?.method ?? "")}`);
321
- } catch (error) {
322
- return jsonRpcError(id, -32000, error.message);
323
- }
324
- }
325
- function startMcpStdio(client = createRemoteClientFromEnv()) {
326
- const lines = createInterface({ input: process.stdin });
327
- lines.on("line", async (line) => {
328
- try {
329
- const response = await handleMcpMessage(JSON.parse(line), client);
330
- process.stdout.write(`${JSON.stringify(response)}
331
- `);
332
- } catch (error) {
333
- process.stdout.write(`${JSON.stringify(jsonRpcError(null, -32700, error.message))}
334
- `);
335
- }
336
- });
337
- }
338
- function jsonRpcResult(id, result) {
339
- return { jsonrpc: "2.0", id, result };
340
- }
341
- function jsonRpcError(id, code, message) {
342
- return { jsonrpc: "2.0", id, error: { code, message } };
343
- }
344
- function readObject(input) {
345
- return typeof input === "object" && input !== null && !Array.isArray(input) ? input : undefined;
346
- }
347
- function requiredText(input, message) {
348
- if (typeof input !== "string" || !input.trim())
349
- throw new Error(message);
350
- return input.trim();
351
- }
352
-
353
- // src/mcp.ts
354
- startMcpStdio();
@@ -1,49 +0,0 @@
1
- export declare const DEFAULT_API_URL = "https://mementos.md/api/v1";
2
- export interface RemoteClientConfig {
3
- apiUrl?: string;
4
- token?: string;
5
- fetch?: FetchLike;
6
- }
7
- export interface RemoteRequestOptions {
8
- method?: "GET" | "POST" | "PATCH" | "DELETE";
9
- body?: unknown;
10
- query?: Record<string, unknown>;
11
- requiresAuth?: boolean;
12
- }
13
- export type FetchLike = (input: URL | RequestInfo, init?: RequestInit) => Promise<Response>;
14
- export declare class MementosRemoteError extends Error {
15
- readonly status: number;
16
- readonly response: unknown;
17
- constructor(message: string, status: number, response: unknown);
18
- }
19
- export declare class MementosRemoteClient {
20
- readonly apiUrl: string;
21
- private readonly token?;
22
- private readonly fetchImpl;
23
- constructor(config?: RemoteClientConfig);
24
- listCapabilities(): Promise<unknown>;
25
- listAgents(): Promise<unknown>;
26
- registerAgent(input: Record<string, unknown>): Promise<unknown>;
27
- heartbeatAgent(input: Record<string, unknown>): Promise<unknown>;
28
- saveMemory(input: Record<string, unknown>): Promise<unknown>;
29
- searchMemories(input?: Record<string, unknown>): Promise<unknown>;
30
- injectionContext(input?: Record<string, unknown>): Promise<unknown>;
31
- sendInboxMessage(input: Record<string, unknown>): Promise<unknown>;
32
- listInboxMessages(input?: Record<string, unknown>): Promise<unknown>;
33
- claimInboxMessage(id: string, input?: Record<string, unknown>): Promise<unknown>;
34
- getMemory(id: string): Promise<unknown>;
35
- updateMemory(id: string, input: Record<string, unknown>): Promise<unknown>;
36
- deleteMemory(id: string): Promise<unknown>;
37
- memoryUsage(): Promise<unknown>;
38
- listRuns(input?: Record<string, unknown>): Promise<unknown>;
39
- createRun(slug: string, input?: Record<string, unknown>): Promise<unknown>;
40
- getRun(id: string): Promise<unknown>;
41
- listApprovals(): Promise<unknown>;
42
- billingStatus(): Promise<unknown>;
43
- listCreditPacks(): Promise<unknown>;
44
- buyCredits(input: Record<string, unknown>): Promise<unknown>;
45
- request(path: string, options?: RemoteRequestOptions): Promise<unknown>;
46
- }
47
- export declare function createRemoteClientFromEnv(env?: Record<string, string | undefined>): MementosRemoteClient;
48
- export declare function normalizeApiUrl(input: string): string;
49
- //# sourceMappingURL=remote-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-client.d.ts","sourceRoot":"","sources":["../src/remote-client.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5F,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;CAM/D;AAED,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,MAAM,GAAE,kBAAuB;IAM3C,gBAAgB;IAIhB,UAAU;IAIV,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI5C,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI7C,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,cAAc,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIlD,gBAAgB,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIpD,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI/C,iBAAiB,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIrD,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAIjE,SAAS,CAAC,EAAE,EAAE,MAAM;IAIpB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIvD,YAAY,CAAC,EAAE,EAAE,MAAM;IAIvB,WAAW;IAIX,QAAQ,CAAC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAI5C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAI3D,MAAM,CAAC,EAAE,EAAE,MAAM;IAIjB,aAAa;IAIb,aAAa;IAIb,eAAe;IAIf,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAInC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;CA4B/D;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,oBAAoB,CAKrH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIrD"}