bernard-agent 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +80 -44
  2. package/dist/agent.d.ts +14 -3
  3. package/dist/agent.js +228 -38
  4. package/dist/agent.js.map +1 -1
  5. package/dist/builtin-specialists/correction-agent.json +32 -0
  6. package/dist/builtin-specialists/file-wrapper.json +43 -0
  7. package/dist/builtin-specialists/shell-wrapper.json +50 -0
  8. package/dist/builtin-specialists/specialist-creator.json +32 -0
  9. package/dist/builtin-specialists/web-wrapper.json +38 -0
  10. package/dist/candidate-bootstrap.d.ts +18 -0
  11. package/dist/candidate-bootstrap.js +61 -0
  12. package/dist/candidate-bootstrap.js.map +1 -0
  13. package/dist/config.d.ts +126 -10
  14. package/dist/config.js +222 -45
  15. package/dist/config.js.map +1 -1
  16. package/dist/context.js +23 -6
  17. package/dist/context.js.map +1 -1
  18. package/dist/correction-candidates.d.ts +54 -0
  19. package/dist/correction-candidates.js +138 -0
  20. package/dist/correction-candidates.js.map +1 -0
  21. package/dist/correction.d.ts +67 -0
  22. package/dist/correction.js +138 -0
  23. package/dist/correction.js.map +1 -0
  24. package/dist/critic.js +2 -1
  25. package/dist/critic.js.map +1 -1
  26. package/dist/cron/notes-store.d.ts +41 -0
  27. package/dist/cron/notes-store.js +134 -0
  28. package/dist/cron/notes-store.js.map +1 -0
  29. package/dist/cron/runner.js +25 -3
  30. package/dist/cron/runner.js.map +1 -1
  31. package/dist/cron/scoped-notes-tools.d.ts +24 -0
  32. package/dist/cron/scoped-notes-tools.js +50 -0
  33. package/dist/cron/scoped-notes-tools.js.map +1 -0
  34. package/dist/custom-providers.d.ts +80 -0
  35. package/dist/custom-providers.js +238 -0
  36. package/dist/custom-providers.js.map +1 -0
  37. package/dist/fs-utils.d.ts +2 -0
  38. package/dist/fs-utils.js +44 -0
  39. package/dist/fs-utils.js.map +1 -0
  40. package/dist/history.js +3 -1
  41. package/dist/history.js.map +1 -1
  42. package/dist/image.d.ts +59 -0
  43. package/dist/image.js +228 -0
  44. package/dist/image.js.map +1 -0
  45. package/dist/index.js +72 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/mcp.js +1 -1
  48. package/dist/mcp.js.map +1 -1
  49. package/dist/memory.d.ts +13 -0
  50. package/dist/memory.js +45 -4
  51. package/dist/memory.js.map +1 -1
  52. package/dist/menu.d.ts +97 -0
  53. package/dist/menu.js +338 -0
  54. package/dist/menu.js.map +1 -0
  55. package/dist/os-info.d.ts +22 -0
  56. package/dist/os-info.js +111 -0
  57. package/dist/os-info.js.map +1 -0
  58. package/dist/output.d.ts +35 -1
  59. package/dist/output.js +256 -45
  60. package/dist/output.js.map +1 -1
  61. package/dist/pac.d.ts +14 -2
  62. package/dist/pac.js +5 -5
  63. package/dist/pac.js.map +1 -1
  64. package/dist/paths.d.ts +5 -0
  65. package/dist/paths.js +6 -1
  66. package/dist/paths.js.map +1 -1
  67. package/dist/plan-store.d.ts +47 -0
  68. package/dist/plan-store.js +94 -0
  69. package/dist/plan-store.js.map +1 -0
  70. package/dist/prompt-rewriter.d.ts +29 -0
  71. package/dist/prompt-rewriter.js +155 -0
  72. package/dist/prompt-rewriter.js.map +1 -0
  73. package/dist/providers/index.d.ts +56 -4
  74. package/dist/providers/index.js +86 -5
  75. package/dist/providers/index.js.map +1 -1
  76. package/dist/providers/profiles.d.ts +37 -0
  77. package/dist/providers/profiles.js +110 -0
  78. package/dist/providers/profiles.js.map +1 -0
  79. package/dist/providers/types.d.ts +11 -2
  80. package/dist/providers/types.js +3 -0
  81. package/dist/providers/types.js.map +1 -1
  82. package/dist/rag-query.js +15 -1
  83. package/dist/rag-query.js.map +1 -1
  84. package/dist/react.d.ts +38 -0
  85. package/dist/react.js +116 -0
  86. package/dist/react.js.map +1 -0
  87. package/dist/reasoning-log.d.ts +30 -0
  88. package/dist/reasoning-log.js +102 -0
  89. package/dist/reasoning-log.js.map +1 -0
  90. package/dist/reference-resolver.d.ts +47 -0
  91. package/dist/reference-resolver.js +316 -0
  92. package/dist/reference-resolver.js.map +1 -0
  93. package/dist/reference-tool-lookup.d.ts +37 -0
  94. package/dist/reference-tool-lookup.js +318 -0
  95. package/dist/reference-tool-lookup.js.map +1 -0
  96. package/dist/repl.js +1038 -371
  97. package/dist/repl.js.map +1 -1
  98. package/dist/setup.js +2 -1
  99. package/dist/setup.js.map +1 -1
  100. package/dist/specialist-detector.js +2 -1
  101. package/dist/specialist-detector.js.map +1 -1
  102. package/dist/specialists.d.ts +74 -3
  103. package/dist/specialists.js +152 -20
  104. package/dist/specialists.js.map +1 -1
  105. package/dist/structured-output.d.ts +58 -0
  106. package/dist/structured-output.js +138 -0
  107. package/dist/structured-output.js.map +1 -0
  108. package/dist/theme.d.ts +2 -0
  109. package/dist/theme.js +18 -12
  110. package/dist/theme.js.map +1 -1
  111. package/dist/tool-call-repair.d.ts +29 -0
  112. package/dist/tool-call-repair.js +99 -0
  113. package/dist/tool-call-repair.js.map +1 -0
  114. package/dist/tool-profiles.d.ts +70 -0
  115. package/dist/tool-profiles.js +385 -0
  116. package/dist/tool-profiles.js.map +1 -0
  117. package/dist/tools/activity-summary.d.ts +15 -0
  118. package/dist/tools/activity-summary.js +44 -0
  119. package/dist/tools/activity-summary.js.map +1 -0
  120. package/dist/tools/ask-user.d.ts +49 -0
  121. package/dist/tools/ask-user.js +52 -0
  122. package/dist/tools/ask-user.js.map +1 -0
  123. package/dist/tools/augment.d.ts +17 -0
  124. package/dist/tools/augment.js +102 -0
  125. package/dist/tools/augment.js.map +1 -0
  126. package/dist/tools/cron-logs.js +7 -0
  127. package/dist/tools/cron-logs.js.map +1 -1
  128. package/dist/tools/cron-notes.d.ts +52 -0
  129. package/dist/tools/cron-notes.js +105 -0
  130. package/dist/tools/cron-notes.js.map +1 -0
  131. package/dist/tools/datetime.d.ts +7 -0
  132. package/dist/tools/datetime.js +29 -3
  133. package/dist/tools/datetime.js.map +1 -1
  134. package/dist/tools/evaluate.d.ts +20 -0
  135. package/dist/tools/evaluate.js +29 -0
  136. package/dist/tools/evaluate.js.map +1 -0
  137. package/dist/tools/index.js +4 -0
  138. package/dist/tools/index.js.map +1 -1
  139. package/dist/tools/mcp.d.ts +3 -3
  140. package/dist/tools/plan.d.ts +81 -0
  141. package/dist/tools/plan.js +108 -0
  142. package/dist/tools/plan.js.map +1 -0
  143. package/dist/tools/result-cap.d.ts +24 -0
  144. package/dist/tools/result-cap.js +44 -0
  145. package/dist/tools/result-cap.js.map +1 -0
  146. package/dist/tools/routine.d.ts +3 -3
  147. package/dist/tools/shell.d.ts +14 -1
  148. package/dist/tools/shell.js +86 -4
  149. package/dist/tools/shell.js.map +1 -1
  150. package/dist/tools/specialist-run.d.ts +5 -3
  151. package/dist/tools/specialist-run.js +115 -24
  152. package/dist/tools/specialist-run.js.map +1 -1
  153. package/dist/tools/specialist.d.ts +83 -3
  154. package/dist/tools/specialist.js +83 -3
  155. package/dist/tools/specialist.js.map +1 -1
  156. package/dist/tools/subagent.js +32 -14
  157. package/dist/tools/subagent.js.map +1 -1
  158. package/dist/tools/task.d.ts +5 -5
  159. package/dist/tools/task.js +9 -42
  160. package/dist/tools/task.js.map +1 -1
  161. package/dist/tools/think.d.ts +18 -0
  162. package/dist/tools/think.js +25 -0
  163. package/dist/tools/think.js.map +1 -0
  164. package/dist/tools/tool-wrapper-run.d.ts +121 -0
  165. package/dist/tools/tool-wrapper-run.js +382 -0
  166. package/dist/tools/tool-wrapper-run.js.map +1 -0
  167. package/dist/tools/types.d.ts +28 -2
  168. package/dist/tools/web-search.d.ts +31 -0
  169. package/dist/tools/web-search.js +172 -0
  170. package/dist/tools/web-search.js.map +1 -0
  171. package/dist/tools/wrap-with-specialist.d.ts +55 -0
  172. package/dist/tools/wrap-with-specialist.js +137 -0
  173. package/dist/tools/wrap-with-specialist.js.map +1 -0
  174. package/package.json +2 -2
