psadk 1.4.1 → 1.4.4
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.
- package/build/main/index.d.ts +1 -0
- package/build/main/index.js +2 -1
- package/build/main/lib/PSAI.d.ts +11 -2
- package/build/main/lib/PSAI.js +145 -28
- package/build/main/lib/agent-core/agent-loop.d.ts +2 -2
- package/build/main/lib/agent-core/agent-loop.js +69 -65
- package/build/main/lib/agent-core/agent.d.ts +8 -8
- package/build/main/lib/agent-core/agent.js +61 -44
- package/build/main/lib/agent-core/harness/agent-harness.d.ts +4 -4
- package/build/main/lib/agent-core/harness/agent-harness.js +156 -112
- package/build/main/lib/agent-core/harness/compaction/branch-summarization.d.ts +5 -5
- package/build/main/lib/agent-core/harness/compaction/branch-summarization.js +31 -28
- package/build/main/lib/agent-core/harness/compaction/compaction.d.ts +5 -5
- package/build/main/lib/agent-core/harness/compaction/compaction.js +99 -78
- package/build/main/lib/agent-core/harness/compaction/utils.d.ts +2 -2
- package/build/main/lib/agent-core/harness/compaction/utils.js +30 -30
- package/build/main/lib/agent-core/harness/env/nodejs.d.ts +1 -1
- package/build/main/lib/agent-core/harness/env/nodejs.js +80 -75
- package/build/main/lib/agent-core/harness/execution-env.d.ts +3 -3
- package/build/main/lib/agent-core/harness/execution-env.js +3 -3
- package/build/main/lib/agent-core/harness/messages.d.ts +7 -7
- package/build/main/lib/agent-core/harness/messages.js +36 -22
- package/build/main/lib/agent-core/harness/prompt-templates.d.ts +2 -2
- package/build/main/lib/agent-core/harness/prompt-templates.js +31 -27
- package/build/main/lib/agent-core/harness/session/repo/jsonl.d.ts +2 -2
- package/build/main/lib/agent-core/harness/session/repo/jsonl.js +17 -11
- package/build/main/lib/agent-core/harness/session/repo/memory.d.ts +2 -2
- package/build/main/lib/agent-core/harness/session/repo/memory.js +8 -4
- package/build/main/lib/agent-core/harness/session/repo/shared.d.ts +3 -3
- package/build/main/lib/agent-core/harness/session/repo/shared.js +5 -5
- package/build/main/lib/agent-core/harness/session/session.d.ts +3 -3
- package/build/main/lib/agent-core/harness/session/session.js +26 -23
- package/build/main/lib/agent-core/harness/session/storage/jsonl.d.ts +2 -2
- package/build/main/lib/agent-core/harness/session/storage/jsonl.js +11 -11
- package/build/main/lib/agent-core/harness/session/storage/memory.d.ts +2 -2
- package/build/main/lib/agent-core/harness/session/storage/memory.js +10 -6
- package/build/main/lib/agent-core/harness/skills.d.ts +2 -2
- package/build/main/lib/agent-core/harness/skills.js +55 -48
- package/build/main/lib/agent-core/harness/system-prompt.d.ts +1 -1
- package/build/main/lib/agent-core/harness/system-prompt.js +16 -16
- package/build/main/lib/agent-core/harness/types.d.ts +43 -43
- package/build/main/lib/agent-core/harness/types.js +2 -2
- package/build/main/lib/agent-core/harness/utils/shell-output.d.ts +2 -2
- package/build/main/lib/agent-core/harness/utils/shell-output.js +18 -14
- package/build/main/lib/agent-core/harness/utils/truncate.d.ts +1 -1
- package/build/main/lib/agent-core/harness/utils/truncate.js +27 -24
- package/build/main/lib/agent-core/index.d.ts +19 -19
- package/build/main/lib/agent-core/index.js +20 -20
- package/build/main/lib/agent-core/proxy.d.ts +18 -18
- package/build/main/lib/agent-core/proxy.js +77 -61
- package/build/main/lib/agent-core/types.d.ts +16 -16
- package/build/main/lib/tools/PSRetrievalTool.d.ts +127 -0
- package/build/main/lib/tools/PSRetrievalTool.js +172 -0
- package/build/main/lib/utils/helpers.d.ts +34 -0
- package/build/main/lib/utils/helpers.js +280 -1
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +2 -1
- package/build/module/lib/PSAI.d.ts +11 -2
- package/build/module/lib/PSAI.js +145 -28
- package/build/module/lib/agent-core/agent-loop.d.ts +2 -2
- package/build/module/lib/agent-core/agent-loop.js +69 -65
- package/build/module/lib/agent-core/agent.d.ts +8 -8
- package/build/module/lib/agent-core/agent.js +61 -44
- package/build/module/lib/agent-core/harness/agent-harness.d.ts +4 -4
- package/build/module/lib/agent-core/harness/agent-harness.js +156 -112
- package/build/module/lib/agent-core/harness/compaction/branch-summarization.d.ts +5 -5
- package/build/module/lib/agent-core/harness/compaction/branch-summarization.js +31 -28
- package/build/module/lib/agent-core/harness/compaction/compaction.d.ts +5 -5
- package/build/module/lib/agent-core/harness/compaction/compaction.js +99 -78
- package/build/module/lib/agent-core/harness/compaction/utils.d.ts +2 -2
- package/build/module/lib/agent-core/harness/compaction/utils.js +30 -30
- package/build/module/lib/agent-core/harness/env/nodejs.d.ts +1 -1
- package/build/module/lib/agent-core/harness/env/nodejs.js +80 -75
- package/build/module/lib/agent-core/harness/execution-env.d.ts +3 -3
- package/build/module/lib/agent-core/harness/execution-env.js +3 -3
- package/build/module/lib/agent-core/harness/messages.d.ts +7 -7
- package/build/module/lib/agent-core/harness/messages.js +36 -22
- package/build/module/lib/agent-core/harness/prompt-templates.d.ts +2 -2
- package/build/module/lib/agent-core/harness/prompt-templates.js +31 -27
- package/build/module/lib/agent-core/harness/session/repo/jsonl.d.ts +2 -2
- package/build/module/lib/agent-core/harness/session/repo/jsonl.js +17 -11
- package/build/module/lib/agent-core/harness/session/repo/memory.d.ts +2 -2
- package/build/module/lib/agent-core/harness/session/repo/memory.js +8 -4
- package/build/module/lib/agent-core/harness/session/repo/shared.d.ts +3 -3
- package/build/module/lib/agent-core/harness/session/repo/shared.js +5 -5
- package/build/module/lib/agent-core/harness/session/session.d.ts +3 -3
- package/build/module/lib/agent-core/harness/session/session.js +26 -23
- package/build/module/lib/agent-core/harness/session/storage/jsonl.d.ts +2 -2
- package/build/module/lib/agent-core/harness/session/storage/jsonl.js +11 -11
- package/build/module/lib/agent-core/harness/session/storage/memory.d.ts +2 -2
- package/build/module/lib/agent-core/harness/session/storage/memory.js +10 -6
- package/build/module/lib/agent-core/harness/skills.d.ts +2 -2
- package/build/module/lib/agent-core/harness/skills.js +55 -48
- package/build/module/lib/agent-core/harness/system-prompt.d.ts +1 -1
- package/build/module/lib/agent-core/harness/system-prompt.js +16 -16
- package/build/module/lib/agent-core/harness/types.d.ts +43 -43
- package/build/module/lib/agent-core/harness/types.js +2 -2
- package/build/module/lib/agent-core/harness/utils/shell-output.d.ts +2 -2
- package/build/module/lib/agent-core/harness/utils/shell-output.js +18 -14
- package/build/module/lib/agent-core/harness/utils/truncate.d.ts +1 -1
- package/build/module/lib/agent-core/harness/utils/truncate.js +27 -24
- package/build/module/lib/agent-core/index.d.ts +19 -19
- package/build/module/lib/agent-core/index.js +20 -20
- package/build/module/lib/agent-core/proxy.d.ts +18 -18
- package/build/module/lib/agent-core/proxy.js +77 -61
- package/build/module/lib/agent-core/types.d.ts +16 -16
- package/build/module/lib/tools/PSRetrievalTool.d.ts +127 -0
- package/build/module/lib/tools/PSRetrievalTool.js +172 -0
- package/build/module/lib/utils/helpers.d.ts +34 -0
- package/build/module/lib/utils/helpers.js +280 -1
- package/package.json +1 -1
|
@@ -12,31 +12,31 @@ export function createFileOps() {
|
|
|
12
12
|
* Extract file operations from tool calls in an assistant message.
|
|
13
13
|
*/
|
|
14
14
|
export function extractFileOpsFromMessage(message, fileOps) {
|
|
15
|
-
if (message.role !==
|
|
15
|
+
if (message.role !== 'assistant')
|
|
16
16
|
return;
|
|
17
|
-
if (!(
|
|
17
|
+
if (!('content' in message) || !Array.isArray(message.content))
|
|
18
18
|
return;
|
|
19
19
|
for (const block of message.content) {
|
|
20
|
-
if (typeof block !==
|
|
20
|
+
if (typeof block !== 'object' || block === null)
|
|
21
21
|
continue;
|
|
22
|
-
if (!(
|
|
22
|
+
if (!('type' in block) || block.type !== 'toolCall')
|
|
23
23
|
continue;
|
|
24
|
-
if (!(
|
|
24
|
+
if (!('arguments' in block) || !('name' in block))
|
|
25
25
|
continue;
|
|
26
26
|
const args = block.arguments;
|
|
27
27
|
if (!args)
|
|
28
28
|
continue;
|
|
29
|
-
const path = typeof args.path ===
|
|
29
|
+
const path = typeof args.path === 'string' ? args.path : undefined;
|
|
30
30
|
if (!path)
|
|
31
31
|
continue;
|
|
32
32
|
switch (block.name) {
|
|
33
|
-
case
|
|
33
|
+
case 'read':
|
|
34
34
|
fileOps.read.add(path);
|
|
35
35
|
break;
|
|
36
|
-
case
|
|
36
|
+
case 'write':
|
|
37
37
|
fileOps.written.add(path);
|
|
38
38
|
break;
|
|
39
|
-
case
|
|
39
|
+
case 'edit':
|
|
40
40
|
fileOps.edited.add(path);
|
|
41
41
|
break;
|
|
42
42
|
}
|
|
@@ -58,14 +58,14 @@ export function computeFileLists(fileOps) {
|
|
|
58
58
|
export function formatFileOperations(readFiles, modifiedFiles) {
|
|
59
59
|
const sections = [];
|
|
60
60
|
if (readFiles.length > 0) {
|
|
61
|
-
sections.push(`<read-files>\n${readFiles.join(
|
|
61
|
+
sections.push(`<read-files>\n${readFiles.join('\n')}\n</read-files>`);
|
|
62
62
|
}
|
|
63
63
|
if (modifiedFiles.length > 0) {
|
|
64
|
-
sections.push(`<modified-files>\n${modifiedFiles.join(
|
|
64
|
+
sections.push(`<modified-files>\n${modifiedFiles.join('\n')}\n</modified-files>`);
|
|
65
65
|
}
|
|
66
66
|
if (sections.length === 0)
|
|
67
|
-
return
|
|
68
|
-
return `\n\n${sections.join(
|
|
67
|
+
return '';
|
|
68
|
+
return `\n\n${sections.join('\n\n')}`;
|
|
69
69
|
}
|
|
70
70
|
// ============================================================================
|
|
71
71
|
// Message Serialization
|
|
@@ -93,56 +93,56 @@ function truncateForSummary(text, maxChars) {
|
|
|
93
93
|
export function serializeConversation(messages) {
|
|
94
94
|
const parts = [];
|
|
95
95
|
for (const msg of messages) {
|
|
96
|
-
if (msg.role ===
|
|
97
|
-
const content = typeof msg.content ===
|
|
96
|
+
if (msg.role === 'user') {
|
|
97
|
+
const content = typeof msg.content === 'string'
|
|
98
98
|
? msg.content
|
|
99
99
|
: msg.content
|
|
100
|
-
.filter((c) => c.type ===
|
|
100
|
+
.filter((c) => c.type === 'text')
|
|
101
101
|
.map((c) => c.text)
|
|
102
|
-
.join(
|
|
102
|
+
.join('');
|
|
103
103
|
if (content)
|
|
104
104
|
parts.push(`[User]: ${content}`);
|
|
105
105
|
}
|
|
106
|
-
else if (msg.role ===
|
|
106
|
+
else if (msg.role === 'assistant') {
|
|
107
107
|
const textParts = [];
|
|
108
108
|
const thinkingParts = [];
|
|
109
109
|
const toolCalls = [];
|
|
110
110
|
for (const block of msg.content) {
|
|
111
|
-
if (block.type ===
|
|
111
|
+
if (block.type === 'text') {
|
|
112
112
|
textParts.push(block.text);
|
|
113
113
|
}
|
|
114
|
-
else if (block.type ===
|
|
114
|
+
else if (block.type === 'thinking') {
|
|
115
115
|
thinkingParts.push(block.thinking);
|
|
116
116
|
}
|
|
117
|
-
else if (block.type ===
|
|
117
|
+
else if (block.type === 'toolCall') {
|
|
118
118
|
const args = block.arguments;
|
|
119
119
|
const argsStr = Object.entries(args)
|
|
120
120
|
.map(([k, v]) => `${k}=${JSON.stringify(v)}`)
|
|
121
|
-
.join(
|
|
121
|
+
.join(', ');
|
|
122
122
|
toolCalls.push(`${block.name}(${argsStr})`);
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
if (thinkingParts.length > 0) {
|
|
126
|
-
parts.push(`[Assistant thinking]: ${thinkingParts.join(
|
|
126
|
+
parts.push(`[Assistant thinking]: ${thinkingParts.join('\n')}`);
|
|
127
127
|
}
|
|
128
128
|
if (textParts.length > 0) {
|
|
129
|
-
parts.push(`[Assistant]: ${textParts.join(
|
|
129
|
+
parts.push(`[Assistant]: ${textParts.join('\n')}`);
|
|
130
130
|
}
|
|
131
131
|
if (toolCalls.length > 0) {
|
|
132
|
-
parts.push(`[Assistant tool calls]: ${toolCalls.join(
|
|
132
|
+
parts.push(`[Assistant tool calls]: ${toolCalls.join('; ')}`);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
else if (msg.role ===
|
|
135
|
+
else if (msg.role === 'toolResult') {
|
|
136
136
|
const content = msg.content
|
|
137
|
-
.filter((c) => c.type ===
|
|
137
|
+
.filter((c) => c.type === 'text')
|
|
138
138
|
.map((c) => c.text)
|
|
139
|
-
.join(
|
|
139
|
+
.join('');
|
|
140
140
|
if (content) {
|
|
141
141
|
parts.push(`[Tool result]: ${truncateForSummary(content, TOOL_RESULT_MAX_CHARS)}`);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
return parts.join(
|
|
145
|
+
return parts.join('\n\n');
|
|
146
146
|
}
|
|
147
147
|
// ============================================================================
|
|
148
148
|
// Summarization System Prompt
|
|
@@ -150,4 +150,4 @@ export function serializeConversation(messages) {
|
|
|
150
150
|
export const SUMMARIZATION_SYSTEM_PROMPT = `You are a context summarization assistant. Your task is to read a conversation between a user and an AI coding assistant, then produce a structured summary following the exact format specified.
|
|
151
151
|
|
|
152
152
|
Do NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.`;
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2FnZW50LWNvcmUvaGFybmVzcy9jb21wYWN0aW9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBZ0JILE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDZixPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDbEIsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLE9BQXFCLEVBQ3JCLE9BQXVCO0lBRXZCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXO1FBQUUsT0FBTztJQUN6QyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFBRSxPQUFPO0lBRXZFLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsU0FBUztRQUMxRCxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVO1lBQUUsU0FBUztRQUM5RCxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7WUFBRSxTQUFTO1FBRTVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFnRCxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJO1lBQUUsU0FBUztRQUVwQixNQUFNLElBQUksR0FBRyxPQUFPLElBQUksQ0FBQyxJQUFJ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
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { spawn } from
|
|
2
|
-
import { randomUUID } from
|
|
3
|
-
import { constants } from
|
|
4
|
-
import { access, lstat, mkdir, mkdtemp, readdir, readFile, realpath, rm, writeFile } from
|
|
5
|
-
import { tmpdir } from
|
|
6
|
-
import { isAbsolute, join, resolve } from
|
|
7
|
-
import { FileError } from
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { constants } from 'node:fs';
|
|
4
|
+
import { access, 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 { FileError, } from '../types.js';
|
|
8
8
|
function resolvePath(cwd, path) {
|
|
9
9
|
return isAbsolute(path) ? path : resolve(cwd, path);
|
|
10
10
|
}
|
|
11
11
|
function fileKindFromStats(stats) {
|
|
12
12
|
if (stats.isFile())
|
|
13
|
-
return
|
|
13
|
+
return 'file';
|
|
14
14
|
if (stats.isDirectory())
|
|
15
|
-
return
|
|
15
|
+
return 'directory';
|
|
16
16
|
if (stats.isSymbolicLink())
|
|
17
|
-
return
|
|
18
|
-
throw new FileError(
|
|
17
|
+
return 'symlink';
|
|
18
|
+
throw new FileError('invalid', 'Unsupported file type');
|
|
19
19
|
}
|
|
20
20
|
function fileInfoFromStats(path, stats) {
|
|
21
21
|
return {
|
|
22
|
-
name: path.replace(/\/+$/,
|
|
22
|
+
name: path.replace(/\/+$/, '').split('/').pop() ?? path,
|
|
23
23
|
path,
|
|
24
24
|
kind: fileKindFromStats(stats),
|
|
25
25
|
size: stats.size,
|
|
@@ -27,7 +27,7 @@ function fileInfoFromStats(path, stats) {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
function isNodeError(error) {
|
|
30
|
-
return error instanceof Error &&
|
|
30
|
+
return error instanceof Error && 'code' in error;
|
|
31
31
|
}
|
|
32
32
|
function toFileError(error, path) {
|
|
33
33
|
if (error instanceof FileError)
|
|
@@ -35,20 +35,22 @@ function toFileError(error, path) {
|
|
|
35
35
|
if (isNodeError(error)) {
|
|
36
36
|
const message = error.message;
|
|
37
37
|
switch (error.code) {
|
|
38
|
-
case
|
|
39
|
-
return new FileError(
|
|
40
|
-
case
|
|
41
|
-
case
|
|
42
|
-
return new FileError(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
case
|
|
46
|
-
return new FileError(
|
|
47
|
-
case
|
|
48
|
-
return new FileError(
|
|
38
|
+
case 'ENOENT':
|
|
39
|
+
return new FileError('not_found', message, path, { cause: error });
|
|
40
|
+
case 'EACCES':
|
|
41
|
+
case 'EPERM':
|
|
42
|
+
return new FileError('permission_denied', message, path, {
|
|
43
|
+
cause: error,
|
|
44
|
+
});
|
|
45
|
+
case 'ENOTDIR':
|
|
46
|
+
return new FileError('not_directory', message, path, { cause: error });
|
|
47
|
+
case 'EISDIR':
|
|
48
|
+
return new FileError('is_directory', message, path, { cause: error });
|
|
49
|
+
case 'EINVAL':
|
|
50
|
+
return new FileError('invalid', message, path, { cause: error });
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
|
-
return new FileError(
|
|
53
|
+
return new FileError('unknown', error instanceof Error ? error.message : String(error), path, { cause: error });
|
|
52
54
|
}
|
|
53
55
|
async function pathExists(path) {
|
|
54
56
|
try {
|
|
@@ -61,30 +63,30 @@ async function pathExists(path) {
|
|
|
61
63
|
}
|
|
62
64
|
async function runCommand(command, args, timeoutMs) {
|
|
63
65
|
return await new Promise((resolve) => {
|
|
64
|
-
let stdout =
|
|
65
|
-
const child = spawn(command, args, { stdio: [
|
|
66
|
+
let stdout = '';
|
|
67
|
+
const child = spawn(command, args, { stdio: ['ignore', 'pipe', 'ignore'] });
|
|
66
68
|
const timeout = setTimeout(() => {
|
|
67
69
|
if (child.pid)
|
|
68
70
|
killProcessTree(child.pid);
|
|
69
71
|
}, timeoutMs);
|
|
70
|
-
child.stdout?.setEncoding(
|
|
71
|
-
child.stdout?.on(
|
|
72
|
+
child.stdout?.setEncoding('utf8');
|
|
73
|
+
child.stdout?.on('data', (chunk) => {
|
|
72
74
|
stdout += chunk;
|
|
73
75
|
});
|
|
74
|
-
child.on(
|
|
76
|
+
child.on('error', () => {
|
|
75
77
|
clearTimeout(timeout);
|
|
76
|
-
resolve({ stdout:
|
|
78
|
+
resolve({ stdout: '', status: null });
|
|
77
79
|
});
|
|
78
|
-
child.on(
|
|
80
|
+
child.on('close', (status) => {
|
|
79
81
|
clearTimeout(timeout);
|
|
80
82
|
resolve({ stdout, status });
|
|
81
83
|
});
|
|
82
84
|
});
|
|
83
85
|
}
|
|
84
86
|
async function findBashOnPath() {
|
|
85
|
-
const result = process.platform ===
|
|
86
|
-
? await runCommand(
|
|
87
|
-
: await runCommand(
|
|
87
|
+
const result = process.platform === 'win32'
|
|
88
|
+
? await runCommand('where', ['bash.exe'], 5000)
|
|
89
|
+
: await runCommand('which', ['bash'], 5000);
|
|
88
90
|
if (result.status !== 0 || !result.stdout)
|
|
89
91
|
return null;
|
|
90
92
|
const firstMatch = result.stdout.trim().split(/\r?\n/)[0];
|
|
@@ -93,37 +95,37 @@ async function findBashOnPath() {
|
|
|
93
95
|
async function getShellConfig(customShellPath) {
|
|
94
96
|
if (customShellPath) {
|
|
95
97
|
if (await pathExists(customShellPath)) {
|
|
96
|
-
return { shell: customShellPath, args: [
|
|
98
|
+
return { shell: customShellPath, args: ['-c'] };
|
|
97
99
|
}
|
|
98
100
|
throw new Error(`Custom shell path not found: ${customShellPath}`);
|
|
99
101
|
}
|
|
100
|
-
if (process.platform ===
|
|
102
|
+
if (process.platform === 'win32') {
|
|
101
103
|
const candidates = [];
|
|
102
104
|
const programFiles = process.env.ProgramFiles;
|
|
103
105
|
if (programFiles)
|
|
104
106
|
candidates.push(`${programFiles}\\Git\\bin\\bash.exe`);
|
|
105
|
-
const programFilesX86 = process.env[
|
|
107
|
+
const programFilesX86 = process.env['ProgramFiles(x86)'];
|
|
106
108
|
if (programFilesX86)
|
|
107
109
|
candidates.push(`${programFilesX86}\\Git\\bin\\bash.exe`);
|
|
108
110
|
for (const candidate of candidates) {
|
|
109
111
|
if (await pathExists(candidate)) {
|
|
110
|
-
return { shell: candidate, args: [
|
|
112
|
+
return { shell: candidate, args: ['-c'] };
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
const bashOnPath = await findBashOnPath();
|
|
114
116
|
if (bashOnPath) {
|
|
115
|
-
return { shell: bashOnPath, args: [
|
|
117
|
+
return { shell: bashOnPath, args: ['-c'] };
|
|
116
118
|
}
|
|
117
|
-
throw new Error(
|
|
119
|
+
throw new Error('No bash shell found');
|
|
118
120
|
}
|
|
119
|
-
if (await pathExists(
|
|
120
|
-
return { shell:
|
|
121
|
+
if (await pathExists('/bin/bash')) {
|
|
122
|
+
return { shell: '/bin/bash', args: ['-c'] };
|
|
121
123
|
}
|
|
122
124
|
const bashOnPath = await findBashOnPath();
|
|
123
125
|
if (bashOnPath) {
|
|
124
|
-
return { shell: bashOnPath, args: [
|
|
126
|
+
return { shell: bashOnPath, args: ['-c'] };
|
|
125
127
|
}
|
|
126
|
-
return { shell:
|
|
128
|
+
return { shell: 'sh', args: ['-c'] };
|
|
127
129
|
}
|
|
128
130
|
function getShellEnv(baseEnv, extraEnv) {
|
|
129
131
|
return {
|
|
@@ -133,10 +135,10 @@ function getShellEnv(baseEnv, extraEnv) {
|
|
|
133
135
|
};
|
|
134
136
|
}
|
|
135
137
|
function killProcessTree(pid) {
|
|
136
|
-
if (process.platform ===
|
|
138
|
+
if (process.platform === 'win32') {
|
|
137
139
|
try {
|
|
138
|
-
spawn(
|
|
139
|
-
stdio:
|
|
140
|
+
spawn('taskkill', ['/F', '/T', '/PID', String(pid)], {
|
|
141
|
+
stdio: 'ignore',
|
|
140
142
|
detached: true,
|
|
141
143
|
});
|
|
142
144
|
}
|
|
@@ -146,11 +148,11 @@ function killProcessTree(pid) {
|
|
|
146
148
|
return;
|
|
147
149
|
}
|
|
148
150
|
try {
|
|
149
|
-
process.kill(-pid,
|
|
151
|
+
process.kill(-pid, 'SIGKILL');
|
|
150
152
|
}
|
|
151
153
|
catch {
|
|
152
154
|
try {
|
|
153
|
-
process.kill(pid,
|
|
155
|
+
process.kill(pid, 'SIGKILL');
|
|
154
156
|
}
|
|
155
157
|
catch {
|
|
156
158
|
// Process already dead.
|
|
@@ -170,17 +172,17 @@ export class NodeExecutionEnv {
|
|
|
170
172
|
const cwd = options?.cwd ? resolvePath(this.cwd, options.cwd) : this.cwd;
|
|
171
173
|
const { shell, args } = await getShellConfig(this.shellPath);
|
|
172
174
|
return await new Promise((resolvePromise, reject) => {
|
|
173
|
-
let stdout =
|
|
174
|
-
let stderr =
|
|
175
|
+
let stdout = '';
|
|
176
|
+
let stderr = '';
|
|
175
177
|
let settled = false;
|
|
176
178
|
let timedOut = false;
|
|
177
179
|
const child = spawn(shell, [...args, command], {
|
|
178
180
|
cwd,
|
|
179
|
-
detached: process.platform !==
|
|
181
|
+
detached: process.platform !== 'win32',
|
|
180
182
|
env: getShellEnv(this.shellEnv, options?.env),
|
|
181
|
-
stdio: [
|
|
183
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
182
184
|
});
|
|
183
|
-
const timeoutId = typeof options?.timeout ===
|
|
185
|
+
const timeoutId = typeof options?.timeout === 'number'
|
|
184
186
|
? setTimeout(() => {
|
|
185
187
|
timedOut = true;
|
|
186
188
|
if (child.pid) {
|
|
@@ -198,39 +200,39 @@ export class NodeExecutionEnv {
|
|
|
198
200
|
onAbort();
|
|
199
201
|
}
|
|
200
202
|
else {
|
|
201
|
-
options.signal.addEventListener(
|
|
203
|
+
options.signal.addEventListener('abort', onAbort, { once: true });
|
|
202
204
|
}
|
|
203
205
|
}
|
|
204
|
-
child.stdout?.setEncoding(
|
|
205
|
-
child.stderr?.setEncoding(
|
|
206
|
-
child.stdout?.on(
|
|
206
|
+
child.stdout?.setEncoding('utf8');
|
|
207
|
+
child.stderr?.setEncoding('utf8');
|
|
208
|
+
child.stdout?.on('data', (chunk) => {
|
|
207
209
|
stdout += chunk;
|
|
208
210
|
options?.onStdout?.(chunk);
|
|
209
211
|
});
|
|
210
|
-
child.stderr?.on(
|
|
212
|
+
child.stderr?.on('data', (chunk) => {
|
|
211
213
|
stderr += chunk;
|
|
212
214
|
options?.onStderr?.(chunk);
|
|
213
215
|
});
|
|
214
|
-
child.on(
|
|
216
|
+
child.on('error', (error) => {
|
|
215
217
|
if (timeoutId)
|
|
216
218
|
clearTimeout(timeoutId);
|
|
217
219
|
if (options?.signal)
|
|
218
|
-
options.signal.removeEventListener(
|
|
220
|
+
options.signal.removeEventListener('abort', onAbort);
|
|
219
221
|
if (settled)
|
|
220
222
|
return;
|
|
221
223
|
settled = true;
|
|
222
224
|
reject(error);
|
|
223
225
|
});
|
|
224
|
-
child.on(
|
|
226
|
+
child.on('close', (code) => {
|
|
225
227
|
if (timeoutId)
|
|
226
228
|
clearTimeout(timeoutId);
|
|
227
229
|
if (options?.signal)
|
|
228
|
-
options.signal.removeEventListener(
|
|
230
|
+
options.signal.removeEventListener('abort', onAbort);
|
|
229
231
|
if (settled)
|
|
230
232
|
return;
|
|
231
233
|
settled = true;
|
|
232
234
|
if (options?.signal?.aborted) {
|
|
233
|
-
reject(new Error(
|
|
235
|
+
reject(new Error('aborted'));
|
|
234
236
|
return;
|
|
235
237
|
}
|
|
236
238
|
if (timedOut) {
|
|
@@ -244,7 +246,7 @@ export class NodeExecutionEnv {
|
|
|
244
246
|
async readTextFile(path) {
|
|
245
247
|
const resolved = resolvePath(this.cwd, path);
|
|
246
248
|
try {
|
|
247
|
-
return await readFile(resolved,
|
|
249
|
+
return await readFile(resolved, 'utf8');
|
|
248
250
|
}
|
|
249
251
|
catch (error) {
|
|
250
252
|
throw toFileError(error, resolved);
|
|
@@ -262,7 +264,7 @@ export class NodeExecutionEnv {
|
|
|
262
264
|
async writeFile(path, content) {
|
|
263
265
|
const resolved = resolvePath(this.cwd, path);
|
|
264
266
|
try {
|
|
265
|
-
await mkdir(resolve(resolved,
|
|
267
|
+
await mkdir(resolve(resolved, '..'), { recursive: true });
|
|
266
268
|
await writeFile(resolved, content);
|
|
267
269
|
}
|
|
268
270
|
catch (error) {
|
|
@@ -289,7 +291,7 @@ export class NodeExecutionEnv {
|
|
|
289
291
|
infos.push(fileInfoFromStats(entryPath, await lstat(entryPath)));
|
|
290
292
|
}
|
|
291
293
|
catch (error) {
|
|
292
|
-
if (error instanceof FileError && error.code ===
|
|
294
|
+
if (error instanceof FileError && error.code === 'invalid')
|
|
293
295
|
continue;
|
|
294
296
|
throw error;
|
|
295
297
|
}
|
|
@@ -315,7 +317,7 @@ export class NodeExecutionEnv {
|
|
|
315
317
|
return true;
|
|
316
318
|
}
|
|
317
319
|
catch (error) {
|
|
318
|
-
if (error instanceof FileError && error.code ===
|
|
320
|
+
if (error instanceof FileError && error.code === 'not_found')
|
|
319
321
|
return false;
|
|
320
322
|
throw error;
|
|
321
323
|
}
|
|
@@ -326,23 +328,26 @@ export class NodeExecutionEnv {
|
|
|
326
328
|
async remove(path, options) {
|
|
327
329
|
const resolved = resolvePath(this.cwd, path);
|
|
328
330
|
try {
|
|
329
|
-
await rm(resolved, {
|
|
331
|
+
await rm(resolved, {
|
|
332
|
+
recursive: options?.recursive ?? false,
|
|
333
|
+
force: options?.force ?? false,
|
|
334
|
+
});
|
|
330
335
|
}
|
|
331
336
|
catch (error) {
|
|
332
337
|
throw toFileError(error, resolved);
|
|
333
338
|
}
|
|
334
339
|
}
|
|
335
|
-
async createTempDir(prefix =
|
|
340
|
+
async createTempDir(prefix = 'tmp-') {
|
|
336
341
|
return await mkdtemp(join(tmpdir(), prefix));
|
|
337
342
|
}
|
|
338
343
|
async createTempFile(options) {
|
|
339
|
-
const dir = await this.createTempDir(
|
|
340
|
-
const filePath = join(dir, `${options?.prefix ??
|
|
341
|
-
await writeFile(filePath,
|
|
344
|
+
const dir = await this.createTempDir('tmp-');
|
|
345
|
+
const filePath = join(dir, `${options?.prefix ?? ''}${randomUUID()}${options?.suffix ?? ''}`);
|
|
346
|
+
await writeFile(filePath, '');
|
|
342
347
|
return filePath;
|
|
343
348
|
}
|
|
344
349
|
async cleanup() {
|
|
345
350
|
// nothing to clean up for the local node implementation
|
|
346
351
|
}
|
|
347
352
|
}
|
|
348
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hZ2VudC1jb3JlL2hhcm5lc3MvZW52L25vZGVqcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBcUIsU0FBUyxFQUFnQyxNQUFNLGFBQWEsQ0FBQztBQUV6RixTQUFTLFdBQVcsQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUM3QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQStFO0lBQ3pHLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQzVDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdDLE1BQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFF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
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hZ2VudC1jb3JlL2hhcm5lc3MvZW52L25vZGVqcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEVBQ1IsRUFBRSxFQUNGLFNBQVMsR0FDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRELE9BQU8sRUFFTCxTQUFTLEdBR1YsTUFBTSxhQUFhLENBQUM7QUFFckIsU0FBUyxXQUFXLENBQUMsR0FBVyxFQUFFLElBQVk7SUFDNUMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUkxQjtJQUNDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQzVDLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzdDLE1BQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFLHVC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
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { NodeExecutionEnv } from
|
|
2
|
-
export type { ExecutionEnv, ExecutionEnvExecOptions, FileErrorCode, FileInfo, FileKind } from
|
|
3
|
-
export { FileError } from
|
|
1
|
+
export { NodeExecutionEnv } from './env/nodejs.js';
|
|
2
|
+
export type { ExecutionEnv, ExecutionEnvExecOptions, FileErrorCode, FileInfo, FileKind, } from './types.js';
|
|
3
|
+
export { FileError } from './types.js';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { NodeExecutionEnv } from
|
|
2
|
-
export { FileError } from
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export { NodeExecutionEnv } from './env/nodejs.js';
|
|
2
|
+
export { FileError } from './types.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLWVudi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYWdlbnQtY29yZS9oYXJuZXNzL2V4ZWN1dGlvbi1lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQyJ9
|