@framers/agentos-ext-cli-executor 1.1.0 → 1.2.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 (38) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +80 -28
  3. package/dist/index.d.ts +68 -10
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +78 -18
  6. package/dist/index.js.map +1 -1
  7. package/dist/services/shellService.d.ts +15 -1
  8. package/dist/services/shellService.d.ts.map +1 -1
  9. package/dist/services/shellService.js +96 -10
  10. package/dist/services/shellService.js.map +1 -1
  11. package/dist/tools/createPdf.d.ts +32 -0
  12. package/dist/tools/createPdf.d.ts.map +1 -0
  13. package/dist/tools/createPdf.js +215 -0
  14. package/dist/tools/createPdf.js.map +1 -0
  15. package/dist/tools/execute.d.ts +15 -18
  16. package/dist/tools/execute.d.ts.map +1 -1
  17. package/dist/tools/execute.js +36 -36
  18. package/dist/tools/execute.js.map +1 -1
  19. package/dist/tools/fileRead.d.ts +15 -18
  20. package/dist/tools/fileRead.d.ts.map +1 -1
  21. package/dist/tools/fileRead.js +63 -39
  22. package/dist/tools/fileRead.js.map +1 -1
  23. package/dist/tools/fileWrite.d.ts +15 -18
  24. package/dist/tools/fileWrite.d.ts.map +1 -1
  25. package/dist/tools/fileWrite.js +47 -40
  26. package/dist/tools/fileWrite.js.map +1 -1
  27. package/dist/tools/listDir.d.ts +15 -18
  28. package/dist/tools/listDir.d.ts.map +1 -1
  29. package/dist/tools/listDir.js +45 -45
  30. package/dist/tools/listDir.js.map +1 -1
  31. package/dist/tools/readDocument.d.ts +41 -0
  32. package/dist/tools/readDocument.d.ts.map +1 -0
  33. package/dist/tools/readDocument.js +252 -0
  34. package/dist/tools/readDocument.js.map +1 -0
  35. package/dist/types.d.ts +63 -0
  36. package/dist/types.d.ts.map +1 -1
  37. package/manifest.json +20 -14
  38. package/package.json +15 -9
@@ -37,9 +37,76 @@ export class ShellService {
37
37
  defaultShell: 'auto',
38
38
  timeout: 60000,
39
39
  blockedCommands: [],
40
+ dangerouslySkipSecurityChecks: false,
40
41
  ...config,
41
42
  };
42
43
  }
44
+ resolveAbsolutePath(filePath) {
45
+ const baseDir = this.config.workingDirectory || process.cwd();
46
+ const abs = path.isAbsolute(filePath) ? filePath : path.resolve(baseDir, filePath);
47
+ return path.normalize(abs);
48
+ }
49
+ isFilesystemPolicyEnabled() {
50
+ return !!this.config.filesystem;
51
+ }
52
+ isWithinRoot(targetPath, rootPath) {
53
+ const rel = path.relative(rootPath, targetPath);
54
+ return rel === '' || (!rel.startsWith(`..${path.sep}`) && rel !== '..' && !path.isAbsolute(rel));
55
+ }
56
+ async resolvePathForAuthorization(absolutePath, op) {
57
+ try {
58
+ return await fs.realpath(absolutePath);
59
+ }
60
+ catch {
61
+ // For writes, resolve the closest existing ancestor so symlink escapes are still detected.
62
+ if (op !== 'write')
63
+ return absolutePath;
64
+ let cursor = path.dirname(absolutePath);
65
+ while (true) {
66
+ try {
67
+ const realCursor = await fs.realpath(cursor);
68
+ const remainder = path.relative(cursor, absolutePath);
69
+ return path.join(realCursor, remainder);
70
+ }
71
+ catch {
72
+ const parent = path.dirname(cursor);
73
+ if (parent === cursor)
74
+ break;
75
+ cursor = parent;
76
+ }
77
+ }
78
+ return absolutePath;
79
+ }
80
+ }
81
+ async assertFilesystemAllowed(op, absolutePath) {
82
+ if (!this.isFilesystemPolicyEnabled())
83
+ return;
84
+ const policy = this.config.filesystem;
85
+ const allow = op === 'write' ? policy.allowWrite === true : policy.allowRead === true;
86
+ if (!allow) {
87
+ throw new Error(`Filesystem ${op} is disabled by policy`);
88
+ }
89
+ const rootsRaw = op === 'write' ? policy.writeRoots : policy.readRoots;
90
+ if (!Array.isArray(rootsRaw) || rootsRaw.length === 0) {
91
+ throw new Error(`Filesystem ${op} roots are not configured`);
92
+ }
93
+ const baseDir = this.config.workingDirectory || process.cwd();
94
+ const roots = await Promise.all(rootsRaw.map(async (root) => {
95
+ const absRoot = path.isAbsolute(root) ? root : path.resolve(baseDir, root);
96
+ const normalized = path.normalize(absRoot);
97
+ try {
98
+ return await fs.realpath(normalized);
99
+ }
100
+ catch {
101
+ return normalized;
102
+ }
103
+ }));
104
+ const authPath = await this.resolvePathForAuthorization(absolutePath, op);
105
+ const allowed = roots.some((root) => this.isWithinRoot(authPath, root));
106
+ if (!allowed) {
107
+ throw new Error(`Path is outside allowed filesystem ${op} roots: ${absolutePath}`);
108
+ }
109
+ }
43
110
  /**
44
111
  * Detect the appropriate shell for the current platform
45
112
  */
