bernard-agent 0.4.0 → 0.5.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 (138) hide show
  1. package/README.md +69 -14
  2. package/THIRD-PARTY-NOTICES +212 -0
  3. package/dist/agent.d.ts +32 -3
  4. package/dist/agent.js +59 -11
  5. package/dist/agent.js.map +1 -1
  6. package/dist/config.d.ts +67 -0
  7. package/dist/config.js +103 -22
  8. package/dist/config.js.map +1 -1
  9. package/dist/context.d.ts +7 -0
  10. package/dist/context.js +4 -0
  11. package/dist/context.js.map +1 -1
  12. package/dist/cron/cli.d.ts +6 -0
  13. package/dist/cron/cli.js +8 -0
  14. package/dist/cron/cli.js.map +1 -1
  15. package/dist/cron/client.d.ts +9 -0
  16. package/dist/cron/client.js +9 -0
  17. package/dist/cron/client.js.map +1 -1
  18. package/dist/cron/daemon.js +8 -0
  19. package/dist/cron/daemon.js.map +1 -1
  20. package/dist/cron/log-store.d.ts +18 -0
  21. package/dist/cron/log-store.js +22 -7
  22. package/dist/cron/log-store.js.map +1 -1
  23. package/dist/cron/notify.d.ts +7 -0
  24. package/dist/cron/notify.js +16 -0
  25. package/dist/cron/notify.js.map +1 -1
  26. package/dist/cron/runner.d.ts +11 -0
  27. package/dist/cron/runner.js +63 -13
  28. package/dist/cron/runner.js.map +1 -1
  29. package/dist/cron/scheduler.d.ts +16 -0
  30. package/dist/cron/scheduler.js +16 -0
  31. package/dist/cron/scheduler.js.map +1 -1
  32. package/dist/cron/store.d.ts +32 -0
  33. package/dist/cron/store.js +51 -24
  34. package/dist/cron/store.js.map +1 -1
  35. package/dist/cron/types.d.ts +19 -0
  36. package/dist/domains.d.ts +15 -0
  37. package/dist/domains.js +19 -0
  38. package/dist/domains.js.map +1 -1
  39. package/dist/embeddings.d.ts +9 -3
  40. package/dist/embeddings.js +55 -10
  41. package/dist/embeddings.js.map +1 -1
  42. package/dist/facts-cli.d.ts +14 -0
  43. package/dist/facts-cli.js +51 -0
  44. package/dist/facts-cli.js.map +1 -1
  45. package/dist/history.d.ts +8 -0
  46. package/dist/history.js +14 -9
  47. package/dist/history.js.map +1 -1
  48. package/dist/index.d.ts +5 -0
  49. package/dist/index.js +22 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/logger.d.ts +6 -0
  52. package/dist/logger.js +6 -0
  53. package/dist/logger.js.map +1 -1
  54. package/dist/mcp.d.ts +87 -0
  55. package/dist/mcp.js +106 -25
  56. package/dist/mcp.js.map +1 -1
  57. package/dist/memory-context.d.ts +4 -0
  58. package/dist/memory-context.js +4 -2
  59. package/dist/memory-context.js.map +1 -1
  60. package/dist/memory.d.ts +17 -0
  61. package/dist/memory.js +23 -7
  62. package/dist/memory.js.map +1 -1
  63. package/dist/migrate.d.ts +13 -0
  64. package/dist/migrate.js +209 -0
  65. package/dist/migrate.js.map +1 -0
  66. package/dist/output.d.ts +45 -0
  67. package/dist/output.js +61 -0
  68. package/dist/output.js.map +1 -1
  69. package/dist/paths.d.ts +23 -0
  70. package/dist/paths.js +82 -0
  71. package/dist/paths.js.map +1 -0
  72. package/dist/providers/index.d.ts +7 -0
  73. package/dist/providers/index.js +7 -0
  74. package/dist/providers/index.js.map +1 -1
  75. package/dist/providers/types.d.ts +4 -0
  76. package/dist/rag-query.d.ts +20 -0
  77. package/dist/rag-query.js +69 -3
  78. package/dist/rag-query.js.map +1 -1
  79. package/dist/rag-worker.js.map +1 -1
  80. package/dist/rag.d.ts +27 -0
  81. package/dist/rag.js +29 -19
  82. package/dist/rag.js.map +1 -1
  83. package/dist/repl.d.ts +6 -0
  84. package/dist/repl.js +147 -9
  85. package/dist/repl.js.map +1 -1
  86. package/dist/routines.d.ts +49 -0
  87. package/dist/routines.js +172 -0
  88. package/dist/routines.js.map +1 -0
  89. package/dist/setup.d.ts +5 -0
  90. package/dist/setup.js +7 -1
  91. package/dist/setup.js.map +1 -1
  92. package/dist/theme.d.ts +41 -0
  93. package/dist/theme.js +25 -0
  94. package/dist/theme.js.map +1 -1
  95. package/dist/tools/cron-logs.d.ts +6 -0
  96. package/dist/tools/cron-logs.js +6 -0
  97. package/dist/tools/cron-logs.js.map +1 -1
  98. package/dist/tools/cron.d.ts +7 -0
  99. package/dist/tools/cron.js +7 -0
  100. package/dist/tools/cron.js.map +1 -1
  101. package/dist/tools/datetime.d.ts +1 -0
  102. package/dist/tools/datetime.js +1 -0
  103. package/dist/tools/datetime.js.map +1 -1
  104. package/dist/tools/index.d.ts +10 -336
  105. package/dist/tools/index.js +11 -1
  106. package/dist/tools/index.js.map +1 -1
  107. package/dist/tools/mcp-url.d.ts +6 -0
  108. package/dist/tools/mcp-url.js +6 -0
  109. package/dist/tools/mcp-url.js.map +1 -1
  110. package/dist/tools/mcp.d.ts +6 -0
  111. package/dist/tools/mcp.js +6 -0
  112. package/dist/tools/mcp.js.map +1 -1
  113. package/dist/tools/memory.d.ts +14 -0
  114. package/dist/tools/memory.js +16 -1
  115. package/dist/tools/memory.js.map +1 -1
  116. package/dist/tools/routine.d.ts +35 -0
  117. package/dist/tools/routine.js +93 -0
  118. package/dist/tools/routine.js.map +1 -0
  119. package/dist/tools/shell.d.ts +15 -1
  120. package/dist/tools/shell.js +15 -1
  121. package/dist/tools/shell.js.map +1 -1
  122. package/dist/tools/subagent.d.ts +18 -1
  123. package/dist/tools/subagent.js +18 -1
  124. package/dist/tools/subagent.js.map +1 -1
  125. package/dist/tools/time.d.ts +19 -0
  126. package/dist/tools/time.js +19 -0
  127. package/dist/tools/time.js.map +1 -1
  128. package/dist/tools/types.d.ts +6 -0
  129. package/dist/tools/wait.d.ts +3 -0
  130. package/dist/tools/wait.js +3 -0
  131. package/dist/tools/wait.js.map +1 -1
  132. package/dist/tools/web.d.ts +6 -0
  133. package/dist/tools/web.js +20 -43
  134. package/dist/tools/web.js.map +1 -1
  135. package/dist/update.d.ts +5 -0
  136. package/dist/update.js +4 -5
  137. package/dist/update.js.map +1 -1
  138. package/package.json +4 -3
