bernard-agent 0.4.0 → 0.5.0

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 +82 -20
  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 +7 -1
  40. package/dist/embeddings.js +43 -1
  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 +11 -1
  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 +2 -1
package/dist/history.js CHANGED
@@ -35,14 +35,17 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.HistoryStore = void 0;
37
37
  const fs = __importStar(require("node:fs"));
38
- const path = __importStar(require("node:path"));
39
- const os = __importStar(require("node:os"));
40
- const BERNARD_DIR = path.join(os.homedir(), '.bernard');
41
- const HISTORY_FILE = path.join(BERNARD_DIR, 'conversation-history.json');
38
+ const paths_js_1 = require("./paths.js");
39
+ /**
40
+ * Manages persistence of conversation history.
41
+ *
42
+ * Uses atomic writes (write-to-temp then rename) to prevent corruption on unexpected exit.
43
+ */
42
44
  class HistoryStore {
45
+ /** Loads and validates saved conversation history, returning an empty array if the file is missing or malformed. */
43
46
  load() {
44
47
  try {
45
- const data = fs.readFileSync(HISTORY_FILE, 'utf-8');
48
+ const data = fs.readFileSync(paths_js_1.HISTORY_FILE, 'utf-8');
46
49
  const parsed = JSON.parse(data);
47
50
  if (!Array.isArray(parsed))
48
51
  return [];
@@ -52,15 +55,17 @@ class HistoryStore {
52
55
  return [];
53
56
  }
54
57
  }
58
+ /** Atomically writes the conversation history to disk. */
55
59
  save(messages) {
56
- fs.mkdirSync(BERNARD_DIR, { recursive: true });
57
- const tmp = HISTORY_FILE + '.tmp';
60
+ fs.mkdirSync(paths_js_1.STATE_DIR, { recursive: true });
61
+ const tmp = paths_js_1.HISTORY_FILE + '.tmp';
58
62
  fs.writeFileSync(tmp, JSON.stringify(messages, null, 2), 'utf-8');
59
- fs.renameSync(tmp, HISTORY_FILE);
63
+ fs.renameSync(tmp, paths_js_1.HISTORY_FILE);
60
64
  }
65
+ /** Deletes the saved history file. Silently succeeds if the file does not exist. */
61
66
  clear() {
62
67
  try {
63
- fs.unlinkSync(HISTORY_FILE);
68
+ fs.unlinkSync(paths_js_1.HISTORY_FILE);
64
69
  }
65
70
  catch {
66
71
  // file may not exist — ignore
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAClC,4CAA8B;AAG9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;AAEzE,MAAa,YAAY;IACvB,IAAI;QACF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAClE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAuB;QAC1B,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,YAAY,GAAG,MAAM,CAAC;QAClC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;CACF;AA5BD,oCA4BC"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAE9B,yCAAqD;AAErD;;;;GAIG;AACH,MAAa,YAAY;IACvB,oHAAoH;IACpH,IAAI;QACF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,uBAAY,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,CAClE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,IAAI,CAAC,QAAuB;QAC1B,EAAE,CAAC,SAAS,CAAC,oBAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,uBAAY,GAAG,MAAM,CAAC;QAClC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,uBAAY,CAAC,CAAC;IACnC,CAAC;IAED,oFAAoF;IACpF,KAAK;QACH,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,uBAAY,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;CACF;AA/BD,oCA+BC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ /**
3
+ * @module index
4
+ * CLI entry point for Bernard. Defines all Commander commands and
5
+ * dispatches to the interactive REPL or the appropriate sub-command handler.
6
+ */
2
7
  export {};
package/dist/index.js CHANGED
@@ -1,5 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ /**
4
+ * @module index
5
+ * CLI entry point for Bernard. Defines all Commander commands and
6
+ * dispatches to the interactive REPL or the appropriate sub-command handler.
7
+ */
3
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
9
  if (k2 === undefined) k2 = k;
5
10
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -46,6 +51,8 @@ const mcp_js_1 = require("./mcp.js");
46
51
  const setup_js_1 = require("./setup.js");
47
52
  const update_js_1 = require("./update.js");
48
53
  const facts_cli_js_1 = require("./facts-cli.js");
54
+ const migrate_js_1 = require("./migrate.js");
55
+ const paths_js_1 = require("./paths.js");
49
56
  const program = new commander_1.Command();
50
57
  program
51
58
  .name('bernard')
@@ -216,7 +223,7 @@ program
216
223
  const servers = (0, mcp_js_1.listMCPServers)();
217
224
  if (servers.length === 0) {
218
225
  (0, output_js_1.printInfo)('No MCP servers configured.');
219
- (0, output_js_1.printInfo)('Add servers to ~/.bernard/mcp.json');
226
+ (0, output_js_1.printInfo)(`Add servers to ${paths_js_1.MCP_CONFIG_PATH}`);
220
227
  return;
221
228
  }
222
229
  (0, output_js_1.printInfo)('MCP Servers:');
@@ -381,5 +388,19 @@ program
381
388
  process.exit(1);
382
389
  }
383
390
  });
391
+ program
392
+ .command('clear-facts')
393
+ .description('Permanently delete all stored RAG facts')
394
+ .action(async () => {
395
+ try {
396
+ await (0, facts_cli_js_1.clearFacts)();
397
+ }
398
+ catch (err) {
399
+ const message = err instanceof Error ? err.message : String(err);
400
+ (0, output_js_1.printError)(message);
401
+ process.exit(1);
402
+ }
403
+ });
404
+ (0, migrate_js_1.migrateFromLegacy)();
384
405
  program.parse();
385
406
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/logger.d.ts CHANGED
@@ -1 +1,7 @@
1
+ /**
2
+ * Append a JSON log entry to `.logs/<date>.log` when `BERNARD_DEBUG` is enabled.
3
+ * No-ops silently when debug mode is off.
4
+ * @param label - Short tag identifying the log source (e.g. `"agent"`, `"rag"`).
5
+ * @param data - Arbitrary payload serialized as JSON.
6
+ */
1
7
  export declare function debugLog(label: string, data: unknown): void;
package/dist/logger.js CHANGED
@@ -8,6 +8,12 @@ const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const LOG_DIR = node_path_1.default.resolve('.logs');
10
10
  let dirCreated = false;
11
+ /**
12
+ * Append a JSON log entry to `.logs/<date>.log` when `BERNARD_DEBUG` is enabled.
13
+ * No-ops silently when debug mode is off.
14
+ * @param label - Short tag identifying the log source (e.g. `"agent"`, `"rag"`).
15
+ * @param data - Arbitrary payload serialized as JSON.
16
+ */
11
17
  function debugLog(label, data) {
12
18
  if (process.env.BERNARD_DEBUG !== 'true' && process.env.BERNARD_DEBUG !== '1')
13
19
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;AAMA,4BAYC;AAlBD,sDAAyB;AACzB,0DAA6B;AAE7B,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,SAAgB,QAAQ,CAAC,KAAa,EAAE,IAAa;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG;QAAE,OAAO;IAEtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,iBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,iBAAE,CAAC,cAAc,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;AAYA,4BAYC;AAxBD,sDAAyB;AACzB,0DAA6B;AAE7B,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACtC,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,KAAa,EAAE,IAAa;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,GAAG;QAAE,OAAO;IAEtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,iBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,iBAAE,CAAC,cAAc,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACxE,CAAC"}
package/dist/mcp.d.ts CHANGED
@@ -1,23 +1,35 @@
1
+ /** Configuration for an MCP server launched via stdio subprocess. */
1
2
  interface MCPStdioConfig {
2
3
  command: string;
3
4
  args?: string[];
4
5
  env?: Record<string, string>;
5
6
  }
7
+ /** Configuration for an MCP server accessed over a network URL (SSE or HTTP). */
6
8
  interface MCPUrlConfig {
7
9
  url: string;
8
10
  type?: 'sse' | 'http';
9
11
  headers?: Record<string, string>;
10
12
  }
13
+ /** Discriminated union of stdio and URL-based MCP server configurations. */
11
14
  type MCPServerConfig = MCPStdioConfig | MCPUrlConfig;
15
+ /** Top-level shape of the MCP configuration file. */
12
16
  interface MCPConfig {
13
17
  mcpServers: Record<string, MCPServerConfig>;
14
18
  }
19
+ /** Runtime connection status for a single MCP server. */
15
20
  interface ServerStatus {
16
21
  name: string;
17
22
  connected: boolean;
18
23
  toolCount: number;
19
24
  error?: string;
20
25
  }
26
+ /**
27
+ * Manages the lifecycle of MCP (Model Context Protocol) server connections.
28
+ *
29
+ * Reads server definitions from the MCP config file, establishes connections
30
+ * (stdio or URL-based), aggregates tools from all servers, and handles
31
+ * automatic reconnection with retry when a tool call fails.
32
+ */
21
33
  export declare class MCPManager {
22
34
  private clients;
23
35
  private serverStatuses;
@@ -25,17 +37,63 @@ export declare class MCPManager {
25
37
  private serverConfigs;
26
38
  private toolServerMap;
27
39
  private reconnectPromises;
40
+ /**
41
+ * Reads and parses the MCP configuration file.
42
+ * @returns The parsed config, or an empty config if the file does not exist.
43
+ * @throws {Error} If the file exists but contains invalid JSON.
44
+ */
28
45
  loadConfig(): MCPConfig;
46
+ /**
47
+ * Creates an MCP client for the given server configuration.
48
+ * @internal
49
+ */
29
50
  private createClientForConfig;
51
+ /**
52
+ * Connects to all MCP servers defined in the config file.
53
+ *
54
+ * Connections are established concurrently via `Promise.allSettled`.
55
+ * Servers that fail to connect are recorded with an error status and
56
+ * logged, but do not prevent other servers from connecting.
57
+ */
30
58
  connect(): Promise<void>;
59
+ /**
60
+ * Reconnects a single MCP server by name, closing the old client first.
61
+ *
62
+ * Concurrent calls for the same server are coalesced so only one
63
+ * reconnection attempt runs at a time.
64
+ * @param name - The server key as defined in the config file.
65
+ * @returns `true` if the reconnection succeeded, `false` otherwise.
66
+ */
31
67
  reconnectServer(name: string): Promise<boolean>;
68
+ /**
69
+ * Performs the actual reconnection logic for a single server.
70
+ * @internal
71
+ */
32
72
  private doReconnectServer;
73
+ /**
74
+ * Converts a dynamic MCP tool to the function-tool shape expected by AI SDK v4.
75
+ * @internal
76
+ */
33
77
  private convertTool;
78
+ /**
79
+ * Returns all MCP tools, converted for AI SDK v4 compatibility.
80
+ *
81
+ * Each tool's `execute` method is wrapped with automatic reconnect-and-retry:
82
+ * if a call fails, the owning server is reconnected and the call retried once.
83
+ */
34
84
  getTools(): Record<string, any>;
85
+ /** Returns the current connection status for every configured server. */
35
86
  getServerStatuses(): ServerStatus[];
87
+ /** Returns the names of all servers that are currently connected. */
36
88
  getConnectedServerNames(): string[];
89
+ /** Gracefully closes all active MCP client connections. */
37
90
  close(): Promise<void>;
38
91
  }
92
+ /**
93
+ * Lists all MCP servers in the config file with their connection details.
94
+ * @returns An array of server summaries. Returns an empty array if no config file exists.
95
+ * @throws {Error} If the config file contains invalid JSON.
96
+ */
39
97
  export declare function listMCPServers(): {
40
98
  key: string;
41
99
  command?: string;
@@ -43,8 +101,37 @@ export declare function listMCPServers(): {
43
101
  url?: string;
44
102
  type?: 'sse' | 'http';
45
103
  }[];
104
+ /**
105
+ * Retrieves the configuration for a single MCP server by key.
106
+ * @param key - The server key as defined in the config file.
107
+ * @returns The server config, or `undefined` if the key or config file does not exist.
108
+ * @throws {Error} If the config file contains invalid JSON.
109
+ */
46
110
  export declare function getMCPServer(key: string): MCPServerConfig | undefined;
111
+ /**
112
+ * Adds a stdio-based MCP server entry to the MCP config file.
113
+ * @param key - Unique, whitespace-free identifier for the server.
114
+ * @param command - The command to spawn (e.g. `"npx"`).
115
+ * @param args - Optional command-line arguments.
116
+ * @param env - Optional extra environment variables merged with `process.env`.
117
+ * @throws {Error} If the key is empty/contains whitespace, the command is empty,
118
+ * the key already exists, or the config file contains invalid JSON.
119
+ */
47
120
  export declare function addMCPServer(key: string, command: string, args?: string[], env?: Record<string, string>): void;
121
+ /**
122
+ * Adds a URL-based (SSE or HTTP) MCP server entry to the MCP config file.
123
+ * @param key - Unique, whitespace-free identifier for the server.
124
+ * @param url - The server endpoint URL.
125
+ * @param type - Transport type; defaults to `'sse'` at connection time.
126
+ * @param headers - Optional HTTP headers sent with every request.
127
+ * @throws {Error} If the key is empty/contains whitespace, the URL is empty,
128
+ * the key already exists, or the config file contains invalid JSON.
129
+ */
48
130
  export declare function addMCPUrlServer(key: string, url: string, type?: 'sse' | 'http', headers?: Record<string, string>): void;
131
+ /**
132
+ * Removes an MCP server entry from the MCP config file.
133
+ * @param key - The server key to remove.
134
+ * @throws {Error} If the config file does not exist, contains invalid JSON, or the key is not found.
135
+ */
49
136
  export declare function removeMCPServer(key: string): void;
50
137
  export {};
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