@useactor/core 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 (153) hide show
  1. package/dist/ai-sdk-provider.d.ts +54 -0
  2. package/dist/ai-sdk-provider.d.ts.map +1 -0
  3. package/dist/ai-sdk-provider.js +335 -0
  4. package/dist/ai-sdk-provider.js.map +1 -0
  5. package/dist/app-runtime.d.ts +83 -0
  6. package/dist/app-runtime.d.ts.map +1 -0
  7. package/dist/app-runtime.js +504 -0
  8. package/dist/app-runtime.js.map +1 -0
  9. package/dist/artifacts.d.ts +49 -0
  10. package/dist/artifacts.d.ts.map +1 -0
  11. package/dist/artifacts.js +50 -0
  12. package/dist/artifacts.js.map +1 -0
  13. package/dist/cli-defined-tools.d.ts +17 -0
  14. package/dist/cli-defined-tools.d.ts.map +1 -0
  15. package/dist/cli-defined-tools.js +146 -0
  16. package/dist/cli-defined-tools.js.map +1 -0
  17. package/dist/codex-oauth-provider.d.ts +30 -0
  18. package/dist/codex-oauth-provider.d.ts.map +1 -0
  19. package/dist/codex-oauth-provider.js +453 -0
  20. package/dist/codex-oauth-provider.js.map +1 -0
  21. package/dist/events.d.ts +133 -0
  22. package/dist/events.d.ts.map +1 -0
  23. package/dist/events.js +46 -0
  24. package/dist/events.js.map +1 -0
  25. package/dist/feedback.d.ts +29 -0
  26. package/dist/feedback.d.ts.map +1 -0
  27. package/dist/feedback.js +62 -0
  28. package/dist/feedback.js.map +1 -0
  29. package/dist/history.d.ts +34 -0
  30. package/dist/history.d.ts.map +1 -0
  31. package/dist/history.js +118 -0
  32. package/dist/history.js.map +1 -0
  33. package/dist/in-memory-runtime.d.ts +12 -0
  34. package/dist/in-memory-runtime.d.ts.map +1 -0
  35. package/dist/in-memory-runtime.js +491 -0
  36. package/dist/in-memory-runtime.js.map +1 -0
  37. package/dist/index.d.ts +36 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +36 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/integrations.d.ts +37 -0
  42. package/dist/integrations.d.ts.map +1 -0
  43. package/dist/integrations.js +48 -0
  44. package/dist/integrations.js.map +1 -0
  45. package/dist/local-event-logger.d.ts +19 -0
  46. package/dist/local-event-logger.d.ts.map +1 -0
  47. package/dist/local-event-logger.js +163 -0
  48. package/dist/local-event-logger.js.map +1 -0
  49. package/dist/local-event-schema.d.ts +99 -0
  50. package/dist/local-event-schema.d.ts.map +1 -0
  51. package/dist/local-event-schema.js +43 -0
  52. package/dist/local-event-schema.js.map +1 -0
  53. package/dist/local-tools.d.ts +99 -0
  54. package/dist/local-tools.d.ts.map +1 -0
  55. package/dist/local-tools.js +418 -0
  56. package/dist/local-tools.js.map +1 -0
  57. package/dist/mcp-server-config.d.ts +16 -0
  58. package/dist/mcp-server-config.d.ts.map +1 -0
  59. package/dist/mcp-server-config.js +75 -0
  60. package/dist/mcp-server-config.js.map +1 -0
  61. package/dist/mock-provider.d.ts +8 -0
  62. package/dist/mock-provider.d.ts.map +1 -0
  63. package/dist/mock-provider.js +47 -0
  64. package/dist/mock-provider.js.map +1 -0
  65. package/dist/model-catalog.d.ts +24 -0
  66. package/dist/model-catalog.d.ts.map +1 -0
  67. package/dist/model-catalog.js +92 -0
  68. package/dist/model-catalog.js.map +1 -0
  69. package/dist/monoid-integration.d.ts +33 -0
  70. package/dist/monoid-integration.d.ts.map +1 -0
  71. package/dist/monoid-integration.js +184 -0
  72. package/dist/monoid-integration.js.map +1 -0
  73. package/dist/openai-oauth.d.ts +69 -0
  74. package/dist/openai-oauth.d.ts.map +1 -0
  75. package/dist/openai-oauth.js +127 -0
  76. package/dist/openai-oauth.js.map +1 -0
  77. package/dist/permission-grant-store.d.ts +7 -0
  78. package/dist/permission-grant-store.d.ts.map +1 -0
  79. package/dist/permission-grant-store.js +77 -0
  80. package/dist/permission-grant-store.js.map +1 -0
  81. package/dist/permission-grants.d.ts +38 -0
  82. package/dist/permission-grants.d.ts.map +1 -0
  83. package/dist/permission-grants.js +93 -0
  84. package/dist/permission-grants.js.map +1 -0
  85. package/dist/personas.d.ts +51 -0
  86. package/dist/personas.d.ts.map +1 -0
  87. package/dist/personas.js +137 -0
  88. package/dist/personas.js.map +1 -0
  89. package/dist/project-tool-registry.d.ts +16 -0
  90. package/dist/project-tool-registry.d.ts.map +1 -0
  91. package/dist/project-tool-registry.js +86 -0
  92. package/dist/project-tool-registry.js.map +1 -0
  93. package/dist/projects.d.ts +88 -0
  94. package/dist/projects.d.ts.map +1 -0
  95. package/dist/projects.js +243 -0
  96. package/dist/projects.js.map +1 -0
  97. package/dist/prompt-context.d.ts +13 -0
  98. package/dist/prompt-context.d.ts.map +1 -0
  99. package/dist/prompt-context.js +170 -0
  100. package/dist/prompt-context.js.map +1 -0
  101. package/dist/proposed-plan.d.ts +24 -0
  102. package/dist/proposed-plan.d.ts.map +1 -0
  103. package/dist/proposed-plan.js +74 -0
  104. package/dist/proposed-plan.js.map +1 -0
  105. package/dist/providers.d.ts +53 -0
  106. package/dist/providers.d.ts.map +1 -0
  107. package/dist/providers.js +31 -0
  108. package/dist/providers.js.map +1 -0
  109. package/dist/question-requests.d.ts +39 -0
  110. package/dist/question-requests.d.ts.map +1 -0
  111. package/dist/question-requests.js +135 -0
  112. package/dist/question-requests.js.map +1 -0
  113. package/dist/renderer-api.d.ts +52 -0
  114. package/dist/renderer-api.d.ts.map +1 -0
  115. package/dist/renderer-api.js +2 -0
  116. package/dist/renderer-api.js.map +1 -0
  117. package/dist/runtime-tool-execution.d.ts +22 -0
  118. package/dist/runtime-tool-execution.d.ts.map +1 -0
  119. package/dist/runtime-tool-execution.js +245 -0
  120. package/dist/runtime-tool-execution.js.map +1 -0
  121. package/dist/runtime.d.ts +154 -0
  122. package/dist/runtime.d.ts.map +1 -0
  123. package/dist/runtime.js +184 -0
  124. package/dist/runtime.js.map +1 -0
  125. package/dist/secrets.d.ts +75 -0
  126. package/dist/secrets.d.ts.map +1 -0
  127. package/dist/secrets.js +255 -0
  128. package/dist/secrets.js.map +1 -0
  129. package/dist/session-actions.d.ts +45 -0
  130. package/dist/session-actions.d.ts.map +1 -0
  131. package/dist/session-actions.js +393 -0
  132. package/dist/session-actions.js.map +1 -0
  133. package/dist/skills.d.ts +43 -0
  134. package/dist/skills.d.ts.map +1 -0
  135. package/dist/skills.js +333 -0
  136. package/dist/skills.js.map +1 -0
  137. package/dist/test/setup.d.ts +2 -0
  138. package/dist/test/setup.d.ts.map +1 -0
  139. package/dist/test/setup.js +17 -0
  140. package/dist/test/setup.js.map +1 -0
  141. package/dist/tool-requests.d.ts +58 -0
  142. package/dist/tool-requests.d.ts.map +1 -0
  143. package/dist/tool-requests.js +122 -0
  144. package/dist/tool-requests.js.map +1 -0
  145. package/dist/tools.d.ts +45 -0
  146. package/dist/tools.d.ts.map +1 -0
  147. package/dist/tools.js +50 -0
  148. package/dist/tools.js.map +1 -0
  149. package/dist/wyrdos-integration.d.ts +32 -0
  150. package/dist/wyrdos-integration.d.ts.map +1 -0
  151. package/dist/wyrdos-integration.js +183 -0
  152. package/dist/wyrdos-integration.js.map +1 -0
  153. package/package.json +51 -0
