@pipeline-builder/ai-core 4.1.3 → 4.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,7 +36,27 @@ export declare function answerHowTo(opts: AnswerHowToOptions): Promise<{
36
36
  * Streaming variant — returns the retrieved `sources` immediately (so the UI can show
37
37
  * them while tokens arrive) and the live `textStream`.
38
38
  */
39
+ /** What a how-to stream yields. */
40
+ export type AskStreamEvent =
41
+ /** The provider has started responding — a paid call has been made. */
42
+ {
43
+ type: 'provider-responded';
44
+ }
45
+ /** A chunk of answer text. */
46
+ | {
47
+ type: 'text';
48
+ text: string;
49
+ };
50
+ /**
51
+ * Stream a grounded answer.
52
+ *
53
+ * Built on the SDK's full stream rather than `textStream`, which silently drops
54
+ * error parts (a failed provider call would look like an empty "answer") and
55
+ * gives no signal that the provider was reached. Here a provider error THROWS
56
+ * from the iterator, and `provider-responded` marks the moment a call was paid
57
+ * for — so callers can refund exactly when the provider was never reached.
58
+ */
39
59
  export declare function streamHowTo(opts: AnswerHowToOptions): {
40
60
  sources: AskSource[];
41
- textStream: AsyncIterable<string>;
61
+ events: AsyncIterable<AskStreamEvent>;
42
62
  };
package/lib/ask-agent.js CHANGED
@@ -57,12 +57,34 @@ export async function answerHowTo(opts) {
57
57
  return { text: result.text, sources };
58
58
  }
59
59
  /**
60
- * Streaming variant — returns the retrieved `sources` immediately (so the UI can show
61
- * them while tokens arrive) and the live `textStream`.
60
+ * Stream a grounded answer.
61
+ *
62
+ * Built on the SDK's full stream rather than `textStream`, which silently drops
63
+ * error parts (a failed provider call would look like an empty "answer") and
64
+ * gives no signal that the provider was reached. Here a provider error THROWS
65
+ * from the iterator, and `provider-responded` marks the moment a call was paid
66
+ * for — so callers can refund exactly when the provider was never reached.
62
67
  */
63
68
  export function streamHowTo(opts) {
64
69
  const { messages, sources } = prepare(opts);
65
70
  const result = streamText({ model: opts.model, messages, abortSignal: opts.abortSignal });
66
- return { sources, textStream: result.textStream };
71
+ return { sources, events: toAskEvents(result.fullStream) };
67
72
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Fzay1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLG1GQUFtRjtBQUNuRixFQUFFO0FBQ0YscUZBQXFGO0FBQ3JGLG1GQUFtRjtBQUNuRixtRkFBbUY7QUFDbkYscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQztBQTBCOUMsTUFBTSxhQUFhLEdBQUc7SUFDcEIscUZBQXFGO0lBQ3JGLG9GQUFvRjtJQUNwRixFQUFFO0lBQ0YsUUFBUTtJQUNSLDBGQUEwRjtJQUMxRix1RkFBdUY7SUFDdkYsMkVBQTJFO0lBQzNFLHlFQUF5RTtJQUN6RSx3RUFBd0U7Q0FDekUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFYixpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQW9CO0lBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxtQ0FBbUMsQ0FBQztJQUNsRSxPQUFPLElBQUk7U0FDUixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLElBQW9CO0lBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxzRkFBc0Y7QUFDdEYsU0FBUyxPQUFPLENBQUMsSUFBd0I7SUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDOUUsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixTQUFTLGFBQWEsQ0FBQyxJQUF3QixFQUFFLE9BQWU7SUFDOUQsT0FBTztRQUNMLEVBQUUsSUFBSSxFQUFFLFFBQWlCLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxtQ0FBbUMsT0FBTyxFQUFFLEVBQUU7UUFDbEcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3ZCLEVBQUUsSUFBSSxFQUFFLE1BQWUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtLQUMvQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLElBQXdCO0lBQ3hELE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNsRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBd0I7SUFDbEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vLyBUaGUgXCJBc2tcIiBhZ2VudCdzIHJlYWQtb25seSBcIkV4cGxhaW5cIiBicmFpbjogcmV0cmlldmFsLWF1Z21lbnRlZCBob3ctdG8gYW5zd2Vycy5cbi8vXG4vLyBgYW5zd2VySG93VG9gIC8gYHN0cmVhbUhvd1RvYCByZXRyaWV2ZSB0aGUgbW9zdCByZWxldmFudCBkb2N1bWVudGF0aW9uIGNodW5rcyBmcm9tXG4vLyBhIEdyb3VuZGluZ0luZGV4IGFuZCBhc2sgdGhlIG1vZGVsIHRvIGFuc3dlciB1c2luZyBPTkxZIHRoYXQgY29udGV4dCwgY2l0aW5nIHRoZVxuLy8gc2VjdGlvbnMgaXQgdXNlZC4gVGhpcyBpcyB0aGUgUGhhc2UgMSAocmVhZC1vbmx5KSBjb3JlIOKAlCBubyB3cml0ZSB0b29scywgbm90aGluZ1xuLy8gbXV0YXRlZC4gVGhlIEhUVFAgc2VydmljZSB3aXJlcyBhIG1vZGVsICh2aWEgdGhlIHByb3ZpZGVyIHJlZ2lzdHJ5KSArIGEgZG9jcyBpbmRleFxuLy8gdG8gdGhlc2UgZnVuY3Rpb25zIGFuZCBzdHJlYW1zIHRoZSByZXN1bHQgb3ZlciBTU0UuXG5cbmltcG9ydCB7IGdlbmVyYXRlVGV4dCwgc3RyZWFtVGV4dCB9IGZyb20gJ2FpJztcbmltcG9ydCB0eXBlIHsgTGFuZ3VhZ2VNb2RlbCB9IGZyb20gJ2FpJztcblxuaW1wb3J0IHR5cGUgeyBHcm91bmRpbmdJbmRleCwgR3JvdW5kaW5nSGl0IH0gZnJvbSAnLi9ncm91bmRpbmcuanMnO1xuXG4vKiogQSBzb3VyY2UgdGhlIGFuc3dlciB3YXMgZ3JvdW5kZWQgaW4sIGZvciBhdHRyaWJ1dGlvbiAvIGRlZXAtbGlua2luZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNrU291cmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbnN3ZXJIb3dUb09wdGlvbnMge1xuICBtb2RlbDogTGFuZ3VhZ2VNb2RlbDtcbiAgLyoqIFRoZSB1c2VyJ3MgcXVlc3Rpb24uICovXG4gIHF1ZXJ5OiBzdHJpbmc7XG4gIC8qKiBEb2N1bWVudGF0aW9uIGluZGV4IHRvIGdyb3VuZCBhZ2FpbnN0LiAqL1xuICBpbmRleDogR3JvdW5kaW5nSW5kZXg7XG4gIC8qKiBIb3cgbWFueSBjaHVua3MgdG8gcmV0cmlldmUgKGRlZmF1bHQgNSkuICovXG4gIHRvcEs/OiBudW1iZXI7XG4gIC8qKiBPcHRpb25hbCBwcmlvciB0dXJucyBmb3IgbXVsdGktdHVybiBjb250ZXh0IChjbGllbnQtaGVsZCBpbiB2MSkuICovXG4gIGhpc3Rvcnk/OiBBcnJheTx7IHJvbGU6ICd1c2VyJyB8ICdhc3Npc3RhbnQnOyBjb250ZW50OiBzdHJpbmcgfT47XG4gIC8qKiBBYm9ydHMgdGhlIHByb3ZpZGVyIGNhbGwgd2hlbiB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzIChhdm9pZHMgd2FzdGVkIHNwZW5kKS4gKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuY29uc3QgU1lTVEVNX1BST01QVCA9IFtcbiAgJ1lvdSBhcmUgdGhlIFBpcGVsaW5lIEJ1aWxkZXIgXCJBc2tcIiBhc3Npc3RhbnQuIFlvdSBoZWxwIHVzZXJzIHVuZGVyc3RhbmQgYW5kIHVzZSB0aGUnLFxuICAncGxhdGZvcm0uIEFuc3dlciB0aGUgcXVlc3Rpb24gdXNpbmcgT05MWSB0aGUgZG9jdW1lbnRhdGlvbiBjb250ZXh0IHByb3ZpZGVkIGJlbG93LicsXG4gICcnLFxuICAnUnVsZXM6JyxcbiAgJy0gSWYgdGhlIGFuc3dlciBpcyBub3QgaW4gdGhlIGNvbnRleHQsIHNheSB5b3UgZG8gbm90IGhhdmUgZG9jdW1lbnRhdGlvbiBjb3ZlcmluZyBpdCBhbmQnLFxuICAnICBzdWdnZXN0IHRoZSBjbG9zZXN0IHJlbGV2YW50IGFyZWEg4oCUIGRvIE5PVCBpbnZlbnQgY29tbWFuZHMsIGVudiB2YXJzLCBvciBlbmRwb2ludHMuJyxcbiAgJy0gQmUgY29uY2lzZSBhbmQgY29uY3JldGUuIFByZWZlciBzdGVwcyBhbmQgZXhhY3QgbmFtZXMgZnJvbSB0aGUgY29udGV4dC4nLFxuICAnLSBXaGVuIHlvdSB1c2UgYSBzZWN0aW9uLCBjaXRlIGl0IGJ5IGl0cyB0aXRsZSBzbyB0aGUgdXNlciBjYW4gZmluZCBpdC4nLFxuICAnLSBUaGlzIGlzIGEgcmVhZC1vbmx5IGFzc2lzdGFudDogbmV2ZXIgY2xhaW0gdG8gaGF2ZSBjaGFuZ2VkIGFueXRoaW5nLicsXG5dLmpvaW4oJ1xcbicpO1xuXG4vKiogQXNzZW1ibGUgdGhlIHJldHJpZXZlZCBjaHVua3MgaW50byBhIGxhYmVsbGVkIGNvbnRleHQgYmxvY2sgZm9yIHRoZSBtb2RlbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEdyb3VuZGluZ0NvbnRleHQoaGl0czogR3JvdW5kaW5nSGl0W10pOiBzdHJpbmcge1xuICBpZiAoaGl0cy5sZW5ndGggPT09IDApIHJldHVybiAnKG5vIG1hdGNoaW5nIGRvY3VtZW50YXRpb24gZm91bmQpJztcbiAgcmV0dXJuIGhpdHNcbiAgICAubWFwKChoLCBpKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IGguZG9jLnRpdGxlID8gYCR7aC5kb2MudGl0bGV9IFske2guZG9jLmlkfV1gIDogaC5kb2MuaWQ7XG4gICAgICByZXR1cm4gYCMjIyBTb3VyY2UgJHtpICsgMX06ICR7bGFiZWx9XFxuJHtoLmRvYy50ZXh0fWA7XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbmZ1bmN0aW9uIHRvU291cmNlcyhoaXRzOiBHcm91bmRpbmdIaXRbXSk6IEFza1NvdXJjZVtdIHtcbiAgcmV0dXJuIGhpdHMubWFwKChoKSA9PiAoeyBpZDogaC5kb2MuaWQsIHRpdGxlOiBoLmRvYy50aXRsZSwgdXJsOiBoLmRvYy51cmwgfSkpO1xufVxuXG4vKiogUmV0cmlldmUsIGJ1aWxkIHRoZSBncm91bmRlZCBtZXNzYWdlcywgYW5kIGRlcml2ZSB0aGUgc291cmNlcyDigJQgc2hhcmVkIHByZWx1ZGUuICovXG5mdW5jdGlvbiBwcmVwYXJlKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucyk6IHsgbWVzc2FnZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkTWVzc2FnZXM+OyBzb3VyY2VzOiBBc2tTb3VyY2VbXSB9IHtcbiAgY29uc3QgaGl0cyA9IG9wdHMuaW5kZXguc2VhcmNoKG9wdHMucXVlcnksIG9wdHMudG9wSyA/PyA1KTtcbiAgY29uc3QgY29udGV4dCA9IGJ1aWxkR3JvdW5kaW5nQ29udGV4dChoaXRzKTtcbiAgcmV0dXJuIHsgbWVzc2FnZXM6IGJ1aWxkTWVzc2FnZXMob3B0cywgY29udGV4dCksIHNvdXJjZXM6IHRvU291cmNlcyhoaXRzKSB9O1xufVxuXG4vKiogQnVpbGQgdGhlIG1lc3NhZ2VzIGFycmF5IChzeXN0ZW0gZ3JvdW5kaW5nICsgb3B0aW9uYWwgaGlzdG9yeSArIHF1ZXN0aW9uKS4gKi9cbmZ1bmN0aW9uIGJ1aWxkTWVzc2FnZXMob3B0czogQW5zd2VySG93VG9PcHRpb25zLCBjb250ZXh0OiBzdHJpbmcpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHJvbGU6ICdzeXN0ZW0nIGFzIGNvbnN0LCBjb250ZW50OiBgJHtTWVNURU1fUFJPTVBUfVxcblxcbiMjIERvY3VtZW50YXRpb24gY29udGV4dFxcblxcbiR7Y29udGV4dH1gIH0sXG4gICAgLi4uKG9wdHMuaGlzdG9yeSA/PyBbXSksXG4gICAgeyByb2xlOiAndXNlcicgYXMgY29uc3QsIGNvbnRlbnQ6IG9wdHMucXVlcnkgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBBbnN3ZXIgYSBob3ctdG8gcXVlc3Rpb24sIGdyb3VuZGVkIGluIHRoZSBkb2NzIGluZGV4LiBSZXR1cm5zIHRoZSBmdWxsIHRleHQgcGx1c1xuICogdGhlIHNvdXJjZXMgaXQgd2FzIGdyb3VuZGVkIGluLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYW5zd2VySG93VG8ob3B0czogQW5zd2VySG93VG9PcHRpb25zKTogUHJvbWlzZTx7IHRleHQ6IHN0cmluZzsgc291cmNlczogQXNrU291cmNlW10gfT4ge1xuICBjb25zdCB7IG1lc3NhZ2VzLCBzb3VyY2VzIH0gPSBwcmVwYXJlKG9wdHMpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZW5lcmF0ZVRleHQoeyBtb2RlbDogb3B0cy5tb2RlbCwgbWVzc2FnZXMsIGFib3J0U2lnbmFsOiBvcHRzLmFib3J0U2lnbmFsIH0pO1xuICByZXR1cm4geyB0ZXh0OiByZXN1bHQudGV4dCwgc291cmNlcyB9O1xufVxuXG4vKipcbiAqIFN0cmVhbWluZyB2YXJpYW50IOKAlCByZXR1cm5zIHRoZSByZXRyaWV2ZWQgYHNvdXJjZXNgIGltbWVkaWF0ZWx5IChzbyB0aGUgVUkgY2FuIHNob3dcbiAqIHRoZW0gd2hpbGUgdG9rZW5zIGFycml2ZSkgYW5kIHRoZSBsaXZlIGB0ZXh0U3RyZWFtYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbUhvd1RvKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucyk6IHsgc291cmNlczogQXNrU291cmNlW107IHRleHRTdHJlYW06IEFzeW5jSXRlcmFibGU8c3RyaW5nPiB9IHtcbiAgY29uc3QgeyBtZXNzYWdlcywgc291cmNlcyB9ID0gcHJlcGFyZShvcHRzKTtcbiAgY29uc3QgcmVzdWx0ID0gc3RyZWFtVGV4dCh7IG1vZGVsOiBvcHRzLm1vZGVsLCBtZXNzYWdlcywgYWJvcnRTaWduYWw6IG9wdHMuYWJvcnRTaWduYWwgfSk7XG4gIHJldHVybiB7IHNvdXJjZXMsIHRleHRTdHJlYW06IHJlc3VsdC50ZXh0U3RyZWFtIH07XG59XG4iXX0=
73
+ async function* toAskEvents(parts) {
74
+ for await (const part of parts) {
75
+ switch (part.type) {
76
+ case 'start-step':
77
+ yield { type: 'provider-responded' };
78
+ break;
79
+ case 'text-delta':
80
+ if (part.delta)
81
+ yield { type: 'text', text: part.delta };
82
+ break;
83
+ case 'error':
84
+ throw part.error instanceof Error ? part.error : new Error(String(part.error));
85
+ default:
86
+ break;
87
+ }
88
+ }
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Fzay1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLG1GQUFtRjtBQUNuRixFQUFFO0FBQ0YscUZBQXFGO0FBQ3JGLG1GQUFtRjtBQUNuRixtRkFBbUY7QUFDbkYscUZBQXFGO0FBQ3JGLHNEQUFzRDtBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQztBQTBCOUMsTUFBTSxhQUFhLEdBQUc7SUFDcEIscUZBQXFGO0lBQ3JGLG9GQUFvRjtJQUNwRixFQUFFO0lBQ0YsUUFBUTtJQUNSLDBGQUEwRjtJQUMxRix1RkFBdUY7SUFDdkYsMkVBQTJFO0lBQzNFLHlFQUF5RTtJQUN6RSx3RUFBd0U7Q0FDekUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFYixpRkFBaUY7QUFDakYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQW9CO0lBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxtQ0FBbUMsQ0FBQztJQUNsRSxPQUFPLElBQUk7U0FDUixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0RSxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsTUFBTSxDQUFDLENB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LENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pGO2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLy8gVGhlIFwiQXNrXCIgYWdlbnQncyByZWFkLW9ubHkgXCJFeHBsYWluXCIgYnJhaW46IHJldHJpZXZhbC1hdWdtZW50ZWQgaG93LXRvIGFuc3dlcnMuXG4vL1xuLy8gYGFuc3dlckhvd1RvYCAvIGBzdHJlYW1Ib3dUb2AgcmV0cmlldmUgdGhlIG1vc3QgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBjaHVua3MgZnJvbVxuLy8gYSBHcm91bmRpbmdJbmRleCBhbmQgYXNrIHRoZSBtb2RlbCB0byBhbnN3ZXIgdXNpbmcgT05MWSB0aGF0IGNvbnRleHQsIGNpdGluZyB0aGVcbi8vIHNlY3Rpb25zIGl0IHVzZWQuIFRoaXMgaXMgdGhlIFBoYXNlIDEgKHJlYWQtb25seSkgY29yZSDigJQgbm8gd3JpdGUgdG9vbHMsIG5vdGhpbmdcbi8vIG11dGF0ZWQuIFRoZSBIVFRQIHNlcnZpY2Ugd2lyZXMgYSBtb2RlbCAodmlhIHRoZSBwcm92aWRlciByZWdpc3RyeSkgKyBhIGRvY3MgaW5kZXhcbi8vIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgc3RyZWFtcyB0aGUgcmVzdWx0IG92ZXIgU1NFLlxuXG5pbXBvcnQgeyBnZW5lcmF0ZVRleHQsIHN0cmVhbVRleHQgfSBmcm9tICdhaSc7XG5pbXBvcnQgdHlwZSB7IExhbmd1YWdlTW9kZWwgfSBmcm9tICdhaSc7XG5cbmltcG9ydCB0eXBlIHsgR3JvdW5kaW5nSW5kZXgsIEdyb3VuZGluZ0hpdCB9IGZyb20gJy4vZ3JvdW5kaW5nLmpzJztcblxuLyoqIEEgc291cmNlIHRoZSBhbnN3ZXIgd2FzIGdyb3VuZGVkIGluLCBmb3IgYXR0cmlidXRpb24gLyBkZWVwLWxpbmtpbmcuICovXG5leHBvcnQgaW50ZXJmYWNlIEFza1NvdXJjZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5zd2VySG93VG9PcHRpb25zIHtcbiAgbW9kZWw6IExhbmd1YWdlTW9kZWw7XG4gIC8qKiBUaGUgdXNlcidzIHF1ZXN0aW9uLiAqL1xuICBxdWVyeTogc3RyaW5nO1xuICAvKiogRG9jdW1lbnRhdGlvbiBpbmRleCB0byBncm91bmQgYWdhaW5zdC4gKi9cbiAgaW5kZXg6IEdyb3VuZGluZ0luZGV4O1xuICAvKiogSG93IG1hbnkgY2h1bmtzIHRvIHJldHJpZXZlIChkZWZhdWx0IDUpLiAqL1xuICB0b3BLPzogbnVtYmVyO1xuICAvKiogT3B0aW9uYWwgcHJpb3IgdHVybnMgZm9yIG11bHRpLXR1cm4gY29udGV4dCAoY2xpZW50LWhlbGQgaW4gdjEpLiAqL1xuICBoaXN0b3J5PzogQXJyYXk8eyByb2xlOiAndXNlcicgfCAnYXNzaXN0YW50JzsgY29udGVudDogc3RyaW5nIH0+O1xuICAvKiogQWJvcnRzIHRoZSBwcm92aWRlciBjYWxsIHdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0cyAoYXZvaWRzIHdhc3RlZCBzcGVuZCkuICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG59XG5cbmNvbnN0IFNZU1RFTV9QUk9NUFQgPSBbXG4gICdZb3UgYXJlIHRoZSBQaXBlbGluZSBCdWlsZGVyIFwiQXNrXCIgYXNzaXN0YW50LiBZb3UgaGVscCB1c2VycyB1bmRlcnN0YW5kIGFuZCB1c2UgdGhlJyxcbiAgJ3BsYXRmb3JtLiBBbnN3ZXIgdGhlIHF1ZXN0aW9uIHVzaW5nIE9OTFkgdGhlIGRvY3VtZW50YXRpb24gY29udGV4dCBwcm92aWRlZCBiZWxvdy4nLFxuICAnJyxcbiAgJ1J1bGVzOicsXG4gICctIElmIHRoZSBhbnN3ZXIgaXMgbm90IGluIHRoZSBjb250ZXh0LCBzYXkgeW91IGRvIG5vdCBoYXZlIGRvY3VtZW50YXRpb24gY292ZXJpbmcgaXQgYW5kJyxcbiAgJyAgc3VnZ2VzdCB0aGUgY2xvc2VzdCByZWxldmFudCBhcmVhIOKAlCBkbyBOT1QgaW52ZW50IGNvbW1hbmRzLCBlbnYgdmFycywgb3IgZW5kcG9pbnRzLicsXG4gICctIEJlIGNvbmNpc2UgYW5kIGNvbmNyZXRlLiBQcmVmZXIgc3RlcHMgYW5kIGV4YWN0IG5hbWVzIGZyb20gdGhlIGNvbnRleHQuJyxcbiAgJy0gV2hlbiB5b3UgdXNlIGEgc2VjdGlvbiwgY2l0ZSBpdCBieSBpdHMgdGl0bGUgc28gdGhlIHVzZXIgY2FuIGZpbmQgaXQuJyxcbiAgJy0gVGhpcyBpcyBhIHJlYWQtb25seSBhc3Npc3RhbnQ6IG5ldmVyIGNsYWltIHRvIGhhdmUgY2hhbmdlZCBhbnl0aGluZy4nLFxuXS5qb2luKCdcXG4nKTtcblxuLyoqIEFzc2VtYmxlIHRoZSByZXRyaWV2ZWQgY2h1bmtzIGludG8gYSBsYWJlbGxlZCBjb250ZXh0IGJsb2NrIGZvciB0aGUgbW9kZWwuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRHcm91bmRpbmdDb250ZXh0KGhpdHM6IEdyb3VuZGluZ0hpdFtdKTogc3RyaW5nIHtcbiAgaWYgKGhpdHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyhubyBtYXRjaGluZyBkb2N1bWVudGF0aW9uIGZvdW5kKSc7XG4gIHJldHVybiBoaXRzXG4gICAgLm1hcCgoaCwgaSkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBoLmRvYy50aXRsZSA/IGAke2guZG9jLnRpdGxlfSBbJHtoLmRvYy5pZH1dYCA6IGguZG9jLmlkO1xuICAgICAgcmV0dXJuIGAjIyMgU291cmNlICR7aSArIDF9OiAke2xhYmVsfVxcbiR7aC5kb2MudGV4dH1gO1xuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG5mdW5jdGlvbiB0b1NvdXJjZXMoaGl0czogR3JvdW5kaW5nSGl0W10pOiBBc2tTb3VyY2VbXSB7XG4gIHJldHVybiBoaXRzLm1hcCgoaCkgPT4gKHsgaWQ6IGguZG9jLmlkLCB0aXRsZTogaC5kb2MudGl0bGUsIHVybDogaC5kb2MudXJsIH0pKTtcbn1cblxuLyoqIFJldHJpZXZlLCBidWlsZCB0aGUgZ3JvdW5kZWQgbWVzc2FnZXMsIGFuZCBkZXJpdmUgdGhlIHNvdXJjZXMg4oCUIHNoYXJlZCBwcmVsdWRlLiAqL1xuZnVuY3Rpb24gcHJlcGFyZShvcHRzOiBBbnN3ZXJIb3dUb09wdGlvbnMpOiB7IG1lc3NhZ2VzOiBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZE1lc3NhZ2VzPjsgc291cmNlczogQXNrU291cmNlW10gfSB7XG4gIGNvbnN0IGhpdHMgPSBvcHRzLmluZGV4LnNlYXJjaChvcHRzLnF1ZXJ5LCBvcHRzLnRvcEsgPz8gNSk7XG4gIGNvbnN0IGNvbnRleHQgPSBidWlsZEdyb3VuZGluZ0NvbnRleHQoaGl0cyk7XG4gIHJldHVybiB7IG1lc3NhZ2VzOiBidWlsZE1lc3NhZ2VzKG9wdHMsIGNvbnRleHQpLCBzb3VyY2VzOiB0b1NvdXJjZXMoaGl0cykgfTtcbn1cblxuLyoqIEJ1aWxkIHRoZSBtZXNzYWdlcyBhcnJheSAoc3lzdGVtIGdyb3VuZGluZyArIG9wdGlvbmFsIGhpc3RvcnkgKyBxdWVzdGlvbikuICovXG5mdW5jdGlvbiBidWlsZE1lc3NhZ2VzKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucywgY29udGV4dDogc3RyaW5nKSB7XG4gIHJldHVybiBbXG4gICAgeyByb2xlOiAnc3lzdGVtJyBhcyBjb25zdCwgY29udGVudDogYCR7U1lTVEVNX1BST01QVH1cXG5cXG4jIyBEb2N1bWVudGF0aW9uIGNvbnRleHRcXG5cXG4ke2NvbnRleHR9YCB9LFxuICAgIC4uLihvcHRzLmhpc3RvcnkgPz8gW10pLFxuICAgIHsgcm9sZTogJ3VzZXInIGFzIGNvbnN0LCBjb250ZW50OiBvcHRzLnF1ZXJ5IH0sXG4gIF07XG59XG5cbi8qKlxuICogQW5zd2VyIGEgaG93LXRvIHF1ZXN0aW9uLCBncm91bmRlZCBpbiB0aGUgZG9jcyBpbmRleC4gUmV0dXJucyB0aGUgZnVsbCB0ZXh0IHBsdXNcbiAqIHRoZSBzb3VyY2VzIGl0IHdhcyBncm91bmRlZCBpbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFuc3dlckhvd1RvKG9wdHM6IEFuc3dlckhvd1RvT3B0aW9ucyk6IFByb21pc2U8eyB0ZXh0OiBzdHJpbmc7IHNvdXJjZXM6IEFza1NvdXJjZVtdIH0+IHtcbiAgY29uc3QgeyBtZXNzYWdlcywgc291cmNlcyB9ID0gcHJlcGFyZShvcHRzKTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2VuZXJhdGVUZXh0KHsgbW9kZWw6IG9wdHMubW9kZWwsIG1lc3NhZ2VzLCBhYm9ydFNpZ25hbDogb3B0cy5hYm9ydFNpZ25hbCB9KTtcbiAgcmV0dXJuIHsgdGV4dDogcmVzdWx0LnRleHQsIHNvdXJjZXMgfTtcbn1cblxuLyoqXG4gKiBTdHJlYW1pbmcgdmFyaWFudCDigJQgcmV0dXJucyB0aGUgcmV0cmlldmVkIGBzb3VyY2VzYCBpbW1lZGlhdGVseSAoc28gdGhlIFVJIGNhbiBzaG93XG4gKiB0aGVtIHdoaWxlIHRva2VucyBhcnJpdmUpIGFuZCB0aGUgbGl2ZSBgdGV4dFN0cmVhbWAuXG4gKi9cbi8qKiBXaGF0IGEgaG93LXRvIHN0cmVhbSB5aWVsZHMuICovXG5leHBvcnQgdHlwZSBBc2tTdHJlYW1FdmVudCA9XG4gIC8qKiBUaGUgcHJvdmlkZXIgaGFzIHN0YXJ0ZWQgcmVzcG9uZGluZyDigJQgYSBwYWlkIGNhbGwgaGFzIGJlZW4gbWFkZS4gKi9cbiAgfCB7IHR5cGU6ICdwcm92aWRlci1yZXNwb25kZWQnIH1cbiAgLyoqIEEgY2h1bmsgb2YgYW5zd2VyIHRleHQuICovXG4gIHwgeyB0eXBlOiAndGV4dCc7IHRleHQ6IHN0cmluZyB9O1xuXG4vKipcbiAqIFN0cmVhbSBhIGdyb3VuZGVkIGFuc3dlci5cbiAqXG4gKiBCdWlsdCBvbiB0aGUgU0RLJ3MgZnVsbCBzdHJlYW0gcmF0aGVyIHRoYW4gYHRleHRTdHJlYW1gLCB3aGljaCBzaWxlbnRseSBkcm9wc1xuICogZXJyb3IgcGFydHMgKGEgZmFpbGVkIHByb3ZpZGVyIGNhbGwgd291bGQgbG9vayBsaWtlIGFuIGVtcHR5IFwiYW5zd2VyXCIpIGFuZFxuICogZ2l2ZXMgbm8gc2lnbmFsIHRoYXQgdGhlIHByb3ZpZGVyIHdhcyByZWFjaGVkLiBIZXJlIGEgcHJvdmlkZXIgZXJyb3IgVEhST1dTXG4gKiBmcm9tIHRoZSBpdGVyYXRvciwgYW5kIGBwcm92aWRlci1yZXNwb25kZWRgIG1hcmtzIHRoZSBtb21lbnQgYSBjYWxsIHdhcyBwYWlkXG4gKiBmb3Ig4oCUIHNvIGNhbGxlcnMgY2FuIHJlZnVuZCBleGFjdGx5IHdoZW4gdGhlIHByb3ZpZGVyIHdhcyBuZXZlciByZWFjaGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyZWFtSG93VG8ob3B0czogQW5zd2VySG93VG9PcHRpb25zKTogeyBzb3VyY2VzOiBBc2tTb3VyY2VbXTsgZXZlbnRzOiBBc3luY0l0ZXJhYmxlPEFza1N0cmVhbUV2ZW50PiB9IHtcbiAgY29uc3QgeyBtZXNzYWdlcywgc291cmNlcyB9ID0gcHJlcGFyZShvcHRzKTtcbiAgY29uc3QgcmVzdWx0ID0gc3RyZWFtVGV4dCh7IG1vZGVsOiBvcHRzLm1vZGVsLCBtZXNzYWdlcywgYWJvcnRTaWduYWw6IG9wdHMuYWJvcnRTaWduYWwgfSk7XG4gIHJldHVybiB7IHNvdXJjZXMsIGV2ZW50czogdG9Bc2tFdmVudHMocmVzdWx0LmZ1bGxTdHJlYW0pIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uKiB0b0Fza0V2ZW50cyhwYXJ0czogQXN5bmNJdGVyYWJsZTx7IHR5cGU6IHN0cmluZzsgZGVsdGE/OiBzdHJpbmc7IGVycm9yPzogdW5rbm93biB9Pik6IEFzeW5jSXRlcmFibGU8QXNrU3RyZWFtRXZlbnQ+IHtcbiAgZm9yIGF3YWl0IChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgc3dpdGNoIChwYXJ0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0LXN0ZXAnOlxuICAgICAgICB5aWVsZCB7IHR5cGU6ICdwcm92aWRlci1yZXNwb25kZWQnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dC1kZWx0YSc6XG4gICAgICAgIGlmIChwYXJ0LmRlbHRhKSB5aWVsZCB7IHR5cGU6ICd0ZXh0JywgdGV4dDogcGFydC5kZWx0YSB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgdGhyb3cgcGFydC5lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gcGFydC5lcnJvciA6IG5ldyBFcnJvcihTdHJpbmcocGFydC5lcnJvcikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -3,6 +3,6 @@ export type { ProviderEntry } from './provider-registry.js';
3
3
  export { tokenize, chunkMarkdown, buildGroundingIndex, buildDocsIndexFromFiles, } from './grounding.js';
4
4
  export type { GroundingDoc, GroundingHit, GroundingIndex, DocFile } from './grounding.js';
5
5
  export { answerHowTo, streamHowTo, buildGroundingContext, } from './ask-agent.js';
6
- export type { AskSource, AnswerHowToOptions } from './ask-agent.js';
6
+ export type { AskSource, AnswerHowToOptions, AskStreamEvent } from './ask-agent.js';
7
7
  export type { LanguageModel, Tool, ToolSet } from 'ai';
8
8
  export { generateText, streamText, Output, tool, generateObject, stepCountIs } from 'ai';
package/lib/index.js CHANGED
@@ -8,4 +8,4 @@ export { answerHowTo, streamHowTo, buildGroundingContext, } from './ask-agent.js
8
8
  // generateText/streamText/Output for generation; tool/generateObject/stepCountIs
9
9
  // for the agent tool-calling loop (Phase 2 write tools).
10
10
  export { generateText, streamText, Output, tool, generateObject, stepCountIs } from 'ai';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osa0JBQWtCLEdBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFJaEMsNENBQTRDO0FBQzVDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQix1QkFBdUIsR0FDeEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4Qiw0Q0FBNEM7QUFDNUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gscUJBQXFCLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsaUZBQWlGO0FBQ2pGLHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHtcbiAgZ2V0QXZhaWxhYmxlUHJvdmlkZXJzLFxuICBnZXRQcm92aWRlck1vZGVscyxcbiAgcmVzb2x2ZU1vZGVsLFxuICBjcmVhdGVNb2RlbFdpdGhLZXksXG59IGZyb20gJy4vcHJvdmlkZXItcmVnaXN0cnkuanMnO1xuXG5leHBvcnQgdHlwZSB7IFByb3ZpZGVyRW50cnkgfSBmcm9tICcuL3Byb3ZpZGVyLXJlZ2lzdHJ5LmpzJztcblxuLy8gR3JvdW5kaW5nIC8gcmV0cmlldmFsIGZvciB0aGUgXCJBc2tcIiBhZ2VudFxuZXhwb3J0IHtcbiAgdG9rZW5pemUsXG4gIGNodW5rTWFya2Rvd24sXG4gIGJ1aWxkR3JvdW5kaW5nSW5kZXgsXG4gIGJ1aWxkRG9jc0luZGV4RnJvbUZpbGVzLFxufSBmcm9tICcuL2dyb3VuZGluZy5qcyc7XG5leHBvcnQgdHlwZSB7IEdyb3VuZGluZ0RvYywgR3JvdW5kaW5nSGl0LCBHcm91bmRpbmdJbmRleCwgRG9jRmlsZSB9IGZyb20gJy4vZ3JvdW5kaW5nLmpzJztcblxuLy8gXCJBc2tcIiBhZ2VudCDigJQgcmVhZC1vbmx5IGhvdy10byAoUkFHKSBjb3JlXG5leHBvcnQge1xuICBhbnN3ZXJIb3dUbyxcbiAgc3RyZWFtSG93VG8sXG4gIGJ1aWxkR3JvdW5kaW5nQ29udGV4dCxcbn0gZnJvbSAnLi9hc2stYWdlbnQuanMnO1xuZXhwb3J0IHR5cGUgeyBBc2tTb3VyY2UsIEFuc3dlckhvd1RvT3B0aW9ucyB9IGZyb20gJy4vYXNrLWFnZW50LmpzJztcblxuLy8gUmUtZXhwb3J0IEFJIFNESyB0eXBlcyBjb25zdW1lcnMgY29tbW9ubHkgbmVlZFxuZXhwb3J0IHR5cGUgeyBMYW5ndWFnZU1vZGVsLCBUb29sLCBUb29sU2V0IH0gZnJvbSAnYWknO1xuLy8gZ2VuZXJhdGVUZXh0L3N0cmVhbVRleHQvT3V0cHV0IGZvciBnZW5lcmF0aW9uOyB0b29sL2dlbmVyYXRlT2JqZWN0L3N0ZXBDb3VudElzXG4vLyBmb3IgdGhlIGFnZW50IHRvb2wtY2FsbGluZyBsb29wIChQaGFzZSAyIHdyaXRlIHRvb2xzKS5cbmV4cG9ydCB7IGdlbmVyYXRlVGV4dCwgc3RyZWFtVGV4dCwgT3V0cHV0LCB0b29sLCBnZW5lcmF0ZU9iamVjdCwgc3RlcENvdW50SXMgfSBmcm9tICdhaSc7XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osa0JBQWtCLEdBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFJaEMsNENBQTRDO0FBQzVDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsYUFBYSxFQUNiLG1CQUFtQixFQUNuQix1QkFBdUIsR0FDeEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4Qiw0Q0FBNEM7QUFDNUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gscUJBQXFCLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsaUZBQWlGO0FBQ2pGLHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHtcbiAgZ2V0QXZhaWxhYmxlUHJvdmlkZXJzLFxuICBnZXRQcm92aWRlck1vZGVscyxcbiAgcmVzb2x2ZU1vZGVsLFxuICBjcmVhdGVNb2RlbFdpdGhLZXksXG59IGZyb20gJy4vcHJvdmlkZXItcmVnaXN0cnkuanMnO1xuXG5leHBvcnQgdHlwZSB7IFByb3ZpZGVyRW50cnkgfSBmcm9tICcuL3Byb3ZpZGVyLXJlZ2lzdHJ5LmpzJztcblxuLy8gR3JvdW5kaW5nIC8gcmV0cmlldmFsIGZvciB0aGUgXCJBc2tcIiBhZ2VudFxuZXhwb3J0IHtcbiAgdG9rZW5pemUsXG4gIGNodW5rTWFya2Rvd24sXG4gIGJ1aWxkR3JvdW5kaW5nSW5kZXgsXG4gIGJ1aWxkRG9jc0luZGV4RnJvbUZpbGVzLFxufSBmcm9tICcuL2dyb3VuZGluZy5qcyc7XG5leHBvcnQgdHlwZSB7IEdyb3VuZGluZ0RvYywgR3JvdW5kaW5nSGl0LCBHcm91bmRpbmdJbmRleCwgRG9jRmlsZSB9IGZyb20gJy4vZ3JvdW5kaW5nLmpzJztcblxuLy8gXCJBc2tcIiBhZ2VudCDigJQgcmVhZC1vbmx5IGhvdy10byAoUkFHKSBjb3JlXG5leHBvcnQge1xuICBhbnN3ZXJIb3dUbyxcbiAgc3RyZWFtSG93VG8sXG4gIGJ1aWxkR3JvdW5kaW5nQ29udGV4dCxcbn0gZnJvbSAnLi9hc2stYWdlbnQuanMnO1xuZXhwb3J0IHR5cGUgeyBBc2tTb3VyY2UsIEFuc3dlckhvd1RvT3B0aW9ucywgQXNrU3RyZWFtRXZlbnQgfSBmcm9tICcuL2Fzay1hZ2VudC5qcyc7XG5cbi8vIFJlLWV4cG9ydCBBSSBTREsgdHlwZXMgY29uc3VtZXJzIGNvbW1vbmx5IG5lZWRcbmV4cG9ydCB0eXBlIHsgTGFuZ3VhZ2VNb2RlbCwgVG9vbCwgVG9vbFNldCB9IGZyb20gJ2FpJztcbi8vIGdlbmVyYXRlVGV4dC9zdHJlYW1UZXh0L091dHB1dCBmb3IgZ2VuZXJhdGlvbjsgdG9vbC9nZW5lcmF0ZU9iamVjdC9zdGVwQ291bnRJc1xuLy8gZm9yIHRoZSBhZ2VudCB0b29sLWNhbGxpbmcgbG9vcCAoUGhhc2UgMiB3cml0ZSB0b29scykuXG5leHBvcnQgeyBnZW5lcmF0ZVRleHQsIHN0cmVhbVRleHQsIE91dHB1dCwgdG9vbCwgZ2VuZXJhdGVPYmplY3QsIHN0ZXBDb3VudElzIH0gZnJvbSAnYWknO1xuIl19
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  "@ai-sdk/xai": "4.0.44",
30
30
  "@aws-sdk/credential-providers": "3.1101.0",
31
31
  "ai": "7.0.79",
32
- "@pipeline-builder/api-core": "4.1.3"
32
+ "@pipeline-builder/api-core": "4.1.4"
33
33
  },
34
34
  "keywords": [
35
35
  "ci-cd",
@@ -85,7 +85,7 @@
85
85
  "access": "public",
86
86
  "registry": "https://registry.npmjs.org/"
87
87
  },
88
- "version": "4.1.3",
88
+ "version": "4.1.4",
89
89
  "bugs": {
90
90
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
91
91
  },