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.
Files changed (111) hide show
  1. package/build/main/index.d.ts +1 -0
  2. package/build/main/index.js +2 -1
  3. package/build/main/lib/PSAI.d.ts +11 -2
  4. package/build/main/lib/PSAI.js +145 -28
  5. package/build/main/lib/agent-core/agent-loop.d.ts +2 -2
  6. package/build/main/lib/agent-core/agent-loop.js +69 -65
  7. package/build/main/lib/agent-core/agent.d.ts +8 -8
  8. package/build/main/lib/agent-core/agent.js +61 -44
  9. package/build/main/lib/agent-core/harness/agent-harness.d.ts +4 -4
  10. package/build/main/lib/agent-core/harness/agent-harness.js +156 -112
  11. package/build/main/lib/agent-core/harness/compaction/branch-summarization.d.ts +5 -5
  12. package/build/main/lib/agent-core/harness/compaction/branch-summarization.js +31 -28
  13. package/build/main/lib/agent-core/harness/compaction/compaction.d.ts +5 -5
  14. package/build/main/lib/agent-core/harness/compaction/compaction.js +99 -78
  15. package/build/main/lib/agent-core/harness/compaction/utils.d.ts +2 -2
  16. package/build/main/lib/agent-core/harness/compaction/utils.js +30 -30
  17. package/build/main/lib/agent-core/harness/env/nodejs.d.ts +1 -1
  18. package/build/main/lib/agent-core/harness/env/nodejs.js +80 -75
  19. package/build/main/lib/agent-core/harness/execution-env.d.ts +3 -3
  20. package/build/main/lib/agent-core/harness/execution-env.js +3 -3
  21. package/build/main/lib/agent-core/harness/messages.d.ts +7 -7
  22. package/build/main/lib/agent-core/harness/messages.js +36 -22
  23. package/build/main/lib/agent-core/harness/prompt-templates.d.ts +2 -2
  24. package/build/main/lib/agent-core/harness/prompt-templates.js +31 -27
  25. package/build/main/lib/agent-core/harness/session/repo/jsonl.d.ts +2 -2
  26. package/build/main/lib/agent-core/harness/session/repo/jsonl.js +17 -11
  27. package/build/main/lib/agent-core/harness/session/repo/memory.d.ts +2 -2
  28. package/build/main/lib/agent-core/harness/session/repo/memory.js +8 -4
  29. package/build/main/lib/agent-core/harness/session/repo/shared.d.ts +3 -3
  30. package/build/main/lib/agent-core/harness/session/repo/shared.js +5 -5
  31. package/build/main/lib/agent-core/harness/session/session.d.ts +3 -3
  32. package/build/main/lib/agent-core/harness/session/session.js +26 -23
  33. package/build/main/lib/agent-core/harness/session/storage/jsonl.d.ts +2 -2
  34. package/build/main/lib/agent-core/harness/session/storage/jsonl.js +11 -11
  35. package/build/main/lib/agent-core/harness/session/storage/memory.d.ts +2 -2
  36. package/build/main/lib/agent-core/harness/session/storage/memory.js +10 -6
  37. package/build/main/lib/agent-core/harness/skills.d.ts +2 -2
  38. package/build/main/lib/agent-core/harness/skills.js +55 -48
  39. package/build/main/lib/agent-core/harness/system-prompt.d.ts +1 -1
  40. package/build/main/lib/agent-core/harness/system-prompt.js +16 -16
  41. package/build/main/lib/agent-core/harness/types.d.ts +43 -43
  42. package/build/main/lib/agent-core/harness/types.js +2 -2
  43. package/build/main/lib/agent-core/harness/utils/shell-output.d.ts +2 -2
  44. package/build/main/lib/agent-core/harness/utils/shell-output.js +18 -14
  45. package/build/main/lib/agent-core/harness/utils/truncate.d.ts +1 -1
  46. package/build/main/lib/agent-core/harness/utils/truncate.js +27 -24
  47. package/build/main/lib/agent-core/index.d.ts +19 -19
  48. package/build/main/lib/agent-core/index.js +20 -20
  49. package/build/main/lib/agent-core/proxy.d.ts +18 -18
  50. package/build/main/lib/agent-core/proxy.js +77 -61
  51. package/build/main/lib/agent-core/types.d.ts +16 -16
  52. package/build/main/lib/tools/PSRetrievalTool.d.ts +127 -0
  53. package/build/main/lib/tools/PSRetrievalTool.js +172 -0
  54. package/build/main/lib/utils/helpers.d.ts +34 -0
  55. package/build/main/lib/utils/helpers.js +280 -1
  56. package/build/module/index.d.ts +1 -0
  57. package/build/module/index.js +2 -1
  58. package/build/module/lib/PSAI.d.ts +11 -2
  59. package/build/module/lib/PSAI.js +145 -28
  60. package/build/module/lib/agent-core/agent-loop.d.ts +2 -2
  61. package/build/module/lib/agent-core/agent-loop.js +69 -65
  62. package/build/module/lib/agent-core/agent.d.ts +8 -8
  63. package/build/module/lib/agent-core/agent.js +61 -44
  64. package/build/module/lib/agent-core/harness/agent-harness.d.ts +4 -4
  65. package/build/module/lib/agent-core/harness/agent-harness.js +156 -112
  66. package/build/module/lib/agent-core/harness/compaction/branch-summarization.d.ts +5 -5
  67. package/build/module/lib/agent-core/harness/compaction/branch-summarization.js +31 -28
  68. package/build/module/lib/agent-core/harness/compaction/compaction.d.ts +5 -5
  69. package/build/module/lib/agent-core/harness/compaction/compaction.js +99 -78
  70. package/build/module/lib/agent-core/harness/compaction/utils.d.ts +2 -2
  71. package/build/module/lib/agent-core/harness/compaction/utils.js +30 -30
  72. package/build/module/lib/agent-core/harness/env/nodejs.d.ts +1 -1
  73. package/build/module/lib/agent-core/harness/env/nodejs.js +80 -75
  74. package/build/module/lib/agent-core/harness/execution-env.d.ts +3 -3
  75. package/build/module/lib/agent-core/harness/execution-env.js +3 -3
  76. package/build/module/lib/agent-core/harness/messages.d.ts +7 -7
  77. package/build/module/lib/agent-core/harness/messages.js +36 -22
  78. package/build/module/lib/agent-core/harness/prompt-templates.d.ts +2 -2
  79. package/build/module/lib/agent-core/harness/prompt-templates.js +31 -27
  80. package/build/module/lib/agent-core/harness/session/repo/jsonl.d.ts +2 -2
  81. package/build/module/lib/agent-core/harness/session/repo/jsonl.js +17 -11
  82. package/build/module/lib/agent-core/harness/session/repo/memory.d.ts +2 -2
  83. package/build/module/lib/agent-core/harness/session/repo/memory.js +8 -4
  84. package/build/module/lib/agent-core/harness/session/repo/shared.d.ts +3 -3
  85. package/build/module/lib/agent-core/harness/session/repo/shared.js +5 -5
  86. package/build/module/lib/agent-core/harness/session/session.d.ts +3 -3
  87. package/build/module/lib/agent-core/harness/session/session.js +26 -23
  88. package/build/module/lib/agent-core/harness/session/storage/jsonl.d.ts +2 -2
  89. package/build/module/lib/agent-core/harness/session/storage/jsonl.js +11 -11
  90. package/build/module/lib/agent-core/harness/session/storage/memory.d.ts +2 -2
  91. package/build/module/lib/agent-core/harness/session/storage/memory.js +10 -6
  92. package/build/module/lib/agent-core/harness/skills.d.ts +2 -2
  93. package/build/module/lib/agent-core/harness/skills.js +55 -48
  94. package/build/module/lib/agent-core/harness/system-prompt.d.ts +1 -1
  95. package/build/module/lib/agent-core/harness/system-prompt.js +16 -16
  96. package/build/module/lib/agent-core/harness/types.d.ts +43 -43
  97. package/build/module/lib/agent-core/harness/types.js +2 -2
  98. package/build/module/lib/agent-core/harness/utils/shell-output.d.ts +2 -2
  99. package/build/module/lib/agent-core/harness/utils/shell-output.js +18 -14
  100. package/build/module/lib/agent-core/harness/utils/truncate.d.ts +1 -1
  101. package/build/module/lib/agent-core/harness/utils/truncate.js +27 -24
  102. package/build/module/lib/agent-core/index.d.ts +19 -19
  103. package/build/module/lib/agent-core/index.js +20 -20
  104. package/build/module/lib/agent-core/proxy.d.ts +18 -18
  105. package/build/module/lib/agent-core/proxy.js +77 -61
  106. package/build/module/lib/agent-core/types.d.ts +16 -16
  107. package/build/module/lib/tools/PSRetrievalTool.d.ts +127 -0
  108. package/build/module/lib/tools/PSRetrievalTool.js +172 -0
  109. package/build/module/lib/utils/helpers.d.ts +34 -0
  110. package/build/module/lib/utils/helpers.js +280 -1
  111. package/package.json +1 -1
