gemi 0.82.0 → 0.83.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.
- package/dist/ai/Agent.d.ts +26 -1
- package/dist/ai/Agent.d.ts.map +1 -1
- package/dist/ai/index.js +2 -2
- package/dist/ai/index.js.map +4 -4
- package/dist/ai/providers/request.d.ts +1 -1
- package/dist/ai/providers/request.d.ts.map +1 -1
- package/dist/{chunk-3k2asp5z.js → chunk-8ndqqsf0.js} +1 -1
- package/dist/{chunk-kghwayjv.js → chunk-cmj9xnbp.js} +2 -2
- package/dist/{chunk-kghwayjv.js.map → chunk-cmj9xnbp.js.map} +1 -1
- package/dist/{chunk-qff26x59.js → chunk-h2pbrneh.js} +1 -1
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- /package/dist/{chunk-3k2asp5z.js.map → chunk-8ndqqsf0.js.map} +0 -0
- /package/dist/{chunk-qff26x59.js.map → chunk-h2pbrneh.js.map} +0 -0
package/dist/ai/Agent.d.ts
CHANGED
|
@@ -638,7 +638,29 @@ export declare class Skill<Name extends string = string> {
|
|
|
638
638
|
}
|
|
639
639
|
/** Reserved: a skill is lowered into a namespace of exactly this name. */
|
|
640
640
|
export declare const SKILLS_NAMESPACE = "skills";
|
|
641
|
-
|
|
641
|
+
/**
|
|
642
|
+
* How hard the model should think before it answers, sent as the provider's own
|
|
643
|
+
* effort setting (`reasoning.effort` on the Responses API).
|
|
644
|
+
*
|
|
645
|
+
* WHICH VALUES A MODEL TAKES IS THE MODEL'S BUSINESS, not gemi's. gpt-5 takes
|
|
646
|
+
* `"minimal"` and not `"none"`; gpt-5.1 and later take `"none"`; Azure's
|
|
647
|
+
* gpt-6-sol answers 400 to `"minimal"` and lists `none | low | medium | high |
|
|
648
|
+
* xhigh | max` (#658). A closed union meant an app could not say the one value
|
|
649
|
+
* its model wanted, and every new value waited on a gemi release. So the known
|
|
650
|
+
* values are listed for autocomplete and any other string is passed through
|
|
651
|
+
* unchanged — the same bet `capabilitiesForModel` makes on unknown model ids: a
|
|
652
|
+
* value the model rejects fails loudly, once, with the API naming the values it
|
|
653
|
+
* does accept (on `result().error`), and the fix is one line.
|
|
654
|
+
*
|
|
655
|
+
* `"none"` turns reasoning off on models that support it, which is what a short,
|
|
656
|
+
* latency-bound call wants: with any effort at all, `maxOutputTokens` caps the
|
|
657
|
+
* reasoning tokens too, and a small cap can be spent entirely on thinking. It is
|
|
658
|
+
* not the same as leaving `reasoning` unset, which gets the model's default
|
|
659
|
+
* (usually `"medium"`). On a model with no reasoning parameter at all
|
|
660
|
+
* (`capabilities.reasoning` is false) every value, `"none"` included, is
|
|
661
|
+
* dropped, since there is nothing to turn off.
|
|
662
|
+
*/
|
|
663
|
+
export type ReasoningEffort = "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | (string & {});
|
|
642
664
|
export interface CreateAgentParams<T extends readonly ToolEntry[], S extends readonly Skill[], O extends Schema<any> | undefined> {
|
|
643
665
|
name: string;
|
|
644
666
|
/** The system prompt. Per-request additions belong on the controller, which
|
|
@@ -667,6 +689,9 @@ export interface CreateAgentParams<T extends readonly ToolEntry[], S extends rea
|
|
|
667
689
|
* recursive shape a name check cannot see, and for the merely runaway one.
|
|
668
690
|
*/
|
|
669
691
|
maxDepth?: number;
|
|
692
|
+
/** The model's reasoning effort, e.g. `"none"` for a quick one-liner or
|
|
693
|
+
* `"high"` for a hard problem. Unset gets the model's default. Any string
|
|
694
|
+
* the model accepts works — see `ReasoningEffort`. */
|
|
670
695
|
reasoning?: ReasoningEffort;
|
|
671
696
|
/**
|
|
672
697
|
* A ceiling on the tokens one model call may produce, passed to the provider
|
package/dist/ai/Agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../ai/Agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAA2C,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAkB,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEhG,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM,EAAE,MAAM,UAAU,CAAC;AAU1D,OAAO,KAAK,EACV,UAAU,EAEV,iBAAiB,EAGjB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEhB,UAAU,EAEV,YAAY,EACZ,SAAS,EACT,eAAe,EAGf,UAAU,EACV,KAAK,EACN,MAAM,SAAS,CAAC;AAIjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,YAAY;CAAG;AAEhC;;;;GAIG;AACH,KAAK,YAAY,GAAG,EAAE,SAAS,YAAY,GACvC;IAAE,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;OAYG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,WAAW,EAAE,eAAe,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE1F;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhG;;;;;;;;OAQG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACzF;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,KAAK,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAExE,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG;IAC1D,kDAAkD;IAClD,MAAM,EAAE,CAAC,UAAU,GAAG,MAAM,EAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;8DAC0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAChC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd;wEACoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,+EAA+E;IAC/E,MAAM,CAAC,EAAE,CAAC,CAAC;IACX;kCAC8B;IAC9B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,gEAAgE;IAChE,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB;sEACkE;IAClE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;gBAEf,MAAM,EAAE;QAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE;CAOtF;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,IAAI,CAC3D,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,WAAW,KACb,OAAO,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAE9D,KAAK,kBAAkB,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI;IAC5D,IAAI,EAAE,IAAI,CAAC;IACX,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,IAC3E,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG;IACzC,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC,GACF,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG;IACzC,UAAU,EAAE,QAAQ,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,KAAK,CAAC;CAC1B,CAAC,CAAC;AAEP;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,SAAS,CACpB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,OAAO,EAChB,QAAQ,GAAG,KAAK;IAEhB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAExD,OAAO;IAYP;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EACtE,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GACpD,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;IAW3C;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QACpD,IAAI,EAAE,IAAI,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9B,GAAG,SAAS,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC;CASlD;AAmCD,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAa,CACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,CAAC,SAAS,SAAS,YAAY,EAAE,GAAG,SAAS,YAAY,EAAE;IAE3D,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,OAAO;IAOP,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,SAAS,YAAY,EAAE,EAAE,MAAM,EAAE;QACxF,IAAI,EAAE,IAAI,CAAC;QACX,mEAAmE;QACnE,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC;QACT;4EACoE;QACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;CAG3B;AAED,sEAAsE;AACtE,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC;AAEtF,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACzE,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GACpC,EAAE,CAAC,MAAM,CAAC,GACV,CAAC,GACH,KAAK,CAAC;AAEV;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,IAAI;KACxD,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,SAAS,CAC7E,GAAG,EACH,MAAM,CAAC,EACP,MAAM,CAAC,EACP,MAAM,CAAC,CACR,GACG;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,CAAC,CAAA;KAAE,GACpC,KAAK;CACV,CAAC;AAIF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,eAAe,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC3D,IAAI,EAAE,IAAI,CAAC;IACX,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,KAAK,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC7C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,OAAO;IAOP,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;CAGrF;AAED,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAwFzC,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,SAAS,SAAS,EAAE,EAC9B,CAAC,SAAS,SAAS,KAAK,EAAE,EAC1B,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS;IAEjC,IAAI,EAAE,MAAM,CAAC;IACb;2EACuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV;0EACsE;IACtE,MAAM,CAAC,EAAE,CAAC,CAAC;IACX;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC;IACX;0EACsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,YAAY,CAAC;AAErE,UAAU,qBAAqB;IAC7B;8CAC0C;IAC1C,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,kEAAkE;IAClE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;qDAEiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;qBACiB;IACjB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB;mDAC+C;IAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;OAKG;IACH,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IACzC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,IAAI;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,2EAA2E;IAC3E,MAAM,CAAC,EAAE,CAAC,CAAC;IACX;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAEzC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE;CAWrF;AAqBD;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa,CAC7F,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CACvB;IACC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ,CAAC;IACjD;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE;;;;;;;;;;OAUG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1C;AAoCD,qBAAa,KAAK,CAChB,CAAC,SAAS,SAAS,SAAS,EAAE,GAAG,SAAS,SAAS,EAAE,EACrD,CAAC,SAAS,SAAS,KAAK,EAAE,GAAG,SAAS,KAAK,EAAE,EAC7C,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS;IAE7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO;IA+BP,MAAM,CAAC,MAAM,CACX,KAAK,CAAC,CAAC,SAAS,SAAS,SAAS,EAAE,EACpC,KAAK,CAAC,CAAC,SAAS,SAAS,KAAK,EAAE,EAChC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,EAC7C,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAUrD,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAsB1E;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAEnE,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../../ai/Agent.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/index.js
CHANGED
|
@@ -15,6 +15,6 @@ data: ${JSON.stringify(K.event)}
|
|
|
15
15
|
`):void 0}async runTools(Q,$,Z){let G=[],J=[];for(let W of $){let Y=this.config.registry.get(String(W.name));if(!Y){this.addResult(Q,{type:"tool-result",toolCallId:W.toolCallId,name:W.name,status:"error",error:{code:"tool_error",message:`There is no tool named "${String(W.name)}".`,toolCallId:W.toolCallId,retryable:!0}});continue}let K=Y.tool.inputSchema.safeParse(W.input);if(K.ok===!1){this.addResult(Q,{type:"tool-result",toolCallId:W.toolCallId,name:W.name,status:"error",error:{code:"invalid_tool_input",message:`Invalid arguments for "${String(W.name)}": ${K.errors.join(", ")}`,toolCallId:W.toolCallId,retryable:!0}});continue}W.input=K.value;let X=E6(Y.tool);if(X){if(this.onPending==="deny"){this.addResult(Q,this.deniedByPolicy(W));continue}G.push({toolCallId:W.toolCallId,name:W.name,input:K.value,kind:X,signature:V6(this.claimsFor(W.toolCallId,String(W.name),X,K.value)),...this.pathPrefix.length>0?{path:[...this.pathPrefix]}:{}});continue}J.push(this.executeTool(Y,Q.id,W,K.value,Z).then(async(V)=>{this.addResult(Q,V),await this.settleShown(W.toolCallId)}).catch((V)=>{if(V instanceof k){if(this.onPending==="deny"){this.addResult(Q,this.deniedByPolicy(W));return}G.push(...V.pending);return}}))}return await e(Promise.all(J).then(()=>{return}),this.controller.signal),G}claimsFor(Q,$,Z,G){return{runId:this.signingRunId,toolCallId:Q,name:$,kind:Z,input:G,path:this.pathPrefix.length>0?[...this.pathPrefix]:void 0}}deniedByPolicy(Q){return{type:"tool-result",toolCallId:Q.toolCallId,name:Q.name,status:"denied",cause:"refused",reason:`"${String(Q.name)}" needs the user, and this run was started with onPending: "deny". Answer from what you already have.`}}async executeTool(Q,$,Z,G,J,W){let Y=Q.tool.timeoutMs;if(Y===void 0)return this.runToolBody(Q,$,Z,G,J,W,this.controller.signal,()=>!1);let K=new AbortController,X=this.controller.signal,V=()=>K.abort(X.reason);if(X.aborted)V();else X.addEventListener("abort",V,{once:!0});let H=!1,B=this.runToolBody(Q,$,Z,G,J,W,K.signal,()=>H),z=()=>{},D=new Promise((F)=>{z=_6(Y,()=>{let U=`"${String(Z.name)}" did not finish within ${SQ(Y)} (timeoutMs: ${Y}) and was cancelled.`;K.abort(new DOMException(U,"TimeoutError")),F({type:"tool-result",toolCallId:Z.toolCallId,name:Z.name,status:"error",error:{code:"timeout",message:U,toolCallId:Z.toolCallId,retryable:!0}})})});B.catch(()=>{});try{return await Promise.race([B,D])}finally{H=!0,z()}}async runToolBody(Q,$,Z,G,J,W,Y,K){let X=this.toolFiles(Z,Y),V={context:this.context,body:this.params.body??{},runId:this.runId,threadId:this.params.threadId,toolCallId:Z.toolCallId,signal:Y,step:J,depth:this.depth,resumed:W!==void 0,attachments:X.attachments,generateImage:X.generateImage,editImage:X.editImage,turn:this.toolTurn($),runAgent:this.nestedRunner($,Z,Y,W)};try{let H=Q.tool.execute(G,V),B;if(u9(H)){let z=await H.next();while(!z.done){if(K())throw H.return(void 0).catch(()=>{}),new j;this.emit({type:"tool-progress",toolCallId:Z.toolCallId,data:z.value}),z=await H.next()}B=z.value}else B=await H;return{type:"tool-result",toolCallId:Z.toolCallId,name:Z.name,status:"ok",output:B}}catch(H){if(H instanceof j||this.controller.signal.aborted)throw new j;if(H instanceof k)throw H;return{type:"tool-result",toolCallId:Z.toolCallId,name:Z.name,status:"error",error:{code:"tool_error",message:H instanceof Error?H.message:String(H),toolCallId:Z.toolCallId,retryable:!0}}}}nestedRunner(Q,$,Z,G){let J=new TQ(()=>$.nested,()=>$.nested=[]);return async(W,Y={})=>{let{at:K,recorded:X,write:V}=J.next();if(X){let H=p9(X,W,Y);if(H)throw Error(`Nested run ${K} of "${String($.name)}" ${H}. `+"runAgent is memoized by call index, so a body whose runAgent calls depend on a condition that changed between turns cannot be resumed \u2014 the answer would be paired with a different sub-run. "+"Make the sequence of runAgent calls, and what each one is asked, the same every time this tool runs, or branch on ctx.resumed.");if(X.finishReason!=="awaiting-input")return{runId:X.runId,agent:X.agent,messages:X.messages,finishReason:X.finishReason??"stop",usage:X.usage??QQ(),output:q6(X.messages),nested:X}}return this.runNested(Q,$,Z,W,Y,V,X,G?.answers??[])}}async runNested(Q,$,Z,G,J,W,Y,K){let X=[...this.chain,G.name];if(this.chain.includes(G.name))throw Error(`"${G.name}" is already running further up this chain: ${X.join(" -> ")}. An agent cannot run itself, directly or through another agent.`);let V=this.depth+1;if(V>this.maxDepth)throw Error(`Nested agent runs are ${this.maxDepth} deep at most and this one would be ${V}: ${X.join(" -> ")}. Raise maxDepth on the agent at the root of the run if the tree is meant to be this deep.`);let H=J.label,B=[...this.pathPrefix,$.toolCallId],z=this.onPending==="deny"?"deny":J.onPending??"escalate",D=Y!==void 0,F=D?ZQ(Y.messages):new Set,U=D?K.filter((N)=>{let I=T6(N.path,B);if(I===null)return!1;return F.has(I.length>0?I[0]:N.toolCallId)}):[],L=G.stream({messages:D?Y.messages:J.messages??[],turn:D?{toolResults:U}:J.prompt?{text:J.prompt}:void 0,context:this.context,attachments:this.params.attachments,body:this.params.body,signal:Z,threadId:this.params.threadId,instructions:J.instructions,maxOutputTokens:J.maxOutputTokens,temperature:J.temperature,runId:D?Y.runId:void 0,nesting:{depth:V,maxDepth:this.maxDepth,chain:X,signingRunId:this.signingRunId,signingPath:B,onPending:z}}),O=[],x=(async()=>{for await(let N of L){if(N.type==="awaiting-input")O=N.pending;this.emit({type:"nested-event",toolCallId:$.toolCallId,runId:L.runId,agent:G.name,label:H,event:N})}})(),q=(async()=>{let N=await L.result();await x;let I=D?M6(Y.messages,N.messages):M6(J.messages??[],N.messages),Z6={runId:L.runId,agent:G.name,label:H,messages:I,finishReason:N.finishReason,usage:D?$Q(Y.usage??QQ(),N.usage):N.usage,...N.finishReason==="awaiting-input"?{signature:B6({runId:this.signingRunId,path:B,nestedRunId:L.runId,open:[...ZQ(I)],input:$.input})}:{}};return W(Z6),this.usage=$Q(this.usage,N.usage),{result:N,record:Z6}})(),C=q.then(()=>{return},()=>{return});this.nestedSettling.add(C);let b,S;try{({result:b,record:S}=await q)}finally{this.nestedSettling.delete(C)}if(this.controller.signal.aborted)throw new j;if(b.finishReason==="awaiting-input"){if(O.length===0)throw Error(`"${G.name}" ended awaiting input but asked nothing, so there is no question to escalate.`);throw this.emit({type:"tool-call",messageId:Q,part:$,resent:!0}),new k({pending:O,path:B,nested:S})}return{runId:S.runId,agent:G.name,messages:S.messages,finishReason:b.finishReason,usage:S.usage??QQ(),output:b.output??q6(S.messages),...b.error?{error:b.error}:{},nested:S}}addResult(Q,$){Q.content.push($),this.emit({type:"tool-result",messageId:Q.id,part:$})}toolFiles(Q,$){let Z=this.params.attachments??null,G=new TQ(()=>Q.attachments,()=>Q.attachments=[],()=>({failed:!0})),J=()=>{if(!Z)throw new f("This request has no attachment scope, so a tool cannot store or read files on it. `attachmentScope()` returned null \u2014 put the chat route behind authentication, send a `threadId`, or override `attachmentScope()` on the controller.");return Z},W=async(V,H,B)=>{let z=J(),D=H.mimeType||V.type||"",F=H.name??(V instanceof File?V.name:"attachment"),U;if(H.showModel){let O=this.config.provider;if(!O.capabilities.fileInput)throw Error(`"${String(Q.name)}" asked to show a file to ${O.model}, which does not accept file input. Drop \`showModel\` for this provider, or run this agent on a model that takes files \u2014 \`capabilities.fileInput\` is what says which do.`);U=await O.upload(new File([V],F,{type:D||void 0}))}return{attachment:await z.put(V,{name:F,mimeType:D,fileId:U}),...B?{generated:B}:{},...U?{shown:{fileId:U,messageId:`msg_${crypto.randomUUID()}`,createdAt:new Date().toISOString()}}:{}}},Y=(V,H,B)=>{let z=V.generated?"image":"put";if(z===H)return;throw Error(`Attachment ${B} of "${String(Q.name)}" was ${z==="image"?"a generated image":"a stored file"} on the first attempt and is ${H==="image"?"a generated image":"a stored file"} now. ctx.attachments.put, ctx.generateImage and ctx.editImage share one memo indexed by call order within a tool call, so the sequence has to be the same every time this tool runs. Branch on ctx.resumed if it cannot be.`)},K=async(V,H,B)=>{let{at:z,recorded:D,write:F}=G.next();if(D&&"attachment"in D){if(Y(D,"image",z),D.shown)this.queueShown(Q.toolCallId,D);return{attachment:D.attachment,size:D.generated.size,mimeType:D.attachment.mimeType,usage:D.generated.usage}}let U=await B();this.usage=$Q(this.usage,U.usage);let L=U.mimeType==="image/jpeg"?"jpg":"png",O=await W(U.image,{name:H.name??`${V.name}.${L}`,mimeType:U.mimeType,...H.showModel?{showModel:!0}:{}},{size:U.size,usage:U.usage});if(F(O),O.shown)this.queueShown(Q.toolCallId,O);return{attachment:O.attachment,size:U.size,mimeType:U.mimeType,usage:U.usage}},X=async(V)=>typeof V==="string"?await J().file(V):V;return{generateImage:(V,H)=>K(V,H,()=>V.generate({...H,signal:$})),editImage:(V,H)=>K(V,H,async()=>{let{images:B,mask:z,...D}=H;return await V.edit({...D,images:await Promise.all(B.map(X)),...z?{mask:await X(z)}:{},signal:$})}),attachments:{get:(V)=>J().get(V),read:(V)=>J().read(V),file:(V)=>J().file(V),put:async(V,H={})=>{let{at:B,recorded:z,write:D}=G.next();if(z&&"attachment"in z){Y(z,"put",B);let U=c9(z,V,H);if(U)throw Error(`Attachment ${B} of "${String(Q.name)}" ${U}. `+"ctx.attachments.put is memoized by call index within a tool call, so a body whose put calls depend on a condition that changed between turns cannot be replayed \u2014 the model would be shown a file under an id that names different bytes. "+"Make the sequence of put calls the same every time this tool runs, or branch on ctx.resumed.");if(z.shown)this.queueShown(Q.toolCallId,z);return z.attachment}let F=await W(V,H);if(D(F),F.shown)this.queueShown(Q.toolCallId,F);return F.attachment}}}}toolTurn(Q){let $=this.history.findIndex((W)=>W.id===Q),Z=R6(this.history),G;for(let W=$-1;W>=0;W--){let Y=this.history[W];if(Y.role!=="user"||Z.has(Y.id))continue;G=Y;break}let J=[];for(let W of G?.content??[]){if(W.type!=="file")continue;let Y=W.attachmentId;if(typeof Y!=="string"||!Y.startsWith(_))continue;if(!J.includes(Y))J.push(Y)}return Object.freeze({attachments:Object.freeze(J)})}queueShown(Q,$){let Z=$.shown;if(!Z)return;let G=this.shownQueue.get(Q)??[];if(G.some((J)=>J.id===Z.messageId))return;G.push({id:Z.messageId,role:"user",content:[{type:"file",fileId:Z.fileId,name:$.attachment.name,mimeType:$.attachment.mimeType,attachmentId:$.attachment.id}],createdAt:Z.createdAt,finishReason:"stop"}),this.shownQueue.set(Q,G)}async settleShown(Q){let $=this.shownQueue.get(Q);if(!$||$.length===0)return;if(this.shownQueue.delete(Q),this.ended||this.controller.signal.aborted)return;for(let Z of $){if(this.history.some((G)=>G.id===Z.id))continue;this.history.push(Z),this.produced.push(Z),this.emit({type:"message",message:Z}),this.unreported.add(Z)}}historyForProvider(Q){let $=this.history.filter((W)=>W!==Q),Z=R6($),G=[];for(let W of $){if(!Z.has(W.id))continue;for(let Y of W.content)if(Y.type==="file")G.push(Y)}if(G.length<=k6)return $;let J=new Set(G.slice(0,G.length-k6));return $.map((W)=>{if(!W.content.some((Y)=>Y.type==="file"&&J.has(Y)))return W;return{...W,content:W.content.map((Y)=>Y.type==="file"&&J.has(Y)?{type:"text",text:`[A ${Y.mimeType||"file"} produced by a tool (attachment ${Y.attachmentId}) was attached here and has been dropped from this request: only the most recent tool-produced file is kept attached, to keep the context bounded. Call the tool again if you need to look at it.]`}:Y)}})}async ingestTurn(){let Q=this.params.turn,$=this.openCalls(),Z=[];if($.length>0){let G=new Set,J=new Set,W=new Map;for(let Y of Q?.toolResults??[]){let K=`${(Y.path??[]).join("/")}#${Y.toolCallId}`;if(J.has(K))continue;J.add(K);let X=(z)=>this.emit({type:"error",error:{code:"invalid_tool_result",message:z,toolCallId:Y.toolCallId,retryable:!1}}),V=T6(Y.path,this.pathPrefix);if(V===null){X(`The answer for "${Y.toolCallId}" is addressed to a tool call this run is not inside.`);continue}if(V.length>0){let z=V[0],D=$.find((L)=>L.call.toolCallId===z);if(!D){X(`No pending tool call with id "${z}" to deliver a nested answer to.`);continue}let F=this.parkedBelow(D.call,V,Y.toolCallId);if(F.ok===!1){let L=`The answer for "${Y.toolCallId}" is addressed under "${z}", which`;X(F.reason==="unparked"?`${L} has no sub-agent run waiting on that question.`:F.reason==="expired"?`${L} parked a sub-agent run that has since expired. Ask again.`:`${L} carries a record of a parked sub-agent run the server did not sign.`);continue}let U=W.get(z);if(!U){if(!F6(F.signature)){X(`The answer for "${Y.toolCallId}" is addressed under "${z}", which has already been re-entered on that record. Ask again.`);continue}U=[],W.set(z,U),G.add(z)}U.push(Y);continue}let H=$.find((z)=>z.call.toolCallId===Y.toolCallId);if(!H){X(`No pending tool call with id "${Y.toolCallId}".`);continue}let B=await this.resolveAnswer(H,Y,Z);if(B===null)continue;if(G.add(Y.toolCallId),B!=="open")this.attachToHistory(H,B),await this.settleShown(Y.toolCallId)}for(let[Y,K]of W){let X=$.find((H)=>H.call.toolCallId===Y),V=await this.reenter(X,K,Z);if(V)this.attachToHistory(X,V),await this.settleShown(Y)}for(let Y of $){if(G.has(Y.call.toolCallId))continue;this.attachToHistory(Y,{type:"tool-result",toolCallId:Y.call.toolCallId,name:Y.call.name,status:"denied",cause:"refused"})}await this.reportDeferred()}if(Q&&(Q.text||Q.files&&Q.files.length>0)){let G={id:`msg_${crypto.randomUUID()}`,role:"user",content:[...Q.text?[{type:"text",text:Q.text}]:[],...(Q.files??[]).map((J)=>({type:"file",...J.fileId?{fileId:J.fileId}:{},name:J.name,mimeType:J.mimeType,...J.attachmentId?{attachmentId:J.attachmentId}:{}}))],createdAt:new Date().toISOString(),finishReason:"stop"};this.history.push(G),this.produced.push(G),await this.report(G)}return Z}parkedBelow(Q,$,Z){let G=$.length>1?$[1]:Z,J=[...this.pathPrefix,Q.toolCallId],W=(Q.nested??[]).find((K)=>K.finishReason==="awaiting-input"&&ZQ(K.messages).has(G));if(!W)return{ok:!1,reason:"unparked"};if(typeof W.signature!=="string")return{ok:!1,reason:"unsigned"};let Y=z6(W.signature,{path:J,nestedRunId:W.runId,open:[...ZQ(W.messages)],input:Q.input});if(Y.ok===!1)return{ok:!1,reason:Y.reason==="expired"?"expired":"unsigned"};return{ok:!0,signature:W.signature}}async reenter(Q,$,Z){let G=String(Q.call.name),J=this.config.registry.get(G);if(!J||!J.tool.execute)return{type:"tool-result",toolCallId:Q.call.toolCallId,name:Q.call.name,status:"error",error:{code:"invalid_tool_result",message:`The tool "${G}" no longer exists, so the sub-agent's question cannot be delivered.`,toolCallId:Q.call.toolCallId,retryable:!1}};let W=J.tool.inputSchema.safeParse(Q.call.input);if(W.ok===!1)return{type:"tool-result",toolCallId:Q.call.toolCallId,name:Q.call.name,status:"error",error:{code:"invalid_tool_input",message:`Invalid arguments for "${G}": ${W.errors.join(", ")}`,toolCallId:Q.call.toolCallId,retryable:!0}};let Y=this.amendCall(Q);Y.input=W.value;try{return await e(this.executeTool(J,Q.message.id,Y,W.value,0,{answers:$}),this.controller.signal)}catch(K){if(K instanceof k)return Z.push(...K.pending),null;throw K}}amendCall(Q){let $=this.amend(Q.message),Z=$.content.indexOf(Q.call),G={...Q.call,nested:(Q.call.nested??[]).map((J)=>({...J})),...Q.call.attachments?{attachments:Q.call.attachments.map((J)=>({...J}))}:{}};if(Z>=0)$.content[Z]=G;return this.unreported.add($),G}openCalls(){let Q=new Set;for(let Z of this.history)for(let G of Z.content)if(G.type==="tool-result")Q.add(G.toolCallId);let $=[];for(let Z of this.history)for(let G of Z.content)if(G.type==="tool-call"&&!Q.has(G.toolCallId))$.push({message:Z,call:G});return $}async resolveAnswer(Q,$,Z){let G=Q.call,J=String(G.name),W=this.config.registry.get(J),Y=(H)=>{return this.emit({type:"error",error:{code:"invalid_tool_result",message:H,toolCallId:G.toolCallId,retryable:!1}}),null};if(!W)return Y(`The tool "${J}" no longer exists, so its answer cannot be checked.`);let K=E6(W.tool);if(!K)return Y(`"${J}" is a server tool with no pending question.`);if(typeof $.signature!=="string"||$.signature.length===0)return Y(`The answer for "${J}" carried no signature.`);let X=o($.signature);if(!X)return Y(`The signature for "${J}" is malformed.`);let V=K6($.signature,{...this.claimsFor(G.toolCallId,J,K,G.input),runId:X.runId});if(V.ok===!1)return Y(V.reason==="expired"?`The approval for "${J}" has expired. Ask again.`:`The answer for "${J}" does not match the call the server made.`);if(!D6($.signature))return Y(`The answer for "${J}" has already been used. Ask again.`);if("approve"in $){if(K!=="approval")return Y(`"${J}" is answered by the client, not approved.`);if($.approve===!0){let H=this.amendCall(Q);try{return await e(this.executeTool(W,Q.message.id,H,H.input,0),this.controller.signal)}catch(B){if(B instanceof k)return Z.push(...B.pending),"open";throw B}}return{type:"tool-result",toolCallId:G.toolCallId,name:G.name,status:"denied",cause:"refused",reason:$.reason}}if("output"in $){if(K==="approval")return Y(`"${J}" is approved, not answered: the server produces its result.`);let H=W.tool.outputSchema,B=H?H.safeParse($.output):{ok:!0,value:$.output};if(B.ok===!1)return{type:"tool-result",toolCallId:G.toolCallId,name:G.name,status:"error",error:{code:"invalid_tool_result",message:`The answer for "${J}" did not match its output schema: ${B.errors.join(", ")}`,toolCallId:G.toolCallId,retryable:!0}};return{type:"tool-result",toolCallId:G.toolCallId,name:G.name,status:"ok",output:B.value}}return Y(`The answer for "${J}" carried neither an approval nor an output.`)}attachToHistory(Q,$){let Z=this.amend(Q.message);Z.content.push($),this.unreported.add(Z),this.emit({type:"tool-result",messageId:Z.id,part:$})}amend(Q){let $=this.amended.get(Q.id);if($)return $;let Z={...Q,content:[...Q.content]},G=this.history.indexOf(Q);if(G>=0)this.history[G]=Z;return this.produced.push(Z),this.amended.set(Q.id,Z),Z}async reportDeferred(){let Q=[...this.unreported];this.unreported.clear();for(let $ of Q)await this.report($)}async finalizeAborted(){if(this.nestedSettling.size>0)await Promise.all([...this.nestedSettling]);for(let $ of this.openCalls()){if($.message===this.current)continue;this.attachToHistory($,{type:"tool-result",toolCallId:$.call.toolCallId,name:$.call.name,status:"denied",cause:"stopped",reason:this.stopReason})}await this.reportDeferred();let Q=this.current;if(Q){let $=new Set(Q.content.filter((Z)=>Z.type==="tool-result").map((Z)=>Z.toolCallId));for(let Z of[...Q.content]){if(Z.type!=="tool-call"||$.has(Z.toolCallId))continue;delete Z.partial,this.addResult(Q,{type:"tool-result",toolCallId:Z.toolCallId,name:Z.name,status:"denied",cause:"stopped",reason:this.stopReason})}}if(this.timedOutAfter!==void 0){this.fail({code:"timeout",message:`The run did not finish within its time limit of ${SQ(this.timedOutAfter)} (maxRunDurationMs: ${this.timedOutAfter}) and was stopped.`,retryable:!0}),this.finishReason="error",await this.finalizeMessage("error");return}this.finishReason="aborted",await this.finalizeMessage("aborted")}}function E6(Q){if(Q.answeredBy==="client")return Q.inputSchema===EQ?"question":"client";return Q.requiresApproval?"approval":null}function A6(Q){if(!Q||!Q.trim())return{};try{return JSON.parse(Q)}catch{return Q}}function m9(Q){if(Q.length>0)Q[0];return Q}function l9(Q,$,Z){let G=Q.content[Q.content.length-1];if(G&&G.type===$){G.text=(G.text??"")+Z;return}Q.content.push($==="text"?{type:"text",text:Z}:{type:"reasoning",text:Z})}function d9(Q,$,Z){let G=Q.content[Q.content.length-1];if(G&&G.type==="reasoning"&&G.id===$){G.text=(G.text??"")+Z;return}Q.content.push($?{type:"reasoning",id:$,text:Z}:{type:"reasoning",text:Z})}function i9(Q,$){return Q.descriptors($).map((Z)=>T.create({name:Z.name,description:Z.description,inputSchema:Z.inputSchema,requiresApproval:Z.requiresApproval,execute:(G,J)=>{let W=GQ.getStore()?.req;if(!W)throw Error(`"${Z.name}" calls an api route as the user who started this run, and this run was not started inside a request. Run it from an AgentController, or give this agent tools that do not go through the MCP registry.`);return Q.execute({kind:"local",req:W},Z.name,G,J)}}))}function o9(Q){if(Q==="auto")return;let $=/^(\d+)x(\d+)$/.exec(Q);if(!$)throw Error(`An image size is "WIDTHxHEIGHT" or "auto"; got ${JSON.stringify(Q)}.`);let Z=Number($[1]),G=Number($[2]);if(Z%16!==0||G%16!==0)throw Error(`Image size ${Q} is not supported: width and height must both be divisible by 16.`);if(Math.max(Z/G,G/Z)>3)throw Error(`Image size ${Q} is not supported: the maximum aspect ratio is 3:1, either way up.`)}function v6(Q,$){if(Q.size!==void 0)try{o9(Q.size)}catch(Z){throw Error(`${$}: ${Z.message}`)}if(Q.background==="transparent"&&Q.format==="jpeg")throw Error(`${$}: a transparent background needs "png"; JPEG has no alpha channel.`);if(Q.compression!==void 0){let Z=Q.compression;if(!Number.isInteger(Z)||Z<0||Z>100)throw Error(`${$}: compression is an integer from 0 to 100; got ${Z}.`)}}function y6(Q,$){if(Q instanceof File)return Q;let Z=Q.type||"image/png",G=Z==="image/jpeg"?"jpg":Z.split("/")[1]??"png";return new File([Q],`${$}.${G}`,{type:Z})}class wQ{name;provider;settings;constructor(Q){let{name:$,provider:Z,...G}=Q;v6(G,`ImageModel "${$}"`),this.name=$,this.provider=Z,this.settings=G}static create(Q){return new wQ(Q)}async generate(Q){let $=this.merge(Q);return h6(await this.provider.generate({prompt:Q.prompt,...$,signal:Q.signal}))}async edit(Q){let $=this.merge(Q);return h6(await this.provider.edit({prompt:Q.prompt,...$,images:Q.images.map((Z,G)=>y6(Z,`image-${G}`)),...Q.mask?{mask:y6(Q.mask,"mask")}:{},signal:Q.signal}))}merge(Q){let $={...this.settings,...Q.size!==void 0?{size:Q.size}:{},...Q.quality!==void 0?{quality:Q.quality}:{},...Q.background!==void 0?{background:Q.background}:{},...Q.format!==void 0?{format:Q.format}:{},...Q.compression!==void 0?{compression:Q.compression}:{}};return v6($,`ImageModel "${this.name}"`),$}}function h6(Q){return{image:new Blob([Q.bytes],{type:Q.mimeType}),mimeType:Q.mimeType,size:Q.size,usage:Q.usage}}function E(Q){return typeof process>"u"?void 0:process.env?.[Q]}var n9="preview";function u6(Q){let $=Q.trim().replace(/\/+$/,"");if(!$)return"";return`${$.replace(/\/openai(?:\/v1)?$/i,"")}/openai`}function s9(Q){return/^\d{4}-\d{2}-\d{2}/.test(Q)?"":"/v1"}function YQ(Q,$={}){return{base:(Q.baseURL??E("OPENAI_BASE_URL")??"https://api.openai.com/v1").replace(/\/+$/,""),query:"",headers:async()=>{let G=Q.apiKey??E("OPENAI_API_KEY");return{...G?{authorization:`Bearer ${G}`}:{},...Q.headers}},timeoutMs:Q.timeoutMs??$.timeoutMs??120000,maxRetries:Q.maxRetries??2}}function t9(Q){let $=Q.baseURL??Q.endpoint??E("AZURE_OPENAI_ENDPOINT");if($)return u6($);let Z=Q.resourceName??E("AZURE_OPENAI_RESOURCE_NAME")??E("AZURE_RESOURCE_NAME");return Z?u6(`https://${Z.trim()}.cognitiveservices.azure.com`):""}function XQ(Q,$={}){let Z=Q.apiVersion??E("AZURE_OPENAI_API_VERSION")??n9;return{base:`${t9(Q)}${s9(Z)}`,query:`?api-version=${encodeURIComponent(Z)}`,headers:async()=>{if(Q.getToken)return{authorization:`Bearer ${await Q.getToken()}`,...Q.headers};let G=Q.apiKey??E("AZURE_OPENAI_API_KEY");return{...G?{"api-key":G}:{},...Q.headers}},timeoutMs:Q.timeoutMs??$.timeoutMs??120000,maxRetries:Q.maxRetries??2}}var r9=500,c6=20000;function a9(Q,$){if(!Q)return;let Z=Q.trim();if(/^\d+(\.\d+)?$/.test(Z))return Math.max(0,Number(Z)*1000);let G=Date.parse(Z);if(Number.isNaN(G))return;return Math.max(0,G-$)}function g6(Q,$){let Z=Math.min(c6,r9*2**Q);return Math.round(Z*(0.5+$()*0.5))}function e9(Q){return Q===429||Q===408||Q===409||Q>=500}function Q$(Q,$){return e9(Q)&&P($).retryable}function p6(Q){return Q.reason??new DOMException("The operation was aborted.","AbortError")}function $$(Q,$){return new Promise((Z,G)=>{let J=setTimeout(Z,Q);$?.addEventListener("abort",()=>{clearTimeout(J),G(p6($))},{once:!0})})}async function p(Q,$,Z){let G=Z.fetchImpl??((H,B)=>fetch(H,B)),J=Z.sleep??$$,W=Z.random??Math.random,Y=Z.now??Date.now,K=Math.max(0,Z.maxRetries),X=async(H)=>{let B=Z.signal;if(!B)return await J(H);B.throwIfAborted();let z;try{await Promise.race([J(H,B),new Promise((D,F)=>{z=()=>F(p6(B)),B.addEventListener("abort",z,{once:!0})})])}finally{if(z)B.removeEventListener("abort",z)}},V;for(let H=0;H<=K;H++){Z.signal?.throwIfAborted();let B=new AbortController,z=()=>B.abort(Z.signal?.reason);Z.signal?.addEventListener("abort",z,{once:!0});let D=!1,F=Z.timeoutMs>0?setTimeout(()=>{D=!0,B.abort()},Z.timeoutMs):void 0,U;try{U=await G(Q,{...$,signal:B.signal})}catch(q){if(F!==void 0)clearTimeout(F);if(Z.signal?.removeEventListener("abort",z),Z.signal?.aborted)throw q;if(V=D?new a(Z.timeoutMs):q,D&&Z.retryTimeouts===!1)throw V;if(H===K)throw V;await X(g6(H,W));continue}if(F!==void 0)clearTimeout(F);if(U.ok)return U;Z.signal?.removeEventListener("abort",z);let L=await Z$(U),O=new r(U.status,L,U.headers.get("x-request-id")??void 0);if(H===K||!Q$(U.status,O))throw O;let x=a9(U.headers.get("retry-after"),Y());await X(x===void 0?g6(H,W):Math.min(x,c6)),V=O}throw V??Error("Provider request failed with no response.")}async function Z$(Q){let $;try{$=await Q.text()}catch{return null}try{return JSON.parse($)}catch{return $}}var fQ=300000;function vQ(Q){return{generationsUrl:`${Q.base}/images/generations${Q.query}`,editsUrl:`${Q.base}/images/edits${Q.query}`,headers:Q.headers,timeoutMs:Q.timeoutMs,maxRetries:Q.maxRetries}}class VQ extends Error{code;retryable;constructor(Q,$={}){super(Q.message,$);this.name="ImageRequestError",this.code=Q.code,this.retryable=Q.retryable}}var G$={png:"image/png",jpeg:"image/jpeg"};function J$(Q){let $=Number(Q?.input_tokens??0),Z=Number(Q?.output_tokens??0),G={inputTokens:$,outputTokens:Z,totalTokens:Number(Q?.total_tokens??$+Z)},J=Q?.input_tokens_details?.image_tokens;if(typeof J==="number")G.imageInputTokens=J;let W=Q?.output_tokens_details?.image_tokens;if(typeof W==="number")G.imageOutputTokens=W;return G}function W$(Q){let $=atob(Q),Z=new Uint8Array($.length);for(let G=0;G<$.length;G++)Z[G]=$.charCodeAt(G);return Z}function Y$(Q){let Z=Q?.data?.[0]?.b64_json;if(typeof Z!=="string"||Z.length===0)throw new VQ({code:"provider_error",message:"The provider answered an image call with no base64 image data.",retryable:!1});let G=typeof Q.output_format==="string"?Q.output_format:"png";return{bytes:W$(Z),mimeType:G$[G]??`image/${G}`,size:typeof Q.size==="string"?Q.size:"",...typeof Q.background==="string"?{background:Q.background}:{},usage:J$(Q.usage)}}async function m6(Q,$,Z,G){let J;try{J=await p(Q,$,{maxRetries:Z.maxRetries,timeoutMs:Z.timeoutMs,retryTimeouts:!1,signal:G.signal,fetchImpl:Z.fetchImpl})}catch(W){if(G.signal?.aborted)throw W;throw new VQ(P(W),{cause:W})}return Y$(await J.json())}async function l6(Q,$,Z={}){return await m6(Q.generationsUrl,{method:"POST",headers:{...await Q.headers(),"content-type":"application/json"},body:JSON.stringify($)},Q,Z)}async function d6(Q,$,Z={}){return await m6(Q.editsUrl,{method:"POST",headers:await Q.headers(),body:$},Q,Z)}class KQ{static models(){return[]}modelName(){return this.model}async generate(Q){return await l6(this.endpoint(),this.body(Q),{signal:Q.signal})}async edit(Q){let $=new FormData;for(let[Z,G]of Object.entries(this.body(Q)))if(G!==void 0)$.set(Z,String(G));for(let Z of Q.images)$.append("image[]",Z,Z.name);if(Q.mask)$.set("mask",Q.mask,Q.mask.name);return await d6(this.endpoint(),$,{signal:Q.signal})}body(Q){return{model:this.modelName(),prompt:Q.prompt,...Q.size?{size:Q.size}:{},...Q.quality?{quality:Q.quality}:{},...Q.background?{background:Q.background}:{},...Q.format?{output_format:Q.format}:{},...Q.compression!==void 0?{output_compression:Q.compression}:{}}}normalizeError(Q){return P(Q)}}var i6=["gpt-image-2","gpt-image-1.5","gpt-image-1"];class yQ extends KQ{model;config;constructor(Q,$={}){super();this.model=Q,this.config=$}static model(Q,$){return new yQ(Q,$)}static models(){return i6}endpoint(){return vQ(YQ(this.config,{timeoutMs:fQ}))}}class hQ extends KQ{model;config;constructor(Q,$={}){super();this.model=Q,this.config=$}static model(Q,$){return new hQ(Q,$)}static models(){return i6}modelName(){return this.config.deployment??this.model}endpoint(){return vQ(XQ(this.config,{timeoutMs:fQ}))}}async function*X$(Q){let $="",Z="",G=[],J,W=()=>{if(G.length===0&&!Z)return null;let X={event:Z,data:G.join(`
|
|
16
16
|
`),id:J};return Z="",G=[],J=void 0,X.data?X:null},Y=(X)=>{let V=X.endsWith("\r")?X.slice(0,-1):X;if(V==="")return W();if(V.startsWith(":"))return null;let H=V.indexOf(":"),B=H===-1?V:V.slice(0,H),z=H===-1?"":V.slice(H+1);if(z.startsWith(" "))z=z.slice(1);if(B==="event")Z=z;else if(B==="data")G.push(z);else if(B==="id")J=z;return null};for await(let X of Q){$+=X;let V=$.indexOf(`
|
|
17
17
|
`);while(V!==-1){let H=$.slice(0,V);$=$.slice(V+1);let B=Y(H);if(B)yield B;V=$.indexOf(`
|
|
18
|
-
`)}}if($.length>0){let X=Y($);if(X)yield X}let K=W();if(K)yield K}async function*o6(Q,$={}){let Z=new Map,G=new Set,J=!1;for await(let W of X$(Q)){if(W.data==="[DONE]")break;let Y;try{Y=JSON.parse(W.data)}catch{continue}switch(typeof Y.type==="string"?Y.type:W.event){case"response.output_text.delta":{let X=String(Y.delta??"");if(!X)break;yield $.structuredOutput?{type:"output-delta",delta:X}:{type:"text-delta",delta:X};break}case"response.reasoning_summary_text.delta":case"response.reasoning_text.delta":{let X=String(Y.delta??"");if(!X)break;yield{type:"reasoning-delta",delta:X,id:Y.item_id};break}case"response.output_item.added":{let X=Y.item;if(!X)break;if(X.type==="function_call"){let V=String(X.id??Y.item_id??X.call_id??"");Z.set(V,{callId:String(X.call_id??V),name:String(X.name??""),namespace:typeof X.namespace==="string"&&X.namespace?X.namespace:void 0,done:!1})}break}case"response.function_call_arguments.delta":{let X=Z.get(String(Y.item_id??""));if(!X)break;let V=String(Y.delta??"");if(!V)break;yield{type:"tool-call-delta",toolCallId:X.callId,name:X.name,argsDelta:V,...X.namespace?{namespace:X.namespace}:{}};break}case"response.function_call_arguments.done":{let X=String(Y.item_id??""),V=Z.get(X);if(!V)break;V.done=!0,yield{type:"tool-call",toolCallId:V.callId,name:V.name,args:String(Y.arguments??""),...V.namespace?{namespace:V.namespace}:{}};break}case"response.output_item.done":{let X=Y.item;if(!X)break;if(X.type==="function_call"){let V=String(X.id??Y.item_id??X.call_id??""),H=Z.get(V);if(H?.done)break;let B=(typeof X.namespace==="string"?X.namespace:"")||H?.namespace;if(yield{type:"tool-call",toolCallId:String(X.call_id??V),name:String(X.name??H?.name??""),args:String(X.arguments??""),...B?{namespace:B}:{}},H)H.done=!0;break}if(X.type==="tool_search_call"||X.type==="tool_search_output"){let V=V$(X);if(V.loaded.length===0&&V.namespaces.length===0)break;let H=String(X.tool_search_call_id??X.id??"");if(G.has(H))break;G.add(H),yield{type:"tool-search",...V}}break}case"response.refusal.done":{yield{type:"error",error:{code:"content_filtered",message:String(Y.refusal??"The model refused to answer."),retryable:!1}};break}case"response.completed":{J=!0,yield{type:"finish",reason:"stop",usage:uQ(Y.response?.usage)};break}case"response.incomplete":{J=!0;let X=uQ(Y.response?.usage),V=Y.response?.incomplete_details?.reason;if(V==="content_filter"){yield{type:"error",error:{code:"content_filtered",message:K$(Y.response?.content_filters),retryable:!1}},yield{type:"finish",reason:"error",usage:X};break}yield{type:"finish",reason:V==="max_output_tokens"?"length":"stop",usage:X};break}case"response.failed":case"error":{J=!0;let X=Y.response?.error??Y.error??Y;yield{type:"error",error:H$(X)},yield{type:"finish",reason:"error",usage:uQ(Y.response?.usage)};break}}if(J)return}if(!J)yield{type:"error",error:{code:"provider_error",message:"The provider stream ended without a terminal event.",retryable:!0}},yield{type:"finish",reason:"error",usage:v()}}function V$(Q){let $=[],Z=[];return n6(Q.results??Q.tools??Q.loaded??Q.output,$,Z,0),{loaded:gQ($),namespaces:gQ(Z)}}function n6(Q,$,Z,G){if(!Array.isArray(Q)||G>4)return;for(let J of Q){if(typeof J==="string"){$.push(J);continue}if(!J||typeof J!=="object")continue;let W=J,Y=typeof W.name==="string"?W.name:typeof W.tool_name==="string"?W.tool_name:"",K=W.tools??W.functions;if(Array.isArray(K)){if(Y)Z.push(Y);n6(K,$,Z,G+1);continue}if(Y)$.push(Y)}}function gQ(Q){return Q.filter(($,Z)=>Q.indexOf($)===Z)}function K$(Q){if(!Array.isArray(Q))return"The provider's content filter blocked this request.";let Z=[];for(let G of Q){if(!G||typeof G!=="object")continue;let J=G,W=J.content_filter_results;if(!W||typeof W!=="object")continue;for(let[Y,K]of Object.entries(W))if(K&&typeof K==="object"&&K.filtered===!0)Z.push(`${Y} (${String(J.source_type??"unknown")})`)}return Z.length===0?"The provider's content filter blocked this request.":`The provider's content filter blocked this request. Categories: ${gQ(Z).join(", ")}.`}function H$(Q){let $=typeof Q?.message==="string"?Q.message:"The provider stream failed.",Z=String(Q?.code??"").toLowerCase();if(Z==="rate_limit_exceeded")return{code:"rate_limited",message:$,retryable:!0};if(Z==="context_length_exceeded")return{code:"context_length_exceeded",message:$,retryable:!1};if(Z.includes("content_filter"))return{code:"content_filtered",message:$,retryable:!1};return{code:"provider_error",message:$,retryable:!0}}function v(){return{inputTokens:0,outputTokens:0,totalTokens:0}}function uQ(Q){if(!Q)return v();let $=Number(Q.input_tokens??0),Z=Number(Q.output_tokens??0),G={inputTokens:$,outputTokens:Z,totalTokens:Number(Q.total_tokens??$+Z)},J=Q.output_tokens_details?.reasoning_tokens;if(typeof J==="number")G.reasoningTokens=J;let W=Q.input_tokens_details?.cached_tokens;if(typeof W==="number")G.cachedInputTokens=W;return G}async function*s6(Q){if(!Q)return;let $=Q.getReader(),Z=new TextDecoder;try{while(!0){let{done:J,value:W}=await $.read();if(J)break;if(W)yield Z.decode(W,{stream:!0})}let G=Z.decode();if(G)yield G}finally{$.releaseLock()}}function cQ(Q){return{responsesUrl:`${Q.base}/responses${Q.query}`,filesUrl:`${Q.base}/files${Q.query}`,headers:Q.headers,timeoutMs:Q.timeoutMs,maxRetries:Q.maxRetries}}async function*pQ(Q,$,Z){let G;try{G=await p(Q.responsesUrl,{method:"POST",headers:{...await Q.headers(),"content-type":"application/json"},body:JSON.stringify($)},{maxRetries:Q.maxRetries,timeoutMs:Q.timeoutMs,signal:Z.signal,fetchImpl:Q.fetchImpl})}catch(J){let W=P(J);if(W.code!=="aborted")yield{type:"error",error:W,...g(J)};yield{type:"finish",reason:W.code==="aborted"?"aborted":"error",usage:v()};return}try{yield*o6(s6(G.body),{structuredOutput:Z.structuredOutput})}catch(J){let W=P(J);if(W.code==="aborted"){yield{type:"finish",reason:"aborted",usage:v()};return}yield{type:"error",error:W},yield{type:"finish",reason:"error",usage:v()}}}async function mQ(Q,$){let Z=new FormData;Z.set("purpose","user_data"),Z.set("file",$);let J=await(await p(Q.filesUrl,{method:"POST",headers:await Q.headers(),body:Z},{maxRetries:Q.maxRetries,timeoutMs:Q.timeoutMs,fetchImpl:Q.fetchImpl})).json();if(!J?.id)throw Error("The provider accepted the upload but returned no file id.");return J.id}function lQ(Q){let $=B$(Q);if($.startsWith("gpt-3.5")||$.startsWith("text-")||$.startsWith("davinci"))return{reasoning:!1,structuredOutput:!1,fileInput:!1,parallelToolCalls:!0,toolSearch:!1};let Z=z$($);if(Z?.kind==="o")return{reasoning:!0,structuredOutput:!0,fileInput:!0,parallelToolCalls:Z.major>1,toolSearch:t6(Z)};if(Z?.kind==="gpt")return{reasoning:Z.major>=5,structuredOutput:Z.major>4||$.startsWith("gpt-4o")||$.startsWith("gpt-4.1"),fileInput:Z.major>4||$.startsWith("gpt-4o")||$.startsWith("gpt-4.1"),parallelToolCalls:!0,toolSearch:t6(Z)};return{reasoning:!0,structuredOutput:!0,fileInput:!0,parallelToolCalls:!0,toolSearch:!0}}function t6(Q){if(Q.kind==="o")return Q.major>=5;return Q.major>5||Q.major===5&&Q.minor>=2}function B$(Q){return Q.trim().toLowerCase()}function z$(Q){let $=/^gpt-(\d+)(?:\.(\d+))?/.exec(Q);if($?.[1])return{kind:"gpt",major:Number($[1]),minor:Number($[2]??0)};let Z=/^o(\d+)(?:[-.]|$)/.exec(Q);if(Z?.[1])return{kind:"o",major:Number(Z[1]),minor:0};return null}function dQ(Q,$){let{capabilities:Z}=$,G={model:$.model,input:U$(Q.messages,Z),stream:!0};if(Q.systemPrompt)G.instructions=Q.systemPrompt;let J=j$(Q.tools,Z);if(J.length>0){if(G.tools=J,!Z.parallelToolCalls)G.parallel_tool_calls=!1}if(Q.output)G.text={format:{type:"json_schema",name:Q.output.name,schema:Q.output.schema,strict:Q.output.strict}};if(Q.reasoning&&Z.reasoning)G.reasoning={effort:Q.reasoning,summary:"auto"};if(typeof Q.temperature==="number")G.temperature=Q.temperature;if(typeof Q.maxOutputTokens==="number")G.max_output_tokens=Q.maxOutputTokens;return G}function U$(Q,$){let Z=[];for(let G of Q){let J=G.role,W=[],Y=()=>{if(W.length===0)return;Z.push({type:"message",role:J,content:W}),W=[]};for(let K of G.content??[])switch(K.type){case"text":{if(!K.text)break;W.push(HQ(J,K.text));break}case"output":{if(K.partial)break;W.push(HQ(J,JSON.stringify(K.value)));break}case"file":{if(J==="assistant")break;let X=O$(K);if(!$.fileInput){if(X)W.push(HQ(J,r6(K,!1)));break}if(K.fileId?.startsWith(_))throw Error(`FilePart.fileId holds a gemi attachment id (${K.fileId}). That field is the *provider's* file id, from \`fileId\` on the upload response; the \`attachmentId\` goes in \`FilePart.attachmentId\`, is shown to the model as text, and is resolved by a tool through \`ctx.attachments\`.`);if(!K.fileId&&!X)throw Error("FilePart.fileId is empty and there is no `attachmentId` either. `fileId` is the *provider's* file id and `attachmentId` is gemi's (`gemi_att_\u2026`), both from the upload response; an upload always answers at least one, so a part with neither was built from something other than that answer.");if(X)W.push(HQ(J,r6(K,!!K.fileId)));if(K.fileId)W.push(L$(K));break}case"reasoning":{Y();let X=P$(K);if(X)Z.push(X);break}case"tool-call":{if(K.partial)break;Y(),Z.push({type:"function_call",call_id:K.toolCallId,name:String(K.name),arguments:JSON.stringify(K.input??{})});break}case"tool-result":{Y(),Z.push({type:"function_call_output",call_id:K.toolCallId,output:_$(K)});break}}Y()}return F$(Z)}var D$="No result was recorded for this tool call. Assume it did not complete.";function F$(Q){let $=new Set,Z=new Set,G=[];for(let W of Q){if(W.type==="function_call"){let Y=String(W.call_id);if($.has(Y))continue;$.add(Y)}else if(W.type==="function_call_output"){let Y=String(W.call_id);if(!$.has(Y)||Z.has(Y))continue;Z.add(Y)}G.push(W)}if(Z.size===$.size)return G;let J=[];for(let W of G){if(J.push(W),W.type!=="function_call")continue;let Y=String(W.call_id);if(Z.has(Y))continue;Z.add(Y),J.push({type:"function_call_output",call_id:Y,output:D$})}return J}function HQ(Q,$){return{type:Q==="assistant"?"output_text":"input_text",text:$}}function O$(Q){let $=Q.attachmentId;return typeof $==="string"&&$.startsWith(_)?$:void 0}function r6(Q,$){let Z=[`id=${JSON.stringify(Q.attachmentId)}`];if(Q.name)Z.push(`name=${JSON.stringify(Q.name)}`);if(Q.mimeType)Z.push(`mimeType=${JSON.stringify(Q.mimeType)}`);let G=`attachment ${Z.join(" ")}`;return $?`[${G}]`:`[${G} \u2014 its contents are not shown to you; a tool can read the file by this id]`}function L$(Q){let $=Q.mimeType?.trim().toLowerCase()??"";return{type:($?$.startsWith("image/")&&$!=="image/svg+xml":N$(Q.name))?"input_image":"input_file",file_id:Q.fileId}}function N$(Q){let $=/\.([a-z0-9]+)$/.exec(Q?.trim().toLowerCase()??"");return $?.[1]!==void 0&&C$.has($[1])}var C$=new Set(["jpeg","jpg","png","gif","webp"]);function P$(Q){if(!Q.id)return null;let $={type:"reasoning",id:Q.id};return $.summary=Q.text?[{type:"summary_text",text:Q.text}]:[],$}function _$(Q){if(Q.status==="ok")return typeof Q.output==="string"?Q.output:JSON.stringify(Q.output??null);if(Q.status==="denied"){let $=Q.reason?` Reason given: ${Q.reason}`:"";if(Q.cause==="stopped")return`The run was stopped before this tool call could complete, so it did not run.${$}`;if(Q.cause==="interrupted")return`The run was interrupted (the server stopped) while this tool call was in progress, so its result was lost. It may have run in part or in full: check its effects before repeating it.${$}`;return`The user declined this tool call, so it did not run.${$}`}return`The tool call failed and produced no result. Error (${Q.error?.code??"unknown"}): ${Q.error?.message??"no message"}`}function a6(Q){return Array.isArray(Q.tools)}function j$(Q,$){if(!Q||Q.length===0)return[];if(!$.toolSearch){let J=[];for(let W of Q)if(a6(W))for(let Y of W.tools)J.push(BQ(Y,!1));else J.push(BQ(W,!1));return J}let Z=[],G=!1;for(let J of Q)if(a6(J)){let W=J.tools.map((Y)=>{if(Y.deferred)G=!0;return BQ(Y,!0)});Z.push({type:"namespace",name:J.name,description:J.description,tools:W})}else{if(J.deferred)G=!0;Z.push(BQ(J,!0))}if(G)Z.push({type:"tool_search"});return Z}function BQ(Q,$){let Z={type:"function",name:Q.name,description:Q.description,parameters:Q.parameters,strict:Q.strict};if($&&Q.deferred)Z.defer_loading=!0;return Z}class zQ{static models(){return[]}normalizeError(Q){return P(Q)}}var e6=["gpt-5.5","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.2","gpt-5.1","gpt-5","gpt-5-mini","gpt-5-nano","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4o","gpt-4o-mini","o4-mini","o3","o3-mini"];class iQ extends zQ{model;capabilities;config;constructor(Q,$={}){super();this.model=Q,this.capabilities=lQ(Q),this.config=$}static model(Q,$){return new iQ(Q,$)}static models(){return e6}stream(Q){let $=dQ(Q,{model:this.model,capabilities:this.capabilities});return pQ(this.endpoint(),$,{signal:Q.signal,structuredOutput:Boolean(Q.output)})}upload(Q){return mQ(this.endpoint(),Q)}endpoint(){return cQ(YQ(this.config))}}class oQ extends zQ{model;capabilities;config;constructor(Q,$={}){super();this.model=Q,this.capabilities=lQ(Q),this.config=$}static model(Q,$){return new oQ(Q,$)}static models(){return e6}stream(Q){let $=dQ(Q,{model:this.deployment(),capabilities:this.capabilities});return pQ(this.endpoint(),$,{signal:Q.signal,structuredOutput:Boolean(Q.output)})}upload(Q){return mQ(this.endpoint(),Q)}deployment(){return this.config.deployment??this.model}endpoint(){return cQ(XQ(this.config))}}class y extends Error{runId;requested;oldest;code="frame_cursor_evicted";constructor(Q,$,Z){super(`Frame ${$} of run ${Q} has been evicted; the oldest frame still buffered is ${Z}. Reload the thread instead of resuming.`);this.runId=Q;this.requested=$;this.oldest=Z}}class m extends Error{runId;code="live_run_not_found";constructor(Q){super(`No live run ${Q} in this process.`);this.runId=Q}}class UQ{ttlMs;maxFrames;maxAgeMs;runs=new Map;byThread=new Map;byClientRun=new Map;constructor(Q={}){this.ttlMs=Q.ttlMs??60000,this.maxFrames=Q.maxFrames??4096,this.maxAgeMs=Q.maxAgeMs===void 0?3600000:Q.maxAgeMs}register(Q,$={}){let Z={run:Q,threadId:$.threadId,clientRunId:$.clientRunId,frames:[],lastSeq:-1,lostBefore:0,ended:!1,evicted:!1,evictAt:null,expireAt:null,wake:new Set,version:0};if(this.runs.set(Q.runId,Z),$.threadId)this.byThread.set($.threadId,Q.runId);if($.clientRunId)this.byClientRun.set($.clientRunId,Q.runId);return this.scheduleExpiry(Z,$.maxRunDurationMs),this.pump(Z,$)}findByClientRunId(Q){let $=this.byClientRun.get(Q);return $&&this.runs.has($)?$:null}async find(Q){let $=this.byThread.get(Q.threadId);if(!$)return null;let Z=this.runs.get($);if(!Z)return null;return{runId:$,seq:Z.lastSeq}}get(Q){return this.runs.get(Q)?.run??null}replay(Q,$){let Z=this.runs.get(Q);if(!Z)throw new m(Q);if($!==void 0&&$<Z.lostBefore)throw new y(Q,$,Z.lostBefore);let G=Z.frames[0]?.seq;return this.drain(Z,Q,$??G??Z.lastSeq+1)}clear(){for(let Q of this.runs.values()){if(Q.evictAt)clearTimeout(Q.evictAt);if(Q.expireAt)clearTimeout(Q.expireAt);Q.ended=!0,this.notify(Q)}this.runs.clear(),this.byThread.clear(),this.byClientRun.clear()}get size(){return this.runs.size}async pump(Q,$){let Z=Promise.resolve();try{for await(let G of Q.run.frames()){if(Q.evicted){let W=$.onEvent;if(W)Z=Z.then(()=>W(G.event)).catch((Y)=>nQ($,Y));continue}if(Q.frames.push(G),Q.lastSeq=G.seq,Q.frames.length>this.maxFrames){let W=Q.frames.shift();if(W)Q.lostBefore=W.seq+1}this.notify(Q);let J=$.onEvent;if(J)Z=Z.then(()=>J(G.event)).catch((W)=>nQ($,W))}}catch(G){nQ($,G)}finally{if(Q.ended=!0,Q.expireAt)clearTimeout(Q.expireAt),Q.expireAt=null;this.notify(Q),this.scheduleEviction(Q),await Z}}async*drain(Q,$,Z){let G=Z;while(!0){let J=Q.version;for(;;){if(G<Q.lostBefore)throw new y($,G,Q.lostBefore);let W=Q.frames,Y=W[0]?.seq;if(Y===void 0)break;let K=Math.max(0,G-Y);if(K>=W.length)break;let X=W[K];yield X,G=X.seq+1}if(Q.ended&&G>Q.lastSeq||Q.evicted)return;await this.wait(Q,J)}}wait(Q,$){if(Q.version!==$)return Promise.resolve();return new Promise((Z)=>Q.wake.add(Z))}notify(Q){Q.version++;let $=Array.from(Q.wake);Q.wake.clear();for(let Z of $)Z()}scheduleEviction(Q){if(Q.evictAt)return;let $=setTimeout(()=>{let Z=Q.run.runId;if(!Q.ended)Q.evicted=!0,Q.frames=[];if(this.runs.get(Z)===Q)this.runs.delete(Z);if(Q.threadId&&this.byThread.get(Q.threadId)===Z)this.byThread.delete(Q.threadId);if(Q.clientRunId&&this.byClientRun.get(Q.clientRunId)===Z)this.byClientRun.delete(Q.clientRunId);this.notify(Q)},this.ttlMs);$.unref?.(),Q.evictAt=$}scheduleExpiry(Q,$){if(this.maxAgeMs===null||$===null)return;let Z=$===void 0?this.maxAgeMs:Math.max(this.maxAgeMs,$+this.ttlMs);if(!Number.isFinite(Z)||Z>2147483647)return;let G=setTimeout(()=>{if(Q.expireAt=null,Q.ended)return;try{Q.run.stop({reason:`The run was still going ${Math.round(Z/1000)}s after it started, past the live-run registry's age limit.`})}catch{}this.scheduleEviction(Q)},Z);G.unref?.(),Q.expireAt=G}}var sQ=new UQ;function nQ(Q,$){try{Q.onInternalError?.($)}catch{}}class DQ{ttlMs;clientOwnedIds;threads=new Map;lastSweep=0;constructor(Q={}){this.ttlMs=Q.ttlMs??86400000,this.clientOwnedIds=Q.clientOwnedIds??!1}async createThread(Q){let $=crypto.randomUUID();return this.threads.set($,{messages:[],touchedAt:Date.now()}),this.sweep(),{threadId:$}}async loadThread(Q){this.sweep();let $=this.threads.get(Q);if(!$)return this.clientOwnedIds?[]:null;return $.touchedAt=Date.now(),$.messages.slice()}async appendMessages(Q,$){this.sweep();let Z=this.threads.get(Q);if(!Z){if(!this.clientOwnedIds)throw Error(`Thread ${Q} does not exist here, or has expired.`);Z={messages:[],touchedAt:Date.now()},this.threads.set(Q,Z)}for(let G of $){let J=Z.messages.findIndex((W)=>W.id===G.id);if(J===-1)Z.messages.push(G);else Z.messages[J]=G}Z.touchedAt=Date.now()}delete(Q){this.threads.delete(Q)}get size(){return this.threads.size}sweep(Q=Date.now()){if(Q-this.lastSweep<60000)return;this.lastSweep=Q;for(let[$,Z]of this.threads)if(Q-Z.touchedAt>this.ttlMs)this.threads.delete($)}}var tQ=new DQ;function G9(Q={}){return{messages:Q.messages?[...Q.messages]:[],pending:Q.pending?[...Q.pending]:[],error:null,threadId:Q.threadId,seq:Q.seq??-1,cursorRunId:Q.cursorRunId,runMessageIds:[],loadedTools:[]}}function J9(Q,$,Z=new Date().toISOString()){if(!($.event.type==="run-start"&&$.event.runId!==Q.cursorRunId)&&$.seq<=Q.seq)return Q;return{...W9(Q,$.event,Z),seq:$.seq}}function W9(Q,$,Z){switch($.type){case"run-start":return{...Q,runId:$.runId,cursorRunId:$.runId,threadId:$.threadId??Q.threadId,runMessageIds:[],loadedTools:[],finishReason:void 0};case"message-start":return A(Q,$.messageId,Z,(G)=>({...G,role:$.role}));case"text-delta":if($9(Q,$.messageId))return Q;return A(Q,$.messageId,Z,(G)=>({...G,content:T$(G.content,$.delta)}));case"reasoning-delta":if($9(Q,$.messageId))return Q;return A(Q,$.messageId,Z,(G)=>({...G,content:E$(G.content,$.delta,$.id)}));case"output-delta":return A(Q,$.messageId,Z,(G)=>({...G,content:Z9(G.content,{type:"output",value:$.snapshot,partial:!0},(J)=>J.type==="output")}));case"tool-call":return A(Q,$.messageId,Z,(G)=>{let J=G.content.findIndex((B)=>B.type==="tool-call"&&B.toolCallId===$.part.toolCallId),W=J===-1?void 0:G.content[J],Y=$.part.progress??W?.progress,K=$.part.nested??W?.nested,X=$.part.attachments??W?.attachments,V={...$.part,...Y?{progress:Y}:{},...K?{nested:K}:{},...X?{attachments:X}:{}},H=G.content.slice();if(J===-1)H.push(V);else H[J]=V;return{...G,content:H}});case"tool-search":{let G=$.loaded.filter((J)=>!Q.loadedTools.includes(J));if(G.length===0)return Q;return{...Q,loadedTools:[...Q.loadedTools,...G]}}case"tool-progress":return Q9(Q,$.toolCallId,(G)=>({...G,progress:[...G.progress??[],$.data]}));case"nested-event":{let G=$;return Q9(Q,$.toolCallId,(J)=>{let W=J.nested??[],Y=W.findIndex((H)=>H.runId===G.runId),K=W[Y]??{runId:G.runId,agent:G.agent,messages:[]},X=S$(K,G,Z),V=Y===-1?[...W,X]:W.map((H,B)=>B===Y?X:H);return{...J,nested:V}})}case"tool-result":{let G=A(Q,$.messageId,Z,(J)=>({...J,content:Z9(J.content,$.part,(W)=>W.type==="tool-result"&&W.toolCallId===$.part.toolCallId)}));return{...G,pending:G.pending.filter((J)=>J.toolCallId!==$.part.toolCallId)}}case"message":{let G=Q.messages.findIndex((Y)=>Y.id===$.message.id),J=Q.messages.slice();if(G===-1)J.push($.message);else J[G]=$.message;let W=Q.runMessageIds.includes($.message.id)?Q.runMessageIds:[...Q.runMessageIds,$.message.id];return{...Q,messages:J,runMessageIds:W}}case"awaiting-input":return{...Q,runId:$.runId,pending:[...$.pending]};case"message-end":return A(Q,$.messageId,Z,(G)=>({...G,finishReason:$.finishReason,...$.outputTruncated?{outputTruncated:!0}:{},content:$.outputTruncated||$.finishReason==="length"?G.content.filter((J)=>!(J.type==="output"&&J.partial)):G.content.map((J)=>J.type==="output"&&J.partial?{...J,partial:!1}:J)}));case"usage":{let G=k$(Q.messages,(W)=>W.role==="assistant");if(G===-1)return Q;let J=Q.messages.slice();return J[G]={...J[G],usage:$.usage},{...Q,messages:J}}case"error":return{...Q,error:$.error,pending:[]};case"run-end":return{...Q,runId:void 0,finishReason:$.finishReason,messages:Y9(Q,$.finishReason)};default:return Q}}function Y9(Q,$){return Q.messages.map((Z)=>Z.role==="assistant"&&Q.runMessageIds.includes(Z.id)?M$(Z,$):Z)}function M$(Q,$){let Z=Q.content.map((J)=>J.type==="tool-call"&&J.nested?.some((W)=>W.finishReason===void 0)?{...J,nested:J.nested.map((W)=>W.finishReason===void 0?q$(W,$):W)}:J);if(Q.finishReason===void 0)return{...Q,finishReason:$,content:Z};return Z.some((J,W)=>J!==Q.content[W])?{...Q,content:Z}:Q}function q$(Q,$){let Z={messages:Q.messages,pending:[],error:null,seq:-1,runMessageIds:Q.messages.map((G)=>G.id),loadedTools:[]};return{...Q,finishReason:$,messages:Y9(Z,$)}}function Q9(Q,$,Z){for(let G=Q.messages.length-1;G>=0;G--){let J=Q.messages[G],W=J.content.findIndex((V)=>V.type==="tool-call"&&V.toolCallId===$);if(W===-1)continue;if(J.finishReason!==void 0&&!R$(Q,J,$))return Q;let Y=J.content.slice();Y[W]=Z(Y[W]);let K=Q.messages.slice();K[G]={...J,content:Y};let X=Q.runMessageIds.includes(J.id)?Q.runMessageIds:[...Q.runMessageIds,J.id];return{...Q,runMessageIds:X,messages:K}}return Q}function S$(Q,$,Z){let G={messages:Q.messages,pending:[],error:null,seq:-1,runMessageIds:Q.messages.map((W)=>W.id),loadedTools:[],finishReason:Q.finishReason},J=W9(G,$.event,Z);return{...Q,...$.label!==void 0?{label:$.label}:{},messages:J.messages,...J.finishReason!==void 0?{finishReason:J.finishReason}:{},...$.event.type==="usage"?{usage:$.event.usage}:{}}}function R$(Q,$,Z){if($.finishReason!=="awaiting-input")return!1;return!Q.messages.some((G)=>G.content.some((J)=>J.type==="tool-result"&&J.toolCallId===Z))}function $9(Q,$){let Z=Q.messages.find((G)=>G.id===$);return Z!==void 0&&Z.finishReason!==void 0}function k$(Q,$){for(let Z=Q.length-1;Z>=0;Z--)if($(Q[Z]))return Z;return-1}function A(Q,$,Z,G){let J=Q.messages.findIndex((K)=>K.id===$),W=Q.runMessageIds.includes($)?Q.runMessageIds:[...Q.runMessageIds,$];if(J===-1){let K={id:$,role:"assistant",content:[],createdAt:Z};return{...Q,runMessageIds:W,messages:[...Q.messages,G(K)]}}let Y=Q.messages.slice();return Y[J]=G(Y[J]),{...Q,runMessageIds:W,messages:Y}}function T$(Q,$){let Z=Q[Q.length-1];if(Z&&Z.type==="text")return[...Q.slice(0,-1),{type:"text",text:Z.text+$}];return[...Q,{type:"text",text:$}]}function E$(Q,$,Z){let G=Q[Q.length-1];if(G&&G.type==="reasoning"&&G.id===Z)return[...Q.slice(0,-1),{...G,text:(G.text??"")+$}];return[...Q,Z?{type:"reasoning",id:Z,text:$}:{type:"reasoning",text:$}]}function Z9(Q,$,Z){let G=Q.findIndex(Z);if(G===-1)return[...Q,$];let J=Q.slice();return J[G]=$,J}class aQ{store;threadId;report;chain=Promise.resolve();done=new Set;closed=!1;state;runId;constructor(Q,$,Z,G){this.store=Q;this.threadId=$;this.report=G;this.state=G9({messages:Z})}finish(Q){if(this.closed)return;this.done.add(Q.id),this.write(()=>[rQ(Q)])}frame(Q){if(this.closed)return;let $=Q.event;if($.type==="run-start")this.runId=$.runId;switch(this.state=J9(this.state,Q),$.type){case"message":this.write(()=>[rQ($.message)]);return;case"tool-call":if($.part.partial)return;this.checkpoint($.messageId);return;case"message-start":case"tool-result":this.checkpoint($.messageId);return;default:return}}close(Q=[]){this.closed=!0;for(let $ of Q)this.done.add($.id)}settled(){return this.chain}checkpoint(Q){if(this.done.has(Q))return;let $=this.state.messages.find((G)=>G.id===Q);if(!$)return;let Z=this.runId;this.write(()=>{let G=rQ($);if(G.finishReason===void 0&&Z)G.runId=Z;return[G]})}write(Q){let $;try{$=Q()}catch(Z){this.report(Z);return}this.chain=this.chain.then(()=>this.store.appendMessages(this.threadId,$)).catch((Z)=>this.report(Z))}}function rQ(Q){return structuredClone(Q)}async function X9(Q,$){let Z=[],G=null,J=Q.slice();for(let W=0;W<J.length;W++){let Y=J[W];if(Y.role!=="assistant"||Y.finishReason!==void 0)continue;if(Y.runId&&await $(Y.runId))continue;G??=new Set(Q.flatMap((V)=>V.content.flatMap((H)=>H.type==="tool-result"?[H.toolCallId]:[])));let K=Y.content.map((V)=>V.type==="tool-call"?V9(V):V);for(let V of Y.content){if(V.type!=="tool-call"||G.has(V.toolCallId))continue;let H={type:"tool-result",toolCallId:V.toolCallId,name:V.name,status:"denied",cause:"interrupted"};K.push(H)}let X={...Y,content:K,finishReason:"interrupted"};J[W]=X,Z.push(X)}return{messages:J,settled:Z}}function V9(Q){let{partial:$,...Z}=Q;if(!Z.nested?.some((G)=>G.finishReason===void 0))return Z;return{...Z,nested:Z.nested.map(A$)}}function A$(Q){if(Q.finishReason!==void 0)return Q;return{...Q,finishReason:"interrupted",messages:Q.messages.map(($)=>$.role==="assistant"&&$.finishReason===void 0?{...$,finishReason:"interrupted",content:$.content.map((Z)=>Z.type==="tool-call"?V9(Z):Z)}:$)}}var x$=z9,FQ=new Map,K9=new WeakMap,OQ=new Map;class F9 extends x${static kind="agent-controller";store=tQ;liveRuns=sQ;attachments=t;attachmentStorage=D9;hookHoldMs=30000;instructions(Q,$){}context(Q,$){return{}}requireThread=!1;authorizeRequest(Q,$){}async stream(Q=new l){let $=await eQ(Q);if($.error)return LQ($);let Z=$.body,G=typeof Z.threadId==="string"?Z.threadId:void 0,J=f$(Z);if(J.error)return LQ({body:{},error:J.error});let W=J.turn,Y=typeof Z.clientRunId==="string"?Z.clientRunId:void 0,K=O9(Z);if(this.requireThread&&!G)return M(400,{code:"thread_required",message:"This agent takes a turn only on a thread: send a threadId."});let X=Y?{cancelled:!1}:null;if(X)OQ.set(Y,X);let V=async()=>{let H;if(G){let C=await this.store.loadThread(G);if(!C)return M(404,{code:"thread_not_found",message:`Thread ${G} does not exist here, or has expired.`});H=await this.settleThread(G,C,{write:!0})}else H=Array.isArray(Z.messages)?Z.messages:[];let B=await this.instructions(Q,{body:K})||void 0,z=await this.context(Q,{body:K}),D=await this.attachmentsFor(Q,G,{body:K});if(X?.cancelled)return H9();let F=G?new aQ(this.store,G,H,(C)=>this.reportHookFailure(C)):null,U=this.agent.stream({messages:H,turn:W,threadId:G,...F?{onMessage:(C)=>F.finish(C)}:{},instructions:B,context:z,attachments:D,body:K}),L={req:Q,runId:U.runId,threadId:G},O=this.liveRuns.register(U,{threadId:G,clientRunId:Y,onEvent:(C)=>this.dispatchEvent(C,L),onInternalError:(C)=>this.reportHookFailure(C),maxRunDurationMs:this.agent.maxRunDurationMs});if(F)this.follow(U,F);let{stored:x,hooks:q}=this.persistRun(U,L,O,F);return K9.set(U,x),Q.ctx?.()?.waitUntil(q),U.toResponse()};try{if(await this.authorizeRequest(Q,{route:"stream",threadId:G,body:K}),X?.cancelled)return H9();return G?await this.withThread(G,V):await V()}finally{if(X&&OQ.get(Y)===X)OQ.delete(Y)}}async withThread(Q,$){let Z=FQ.get(Q)??Promise.resolve(),G,J=new Promise((Y)=>{G=Y}),W=Z.then(()=>J);FQ.set(Q,W),await Z;try{let Y=await this.liveRuns.find({threadId:Q}),K=Y?this.liveRuns.get(Y.runId):null;if(K)K.stop({reason:"superseded by a later turn on this thread"}),await K9.get(K);return await $()}finally{if(G(),FQ.get(Q)===W)FQ.delete(Q)}}async attach(Q=new l){let $=await eQ(Q);if($.error)return LQ($);let Z=$.body,G=typeof Z.threadId==="string"?Z.threadId:h$(Q,"threadId");if(!G)return M(400,{code:"invalid_request",message:"attach needs a threadId: it is the handle that survives a refresh."});await this.authorizeRequest(Q,{route:"attach",threadId:G});let J=await this.liveRuns.find({threadId:G});if(!J)return M(404,{code:"no_live_run",message:`No run in progress for thread ${G} in this process.`});let W=typeof Z.runId==="string"?Z.runId:void 0,Y=W&&W!==J.runId?void 0:y$(Q,Z);try{return C6(this.liveRuns.replay(J.runId,Y))}catch(K){if(K instanceof y)return M(410,{code:K.code,message:K.message,oldestSeq:K.oldest});if(K instanceof m)return M(404,{code:K.code,message:K.message});throw K}}async stop(Q=new l){let $=await eQ(Q);if($.error)return LQ($);let Z=$.body;await this.authorizeRequest(Q,{route:"stop",threadId:typeof Z.threadId==="string"?Z.threadId:void 0});let G=typeof Z.runId==="string"?Z.runId:void 0;if(!G&&typeof Z.clientRunId==="string"){if(G=this.liveRuns.findByClientRunId(Z.clientRunId)??void 0,!G){let W=OQ.get(Z.clientRunId);if(W)return W.cancelled=!0,{stopped:!0}}}if(!G&&typeof Z.threadId==="string")G=(await this.liveRuns.find({threadId:Z.threadId}))?.runId;let J=G?this.liveRuns.get(G):null;if(!J)return{stopped:!1};return J.stop({reason:typeof Z.reason==="string"?Z.reason:void 0}),{stopped:!0}}attachmentScope(Q,$,Z){let G=Q.ctx()?.user,J=G?.id??G?.publicId;if(J!==void 0&&J!==null&&String(J)!=="")return{key:`user:${String(J)}`};if($)return{key:`thread:${$}`};return null}attachmentDestination(Q,$){return"both"}async attachmentsFor(Q,$,Z={body:{}}){let G=await this.attachmentScope(Q,$,Z);if(!G)return null;return new u(this.attachments,this.attachmentStorage,G)}async upload(Q=new l){let $=await Q.rawRequest.formData(),Z=$.get("file");if(!(Z instanceof Blob))throw Error("upload expects a multipart body with a `file` field.");let G=Z instanceof File&&Z.name?Z.name:"upload",J=Z.type||"application/octet-stream",W=I$($.get("body")),Y=$.get("threadId");await this.authorizeRequest(Q,{route:"upload",threadId:typeof Y==="string"&&Y.length>0?Y:void 0,body:W});let K=typeof Y==="string"&&Y.length>0&&await this.store.loadThread(Y)!==null?Y:void 0,X=await this.attachmentDestination(Z,Q),V=u$(X,$.get("destination")),H=await this.attachmentScope(Q,K,{body:W}),B=V!=="provider"&&!H;if(B){if(V==="storage")throw Error('This upload was routed to storage, but `attachmentScope()` returned null for the request, so there is no subject to file the attachment under. Guard the route (`this.agent(Chat).middleware({ upload: "auth" })`), send a `threadId` with the upload, or override `attachmentScope()`.');g$()}if(V==="provider"||!H){let O={fileId:await this.agent.provider.upload(Z),name:G,mimeType:J,size:Z.size,destination:"provider"};if(B)O.downgraded="no_scope";return O}let z=_Q(),D=await this.attachmentStorage.put({name:jQ(z,G),body:Z,contentType:J}),F=V==="both"?await this.agent.provider.upload(Z):void 0,U={id:z,scopeKey:H.key,fileId:F,objectName:D,name:G,mimeType:J,size:Z.size,createdAt:new Date().toISOString(),destination:V};return await this.attachments.put(H,U),{fileId:F,attachmentId:z,name:G,mimeType:J,size:Z.size,destination:V}}onMessage(Q,$){}onToolCall(Q,$){}onAwaitingInput(Q,$){}onError(Q,$){}onStreamComplete(Q,$){}reportHookFailure(Q){console.error("[gemi/ai] agent controller hook failed",Q)}async dispatchEvent(Q,$){switch(Q.type){case"tool-call":if(!Q.part.partial&&!Q.resent)await this.onToolCall({toolCallId:Q.part.toolCallId,name:String(Q.part.name),input:Q.part.input},$);return;case"awaiting-input":await this.onAwaitingInput(Q.pending,$);return;case"error":await this.onError(Q.error,$);return;default:return}}async readThread(Q){let $=await this.store.loadThread(Q);return $?await this.settleThread(Q,$,{write:!1}):null}isRunLive(Q,$){return this.liveRuns.get(Q)!==null}async settleThread(Q,$,{write:Z}){let{messages:G,settled:J}=await X9($,(W)=>this.isRunLive(W,Q));if(Z&&J.length>0)try{await this.store.appendMessages(Q,J)}catch(W){this.reportHookFailure(W)}return G}follow(Q,$){(async()=>{try{for await(let Z of Q.frames())$.frame(Z)}catch(Z){this.reportHookFailure(Z)}})()}persistRun(Q,$,Z,G=null){let J=Promise.resolve(),W=(async()=>{let K;try{K=await Q.result()}catch(V){G?.close(),await G?.settled(),J=this.safely(()=>this.onError({code:"unknown",message:V instanceof Error?V.message:String(V),retryable:!1},$));return}let X=K.messages;if(G?.close(X),await G?.settled(),$.threadId&&X.length>0)try{await this.store.appendMessages($.threadId,X)}catch(V){this.reportHookFailure(V)}J=this.notifyRun(K,X,$)})(),Y=W.then(()=>p$(Promise.all([J,Z]).then(()=>{}),this.hookHoldMs));return{stored:W,hooks:Y}}async notifyRun(Q,$,Z){for(let G of $)await this.safely(()=>this.onMessage(G,Z));await this.safely(()=>this.onStreamComplete(Q,Z))}async safely(Q){try{await Q()}catch($){this.reportHookFailure($)}}}var Q6=["turn","clientRunId","threadId","messages"],b$=["text","files","toolResults"];function O9(Q,$=L9(Q)?Q6:[...Q6,...b$]){let Z={};for(let[G,J]of Object.entries(Q)){if($.includes(G))continue;Object.defineProperty(Z,G,{value:J,writable:!0,enumerable:!0,configurable:!0})}return Z}function I$(Q){if(Q===null)return{};let $;if(typeof Q==="string")try{$=JSON.parse(Q)}catch{throw new $6("The upload's `body` field is not valid JSON.")}if($===null||typeof $!=="object"||Array.isArray($))throw new $6("The upload's `body` field must be a JSON object.");return O9($,Q6)}class $6 extends U9{constructor(Q){super(Q);this.name="InvalidUploadError",this.payload={api:{status:400,data:{error:{code:"invalid_request",message:Q}}},view:{}}}}async function eQ(Q){let $=Q?.rawRequest;if(!$||$.method==="GET"||$.method==="HEAD"||!$.body)return{body:{}};if(!w$($.headers.get("Content-Type")))return{body:{},status:415,code:"unsupported_media_type",error:"The request body must be sent as application/json."};let Z;try{Z=await $.text()}catch{return{body:{},error:"The request body could not be read."}}if(!Z.trim())return{body:{}};let G;try{G=JSON.parse(Z)}catch{return{body:{},error:"The request body is not valid JSON."}}if(G===null||typeof G!=="object"||Array.isArray(G))return{body:{},error:"The request body must be a JSON object."};return{body:G}}function w$(Q){if(typeof Q!=="string")return!1;let[$]=Q.split(";",1);return $.trim().toLowerCase()==="application/json"}function LQ(Q){return M(Q.status??400,{code:Q.code??"invalid_request",message:Q.error})}function L9(Q){return Boolean(Q.turn)&&typeof Q.turn==="object"}function f$(Q){let $=L9(Q)?Q.turn:Q,Z={};if(typeof $.text==="string")Z.text=$.text;if(Array.isArray($.files)){let G=v$($.files);if(typeof G==="string")return{error:G};Z.files=G}if(Array.isArray($.toolResults))Z.toolResults=$.toolResults;return Object.keys(Z).length>0?{turn:Z}:{}}function v$(Q){let $=[];for(let[Z,G]of Q.entries()){let J=`turn.files[${Z}]`;if(!G||typeof G!=="object"||Array.isArray(G))return`${J} must be an object.`;let W={};for(let H of["fileId","attachmentId","name","mimeType"]){let B=G[H];if(B===void 0||B===null||B==="")continue;if(typeof B!=="string")return`${J}.${H} must be a string.`;W[H]=B}let{fileId:Y,attachmentId:K,name:X,mimeType:V}=W;if(Y?.startsWith(_))return`${J}.fileId holds a gemi attachment id (${Y}). \`fileId\` is the provider's id from the upload response; put this one in \`attachmentId\`.`;if(K!==void 0&&!K.startsWith(_))return`${J}.attachmentId is not a gemi attachment id: it must start with "${_}".`;if(!Y&&!K)return`${J} has neither a \`fileId\` nor an \`attachmentId\`. Send the ids the upload response answered.`;$.push({...Y?{fileId:Y}:{},...K?{attachmentId:K}:{},...X!==void 0?{name:X}:{},...V!==void 0?{mimeType:V}:{}})}return $}function y$(Q,$){if(typeof $.from==="number"&&Number.isFinite($.from))return Math.max(0,Math.floor($.from));if(typeof $.cursor==="number"&&Number.isFinite($.cursor)){let G=Math.floor($.cursor);if(G>=0)return G+1;return}let Z=Q?.rawRequest?.headers?.get("Last-Event-ID");if(Z){let G=Number.parseInt(Z,10);if(Number.isFinite(G))return Math.max(0,G+1)}return}function h$(Q,$){let Z=Q?.search?.get($);return typeof Z==="string"?Z:void 0}function H9(){return M(409,{code:"stopped",message:"The turn was stopped before it started."})}function M(Q,$){return new Response(JSON.stringify({error:$}),{status:Q,headers:{"Content-Type":"application/json"}})}function u$(Q,$){if(typeof $!=="string"||$.length===0)return Q;if($!=="both"&&$!=="provider"&&$!=="storage")throw Error(`Unknown attachment destination "${$}". Expected "both", "provider" or "storage".`);if($===Q||Q==="both"&&$==="storage")return $;if(Q==="both"&&$==="provider")throw Error('This upload asked for the "provider" destination under a "both" policy. A client may ask for "storage", which keeps a file away from the model provider, but it may not ask the server to stop keeping its own copy while the vendor still gets the file \u2014 that is the app\'s retention decision. Change `attachmentDestination()` if this file should not be kept.');throw Error(`This upload asked for the "${$}" destination, but the server's policy for it is "${Q}", and a client hint may only ask for "storage" under a "both" policy. Change \`attachmentDestination()\` if the file really should go there.`)}var B9=!1;function g$(){if(B9)return;B9=!0,console.warn("[gemi/ai] An upload had no attachment scope, so its bytes were sent to the model provider only and no attachment id was minted \u2014 a tool cannot forward this file. Guard the route with auth, send a `threadId` with the upload, or override `attachmentScope()`.")}var c$=2147483647;function p$(Q,$){let Z=Q.then(()=>{},()=>{});if(!($<=c$))return Z;let G,J=new Promise((W)=>{G=setTimeout(W,$)});return Promise.race([Z,J]).finally(()=>clearTimeout(G))}export{i9 as toAgentTools,JQ as supportsStrict,m$ as s,sQ as liveRuns,t as defaultAttachmentStore,tQ as defaultAgentStore,WQ as ToolNamespace,AQ as Skill,u as ScopedAttachments,c as SKILLS_NAMESPACE,k as PendingEscalation,iQ as OpenAIProvider,yQ as OpenAIImageProvider,UQ as MemoryLiveRuns,s as MemoryAttachmentStore,DQ as MemoryAgentStore,m as LiveRunNotFoundError,f as InvalidAttachmentScopeError,VQ as ImageRequestError,KQ as ImageProvider,wQ as ImageModel,y as FrameCursorEvictedError,xQ as DEFAULT_MAX_RUN_DURATION_MS,oQ as AzureOpenAIProvider,hQ as AzureOpenAIImageProvider,h as AttachmentNotFoundError,T as AgentTool,bQ as AgentRunError,zQ as AgentProvider,F9 as AgentController,IQ as Agent};
|
|
18
|
+
`)}}if($.length>0){let X=Y($);if(X)yield X}let K=W();if(K)yield K}async function*o6(Q,$={}){let Z=new Map,G=new Set,J=!1;for await(let W of X$(Q)){if(W.data==="[DONE]")break;let Y;try{Y=JSON.parse(W.data)}catch{continue}switch(typeof Y.type==="string"?Y.type:W.event){case"response.output_text.delta":{let X=String(Y.delta??"");if(!X)break;yield $.structuredOutput?{type:"output-delta",delta:X}:{type:"text-delta",delta:X};break}case"response.reasoning_summary_text.delta":case"response.reasoning_text.delta":{let X=String(Y.delta??"");if(!X)break;yield{type:"reasoning-delta",delta:X,id:Y.item_id};break}case"response.output_item.added":{let X=Y.item;if(!X)break;if(X.type==="function_call"){let V=String(X.id??Y.item_id??X.call_id??"");Z.set(V,{callId:String(X.call_id??V),name:String(X.name??""),namespace:typeof X.namespace==="string"&&X.namespace?X.namespace:void 0,done:!1})}break}case"response.function_call_arguments.delta":{let X=Z.get(String(Y.item_id??""));if(!X)break;let V=String(Y.delta??"");if(!V)break;yield{type:"tool-call-delta",toolCallId:X.callId,name:X.name,argsDelta:V,...X.namespace?{namespace:X.namespace}:{}};break}case"response.function_call_arguments.done":{let X=String(Y.item_id??""),V=Z.get(X);if(!V)break;V.done=!0,yield{type:"tool-call",toolCallId:V.callId,name:V.name,args:String(Y.arguments??""),...V.namespace?{namespace:V.namespace}:{}};break}case"response.output_item.done":{let X=Y.item;if(!X)break;if(X.type==="function_call"){let V=String(X.id??Y.item_id??X.call_id??""),H=Z.get(V);if(H?.done)break;let B=(typeof X.namespace==="string"?X.namespace:"")||H?.namespace;if(yield{type:"tool-call",toolCallId:String(X.call_id??V),name:String(X.name??H?.name??""),args:String(X.arguments??""),...B?{namespace:B}:{}},H)H.done=!0;break}if(X.type==="tool_search_call"||X.type==="tool_search_output"){let V=V$(X);if(V.loaded.length===0&&V.namespaces.length===0)break;let H=String(X.tool_search_call_id??X.id??"");if(G.has(H))break;G.add(H),yield{type:"tool-search",...V}}break}case"response.refusal.done":{yield{type:"error",error:{code:"content_filtered",message:String(Y.refusal??"The model refused to answer."),retryable:!1}};break}case"response.completed":{J=!0,yield{type:"finish",reason:"stop",usage:uQ(Y.response?.usage)};break}case"response.incomplete":{J=!0;let X=uQ(Y.response?.usage),V=Y.response?.incomplete_details?.reason;if(V==="content_filter"){yield{type:"error",error:{code:"content_filtered",message:K$(Y.response?.content_filters),retryable:!1}},yield{type:"finish",reason:"error",usage:X};break}yield{type:"finish",reason:V==="max_output_tokens"?"length":"stop",usage:X};break}case"response.failed":case"error":{J=!0;let X=Y.response?.error??Y.error??Y;yield{type:"error",error:H$(X)},yield{type:"finish",reason:"error",usage:uQ(Y.response?.usage)};break}}if(J)return}if(!J)yield{type:"error",error:{code:"provider_error",message:"The provider stream ended without a terminal event.",retryable:!0}},yield{type:"finish",reason:"error",usage:v()}}function V$(Q){let $=[],Z=[];return n6(Q.results??Q.tools??Q.loaded??Q.output,$,Z,0),{loaded:gQ($),namespaces:gQ(Z)}}function n6(Q,$,Z,G){if(!Array.isArray(Q)||G>4)return;for(let J of Q){if(typeof J==="string"){$.push(J);continue}if(!J||typeof J!=="object")continue;let W=J,Y=typeof W.name==="string"?W.name:typeof W.tool_name==="string"?W.tool_name:"",K=W.tools??W.functions;if(Array.isArray(K)){if(Y)Z.push(Y);n6(K,$,Z,G+1);continue}if(Y)$.push(Y)}}function gQ(Q){return Q.filter(($,Z)=>Q.indexOf($)===Z)}function K$(Q){if(!Array.isArray(Q))return"The provider's content filter blocked this request.";let Z=[];for(let G of Q){if(!G||typeof G!=="object")continue;let J=G,W=J.content_filter_results;if(!W||typeof W!=="object")continue;for(let[Y,K]of Object.entries(W))if(K&&typeof K==="object"&&K.filtered===!0)Z.push(`${Y} (${String(J.source_type??"unknown")})`)}return Z.length===0?"The provider's content filter blocked this request.":`The provider's content filter blocked this request. Categories: ${gQ(Z).join(", ")}.`}function H$(Q){let $=typeof Q?.message==="string"?Q.message:"The provider stream failed.",Z=String(Q?.code??"").toLowerCase();if(Z==="rate_limit_exceeded")return{code:"rate_limited",message:$,retryable:!0};if(Z==="context_length_exceeded")return{code:"context_length_exceeded",message:$,retryable:!1};if(Z.includes("content_filter"))return{code:"content_filtered",message:$,retryable:!1};return{code:"provider_error",message:$,retryable:!0}}function v(){return{inputTokens:0,outputTokens:0,totalTokens:0}}function uQ(Q){if(!Q)return v();let $=Number(Q.input_tokens??0),Z=Number(Q.output_tokens??0),G={inputTokens:$,outputTokens:Z,totalTokens:Number(Q.total_tokens??$+Z)},J=Q.output_tokens_details?.reasoning_tokens;if(typeof J==="number")G.reasoningTokens=J;let W=Q.input_tokens_details?.cached_tokens;if(typeof W==="number")G.cachedInputTokens=W;return G}async function*s6(Q){if(!Q)return;let $=Q.getReader(),Z=new TextDecoder;try{while(!0){let{done:J,value:W}=await $.read();if(J)break;if(W)yield Z.decode(W,{stream:!0})}let G=Z.decode();if(G)yield G}finally{$.releaseLock()}}function cQ(Q){return{responsesUrl:`${Q.base}/responses${Q.query}`,filesUrl:`${Q.base}/files${Q.query}`,headers:Q.headers,timeoutMs:Q.timeoutMs,maxRetries:Q.maxRetries}}async function*pQ(Q,$,Z){let G;try{G=await p(Q.responsesUrl,{method:"POST",headers:{...await Q.headers(),"content-type":"application/json"},body:JSON.stringify($)},{maxRetries:Q.maxRetries,timeoutMs:Q.timeoutMs,signal:Z.signal,fetchImpl:Q.fetchImpl})}catch(J){let W=P(J);if(W.code!=="aborted")yield{type:"error",error:W,...g(J)};yield{type:"finish",reason:W.code==="aborted"?"aborted":"error",usage:v()};return}try{yield*o6(s6(G.body),{structuredOutput:Z.structuredOutput})}catch(J){let W=P(J);if(W.code==="aborted"){yield{type:"finish",reason:"aborted",usage:v()};return}yield{type:"error",error:W},yield{type:"finish",reason:"error",usage:v()}}}async function mQ(Q,$){let Z=new FormData;Z.set("purpose","user_data"),Z.set("file",$);let J=await(await p(Q.filesUrl,{method:"POST",headers:await Q.headers(),body:Z},{maxRetries:Q.maxRetries,timeoutMs:Q.timeoutMs,fetchImpl:Q.fetchImpl})).json();if(!J?.id)throw Error("The provider accepted the upload but returned no file id.");return J.id}function lQ(Q){let $=B$(Q);if($.startsWith("gpt-3.5")||$.startsWith("text-")||$.startsWith("davinci"))return{reasoning:!1,structuredOutput:!1,fileInput:!1,parallelToolCalls:!0,toolSearch:!1};let Z=z$($);if(Z?.kind==="o")return{reasoning:!0,structuredOutput:!0,fileInput:!0,parallelToolCalls:Z.major>1,toolSearch:t6(Z)};if(Z?.kind==="gpt")return{reasoning:Z.major>=5,structuredOutput:Z.major>4||$.startsWith("gpt-4o")||$.startsWith("gpt-4.1"),fileInput:Z.major>4||$.startsWith("gpt-4o")||$.startsWith("gpt-4.1"),parallelToolCalls:!0,toolSearch:t6(Z)};return{reasoning:!0,structuredOutput:!0,fileInput:!0,parallelToolCalls:!0,toolSearch:!0}}function t6(Q){if(Q.kind==="o")return Q.major>=5;return Q.major>5||Q.major===5&&Q.minor>=2}function B$(Q){return Q.trim().toLowerCase()}function z$(Q){let $=/^gpt-(\d+)(?:\.(\d+))?/.exec(Q);if($?.[1])return{kind:"gpt",major:Number($[1]),minor:Number($[2]??0)};let Z=/^o(\d+)(?:[-.]|$)/.exec(Q);if(Z?.[1])return{kind:"o",major:Number(Z[1]),minor:0};return null}function dQ(Q,$){let{capabilities:Z}=$,G={model:$.model,input:U$(Q.messages,Z),stream:!0};if(Q.systemPrompt)G.instructions=Q.systemPrompt;let J=j$(Q.tools,Z);if(J.length>0){if(G.tools=J,!Z.parallelToolCalls)G.parallel_tool_calls=!1}if(Q.output)G.text={format:{type:"json_schema",name:Q.output.name,schema:Q.output.schema,strict:Q.output.strict}};if(Q.reasoning&&Z.reasoning)G.reasoning=Q.reasoning==="none"?{effort:"none"}:{effort:Q.reasoning,summary:"auto"};if(typeof Q.temperature==="number")G.temperature=Q.temperature;if(typeof Q.maxOutputTokens==="number")G.max_output_tokens=Q.maxOutputTokens;return G}function U$(Q,$){let Z=[];for(let G of Q){let J=G.role,W=[],Y=()=>{if(W.length===0)return;Z.push({type:"message",role:J,content:W}),W=[]};for(let K of G.content??[])switch(K.type){case"text":{if(!K.text)break;W.push(HQ(J,K.text));break}case"output":{if(K.partial)break;W.push(HQ(J,JSON.stringify(K.value)));break}case"file":{if(J==="assistant")break;let X=O$(K);if(!$.fileInput){if(X)W.push(HQ(J,r6(K,!1)));break}if(K.fileId?.startsWith(_))throw Error(`FilePart.fileId holds a gemi attachment id (${K.fileId}). That field is the *provider's* file id, from \`fileId\` on the upload response; the \`attachmentId\` goes in \`FilePart.attachmentId\`, is shown to the model as text, and is resolved by a tool through \`ctx.attachments\`.`);if(!K.fileId&&!X)throw Error("FilePart.fileId is empty and there is no `attachmentId` either. `fileId` is the *provider's* file id and `attachmentId` is gemi's (`gemi_att_\u2026`), both from the upload response; an upload always answers at least one, so a part with neither was built from something other than that answer.");if(X)W.push(HQ(J,r6(K,!!K.fileId)));if(K.fileId)W.push(L$(K));break}case"reasoning":{Y();let X=P$(K);if(X)Z.push(X);break}case"tool-call":{if(K.partial)break;Y(),Z.push({type:"function_call",call_id:K.toolCallId,name:String(K.name),arguments:JSON.stringify(K.input??{})});break}case"tool-result":{Y(),Z.push({type:"function_call_output",call_id:K.toolCallId,output:_$(K)});break}}Y()}return F$(Z)}var D$="No result was recorded for this tool call. Assume it did not complete.";function F$(Q){let $=new Set,Z=new Set,G=[];for(let W of Q){if(W.type==="function_call"){let Y=String(W.call_id);if($.has(Y))continue;$.add(Y)}else if(W.type==="function_call_output"){let Y=String(W.call_id);if(!$.has(Y)||Z.has(Y))continue;Z.add(Y)}G.push(W)}if(Z.size===$.size)return G;let J=[];for(let W of G){if(J.push(W),W.type!=="function_call")continue;let Y=String(W.call_id);if(Z.has(Y))continue;Z.add(Y),J.push({type:"function_call_output",call_id:Y,output:D$})}return J}function HQ(Q,$){return{type:Q==="assistant"?"output_text":"input_text",text:$}}function O$(Q){let $=Q.attachmentId;return typeof $==="string"&&$.startsWith(_)?$:void 0}function r6(Q,$){let Z=[`id=${JSON.stringify(Q.attachmentId)}`];if(Q.name)Z.push(`name=${JSON.stringify(Q.name)}`);if(Q.mimeType)Z.push(`mimeType=${JSON.stringify(Q.mimeType)}`);let G=`attachment ${Z.join(" ")}`;return $?`[${G}]`:`[${G} \u2014 its contents are not shown to you; a tool can read the file by this id]`}function L$(Q){let $=Q.mimeType?.trim().toLowerCase()??"";return{type:($?$.startsWith("image/")&&$!=="image/svg+xml":N$(Q.name))?"input_image":"input_file",file_id:Q.fileId}}function N$(Q){let $=/\.([a-z0-9]+)$/.exec(Q?.trim().toLowerCase()??"");return $?.[1]!==void 0&&C$.has($[1])}var C$=new Set(["jpeg","jpg","png","gif","webp"]);function P$(Q){if(!Q.id)return null;let $={type:"reasoning",id:Q.id};return $.summary=Q.text?[{type:"summary_text",text:Q.text}]:[],$}function _$(Q){if(Q.status==="ok")return typeof Q.output==="string"?Q.output:JSON.stringify(Q.output??null);if(Q.status==="denied"){let $=Q.reason?` Reason given: ${Q.reason}`:"";if(Q.cause==="stopped")return`The run was stopped before this tool call could complete, so it did not run.${$}`;if(Q.cause==="interrupted")return`The run was interrupted (the server stopped) while this tool call was in progress, so its result was lost. It may have run in part or in full: check its effects before repeating it.${$}`;return`The user declined this tool call, so it did not run.${$}`}return`The tool call failed and produced no result. Error (${Q.error?.code??"unknown"}): ${Q.error?.message??"no message"}`}function a6(Q){return Array.isArray(Q.tools)}function j$(Q,$){if(!Q||Q.length===0)return[];if(!$.toolSearch){let J=[];for(let W of Q)if(a6(W))for(let Y of W.tools)J.push(BQ(Y,!1));else J.push(BQ(W,!1));return J}let Z=[],G=!1;for(let J of Q)if(a6(J)){let W=J.tools.map((Y)=>{if(Y.deferred)G=!0;return BQ(Y,!0)});Z.push({type:"namespace",name:J.name,description:J.description,tools:W})}else{if(J.deferred)G=!0;Z.push(BQ(J,!0))}if(G)Z.push({type:"tool_search"});return Z}function BQ(Q,$){let Z={type:"function",name:Q.name,description:Q.description,parameters:Q.parameters,strict:Q.strict};if($&&Q.deferred)Z.defer_loading=!0;return Z}class zQ{static models(){return[]}normalizeError(Q){return P(Q)}}var e6=["gpt-5.5","gpt-5.4","gpt-5.4-mini","gpt-5.4-nano","gpt-5.2","gpt-5.1","gpt-5","gpt-5-mini","gpt-5-nano","gpt-4.1","gpt-4.1-mini","gpt-4.1-nano","gpt-4o","gpt-4o-mini","o4-mini","o3","o3-mini"];class iQ extends zQ{model;capabilities;config;constructor(Q,$={}){super();this.model=Q,this.capabilities=lQ(Q),this.config=$}static model(Q,$){return new iQ(Q,$)}static models(){return e6}stream(Q){let $=dQ(Q,{model:this.model,capabilities:this.capabilities});return pQ(this.endpoint(),$,{signal:Q.signal,structuredOutput:Boolean(Q.output)})}upload(Q){return mQ(this.endpoint(),Q)}endpoint(){return cQ(YQ(this.config))}}class oQ extends zQ{model;capabilities;config;constructor(Q,$={}){super();this.model=Q,this.capabilities=lQ(Q),this.config=$}static model(Q,$){return new oQ(Q,$)}static models(){return e6}stream(Q){let $=dQ(Q,{model:this.deployment(),capabilities:this.capabilities});return pQ(this.endpoint(),$,{signal:Q.signal,structuredOutput:Boolean(Q.output)})}upload(Q){return mQ(this.endpoint(),Q)}deployment(){return this.config.deployment??this.model}endpoint(){return cQ(XQ(this.config))}}class y extends Error{runId;requested;oldest;code="frame_cursor_evicted";constructor(Q,$,Z){super(`Frame ${$} of run ${Q} has been evicted; the oldest frame still buffered is ${Z}. Reload the thread instead of resuming.`);this.runId=Q;this.requested=$;this.oldest=Z}}class m extends Error{runId;code="live_run_not_found";constructor(Q){super(`No live run ${Q} in this process.`);this.runId=Q}}class UQ{ttlMs;maxFrames;maxAgeMs;runs=new Map;byThread=new Map;byClientRun=new Map;constructor(Q={}){this.ttlMs=Q.ttlMs??60000,this.maxFrames=Q.maxFrames??4096,this.maxAgeMs=Q.maxAgeMs===void 0?3600000:Q.maxAgeMs}register(Q,$={}){let Z={run:Q,threadId:$.threadId,clientRunId:$.clientRunId,frames:[],lastSeq:-1,lostBefore:0,ended:!1,evicted:!1,evictAt:null,expireAt:null,wake:new Set,version:0};if(this.runs.set(Q.runId,Z),$.threadId)this.byThread.set($.threadId,Q.runId);if($.clientRunId)this.byClientRun.set($.clientRunId,Q.runId);return this.scheduleExpiry(Z,$.maxRunDurationMs),this.pump(Z,$)}findByClientRunId(Q){let $=this.byClientRun.get(Q);return $&&this.runs.has($)?$:null}async find(Q){let $=this.byThread.get(Q.threadId);if(!$)return null;let Z=this.runs.get($);if(!Z)return null;return{runId:$,seq:Z.lastSeq}}get(Q){return this.runs.get(Q)?.run??null}replay(Q,$){let Z=this.runs.get(Q);if(!Z)throw new m(Q);if($!==void 0&&$<Z.lostBefore)throw new y(Q,$,Z.lostBefore);let G=Z.frames[0]?.seq;return this.drain(Z,Q,$??G??Z.lastSeq+1)}clear(){for(let Q of this.runs.values()){if(Q.evictAt)clearTimeout(Q.evictAt);if(Q.expireAt)clearTimeout(Q.expireAt);Q.ended=!0,this.notify(Q)}this.runs.clear(),this.byThread.clear(),this.byClientRun.clear()}get size(){return this.runs.size}async pump(Q,$){let Z=Promise.resolve();try{for await(let G of Q.run.frames()){if(Q.evicted){let W=$.onEvent;if(W)Z=Z.then(()=>W(G.event)).catch((Y)=>nQ($,Y));continue}if(Q.frames.push(G),Q.lastSeq=G.seq,Q.frames.length>this.maxFrames){let W=Q.frames.shift();if(W)Q.lostBefore=W.seq+1}this.notify(Q);let J=$.onEvent;if(J)Z=Z.then(()=>J(G.event)).catch((W)=>nQ($,W))}}catch(G){nQ($,G)}finally{if(Q.ended=!0,Q.expireAt)clearTimeout(Q.expireAt),Q.expireAt=null;this.notify(Q),this.scheduleEviction(Q),await Z}}async*drain(Q,$,Z){let G=Z;while(!0){let J=Q.version;for(;;){if(G<Q.lostBefore)throw new y($,G,Q.lostBefore);let W=Q.frames,Y=W[0]?.seq;if(Y===void 0)break;let K=Math.max(0,G-Y);if(K>=W.length)break;let X=W[K];yield X,G=X.seq+1}if(Q.ended&&G>Q.lastSeq||Q.evicted)return;await this.wait(Q,J)}}wait(Q,$){if(Q.version!==$)return Promise.resolve();return new Promise((Z)=>Q.wake.add(Z))}notify(Q){Q.version++;let $=Array.from(Q.wake);Q.wake.clear();for(let Z of $)Z()}scheduleEviction(Q){if(Q.evictAt)return;let $=setTimeout(()=>{let Z=Q.run.runId;if(!Q.ended)Q.evicted=!0,Q.frames=[];if(this.runs.get(Z)===Q)this.runs.delete(Z);if(Q.threadId&&this.byThread.get(Q.threadId)===Z)this.byThread.delete(Q.threadId);if(Q.clientRunId&&this.byClientRun.get(Q.clientRunId)===Z)this.byClientRun.delete(Q.clientRunId);this.notify(Q)},this.ttlMs);$.unref?.(),Q.evictAt=$}scheduleExpiry(Q,$){if(this.maxAgeMs===null||$===null)return;let Z=$===void 0?this.maxAgeMs:Math.max(this.maxAgeMs,$+this.ttlMs);if(!Number.isFinite(Z)||Z>2147483647)return;let G=setTimeout(()=>{if(Q.expireAt=null,Q.ended)return;try{Q.run.stop({reason:`The run was still going ${Math.round(Z/1000)}s after it started, past the live-run registry's age limit.`})}catch{}this.scheduleEviction(Q)},Z);G.unref?.(),Q.expireAt=G}}var sQ=new UQ;function nQ(Q,$){try{Q.onInternalError?.($)}catch{}}class DQ{ttlMs;clientOwnedIds;threads=new Map;lastSweep=0;constructor(Q={}){this.ttlMs=Q.ttlMs??86400000,this.clientOwnedIds=Q.clientOwnedIds??!1}async createThread(Q){let $=crypto.randomUUID();return this.threads.set($,{messages:[],touchedAt:Date.now()}),this.sweep(),{threadId:$}}async loadThread(Q){this.sweep();let $=this.threads.get(Q);if(!$)return this.clientOwnedIds?[]:null;return $.touchedAt=Date.now(),$.messages.slice()}async appendMessages(Q,$){this.sweep();let Z=this.threads.get(Q);if(!Z){if(!this.clientOwnedIds)throw Error(`Thread ${Q} does not exist here, or has expired.`);Z={messages:[],touchedAt:Date.now()},this.threads.set(Q,Z)}for(let G of $){let J=Z.messages.findIndex((W)=>W.id===G.id);if(J===-1)Z.messages.push(G);else Z.messages[J]=G}Z.touchedAt=Date.now()}delete(Q){this.threads.delete(Q)}get size(){return this.threads.size}sweep(Q=Date.now()){if(Q-this.lastSweep<60000)return;this.lastSweep=Q;for(let[$,Z]of this.threads)if(Q-Z.touchedAt>this.ttlMs)this.threads.delete($)}}var tQ=new DQ;function G9(Q={}){return{messages:Q.messages?[...Q.messages]:[],pending:Q.pending?[...Q.pending]:[],error:null,threadId:Q.threadId,seq:Q.seq??-1,cursorRunId:Q.cursorRunId,runMessageIds:[],loadedTools:[]}}function J9(Q,$,Z=new Date().toISOString()){if(!($.event.type==="run-start"&&$.event.runId!==Q.cursorRunId)&&$.seq<=Q.seq)return Q;return{...W9(Q,$.event,Z),seq:$.seq}}function W9(Q,$,Z){switch($.type){case"run-start":return{...Q,runId:$.runId,cursorRunId:$.runId,threadId:$.threadId??Q.threadId,runMessageIds:[],loadedTools:[],finishReason:void 0};case"message-start":return A(Q,$.messageId,Z,(G)=>({...G,role:$.role}));case"text-delta":if($9(Q,$.messageId))return Q;return A(Q,$.messageId,Z,(G)=>({...G,content:T$(G.content,$.delta)}));case"reasoning-delta":if($9(Q,$.messageId))return Q;return A(Q,$.messageId,Z,(G)=>({...G,content:E$(G.content,$.delta,$.id)}));case"output-delta":return A(Q,$.messageId,Z,(G)=>({...G,content:Z9(G.content,{type:"output",value:$.snapshot,partial:!0},(J)=>J.type==="output")}));case"tool-call":return A(Q,$.messageId,Z,(G)=>{let J=G.content.findIndex((B)=>B.type==="tool-call"&&B.toolCallId===$.part.toolCallId),W=J===-1?void 0:G.content[J],Y=$.part.progress??W?.progress,K=$.part.nested??W?.nested,X=$.part.attachments??W?.attachments,V={...$.part,...Y?{progress:Y}:{},...K?{nested:K}:{},...X?{attachments:X}:{}},H=G.content.slice();if(J===-1)H.push(V);else H[J]=V;return{...G,content:H}});case"tool-search":{let G=$.loaded.filter((J)=>!Q.loadedTools.includes(J));if(G.length===0)return Q;return{...Q,loadedTools:[...Q.loadedTools,...G]}}case"tool-progress":return Q9(Q,$.toolCallId,(G)=>({...G,progress:[...G.progress??[],$.data]}));case"nested-event":{let G=$;return Q9(Q,$.toolCallId,(J)=>{let W=J.nested??[],Y=W.findIndex((H)=>H.runId===G.runId),K=W[Y]??{runId:G.runId,agent:G.agent,messages:[]},X=S$(K,G,Z),V=Y===-1?[...W,X]:W.map((H,B)=>B===Y?X:H);return{...J,nested:V}})}case"tool-result":{let G=A(Q,$.messageId,Z,(J)=>({...J,content:Z9(J.content,$.part,(W)=>W.type==="tool-result"&&W.toolCallId===$.part.toolCallId)}));return{...G,pending:G.pending.filter((J)=>J.toolCallId!==$.part.toolCallId)}}case"message":{let G=Q.messages.findIndex((Y)=>Y.id===$.message.id),J=Q.messages.slice();if(G===-1)J.push($.message);else J[G]=$.message;let W=Q.runMessageIds.includes($.message.id)?Q.runMessageIds:[...Q.runMessageIds,$.message.id];return{...Q,messages:J,runMessageIds:W}}case"awaiting-input":return{...Q,runId:$.runId,pending:[...$.pending]};case"message-end":return A(Q,$.messageId,Z,(G)=>({...G,finishReason:$.finishReason,...$.outputTruncated?{outputTruncated:!0}:{},content:$.outputTruncated||$.finishReason==="length"?G.content.filter((J)=>!(J.type==="output"&&J.partial)):G.content.map((J)=>J.type==="output"&&J.partial?{...J,partial:!1}:J)}));case"usage":{let G=k$(Q.messages,(W)=>W.role==="assistant");if(G===-1)return Q;let J=Q.messages.slice();return J[G]={...J[G],usage:$.usage},{...Q,messages:J}}case"error":return{...Q,error:$.error,pending:[]};case"run-end":return{...Q,runId:void 0,finishReason:$.finishReason,messages:Y9(Q,$.finishReason)};default:return Q}}function Y9(Q,$){return Q.messages.map((Z)=>Z.role==="assistant"&&Q.runMessageIds.includes(Z.id)?M$(Z,$):Z)}function M$(Q,$){let Z=Q.content.map((J)=>J.type==="tool-call"&&J.nested?.some((W)=>W.finishReason===void 0)?{...J,nested:J.nested.map((W)=>W.finishReason===void 0?q$(W,$):W)}:J);if(Q.finishReason===void 0)return{...Q,finishReason:$,content:Z};return Z.some((J,W)=>J!==Q.content[W])?{...Q,content:Z}:Q}function q$(Q,$){let Z={messages:Q.messages,pending:[],error:null,seq:-1,runMessageIds:Q.messages.map((G)=>G.id),loadedTools:[]};return{...Q,finishReason:$,messages:Y9(Z,$)}}function Q9(Q,$,Z){for(let G=Q.messages.length-1;G>=0;G--){let J=Q.messages[G],W=J.content.findIndex((V)=>V.type==="tool-call"&&V.toolCallId===$);if(W===-1)continue;if(J.finishReason!==void 0&&!R$(Q,J,$))return Q;let Y=J.content.slice();Y[W]=Z(Y[W]);let K=Q.messages.slice();K[G]={...J,content:Y};let X=Q.runMessageIds.includes(J.id)?Q.runMessageIds:[...Q.runMessageIds,J.id];return{...Q,runMessageIds:X,messages:K}}return Q}function S$(Q,$,Z){let G={messages:Q.messages,pending:[],error:null,seq:-1,runMessageIds:Q.messages.map((W)=>W.id),loadedTools:[],finishReason:Q.finishReason},J=W9(G,$.event,Z);return{...Q,...$.label!==void 0?{label:$.label}:{},messages:J.messages,...J.finishReason!==void 0?{finishReason:J.finishReason}:{},...$.event.type==="usage"?{usage:$.event.usage}:{}}}function R$(Q,$,Z){if($.finishReason!=="awaiting-input")return!1;return!Q.messages.some((G)=>G.content.some((J)=>J.type==="tool-result"&&J.toolCallId===Z))}function $9(Q,$){let Z=Q.messages.find((G)=>G.id===$);return Z!==void 0&&Z.finishReason!==void 0}function k$(Q,$){for(let Z=Q.length-1;Z>=0;Z--)if($(Q[Z]))return Z;return-1}function A(Q,$,Z,G){let J=Q.messages.findIndex((K)=>K.id===$),W=Q.runMessageIds.includes($)?Q.runMessageIds:[...Q.runMessageIds,$];if(J===-1){let K={id:$,role:"assistant",content:[],createdAt:Z};return{...Q,runMessageIds:W,messages:[...Q.messages,G(K)]}}let Y=Q.messages.slice();return Y[J]=G(Y[J]),{...Q,runMessageIds:W,messages:Y}}function T$(Q,$){let Z=Q[Q.length-1];if(Z&&Z.type==="text")return[...Q.slice(0,-1),{type:"text",text:Z.text+$}];return[...Q,{type:"text",text:$}]}function E$(Q,$,Z){let G=Q[Q.length-1];if(G&&G.type==="reasoning"&&G.id===Z)return[...Q.slice(0,-1),{...G,text:(G.text??"")+$}];return[...Q,Z?{type:"reasoning",id:Z,text:$}:{type:"reasoning",text:$}]}function Z9(Q,$,Z){let G=Q.findIndex(Z);if(G===-1)return[...Q,$];let J=Q.slice();return J[G]=$,J}class aQ{store;threadId;report;chain=Promise.resolve();done=new Set;closed=!1;state;runId;constructor(Q,$,Z,G){this.store=Q;this.threadId=$;this.report=G;this.state=G9({messages:Z})}finish(Q){if(this.closed)return;this.done.add(Q.id),this.write(()=>[rQ(Q)])}frame(Q){if(this.closed)return;let $=Q.event;if($.type==="run-start")this.runId=$.runId;switch(this.state=J9(this.state,Q),$.type){case"message":this.write(()=>[rQ($.message)]);return;case"tool-call":if($.part.partial)return;this.checkpoint($.messageId);return;case"message-start":case"tool-result":this.checkpoint($.messageId);return;default:return}}close(Q=[]){this.closed=!0;for(let $ of Q)this.done.add($.id)}settled(){return this.chain}checkpoint(Q){if(this.done.has(Q))return;let $=this.state.messages.find((G)=>G.id===Q);if(!$)return;let Z=this.runId;this.write(()=>{let G=rQ($);if(G.finishReason===void 0&&Z)G.runId=Z;return[G]})}write(Q){let $;try{$=Q()}catch(Z){this.report(Z);return}this.chain=this.chain.then(()=>this.store.appendMessages(this.threadId,$)).catch((Z)=>this.report(Z))}}function rQ(Q){return structuredClone(Q)}async function X9(Q,$){let Z=[],G=null,J=Q.slice();for(let W=0;W<J.length;W++){let Y=J[W];if(Y.role!=="assistant"||Y.finishReason!==void 0)continue;if(Y.runId&&await $(Y.runId))continue;G??=new Set(Q.flatMap((V)=>V.content.flatMap((H)=>H.type==="tool-result"?[H.toolCallId]:[])));let K=Y.content.map((V)=>V.type==="tool-call"?V9(V):V);for(let V of Y.content){if(V.type!=="tool-call"||G.has(V.toolCallId))continue;let H={type:"tool-result",toolCallId:V.toolCallId,name:V.name,status:"denied",cause:"interrupted"};K.push(H)}let X={...Y,content:K,finishReason:"interrupted"};J[W]=X,Z.push(X)}return{messages:J,settled:Z}}function V9(Q){let{partial:$,...Z}=Q;if(!Z.nested?.some((G)=>G.finishReason===void 0))return Z;return{...Z,nested:Z.nested.map(A$)}}function A$(Q){if(Q.finishReason!==void 0)return Q;return{...Q,finishReason:"interrupted",messages:Q.messages.map(($)=>$.role==="assistant"&&$.finishReason===void 0?{...$,finishReason:"interrupted",content:$.content.map((Z)=>Z.type==="tool-call"?V9(Z):Z)}:$)}}var x$=z9,FQ=new Map,K9=new WeakMap,OQ=new Map;class F9 extends x${static kind="agent-controller";store=tQ;liveRuns=sQ;attachments=t;attachmentStorage=D9;hookHoldMs=30000;instructions(Q,$){}context(Q,$){return{}}requireThread=!1;authorizeRequest(Q,$){}async stream(Q=new l){let $=await eQ(Q);if($.error)return LQ($);let Z=$.body,G=typeof Z.threadId==="string"?Z.threadId:void 0,J=f$(Z);if(J.error)return LQ({body:{},error:J.error});let W=J.turn,Y=typeof Z.clientRunId==="string"?Z.clientRunId:void 0,K=O9(Z);if(this.requireThread&&!G)return M(400,{code:"thread_required",message:"This agent takes a turn only on a thread: send a threadId."});let X=Y?{cancelled:!1}:null;if(X)OQ.set(Y,X);let V=async()=>{let H;if(G){let C=await this.store.loadThread(G);if(!C)return M(404,{code:"thread_not_found",message:`Thread ${G} does not exist here, or has expired.`});H=await this.settleThread(G,C,{write:!0})}else H=Array.isArray(Z.messages)?Z.messages:[];let B=await this.instructions(Q,{body:K})||void 0,z=await this.context(Q,{body:K}),D=await this.attachmentsFor(Q,G,{body:K});if(X?.cancelled)return H9();let F=G?new aQ(this.store,G,H,(C)=>this.reportHookFailure(C)):null,U=this.agent.stream({messages:H,turn:W,threadId:G,...F?{onMessage:(C)=>F.finish(C)}:{},instructions:B,context:z,attachments:D,body:K}),L={req:Q,runId:U.runId,threadId:G},O=this.liveRuns.register(U,{threadId:G,clientRunId:Y,onEvent:(C)=>this.dispatchEvent(C,L),onInternalError:(C)=>this.reportHookFailure(C),maxRunDurationMs:this.agent.maxRunDurationMs});if(F)this.follow(U,F);let{stored:x,hooks:q}=this.persistRun(U,L,O,F);return K9.set(U,x),Q.ctx?.()?.waitUntil(q),U.toResponse()};try{if(await this.authorizeRequest(Q,{route:"stream",threadId:G,body:K}),X?.cancelled)return H9();return G?await this.withThread(G,V):await V()}finally{if(X&&OQ.get(Y)===X)OQ.delete(Y)}}async withThread(Q,$){let Z=FQ.get(Q)??Promise.resolve(),G,J=new Promise((Y)=>{G=Y}),W=Z.then(()=>J);FQ.set(Q,W),await Z;try{let Y=await this.liveRuns.find({threadId:Q}),K=Y?this.liveRuns.get(Y.runId):null;if(K)K.stop({reason:"superseded by a later turn on this thread"}),await K9.get(K);return await $()}finally{if(G(),FQ.get(Q)===W)FQ.delete(Q)}}async attach(Q=new l){let $=await eQ(Q);if($.error)return LQ($);let Z=$.body,G=typeof Z.threadId==="string"?Z.threadId:h$(Q,"threadId");if(!G)return M(400,{code:"invalid_request",message:"attach needs a threadId: it is the handle that survives a refresh."});await this.authorizeRequest(Q,{route:"attach",threadId:G});let J=await this.liveRuns.find({threadId:G});if(!J)return M(404,{code:"no_live_run",message:`No run in progress for thread ${G} in this process.`});let W=typeof Z.runId==="string"?Z.runId:void 0,Y=W&&W!==J.runId?void 0:y$(Q,Z);try{return C6(this.liveRuns.replay(J.runId,Y))}catch(K){if(K instanceof y)return M(410,{code:K.code,message:K.message,oldestSeq:K.oldest});if(K instanceof m)return M(404,{code:K.code,message:K.message});throw K}}async stop(Q=new l){let $=await eQ(Q);if($.error)return LQ($);let Z=$.body;await this.authorizeRequest(Q,{route:"stop",threadId:typeof Z.threadId==="string"?Z.threadId:void 0});let G=typeof Z.runId==="string"?Z.runId:void 0;if(!G&&typeof Z.clientRunId==="string"){if(G=this.liveRuns.findByClientRunId(Z.clientRunId)??void 0,!G){let W=OQ.get(Z.clientRunId);if(W)return W.cancelled=!0,{stopped:!0}}}if(!G&&typeof Z.threadId==="string")G=(await this.liveRuns.find({threadId:Z.threadId}))?.runId;let J=G?this.liveRuns.get(G):null;if(!J)return{stopped:!1};return J.stop({reason:typeof Z.reason==="string"?Z.reason:void 0}),{stopped:!0}}attachmentScope(Q,$,Z){let G=Q.ctx()?.user,J=G?.id??G?.publicId;if(J!==void 0&&J!==null&&String(J)!=="")return{key:`user:${String(J)}`};if($)return{key:`thread:${$}`};return null}attachmentDestination(Q,$){return"both"}async attachmentsFor(Q,$,Z={body:{}}){let G=await this.attachmentScope(Q,$,Z);if(!G)return null;return new u(this.attachments,this.attachmentStorage,G)}async upload(Q=new l){let $=await Q.rawRequest.formData(),Z=$.get("file");if(!(Z instanceof Blob))throw Error("upload expects a multipart body with a `file` field.");let G=Z instanceof File&&Z.name?Z.name:"upload",J=Z.type||"application/octet-stream",W=I$($.get("body")),Y=$.get("threadId");await this.authorizeRequest(Q,{route:"upload",threadId:typeof Y==="string"&&Y.length>0?Y:void 0,body:W});let K=typeof Y==="string"&&Y.length>0&&await this.store.loadThread(Y)!==null?Y:void 0,X=await this.attachmentDestination(Z,Q),V=u$(X,$.get("destination")),H=await this.attachmentScope(Q,K,{body:W}),B=V!=="provider"&&!H;if(B){if(V==="storage")throw Error('This upload was routed to storage, but `attachmentScope()` returned null for the request, so there is no subject to file the attachment under. Guard the route (`this.agent(Chat).middleware({ upload: "auth" })`), send a `threadId` with the upload, or override `attachmentScope()`.');g$()}if(V==="provider"||!H){let O={fileId:await this.agent.provider.upload(Z),name:G,mimeType:J,size:Z.size,destination:"provider"};if(B)O.downgraded="no_scope";return O}let z=_Q(),D=await this.attachmentStorage.put({name:jQ(z,G),body:Z,contentType:J}),F=V==="both"?await this.agent.provider.upload(Z):void 0,U={id:z,scopeKey:H.key,fileId:F,objectName:D,name:G,mimeType:J,size:Z.size,createdAt:new Date().toISOString(),destination:V};return await this.attachments.put(H,U),{fileId:F,attachmentId:z,name:G,mimeType:J,size:Z.size,destination:V}}onMessage(Q,$){}onToolCall(Q,$){}onAwaitingInput(Q,$){}onError(Q,$){}onStreamComplete(Q,$){}reportHookFailure(Q){console.error("[gemi/ai] agent controller hook failed",Q)}async dispatchEvent(Q,$){switch(Q.type){case"tool-call":if(!Q.part.partial&&!Q.resent)await this.onToolCall({toolCallId:Q.part.toolCallId,name:String(Q.part.name),input:Q.part.input},$);return;case"awaiting-input":await this.onAwaitingInput(Q.pending,$);return;case"error":await this.onError(Q.error,$);return;default:return}}async readThread(Q){let $=await this.store.loadThread(Q);return $?await this.settleThread(Q,$,{write:!1}):null}isRunLive(Q,$){return this.liveRuns.get(Q)!==null}async settleThread(Q,$,{write:Z}){let{messages:G,settled:J}=await X9($,(W)=>this.isRunLive(W,Q));if(Z&&J.length>0)try{await this.store.appendMessages(Q,J)}catch(W){this.reportHookFailure(W)}return G}follow(Q,$){(async()=>{try{for await(let Z of Q.frames())$.frame(Z)}catch(Z){this.reportHookFailure(Z)}})()}persistRun(Q,$,Z,G=null){let J=Promise.resolve(),W=(async()=>{let K;try{K=await Q.result()}catch(V){G?.close(),await G?.settled(),J=this.safely(()=>this.onError({code:"unknown",message:V instanceof Error?V.message:String(V),retryable:!1},$));return}let X=K.messages;if(G?.close(X),await G?.settled(),$.threadId&&X.length>0)try{await this.store.appendMessages($.threadId,X)}catch(V){this.reportHookFailure(V)}J=this.notifyRun(K,X,$)})(),Y=W.then(()=>p$(Promise.all([J,Z]).then(()=>{}),this.hookHoldMs));return{stored:W,hooks:Y}}async notifyRun(Q,$,Z){for(let G of $)await this.safely(()=>this.onMessage(G,Z));await this.safely(()=>this.onStreamComplete(Q,Z))}async safely(Q){try{await Q()}catch($){this.reportHookFailure($)}}}var Q6=["turn","clientRunId","threadId","messages"],b$=["text","files","toolResults"];function O9(Q,$=L9(Q)?Q6:[...Q6,...b$]){let Z={};for(let[G,J]of Object.entries(Q)){if($.includes(G))continue;Object.defineProperty(Z,G,{value:J,writable:!0,enumerable:!0,configurable:!0})}return Z}function I$(Q){if(Q===null)return{};let $;if(typeof Q==="string")try{$=JSON.parse(Q)}catch{throw new $6("The upload's `body` field is not valid JSON.")}if($===null||typeof $!=="object"||Array.isArray($))throw new $6("The upload's `body` field must be a JSON object.");return O9($,Q6)}class $6 extends U9{constructor(Q){super(Q);this.name="InvalidUploadError",this.payload={api:{status:400,data:{error:{code:"invalid_request",message:Q}}},view:{}}}}async function eQ(Q){let $=Q?.rawRequest;if(!$||$.method==="GET"||$.method==="HEAD"||!$.body)return{body:{}};if(!w$($.headers.get("Content-Type")))return{body:{},status:415,code:"unsupported_media_type",error:"The request body must be sent as application/json."};let Z;try{Z=await $.text()}catch{return{body:{},error:"The request body could not be read."}}if(!Z.trim())return{body:{}};let G;try{G=JSON.parse(Z)}catch{return{body:{},error:"The request body is not valid JSON."}}if(G===null||typeof G!=="object"||Array.isArray(G))return{body:{},error:"The request body must be a JSON object."};return{body:G}}function w$(Q){if(typeof Q!=="string")return!1;let[$]=Q.split(";",1);return $.trim().toLowerCase()==="application/json"}function LQ(Q){return M(Q.status??400,{code:Q.code??"invalid_request",message:Q.error})}function L9(Q){return Boolean(Q.turn)&&typeof Q.turn==="object"}function f$(Q){let $=L9(Q)?Q.turn:Q,Z={};if(typeof $.text==="string")Z.text=$.text;if(Array.isArray($.files)){let G=v$($.files);if(typeof G==="string")return{error:G};Z.files=G}if(Array.isArray($.toolResults))Z.toolResults=$.toolResults;return Object.keys(Z).length>0?{turn:Z}:{}}function v$(Q){let $=[];for(let[Z,G]of Q.entries()){let J=`turn.files[${Z}]`;if(!G||typeof G!=="object"||Array.isArray(G))return`${J} must be an object.`;let W={};for(let H of["fileId","attachmentId","name","mimeType"]){let B=G[H];if(B===void 0||B===null||B==="")continue;if(typeof B!=="string")return`${J}.${H} must be a string.`;W[H]=B}let{fileId:Y,attachmentId:K,name:X,mimeType:V}=W;if(Y?.startsWith(_))return`${J}.fileId holds a gemi attachment id (${Y}). \`fileId\` is the provider's id from the upload response; put this one in \`attachmentId\`.`;if(K!==void 0&&!K.startsWith(_))return`${J}.attachmentId is not a gemi attachment id: it must start with "${_}".`;if(!Y&&!K)return`${J} has neither a \`fileId\` nor an \`attachmentId\`. Send the ids the upload response answered.`;$.push({...Y?{fileId:Y}:{},...K?{attachmentId:K}:{},...X!==void 0?{name:X}:{},...V!==void 0?{mimeType:V}:{}})}return $}function y$(Q,$){if(typeof $.from==="number"&&Number.isFinite($.from))return Math.max(0,Math.floor($.from));if(typeof $.cursor==="number"&&Number.isFinite($.cursor)){let G=Math.floor($.cursor);if(G>=0)return G+1;return}let Z=Q?.rawRequest?.headers?.get("Last-Event-ID");if(Z){let G=Number.parseInt(Z,10);if(Number.isFinite(G))return Math.max(0,G+1)}return}function h$(Q,$){let Z=Q?.search?.get($);return typeof Z==="string"?Z:void 0}function H9(){return M(409,{code:"stopped",message:"The turn was stopped before it started."})}function M(Q,$){return new Response(JSON.stringify({error:$}),{status:Q,headers:{"Content-Type":"application/json"}})}function u$(Q,$){if(typeof $!=="string"||$.length===0)return Q;if($!=="both"&&$!=="provider"&&$!=="storage")throw Error(`Unknown attachment destination "${$}". Expected "both", "provider" or "storage".`);if($===Q||Q==="both"&&$==="storage")return $;if(Q==="both"&&$==="provider")throw Error('This upload asked for the "provider" destination under a "both" policy. A client may ask for "storage", which keeps a file away from the model provider, but it may not ask the server to stop keeping its own copy while the vendor still gets the file \u2014 that is the app\'s retention decision. Change `attachmentDestination()` if this file should not be kept.');throw Error(`This upload asked for the "${$}" destination, but the server's policy for it is "${Q}", and a client hint may only ask for "storage" under a "both" policy. Change \`attachmentDestination()\` if the file really should go there.`)}var B9=!1;function g$(){if(B9)return;B9=!0,console.warn("[gemi/ai] An upload had no attachment scope, so its bytes were sent to the model provider only and no attachment id was minted \u2014 a tool cannot forward this file. Guard the route with auth, send a `threadId` with the upload, or override `attachmentScope()`.")}var c$=2147483647;function p$(Q,$){let Z=Q.then(()=>{},()=>{});if(!($<=c$))return Z;let G,J=new Promise((W)=>{G=setTimeout(W,$)});return Promise.race([Z,J]).finally(()=>clearTimeout(G))}export{i9 as toAgentTools,JQ as supportsStrict,m$ as s,sQ as liveRuns,t as defaultAttachmentStore,tQ as defaultAgentStore,WQ as ToolNamespace,AQ as Skill,u as ScopedAttachments,c as SKILLS_NAMESPACE,k as PendingEscalation,iQ as OpenAIProvider,yQ as OpenAIImageProvider,UQ as MemoryLiveRuns,s as MemoryAttachmentStore,DQ as MemoryAgentStore,m as LiveRunNotFoundError,f as InvalidAttachmentScopeError,VQ as ImageRequestError,KQ as ImageProvider,wQ as ImageModel,y as FrameCursorEvictedError,xQ as DEFAULT_MAX_RUN_DURATION_MS,oQ as AzureOpenAIProvider,hQ as AzureOpenAIImageProvider,h as AttachmentNotFoundError,T as AgentTool,bQ as AgentRunError,zQ as AgentProvider,F9 as AgentController,IQ as Agent};
|
|
19
19
|
|
|
20
|
-
//# debugId=
|
|
20
|
+
//# debugId=3154E432E06F9FA664756E2164756E21
|