psadk 1.4.1 → 1.4.3
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
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import ignore from
|
|
2
|
-
import { parse } from
|
|
1
|
+
import ignore from 'ignore';
|
|
2
|
+
import { parse } from 'yaml';
|
|
3
3
|
const MAX_NAME_LENGTH = 64;
|
|
4
4
|
const MAX_DESCRIPTION_LENGTH = 1024;
|
|
5
|
-
const IGNORE_FILE_NAMES = [
|
|
5
|
+
const IGNORE_FILE_NAMES = ['.gitignore', '.ignore', '.fdignore'];
|
|
6
6
|
/** Format a skill invocation prompt, optionally appending additional user instructions. */
|
|
7
7
|
export function formatSkillInvocation(skill, additionalInstructions) {
|
|
8
8
|
const skillBlock = `<skill name="${skill.name}" location="${skill.filePath}">\nReferences are relative to ${dirnameEnvPath(skill.filePath)}.\n\n${skill.content}\n</skill>`;
|
|
9
|
-
return additionalInstructions
|
|
9
|
+
return additionalInstructions
|
|
10
|
+
? `${skillBlock}\n\n${additionalInstructions}`
|
|
11
|
+
: skillBlock;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* Load skills from one or more directories.
|
|
@@ -19,7 +21,7 @@ export async function loadSkills(env, dirs) {
|
|
|
19
21
|
const diagnostics = [];
|
|
20
22
|
for (const dir of Array.isArray(dirs) ? dirs : [dirs]) {
|
|
21
23
|
const rootInfo = await safeFileInfo(env, dir);
|
|
22
|
-
if (!rootInfo || (await resolveKind(env, rootInfo)) !==
|
|
24
|
+
if (!rootInfo || (await resolveKind(env, rootInfo)) !== 'directory')
|
|
23
25
|
continue;
|
|
24
26
|
const result = await loadSkillsFromDirInternal(env, rootInfo.path, true, ignore(), rootInfo.path);
|
|
25
27
|
skills.push(...result.skills);
|
|
@@ -39,7 +41,10 @@ export async function loadSourcedSkills(env, inputs, mapSkill) {
|
|
|
39
41
|
for (const input of inputs) {
|
|
40
42
|
const result = await loadSkills(env, input.path);
|
|
41
43
|
for (const skill of result.skills) {
|
|
42
|
-
skills.push({
|
|
44
|
+
skills.push({
|
|
45
|
+
skill: mapSkill ? mapSkill(skill, input.source) : skill,
|
|
46
|
+
source: input.source,
|
|
47
|
+
});
|
|
43
48
|
}
|
|
44
49
|
for (const diagnostic of result.diagnostics)
|
|
45
50
|
diagnostics.push({ ...diagnostic, source: input.source });
|
|
@@ -52,7 +57,7 @@ async function loadSkillsFromDirInternal(env, dir, includeRootFiles, ignoreMatch
|
|
|
52
57
|
if (!(await env.exists(dir)))
|
|
53
58
|
return { skills, diagnostics };
|
|
54
59
|
const dirInfo = await safeFileInfo(env, dir);
|
|
55
|
-
if (!dirInfo || (await resolveKind(env, dirInfo)) !==
|
|
60
|
+
if (!dirInfo || (await resolveKind(env, dirInfo)) !== 'directory')
|
|
56
61
|
return { skills, diagnostics };
|
|
57
62
|
await addIgnoreRules(env, ignoreMatcher, dir, rootDir);
|
|
58
63
|
let entries;
|
|
@@ -63,11 +68,11 @@ async function loadSkillsFromDirInternal(env, dir, includeRootFiles, ignoreMatch
|
|
|
63
68
|
return { skills, diagnostics };
|
|
64
69
|
}
|
|
65
70
|
for (const entry of entries) {
|
|
66
|
-
if (entry.name !==
|
|
71
|
+
if (entry.name !== 'SKILL.md')
|
|
67
72
|
continue;
|
|
68
73
|
const fullPath = entry.path;
|
|
69
74
|
const kind = await resolveKind(env, entry);
|
|
70
|
-
if (kind !==
|
|
75
|
+
if (kind !== 'file')
|
|
71
76
|
continue;
|
|
72
77
|
const relPath = relativeEnvPath(rootDir, fullPath);
|
|
73
78
|
if (ignoreMatcher.ignores(relPath))
|
|
@@ -79,23 +84,23 @@ async function loadSkillsFromDirInternal(env, dir, includeRootFiles, ignoreMatch
|
|
|
79
84
|
return { skills, diagnostics };
|
|
80
85
|
}
|
|
81
86
|
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
82
|
-
if (entry.name.startsWith(
|
|
87
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules')
|
|
83
88
|
continue;
|
|
84
89
|
const fullPath = entry.path;
|
|
85
90
|
const kind = await resolveKind(env, entry);
|
|
86
91
|
if (!kind)
|
|
87
92
|
continue;
|
|
88
93
|
const relPath = relativeEnvPath(rootDir, fullPath);
|
|
89
|
-
const ignorePath = kind ===
|
|
94
|
+
const ignorePath = kind === 'directory' ? `${relPath}/` : relPath;
|
|
90
95
|
if (ignoreMatcher.ignores(ignorePath))
|
|
91
96
|
continue;
|
|
92
|
-
if (kind ===
|
|
97
|
+
if (kind === 'directory') {
|
|
93
98
|
const result = await loadSkillsFromDirInternal(env, fullPath, false, ignoreMatcher, rootDir);
|
|
94
99
|
skills.push(...result.skills);
|
|
95
100
|
diagnostics.push(...result.diagnostics);
|
|
96
101
|
continue;
|
|
97
102
|
}
|
|
98
|
-
if (kind !==
|
|
103
|
+
if (kind !== 'file' || !includeRootFiles || !entry.name.endsWith('.md'))
|
|
99
104
|
continue;
|
|
100
105
|
const result = await loadSkillFromFile(env, fullPath);
|
|
101
106
|
if (result.skill)
|
|
@@ -106,11 +111,11 @@ async function loadSkillsFromDirInternal(env, dir, includeRootFiles, ignoreMatch
|
|
|
106
111
|
}
|
|
107
112
|
async function addIgnoreRules(env, ig, dir, rootDir) {
|
|
108
113
|
const relativeDir = relativeEnvPath(rootDir, dir);
|
|
109
|
-
const prefix = relativeDir ? `${relativeDir}/` :
|
|
114
|
+
const prefix = relativeDir ? `${relativeDir}/` : '';
|
|
110
115
|
for (const filename of IGNORE_FILE_NAMES) {
|
|
111
116
|
const ignorePath = joinEnvPath(dir, filename);
|
|
112
117
|
const info = await safeFileInfo(env, ignorePath);
|
|
113
|
-
if (info?.kind !==
|
|
118
|
+
if (info?.kind !== 'file')
|
|
114
119
|
continue;
|
|
115
120
|
try {
|
|
116
121
|
const content = await env.readTextFile(ignorePath);
|
|
@@ -128,18 +133,18 @@ function prefixIgnorePattern(line, prefix) {
|
|
|
128
133
|
const trimmed = line.trim();
|
|
129
134
|
if (!trimmed)
|
|
130
135
|
return null;
|
|
131
|
-
if (trimmed.startsWith(
|
|
136
|
+
if (trimmed.startsWith('#') && !trimmed.startsWith('\\#'))
|
|
132
137
|
return null;
|
|
133
138
|
let pattern = line;
|
|
134
139
|
let negated = false;
|
|
135
|
-
if (pattern.startsWith(
|
|
140
|
+
if (pattern.startsWith('!')) {
|
|
136
141
|
negated = true;
|
|
137
142
|
pattern = pattern.slice(1);
|
|
138
143
|
}
|
|
139
|
-
else if (pattern.startsWith(
|
|
144
|
+
else if (pattern.startsWith('\\!')) {
|
|
140
145
|
pattern = pattern.slice(1);
|
|
141
146
|
}
|
|
142
|
-
if (pattern.startsWith(
|
|
147
|
+
if (pattern.startsWith('/'))
|
|
143
148
|
pattern = pattern.slice(1);
|
|
144
149
|
const prefixed = prefix ? `${prefix}${pattern}` : pattern;
|
|
145
150
|
return negated ? `!${prefixed}` : prefixed;
|
|
@@ -152,13 +157,13 @@ async function loadSkillFromFile(env, filePath) {
|
|
|
152
157
|
const skillDir = dirnameEnvPath(filePath);
|
|
153
158
|
const parentDirName = basenameEnvPath(skillDir);
|
|
154
159
|
for (const error of validateDescription(frontmatter.description)) {
|
|
155
|
-
diagnostics.push({ type:
|
|
160
|
+
diagnostics.push({ type: 'warning', message: error, path: filePath });
|
|
156
161
|
}
|
|
157
162
|
const name = frontmatter.name || parentDirName;
|
|
158
163
|
for (const error of validateName(name, parentDirName)) {
|
|
159
|
-
diagnostics.push({ type:
|
|
164
|
+
diagnostics.push({ type: 'warning', message: error, path: filePath });
|
|
160
165
|
}
|
|
161
|
-
if (!frontmatter.description || frontmatter.description.trim() ===
|
|
166
|
+
if (!frontmatter.description || frontmatter.description.trim() === '') {
|
|
162
167
|
return { skill: null, diagnostics };
|
|
163
168
|
}
|
|
164
169
|
return {
|
|
@@ -167,14 +172,14 @@ async function loadSkillFromFile(env, filePath) {
|
|
|
167
172
|
description: frontmatter.description,
|
|
168
173
|
content: body,
|
|
169
174
|
filePath,
|
|
170
|
-
disableModelInvocation: frontmatter[
|
|
175
|
+
disableModelInvocation: frontmatter['disable-model-invocation'] === true,
|
|
171
176
|
},
|
|
172
177
|
diagnostics,
|
|
173
178
|
};
|
|
174
179
|
}
|
|
175
180
|
catch (error) {
|
|
176
|
-
const message = error instanceof Error ? error.message :
|
|
177
|
-
diagnostics.push({ type:
|
|
181
|
+
const message = error instanceof Error ? error.message : 'failed to parse skill file';
|
|
182
|
+
diagnostics.push({ type: 'warning', message, path: filePath });
|
|
178
183
|
return { skill: null, diagnostics };
|
|
179
184
|
}
|
|
180
185
|
}
|
|
@@ -185,18 +190,18 @@ function validateName(name, parentDirName) {
|
|
|
185
190
|
if (name.length > MAX_NAME_LENGTH)
|
|
186
191
|
errors.push(`name exceeds ${MAX_NAME_LENGTH} characters (${name.length})`);
|
|
187
192
|
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
188
|
-
errors.push(
|
|
193
|
+
errors.push('name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)');
|
|
189
194
|
}
|
|
190
|
-
if (name.startsWith(
|
|
191
|
-
errors.push(
|
|
192
|
-
if (name.includes(
|
|
193
|
-
errors.push(
|
|
195
|
+
if (name.startsWith('-') || name.endsWith('-'))
|
|
196
|
+
errors.push('name must not start or end with a hyphen');
|
|
197
|
+
if (name.includes('--'))
|
|
198
|
+
errors.push('name must not contain consecutive hyphens');
|
|
194
199
|
return errors;
|
|
195
200
|
}
|
|
196
201
|
function validateDescription(description) {
|
|
197
202
|
const errors = [];
|
|
198
|
-
if (!description || description.trim() ===
|
|
199
|
-
errors.push(
|
|
203
|
+
if (!description || description.trim() === '') {
|
|
204
|
+
errors.push('description is required');
|
|
200
205
|
}
|
|
201
206
|
else if (description.length > MAX_DESCRIPTION_LENGTH) {
|
|
202
207
|
errors.push(`description exceeds ${MAX_DESCRIPTION_LENGTH} characters (${description.length})`);
|
|
@@ -204,10 +209,10 @@ function validateDescription(description) {
|
|
|
204
209
|
return errors;
|
|
205
210
|
}
|
|
206
211
|
function parseFrontmatter(content) {
|
|
207
|
-
const normalized = content.replace(/\r\n/g,
|
|
208
|
-
if (!normalized.startsWith(
|
|
212
|
+
const normalized = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
213
|
+
if (!normalized.startsWith('---'))
|
|
209
214
|
return { frontmatter: {}, body: normalized };
|
|
210
|
-
const endIndex = normalized.indexOf(
|
|
215
|
+
const endIndex = normalized.indexOf('\n---', 3);
|
|
211
216
|
if (endIndex === -1)
|
|
212
217
|
return { frontmatter: {}, body: normalized };
|
|
213
218
|
const yamlString = normalized.slice(4, endIndex);
|
|
@@ -223,37 +228,39 @@ async function safeFileInfo(env, path) {
|
|
|
223
228
|
}
|
|
224
229
|
}
|
|
225
230
|
async function resolveKind(env, info) {
|
|
226
|
-
if (info.kind ===
|
|
231
|
+
if (info.kind === 'file' || info.kind === 'directory')
|
|
227
232
|
return info.kind;
|
|
228
233
|
try {
|
|
229
234
|
const realPath = await env.realPath(info.path);
|
|
230
235
|
const target = await env.fileInfo(realPath);
|
|
231
|
-
return target.kind ===
|
|
236
|
+
return target.kind === 'file' || target.kind === 'directory'
|
|
237
|
+
? target.kind
|
|
238
|
+
: undefined;
|
|
232
239
|
}
|
|
233
240
|
catch {
|
|
234
241
|
return undefined;
|
|
235
242
|
}
|
|
236
243
|
}
|
|
237
244
|
function joinEnvPath(base, child) {
|
|
238
|
-
return `${base.replace(/\/+$/,
|
|
245
|
+
return `${base.replace(/\/+$/, '')}/${child.replace(/^\/+/, '')}`;
|
|
239
246
|
}
|
|
240
247
|
function dirnameEnvPath(path) {
|
|
241
|
-
const normalized = path.replace(/\/+$/,
|
|
242
|
-
const slashIndex = normalized.lastIndexOf(
|
|
243
|
-
return slashIndex <= 0 ?
|
|
248
|
+
const normalized = path.replace(/\/+$/, '');
|
|
249
|
+
const slashIndex = normalized.lastIndexOf('/');
|
|
250
|
+
return slashIndex <= 0 ? '/' : normalized.slice(0, slashIndex);
|
|
244
251
|
}
|
|
245
252
|
function basenameEnvPath(path) {
|
|
246
|
-
const normalized = path.replace(/\/+$/,
|
|
247
|
-
const slashIndex = normalized.lastIndexOf(
|
|
253
|
+
const normalized = path.replace(/\/+$/, '');
|
|
254
|
+
const slashIndex = normalized.lastIndexOf('/');
|
|
248
255
|
return slashIndex === -1 ? normalized : normalized.slice(slashIndex + 1);
|
|
249
256
|
}
|
|
250
257
|
function relativeEnvPath(root, path) {
|
|
251
|
-
const normalizedRoot = root.replace(/\/+$/,
|
|
252
|
-
const normalizedPath = path.replace(/\/+$/,
|
|
258
|
+
const normalizedRoot = root.replace(/\/+$/, '');
|
|
259
|
+
const normalizedPath = path.replace(/\/+$/, '');
|
|
253
260
|
if (normalizedPath === normalizedRoot)
|
|
254
|
-
return
|
|
261
|
+
return '';
|
|
255
262
|
return normalizedPath.startsWith(`${normalizedRoot}/`)
|
|
256
263
|
? normalizedPath.slice(normalizedRoot.length + 1)
|
|
257
|
-
: normalizedPath.replace(/^\/+/,
|
|
264
|
+
: normalizedPath.replace(/^\/+/, '');
|
|
258
265
|
}
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hZ2VudC1jb3JlL2hhcm5lc3Mvc2tpbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQztBQUNwQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQXFCakUsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxLQUFZLEVBQUUsc0JBQStCO0lBQ2xGLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixLQUFLLENBQUMsSUFBSSxlQUFlLEtBQUssQ0FBQyxRQUFRLGtDQUFrQyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxPQUFPLFlBQVksQ0FBQztJQUM1SyxPQUFPLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsT0FBTyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDM0YsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQy9CLEdBQWlCLEVBQ2pCLElBQXVCO0lBRXZCLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUMzQixNQUFNLFdBQVcsR0FBc0IsRUFBRSxDQUFDO0lBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxZQUFZLENB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
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpbGxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hZ2VudC1jb3JlL2hhcm5lc3Mvc2tpbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTdCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQztBQUNwQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQXFCakUsMkZBQTJGO0FBQzNGLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsS0FBWSxFQUNaLHNCQUErQjtJQUUvQixNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsS0FBSyxDQUFDLElBQUksZUFBZSxLQUFLLENBQUMsUUFBUSxrQ0FBa0MsY0FBYyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLENBQUMsT0FBTyxZQUFZLENBQUM7SUFDNUssT0FBTyxzQkFBc0I7UUFDM0IsQ0FBQyxDQUFDLEdBQUcsVUFBVSxPQUFPLHNCQUFzQixFQUFFO1FBQzlDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQzlCLEdBQWlCLEVBQ2pCLElBQXVCO0lBRXZCLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUMzQixNQUFNLFdBQVcsR0FBc0IsRUFBRSxDQUFDO0lBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxZQUFZ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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { Skill } from
|
|
1
|
+
import type { Skill } from './types.js';
|
|
2
2
|
export declare function formatSkillsForSystemPrompt(skills: Skill[]): string;
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
export function formatSkillsForSystemPrompt(skills) {
|
|
2
2
|
const visibleSkills = skills.filter((skill) => !skill.disableModelInvocation);
|
|
3
3
|
if (visibleSkills.length === 0)
|
|
4
|
-
return
|
|
4
|
+
return '';
|
|
5
5
|
const lines = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
'The following skills provide specialized instructions for specific tasks.',
|
|
7
|
+
'Read the full skill file when the task matches its description.',
|
|
8
|
+
'When a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.',
|
|
9
|
+
'',
|
|
10
|
+
'<available_skills>',
|
|
11
11
|
];
|
|
12
12
|
for (const skill of visibleSkills) {
|
|
13
|
-
lines.push(
|
|
13
|
+
lines.push(' <skill>');
|
|
14
14
|
lines.push(` <name>${escapeXml(skill.name)}</name>`);
|
|
15
15
|
lines.push(` <description>${escapeXml(skill.description)}</description>`);
|
|
16
16
|
lines.push(` <location>${escapeXml(skill.filePath)}</location>`);
|
|
17
|
-
lines.push(
|
|
17
|
+
lines.push(' </skill>');
|
|
18
18
|
}
|
|
19
|
-
lines.push(
|
|
20
|
-
return lines.join(
|
|
19
|
+
lines.push('</available_skills>');
|
|
20
|
+
return lines.join('\n');
|
|
21
21
|
}
|
|
22
22
|
function escapeXml(value) {
|
|
23
23
|
return value
|
|
24
|
-
.replace(/&/g,
|
|
25
|
-
.replace(/</g,
|
|
26
|
-
.replace(/>/g,
|
|
27
|
-
.replace(/"/g,
|
|
28
|
-
.replace(/'/g,
|
|
24
|
+
.replace(/&/g, '&')
|
|
25
|
+
.replace(/</g, '<')
|
|
26
|
+
.replace(/>/g, '>')
|
|
27
|
+
.replace(/"/g, '"')
|
|
28
|
+
.replace(/'/g, ''');
|
|
29
29
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXByb21wdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYWdlbnQtY29yZS9oYXJuZXNzL3N5c3RlbS1wcm9tcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQWU7SUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM5RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRTFDLE1BQU0sS0FBSyxHQUFHO1FBQ1osMkVBQTJFO1FBQzNFLGlFQUFpRTtRQUNqRSw4S0FBOEs7UUFDOUssRUFBRTtRQUNGLG9CQUFvQjtLQUNyQixDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsSUFBSSxDQUNSLG9CQUFvQixTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDakUsQ0FBQztRQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDOUIsT0FBTyxLQUFLO1NBQ1QsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM3QixDQUFDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ImageContent, Model, SimpleStreamOptions, TextContent, Transport } from
|
|
2
|
-
import type { QueueMode } from
|
|
3
|
-
import type { AgentEvent, AgentMessage, AgentTool, ThinkingLevel } from
|
|
4
|
-
import type { Session } from
|
|
1
|
+
import type { ImageContent, Model, SimpleStreamOptions, TextContent, Transport } from '@earendil-works/pi-ai';
|
|
2
|
+
import type { QueueMode } from '../agent.js';
|
|
3
|
+
import type { AgentEvent, AgentMessage, AgentTool, ThinkingLevel } from '../index.js';
|
|
4
|
+
import type { Session } from './session/session.js';
|
|
5
5
|
/**
|
|
6
6
|
* Skill loaded from a `SKILL.md` file or provided by an application.
|
|
7
7
|
*
|
|
@@ -49,21 +49,21 @@ export interface AgentHarnessStreamOptions {
|
|
|
49
49
|
/** Additional request headers merged with auth and lifecycle headers. */
|
|
50
50
|
headers?: Record<string, string>;
|
|
51
51
|
/** Provider metadata forwarded with requests. */
|
|
52
|
-
metadata?: SimpleStreamOptions[
|
|
52
|
+
metadata?: SimpleStreamOptions['metadata'];
|
|
53
53
|
/** Provider cache retention hint. */
|
|
54
|
-
cacheRetention?: SimpleStreamOptions[
|
|
54
|
+
cacheRetention?: SimpleStreamOptions['cacheRetention'];
|
|
55
55
|
}
|
|
56
56
|
/** Per-request stream option patch returned by provider hooks. */
|
|
57
|
-
export interface AgentHarnessStreamOptionsPatch extends Omit<Partial<AgentHarnessStreamOptions>,
|
|
57
|
+
export interface AgentHarnessStreamOptionsPatch extends Omit<Partial<AgentHarnessStreamOptions>, 'headers' | 'metadata'> {
|
|
58
58
|
/** Header patch. `undefined` values delete keys; explicit `headers: undefined` clears all headers. */
|
|
59
59
|
headers?: Record<string, string | undefined>;
|
|
60
60
|
/** Metadata patch. `undefined` values delete keys; explicit `metadata: undefined` clears all metadata. */
|
|
61
61
|
metadata?: Record<string, unknown | undefined>;
|
|
62
62
|
}
|
|
63
63
|
/** Kind of filesystem object as addressed by an {@link ExecutionEnv}. Symlinks are not followed automatically. */
|
|
64
|
-
export type FileKind =
|
|
64
|
+
export type FileKind = 'file' | 'directory' | 'symlink';
|
|
65
65
|
/** Stable, backend-independent file error codes thrown by {@link ExecutionEnv} file operations. */
|
|
66
|
-
export type FileErrorCode =
|
|
66
|
+
export type FileErrorCode = 'not_found' | 'permission_denied' | 'not_directory' | 'is_directory' | 'invalid' | 'not_supported' | 'unknown';
|
|
67
67
|
/** Error thrown by {@link ExecutionEnv} file operations. */
|
|
68
68
|
export declare class FileError extends Error {
|
|
69
69
|
/** Backend-independent error code. */
|
|
@@ -161,20 +161,20 @@ export interface SessionTreeEntryBase {
|
|
|
161
161
|
timestamp: string;
|
|
162
162
|
}
|
|
163
163
|
export interface MessageEntry extends SessionTreeEntryBase {
|
|
164
|
-
type:
|
|
164
|
+
type: 'message';
|
|
165
165
|
message: AgentMessage;
|
|
166
166
|
}
|
|
167
167
|
export interface ThinkingLevelChangeEntry extends SessionTreeEntryBase {
|
|
168
|
-
type:
|
|
168
|
+
type: 'thinking_level_change';
|
|
169
169
|
thinkingLevel: string;
|
|
170
170
|
}
|
|
171
171
|
export interface ModelChangeEntry extends SessionTreeEntryBase {
|
|
172
|
-
type:
|
|
172
|
+
type: 'model_change';
|
|
173
173
|
provider: string;
|
|
174
174
|
modelId: string;
|
|
175
175
|
}
|
|
176
176
|
export interface CompactionEntry<T = unknown> extends SessionTreeEntryBase {
|
|
177
|
-
type:
|
|
177
|
+
type: 'compaction';
|
|
178
178
|
summary: string;
|
|
179
179
|
firstKeptEntryId: string;
|
|
180
180
|
tokensBefore: number;
|
|
@@ -182,31 +182,31 @@ export interface CompactionEntry<T = unknown> extends SessionTreeEntryBase {
|
|
|
182
182
|
fromHook?: boolean;
|
|
183
183
|
}
|
|
184
184
|
export interface BranchSummaryEntry<T = unknown> extends SessionTreeEntryBase {
|
|
185
|
-
type:
|
|
185
|
+
type: 'branch_summary';
|
|
186
186
|
fromId: string;
|
|
187
187
|
summary: string;
|
|
188
188
|
details?: T;
|
|
189
189
|
fromHook?: boolean;
|
|
190
190
|
}
|
|
191
191
|
export interface CustomEntry<T = unknown> extends SessionTreeEntryBase {
|
|
192
|
-
type:
|
|
192
|
+
type: 'custom';
|
|
193
193
|
customType: string;
|
|
194
194
|
data?: T;
|
|
195
195
|
}
|
|
196
196
|
export interface CustomMessageEntry<T = unknown> extends SessionTreeEntryBase {
|
|
197
|
-
type:
|
|
197
|
+
type: 'custom_message';
|
|
198
198
|
customType: string;
|
|
199
199
|
content: string | (TextContent | ImageContent)[];
|
|
200
200
|
details?: T;
|
|
201
201
|
display: boolean;
|
|
202
202
|
}
|
|
203
203
|
export interface LabelEntry extends SessionTreeEntryBase {
|
|
204
|
-
type:
|
|
204
|
+
type: 'label';
|
|
205
205
|
targetId: string;
|
|
206
206
|
label: string | undefined;
|
|
207
207
|
}
|
|
208
208
|
export interface SessionInfoEntry extends SessionTreeEntryBase {
|
|
209
|
-
type:
|
|
209
|
+
type: 'session_info';
|
|
210
210
|
name?: string;
|
|
211
211
|
}
|
|
212
212
|
export type SessionTreeEntry = MessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry;
|
|
@@ -234,20 +234,20 @@ export interface SessionStorage<TMetadata extends SessionMetadata = SessionMetad
|
|
|
234
234
|
createEntryId(): Promise<string>;
|
|
235
235
|
appendEntry(entry: SessionTreeEntry): Promise<void>;
|
|
236
236
|
getEntry(id: string): Promise<SessionTreeEntry | undefined>;
|
|
237
|
-
findEntries<TType extends SessionTreeEntry[
|
|
237
|
+
findEntries<TType extends SessionTreeEntry['type']>(type: TType): Promise<Array<Extract<SessionTreeEntry, {
|
|
238
238
|
type: TType;
|
|
239
239
|
}>>>;
|
|
240
240
|
getLabel(id: string): Promise<string | undefined>;
|
|
241
241
|
getPathToRoot(leafId: string | null): Promise<SessionTreeEntry[]>;
|
|
242
242
|
getEntries(): Promise<SessionTreeEntry[]>;
|
|
243
243
|
}
|
|
244
|
-
export type { Session } from
|
|
244
|
+
export type { Session } from './session/session.js';
|
|
245
245
|
export interface SessionCreateOptions {
|
|
246
246
|
id?: string;
|
|
247
247
|
}
|
|
248
248
|
export interface SessionForkOptions {
|
|
249
249
|
entryId?: string;
|
|
250
|
-
position?:
|
|
250
|
+
position?: 'before' | 'at';
|
|
251
251
|
id?: string;
|
|
252
252
|
}
|
|
253
253
|
export interface SessionRepo<TMetadata extends SessionMetadata = SessionMetadata, TCreateOptions extends SessionCreateOptions = SessionCreateOptions, TListOptions = void> {
|
|
@@ -266,62 +266,62 @@ export interface JsonlSessionListOptions {
|
|
|
266
266
|
}
|
|
267
267
|
export interface JsonlSessionRepoApi extends SessionRepo<JsonlSessionMetadata, JsonlSessionCreateOptions, JsonlSessionListOptions> {
|
|
268
268
|
}
|
|
269
|
-
export type AgentHarnessPhase =
|
|
270
|
-
export type PendingSessionWrite = SessionTreeEntry extends infer TEntry ? TEntry extends SessionTreeEntry ? Omit<TEntry,
|
|
269
|
+
export type AgentHarnessPhase = 'idle' | 'turn' | 'compaction' | 'branch_summary' | 'retry';
|
|
270
|
+
export type PendingSessionWrite = SessionTreeEntry extends infer TEntry ? TEntry extends SessionTreeEntry ? Omit<TEntry, 'id' | 'parentId' | 'timestamp'> : never : never;
|
|
271
271
|
export interface QueueUpdateEvent {
|
|
272
|
-
type:
|
|
272
|
+
type: 'queue_update';
|
|
273
273
|
steer: AgentMessage[];
|
|
274
274
|
followUp: AgentMessage[];
|
|
275
275
|
nextTurn: AgentMessage[];
|
|
276
276
|
}
|
|
277
277
|
export interface SavePointEvent {
|
|
278
|
-
type:
|
|
278
|
+
type: 'save_point';
|
|
279
279
|
hadPendingMutations: boolean;
|
|
280
280
|
}
|
|
281
281
|
export interface AbortEvent {
|
|
282
|
-
type:
|
|
282
|
+
type: 'abort';
|
|
283
283
|
clearedSteer: AgentMessage[];
|
|
284
284
|
clearedFollowUp: AgentMessage[];
|
|
285
285
|
}
|
|
286
286
|
export interface SettledEvent {
|
|
287
|
-
type:
|
|
287
|
+
type: 'settled';
|
|
288
288
|
nextTurnCount: number;
|
|
289
289
|
}
|
|
290
290
|
export interface BeforeAgentStartEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
|
|
291
|
-
type:
|
|
291
|
+
type: 'before_agent_start';
|
|
292
292
|
prompt: string;
|
|
293
293
|
images?: ImageContent[];
|
|
294
294
|
systemPrompt: string;
|
|
295
295
|
resources: AgentHarnessResources<TSkill, TPromptTemplate>;
|
|
296
296
|
}
|
|
297
297
|
export interface ContextEvent {
|
|
298
|
-
type:
|
|
298
|
+
type: 'context';
|
|
299
299
|
messages: AgentMessage[];
|
|
300
300
|
}
|
|
301
301
|
export interface BeforeProviderRequestEvent {
|
|
302
|
-
type:
|
|
302
|
+
type: 'before_provider_request';
|
|
303
303
|
model: Model<any>;
|
|
304
304
|
sessionId: string;
|
|
305
305
|
streamOptions: AgentHarnessStreamOptions;
|
|
306
306
|
}
|
|
307
307
|
export interface BeforeProviderPayloadEvent {
|
|
308
|
-
type:
|
|
308
|
+
type: 'before_provider_payload';
|
|
309
309
|
model: Model<any>;
|
|
310
310
|
payload: unknown;
|
|
311
311
|
}
|
|
312
312
|
export interface AfterProviderResponseEvent {
|
|
313
|
-
type:
|
|
313
|
+
type: 'after_provider_response';
|
|
314
314
|
status: number;
|
|
315
315
|
headers: Record<string, string>;
|
|
316
316
|
}
|
|
317
317
|
export interface ToolCallEvent {
|
|
318
|
-
type:
|
|
318
|
+
type: 'tool_call';
|
|
319
319
|
toolCallId: string;
|
|
320
320
|
toolName: string;
|
|
321
321
|
input: Record<string, unknown>;
|
|
322
322
|
}
|
|
323
323
|
export interface ToolResultEvent {
|
|
324
|
-
type:
|
|
324
|
+
type: 'tool_result';
|
|
325
325
|
toolCallId: string;
|
|
326
326
|
toolName: string;
|
|
327
327
|
input: Record<string, unknown>;
|
|
@@ -330,42 +330,42 @@ export interface ToolResultEvent {
|
|
|
330
330
|
isError: boolean;
|
|
331
331
|
}
|
|
332
332
|
export interface SessionBeforeCompactEvent {
|
|
333
|
-
type:
|
|
333
|
+
type: 'session_before_compact';
|
|
334
334
|
preparation: CompactionPreparation;
|
|
335
335
|
branchEntries: SessionTreeEntry[];
|
|
336
336
|
customInstructions?: string;
|
|
337
337
|
signal: AbortSignal;
|
|
338
338
|
}
|
|
339
339
|
export interface SessionCompactEvent {
|
|
340
|
-
type:
|
|
340
|
+
type: 'session_compact';
|
|
341
341
|
compactionEntry: CompactionEntry;
|
|
342
342
|
fromHook: boolean;
|
|
343
343
|
}
|
|
344
344
|
export interface SessionBeforeTreeEvent {
|
|
345
|
-
type:
|
|
345
|
+
type: 'session_before_tree';
|
|
346
346
|
preparation: TreePreparation;
|
|
347
347
|
signal: AbortSignal;
|
|
348
348
|
}
|
|
349
349
|
export interface SessionTreeEvent {
|
|
350
|
-
type:
|
|
350
|
+
type: 'session_tree';
|
|
351
351
|
newLeafId: string | null;
|
|
352
352
|
oldLeafId: string | null;
|
|
353
353
|
summaryEntry?: BranchSummaryEntry;
|
|
354
354
|
fromHook?: boolean;
|
|
355
355
|
}
|
|
356
356
|
export interface ModelSelectEvent {
|
|
357
|
-
type:
|
|
357
|
+
type: 'model_select';
|
|
358
358
|
model: Model<any>;
|
|
359
359
|
previousModel: Model<any> | undefined;
|
|
360
|
-
source:
|
|
360
|
+
source: 'set' | 'restore';
|
|
361
361
|
}
|
|
362
362
|
export interface ThinkingLevelSelectEvent {
|
|
363
|
-
type:
|
|
363
|
+
type: 'thinking_level_select';
|
|
364
364
|
level: ThinkingLevel;
|
|
365
365
|
previousLevel: ThinkingLevel;
|
|
366
366
|
}
|
|
367
367
|
export interface ResourcesUpdateEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
|
|
368
|
-
type:
|
|
368
|
+
type: 'resources_update';
|
|
369
369
|
resources: AgentHarnessResources<TSkill, TPromptTemplate>;
|
|
370
370
|
previousResources: AgentHarnessResources<TSkill, TPromptTemplate>;
|
|
371
371
|
}
|
|
@@ -521,4 +521,4 @@ export interface AgentHarnessOptions<TSkill extends Skill = Skill, TPromptTempla
|
|
|
521
521
|
steeringMode?: QueueMode;
|
|
522
522
|
followUpMode?: QueueMode;
|
|
523
523
|
}
|
|
524
|
-
export type { AgentHarness } from
|
|
524
|
+
export type { AgentHarness } from './agent-harness.js';
|