@@ -1,12 +1,14 @@
1
- import ignore from "ignore";
2
- import { parse } from "yaml";
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 = [".gitignore", ".ignore", ".fdignore"];
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 ? `${skillBlock}\n\n${additionalInstructions}` : skillBlock;
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)) !== "directory")
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({ skill: mapSkill ? mapSkill(skill, input.source) : skill, source: input.source });
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)) !== "directory")
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 !== "SKILL.md")
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 !== "file")
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(".") || entry.name === "node_modules")
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 === "directory" ? `${relPath}/` : relPath;
94
+ const ignorePath = kind === 'directory' ? `${relPath}/` : relPath;
90
95
  if (ignoreMatcher.ignores(ignorePath))
91
96
  continue;
92
- if (kind === "directory") {
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 !== "file" || !includeRootFiles || !entry.name.endsWith(".md"))
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 !== "file")
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("#") && !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: "warning", message: error, path: filePath });
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: "warning", message: error, path: filePath });
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["disable-model-invocation"] === true,
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 : "failed to parse skill file";
177
- diagnostics.push({ type: "warning", message, path: filePath });
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("name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)");
193
+ errors.push('name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)');
189
194
  }
190
- if (name.startsWith("-") || name.endsWith("-"))
191
- errors.push("name must not start or end with a hyphen");
192
- if (name.includes("--"))
193
- errors.push("name must not contain consecutive hyphens");
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("description is required");
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, "\n").replace(/\r/g, "\n");
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("\n---", 3);
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 === "file" || info.kind === "directory")
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 === "file" || target.kind === "directory" ? target.kind : undefined;
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(/\/+$/, "")}/${child.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 ? "/" : normalized.slice(0, slashIndex);
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 "./types.js";
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
- "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>",
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(" <skill>");
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(" </skill>");
17
+ lines.push(' </skill>');
18
18
  }