@@ -33,13 +33,64 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.SpecialistStore = void 0;
36
+ exports.SpecialistStore = exports.MAX_EXAMPLES_PER_LIST = void 0;
37
+ exports.getBuiltinSpecialistIds = getBuiltinSpecialistIds;
37
38
  const fs = __importStar(require("node:fs"));
38
39
  const path = __importStar(require("node:path"));
39
40
  const paths_js_1 = require("./paths.js");
40
41
  const reserved_names_js_1 = require("./reserved-names.js");
42
+ const fs_utils_js_1 = require("./fs-utils.js");
43
+ /** Maximum examples retained per list (oldest drop-off during correction updates). */
44
+ exports.MAX_EXAMPLES_PER_LIST = 10;
41
45
  const MAX_SPECIALISTS = 50;
42
46
  const ID_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,58}[a-z0-9])?$/;
47
+ /** Marker file that prevents re-seeding bundled specialists on every start. */
48
+ const SEED_MARKER = '.seeded-v1';
49
+ /**
50
+ * Locates the bundled `builtin-specialists` directory sitting next to the
51
+ * compiled/loaded `specialists.js` (or `.ts` under tsx). Returns `null` when
52
+ * running in an environment where the bundle was not deployed (e.g. certain
53
+ * test harnesses).
54
+ */
55
+ function findBuiltinSpecialistsDir() {
56
+ const candidate = path.join(__dirname, 'builtin-specialists');
57
+ try {
58
+ if (fs.statSync(candidate).isDirectory())
59
+ return candidate;
60
+ }
61
+ catch {
62
+ // fall through
63
+ }
64
+ return null;
65
+ }
66
+ let cachedBuiltinIds = null;
67
+ /**
68
+ * Returns the set of specialist IDs that ship bundled with Bernard. Used to
69
+ * distinguish seeded specialists from user-authored ones in the UI. Result is
70
+ * cached after the first call — the bundle is packaged alongside the binary
71
+ * and does not change at runtime.
72
+ */
73
+ function getBuiltinSpecialistIds() {
74
+ if (cachedBuiltinIds)
75
+ return cachedBuiltinIds;
76
+ const ids = new Set();
77
+ const bundledDir = findBuiltinSpecialistsDir();
78
+ if (!bundledDir) {
79
+ cachedBuiltinIds = ids;
80
+ return ids;
81
+ }
82
+ try {
83
+ for (const file of fs.readdirSync(bundledDir)) {
84
+ if (file.endsWith('.json'))
85
+ ids.add(file.replace(/\.json$/, ''));
86
+ }
87
+ }
88
+ catch {
89
+ // fall through with whatever we collected
90
+ }
91
+ cachedBuiltinIds = ids;
92
+ return ids;
93
+ }
43
94
  /**
44
95
  * Disk-backed store for named specialists (reusable expert profiles).
45
96
  *
@@ -49,6 +100,45 @@ const ID_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,58}[a-z0-9])?$/;
49
100
  class SpecialistStore {
50
101
  constructor() {
51
102
  fs.mkdirSync(paths_js_1.SPECIALISTS_DIR, { recursive: true });
103
+ this.seedBundledSpecialists();
104
+ }
105
+ /**
106
+ * Copies bundled specialists (shell-wrapper, file-wrapper, web-wrapper,
107
+ * correction-agent, specialist-creator) from the packaged `builtin-specialists`
108
+ * directory into the user's specialists dir on first run. A `.seeded-v1`
109
+ * marker prevents re-seeding on subsequent runs, so users can freely edit or
110
+ * delete the seeded files. Existing files with the same id are never
111
+ * overwritten.
112
+ */
113
+ seedBundledSpecialists() {
114
+ const markerPath = path.join(paths_js_1.SPECIALISTS_DIR, SEED_MARKER);
115
+ if (fs.existsSync(markerPath))
116
+ return;
117
+ const bundledDir = findBuiltinSpecialistsDir();
118
+ if (!bundledDir)
119
+ return;
120
+ try {
121
+ const files = fs.readdirSync(bundledDir).filter((f) => f.endsWith('.json'));
122
+ for (const file of files) {
123
+ const src = path.join(bundledDir, file);
124
+ const dest = path.join(paths_js_1.SPECIALISTS_DIR, file);
125
+ if (fs.existsSync(dest))
126
+ continue; // never overwrite user-edited copies
127
+ try {
128
+ const raw = fs.readFileSync(src, 'utf-8');
129
+ // Parse once to catch obviously corrupt bundle files before seeding.
130
+ JSON.parse(raw);
131
+ (0, fs_utils_js_1.atomicWriteFileSync)(dest, raw);
132
+ }
133
+ catch {
134
+ // skip individual bad files; continue seeding the rest
135
+ }
136
+ }
137
+ fs.writeFileSync(markerPath, new Date().toISOString(), 'utf-8');
138
+ }
139
+ catch {
140
+ // seed is best-effort; never block startup
141
+ }
52
142
  }
