bernard-agent 0.1.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 (112) hide show
  1. package/.env.example +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +629 -0
  4. package/dist/agent.d.ts +24 -0
  5. package/dist/agent.js +174 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/config.d.ts +44 -0
  8. package/dist/config.js +267 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/context.d.ts +37 -0
  11. package/dist/context.js +245 -0
  12. package/dist/context.js.map +1 -0
  13. package/dist/cron/client.d.ts +4 -0
  14. package/dist/cron/client.js +113 -0
  15. package/dist/cron/client.js.map +1 -0
  16. package/dist/cron/daemon.d.ts +1 -0
  17. package/dist/cron/daemon.js +132 -0
  18. package/dist/cron/daemon.js.map +1 -0
  19. package/dist/cron/log-store.d.ts +51 -0
  20. package/dist/cron/log-store.js +135 -0
  21. package/dist/cron/log-store.js.map +1 -0
  22. package/dist/cron/notify.d.ts +7 -0
  23. package/dist/cron/notify.js +136 -0
  24. package/dist/cron/notify.js.map +1 -0
  25. package/dist/cron/runner.d.ts +6 -0
  26. package/dist/cron/runner.js +219 -0
  27. package/dist/cron/runner.js.map +1 -0
  28. package/dist/cron/scheduler.d.ts +16 -0
  29. package/dist/cron/scheduler.js +105 -0
  30. package/dist/cron/scheduler.js.map +1 -0
  31. package/dist/cron/store.d.ts +20 -0
  32. package/dist/cron/store.js +170 -0
  33. package/dist/cron/store.js.map +1 -0
  34. package/dist/cron/types.d.ts +21 -0
  35. package/dist/cron/types.js +3 -0
  36. package/dist/cron/types.js.map +1 -0
  37. package/dist/embeddings.d.ts +14 -0
  38. package/dist/embeddings.js +61 -0
  39. package/dist/embeddings.js.map +1 -0
  40. package/dist/history.d.ts +6 -0
  41. package/dist/history.js +71 -0
  42. package/dist/history.js.map +1 -0
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.js +231 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/logger.d.ts +1 -0
  47. package/dist/logger.js +24 -0
  48. package/dist/logger.js.map +1 -0
  49. package/dist/mcp.d.ts +43 -0
  50. package/dist/mcp.js +303 -0
  51. package/dist/mcp.js.map +1 -0
  52. package/dist/memory.d.ts +17 -0
  53. package/dist/memory.js +106 -0
  54. package/dist/memory.js.map +1 -0
  55. package/dist/output.d.ts +13 -0
  56. package/dist/output.js +151 -0
  57. package/dist/output.js.map +1 -0
  58. package/dist/providers/index.d.ts +2 -0
  59. package/dist/providers/index.js +19 -0
  60. package/dist/providers/index.js.map +1 -0
  61. package/dist/providers/types.d.ts +5 -0
  62. package/dist/providers/types.js +3 -0
  63. package/dist/providers/types.js.map +1 -0
  64. package/dist/rag-worker.d.ts +10 -0
  65. package/dist/rag-worker.js +84 -0
  66. package/dist/rag-worker.js.map +1 -0
  67. package/dist/rag.d.ts +53 -0
  68. package/dist/rag.js +242 -0
  69. package/dist/rag.js.map +1 -0
  70. package/dist/repl.d.ts +2 -0
  71. package/dist/repl.js +531 -0
  72. package/dist/repl.js.map +1 -0
  73. package/dist/setup.d.ts +1 -0
  74. package/dist/setup.js +104 -0
  75. package/dist/setup.js.map +1 -0
  76. package/dist/tools/cron-logs.d.ts +67 -0
  77. package/dist/tools/cron-logs.js +131 -0
  78. package/dist/tools/cron-logs.js.map +1 -0
  79. package/dist/tools/cron.d.ts +98 -0
  80. package/dist/tools/cron.js +248 -0
  81. package/dist/tools/cron.js.map +1 -0
  82. package/dist/tools/datetime.d.ts +4 -0
  83. package/dist/tools/datetime.js +25 -0
  84. package/dist/tools/datetime.js.map +1 -0
  85. package/dist/tools/index.d.ts +317 -0
  86. package/dist/tools/index.js +28 -0
  87. package/dist/tools/index.js.map +1 -0
  88. package/dist/tools/mcp-url.d.ts +16 -0
  89. package/dist/tools/mcp-url.js +27 -0
  90. package/dist/tools/mcp-url.js.map +1 -0
  91. package/dist/tools/mcp.d.ts +28 -0
  92. package/dist/tools/mcp.js +107 -0
  93. package/dist/tools/mcp.js.map +1 -0
  94. package/dist/tools/memory.d.ts +40 -0
  95. package/dist/tools/memory.js +99 -0
  96. package/dist/tools/memory.js.map +1 -0
  97. package/dist/tools/shell.d.ts +15 -0
  98. package/dist/tools/shell.js +60 -0
  99. package/dist/tools/shell.js.map +1 -0
  100. package/dist/tools/subagent.d.ts +21 -0
  101. package/dist/tools/subagent.js +81 -0
  102. package/dist/tools/subagent.js.map +1 -0
  103. package/dist/tools/time.d.ts +50 -0
  104. package/dist/tools/time.js +61 -0
  105. package/dist/tools/time.js.map +1 -0
  106. package/dist/tools/types.d.ts +8 -0
  107. package/dist/tools/types.js +3 -0
  108. package/dist/tools/types.js.map +1 -0
  109. package/dist/tools/web.d.ts +16 -0
  110. package/dist/tools/web.js +136 -0
  111. package/dist/tools/web.js.map +1 -0
  112. package/package.json +73 -0