@@ -0,0 +1,418 @@
1
+ import { execFile } from "node:child_process";
2
+ import { constants } from "node:fs";
3
+ import { access, lstat, mkdir, readdir, readFile, realpath, stat, writeFile, } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { rgPath } from "@vscode/ripgrep";
7
+ export class PathGuardError extends Error {
8
+ code = "path_outside_root";
9
+ }
10
+ export async function resolveSafePath(root, requestedPath = ".") {
11
+ const rootPath = path.resolve(root.rootPath);
12
+ const absolutePath = path.resolve(rootPath, requestedPath);
13
+ if (!isWithin(rootPath, absolutePath))
14
+ throw new PathGuardError("Path escapes approved root.");
15
+ const rootRealPath = await realpath(rootPath);
16
+ const existingPath = await nearestExistingPath(absolutePath);
17
+ const existingRealPath = await realpath(existingPath);
18
+ if (!isWithin(rootRealPath, existingRealPath))
19
+ throw new PathGuardError("Path escapes approved root.");
20
+ return {
21
+ rootPath,
22
+ absolutePath,
23
+ relativePath: path.relative(rootPath, absolutePath) || ".",
24
+ };
25
+ }
26
+ export async function listFiles(input) {
27
+ const safePath = await resolveSafePath(input, input.path);
28
+ const entries = await readdir(safePath.absolutePath, { withFileTypes: true });
29
+ const limit = input.limit ?? 200;
30
+ const files = await Promise.all(entries.slice(0, limit).map(async (entry) => {
31
+ const absolutePath = path.join(safePath.absolutePath, entry.name);
32
+ const info = await stat(absolutePath);
33
+ return {
34
+ name: entry.name,
35
+ relativePath: path.relative(safePath.rootPath, absolutePath),
36
+ kind: entry.isDirectory() ? "directory" : "file",
37
+ size: info.size,
38
+ mtimeMs: info.mtimeMs,
39
+ };
40
+ }));
41
+ return { files, truncated: entries.length > limit };
42
+ }
43
+ export function createListFilesTool(options = {}) {
44
+ return {
45
+ id: options.id ?? "list_files",
46
+ name: "List files",
47
+ description: "List files and folders inside the approved project folder.",
48
+ inputSchema: {
49
+ type: "object",
50
+ additionalProperties: false,
51
+ properties: {
52
+ path: { type: "string" },
53
+ limit: { type: "number" },
54
+ },
55
+ },
56
+ permissionPolicy: "never",
57
+ async executor(input, context) {
58
+ const rootPath = resolveToolRootPath(options, context);
59
+ const requestedPath = optionalString(input, "path");
60
+ const limit = optionalNumber(input, "limit");
61
+ const result = await listFiles({
62
+ rootPath,
63
+ ...(requestedPath !== undefined ? { path: requestedPath } : {}),
64
+ ...(limit !== undefined ? { limit } : {}),
65
+ });
66
+ return jsonToolResult(result);
67
+ },
68
+ };
69
+ }
70
+ export async function readTextFile(input) {
71
+ const safePath = await resolveSafePath(input, input.path);
72
+ const info = await stat(safePath.absolutePath);
73
+ const maxBytes = input.maxBytes ?? 256_000;
74
+ if (info.size > maxBytes)
75
+ throw new Error("File is too large to read.");
76
+ const buffer = await readFile(safePath.absolutePath);
77
+ if (buffer.includes(0))
78
+ throw new Error("Binary files are not supported.");
79
+ return {
80
+ content: buffer.toString("utf8"),
81
+ relativePath: safePath.relativePath,
82
+ };
83
+ }
84
+ export function createReadFileTool(options = {}) {
85
+ return {
86
+ id: options.id ?? "read_file",
87
+ name: "Read file",
88
+ description: "Read a text file inside the approved project folder.",
89
+ inputSchema: {
90
+ type: "object",
91
+ additionalProperties: false,
92
+ required: ["path"],
93
+ properties: {
94
+ path: { type: "string" },
95
+ maxBytes: { type: "number" },
96
+ },
97
+ },
98
+ permissionPolicy: "never",
99
+ async executor(input, context) {
100
+ const rootPath = resolveToolRootPath(options, context);
101
+ const filePath = requiredString(input, "path");
102
+ const maxBytes = optionalNumber(input, "maxBytes");
103
+ const result = await readTextFile({
104
+ rootPath,
105
+ path: filePath,
106
+ ...(maxBytes !== undefined ? { maxBytes } : {}),
107
+ });
108
+ return jsonToolResult(result);
109
+ },
110
+ };
111
+ }
112
+ export async function writeTextFile(input) {
113
+ const safePath = await resolveSafePath(input, input.path);
114
+ await mkdir(path.dirname(safePath.absolutePath), { recursive: true });
115
+ await writeFile(safePath.absolutePath, input.content, "utf8");
116
+ return { relativePath: safePath.relativePath };
117
+ }
118
+ export function createWriteFileTool(options = {}) {
119
+ return {
120
+ id: options.id ?? "write_file",
121
+ name: "Write file",
122
+ description: "Create or overwrite a text file inside the approved project folder.",
123
+ inputSchema: {
124
+ type: "object",
125
+ additionalProperties: false,
126
+ required: ["path", "content"],
127
+ properties: {
128
+ path: { type: "string" },
129
+ content: { type: "string" },
130
+ },
131
+ },
132
+ permissionPolicy: "on-request",
133
+ async executor(input, context) {
134
+ const rootPath = resolveToolRootPath(options, context);
135
+ const filePath = requiredString(input, "path");
136
+ const content = requiredString(input, "content");
137
+ const result = await writeTextFile({ rootPath, path: filePath, content });
138
+ return jsonToolResult(result, {
139
+ artifactKind: "local_file",
140
+ artifactPath: result.relativePath,
141
+ bytes: Buffer.byteLength(content, "utf8"),
142
+ });
143
+ },
144
+ };
145
+ }
146
+ export async function editTextFile(input) {
147
+ const current = await readTextFile(input);
148
+ if (!current.content.includes(input.search))
149
+ throw new Error("Search text was not found.");
150
+ const next = current.content.replace(input.search, input.replace);
151
+ await writeTextFile({ ...input, content: next });
152
+ return {
153
+ relativePath: current.relativePath,
154
+ changed: current.content !== next,
155
+ };
156
+ }
157
+ export function createEditFileTool(options = {}) {
158
+ return {
159
+ id: options.id ?? "edit_file",
160
+ name: "Edit file",
161
+ description: "Replace text in a file inside the approved project folder.",
162
+ inputSchema: {
163
+ type: "object",
164
+ additionalProperties: false,
165
+ required: ["path", "search", "replace"],
166
+ properties: {
167
+ path: { type: "string" },
168
+ search: { type: "string" },
169
+ replace: { type: "string" },
170
+ },
171
+ },
172
+ permissionPolicy: "on-request",
173
+ async executor(input, context) {
174
+ const rootPath = resolveToolRootPath(options, context);
175
+ const result = await editTextFile({
176
+ rootPath,
177
+ path: requiredString(input, "path"),
178
+ search: requiredString(input, "search"),
179
+ replace: requiredString(input, "replace"),
180
+ });
181
+ return jsonToolResult(result, {
182
+ artifactKind: "local_file",
183
+ artifactPath: result.relativePath,
184
+ changed: result.changed,
185
+ });
186
+ },
187
+ };
188
+ }
189
+ export async function ripgrepSearch(input) {
190
+ const safePath = await resolveSafePath(input, input.path);
191
+ const exec = input.exec ?? execFileAsync;
192
+ try {
193
+ const result = await exec(rgPath, ["--line-number", "--color", "never", input.query, safePath.relativePath], {
194
+ cwd: safePath.rootPath,
195
+ timeout: 5_000,
196
+ maxBuffer: 256_000,
197
+ });
198
+ const lines = result.stdout.split("\n").filter(Boolean);
199
+ const limit = input.limit ?? 200;
200
+ return { matches: lines.slice(0, limit), truncated: lines.length > limit };
201
+ }
202
+ catch (error) {
203
+ if (typeof error === "object" &&
204
+ error &&
205
+ "code" in error &&
206
+ error.code === 1) {
207
+ return { matches: [], truncated: false };
208
+ }
209
+ throw error;
210
+ }
211
+ }
212
+ export function createRipgrepTool(options = {}) {
213
+ return {
214
+ id: options.id ?? "ripgrep",
215
+ name: "Search files",
216
+ description: "Search approved project files with ripgrep.",
217
+ inputSchema: {
218
+ type: "object",
219
+ additionalProperties: false,
220
+ required: ["query"],
221
+ properties: {
222
+ query: { type: "string" },
223
+ path: { type: "string" },
224
+ limit: { type: "number" },
225
+ },
226
+ },
227
+ permissionPolicy: "never",
228
+ async executor(input, context) {
229
+ const rootPath = resolveToolRootPath(options, context);
230
+ const requestedPath = optionalString(input, "path");
231
+ const limit = optionalNumber(input, "limit");
232
+ const result = await ripgrepSearch({
233
+ rootPath,
234
+ query: requiredString(input, "query"),
235
+ ...(requestedPath !== undefined ? { path: requestedPath } : {}),
236
+ ...(limit !== undefined ? { limit } : {}),
237
+ });
238
+ return jsonToolResult(result);
239
+ },
240
+ };
241
+ }
242
+ export async function globFiles(input) {
243
+ const safePath = await resolveSafePath(input, input.path);
244
+ const exec = input.exec ?? execFileAsync;
245
+ try {
246
+ const result = await exec(rgPath, ["--files", "-g", input.pattern, safePath.relativePath], {
247
+ cwd: safePath.rootPath,
248
+ timeout: 5_000,
249
+ maxBuffer: 256_000,
250
+ });
251
+ const files = result.stdout.split("\n").filter(Boolean);
252
+ const limit = input.limit ?? 200;
253
+ return { files: files.slice(0, limit), truncated: files.length > limit };
254
+ }
255
+ catch (error) {
256
+ if (typeof error === "object" &&
257
+ error &&
258
+ "code" in error &&
259
+ error.code === 1) {
260
+ return { files: [], truncated: false };
261
+ }
262
+ throw error;
263
+ }
264
+ }
265
+ export function createGlobTool(options = {}) {
266
+ return {
267
+ id: options.id ?? "glob",
268
+ name: "Find files",
269
+ description: "Find approved project files by glob pattern.",
270
+ inputSchema: {
271
+ type: "object",
272
+ additionalProperties: false,
273
+ required: ["pattern"],
274
+ properties: {
275
+ pattern: { type: "string" },
276
+ path: { type: "string" },
277
+ limit: { type: "number" },
278
+ },
279
+ },
280
+ permissionPolicy: "never",
281
+ async executor(input, context) {
282
+ const rootPath = resolveToolRootPath(options, context);
283
+ const requestedPath = optionalString(input, "path");
284
+ const limit = optionalNumber(input, "limit");
285
+ const result = await globFiles({
286
+ rootPath,
287
+ pattern: requiredString(input, "pattern"),
288
+ ...(requestedPath !== undefined ? { path: requestedPath } : {}),
289
+ ...(limit !== undefined ? { limit } : {}),
290
+ });
291
+ return jsonToolResult(result);
292
+ },
293
+ };
294
+ }
295
+ export async function runBashCommand(input) {
296
+ const safePath = await resolveSafePath(input, ".");
297
+ const exec = input.exec ?? execFileAsync;
298
+ let result;
299
+ try {
300
+ const success = await exec("bash", ["-lc", input.command], {
301
+ cwd: safePath.rootPath,
302
+ timeout: input.timeoutMs ?? 10_000,
303
+ maxBuffer: 256_000,
304
+ });
305
+ result = { stdout: success.stdout, stderr: success.stderr, exitCode: 0 };
306
+ }
307
+ catch (error) {
308
+ if (!isExecError(error))
309
+ throw error;
310
+ result = {
311
+ stdout: error.stdout ?? "",
312
+ stderr: error.stderr ?? "",
313
+ exitCode: typeof error.code === "number" ? error.code : 1,
314
+ };
315
+ }
316
+ return {
317
+ stdout: result.stdout,
318
+ stderr: result.stderr,
319
+ exitCode: result.exitCode,
320
+ risk: classifyDestructiveCommand(input.command),
321
+ };
322
+ }
323
+ export function createBashTool(options = {}) {
324
+ return {
325
+ id: "bash",
326
+ name: "Run shell command",
327
+ description: "Run a shell command inside the approved project folder.",
328
+ inputSchema: {
329
+ type: "object",
330
+ additionalProperties: false,
331
+ required: ["command"],
332
+ properties: {
333
+ command: { type: "string" },
334
+ timeoutMs: { type: "number" },
335
+ },
336
+ },
337
+ permissionPolicy: "on-request",
338
+ async executor(input, context) {
339
+ const rootPath = resolveToolRootPath(options, context);
340
+ const timeoutMs = optionalNumber(input, "timeoutMs");
341
+ const result = await runBashCommand({
342
+ rootPath,
343
+ command: requiredString(input, "command"),
344
+ ...(timeoutMs !== undefined ? { timeoutMs } : {}),
345
+ });
346
+ return jsonToolResult(result, {
347
+ exitCode: result.exitCode,
348
+ risk: result.risk,
349
+ });
350
+ },
351
+ };
352
+ }
353
+ export function classifyDestructiveCommand(command) {
354
+ return /\brm\s+-rf\b|\bgit\s+reset\s+--hard\b|\bchmod\s+-R\b|>\s*\/dev\/sd|:\s*>\s*\S+/.test(command)
355
+ ? "destructive"
356
+ : "normal";
357
+ }
358
+ const execFileAsync = promisify(execFile);
359
+ function isExecError(error) {
360
+ return Boolean(error &&
361
+ typeof error === "object" &&
362
+ ("stdout" in error || "stderr" in error || "code" in error));
363
+ }
364
+ function resolveToolRootPath(options, context) {
365
+ const rootPath = options.rootPath ?? context.project?.rootPath;
366
+ if (!rootPath)
367
+ throw new Error("A project rootPath or tool rootPath is required.");
368
+ return rootPath;
369
+ }
370
+ function jsonToolResult(value, metadata) {
371
+ return {
372
+ content: JSON.stringify(value),
373
+ ...(metadata ? { metadata } : {}),
374
+ };
375
+ }
376
+ function inputRecord(input) {
377
+ if (!input || typeof input !== "object" || Array.isArray(input))
378
+ return {};
379
+ return input;
380
+ }
381
+ function optionalString(input, key) {
382
+ const value = inputRecord(input)[key];
383
+ return typeof value === "string" ? value : undefined;
384
+ }
385
+ function requiredString(input, key) {
386
+ const value = optionalString(input, key);
387
+ if (!value)
388
+ throw new Error(`${key} is required.`);
389
+ return value;
390
+ }
391
+ function optionalNumber(input, key) {
392
+ const value = inputRecord(input)[key];
393
+ return typeof value === "number" && Number.isFinite(value)
394
+ ? value
395
+ : undefined;
396
+ }
397
+ async function nearestExistingPath(absolutePath) {
398
+ let current = absolutePath;
399
+ while (true) {
400
+ try {
401
+ await access(current, constants.F_OK);
402
+ const info = await lstat(current);
403
+ return info.isSymbolicLink() ? realpath(current) : current;
404
+ }
405
+ catch {
406
+ const parent = path.dirname(current);
407
+ if (parent === current)
408
+ throw new PathGuardError("No existing path found.");
409
+ current = parent;
410
+ }
411
+ }
412
+ }
413
+ function isWithin(rootPath, candidatePath) {
414
+ const relative = path.relative(rootPath, candidatePath);
415
+ return (relative === "" ||
416
+ (!relative.startsWith("..") && !path.isAbsolute(relative)));
417
+ }
418
+ //# sourceMappingURL=local-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-tools.js","sourceRoot":"","sources":["../src/local-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type ActorPathResolverOptions } from "@useactor/storage";
2
+ export interface McpServerConfig {
3
+ readonly id: string;
4
+ readonly command: string;
5
+ readonly args: readonly string[];
6
+ readonly env?: readonly McpEnvSecretRef[];
7
+ readonly description?: string;
8
+ }
9
+ export interface McpEnvSecretRef {
10
+ readonly name: string;
11
+ readonly secretId: string;
12
+ }
13
+ export declare function saveMcpServerConfig(config: McpServerConfig, options?: ActorPathResolverOptions): Promise<void>;
14
+ export declare function listMcpServerConfigs(options?: ActorPathResolverOptions): Promise<readonly McpServerConfig[]>;
15
+ export declare function deleteMcpServerConfig(serverId: string, options?: ActorPathResolverOptions): Promise<boolean>;
16
+ //# sourceMappingURL=mcp-server-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-config.d.ts","sourceRoot":"","sources":["../src/mcp-server-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEtG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,oBAAoB,CACxC,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAKrC;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,OAAO,CAAC,CAqBlB"}
@@ -0,0 +1,75 @@
1
+ import { readActorConfig, updateActorConfig } from "@useactor/storage";
2
+ export async function saveMcpServerConfig(config, options) {
3
+ const normalized = normalizeMcpServerConfig(config);
4
+ await updateActorConfig({
5
+ ...(options ?? {}),
6
+ update(existing) {
7
+ const servers = getMcpServerMap(existing);
8
+ return {
9
+ ...existing,
10
+ cli: {
11
+ ...(existing.cli ?? {}),
12
+ mcpServers: {
13
+ ...servers,
14
+ [normalized.id]: normalized
15
+ }
16
+ }
17
+ };
18
+ }
19
+ });
20
+ }
21
+ export async function listMcpServerConfigs(options) {
22
+ const config = await readActorConfig(options);
23
+ return Object.values(getMcpServerMap(config))
24
+ .map((entry) => normalizeMcpServerConfig(entry))
25
+ .sort((a, b) => a.id.localeCompare(b.id));
26
+ }
27
+ export async function deleteMcpServerConfig(serverId, options) {
28
+ let deleted = false;
29
+ await updateActorConfig({
30
+ ...(options ?? {}),
31
+ update(existing) {
32
+ const servers = getMcpServerMap(existing);
33
+ if (!servers[serverId]) {
34
+ return existing;
35
+ }
36
+ deleted = true;
37
+ const { [serverId]: _, ...rest } = servers;
38
+ return {
39
+ ...existing,
40
+ cli: {
41
+ ...(existing.cli ?? {}),
42
+ mcpServers: rest
43
+ }
44
+ };
45
+ }
46
+ });
47
+ return deleted;
48
+ }
49
+ function getMcpServerMap(config) {
50
+ const servers = config.cli?.mcpServers;
51
+ if (!servers || typeof servers !== "object" || Array.isArray(servers)) {
52
+ return {};
53
+ }
54
+ return servers;
55
+ }
56
+ function normalizeMcpServerConfig(config) {
57
+ const id = config.id.trim();
58
+ const command = config.command.trim();
59
+ if (!id || !command) {
60
+ throw new Error("MCP server requires id and command.");
61
+ }
62
+ return {
63
+ id,
64
+ command,
65
+ args: config.args.map((arg) => arg.trim()).filter(Boolean),
66
+ ...(config.description?.trim() ? { description: config.description.trim() } : {}),
67
+ ...(config.env ? { env: sanitizeEnv(config.env) } : {})
68
+ };
69
+ }
70
+ function sanitizeEnv(env) {
71
+ return env
72
+ .map((entry) => ({ name: entry.name.trim(), secretId: entry.secretId.trim() }))
73
+ .filter((entry) => entry.name && entry.secretId);
74
+ }
75
+ //# sourceMappingURL=mcp-server-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-config.js","sourceRoot":"","sources":["../src/mcp-server-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ProviderAdapter } from "./runtime.js";
2
+ export interface MockProviderAdapterOptions {
3
+ readonly responseChunks?: readonly string[];
4
+ readonly delayMs?: number;
5
+ readonly forceError?: string;
6
+ }
7
+ export declare function createMockProviderAdapter(options?: MockProviderAdapterOptions): ProviderAdapter;
8
+ //# sourceMappingURL=mock-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.d.ts","sourceRoot":"","sources":["../src/mock-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAyBD,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,0BAA+B,GACvC,eAAe,CAmCjB"}
@@ -0,0 +1,47 @@
1
+ const defaultChunks = ["Mock assistant ", "response stream."];
2
+ const wait = async (delayMs, signal) => {
3
+ if (delayMs <= 0) {
4
+ return;
5
+ }
6
+ await new Promise((resolve, reject) => {
7
+ const timer = setTimeout(() => {
8
+ signal?.removeEventListener("abort", onAbort);
9
+ resolve();
10
+ }, delayMs);
11
+ const onAbort = () => {
12
+ clearTimeout(timer);
13
+ signal?.removeEventListener("abort", onAbort);
14
+ reject(new Error("aborted"));
15
+ };
16
+ signal?.addEventListener("abort", onAbort, { once: true });
17
+ });
18
+ };
19
+ export function createMockProviderAdapter(options = {}) {
20
+ const responseChunks = options.responseChunks ?? defaultChunks;
21
+ const delayMs = options.delayMs ?? 0;
22
+ return {
23
+ id: "mock",
24
+ displayName: "Mock Provider",
25
+ async *streamMessage(input) {
26
+ if (options.forceError) {
27
+ throw new Error(options.forceError);
28
+ }
29
+ for (const text of responseChunks) {
30
+ if (input.signal?.aborted) {
31
+ return;
32
+ }
33
+ try {
34
+ await wait(delayMs, input.signal);
35
+ }
36
+ catch {
37
+ return;
38
+ }
39
+ if (input.signal?.aborted) {
40
+ return;
41
+ }
42
+ yield { text };
43
+ }
44
+ }
45
+ };
46
+ }
47
+ //# sourceMappingURL=mock-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.js","sourceRoot":"","sources":["../src/mock-provider.ts"],"names":[],"mappings":"AAaA,MAAM,aAAa,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAU,CAAC;AAEvE,MAAM,IAAI,GAAG,KAAK,EAAE,OAAe,EAAE,MAAoB,EAAiB,EAAE;IAC1E,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CACvC,UAAsC,EAAE;IAExC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,aAAa,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IAErC,OAAO;QACL,EAAE,EAAE,MAAM;QACV,WAAW,EAAE,eAAe;QAC5B,KAAK,CAAC,CAAC,aAAa,CAAC,KAIpB;YACC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;gBACT,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBAED,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type ActorReasoningLevelId = "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
2
+ export interface ActorReasoningLevelOption {
3
+ readonly id: ActorReasoningLevelId;
4
+ readonly label: string;
5
+ readonly description: string;
6
+ }
7
+ export interface ActorModelCatalogEntry {
8
+ readonly providerId: string;
9
+ readonly modelId: string;
10
+ readonly contextWindow: number;
11
+ readonly inputLimit?: number;
12
+ readonly outputLimit?: number;
13
+ readonly defaultReasoningLevel?: ActorReasoningLevelId;
14
+ readonly supportedReasoningLevels?: readonly ActorReasoningLevelOption[];
15
+ }
16
+ export declare function getModelCatalogEntry(input: {
17
+ readonly providerId: string;
18
+ readonly modelId: string;
19
+ }): ActorModelCatalogEntry | undefined;
20
+ export declare function getCatalogContextWindows(input: {
21
+ readonly providerId: string;
22
+ readonly modelIds: readonly string[];
23
+ }): Readonly<Record<string, number>>;
24
+ //# sourceMappingURL=model-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IACvD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC1E;AAoFD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GAAG,sBAAsB,GAAG,SAAS,CAKrC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAUnC"}