19
- lines.push("</available_skills>");
20
- return lines.join("\n");
19
+ lines.push('</available_skills>');
20
+ return lines.join('\n');
21
21
  }
22
22
  function escapeXml(value) {
23
23
  return value
24
- .replace(/&/g, "&amp;")
25
- .replace(/</g, "&lt;")
26
- .replace(/>/g, "&gt;")
27
- .replace(/"/g, "&quot;")
28
- .replace(/'/g, "&apos;");
24
+ .replace(/&/g, '&amp;')
25
+ .replace(/</g, '&lt;')
26
+ .replace(/>/g, '&gt;')
27
+ .replace(/"/g, '&quot;')
28
+ .replace(/'/g, '&apos;');
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXByb21wdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYWdlbnQtY29yZS9oYXJuZXNzL3N5c3RlbS1wcm9tcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQWU7SUFDMUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM5RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRTFDLE1BQU0sS0FBSyxHQUFHO1FBQ2IsMkVBQTJFO1FBQzNFLGlFQUFpRTtRQUNqRSw4S0FBOEs7UUFDOUssRUFBRTtRQUNGLG9CQUFvQjtLQUNwQixDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdFLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDL0IsT0FBTyxLQUFLO1NBQ1YsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMzQixDQUFDIn0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXByb21wdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvYWdlbnQtY29yZS9oYXJuZXNzL3N5c3RlbS1wcm9tcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQWU7SUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM5RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRTFDLE1BQU0sS0FBSyxHQUFHO1FBQ1osMkVBQTJFO1FBQzNFLGlFQUFpRTtRQUNqRSw4S0FBOEs7UUFDOUssRUFBRTtRQUNGLG9CQUFvQjtLQUNyQixDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsSUFBSSxDQUNSLG9CQUFvQixTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDakUsQ0FBQztRQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNsQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDOUIsT0FBTyxLQUFLO1NBQ1QsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM3QixDQUFDIn0=
@@ -1,7 +1,7 @@
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";
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["metadata"];
52
+ metadata?: SimpleStreamOptions['metadata'];
53
53
  /** Provider cache retention hint. */
54
- cacheRetention?: SimpleStreamOptions["cacheRetention"];
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>, "headers" | "metadata"> {
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 = "file" | "directory" | "symlink";
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 = "not_found" | "permission_denied" | "not_directory" | "is_directory" | "invalid" | "not_supported" | "unknown";
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: "message";
164
+ type: 'message';
165
165
  message: AgentMessage;
166
166
  }
167
167
  export interface ThinkingLevelChangeEntry extends SessionTreeEntryBase {
168
- type: "thinking_level_change";
168
+ type: 'thinking_level_change';
169
169
  thinkingLevel: string;
170
170
  }
171
171
  export interface ModelChangeEntry extends SessionTreeEntryBase {
172
- type: "model_change";
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: "compaction";
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: "branch_summary";
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: "custom";
192
+ type: 'custom';
193
193
  customType: string;
194
194
  data?: T;
195
195
  }
196
196
  export interface CustomMessageEntry<T = unknown> extends SessionTreeEntryBase {
197
- type: "custom_message";
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: "label";
204
+ type: 'label';
205
205
  targetId: string;
206
206
  label: string | undefined;
207
207
  }
208
208
  export interface SessionInfoEntry extends SessionTreeEntryBase {
209
- type: "session_info";
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["type"]>(type: TType): Promise<Array<Extract<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 "./session/session.js";
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?: "before" | "at";
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 = "idle" | "turn" | "compaction" | "branch_summary" | "retry";
270
- export type PendingSessionWrite = SessionTreeEntry extends infer TEntry ? TEntry extends SessionTreeEntry ? Omit<TEntry, "id" | "parentId" | "timestamp"> : never : never;
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: "queue_update";
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: "save_point";
278
+ type: 'save_point';
279
279
  hadPendingMutations: boolean;
280
280
  }
281
281
  export interface AbortEvent {
282
- type: "abort";
282
+ type: 'abort';
283
283
  clearedSteer: AgentMessage[];
284
284
  clearedFollowUp: AgentMessage[];
285
285
  }
286
286
  export interface SettledEvent {
287
- type: "settled";
287
+ type: 'settled';
288
288
  nextTurnCount: number;
289
289
  }
290
290
  export interface BeforeAgentStartEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
291
- type: "before_agent_start";
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: "context";
298
+ type: 'context';
299
299
  messages: AgentMessage[];
300
300
  }
301
301
  export interface BeforeProviderRequestEvent {
302
- type: "before_provider_request";
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: "before_provider_payload";
308
+ type: 'before_provider_payload';
309
309
  model: Model<any>;
310
310
  payload: unknown;
311
311
  }
312
312
  export interface AfterProviderResponseEvent {
313
- type: "after_provider_response";
313
+ type: 'after_provider_response';
314
314
  status: number;
315
315
  headers: Record<string, string>;
316
316
  }
317
317
  export interface ToolCallEvent {
318
- type: "tool_call";
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: "tool_result";
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: "session_before_compact";
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: "session_compact";
340
+ type: 'session_compact';
341
341
  compactionEntry: CompactionEntry;
342
342
  fromHook: boolean;
343
343
  }
344
344
  export interface SessionBeforeTreeEvent {
345
- type: "session_before_tree";
345
+ type: 'session_before_tree';
346
346
  preparation: TreePreparation;
347
347
  signal: AbortSignal;
348
348
  }
349
349
  export interface SessionTreeEvent {
350
- type: "session_tree";
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: "model_select";
357
+ type: 'model_select';
358
358
  model: Model<any>;
359
359
  previousModel: Model<any> | undefined;
360
- source: "set" | "restore";
360
+ source: 'set' | 'restore';
361
361
  }
362
362
  export interface ThinkingLevelSelectEvent {
363
- type: "thinking_level_select";
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: "resources_update";
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 "./agent-harness.js";
524
+ export type { AgentHarness } from './agent-harness.js';