psadk 1.4.8 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/build/main/index.d.ts +1 -0
  2. package/build/main/lib/PSAI.js +1 -2
  3. package/build/main/lib/PSAgent.d.ts +46 -44
  4. package/build/main/lib/PSAgent.js +176 -961
  5. package/build/main/lib/PSAgentConfig.d.ts +110 -26
  6. package/build/main/lib/PSAgentLogger.js +1 -2
  7. package/build/main/lib/PSAgentTool.d.ts +8 -3
  8. package/build/main/lib/PSAgentTool.js +3 -3
  9. package/build/main/lib/agent-core/{agent-loop.d.ts → src/agent-loop.d.ts} +1 -1
  10. package/build/main/lib/agent-core/src/agent-loop.js +514 -0
  11. package/build/{module/lib/agent-core → main/lib/agent-core/src}/agent.d.ts +2 -2
  12. package/build/main/lib/agent-core/src/agent.js +419 -0
  13. package/build/main/lib/agent-core/{harness → src/harness}/agent-harness.d.ts +36 -26
  14. package/build/main/lib/agent-core/src/harness/agent-harness.js +1028 -0
  15. package/build/main/lib/agent-core/src/harness/compaction/branch-summarization.d.ts +52 -0
  16. package/build/main/lib/agent-core/src/harness/compaction/branch-summarization.js +182 -0
  17. package/build/main/lib/agent-core/src/harness/compaction/compaction.d.ts +94 -0
  18. package/build/main/lib/agent-core/src/harness/compaction/compaction.js +550 -0
  19. package/build/main/lib/agent-core/src/harness/compaction/utils.d.ts +24 -0
  20. package/build/main/lib/agent-core/src/harness/compaction/utils.js +131 -0
  21. package/build/main/lib/agent-core/src/harness/env/nodejs.d.ts +50 -0
  22. package/build/main/lib/agent-core/src/harness/env/nodejs.js +494 -0
  23. package/build/main/lib/agent-core/{harness → src/harness}/messages.d.ts +2 -2
  24. package/build/{module/lib/agent-core → main/lib/agent-core/src}/harness/messages.js +1 -1
  25. package/build/main/lib/agent-core/{harness → src/harness}/prompt-templates.d.ts +4 -1
  26. package/build/main/lib/agent-core/src/harness/prompt-templates.js +235 -0
  27. package/build/{module/lib/agent-core/harness/session/repo/jsonl.d.ts → main/lib/agent-core/src/harness/session/jsonl-repo.d.ts} +7 -1
  28. package/build/main/lib/agent-core/src/harness/session/jsonl-repo.js +106 -0
  29. package/build/{module/lib/agent-core/harness/session/storage/jsonl.d.ts → main/lib/agent-core/src/harness/session/jsonl-storage.d.ts} +7 -4
  30. package/build/main/lib/agent-core/src/harness/session/jsonl-storage.js +234 -0
  31. package/build/main/lib/agent-core/{harness/session/repo/memory.d.ts → src/harness/session/memory-repo.d.ts} +1 -1
  32. package/build/main/lib/agent-core/src/harness/session/memory-repo.js +45 -0
  33. package/build/main/lib/agent-core/{harness/session/storage/memory.d.ts → src/harness/session/memory-storage.d.ts} +4 -5
  34. package/build/main/lib/agent-core/src/harness/session/memory-storage.js +116 -0
  35. package/build/main/lib/agent-core/{harness/session/repo/shared.d.ts → src/harness/session/repo-utils.d.ts} +3 -2
  36. package/build/main/lib/agent-core/src/harness/session/repo-utils.js +39 -0
  37. package/build/{module/lib/agent-core → main/lib/agent-core/src}/harness/session/session.d.ts +3 -2
  38. package/build/main/lib/agent-core/src/harness/session/session.js +213 -0
  39. package/build/main/lib/agent-core/src/harness/session/uuid.d.ts +1 -0
  40. package/build/main/lib/agent-core/src/harness/session/uuid.js +54 -0
  41. package/build/main/lib/agent-core/{harness → src/harness}/skills.d.ts +4 -1
  42. package/build/main/lib/agent-core/src/harness/skills.js +353 -0
  43. package/build/main/lib/agent-core/{harness → src/harness}/system-prompt.d.ts +1 -1
  44. package/build/main/lib/agent-core/src/harness/system-prompt.js +30 -0
  45. package/build/{module/lib/agent-core → main/lib/agent-core/src}/harness/types.d.ts +160 -70
  46. package/build/main/lib/agent-core/src/harness/types.js +94 -0
  47. package/build/main/lib/agent-core/{harness → src/harness}/utils/shell-output.d.ts +2 -2
  48. package/build/main/lib/agent-core/src/harness/utils/shell-output.js +134 -0
  49. package/build/main/lib/agent-core/src/harness/utils/truncate.js +294 -0
  50. package/build/main/lib/agent-core/src/index.d.ts +19 -0
  51. package/build/main/lib/agent-core/src/index.js +25 -0
  52. package/build/main/lib/agent-core/src/node.d.ts +2 -0
  53. package/build/main/lib/agent-core/src/node.js +3 -0
  54. package/build/main/lib/agent-core/{proxy.js → src/proxy.js} +3 -2
  55. package/build/{module/lib/agent-core → main/lib/agent-core/src}/types.d.ts +13 -1
  56. package/build/{module/lib/agent-core → main/lib/agent-core/src}/types.js +1 -1
  57. package/build/main/lib/localAgent.d.ts +35 -0
  58. package/build/main/lib/localAgent.js +329 -0
  59. package/build/main/lib/remoteAgent.d.ts +25 -0
  60. package/build/main/lib/remoteAgent.js +311 -0
  61. package/build/main/lib/skills/skillParser.d.ts +13 -3
  62. package/build/main/lib/skills/skillParser.js +61 -12
  63. package/build/main/lib/skills/utils.js +18 -10
  64. package/build/main/lib/tools/BraveWebSearchTool.js +1 -2
  65. package/build/main/lib/tools/PSArtifactTool.js +1 -2
  66. package/build/main/lib/tools/PSClarifyTool.js +1 -2
  67. package/build/main/lib/tools/PSCommandLineTool.js +1 -2
  68. package/build/main/lib/tools/PSMemoryTool.js +1 -2
  69. package/build/main/lib/tools/PSReadFileTool.js +1 -2
  70. package/build/main/lib/tools/PSRetrievalTool.js +1 -2
  71. package/build/main/lib/tools/PSSkillTool.js +1 -2
  72. package/build/main/lib/tools/PSSubAgentTool.js +1 -1
  73. package/build/main/lib/tools/PSWriteFileTool.js +1 -2
  74. package/build/main/lib/tools/TodoTool.js +1 -2
  75. package/build/main/lib/utils/debuglogger.js +1 -2
  76. package/build/main/lib/utils/helpers.js +1 -6
  77. package/build/module/index.d.ts +1 -0
  78. package/build/module/lib/PSAI.js +1 -2
  79. package/build/module/lib/PSAgent.d.ts +46 -44
  80. package/build/module/lib/PSAgent.js +176 -961
  81. package/build/module/lib/PSAgentConfig.d.ts +110 -26
  82. package/build/module/lib/PSAgentLogger.js +1 -2
  83. package/build/module/lib/PSAgentTool.d.ts +8 -3
  84. package/build/module/lib/PSAgentTool.js +3 -3
  85. package/build/module/lib/agent-core/{agent-loop.d.ts → src/agent-loop.d.ts} +1 -1
  86. package/build/module/lib/agent-core/src/agent-loop.js +514 -0
  87. package/build/{main/lib/agent-core → module/lib/agent-core/src}/agent.d.ts +2 -2
  88. package/build/module/lib/agent-core/src/agent.js +419 -0
  89. package/build/module/lib/agent-core/{harness → src/harness}/agent-harness.d.ts +36 -26
  90. package/build/module/lib/agent-core/src/harness/agent-harness.js +1028 -0
  91. package/build/module/lib/agent-core/src/harness/compaction/branch-summarization.d.ts +52 -0
  92. package/build/module/lib/agent-core/src/harness/compaction/branch-summarization.js +182 -0
  93. package/build/module/lib/agent-core/src/harness/compaction/compaction.d.ts +94 -0
  94. package/build/module/lib/agent-core/src/harness/compaction/compaction.js +550 -0
  95. package/build/module/lib/agent-core/src/harness/compaction/utils.d.ts +24 -0
  96. package/build/module/lib/agent-core/src/harness/compaction/utils.js +131 -0
  97. package/build/module/lib/agent-core/src/harness/env/nodejs.d.ts +50 -0
  98. package/build/module/lib/agent-core/src/harness/env/nodejs.js +494 -0
  99. package/build/module/lib/agent-core/{harness → src/harness}/messages.d.ts +2 -2
  100. package/build/{main/lib/agent-core → module/lib/agent-core/src}/harness/messages.js +1 -1
  101. package/build/module/lib/agent-core/{harness → src/harness}/prompt-templates.d.ts +4 -1
  102. package/build/module/lib/agent-core/src/harness/prompt-templates.js +235 -0
  103. package/build/{main/lib/agent-core/harness/session/repo/jsonl.d.ts → module/lib/agent-core/src/harness/session/jsonl-repo.d.ts} +7 -1
  104. package/build/module/lib/agent-core/src/harness/session/jsonl-repo.js +106 -0
  105. package/build/{main/lib/agent-core/harness/session/storage/jsonl.d.ts → module/lib/agent-core/src/harness/session/jsonl-storage.d.ts} +7 -4
  106. package/build/module/lib/agent-core/src/harness/session/jsonl-storage.js +234 -0
  107. package/build/module/lib/agent-core/{harness/session/repo/memory.d.ts → src/harness/session/memory-repo.d.ts} +1 -1
  108. package/build/module/lib/agent-core/src/harness/session/memory-repo.js +45 -0
  109. package/build/module/lib/agent-core/{harness/session/storage/memory.d.ts → src/harness/session/memory-storage.d.ts} +4 -5
  110. package/build/module/lib/agent-core/src/harness/session/memory-storage.js +116 -0
  111. package/build/module/lib/agent-core/{harness/session/repo/shared.d.ts → src/harness/session/repo-utils.d.ts} +3 -2
  112. package/build/module/lib/agent-core/src/harness/session/repo-utils.js +39 -0
  113. package/build/{main/lib/agent-core → module/lib/agent-core/src}/harness/session/session.d.ts +3 -2
  114. package/build/module/lib/agent-core/src/harness/session/session.js +213 -0
  115. package/build/module/lib/agent-core/src/harness/session/uuid.d.ts +1 -0
  116. package/build/module/lib/agent-core/src/harness/session/uuid.js +54 -0
  117. package/build/module/lib/agent-core/{harness → src/harness}/skills.d.ts +4 -1
  118. package/build/module/lib/agent-core/src/harness/skills.js +353 -0
  119. package/build/module/lib/agent-core/{harness → src/harness}/system-prompt.d.ts +1 -1
  120. package/build/module/lib/agent-core/src/harness/system-prompt.js +30 -0
  121. package/build/{main/lib/agent-core → module/lib/agent-core/src}/harness/types.d.ts +160 -70
  122. package/build/module/lib/agent-core/src/harness/types.js +94 -0
  123. package/build/module/lib/agent-core/{harness → src/harness}/utils/shell-output.d.ts +2 -2
  124. package/build/module/lib/agent-core/src/harness/utils/shell-output.js +134 -0
  125. package/build/module/lib/agent-core/src/harness/utils/truncate.js +294 -0
  126. package/build/module/lib/agent-core/src/index.d.ts +19 -0
  127. package/build/module/lib/agent-core/src/index.js +25 -0
  128. package/build/module/lib/agent-core/src/node.d.ts +2 -0
  129. package/build/module/lib/agent-core/src/node.js +3 -0
  130. package/build/module/lib/agent-core/{proxy.js → src/proxy.js} +3 -2
  131. package/build/{main/lib/agent-core → module/lib/agent-core/src}/types.d.ts +13 -1
  132. package/build/{main/lib/agent-core → module/lib/agent-core/src}/types.js +1 -1
  133. package/build/module/lib/localAgent.d.ts +35 -0
  134. package/build/module/lib/localAgent.js +329 -0
  135. package/build/module/lib/remoteAgent.d.ts +25 -0
  136. package/build/module/lib/remoteAgent.js +311 -0
  137. package/build/module/lib/skills/skillParser.d.ts +13 -3
  138. package/build/module/lib/skills/skillParser.js +61 -12
  139. package/build/module/lib/skills/utils.js +18 -10
  140. package/build/module/lib/tools/BraveWebSearchTool.js +1 -2
  141. package/build/module/lib/tools/PSArtifactTool.js +1 -2
  142. package/build/module/lib/tools/PSClarifyTool.js +1 -2
  143. package/build/module/lib/tools/PSCommandLineTool.js +1 -2
  144. package/build/module/lib/tools/PSMemoryTool.js +1 -2
  145. package/build/module/lib/tools/PSReadFileTool.js +1 -2
  146. package/build/module/lib/tools/PSRetrievalTool.js +1 -2
  147. package/build/module/lib/tools/PSSkillTool.js +1 -2
  148. package/build/module/lib/tools/PSSubAgentTool.js +1 -1
  149. package/build/module/lib/tools/PSWriteFileTool.js +1 -2
  150. package/build/module/lib/tools/TodoTool.js +1 -2
  151. package/build/module/lib/utils/debuglogger.js +1 -2
  152. package/build/module/lib/utils/helpers.js +1 -6
  153. package/package.json +2 -1
  154. package/build/main/lib/agent-core/agent-loop.js +0 -483
  155. package/build/main/lib/agent-core/agent.js +0 -419
  156. package/build/main/lib/agent-core/harness/agent-harness.js +0 -772
  157. package/build/main/lib/agent-core/harness/compaction/branch-summarization.d.ts +0 -87
  158. package/build/main/lib/agent-core/harness/compaction/branch-summarization.js +0 -246
  159. package/build/main/lib/agent-core/harness/compaction/compaction.d.ts +0 -121
  160. package/build/main/lib/agent-core/harness/compaction/compaction.js +0 -637
  161. package/build/main/lib/agent-core/harness/compaction/utils.d.ts +0 -37
  162. package/build/main/lib/agent-core/harness/compaction/utils.js +0 -153
  163. package/build/main/lib/agent-core/harness/env/nodejs.d.ts +0 -43
  164. package/build/main/lib/agent-core/harness/env/nodejs.js +0 -353
  165. package/build/main/lib/agent-core/harness/execution-env.d.ts +0 -3
  166. package/build/main/lib/agent-core/harness/execution-env.js +0 -3
  167. package/build/main/lib/agent-core/harness/prompt-templates.js +0 -204
  168. package/build/main/lib/agent-core/harness/session/repo/jsonl.js +0 -98
  169. package/build/main/lib/agent-core/harness/session/repo/memory.js +0 -46
  170. package/build/main/lib/agent-core/harness/session/repo/shared.js +0 -31
  171. package/build/main/lib/agent-core/harness/session/session.js +0 -199
  172. package/build/main/lib/agent-core/harness/session/storage/jsonl.js +0 -170
  173. package/build/main/lib/agent-core/harness/session/storage/memory.js +0 -94
  174. package/build/main/lib/agent-core/harness/skills.js +0 -266
  175. package/build/main/lib/agent-core/harness/system-prompt.js +0 -30
  176. package/build/main/lib/agent-core/harness/types.js +0 -16
  177. package/build/main/lib/agent-core/harness/utils/shell-output.js +0 -101
  178. package/build/main/lib/agent-core/harness/utils/truncate.js +0 -208
  179. package/build/main/lib/agent-core/index.d.ts +0 -19
  180. package/build/main/lib/agent-core/index.js +0 -25
  181. package/build/module/lib/agent-core/agent-loop.js +0 -483
  182. package/build/module/lib/agent-core/agent.js +0 -419
  183. package/build/module/lib/agent-core/harness/agent-harness.js +0 -772
  184. package/build/module/lib/agent-core/harness/compaction/branch-summarization.d.ts +0 -87
  185. package/build/module/lib/agent-core/harness/compaction/branch-summarization.js +0 -246
  186. package/build/module/lib/agent-core/harness/compaction/compaction.d.ts +0 -121
  187. package/build/module/lib/agent-core/harness/compaction/compaction.js +0 -637
  188. package/build/module/lib/agent-core/harness/compaction/utils.d.ts +0 -37
  189. package/build/module/lib/agent-core/harness/compaction/utils.js +0 -153
  190. package/build/module/lib/agent-core/harness/env/nodejs.d.ts +0 -43
  191. package/build/module/lib/agent-core/harness/env/nodejs.js +0 -353
  192. package/build/module/lib/agent-core/harness/execution-env.d.ts +0 -3
  193. package/build/module/lib/agent-core/harness/execution-env.js +0 -3
  194. package/build/module/lib/agent-core/harness/prompt-templates.js +0 -204
  195. package/build/module/lib/agent-core/harness/session/repo/jsonl.js +0 -98
  196. package/build/module/lib/agent-core/harness/session/repo/memory.js +0 -46
  197. package/build/module/lib/agent-core/harness/session/repo/shared.js +0 -31
  198. package/build/module/lib/agent-core/harness/session/session.js +0 -199
  199. package/build/module/lib/agent-core/harness/session/storage/jsonl.js +0 -170
  200. package/build/module/lib/agent-core/harness/session/storage/memory.js +0 -94
  201. package/build/module/lib/agent-core/harness/skills.js +0 -266
  202. package/build/module/lib/agent-core/harness/system-prompt.js +0 -30
  203. package/build/module/lib/agent-core/harness/types.js +0 -16
  204. package/build/module/lib/agent-core/harness/utils/shell-output.js +0 -101
  205. package/build/module/lib/agent-core/harness/utils/truncate.js +0 -208
  206. package/build/module/lib/agent-core/index.d.ts +0 -19
  207. package/build/module/lib/agent-core/index.js +0 -25
  208. /package/build/main/lib/agent-core/{harness → src/harness}/utils/truncate.d.ts +0 -0
  209. /package/build/main/lib/agent-core/{proxy.d.ts → src/proxy.d.ts} +0 -0
  210. /package/build/module/lib/agent-core/{harness → src/harness}/utils/truncate.d.ts +0 -0
  211. /package/build/module/lib/agent-core/{proxy.d.ts → src/proxy.d.ts} +0 -0