@@ -0,0 +1,317 @@
1
+ import type { ToolOptions } from './types.js';
2
+ import type { MemoryStore } from '../memory.js';
3
+ export type { ToolOptions } from './types.js';
4
+ export declare function createTools(options: ToolOptions, memoryStore: MemoryStore, mcpTools?: Record<string, any>): {
5
+ mcp_config: import("ai").Tool<import("zod").ZodObject<{
6
+ action: import("zod").ZodEnum<["list", "add", "remove", "get"]>;
7
+ key: import("zod").ZodOptional<import("zod").ZodString>;
8
+ command: import("zod").ZodOptional<import("zod").ZodString>;
9
+ args: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
10
+ env: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
11
+ }, "strip", import("zod").ZodTypeAny, {
12
+ action: "list" | "add" | "remove" | "get";
13
+ command?: string | undefined;
14
+ key?: string | undefined;
15
+ args?: string[] | undefined;
16
+ env?: Record<string, string> | undefined;
17
+ }, {
18
+ action: "list" | "add" | "remove" | "get";
19
+ command?: string | undefined;
20
+ key?: string | undefined;
21
+ args?: string[] | undefined;
22
+ env?: Record<string, string> | undefined;
23
+ }>, string> & {
24
+ execute: (args: {
25
+ action: "list" | "add" | "remove" | "get";
26
+ command?: string | undefined;
27
+ key?: string | undefined;
28
+ args?: string[] | undefined;
29
+ env?: Record<string, string> | undefined;
30
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
31
+ };
32
+ mcp_add_url: import("ai").Tool<import("zod").ZodObject<{
33
+ key: import("zod").ZodString;
34
+ url: import("zod").ZodString;
35
+ }, "strip", import("zod").ZodTypeAny, {
36
+ key: string;
37
+ url: string;
38
+ }, {
39
+ key: string;
40
+ url: string;
41
+ }>, string> & {
42
+ execute: (args: {
43
+ key: string;
44
+ url: string;
45
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
46
+ };
47
+ web_read: import("ai").Tool<import("zod").ZodObject<{
48
+ url: import("zod").ZodString;
49
+ selector: import("zod").ZodOptional<import("zod").ZodString>;
50
+ }, "strip", import("zod").ZodTypeAny, {
51
+ url: string;
52
+ selector?: string | undefined;
53
+ }, {
54
+ url: string;
55
+ selector?: string | undefined;
56
+ }>, string> & {
57
+ execute: (args: {
58
+ url: string;
59
+ selector?: string | undefined;
60
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
61
+ };
62
+ time_range: import("ai").Tool<import("zod").ZodObject<{
63
+ start: import("zod").ZodNumber;
64
+ end: import("zod").ZodNumber;
65
+ }, "strip", import("zod").ZodTypeAny, {
66
+ start: number;
67
+ end: number;
68
+ }, {
69
+ start: number;
70
+ end: number;
71
+ }>, string> & {
72
+ execute: (args: {
73
+ start: number;
74
+ end: number;
75
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
76
+ };
77
+ time_range_total: import("ai").Tool<import("zod").ZodObject<{
78
+ ranges: import("zod").ZodArray<import("zod").ZodObject<{
79
+ start: import("zod").ZodNumber;
80
+ end: import("zod").ZodNumber;
81
+ }, "strip", import("zod").ZodTypeAny, {
82
+ start: number;
83
+ end: number;
84
+ }, {
85
+ start: number;
86
+ end: number;
87
+ }>, "many">;
88
+ }, "strip", import("zod").ZodTypeAny, {
89
+ ranges: {
90
+ start: number;
91
+ end: number;
92
+ }[];
93
+ }, {
94
+ ranges: {
95
+ start: number;
96
+ end: number;
97
+ }[];
98
+ }>, string> & {
99
+ execute: (args: {
100
+ ranges: {
101
+ start: number;
102
+ end: number;
103
+ }[];
104
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
105
+ };
106
+ cron_logs_list: import("ai").Tool<import("zod").ZodObject<{
107
+ job_id: import("zod").ZodString;
108
+ limit: import("zod").ZodDefault<import("zod").ZodNumber>;
109
+ offset: import("zod").ZodDefault<import("zod").ZodNumber>;
110
+ }, "strip", import("zod").ZodTypeAny, {
111
+ job_id: string;
112
+ limit: number;
113
+ offset: number;
114
+ }, {
115
+ job_id: string;
116
+ limit?: number | undefined;
117
+ offset?: number | undefined;
118
+ }>, string> & {
119
+ execute: (args: {
120
+ job_id: string;
121
+ limit: number;
122
+ offset: number;
123
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
124
+ };
125
+ cron_logs_get: import("ai").Tool<import("zod").ZodObject<{
126
+ job_id: import("zod").ZodString;
127
+ run_id: import("zod").ZodString;
128
+ }, "strip", import("zod").ZodTypeAny, {
129
+ job_id: string;
130
+ run_id: string;
131
+ }, {
132
+ job_id: string;
133
+ run_id: string;
134
+ }>, string> & {
135
+ execute: (args: {
136
+ job_id: string;
137
+ run_id: string;
138
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
139
+ };
140
+ cron_logs_summary: import("ai").Tool<import("zod").ZodObject<{
141
+ job_id: import("zod").ZodString;
142
+ }, "strip", import("zod").ZodTypeAny, {
143
+ job_id: string;
144
+ }, {
145
+ job_id: string;
146
+ }>, string> & {
147
+ execute: (args: {
148
+ job_id: string;
149
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
150
+ };
151
+ cron_logs_cleanup: import("ai").Tool<import("zod").ZodObject<{
152
+ job_id: import("zod").ZodString;
153
+ action: import("zod").ZodEnum<["rotate", "delete"]>;
154
+ keep: import("zod").ZodDefault<import("zod").ZodNumber>;
155
+ }, "strip", import("zod").ZodTypeAny, {
156
+ action: "delete" | "rotate";
157
+ job_id: string;
158
+ keep: number;
159
+ }, {
160
+ action: "delete" | "rotate";
161
+ job_id: string;
162
+ keep?: number | undefined;
163
+ }>, string> & {
164
+ execute: (args: {
165
+ action: "delete" | "rotate";
166
+ job_id: string;
167
+ keep: number;
168
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
169
+ };
170
+ cron_create: import("ai").Tool<import("zod").ZodObject<{
171
+ name: import("zod").ZodString;
172
+ schedule: import("zod").ZodString;
173
+ prompt: import("zod").ZodString;
174
+ }, "strip", import("zod").ZodTypeAny, {
175
+ name: string;
176
+ schedule: string;
177
+ prompt: string;
178
+ }, {
179
+ name: string;
180
+ schedule: string;
181
+ prompt: string;
182
+ }>, string> & {
183
+ execute: (args: {
184
+ name: string;
185
+ schedule: string;
186
+ prompt: string;
187
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
188
+ };
189
+ cron_list: import("ai").Tool<import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>, string> & {
190
+ execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
191
+ };
192
+ cron_get: import("ai").Tool<import("zod").ZodObject<{
193
+ id: import("zod").ZodString;
194
+ }, "strip", import("zod").ZodTypeAny, {
195
+ id: string;
196
+ }, {
197
+ id: string;
198
+ }>, string> & {
199
+ execute: (args: {
200
+ id: string;
201
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
202
+ };
203
+ cron_update: import("ai").Tool<import("zod").ZodObject<{
204
+ id: import("zod").ZodString;
205
+ name: import("zod").ZodOptional<import("zod").ZodString>;
206
+ schedule: import("zod").ZodOptional<import("zod").ZodString>;
207
+ prompt: import("zod").ZodOptional<import("zod").ZodString>;
208
+ }, "strip", import("zod").ZodTypeAny, {
209
+ id: string;
210
+ name?: string | undefined;
211
+ schedule?: string | undefined;
212
+ prompt?: string | undefined;
213
+ }, {
214
+ id: string;
215
+ name?: string | undefined;
216
+ schedule?: string | undefined;
217
+ prompt?: string | undefined;
218
+ }>, string> & {
219
+ execute: (args: {
220
+ id: string;
221
+ name?: string | undefined;
222
+ schedule?: string | undefined;
223
+ prompt?: string | undefined;
224
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
225
+ };
226
+ cron_delete: import("ai").Tool<import("zod").ZodObject<{
227
+ id: import("zod").ZodString;
228
+ }, "strip", import("zod").ZodTypeAny, {
229
+ id: string;
230
+ }, {
231
+ id: string;
232
+ }>, string> & {
233
+ execute: (args: {
234
+ id: string;
235
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
236
+ };
237
+ cron_enable: import("ai").Tool<import("zod").ZodObject<{
238
+ id: import("zod").ZodString;
239
+ }, "strip", import("zod").ZodTypeAny, {
240
+ id: string;
241
+ }, {
242
+ id: string;
243
+ }>, string> & {
244
+ execute: (args: {
245
+ id: string;
246
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
247
+ };
248
+ cron_disable: import("ai").Tool<import("zod").ZodObject<{
249
+ id: import("zod").ZodString;
250
+ }, "strip", import("zod").ZodTypeAny, {
251
+ id: string;
252
+ }, {
253
+ id: string;
254
+ }>, string> & {
255
+ execute: (args: {
256
+ id: string;
257
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
258
+ };
259
+ cron_status: import("ai").Tool<import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>, string> & {
260
+ execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
261
+ };
262
+ cron_bounce: import("ai").Tool<import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>, string> & {
263
+ execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
264
+ };
265
+ shell: import("ai").Tool<import("zod").ZodObject<{
266
+ command: import("zod").ZodString;
267
+ }, "strip", import("zod").ZodTypeAny, {
268
+ command: string;
269
+ }, {
270
+ command: string;
271
+ }>, import("./types.js").ShellResult> & {
272
+ execute: (args: {
273
+ command: string;
274
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<import("./types.js").ShellResult>;
275
+ };
276
+ memory: import("ai").Tool<import("zod").ZodObject<{
277
+ action: import("zod").ZodEnum<["list", "read", "write", "delete"]>;
278
+ key: import("zod").ZodOptional<import("zod").ZodString>;
279
+ content: import("zod").ZodOptional<import("zod").ZodString>;
280
+ }, "strip", import("zod").ZodTypeAny, {
281
+ action: "list" | "read" | "write" | "delete";
282
+ key?: string | undefined;
283
+ content?: string | undefined;
284
+ }, {
285
+ action: "list" | "read" | "write" | "delete";
286
+ key?: string | undefined;
287
+ content?: string | undefined;
288
+ }>, string> & {
289
+ execute: (args: {
290
+ action: "list" | "read" | "write" | "delete";
291
+ key?: string | undefined;
292
+ content?: string | undefined;
293
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
294
+ };
295
+ scratch: import("ai").Tool<import("zod").ZodObject<{
296
+ action: import("zod").ZodEnum<["list", "read", "write", "delete"]>;
297
+ key: import("zod").ZodOptional<import("zod").ZodString>;
298
+ content: import("zod").ZodOptional<import("zod").ZodString>;
299
+ }, "strip", import("zod").ZodTypeAny, {
300
+ action: "list" | "read" | "write" | "delete";
301
+ key?: string | undefined;
302
+ content?: string | undefined;
303
+ }, {
304
+ action: "list" | "read" | "write" | "delete";
305
+ key?: string | undefined;
306
+ content?: string | undefined;
307
+ }>, string> & {
308
+ execute: (args: {
309
+ action: "list" | "read" | "write" | "delete";
310
+ key?: string | undefined;
311
+ content?: string | undefined;
312
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
313
+ };
314
+ datetime: import("ai").Tool<import("zod").ZodObject<{}, "strip", import("zod").ZodTypeAny, {}, {}>, string> & {
315
+ execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
316
+ };
317
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTools = createTools;
4
+ const shell_js_1 = require("./shell.js");
5
+ const memory_js_1 = require("./memory.js");
6
+ const datetime_js_1 = require("./datetime.js");
7
+ const cron_js_1 = require("./cron.js");
8
+ const cron_logs_js_1 = require("./cron-logs.js");
9
+ const time_js_1 = require("./time.js");
10
+ const mcp_js_1 = require("./mcp.js");
11
+ const mcp_url_js_1 = require("./mcp-url.js");
12
+ const web_js_1 = require("./web.js");
13
+ function createTools(options, memoryStore, mcpTools) {
14
+ return {
15
+ shell: (0, shell_js_1.createShellTool)(options),
16
+ memory: (0, memory_js_1.createMemoryTool)(memoryStore),
17
+ scratch: (0, memory_js_1.createScratchTool)(memoryStore),
18
+ datetime: (0, datetime_js_1.createDateTimeTool)(),
19
+ ...(0, cron_js_1.createCronTools)(),
20
+ ...(0, cron_logs_js_1.createCronLogTools)(),
21
+ ...(0, time_js_1.createTimeTools)(),
22
+ mcp_config: (0, mcp_js_1.createMCPConfigTool)(),
23
+ mcp_add_url: (0, mcp_url_js_1.createMCPAddUrlTool)(),
24
+ web_read: (0, web_js_1.createWebReadTool)(),
25
+ ...mcpTools,
26
+ };
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;AAcA,kCAcC;AA5BD,yCAA6C;AAC7C,2CAAkE;AAClE,+CAAmD;AACnD,uCAA4C;AAC5C,iDAAoD;AACpD,uCAA4C;AAC5C,qCAA+C;AAC/C,6CAAmD;AACnD,qCAA6C;AAM7C,SAAgB,WAAW,CAAC,OAAoB,EAAE,WAAwB,EAAE,QAA8B;IACxG,OAAO;QACL,KAAK,EAAE,IAAA,0BAAe,EAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,IAAA,4BAAgB,EAAC,WAAW,CAAC;QACrC,OAAO,EAAE,IAAA,6BAAiB,EAAC,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAA,gCAAkB,GAAE;QAC9B,GAAG,IAAA,yBAAe,GAAE;QACpB,GAAG,IAAA,iCAAkB,GAAE;QACvB,GAAG,IAAA,yBAAe,GAAE;QACpB,UAAU,EAAE,IAAA,4BAAmB,GAAE;QACjC,WAAW,EAAE,IAAA,gCAAmB,GAAE;QAClC,QAAQ,EAAE,IAAA,0BAAiB,GAAE;QAC7B,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare function createMCPAddUrlTool(): import("ai").Tool<z.ZodObject<{
3
+ key: z.ZodString;
4
+ url: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ key: string;
7
+ url: string;
8
+ }, {
9
+ key: string;
10
+ url: string;
11
+ }>, string> & {
12
+ execute: (args: {
13
+ key: string;
14
+ url: string;
15
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
16
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMCPAddUrlTool = createMCPAddUrlTool;
4
+ const ai_1 = require("ai");
5
+ const zod_1 = require("zod");
6
+ const mcp_js_1 = require("../mcp.js");
7
+ function createMCPAddUrlTool() {
8
+ return (0, ai_1.tool)({
9
+ description: 'Add a URL-based MCP server (SSE or HTTP endpoint). Use this when given an MCP server URL. Changes take effect after restarting Bernard.',
10
+ parameters: zod_1.z.object({
11
+ key: zod_1.z.string().describe('Unique name for this server, e.g. "my-mcp"'),
12
+ url: zod_1.z.string().describe('The MCP server URL, e.g. "http://localhost:6288/web/sse"'),
13
+ }),
14
+ execute: async ({ key, url }) => {
15
+ try {
16
+ const type = url.endsWith('/sse') ? 'sse' : 'sse';
17
+ (0, mcp_js_1.addMCPUrlServer)(key, url, type);
18
+ return `MCP server added:\n Key: ${key}\n URL: ${url}\n Transport: ${type}\n\nRestart Bernard for the server to connect.`;
19
+ }
20
+ catch (err) {
21
+ const msg = err instanceof Error ? err.message : String(err);
22
+ return `Error adding server: ${msg}`;
23
+ }
24
+ },
25
+ });
26
+ }
27
+ //# sourceMappingURL=mcp-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-url.js","sourceRoot":"","sources":["../../src/tools/mcp-url.ts"],"names":[],"mappings":";;AAIA,kDAmBC;AAvBD,2BAA0B;AAC1B,6BAAwB;AACxB,sCAA4C;AAE5C,SAAgB,mBAAmB;IACjC,OAAO,IAAA,SAAI,EAAC;QACV,WAAW,EACT,yIAAyI;QAC3I,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACtE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;SACrF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAmB,EAAE;YAC/C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAc,CAAC,CAAC,CAAC,KAAc,CAAC;gBACpE,IAAA,wBAAe,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,OAAO,6BAA6B,GAAG,YAAY,GAAG,kBAAkB,IAAI,gDAAgD,CAAC;YAC/H,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,wBAAwB,GAAG,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ export declare function createMCPConfigTool(): import("ai").Tool<z.ZodObject<{
3
+ action: z.ZodEnum<["list", "add", "remove", "get"]>;
4
+ key: z.ZodOptional<z.ZodString>;
5
+ command: z.ZodOptional<z.ZodString>;
6
+ args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ action: "list" | "add" | "remove" | "get";
10
+ command?: string | undefined;
11
+ key?: string | undefined;
12
+ args?: string[] | undefined;
13
+ env?: Record<string, string> | undefined;
14
+ }, {
15
+ action: "list" | "add" | "remove" | "get";
16
+ command?: string | undefined;
17
+ key?: string | undefined;
18
+ args?: string[] | undefined;
19
+ env?: Record<string, string> | undefined;
20
+ }>, string> & {
21
+ execute: (args: {
22
+ action: "list" | "add" | "remove" | "get";
23
+ command?: string | undefined;
24
+ key?: string | undefined;
25
+ args?: string[] | undefined;
26
+ env?: Record<string, string> | undefined;
27
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
28
+ };
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMCPConfigTool = createMCPConfigTool;
4
+ const ai_1 = require("ai");
5
+ const zod_1 = require("zod");
6
+ const mcp_js_1 = require("../mcp.js");
7
+ function createMCPConfigTool() {
8
+ return (0, ai_1.tool)({
9
+ description: 'Manage MCP server configuration. Add, remove, list, or inspect MCP servers. Changes take effect after restarting Bernard.',
10
+ parameters: zod_1.z.object({
11
+ action: zod_1.z.enum(['list', 'add', 'remove', 'get']).describe('The action to perform'),
12
+ key: zod_1.z.string().optional().describe('Server name/key (required for add, remove, get)'),
13
+ command: zod_1.z.string().optional().describe('Executable to run, e.g. "npx", "python", "node" (required for add)'),
14
+ args: zod_1.z.array(zod_1.z.string()).optional().describe('Command arguments, e.g. ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]'),
15
+ env: zod_1.z.record(zod_1.z.string()).optional().describe('Environment variables to pass to the server process'),
16
+ }),
17
+ execute: async ({ action, key, command, args, env }) => {
18
+ switch (action) {
19
+ case 'list': {
20
+ try {
21
+ const servers = (0, mcp_js_1.listMCPServers)();
22
+ if (servers.length === 0)
23
+ return 'No MCP servers configured.';
24
+ const lines = servers.map(s => {
25
+ if (s.url) {
26
+ const typeStr = s.type ? ` (${s.type})` : ' (sse)';
27
+ return ` - ${s.key}\n URL: ${s.url}${typeStr}`;
28
+ }
29
+ const argsStr = s.args && s.args.length > 0 ? `\n Args: ${s.args.join(' ')}` : '';
30
+ return ` - ${s.key}\n Command: ${s.command}${argsStr}`;
31
+ });
32
+ return `MCP servers (${servers.length}):\n${lines.join('\n')}`;
33
+ }
34
+ catch (err) {
35
+ const msg = err instanceof Error ? err.message : String(err);
36
+ return `Error listing servers: ${msg}`;
37
+ }
38
+ }
39
+ case 'add': {
40
+ if (!key)
41
+ return 'Error: key is required for add action.';
42
+ if (!command)
43
+ return 'Error: command is required for add action.';
44
+ try {
45
+ (0, mcp_js_1.addMCPServer)(key, command, args, env);
46
+ const argsStr = args && args.length > 0 ? `\n Args: ${args.join(' ')}` : '';
47
+ const envStr = env && Object.keys(env).length > 0
48
+ ? `\n Env: ${Object.keys(env).join(', ')}`
49
+ : '';
50
+ return `MCP server added:\n Key: ${key}\n Command: ${command}${argsStr}${envStr}\n\nRestart Bernard for the server to connect.`;
51
+ }
52
+ catch (err) {
53
+ const msg = err instanceof Error ? err.message : String(err);
54
+ return `Error adding server: ${msg}`;
55
+ }
56
+ }
57
+ case 'remove': {
58
+ if (!key)
59
+ return 'Error: key is required for remove action.';
60
+ try {
61
+ (0, mcp_js_1.removeMCPServer)(key);
62
+ return `MCP server "${key}" removed. Restart Bernard for changes to take effect.`;
63
+ }
64
+ catch (err) {
65
+ const msg = err instanceof Error ? err.message : String(err);
66
+ return `Error removing server: ${msg}`;
67
+ }
68
+ }
69
+ case 'get': {
70
+ if (!key)
71
+ return 'Error: key is required for get action.';
72
+ try {
73
+ const server = (0, mcp_js_1.getMCPServer)(key);
74
+ if (!server) {
75
+ const servers = (0, mcp_js_1.listMCPServers)();
76
+ const hint = servers.length > 0
77
+ ? ` Available servers: ${servers.map(s => s.key).join(', ')}`
78
+ : ' No servers configured.';
79
+ return `MCP server "${key}" not found.${hint}`;
80
+ }
81
+ if ('url' in server) {
82
+ const typeStr = server.type ?? 'sse';
83
+ const headersStr = server.headers && Object.keys(server.headers).length > 0
84
+ ? `\n Headers: ${Object.keys(server.headers).join(', ')}`
85
+ : '';
86
+ return `MCP server "${key}":\n URL: ${server.url}\n Transport: ${typeStr}${headersStr}`;
87
+ }
88
+ const argsStr = server.args && server.args.length > 0
89
+ ? `\n Args: ${server.args.join(' ')}`
90
+ : '';
91
+ const envStr = server.env && Object.keys(server.env).length > 0
92
+ ? `\n Env: ${Object.entries(server.env).map(([k, v]) => `${k}=${v}`).join(', ')}`
93
+ : '';
94
+ return `MCP server "${key}":\n Command: ${server.command}${argsStr}${envStr}`;
95
+ }
96
+ catch (err) {
97
+ const msg = err instanceof Error ? err.message : String(err);
98
+ return `Error getting server: ${msg}`;
99
+ }
100
+ }
101
+ default:
102
+ return `Unknown action: ${action}`;
103
+ }
104
+ },
105
+ });
106
+ }
107
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ import type { MemoryStore } from '../memory.js';
3
+ export declare function createMemoryTool(memoryStore: MemoryStore): import("ai").Tool<z.ZodObject<{
4
+ action: z.ZodEnum<["list", "read", "write", "delete"]>;
5
+ key: z.ZodOptional<z.ZodString>;
6
+ content: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ action: "list" | "read" | "write" | "delete";
9
+ key?: string | undefined;
10
+ content?: string | undefined;
11
+ }, {
12
+ action: "list" | "read" | "write" | "delete";
13
+ key?: string | undefined;
14
+ content?: string | undefined;
15
+ }>, string> & {
16
+ execute: (args: {
17
+ action: "list" | "read" | "write" | "delete";
18
+ key?: string | undefined;
19
+ content?: string | undefined;
20
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
21
+ };
22
+ export declare function createScratchTool(memoryStore: MemoryStore): import("ai").Tool<z.ZodObject<{
23
+ action: z.ZodEnum<["list", "read", "write", "delete"]>;
24
+ key: z.ZodOptional<z.ZodString>;
25
+ content: z.ZodOptional<z.ZodString>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ action: "list" | "read" | "write" | "delete";
28
+ key?: string | undefined;
29
+ content?: string | undefined;
30
+ }, {
31
+ action: "list" | "read" | "write" | "delete";
32
+ key?: string | undefined;
33
+ content?: string | undefined;
34
+ }>, string> & {
35
+ execute: (args: {
36
+ action: "list" | "read" | "write" | "delete";
37
+ key?: string | undefined;
38
+ content?: string | undefined;
39
+ }, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
40
+ };