package/dist/mcp.js CHANGED
@@ -41,12 +41,18 @@ exports.addMCPUrlServer = addMCPUrlServer;
41
41
  exports.removeMCPServer = removeMCPServer;
42
42
  const fs = __importStar(require("node:fs"));
43
43
  const path = __importStar(require("node:path"));
44
- const os = __importStar(require("node:os"));
45
44
  const mcp_1 = require("@ai-sdk/mcp");
46
45
  const mcp_stdio_1 = require("@ai-sdk/mcp/mcp-stdio");
47
46
  const ai_1 = require("ai");
48
47
  const output_js_1 = require("./output.js");
49
- const CONFIG_PATH = path.join(os.homedir(), '.bernard', 'mcp.json');
48
+ const paths_js_1 = require("./paths.js");
49
+ /**
50
+ * Manages the lifecycle of MCP (Model Context Protocol) server connections.
51
+ *
52
+ * Reads server definitions from the MCP config file, establishes connections
53
+ * (stdio or URL-based), aggregates tools from all servers, and handles
54
+ * automatic reconnection with retry when a tool call fails.
55
+ */
50
56
  class MCPManager {
51
57
  clients = new Map();
52
58
  serverStatuses = [];
@@ -55,18 +61,27 @@ class MCPManager {
55
61
  toolServerMap = new Map();
56
62
  // Per-server reconnection lock to coalesce concurrent reconnect attempts
57
63
  reconnectPromises = new Map();
64
+ /**
65
+ * Reads and parses the MCP configuration file.
66
+ * @returns The parsed config, or an empty config if the file does not exist.
67
+ * @throws {Error} If the file exists but contains invalid JSON.
68
+ */
58
69
  loadConfig() {
59
- if (!fs.existsSync(CONFIG_PATH)) {
70
+ if (!fs.existsSync(paths_js_1.MCP_CONFIG_PATH)) {
60
71
  return { mcpServers: {} };
61
72
  }
62
- const raw = fs.readFileSync(CONFIG_PATH, 'utf-8');
73
+ const raw = fs.readFileSync(paths_js_1.MCP_CONFIG_PATH, 'utf-8');
63
74
  try {
64
75
  return JSON.parse(raw);
65
76
  }
66
77
  catch {
67
- throw new Error(`Invalid JSON in ${CONFIG_PATH}`);
78
+ throw new Error(`Invalid JSON in ${paths_js_1.MCP_CONFIG_PATH}`);
68
79
  }
69
80
  }
81
+ /**
82
+ * Creates an MCP client for the given server configuration.
83
+ * @internal
84
+ */
70
85
  async createClientForConfig(serverConfig) {
71
86
  if ('url' in serverConfig) {
72
87
  return (0, mcp_1.createMCPClient)({
@@ -88,6 +103,13 @@ class MCPManager {
88
103
  return (0, mcp_1.createMCPClient)({ transport });
89
104
  }
90
105
  }
106
+ /**
107
+ * Connects to all MCP servers defined in the config file.
108
+ *
109
+ * Connections are established concurrently via `Promise.allSettled`.
110
+ * Servers that fail to connect are recorded with an error status and
111
+ * logged, but do not prevent other servers from connecting.
112
+ */
91
113
  async connect() {
92
114
  let config;
93
115
  try {
@@ -151,6 +173,14 @@ class MCPManager {
151
173
  }
152
174
  }
153
175
  }
176
+ /**
177
+ * Reconnects a single MCP server by name, closing the old client first.
178
+ *
179
+ * Concurrent calls for the same server are coalesced so only one
180
+ * reconnection attempt runs at a time.
181
+ * @param name - The server key as defined in the config file.
182
+ * @returns `true` if the reconnection succeeded, `false` otherwise.
183
+ */
154
184
  async reconnectServer(name) {
155
185
  // Coalesce concurrent reconnect attempts for the same server —
156
186
  // if a reconnect is already in progress, return its promise instead
@@ -167,6 +197,10 @@ class MCPManager {
167
197
  this.reconnectPromises.delete(name);
168
198
  }
169
199
  }
200
+ /**
201
+ * Performs the actual reconnection logic for a single server.
202
+ * @internal
203
+ */
170
204
  async doReconnectServer(name) {
171
205
  const config = this.serverConfigs.get(name);
172
206
  if (!config)
@@ -225,6 +259,10 @@ class MCPManager {
225
259
  return false;
226
260
  }
227
261
  }
262
+ /**
263
+ * Converts a dynamic MCP tool to the function-tool shape expected by AI SDK v4.
264
+ * @internal
265
+ */
228
266
  convertTool(name, tool) {
229
267
  if (tool.type === 'dynamic') {
230
268
  const { type: _type, inputSchema, ...rest } = tool;
@@ -235,6 +273,12 @@ class MCPManager {
235
273
  }
236
274
  return tool;
237
275
  }
276
+ /**
277
+ * Returns all MCP tools, converted for AI SDK v4 compatibility.
278
+ *
279
+ * Each tool's `execute` method is wrapped with automatic reconnect-and-retry:
280
+ * if a call fails, the owning server is reconnected and the call retried once.
281
+ */
238
282
  getTools() {
239
283
  // Convert dynamic MCP tools to function tools compatible with AI SDK v4.
240
284
  // @ai-sdk/mcp@1.x returns tools with type:'dynamic' and inputSchema from
@@ -271,12 +315,15 @@ class MCPManager {
271
315
  }
272
316
  return converted;
273
317
  }
318
+ /** Returns the current connection status for every configured server. */
274
319
  getServerStatuses() {
275
320
  return this.serverStatuses;
276
321
  }
322
+ /** Returns the names of all servers that are currently connected. */
277
323
  getConnectedServerNames() {
278
324
  return this.serverStatuses.filter((s) => s.connected).map((s) => s.name);
279
325
  }
326
+ /** Gracefully closes all active MCP client connections. */
280
327
  async close() {
281
328
  const closePromises = Array.from(this.clients.values()).map((client) => client.close().catch(() => { }));
282
329
  await Promise.allSettled(closePromises);
@@ -284,17 +331,22 @@ class MCPManager {
284
331
  }
285
332
  }
286
333
  exports.MCPManager = MCPManager;
334
+ /**
335
+ * Lists all MCP servers in the config file with their connection details.
336
+ * @returns An array of server summaries. Returns an empty array if no config file exists.
337
+ * @throws {Error} If the config file contains invalid JSON.
338
+ */
287
339
  function listMCPServers() {
288
- if (!fs.existsSync(CONFIG_PATH)) {
340
+ if (!fs.existsSync(paths_js_1.MCP_CONFIG_PATH)) {
289
341
  return [];
290
342
  }
291
- const raw = fs.readFileSync(CONFIG_PATH, 'utf-8');
343
+ const raw = fs.readFileSync(paths_js_1.MCP_CONFIG_PATH, 'utf-8');
292
344
  let config;
293
345
  try {
294
346
  config = JSON.parse(raw);
295
347
  }
296
348
  catch {
297
- throw new Error(`Invalid JSON in ${CONFIG_PATH}`);
349
+ throw new Error(`Invalid JSON in ${paths_js_1.MCP_CONFIG_PATH}`);
298
350
  }
299
351
  return Object.entries(config.mcpServers).map(([key, server]) => {
300
352
  if ('url' in server) {
@@ -303,20 +355,35 @@ function listMCPServers() {
303
355
  return { key, command: server.command, args: server.args ?? [] };
304
356
  });
305
357
  }
358
+ /**
359
+ * Retrieves the configuration for a single MCP server by key.
360
+ * @param key - The server key as defined in the config file.
361
+ * @returns The server config, or `undefined` if the key or config file does not exist.
362
+ * @throws {Error} If the config file contains invalid JSON.
363
+ */
306
364
  function getMCPServer(key) {
307
- if (!fs.existsSync(CONFIG_PATH)) {
365
+ if (!fs.existsSync(paths_js_1.MCP_CONFIG_PATH)) {
308
366
  return undefined;
309
367
  }
310
- const raw = fs.readFileSync(CONFIG_PATH, 'utf-8');
368
+ const raw = fs.readFileSync(paths_js_1.MCP_CONFIG_PATH, 'utf-8');
311
369
  let config;
312
370
  try {
313
371
  config = JSON.parse(raw);
314
372
  }
315
373
  catch {
316
- throw new Error(`Invalid JSON in ${CONFIG_PATH}`);
374
+ throw new Error(`Invalid JSON in ${paths_js_1.MCP_CONFIG_PATH}`);
317
375
  }
318
376
  return config.mcpServers[key];
319
377
  }
378
+ /**
379
+ * Adds a stdio-based MCP server entry to the MCP config file.
380
+ * @param key - Unique, whitespace-free identifier for the server.
381
+ * @param command - The command to spawn (e.g. `"npx"`).
382
+ * @param args - Optional command-line arguments.
383
+ * @param env - Optional extra environment variables merged with `process.env`.
384
+ * @throws {Error} If the key is empty/contains whitespace, the command is empty,
385
+ * the key already exists, or the config file contains invalid JSON.
386
+ */
320
387
  function addMCPServer(key, command, args, env) {
321
388
  if (!key || /\s/.test(key)) {
322
389
  throw new Error('Server key must be non-empty and contain no whitespace.');
@@ -324,18 +391,18 @@ function addMCPServer(key, command, args, env) {
324
391
  if (!command) {
325
392
  throw new Error('Command must be non-empty.');
326
393
  }
327
- const configDir = path.dirname(CONFIG_PATH);
394
+ const configDir = path.dirname(paths_js_1.MCP_CONFIG_PATH);
328
395
  if (!fs.existsSync(configDir)) {
329
396
  fs.mkdirSync(configDir, { recursive: true });
330
397
  }
331
398
  let config = { mcpServers: {} };
332
- if (fs.existsSync(CONFIG_PATH)) {
333
- const raw = fs.readFileSync(CONFIG_PATH, 'utf-8');
399
+ if (fs.existsSync(paths_js_1.MCP_CONFIG_PATH)) {
400
+ const raw = fs.readFileSync(paths_js_1.MCP_CONFIG_PATH, 'utf-8');
334
401
  try {
335
402
  config = JSON.parse(raw);
336
403
  }
337
404
  catch {
338
- throw new Error(`Invalid JSON in ${CONFIG_PATH}`);
405
+ throw new Error(`Invalid JSON in ${paths_js_1.MCP_CONFIG_PATH}`);
339
406
  }
340
407
  }
341
408
  if (key in config.mcpServers) {
@@ -347,8 +414,17 @@ function addMCPServer(key, command, args, env) {
347
414
  if (env && Object.keys(env).length > 0)
348
415
  entry.env = env;
349
416
  config.mcpServers[key] = entry;
350
- fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
417
+ fs.writeFileSync(paths_js_1.MCP_CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
351
418
  }
419
+ /**
420
+ * Adds a URL-based (SSE or HTTP) MCP server entry to the MCP config file.
421
+ * @param key - Unique, whitespace-free identifier for the server.
422
+ * @param url - The server endpoint URL.
423
+ * @param type - Transport type; defaults to `'sse'` at connection time.
424
+ * @param headers - Optional HTTP headers sent with every request.
425
+ * @throws {Error} If the key is empty/contains whitespace, the URL is empty,
426
+ * the key already exists, or the config file contains invalid JSON.
427
+ */
352
428
  function addMCPUrlServer(key, url, type, headers) {
353
429
  if (!key || /\s/.test(key)) {
354
430
  throw new Error('Server key must be non-empty and contain no whitespace.');
@@ -356,18 +432,18 @@ function addMCPUrlServer(key, url, type, headers) {
356
432
  if (!url) {
357
433
  throw new Error('URL must be non-empty.');
358
434
  }
359
- const configDir = path.dirname(CONFIG_PATH);
435
+ const configDir = path.dirname(paths_js_1.MCP_CONFIG_PATH);
360
436
  if (!fs.existsSync(configDir)) {
361
437
  fs.mkdirSync(configDir, { recursive: true });
362
438
  }
363
439
  let config = { mcpServers: {} };
364
- if (fs.existsSync(CONFIG_PATH)) {
365
- const raw = fs.readFileSync(CONFIG_PATH, 'utf-8');
440
+ if (fs.existsSync(paths_js_1.MCP_CONFIG_PATH)) {
441
+ const raw = fs.readFileSync(paths_js_1.MCP_CONFIG_PATH, 'utf-8');
366
442
  try {
367
443
  config = JSON.parse(raw);
368
444
  }
369
445
  catch {
370
- throw new Error(`Invalid JSON in ${CONFIG_PATH}`);
446
+ throw new Error(`Invalid JSON in ${paths_js_1.MCP_CONFIG_PATH}`);
371
447
  }
372
448
  }
373
449
  if (key in config.mcpServers) {
@@ -379,19 +455,24 @@ function addMCPUrlServer(key, url, type, headers) {
379
455
  if (headers && Object.keys(headers).length > 0)
380
456
  entry.headers = headers;
381
457
  config.mcpServers[key] = entry;
382
- fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
458
+ fs.writeFileSync(paths_js_1.MCP_CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
383
459
  }
460
+ /**
461
+ * Removes an MCP server entry from the MCP config file.
462
+ * @param key - The server key to remove.
463
+ * @throws {Error} If the config file does not exist, contains invalid JSON, or the key is not found.
464
+ */
384
465
  function removeMCPServer(key) {
385
- if (!fs.existsSync(CONFIG_PATH)) {
466
+ if (!fs.existsSync(paths_js_1.MCP_CONFIG_PATH)) {
386
467
  throw new Error(`No MCP config file found. No servers configured.`);
387
468
  }
388
- const raw = fs.readFileSync(CONFIG_PATH, 'utf-8');
469
+ const raw = fs.readFileSync(paths_js_1.MCP_CONFIG_PATH, 'utf-8');
389
470
  let config;
390
471
  try {
391
472
  config = JSON.parse(raw);
392
473
  }
393
474
  catch {
394
- throw new Error(`Invalid JSON in ${CONFIG_PATH}`);
475
+ throw new Error(`Invalid JSON in ${paths_js_1.MCP_CONFIG_PATH}`);
395
476
  }
396
477
  if (!(key in config.mcpServers)) {
397
478
  const validKeys = Object.keys(config.mcpServers);
@@ -399,6 +480,6 @@ function removeMCPServer(key) {
399
480
  throw new Error(`MCP server "${key}" not found.${hint}`);
400
481
  }
401
482
  delete config.mcpServers[key];
402
- fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
483
+ fs.writeFileSync(paths_js_1.MCP_CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
403
484
  }
404
485
  //# sourceMappingURL=mcp.js.map
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import type { MemoryStore } from './memory.js';
2
2
  import type { RAGSearchResult } from './rag.js';
3
+ /** Options for building the memory/RAG context block injected into the system prompt. */
3
4
  export interface MemoryContextOptions {
5
+ /** Persistent disk-backed memory store providing saved notes and scratch data. */
4
6
  memoryStore: MemoryStore;
7
+ /** RAG search results to include as recalled context (omit or empty to skip). */
5
8
  ragResults?: RAGSearchResult[];
9
+ /** Whether to include session-scoped scratch notes (default: true). */
6
10
  includeScratch?: boolean;
7
11
  }
8
12
  /**
@@ -11,8 +11,10 @@ function buildMemoryContext(options) {
11
11
  const { memoryStore, ragResults, includeScratch = true } = options;
12
12
  let context = '';
13
13
  if (ragResults && ragResults.length > 0) {
14
- context +=
15
- '\n\n## Recalled Context\nReference only if directly relevant to the current discussion.';
14
+ context += `
15
+
16
+ ## Recalled Context
17
+ These are auto-recalled observations from past sessions. Treat them as hints — they provide useful background but may be outdated, from a different project, or too general for the current situation. Use your judgment: apply what's relevant, ignore what isn't, and never follow a recalled fact blindly when the current context suggests otherwise.`;
16
18
  const byDomain = new Map();
17
19
  for (const r of ragResults) {
18
20
  const d = r.domain;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-context.js","sourceRoot":"","sources":["../src/memory-context.ts"],"names":[],"mappings":";;AAeA,gDA2CC;AAxDD,6CAAyC;AAQzC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,OAA6B;IAC9D,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACnE,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,yFAAyF,CAAC;QAE5F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAA,sBAAS,EAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,IAAI,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAoB,EAAE,CAAC;IACpD,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,4BAA4B,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,OAAO,IAAI,SAAS,GAAG,KAAK,OAAO,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,uCAAuC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;gBACrC,OAAO,IAAI,SAAS,GAAG,KAAK,OAAO,IAAI,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"memory-context.js","sourceRoot":"","sources":["../src/memory-context.ts"],"names":[],"mappings":";;AAmBA,gDA6CC;AA9DD,6CAAyC;AAYzC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,OAA6B;IAC9D,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACnE,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI;;;0VAG2U,CAAC;QAEvV,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAA,sBAAS,EAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,IAAI,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAoB,EAAE,CAAC;IACpD,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,4BAA4B,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,OAAO,IAAI,SAAS,GAAG,KAAK,OAAO,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,uCAAuC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;gBACrC,OAAO,IAAI,SAAS,GAAG,KAAK,OAAO,IAAI,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/memory.d.ts CHANGED
@@ -1,17 +1,34 @@
1
1
  /** @internal */
2
2
  export declare function sanitizeKey(key: string): string;
3
+ /**
4
+ * Dual-layer store providing disk-backed persistent memory and ephemeral in-memory scratch notes.
5
+ *
6
+ * Persistent memory is stored as individual Markdown files in the data directory.
7
+ * Scratch notes live only for the current session and are discarded on exit.
8
+ */
3
9
  export declare class MemoryStore {
4
10
  private scratch;
5
11
  constructor();
12
+ /** Returns the keys of all persistent memory entries (filenames without `.md` extension). */
6
13
  listMemory(): string[];
14
+ /** Reads a persistent memory entry by key, returning `null` if it does not exist. */
7
15
  readMemory(key: string): string | null;
16
+ /** Creates or overwrites a persistent memory entry on disk. */
8
17
  writeMemory(key: string, content: string): void;
18
+ /** Deletes a persistent memory entry. Returns `true` if the entry existed and was removed. */
9
19
  deleteMemory(key: string): boolean;
20
+ /** Returns all persistent memory entries as a key-content map. */
10
21
  getAllMemoryContents(): Map<string, string>;
22
+ /** Returns the keys of all scratch notes in the current session. */
11
23
  listScratch(): string[];
24
+ /** Reads a scratch note by key, returning `null` if it does not exist. */
12
25
  readScratch(key: string): string | null;
26
+ /** Creates or overwrites a scratch note for the current session. */
13
27
  writeScratch(key: string, content: string): void;
28
+ /** Deletes a scratch note. Returns `true` if the note existed and was removed. */
14
29
  deleteScratch(key: string): boolean;
30
+ /** Returns a shallow copy of all scratch notes as a key-content map. */
15
31
  getAllScratchContents(): Map<string, string>;
32
+ /** Removes all scratch notes from the current session. */
16
33
  clearScratch(): void;
17
34
  }
package/dist/memory.js CHANGED
@@ -37,39 +37,49 @@ exports.MemoryStore = void 0;
37
37
  exports.sanitizeKey = sanitizeKey;
38
38
  const fs = __importStar(require("node:fs"));
39
39
  const path = __importStar(require("node:path"));
40
- const os = __importStar(require("node:os"));
41
- const MEMORY_DIR = path.join(os.homedir(), '.bernard', 'memory');
40
+ const paths_js_1 = require("./paths.js");
42
41
  /** @internal */
43
42
  function sanitizeKey(key) {
44
43
  return key.replace(/[^a-zA-Z0-9_-]/g, '');
45
44
  }
45
+ /**
46
+ * Dual-layer store providing disk-backed persistent memory and ephemeral in-memory scratch notes.
47
+ *
48
+ * Persistent memory is stored as individual Markdown files in the data directory.
49
+ * Scratch notes live only for the current session and are discarded on exit.
50
+ */
46
51
  class MemoryStore {
47
52
  scratch = new Map();
48
53
  constructor() {
49
- fs.mkdirSync(MEMORY_DIR, { recursive: true });
54
+ fs.mkdirSync(paths_js_1.MEMORY_DIR, { recursive: true });
50
55
  }
51
56
  // --- Persistent Memory (disk-backed) ---
57
+ /** Returns the keys of all persistent memory entries (filenames without `.md` extension). */
52
58
  listMemory() {
53
- const files = fs.readdirSync(MEMORY_DIR);
59
+ const files = fs.readdirSync(paths_js_1.MEMORY_DIR);
54
60
  return files.filter((f) => f.endsWith('.md')).map((f) => f.replace(/\.md$/, ''));
55
61
  }
62
+ /** Reads a persistent memory entry by key, returning `null` if it does not exist. */
56
63
  readMemory(key) {
57
- const filePath = path.join(MEMORY_DIR, `${sanitizeKey(key)}.md`);
64
+ const filePath = path.join(paths_js_1.MEMORY_DIR, `${sanitizeKey(key)}.md`);
58
65
  if (!fs.existsSync(filePath))
59
66
  return null;
60
67
  return fs.readFileSync(filePath, 'utf-8');
61
68
  }
69
+ /** Creates or overwrites a persistent memory entry on disk. */
62
70
  writeMemory(key, content) {
63
- const filePath = path.join(MEMORY_DIR, `${sanitizeKey(key)}.md`);
71
+ const filePath = path.join(paths_js_1.MEMORY_DIR, `${sanitizeKey(key)}.md`);
64
72
  fs.writeFileSync(filePath, content, 'utf-8');
65
73
  }
74
+ /** Deletes a persistent memory entry. Returns `true` if the entry existed and was removed. */
66
75
  deleteMemory(key) {
67
- const filePath = path.join(MEMORY_DIR, `${sanitizeKey(key)}.md`);
76
+ const filePath = path.join(paths_js_1.MEMORY_DIR, `${sanitizeKey(key)}.md`);
68
77
  if (!fs.existsSync(filePath))
69
78
  return false;
70
79
  fs.unlinkSync(filePath);
71
80
  return true;
72
81
  }
82
+ /** Returns all persistent memory entries as a key-content map. */
73
83
  getAllMemoryContents() {
74
84
  const result = new Map();
75
85
  for (const key of this.listMemory()) {
@@ -81,21 +91,27 @@ class MemoryStore {
81
91
  return result;
82
92
  }
83
93
  // --- Scratch Notes (in-memory, session only) ---
94
+ /** Returns the keys of all scratch notes in the current session. */
84
95
  listScratch() {
85
96
  return Array.from(this.scratch.keys());
86
97
  }
98
+ /** Reads a scratch note by key, returning `null` if it does not exist. */
87
99
  readScratch(key) {
88
100
  return this.scratch.get(key) ?? null;
89
101
  }
102
+ /** Creates or overwrites a scratch note for the current session. */
90
103
  writeScratch(key, content) {
91
104
  this.scratch.set(key, content);
92
105
  }
106
+ /** Deletes a scratch note. Returns `true` if the note existed and was removed. */
93
107
  deleteScratch(key) {
94
108
  return this.scratch.delete(key);
95
109
  }
110
+ /** Returns a shallow copy of all scratch notes as a key-content map. */
96
111
  getAllScratchContents() {
97
112
  return new Map(this.scratch);
98
113
  }
114
+ /** Removes all scratch notes from the current session. */
99
115
  clearScratch() {
100
116
  this.scratch.clear();
101
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Migrate files from the legacy `~/.bernard/` layout to XDG directories.
3
+ *
4
+ * - No-op if `BERNARD_HOME` is set (user explicitly controls layout)
5
+ * - No-op if `~/.bernard/` does not exist (fresh install)
6
+ * - No-op if already migrated (MIGRATED marker exists or prefs in XDG location)
7
+ *
8
+ * @returns Object with `migrated` flag and any non-fatal `errors` encountered.
9
+ */
10
+ export declare function migrateFromLegacy(): {
11
+ migrated: boolean;
12
+ errors: string[];
13
+ };