@@ -62,6 +129,14 @@ export class ShellService {
62
129
  * Check if a command is safe to execute
63
130
  */
64
131
  checkSecurity(command) {
132
+ if (this.config.dangerouslySkipSecurityChecks) {
133
+ return {
134
+ allowed: true,
135
+ reason: 'Security checks disabled by configuration',
136
+ riskLevel: 'critical',
137
+ warnings: ['Security checks are disabled'],
138
+ };
139
+ }
65
140
  const warnings = [];
66
141
  let riskLevel = 'safe';
67
142
  // Check against blocked commands list
@@ -219,9 +294,8 @@ export class ShellService {
219
294
  */
220
295
  async readFile(filePath, options) {
221
296
  const encoding = options?.encoding || 'utf-8';
222
- const absolutePath = path.isAbsolute(filePath)
223
- ? filePath
224
- : path.resolve(this.config.workingDirectory || process.cwd(), filePath);
297
+ const absolutePath = this.resolveAbsolutePath(filePath);
298
+ await this.assertFilesystemAllowed('read', absolutePath);
225
299
  const stats = await fs.stat(absolutePath);
226
300
  let content;
227
301
  let truncated = false;
@@ -258,14 +332,27 @@ export class ShellService {
258
332
  encoding,
259
333
  };
260
334
  }
335
+ /**
336
+ * Read a file as a raw Buffer (for binary document formats).
337
+ * Enforces the same filesystem security policy as readFile.
338
+ */
339
+ async readFileBuffer(filePath) {
340
+ const absolutePath = this.resolveAbsolutePath(filePath);
341
+ await this.assertFilesystemAllowed('read', absolutePath);
342
+ const stats = await fs.stat(absolutePath);
343
+ if (stats.isDirectory()) {
344
+ throw new Error(`"${filePath}" is a directory, not a file`);
345
+ }
346
+ const buffer = await fs.readFile(absolutePath);
347
+ return { buffer, path: absolutePath, size: stats.size };
348
+ }
261
349
  /**
262
350
  * Write to a file
263
351
  */
264
352
  async writeFile(filePath, content, options) {
265
353
  const encoding = options?.encoding || 'utf-8';
266
- const absolutePath = path.isAbsolute(filePath)
267
- ? filePath
268
- : path.resolve(this.config.workingDirectory || process.cwd(), filePath);
354
+ const absolutePath = this.resolveAbsolutePath(filePath);
355
+ await this.assertFilesystemAllowed('write', absolutePath);
269
356
  // Check if file exists
270
357
  let fileExists = true;
271
358
  try {
@@ -296,9 +383,8 @@ export class ShellService {
296
383
  * List directory contents
297
384
  */
298
385
  async listDirectory(dirPath, options) {
299
- const absolutePath = path.isAbsolute(dirPath)
300
- ? dirPath
301
- : path.resolve(this.config.workingDirectory || process.cwd(), dirPath);
386
+ const absolutePath = this.resolveAbsolutePath(dirPath);
387
+ await this.assertFilesystemAllowed('list', absolutePath);
302
388
  const entries = [];
303
389
  const readDir = async (dir, depth) => {
304
390
  const items = await fs.readdir(dir, { withFileTypes: true });
@@ -332,7 +418,7 @@ export class ShellService {
332
418
  // Include stats if requested
333
419
  if (options?.includeStats) {
334
420
  try {
335
- const stats = await fs.stat(itemPath);
421
+ const stats = await fs.lstat(itemPath);
336
422
  entry.size = stats.size;
337
423
  entry.modifiedAt = stats.mtime.toISOString();
338
424
  entry.createdAt = stats.birthtime.toISOString();
@@ -1 +1 @@
1
- {"version":3,"file":"shellService.js","sourceRoot":"","sources":["../../src/services/shellService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAS,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAgB7B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACzB,qCAAqC,EAAG,kBAAkB;IAC1D,oCAAoC,EAAI,kBAAkB;IAC1D,kBAAkB,EAAwB,YAAY;IACtD,6BAA6B,EAAY,gBAAgB;IACzD,SAAS,EAAiC,SAAS;IACnD,sBAAsB,EAAmB,aAAa;IACtD,kCAAkC,EAAO,YAAY;IACrD,qBAAqB,EAAoB,uBAAuB;IAChE,2BAA2B,EAAe,iBAAiB;IAC3D,kBAAkB,EAAwB,mBAAmB;IAC7D,iBAAiB,EAAyB,cAAc;IACxD,mBAAmB,EAAuB,cAAc;IACxD,mBAAmB,EAAuB,eAAe;CAC1D,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,CAAc;IAE5B,YAAY,SAAsB,EAAE;QAClC,IAAI,CAAC,MAAM,GAAG;YACZ,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,EAAE;YACnB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,OAAO,YAAY,CAAC;QACtB,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,SAAS,GAAqC,MAAM,CAAC;QAEzD,sCAAsC;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,qCAAqC,OAAO,EAAE;oBACtD,SAAS,EAAE,UAAU;oBACrB,QAAQ,EAAE,EAAE;iBACb,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,sCAAsC,OAAO,CAAC,MAAM,EAAE;oBAC9D,SAAS,EAAE,UAAU;oBACrB,QAAQ,EAAE,EAAE;iBACb,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,gCAAgC,WAAW,EAAE;oBACrD,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,EAAE;iBACb,CAAC;YACJ,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAClD,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACpD,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACxC,SAAS,GAAG,QAAQ,CAAC;QACvB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,MAAM;gBAAE,SAAS,GAAG,KAAK,CAAC;QAC9C,CAAC;QACD,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACvC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK;gBAAE,SAAS,GAAG,QAAQ,CAAC;QACxE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,OAA0E;QAE1E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QAEjE,iBAAiB;QACjB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,uBAAuB,aAAa,CAAC,MAAM,EAAE;gBACrD,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,KAAK;gBACd,GAAG;gBACH,KAAK;aACN,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC;YAEpE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE;gBACpD,GAAG;gBACH,GAAG;gBACH,OAAO;gBACP,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK;gBACxD,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;aACrC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,OAAO,EAAE,IAAI;gBACb,GAAG;gBACH,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO;gBACP,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;gBACzB,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACtC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO;gBACjD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,OAAO,EAAE,KAAK;gBACd,GAAG;gBACH,KAAK;aACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,UAAkB,EAClB,OAAuB;QAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QAEjE,0DAA0D;QAC1D,IAAI,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,WAAW,GAAG;gBACZ,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,MAAM;aACd,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,GAAG,WAAW,KAAK,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAEnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAEhF,OAAO;YACL,GAAG,MAAM;YACT,UAAU;YACV,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,OAAyB;QACxD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1C,IAAI,OAAe,CAAC;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;YACD,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC7B,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YAC1F,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxD,SAAS,GAAG,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,mBAAmB;YACnB,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;QAED,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,OAAe,EACf,OAA0B;QAE1B,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE1E,uBAAuB;QACvB,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,aAAa;QACb,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;YAClD,OAAO,EAAE,CAAC,UAAU;YACpB,QAAQ,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;SACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,OAA8B;QAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE;YACnD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,qCAAqC;gBACrC,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtD,SAAS;gBACX,CAAC;gBAED,uBAAuB;gBACvB,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;oBACrB,MAAM,KAAK,GAAG,IAAI,MAAM,CACtB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACzD,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAmB;oBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;wBACtB,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;4BACvB,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;gCACf,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,OAAO;iBACZ,CAAC;gBAEF,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;oBAClB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;oBAC1B,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACtC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;wBACxB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;wBAC7C,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;oBAClD,CAAC;oBAAC,MAAM,CAAC;wBACP,qBAAqB;oBACvB,CAAC;gBACH,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEpB,oBAAoB;gBACpB,IACE,OAAO,EAAE,SAAS;oBAClB,IAAI,CAAC,WAAW,EAAE;oBAClB,KAAK,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,EACjC,CAAC;oBACD,MAAM,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAE/B,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,KAAK;SACvC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"shellService.js","sourceRoot":"","sources":["../../src/services/shellService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Create PDF Tool
3
+ * Generate real PDF files from text content.
4
+ *
5
+ * @module @framers/agentos-ext-cli-executor
6
+ */
7
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
8
+ export declare class CreatePdfTool implements ITool {
9
+ readonly id = "cli-create-pdf-v1";
10
+ readonly name = "create_pdf";
11
+ readonly displayName = "Create PDF";
12
+ readonly description = "Create a real PDF document from text content. Use this instead of file_write when the user asks for a PDF file.";
13
+ readonly category = "system";
14
+ readonly hasSideEffects = true;
15
+ readonly inputSchema: JSONSchemaObject;
16
+ execute(input: {
17
+ path: string;
18
+ content: string;
19
+ title?: string;
20
+ author?: string;
21
+ fontSize?: number;
22
+ }, _context: ToolExecutionContext): Promise<ToolExecutionResult<{
23
+ path: string;
24
+ pages: number;
25
+ bytes: number;
26
+ }>>;
27
+ validateArgs(input: Record<string, any>): {
28
+ isValid: boolean;
29
+ errors?: any[];
30
+ };
31
+ }
32
+ //# sourceMappingURL=createPdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPdf.d.ts","sourceRoot":"","sources":["../../src/tools/createPdf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA8K3G,qBAAa,aAAc,YAAW,KAAK;IACzC,SAAgB,EAAE,uBAAuB;IACzC,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,WAAW,gBAAgB;IAC3C,SAAgB,WAAW,qHACyF;IACpH,SAAgB,QAAQ,YAAY;IACpC,SAAgB,cAAc,QAAQ;IAEtC,SAAgB,WAAW,EAAE,gBAAgB,CA0B3C;IAEI,OAAO,CACX,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,EACD,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA4B/E,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE;CAM/E"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Create PDF Tool
3
+ * Generate real PDF files from text content.
4
+ *
5
+ * @module @framers/agentos-ext-cli-executor
6
+ */
7
+ import { mkdir, writeFile } from 'node:fs/promises';
8
+ import { dirname, resolve } from 'node:path';
9
+ /**
10
+ * Generate a valid PDF 1.4 binary buffer from plain text content.
11
+ *
12
+ * Supports:
13
+ * - Multi-page text layout with automatic pagination
14
+ * - UTF-8 → WinAnsiEncoding (Latin-1 subset)
15
+ * - Configurable margins, font size, page dimensions
16
+ * - Document metadata (Title, Author, CreationDate)
17
+ */
18
+ function generatePdf(text, opts = {}) {
19
+ const fontSize = opts.fontSize ?? 12;
20
+ const margin = opts.margin ?? 72; // 1 inch
21
+ const pageW = opts.pageWidth ?? 612; // US Letter
22
+ const pageH = opts.pageHeight ?? 792;
23
+ const lineHeight = fontSize * 1.4;
24
+ const usableW = pageW - margin * 2;
25
+ const usableH = pageH - margin * 2;
26
+ const linesPerPage = Math.floor(usableH / lineHeight);
27
+ // Approximate characters per line (Helvetica average ~0.5 * fontSize)
28
+ const avgCharWidth = fontSize * 0.5;
29
+ const charsPerLine = Math.floor(usableW / avgCharWidth);
30
+ // Word-wrap text into lines
31
+ const rawLines = text.split('\n');
32
+ const wrapped = [];
33
+ for (const raw of rawLines) {
34
+ if (raw.length === 0) {
35
+ wrapped.push('');
36
+ continue;
37
+ }
38
+ let remaining = raw;
39
+ while (remaining.length > 0) {
40
+ if (remaining.length <= charsPerLine) {
41
+ wrapped.push(remaining);
42
+ break;
43
+ }
44
+ // Find last space within charsPerLine
45
+ let breakAt = remaining.lastIndexOf(' ', charsPerLine);
46
+ if (breakAt <= 0)
47
+ breakAt = charsPerLine;
48
+ wrapped.push(remaining.slice(0, breakAt));
49
+ remaining = remaining.slice(breakAt).trimStart();
50
+ }
51
+ }
52
+ // Paginate
53
+ const pages = [];
54
+ for (let i = 0; i < wrapped.length; i += linesPerPage) {
55
+ pages.push(wrapped.slice(i, i + linesPerPage));
56
+ }
57
+ if (pages.length === 0)
58
+ pages.push(['']);
59
+ // ── Build PDF objects ──────────────────────────────────────────────────
60
+ const objects = [];
61
+ const offsets = [];
62
+ let nextObj = 1;
63
+ const addObj = (content) => {
64
+ const id = nextObj++;
65
+ objects.push(`${id} 0 obj\n${content}\nendobj\n`);
66
+ return id;
67
+ };
68
+ // Escape PDF string: backslash, parens, non-ASCII → octal
69
+ const pdfStr = (s) => {
70
+ let out = '';
71
+ for (let i = 0; i < s.length; i++) {
72
+ const code = s.charCodeAt(i);
73
+ const ch = s[i];
74
+ if (ch === '\\' || ch === '(' || ch === ')') {
75
+ out += '\\' + ch;
76
+ }
77
+ else if (code < 32 || code > 126) {
78
+ // Replace non-printable / non-ASCII with '?'
79
+ out += '?';
80
+ }
81
+ else {
82
+ out += ch;
83
+ }
84
+ }
85
+ return out;
86
+ };
87
+ // 1: Catalog
88
+ const catalogId = addObj(`<< /Type /Catalog /Pages 2 0 R >>`);
89
+ // 2: Pages (placeholder — will be rewritten)
90
+ const pagesIdx = objects.length;
91
+ addObj('PLACEHOLDER');
92
+ // 3: Font
93
+ const fontId = addObj(`<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >>`);
94
+ // Create page objects + content streams
95
+ const pageObjIds = [];
96
+ for (const pageLines of pages) {
97
+ // Build content stream
98
+ const streamLines = [];
99
+ streamLines.push('BT');
100
+ streamLines.push(`/F1 ${fontSize} Tf`);
101
+ // Start at top-left with margin
102
+ let y = pageH - margin - fontSize;
103
+ streamLines.push(`${margin} ${y.toFixed(1)} Td`);
104
+ for (let i = 0; i < pageLines.length; i++) {
105
+ if (i > 0) {
106
+ streamLines.push(`0 ${(-lineHeight).toFixed(1)} Td`);
107
+ }
108
+ streamLines.push(`(${pdfStr(pageLines[i])}) Tj`);
109
+ }
110
+ streamLines.push('ET');
111
+ const stream = streamLines.join('\n');
112
+ const streamId = addObj(`<< /Length ${Buffer.byteLength(stream, 'latin1')} >>\nstream\n${stream}\nendstream`);
113
+ const pageId = addObj(`<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${pageW} ${pageH}] ` +
114
+ `/Contents ${streamId} 0 R /Resources << /Font << /F1 ${fontId} 0 R >> >> >>`);
115
+ pageObjIds.push(pageId);
116
+ }
117
+ // Rewrite Pages object with correct Kids
118
+ const kidsStr = pageObjIds.map((id) => `${id} 0 R`).join(' ');
119
+ objects[pagesIdx] = `2 0 obj\n<< /Type /Pages /Kids [${kidsStr}] /Count ${pageObjIds.length} >> \nendobj\n`;
120
+ // Info dictionary
121
+ const now = new Date();
122
+ const dateStr = `D:${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}`;
123
+ const infoParts = [`/CreationDate (${dateStr})`];
124
+ if (opts.title)
125
+ infoParts.push(`/Title (${pdfStr(opts.title)})`);
126
+ if (opts.author)
127
+ infoParts.push(`/Author (${pdfStr(opts.author)})`);
128
+ infoParts.push(`/Producer (Wunderland AgentOS)`);
129
+ const infoId = addObj(`<< ${infoParts.join(' ')} >>`);
130
+ // ── Serialize ──────────────────────────────────────────────────────────
131
+ let pdf = '%PDF-1.4\n%\xE2\xE3\xCF\xD3\n';
132
+ for (let i = 0; i < objects.length; i++) {
133
+ offsets[i] = Buffer.byteLength(pdf, 'latin1');
134
+ pdf += objects[i] + '\n';
135
+ }
136
+ const xrefOffset = Buffer.byteLength(pdf, 'latin1');
137
+ pdf += `xref\n0 ${nextObj}\n`;
138
+ pdf += '0000000000 65535 f \n';
139
+ for (let i = 0; i < objects.length; i++) {
140
+ pdf += `${String(offsets[i]).padStart(10, '0')} 00000 n \n`;
141
+ }
142
+ pdf += `trailer\n<< /Size ${nextObj} /Root ${catalogId} 0 R /Info ${infoId} 0 R >>\n`;
143
+ pdf += `startxref\n${xrefOffset}\n%%EOF\n`;
144
+ return Buffer.from(pdf, 'latin1');
145
+ }
146
+ // ── Tool ─────────────────────────────────────────────────────────────────────
147
+ export class CreatePdfTool {
148
+ id = 'cli-create-pdf-v1';
149
+ name = 'create_pdf';
150
+ displayName = 'Create PDF';
151
+ description = 'Create a real PDF document from text content. Use this instead of file_write when the user asks for a PDF file.';
152
+ category = 'system';
153
+ hasSideEffects = true;
154
+ inputSchema = {
155
+ type: 'object',
156
+ required: ['path', 'content'],
157
+ properties: {
158
+ path: {
159
+ type: 'string',
160
+ description: 'Output file path (should end in .pdf)',
161
+ },
162
+ content: {
163
+ type: 'string',
164
+ description: 'Text content to include in the PDF',
165
+ },
166
+ title: {
167
+ type: 'string',
168
+ description: 'PDF document title (metadata)',
169
+ },
170
+ author: {
171
+ type: 'string',
172
+ description: 'PDF document author (metadata)',
173
+ },
174
+ fontSize: {
175
+ type: 'number',
176
+ description: 'Font size in points (default: 12)',
177
+ },
178
+ },
179
+ additionalProperties: false,
180
+ };
181
+ async execute(input, _context) {
182
+ try {
183
+ const outPath = resolve(input.path);
184
+ const pdfBuffer = generatePdf(input.content, {
185
+ title: input.title,
186
+ author: input.author,
187
+ fontSize: input.fontSize,
188
+ });
189
+ await mkdir(dirname(outPath), { recursive: true });
190
+ await writeFile(outPath, pdfBuffer);
191
+ // Count pages from the generated content
192
+ const pageCount = (pdfBuffer.toString('latin1').match(/\/Type \/Page\b/g) || []).length;
193
+ return {
194
+ success: true,
195
+ output: {
196
+ path: outPath,
197
+ pages: pageCount,
198
+ bytes: pdfBuffer.length,
199
+ },
200
+ };
201
+ }
202
+ catch (error) {
203
+ return { success: false, error: error.message };
204
+ }
205
+ }
206
+ validateArgs(input) {
207
+ const errors = [];
208
+ if (!input.path || typeof input.path !== 'string')
209
+ errors.push('path is required (string)');
210
+ if (input.content === undefined || input.content === null)
211
+ errors.push('content is required');
212
+ return errors.length === 0 ? { isValid: true } : { isValid: false, errors };
213
+ }
214
+ }
215
+ //# sourceMappingURL=createPdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPdf.js","sourceRoot":"","sources":["../../src/tools/createPdf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAc7C;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,OAAmB,EAAE;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,SAAS;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,YAAY;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IACrC,MAAM,UAAU,GAAG,QAAQ,GAAG,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC;IAEtD,sEAAsE;IACtE,MAAM,YAAY,GAAG,QAAQ,GAAG,GAAG,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;IAExD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,SAAS,GAAG,GAAG,CAAC;QACpB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM;YACR,CAAC;YACD,sCAAsC;YACtC,IAAI,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACvD,IAAI,OAAO,IAAI,CAAC;gBAAE,OAAO,GAAG,YAAY,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1C,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,WAAW;IACX,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzC,0EAA0E;IAE1E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,MAAM,MAAM,GAAG,CAAC,OAAe,EAAU,EAAE;QACzC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,OAAO,YAAY,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,0DAA0D;IAC1D,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE;QACnC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC5C,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;gBACnC,6CAA6C;gBAC7C,GAAG,IAAI,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,aAAa;IACb,MAAM,SAAS,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAE9D,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,MAAM,CAAC,aAAa,CAAC,CAAC;IAEtB,UAAU;IACV,MAAM,MAAM,GAAG,MAAM,CACnB,mFAAmF,CACpF,CAAC;IAEF,wCAAwC;IACxC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,uBAAuB;QACvB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,WAAW,CAAC,IAAI,CAAC,OAAO,QAAQ,KAAK,CAAC,CAAC;QACvC,gCAAgC;QAChC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QAClC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvD,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,CACrB,cAAc,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,MAAM,aAAa,CACrF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CACnB,+CAA+C,KAAK,IAAI,KAAK,IAAI;YAC/D,aAAa,QAAQ,mCAAmC,MAAM,eAAe,CAChF,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,mCAAmC,OAAO,YAAY,UAAU,CAAC,MAAM,gBAAgB,CAAC;IAE5G,kBAAkB;IAClB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAChI,MAAM,SAAS,GAAG,CAAC,kBAAkB,OAAO,GAAG,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK;QAAE,SAAS,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,MAAM;QAAE,SAAS,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpE,SAAS,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEtD,0EAA0E;IAE1E,IAAI,GAAG,GAAG,+BAA+B,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpD,GAAG,IAAI,WAAW,OAAO,IAAI,CAAC;IAC9B,GAAG,IAAI,uBAAuB,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,GAAG,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC;IAC9D,CAAC;IAED,GAAG,IAAI,qBAAqB,OAAO,UAAU,SAAS,cAAc,MAAM,WAAW,CAAC;IACtF,GAAG,IAAI,cAAc,UAAU,WAAW,CAAC;IAE3C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,gFAAgF;AAEhF,MAAM,OAAO,aAAa;IACR,EAAE,GAAG,mBAAmB,CAAC;IACzB,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,YAAY,CAAC;IAC3B,WAAW,GACzB,iHAAiH,CAAC;IACpG,QAAQ,GAAG,QAAQ,CAAC;IACpB,cAAc,GAAG,IAAI,CAAC;IAEtB,WAAW,GAAqB;QAC9C,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;QAC7B,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;aAC9C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;aACjD;SACF;QACD,oBAAoB,EAAE,KAAK;KAC5B,CAAC;IAEF,KAAK,CAAC,OAAO,CACX,KAMC,EACD,QAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;gBAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAEpC,yCAAyC;YACzC,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAExF,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,SAAS,CAAC,MAAM;iBACxB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAA0B;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC5F,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9F,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC9E,CAAC;CACF"}
@@ -4,17 +4,22 @@
4
4
  *
5
5
  * @module @framers/agentos-ext-cli-executor
6
6
  */
7
- import type { ITool } from '@framers/agentos';
8
- import type { ShellService } from '../services/shellService';
9
- import type { ExecutionResult } from '../types';
7
+ import type { ITool, JSONSchemaObject, ToolExecutionContext, ToolExecutionResult } from '@framers/agentos';
8
+ import type { ShellService } from '../services/shellService.js';
9
+ import type { ExecutionResult } from '../types.js';
10
10
  /**
11
11
  * Tool for executing shell commands
12
12
  */
13
13
  export declare class ExecuteTool implements ITool {
14
14
  private shellService;
15
- readonly id = "shellExecute";
16
- readonly name = "Execute Shell Command";
17
- readonly description = "Execute a shell command and return output";
15
+ readonly id = "cli-shell-execute-v1";
16
+ /** Tool call name used by the LLM / ToolExecutor. */
17
+ readonly name = "shell_execute";
18
+ readonly displayName = "Execute Shell Command";
19
+ readonly description = "Execute a shell command and return stdout/stderr/exit code.";
20
+ readonly category = "system";
21
+ readonly hasSideEffects = true;
22
+ readonly inputSchema: JSONSchemaObject;
18
23
  constructor(shellService: ShellService);
19
24
  /**
20
25
  * Execute command
@@ -24,21 +29,13 @@ export declare class ExecuteTool implements ITool {
24
29
  cwd?: string;
25
30
  env?: Record<string, string>;
26
31
  timeout?: number;
27
- }): Promise<{
28
- success: boolean;
29
- output?: ExecutionResult;
30
- error?: string;
31
- }>;
32
+ }, _context: ToolExecutionContext): Promise<ToolExecutionResult<ExecutionResult>>;
32
33
  /**
33
34
  * Validate input
34
35
  */
35
- validate(input: any): {
36
- valid: boolean;
37
- errors: string[];
36
+ validateArgs(input: Record<string, any>): {
37
+ isValid: boolean;
38
+ errors?: any[];
38
39
  };
39
- /**
40
- * Get JSON schema for tool
41
- */
42
- getSchema(): any;
43
40
  }
44
41
  //# sourceMappingURL=execute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;GAEG;AACH,qBAAa,WAAY,YAAW,KAAK;IAK3B,OAAO,CAAC,YAAY;IAJhC,SAAgB,EAAE,kBAAkB;IACpC,SAAgB,IAAI,2BAA2B;IAC/C,SAAgB,WAAW,+CAA+C;gBAEtD,YAAY,EAAE,YAAY;IAE9C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA2B3E;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAkB1D;;OAEG;IACH,SAAS,IAAI,GAAG;CA0BjB"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,qBAAa,WAAY,YAAW,KAAK;IAmC3B,OAAO,CAAC,YAAY;IAlChC,SAAgB,EAAE,0BAA0B;IAC5C,qDAAqD;IACrD,SAAgB,IAAI,mBAAmB;IACvC,SAAgB,WAAW,2BAA2B;IACtD,SAAgB,WAAW,iEAAiE;IAC5F,SAAgB,QAAQ,YAAY;IACpC,SAAgB,cAAc,QAAQ;IAEtC,SAAgB,WAAW,EAAE,gBAAgB,CAwB3C;gBAEkB,YAAY,EAAE,YAAY;IAE9C;;OAEG;IACG,OAAO,CACX,KAAK,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAChB,EACD,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IA2BhD;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE;CAiB/E"}
@@ -9,16 +9,45 @@
9
9
  */
10
10
  export class ExecuteTool {
11
11
  shellService;
12
- id = 'shellExecute';
13
- name = 'Execute Shell Command';
14
- description = 'Execute a shell command and return output';
12
+ id = 'cli-shell-execute-v1';
13
+ /** Tool call name used by the LLM / ToolExecutor. */
14
+ name = 'shell_execute';
15
+ displayName = 'Execute Shell Command';
16
+ description = 'Execute a shell command and return stdout/stderr/exit code.';
17
+ category = 'system';
18
+ hasSideEffects = true;
19
+ inputSchema = {
20
+ type: 'object',
21
+ required: ['command'],
22
+ properties: {
23
+ command: {
24
+ type: 'string',
25
+ description: 'Shell command to execute',
26
+ },
27
+ cwd: {
28
+ type: 'string',
29
+ description: 'Working directory for command',
30
+ },
31
+ env: {
32
+ type: 'object',
33
+ additionalProperties: { type: 'string' },
34
+ description: 'Environment variables',
35
+ },
36
+ timeout: {
37
+ type: 'number',
38
+ description: 'Timeout in milliseconds',
39
+ default: 60000,
40
+ },
41
+ },
42
+ additionalProperties: false,
43
+ };
15
44
  constructor(shellService) {
16
45
  this.shellService = shellService;
17
46
  }
18
47
  /**
19
48
  * Execute command
20
49
  */
21
- async execute(input) {
50
+ async execute(input, _context) {
22
51
  try {
23
52
  // Security check first
24
53
  const securityCheck = this.shellService.checkSecurity(input.command);
@@ -36,7 +65,7 @@ export class ExecuteTool {
36
65
  return {
37
66
  success: result.success,
38
67
  output: result,
39
- error: result.success ? undefined : result.stderr,
68
+ error: result.success ? undefined : result.stderr || 'Command failed',
40
69
  };
41
70
  }
42
71
  catch (error) {
@@ -46,7 +75,7 @@ export class ExecuteTool {
46
75
  /**
47
76
  * Validate input
48
77
  */
49
- validate(input) {
78
+ validateArgs(input) {
50
79
  const errors = [];
51
80
  if (!input.command) {
52
81
  errors.push('Command is required');
@@ -59,36 +88,7 @@ export class ExecuteTool {
59
88
  errors.push('Timeout must be a positive number');
60
89
  }
61
90
  }
62
- return { valid: errors.length === 0, errors };
63
- }
64
- /**
65
- * Get JSON schema for tool
66
- */
67
- getSchema() {
68
- return {
69
- type: 'object',
70
- required: ['command'],
71
- properties: {
72
- command: {
73
- type: 'string',
74
- description: 'Shell command to execute',
75
- },
76
- cwd: {
77
- type: 'string',
78
- description: 'Working directory for command',
79
- },
80
- env: {
81
- type: 'object',
82
- additionalProperties: { type: 'string' },
83
- description: 'Environment variables',
84
- },
85
- timeout: {
86
- type: 'number',
87
- description: 'Timeout in milliseconds',
88
- default: 60000,
89
- },
90
- },
91
- };
91
+ return errors.length === 0 ? { isValid: true } : { isValid: false, errors };
92
92
  }
93
93
  }
94
94
  //# sourceMappingURL=execute.js.map