53
143
  /**
54
144
  * Validates a specialist ID.
@@ -105,27 +195,40 @@ class SpecialistStore {
105
195
  * @throws {Error} If the ID is invalid, reserved, already taken, or the max limit is reached.
106
196
  */
107
197
  create(id, name, description, systemPrompt, guidelines = [], provider, model) {
108
- const idError = this.validateId(id);
198
+ return this.createFull({ id, name, description, systemPrompt, guidelines, provider, model });
199
+ }
200
+ /**
201
+ * Creates a new specialist from a full input object, supporting tool-wrapper
202
+ * fields (kind, targetTools, good/bad examples, structuredOutput).
203
+ * @throws {Error} If the ID is invalid, reserved, already taken, or the max limit is reached.
204
+ */
205
+ createFull(input) {
206
+ const idError = this.validateId(input.id);
109
207
  if (idError)
110
208
  throw new Error(idError);
111
- if (this.exists(id))
112
- throw new Error(`Specialist "${id}" already exists.`);
209
+ if (this.exists(input.id))
210
+ throw new Error(`Specialist "${input.id}" already exists.`);
113
211
  const count = this.list().length;
114
212
  if (count >= MAX_SPECIALISTS)
115
213
  throw new Error(`Maximum of ${MAX_SPECIALISTS} specialists reached.`);
116
214
  const now = new Date().toISOString();
117
215
  const specialist = {
118
- id,
119
- name,
120
- description,
121
- systemPrompt,
122
- guidelines,
123
- ...(provider !== undefined ? { provider } : {}),
124
- ...(model !== undefined ? { model } : {}),
216
+ id: input.id,
217
+ name: input.name,
218
+ description: input.description,
219
+ systemPrompt: input.systemPrompt,
220
+ guidelines: input.guidelines ?? [],
221
+ ...(input.provider !== undefined ? { provider: input.provider } : {}),
222
+ ...(input.model !== undefined ? { model: input.model } : {}),
223
+ ...(input.kind !== undefined ? { kind: input.kind } : {}),
224
+ ...(input.targetTools !== undefined ? { targetTools: input.targetTools } : {}),
225
+ ...(input.goodExamples !== undefined ? { goodExamples: input.goodExamples } : {}),
226
+ ...(input.badExamples !== undefined ? { badExamples: input.badExamples } : {}),
227
+ ...(input.structuredOutput !== undefined ? { structuredOutput: input.structuredOutput } : {}),
125
228
  createdAt: now,
126
229
  updatedAt: now,
127
230
  };
128
- this.atomicWrite(path.join(paths_js_1.SPECIALISTS_DIR, `${id}.json`), JSON.stringify(specialist, null, 2));
231
+ (0, fs_utils_js_1.atomicWriteFileSync)(path.join(paths_js_1.SPECIALISTS_DIR, `${input.id}.json`), JSON.stringify(specialist, null, 2));
129
232
  return specialist;
130
233
  }