@@ -0,0 +1,494 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { constants, createReadStream } from 'node:fs';
4
+ import { access, appendFile, lstat, mkdir, mkdtemp, readdir, readFile, realpath, rm, writeFile, } from 'node:fs/promises';
5
+ import { tmpdir } from 'node:os';
6
+ import { isAbsolute, join, resolve } from 'node:path';
7
+ import { createInterface } from 'node:readline';
8
+ import { err, ExecutionError, FileError, ok, toError, } from "../types.js";
9
+ function resolvePath(cwd, path) {
10
+ return isAbsolute(path) ? path : resolve(cwd, path);
11
+ }
12
+ function fileKindFromStats(stats) {
13
+ if (stats.isFile())
14
+ return 'file';
15
+ if (stats.isDirectory())
16
+ return 'directory';
17
+ if (stats.isSymbolicLink())
18
+ return 'symlink';
19
+ return undefined;
20
+ }
21
+ function fileInfoFromStats(path, stats) {
22
+ const kind = fileKindFromStats(stats);
23
+ if (!kind)
24
+ return err(new FileError('invalid', 'Unsupported file type', path));
25
+ return ok({
26
+ name: path.replace(/\/+$/, '').split('/').pop() ?? path,
27
+ path,
28
+ kind,
29
+ size: stats.size,
30
+ mtimeMs: stats.mtimeMs,
31
+ });
32
+ }
33
+ function isNodeError(error) {
34
+ return error instanceof Error && 'code' in error;
35
+ }
36
+ function toFileError(error, path) {
37
+ if (error instanceof FileError)
38
+ return error;
39
+ const cause = toError(error);
40
+ if (isNodeError(error)) {
41
+ const message = error.message;
42
+ switch (error.code) {
43
+ case 'ABORT_ERR':
44
+ return new FileError('aborted', message, path, cause);
45
+ case 'ENOENT':
46
+ return new FileError('not_found', message, path, cause);
47
+ case 'EACCES':
48
+ case 'EPERM':
49
+ return new FileError('permission_denied', message, path, cause);
50
+ case 'ENOTDIR':
51
+ return new FileError('not_directory', message, path, cause);
52
+ case 'EISDIR':
53
+ return new FileError('is_directory', message, path, cause);
54
+ case 'EINVAL':
55
+ return new FileError('invalid', message, path, cause);
56
+ }
57
+ }
58
+ return new FileError('unknown', cause.message, path, cause);
59
+ }
60
+ function abortResult(signal, path) {
61
+ return signal?.aborted
62
+ ? err(new FileError('aborted', 'aborted', path))
63
+ : undefined;
64
+ }
65
+ async function pathExists(path) {
66
+ try {
67
+ await access(path, constants.F_OK);
68
+ return true;
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ }
74
+ async function runCommand(command, args, timeoutMs) {
75
+ return await new Promise((resolve) => {
76
+ let stdout = '';
77
+ let child;
78
+ try {
79
+ child = spawn(command, args, {
80
+ stdio: ['ignore', 'pipe', 'ignore'],
81
+ windowsHide: true,
82
+ });
83
+ }
84
+ catch {
85
+ resolve({ stdout: '', status: null });
86
+ return;
87
+ }
88
+ const timeout = setTimeout(() => {
89
+ if (child.pid)
90
+ killProcessTree(child.pid);
91
+ }, timeoutMs);
92
+ child.stdout?.setEncoding('utf8');
93
+ child.stdout?.on('data', (chunk) => {
94
+ stdout += chunk;
95
+ });
96
+ child.on('error', () => {
97
+ clearTimeout(timeout);
98
+ resolve({ stdout: '', status: null });
99
+ });
100
+ child.on('close', (status) => {
101
+ clearTimeout(timeout);
102
+ resolve({ stdout, status });
103
+ });
104
+ });
105
+ }
106
+ async function findBashOnPath() {
107
+ const result = process.platform === 'win32'
108
+ ? await runCommand('where', ['bash.exe'], 5000)
109
+ : await runCommand('which', ['bash'], 5000);
110
+ if (result.status !== 0 || !result.stdout)
111
+ return null;
112
+ const firstMatch = result.stdout.trim().split(/\r?\n/)[0];
113
+ return firstMatch && (await pathExists(firstMatch)) ? firstMatch : null;
114
+ }
115
+ async function getShellConfig(customShellPath) {
116
+ if (customShellPath) {
117
+ if (await pathExists(customShellPath)) {
118
+ return ok({ shell: customShellPath, args: ['-c'] });
119
+ }
120
+ return err(new ExecutionError('shell_unavailable', `Custom shell path not found: ${customShellPath}`));
121
+ }
122
+ if (process.platform === 'win32') {
123
+ const candidates = [];
124
+ const programFiles = process.env.ProgramFiles;
125
+ if (programFiles)
126
+ candidates.push(`${programFiles}\\Git\\bin\\bash.exe`);
127
+ const programFilesX86 = process.env['ProgramFiles(x86)'];
128
+ if (programFilesX86)
129
+ candidates.push(`${programFilesX86}\\Git\\bin\\bash.exe`);
130
+ for (const candidate of candidates) {
131
+ if (await pathExists(candidate)) {
132
+ return ok({ shell: candidate, args: ['-c'] });
133
+ }
134
+ }
135
+ const bashOnPath = await findBashOnPath();
136
+ if (bashOnPath) {
137
+ return ok({ shell: bashOnPath, args: ['-c'] });
138
+ }
139
+ return err(new ExecutionError('shell_unavailable', 'No bash shell found'));
140
+ }
141
+ if (await pathExists('/bin/bash')) {
142
+ return ok({ shell: '/bin/bash', args: ['-c'] });
143
+ }
144
+ const bashOnPath = await findBashOnPath();
145
+ if (bashOnPath) {
146
+ return ok({ shell: bashOnPath, args: ['-c'] });
147
+ }
148
+ return ok({ shell: 'sh', args: ['-c'] });
149
+ }
150
+ function getShellEnv(baseEnv, extraEnv) {
151
+ return {
152
+ ...process.env,
153
+ ...baseEnv,
154
+ ...extraEnv,
155
+ };
156
+ }
157
+ function killProcessTree(pid) {
158
+ if (process.platform === 'win32') {
159
+ try {
160
+ spawn('taskkill', ['/F', '/T', '/PID', String(pid)], {
161
+ stdio: 'ignore',
162
+ detached: true,
163
+ windowsHide: true,
164
+ });
165
+ }
166
+ catch {
167
+ // Ignore errors.
168
+ }
169
+ return;
170
+ }
171
+ try {
172
+ process.kill(-pid, 'SIGKILL');
173
+ }
174
+ catch {
175
+ try {
176
+ process.kill(pid, 'SIGKILL');
177
+ }
178
+ catch {
179
+ // Process already dead.
180
+ }
181
+ }
182
+ }
183
+ export class NodeExecutionEnv {
184
+ cwd;
185
+ shellPath;
186
+ shellEnv;
187
+ constructor(options) {
188
+ this.cwd = options.cwd;
189
+ this.shellPath = options.shellPath;
190
+ this.shellEnv = options.shellEnv;
191
+ }
192
+ async absolutePath(path) {
193
+ return ok(resolvePath(this.cwd, path));
194
+ }
195
+ async joinPath(parts) {
196
+ return ok(join(...parts));
197
+ }
198
+ async exec(command, options) {
199
+ if (options?.abortSignal?.aborted)
200
+ return err(new ExecutionError('aborted', 'aborted'));
201
+ const cwd = options?.cwd ? resolvePath(this.cwd, options.cwd) : this.cwd;
202
+ const shellConfig = await getShellConfig(this.shellPath);
203
+ if (!shellConfig.ok)
204
+ return shellConfig;
205
+ return await new Promise((resolvePromise) => {
206
+ let stdout = '';
207
+ let stderr = '';
208
+ let settled = false;
209
+ let timedOut = false;
210
+ let callbackError;
211
+ let child;
212
+ const timeoutId = typeof options?.timeout === 'number'
213
+ ? setTimeout(() => {
214
+ timedOut = true;
215
+ if (child?.pid) {
216
+ killProcessTree(child.pid);
217
+ }
218
+ }, options.timeout * 1000)
219
+ : undefined;
220
+ const onAbort = () => {
221
+ if (child?.pid) {
222
+ killProcessTree(child.pid);
223
+ }
224
+ };
225
+ const settle = (result) => {
226
+ if (timeoutId)
227
+ clearTimeout(timeoutId);
228
+ if (options?.abortSignal)
229
+ options.abortSignal.removeEventListener('abort', onAbort);
230
+ if (settled)
231
+ return;
232
+ settled = true;
233
+ resolvePromise(result);
234
+ };
235
+ try {
236
+ child = spawn(shellConfig.value.shell, [...shellConfig.value.args, command], {
237
+ cwd,
238
+ detached: process.platform !== 'win32',
239
+ env: getShellEnv(this.shellEnv, options?.env),
240
+ stdio: ['ignore', 'pipe', 'pipe'],
241
+ windowsHide: true,
242
+ });
243
+ }
244
+ catch (error) {
245
+ const cause = toError(error);
246
+ settle(err(new ExecutionError('spawn_error', cause.message, cause)));
247
+ return;
248
+ }
249
+ if (options?.abortSignal) {
250
+ if (options.abortSignal.aborted) {
251
+ onAbort();
252
+ }
253
+ else {
254
+ options.abortSignal.addEventListener('abort', onAbort, {
255
+ once: true,
256
+ });
257
+ }
258
+ }
259
+ child.stdout?.setEncoding('utf8');
260
+ child.stderr?.setEncoding('utf8');
261
+ child.stdout?.on('data', (chunk) => {
262
+ stdout += chunk;
263
+ try {
264
+ options?.onStdout?.(chunk);
265
+ }
266
+ catch (error) {
267
+ const cause = toError(error);
268
+ callbackError = new ExecutionError('callback_error', cause.message, cause);
269
+ onAbort();
270
+ }
271
+ });
272
+ child.stderr?.on('data', (chunk) => {
273
+ stderr += chunk;
274
+ try {
275
+ options?.onStderr?.(chunk);
276
+ }
277
+ catch (error) {
278
+ const cause = toError(error);
279
+ callbackError = new ExecutionError('callback_error', cause.message, cause);
280
+ onAbort();
281
+ }
282
+ });
283
+ child.on('error', (error) => {
284
+ settle(err(new ExecutionError('spawn_error', error.message, error)));
285
+ });
286
+ child.on('close', (code) => {
287
+ if (callbackError) {
288
+ settle(err(callbackError));
289
+ return;
290
+ }
291
+ if (timedOut) {
292
+ settle(err(new ExecutionError('timeout', `timeout:${options?.timeout}`)));
293
+ return;
294
+ }
295
+ if (options?.abortSignal?.aborted) {
296
+ settle(err(new ExecutionError('aborted', 'aborted')));
297
+ return;
298
+ }
299
+ settle(ok({ stdout, stderr, exitCode: code ?? 0 }));
300
+ });
301
+ });
302
+ }
303
+ async readTextFile(path, abortSignal) {
304
+ const resolved = resolvePath(this.cwd, path);
305
+ const aborted = abortResult(abortSignal, resolved);
306
+ if (aborted)
307
+ return aborted;
308
+ try {
309
+ return ok(await readFile(resolved, { encoding: 'utf8', signal: abortSignal }));
310
+ }
311
+ catch (error) {
312
+ return err(toFileError(error, resolved));
313
+ }
314
+ }
315
+ async readTextLines(path, options) {
316
+ const resolved = resolvePath(this.cwd, path);
317
+ const aborted = abortResult(options?.abortSignal, resolved);
318
+ if (aborted)
319
+ return aborted;
320
+ if (options?.maxLines !== undefined && options.maxLines <= 0)
321
+ return ok([]);
322
+ let stream;
323
+ let lineReader;
324
+ try {
325
+ stream = createReadStream(resolved, {
326
+ encoding: 'utf8',
327
+ signal: options?.abortSignal,
328
+ });
329
+ lineReader = createInterface({ input: stream, crlfDelay: Infinity });
330
+ const lines = [];
331
+ for await (const line of lineReader) {
332
+ const loopAbort = abortResult(options?.abortSignal, resolved);
333
+ if (loopAbort)
334
+ return loopAbort;
335
+ lines.push(line);
336
+ if (options?.maxLines !== undefined && lines.length >= options.maxLines)
337
+ break;
338
+ }
339
+ const afterReadAbort = abortResult(options?.abortSignal, resolved);
340
+ if (afterReadAbort)
341
+ return afterReadAbort;
342
+ return ok(lines);
343
+ }
344
+ catch (error) {
345
+ return err(toFileError(error, resolved));
346
+ }
347
+ finally {
348
+ lineReader?.close();
349
+ stream?.destroy();
350
+ }
351
+ }
352
+ async readBinaryFile(path, abortSignal) {
353
+ const resolved = resolvePath(this.cwd, path);
354
+ const aborted = abortResult(abortSignal, resolved);
355
+ if (aborted)
356
+ return aborted;
357
+ try {
358
+ return ok(await readFile(resolved, { signal: abortSignal }));
359
+ }
360
+ catch (error) {
361
+ return err(toFileError(error, resolved));
362
+ }
363
+ }
364
+ async writeFile(path, content, abortSignal) {
365
+ const resolved = resolvePath(this.cwd, path);
366
+ const aborted = abortResult(abortSignal, resolved);
367
+ if (aborted)
368
+ return aborted;
369
+ try {
370
+ await mkdir(resolve(resolved, '..'), { recursive: true });
371
+ const afterMkdirAbort = abortResult(abortSignal, resolved);
372
+ if (afterMkdirAbort)
373
+ return afterMkdirAbort;
374
+ await writeFile(resolved, content, { signal: abortSignal });
375
+ return ok(undefined);
376
+ }
377
+ catch (error) {
378
+ return err(toFileError(error, resolved));
379
+ }
380
+ }
381
+ async appendFile(path, content) {
382
+ const resolved = resolvePath(this.cwd, path);
383
+ try {
384
+ await mkdir(resolve(resolved, '..'), { recursive: true });
385
+ await appendFile(resolved, content);
386
+ return ok(undefined);
387
+ }
388
+ catch (error) {
389
+ return err(toFileError(error, resolved));
390
+ }
391
+ }
392
+ async fileInfo(path) {
393
+ const resolved = resolvePath(this.cwd, path);
394
+ try {
395
+ return fileInfoFromStats(resolved, await lstat(resolved));
396
+ }
397
+ catch (error) {
398
+ return err(toFileError(error, resolved));
399
+ }
400
+ }
401
+ async listDir(path, abortSignal) {
402
+ const resolved = resolvePath(this.cwd, path);
403
+ const aborted = abortResult(abortSignal, resolved);
404
+ if (aborted)
405
+ return aborted;
406
+ try {
407
+ const entries = await readdir(resolved, { withFileTypes: true });
408
+ const infos = [];
409
+ for (const entry of entries) {
410
+ const loopAbort = abortResult(abortSignal, resolved);
411
+ if (loopAbort)
412
+ return loopAbort;
413
+ const entryPath = resolve(resolved, entry.name);
414
+ try {
415
+ const info = fileInfoFromStats(entryPath, await lstat(entryPath));
416
+ if (info.ok)
417
+ infos.push(info.value);
418
+ }
419
+ catch (error) {
420
+ return err(toFileError(error, entryPath));
421
+ }
422
+ }
423
+ return ok(infos);
424
+ }
425
+ catch (error) {
426
+ return err(toFileError(error, resolved));
427
+ }
428
+ }
429
+ async canonicalPath(path) {
430
+ const resolved = resolvePath(this.cwd, path);
431
+ try {
432
+ return ok(await realpath(resolved));
433
+ }
434
+ catch (error) {
435
+ return err(toFileError(error, resolved));
436
+ }
437
+ }
438
+ async exists(path) {
439
+ const result = await this.fileInfo(path);
440
+ if (result.ok)
441
+ return ok(true);
442
+ if (result.error.code === 'not_found')
443
+ return ok(false);
444
+ return err(result.error);
445
+ }
446
+ async createDir(path, options) {
447
+ const resolved = resolvePath(this.cwd, path);
448
+ try {
449
+ await mkdir(resolved, { recursive: options?.recursive ?? true });
450
+ return ok(undefined);
451
+ }
452
+ catch (error) {
453
+ return err(toFileError(error, resolved));
454
+ }
455
+ }
456
+ async remove(path, options) {
457
+ const resolved = resolvePath(this.cwd, path);
458
+ try {
459
+ await rm(resolved, {
460
+ recursive: options?.recursive ?? false,
461
+ force: options?.force ?? false,
462
+ });
463
+ return ok(undefined);
464
+ }
465
+ catch (error) {
466
+ return err(toFileError(error, resolved));
467
+ }
468
+ }
469
+ async createTempDir(prefix = 'tmp-') {
470
+ try {
471
+ return ok(await mkdtemp(join(tmpdir(), prefix)));
472
+ }
473
+ catch (error) {
474
+ return err(toFileError(error));
475
+ }
476
+ }
477
+ async createTempFile(options) {
478
+ const dir = await this.createTempDir('tmp-');
479
+ if (!dir.ok)
480
+ return dir;
481
+ const filePath = join(dir.value, `${options?.prefix ?? ''}${randomUUID()}${options?.suffix ?? ''}`);
482
+ try {
483
+ await writeFile(filePath, '');
484
+ return ok(filePath);
485
+ }
486
+ catch (error) {
487
+ return err(toFileError(error, filePath));
488
+ }
489
+ }
490
+ async cleanup() {
491
+ // nothing to clean up for the local node implementation
492
+ }
493
+ }
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hZ2VudC1jb3JlL3NyYy9oYXJuZXNzL2Vudi9ub2RlanMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxFQUNSLFFBQVEsRUFDUixFQUFFLEVBQ0YsU0FBUyxHQUNWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsR0FBRyxFQUVILGNBQWMsRUFDZCxTQUFTLEVBR1QsRUFBRSxFQUVGLE9BQU8sR0FDUixNQUFNLGFBQWEsQ0FBQztBQUVyQixTQUFTLFdBQVcsQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUM1QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBSTFCO0lBQ0MsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDbEMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFF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
@@ -1,5 +1,5 @@
1
1
  import type { ImageContent, Message, TextContent } from '@earendil-works/pi-ai';
2
- import type { AgentMessage } from '../types.js';
2
+ import type { AgentMessage } from '../types.ts';
3
3
  export declare const COMPACTION_SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n\n<summary>\n";
4
4
  export declare const COMPACTION_SUMMARY_SUFFIX = "\n</summary>";
5
5
  export declare const BRANCH_SUMMARY_PREFIX = "The following is a summary of a branch that this conversation came back from:\n\n<summary>\n";
@@ -35,7 +35,7 @@ export interface CompactionSummaryMessage {
35
35
  tokensBefore: number;
36
36
  timestamp: number;
37
37
  }
38
- declare module '../types.js' {
38
+ declare module '../types.ts' {
39
39
  interface CustomAgentMessages {
40
40
  bashExecution: BashExecutionMessage;
41
41
  custom: CustomMessage;
@@ -113,4 +113,4 @@ export function convertToLlm(messages) {
113
113
  })
114
114
  .filter((m) => m !== undefined);
115
115
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2FnZW50LWNvcmUvaGFybmVzcy9tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRzs7O0NBR3hDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztXQUM5QixDQUFDO0FBRVosTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7OztDQUdwQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsWUFBWSxDQUFDO0FBOENsRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBeUI7SUFDM0QsSUFBSSxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsT0FBTyxNQUFNLENBQUM7SUFDdEMsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZixJQUFJLElBQUksV0FBVyxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUM7SUFDMUMsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLElBQUksYUFBYSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUkseUJBQXlCLENBQUM7SUFDcEMsQ0FBQztTQUFNLElBQ0wsR0FBRyxDQUFDLFFBQVEsS0FBSyxJQUFJO1FBQ3JCLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUztRQUMxQixHQUFHLENBQUMsUUFBUSxLQUFLLENBQUMsRUFDbEIsQ0FBQztRQUNELElBQUksSUFBSSxnQ0FBZ0MsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hDLElBQUksSUFBSSx1Q0FBdUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxP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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2FnZW50LWNvcmUvc3JjL2hhcm5lc3MvbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7OztDQUd4QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUc7V0FDOUIsQ0FBQztBQUVaLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHOzs7Q0FHcEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFlBQVksQ0FBQztBQThDbEQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEdBQXlCO0lBQzNELElBQUksSUFBSSxHQUFHLFNBQVMsR0FBRyxDQUFDLE9BQU8sTUFBTSxDQUFDO0lBQ3RDLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2YsSUFBSSxJQUFJLFdBQVcsR0FBRyxDQUFDLE1BQU0sVUFBVSxDQUFDO0lBQzFDLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxJQUFJLGFBQWEsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLHlCQUF5QixDQUFDO0lBQ3BDLENBQUM7U0FBTSxJQUNMLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSTtRQUNyQixHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVM7UUFDMUIsR0FBRyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQ2xCLENBQUM7UUFDRCxJQUFJLElBQUksZ0NBQWdDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QyxJQUFJLElBQUksdUNBQXVDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsQ0FBQztJQUN2RSxDQUFD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
@@ -1,8 +1,11 @@
1
- import type { ExecutionEnv, PromptTemplate } from './types.js';
1
+ import { type ExecutionEnv, type PromptTemplate } from './types.ts';
2
+ export type PromptTemplateDiagnosticCode = 'file_info_failed' | 'list_failed' | 'read_failed' | 'parse_failed';
2
3
  /** Warning produced while loading prompt templates. */
3
4
  export interface PromptTemplateDiagnostic {
4
5
  /** Diagnostic severity. Currently only warnings are emitted. */
5
6
  type: 'warning';
7
+ /** Stable diagnostic code. */
8
+ code: PromptTemplateDiagnosticCode;
6
9
  /** Human-readable diagnostic message. */
7
10
  message: string;
8
11
  /** Path associated with the diagnostic. */