131
234
  /**
@@ -163,10 +266,44 @@ class SpecialistStore {
163
266
  specialist.model = updates.model;
164
267
  }
165
268
  }
269
+ if (updates.kind !== undefined)
270
+ specialist.kind = updates.kind;
271
+ if (updates.targetTools !== undefined)
272
+ specialist.targetTools = updates.targetTools;
273
+ if (updates.goodExamples !== undefined)
274
+ specialist.goodExamples = updates.goodExamples;
275
+ if (updates.badExamples !== undefined)
276
+ specialist.badExamples = updates.badExamples;
277
+ if (updates.structuredOutput !== undefined)
278
+ specialist.structuredOutput = updates.structuredOutput;
166
279
  specialist.updatedAt = new Date().toISOString();
167
- this.atomicWrite(path.join(paths_js_1.SPECIALISTS_DIR, `${id}.json`), JSON.stringify(specialist, null, 2));
280
+ (0, fs_utils_js_1.atomicWriteFileSync)(path.join(paths_js_1.SPECIALISTS_DIR, `${id}.json`), JSON.stringify(specialist, null, 2));
168
281
  return specialist;
169
282
  }
283
+ /**
284
+ * Appends one good and one bad example to a specialist, dropping the oldest
285
+ * entries once the list exceeds {@link MAX_EXAMPLES_PER_LIST}. Used by the
286
+ * correction agent after a validated fix.
287
+ * @returns The updated specialist, or `undefined` if not found.
288
+ */
289
+ appendExamples(id, good, bad) {
290
+ const specialist = this.get(id);
291
+ if (!specialist)
292
+ return undefined;
293
+ const goodList = [...(specialist.goodExamples ?? [])];
294
+ const badList = [...(specialist.badExamples ?? [])];
295
+ if (good) {
296
+ goodList.push(good);
297
+ while (goodList.length > exports.MAX_EXAMPLES_PER_LIST)
298
+ goodList.shift();
299
+ }
300
+ if (bad) {
301
+ badList.push(bad);
302
+ while (badList.length > exports.MAX_EXAMPLES_PER_LIST)
303
+ badList.shift();
304
+ }
305
+ return this.update(id, { goodExamples: goodList, badExamples: badList });
306
+ }
170
307
  /** Removes a specialist by ID. Returns `true` if it existed and was deleted. */
171
308
  delete(id) {
172
309
  if (!ID_PATTERN.test(id))
@@ -179,20 +316,15 @@ class SpecialistStore {
179
316
  }
180
317
  /** Returns id + name + description + optional model info for all specialists, for system prompt injection. */
181
318
  getSummaries() {
182
- return this.list().map(({ id, name, description, provider, model }) => ({
319
+ return this.list().map(({ id, name, description, provider, model, kind }) => ({
183
320
  id,
184
321
  name,
185
322
  description,
186
323
  ...(provider !== undefined ? { provider } : {}),
187
324
  ...(model !== undefined ? { model } : {}),
325
+ ...(kind !== undefined ? { kind } : {}),
188
326
  }));
189
327
  }
190
- /** Writes data to a `.tmp` file then renames it into place for crash-safe persistence. */
191
- atomicWrite(filePath, data) {
192
- const tmp = filePath + '.tmp';
193
- fs.writeFileSync(tmp, data, 'utf-8');
194
- fs.renameSync(tmp, filePath);
195
- }
196
328
  }
197
329
  exports.SpecialistStore = SpecialistStore;
198
330
  //# sourceMappingURL=specialists.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"specialists.js","sourceRoot":"","sources":["../src/specialists.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specialists.js","sourceRoot":"","sources":["../src/specialists.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0HA,0DAiBC;AA3ID,4CAA8B;AAC9B,gDAAkC;AAClC,yCAA6C;AAC7C,2DAAqD;AACrD,+CAAoD;AAoDpD,sFAAsF;AACzE,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAkCxC,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,UAAU,GAAG,wCAAwC,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;;;;GAKG;AACH,SAAS,yBAAyB;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,SAAS,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAI,gBAAgB,GAAuB,IAAI,CAAC;AAEhD;;;;;GAKG;AACH,SAAgB,uBAAuB;IACrC,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,gBAAgB,GAAG,GAAG,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;IACD,gBAAgB,GAAG,GAAG,CAAC;IACvB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAa,eAAe;IAC1B;QACE,EAAE,CAAC,SAAS,CAAC,0BAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACK,sBAAsB;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO;QACtC,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,IAAI,CAAC,CAAC;gBAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,SAAS,CAAC,qCAAqC;gBACxE,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBAC1C,qEAAqE;oBACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAChB,IAAA,iCAAmB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,uDAAuD;gBACzD,CAAC;YACH,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,EAAE;YAAE,OAAO,gCAAgC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,+GAA+G,CAAC;QACzH,IAAI,kCAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,EAAE,+BAA+B,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mFAAmF;IACnF,IAAI;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,0BAAe,CAAC;YAAE,OAAO,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,0BAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAiB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,sEAAsE;IACtE,GAAG,CAAC,EAAU;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAe,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,MAAM,CACJ,EAAU,EACV,IAAY,EACZ,WAAmB,EACnB,YAAoB,EACpB,aAAuB,EAAE,EACzB,QAAiB,EACjB,KAAc;QAEd,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,KAA4B;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACjC,IAAI,KAAK,IAAI,eAAe;YAC1B,MAAM,IAAI,KAAK,CAAC,cAAc,eAAe,uBAAuB,CAAC,CAAC;QAExE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAe;YAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;YAClC,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAA,iCAAmB,EACjB,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CACpC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,EAAU,EAAE,OAA0B;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/D,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACpF,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACvF,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACjF,mEAAmE;QACnE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACzC,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;gBACzB,OAAO,UAAU,CAAC,KAAK,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC/D,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACpF,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACvF,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACpF,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACxC,UAAU,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACzD,UAAU,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,IAAA,iCAAmB,EACjB,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,GAAG,EAAE,OAAO,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CACpC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CACZ,EAAU,EACV,IAAwB,EACxB,GAA0B;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,QAAQ,CAAC,MAAM,GAAG,6BAAqB;gBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,OAAO,CAAC,MAAM,GAAG,6BAAqB;gBAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,gFAAgF;IAChF,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,0BAAe,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8GAA8G;IAC9G,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,EAAE;YACF,IAAI;YACJ,WAAW;YACX,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAnOD,0CAmOC"}
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Scans a string for the first balanced JSON object starting at `start`
4
+ * (which must point at a `{`). Returns the slice containing the object,
5
+ * or `undefined` if no balanced block is found.
6
+ *
7
+ * Respects string literals so braces inside quoted strings don't break depth.
8
+ */
9
+ export declare function extractJsonBlock(text: string, start: number): string | undefined;
10
+ /**
11
+ * Attempts to parse a JSON object from `text` and validate it with `schema`.
12
+ *
13
+ * Strategy:
14
+ * 1. Try `JSON.parse` on the trimmed input directly.
15
+ * 2. Otherwise scan for each top-level `{` and try bracket-counted extraction.
16
+ *
17
+ * @returns The validated object on success, or `undefined` if nothing parses.
18
+ */
19
+ export declare function parseStructuredOutput<T>(text: string, schema: z.ZodType<T>): T | undefined;
20
+ /**
21
+ * Minimal structured result emitted by tool-wrapper specialists.
22
+ *
23
+ * Intentionally narrow (no confidence scores — models are poor at calibrating
24
+ * those; see issue #106 discussion). `reasoning` is the most valuable field
25
+ * for debugging — it explains why each tool call was made.
26
+ */
27
+ export interface WrapperResult {
28
+ status: 'ok' | 'error';
29
+ result: unknown;
30
+ error?: string;
31
+ reasoning?: string[];
32
+ }
33
+ export declare const WrapperResultSchema: z.ZodObject<{
34
+ status: z.ZodEnum<["ok", "error"]>;
35
+ result: z.ZodAny;
36
+ error: z.ZodOptional<z.ZodString>;
37
+ reasoning: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ status: "error" | "ok";
40
+ reasoning?: string[] | undefined;
41
+ error?: string | undefined;
42
+ result?: any;
43
+ }, {
44
+ status: "error" | "ok";
45
+ reasoning?: string[] | undefined;
46
+ error?: string | undefined;
47
+ result?: any;
48
+ }>;
49
+ /**
50
+ * Wraps raw specialist text output into a {@link WrapperResult}. Missing or
51
+ * malformed JSON becomes a structured error (not silent success).
52
+ */
53
+ export declare function wrapWrapperResult(text: string): WrapperResult;
54
+ /**
55
+ * Rules appended to a tool-wrapper specialist's system prompt. Instructs the
56
+ * child to emit a JSON object as its final message.
57
+ */
58
+ export declare const STRUCTURED_OUTPUT_RULES = "\n\n## Output Format (STRICT)\n\nYour FINAL message MUST be a single valid JSON object with this shape and nothing else \u2014 no prose before or after, no markdown code fences:\n\n{\n \"status\": \"ok\" | \"error\",\n \"result\": <any valid JSON value representing the outcome>,\n \"error\": \"<short error message, only when status is 'error'>\",\n \"reasoning\": [\"<short rationale for each significant decision or tool call>\"]\n}\n\nRules:\n- Emit the JSON only once, as your last message.\n- `reasoning` is an array of short strings. One entry per significant tool call explaining WHY you chose it (not what it returned).\n- Never include confidence scores \u2014 the downstream pipeline ignores them.\n- If a tool call fails irrecoverably, set `status` to \"error\", put the cause in `error`, and still include your reasoning.";
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STRUCTURED_OUTPUT_RULES = exports.WrapperResultSchema = void 0;
4
+ exports.extractJsonBlock = extractJsonBlock;
5
+ exports.parseStructuredOutput = parseStructuredOutput;
6
+ exports.wrapWrapperResult = wrapWrapperResult;
7
+ const zod_1 = require("zod");
8
+ /**
9
+ * Scans a string for the first balanced JSON object starting at `start`
10
+ * (which must point at a `{`). Returns the slice containing the object,
11
+ * or `undefined` if no balanced block is found.
12
+ *
13
+ * Respects string literals so braces inside quoted strings don't break depth.
14
+ */
15
+ function extractJsonBlock(text, start) {
16
+ if (text[start] !== '{')
17
+ return undefined;
18
+ let depth = 0;
19
+ let inString = false;
20
+ let escaped = false;
21
+ for (let i = start; i < text.length; i++) {
22
+ const ch = text[i];
23
+ if (escaped) {
24
+ escaped = false;
25
+ continue;
26
+ }
27
+ if (ch === '\\' && inString) {
28
+ escaped = true;
29
+ continue;
30
+ }
31
+ if (ch === '"') {
32
+ inString = !inString;
33
+ continue;
34
+ }
35
+ if (inString)
36
+ continue;
37
+ if (ch === '{')
38
+ depth++;
39
+ else if (ch === '}') {
40
+ depth--;
41
+ if (depth === 0)
42
+ return text.slice(start, i + 1);
43
+ }
44
+ }
45
+ return undefined;
46
+ }
47
+ /**
48
+ * Attempts to parse a JSON object from `text` and validate it with `schema`.
49
+ *
50
+ * Strategy:
51
+ * 1. Try `JSON.parse` on the trimmed input directly.
52
+ * 2. Otherwise scan for each top-level `{` and try bracket-counted extraction.
53
+ *
54
+ * @returns The validated object on success, or `undefined` if nothing parses.
55
+ */
56
+ function parseStructuredOutput(text, schema) {
57
+ const trimmed = text.trim();
58
+ // 1. Direct parse
59
+ try {
60
+ const parsed = JSON.parse(trimmed);
61
+ const result = schema.safeParse(parsed);
62
+ if (result.success)
63
+ return result.data;
64
+ }
65
+ catch {
66
+ // fall through
67
+ }
68
+ // 2. Scan forward for balanced blocks
69
+ for (let i = 0; i < trimmed.length; i++) {
70
+ if (trimmed[i] === '{') {
71
+ const block = extractJsonBlock(trimmed, i);
72
+ if (block) {
73
+ try {
74
+ const parsed = JSON.parse(block);
75
+ const result = schema.safeParse(parsed);
76
+ if (result.success)
77
+ return result.data;
78
+ }
79
+ catch {
80
+ // try next
81
+ }
82
+ i += block.length - 1;
83
+ }
84
+ }
85
+ }
86
+ return undefined;
87
+ }
88
+ exports.WrapperResultSchema = zod_1.z.object({
89
+ status: zod_1.z.enum(['ok', 'error']),
90
+ result: zod_1.z.any(),
91
+ error: zod_1.z.string().optional(),
92
+ reasoning: zod_1.z.array(zod_1.z.string()).optional(),
93
+ });
94
+ /**
95
+ * Wraps raw specialist text output into a {@link WrapperResult}. Missing or
96
+ * malformed JSON becomes a structured error (not silent success).
97
+ */
98
+ function wrapWrapperResult(text) {
99
+ const parsed = parseStructuredOutput(text, exports.WrapperResultSchema);
100
+ if (parsed) {
101
+ const { status, result, error, reasoning } = parsed;
102
+ const out = { status, result };
103
+ if (error !== undefined)
104
+ out.error = error;
105
+ if (reasoning !== undefined)
106
+ out.reasoning = reasoning;
107
+ return out;
108
+ }
109
+ return {
110
+ status: 'error',
111
+ result: 'Specialist did not produce valid structured output',
112
+ error: 'parse_failed',
113
+ reasoning: [text.trim().slice(0, 500)],
114
+ };
115
+ }
116
+ /**
117
+ * Rules appended to a tool-wrapper specialist's system prompt. Instructs the
118
+ * child to emit a JSON object as its final message.
119
+ */
120
+ exports.STRUCTURED_OUTPUT_RULES = `
121
+
122
+ ## Output Format (STRICT)
123
+
124
+ Your FINAL message MUST be a single valid JSON object with this shape and nothing else — no prose before or after, no markdown code fences:
125
+
126
+ {
127
+ "status": "ok" | "error",
128
+ "result": <any valid JSON value representing the outcome>,
129
+ "error": "<short error message, only when status is 'error'>",
130
+ "reasoning": ["<short rationale for each significant decision or tool call>"]
131
+ }
132
+
133
+ Rules:
134
+ - Emit the JSON only once, as your last message.
135
+ - \`reasoning\` is an array of short strings. One entry per significant tool call explaining WHY you chose it (not what it returned).
136
+ - Never include confidence scores — the downstream pipeline ignores them.
137
+ - If a tool call fails irrecoverably, set \`status\` to "error", put the cause in \`error\`, and still include your reasoning.`;
138
+ //# sourceMappingURL=structured-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"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"}
package/dist/theme.d.ts CHANGED
@@ -25,6 +25,8 @@ export interface Theme {
25
25
  success: ColorFn;
26
26
  /** Dimmed color for de-emphasized content like conversation replays. */
27
27
  dim: ColorFn;
28
+ /** Dimmed italic variant, used for secondary blocks like the `think` tool output. */
29
+ dimItalic: ColorFn;
28
30
  /** Color for warning messages. */
29
31
  warning: ColorFn;
30
32
  /** Rotating palette of colors assigned to sub-agent prefixes. */
package/dist/theme.js CHANGED
@@ -27,12 +27,13 @@ exports.THEMES = {
27
27
  error: chalk_1.default.red,
28
28
  success: chalk_1.default.green,
29
29
  dim: chalk_1.default.dim,
30
+ dimItalic: chalk_1.default.dim.italic,
30
31
  warning: chalk_1.default.yellow,
31
32
  prefixColors: [chalk_1.default.magenta, chalk_1.default.blue, chalk_1.default.green, chalk_1.default.yellow],
32
33
  ansi: {
33
34
  prompt: '\x1b[38;2;249;115;22m',
34
- hintCmd: '\x1b[37m',
35
- hintDesc: '\x1b[90m',
35
+ hintCmd: '\x1b[1;38;2;249;115;22m',
36
+ hintDesc: '\x1b[22;38;2;115;115;115m',
36
37
  warning: '\x1b[33m',
37
38
  reset: '\x1b[0m',
38
39
  },
@@ -48,6 +49,7 @@ exports.THEMES = {
48
49
  error: chalk_1.default.hex('#f87171'),
49
50
  success: chalk_1.default.hex('#34d399'),
50
51
  dim: chalk_1.default.dim,
52
+ dimItalic: chalk_1.default.dim.italic,
51
53
  warning: chalk_1.default.hex('#fbbf24'),
52
54
  prefixColors: [
53
55
  chalk_1.default.hex('#38bdf8'),
@@ -57,8 +59,8 @@ exports.THEMES = {
57
59
  ],
58
60
  ansi: {
59
61
  prompt: '\x1b[38;2;6;182;212m',
60
- hintCmd: '\x1b[38;2;226;232;240m',
61
- hintDesc: '\x1b[38;2;148;163;184m',
62
+ hintCmd: '\x1b[1;38;2;6;182;212m',
63
+ hintDesc: '\x1b[22;38;2;115;125;140m',
62
64
  warning: '\x1b[38;2;251;191;36m',
63
65
  reset: '\x1b[0m',
64
66
  },
@@ -74,6 +76,7 @@ exports.THEMES = {
74
76
  error: chalk_1.default.hex('#ef4444'),
75
77
  success: chalk_1.default.hex('#4ade80'),
76
78
  dim: chalk_1.default.dim,
79
+ dimItalic: chalk_1.default.dim.italic,
77
80
  warning: chalk_1.default.hex('#facc15'),
78
81
  prefixColors: [
79
82
  chalk_1.default.hex('#4ade80'),
@@ -83,8 +86,8 @@ exports.THEMES = {
83
86
  ],
84
87
  ansi: {
85
88
  prompt: '\x1b[38;2;34;197;94m',
86
- hintCmd: '\x1b[38;2;229;229;229m',
87
- hintDesc: '\x1b[38;2;163;163;163m',
89
+ hintCmd: '\x1b[1;38;2;34;197;94m',
90
+ hintDesc: '\x1b[22;38;2;115;115;115m',
88
91
  warning: '\x1b[38;2;250;204;21m',
89
92
  reset: '\x1b[0m',
90
93
  },
@@ -100,6 +103,7 @@ exports.THEMES = {
100
103
  error: chalk_1.default.hex('#fb7185'),
101
104
  success: chalk_1.default.hex('#34d399'),
102
105
  dim: chalk_1.default.dim,
106
+ dimItalic: chalk_1.default.dim.italic,
103
107
  warning: chalk_1.default.hex('#fde68a'),
104
108
  prefixColors: [
105
109
  chalk_1.default.hex('#f472b6'),
@@ -109,8 +113,8 @@ exports.THEMES = {
109
113
  ],
110
114
  ansi: {
111
115
  prompt: '\x1b[38;2;192;132;252m',
112
- hintCmd: '\x1b[38;2;240;171;252m',
113
- hintDesc: '\x1b[38;2;167;139;250m',
116
+ hintCmd: '\x1b[1;38;2;192;132;252m',
117
+ hintDesc: '\x1b[22;38;2;130;130;150m',
114
118
  warning: '\x1b[38;2;253;230;138m',
115
119
  reset: '\x1b[0m',
116
120
  },
@@ -126,6 +130,7 @@ exports.THEMES = {
126
130
  error: chalk_1.default.bold.redBright,
127
131
  success: chalk_1.default.bold.greenBright,
128
132
  dim: chalk_1.default.white,
133
+ dimItalic: chalk_1.default.white.italic,
129
134
  warning: chalk_1.default.bold.yellowBright,
130
135
  prefixColors: [
131
136
  chalk_1.default.bold.magentaBright,
@@ -135,8 +140,8 @@ exports.THEMES = {
135
140
  ],
136
141
  ansi: {
137
142
  prompt: '\x1b[1;97m',
138
- hintCmd: '\x1b[97m',
139
- hintDesc: '\x1b[97m',
143
+ hintCmd: '\x1b[1;93m',
144
+ hintDesc: '\x1b[22;37m',
140
145
  warning: '\x1b[1;93m',
141
146
  reset: '\x1b[0m',
142
147
  },
@@ -152,6 +157,7 @@ exports.THEMES = {
152
157
  error: chalk_1.default.hex('#DC267F'),
153
158
  success: chalk_1.default.hex('#648FFF'),
154
159
  dim: chalk_1.default.dim,
160
+ dimItalic: chalk_1.default.dim.italic,
155
161
  warning: chalk_1.default.hex('#FFB000'),
156
162
  prefixColors: [
157
163
  chalk_1.default.hex('#785EF0'),
@@ -161,8 +167,8 @@ exports.THEMES = {
161
167
  ],
162
168
  ansi: {
163
169
  prompt: '\x1b[38;2;100;143;255m',
164
- hintCmd: '\x1b[38;2;224;224;224m',
165
- hintDesc: '\x1b[38;2;176;176;176m',
170
+ hintCmd: '\x1b[1;38;2;100;143;255m',
171
+ hintDesc: '\x1b[22;38;2;130;130;130m',
166
172
  warning: '\x1b[38;2;255;176;0m',
167
173
  reset: '\x1b[0m',
168
174
  },
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type ToolCallRepairFunction, type ToolSet } from 'ai';
2
+ import type { BernardConfig } from './config.js';
3
+ /** Identifies which generateText site produced the failed tool call. */
4
+ export type RepairLabel = 'main' | 'specialist' | 'subagent' | 'tool-wrapper' | 'cron';
5
+ export interface MakeRepairHookOpts {
6
+ config: BernardConfig;
7
+ /** Provider to use for the repair call. Defaults to config.provider. */
8
+ provider?: string;
9
+ /** Model to use for the repair call. Defaults to config.model. */
10
+ model?: string;
11
+ label: RepairLabel;
12
+ /** Optional abort signal forwarded to the repair generateText call. */
13
+ abortSignal?: AbortSignal;
14
+ }
15
+ /**
16
+ * Produces an `experimental_repairToolCall` hook for `generateText`. When the
17
+ * AI SDK fails to parse a model's tool-call arguments (or the model targets a
18
+ * nonexistent tool), the hook runs ONE focused generation asking the model to
19
+ * re-emit a valid tool call. Returns the corrected call, or `null` to let the
20
+ * SDK throw.
21
+ *
22
+ * The repair attempt is bounded to a single retry per failed tool call — no
23
+ * looping, no escalation. Failures are logged to the debug stream.
24
+ *
25
+ * Special-cases JSON truncation (the model packed too much content into a
26
+ * single string arg) by hinting at `file_write` + `shell` as the safe pattern
27
+ * for large payloads.
28
+ */
29
+ export declare function makeRepairHook<TOOLS extends ToolSet>(opts: MakeRepairHookOpts): ToolCallRepairFunction<TOOLS>;