gemi 0.93.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/ai/FallbackProvider.d.ts +154 -0
  2. package/dist/ai/FallbackProvider.d.ts.map +1 -0
  3. package/dist/ai/index.d.ts +2 -0
  4. package/dist/ai/index.d.ts.map +1 -1
  5. package/dist/ai/index.js +12 -12
  6. package/dist/ai/index.js.map +4 -3
  7. package/dist/app/index.js +1 -1
  8. package/dist/bun/plugin.js +1 -1
  9. package/dist/bun/preload.js +1 -1
  10. package/dist/{chunk-g2xbpr8r.js → chunk-1hnpr3xt.js} +2 -2
  11. package/dist/{chunk-g2xbpr8r.js.map → chunk-1hnpr3xt.js.map} +1 -1
  12. package/dist/{chunk-v51a4g6w.js → chunk-2jse74pn.js} +2 -2
  13. package/dist/{chunk-v51a4g6w.js.map → chunk-2jse74pn.js.map} +1 -1
  14. package/dist/{chunk-1yt4hjqx.js → chunk-2shkf2gs.js} +2 -2
  15. package/dist/{chunk-1yt4hjqx.js.map → chunk-2shkf2gs.js.map} +1 -1
  16. package/dist/{chunk-dve6ryfd.js → chunk-2yyr5tdc.js} +1 -1
  17. package/dist/{chunk-4k4mh3gh.js → chunk-323715e8.js} +2 -2
  18. package/dist/{chunk-4k4mh3gh.js.map → chunk-323715e8.js.map} +1 -1
  19. package/dist/{chunk-xk4r9372.js → chunk-37jb6q13.js} +2 -2
  20. package/dist/{chunk-xk4r9372.js.map → chunk-37jb6q13.js.map} +1 -1
  21. package/dist/{chunk-wd9zab3e.js → chunk-38k1kjyb.js} +2 -2
  22. package/dist/{chunk-wd9zab3e.js.map → chunk-38k1kjyb.js.map} +1 -1
  23. package/dist/{chunk-aq1hjk00.js → chunk-3fjkbcra.js} +1 -1
  24. package/dist/{chunk-6qyc4e22.js → chunk-3fr22rtg.js} +2 -2
  25. package/dist/{chunk-6qyc4e22.js.map → chunk-3fr22rtg.js.map} +1 -1
  26. package/dist/{chunk-jj0ynn5t.js → chunk-56gce2z7.js} +2 -2
  27. package/dist/{chunk-jj0ynn5t.js.map → chunk-56gce2z7.js.map} +1 -1
  28. package/dist/{chunk-qs9drxja.js → chunk-5en4ydde.js} +2 -2
  29. package/dist/{chunk-qs9drxja.js.map → chunk-5en4ydde.js.map} +1 -1
  30. package/dist/{chunk-z10c81a9.js → chunk-5px4rkzf.js} +2 -2
  31. package/dist/{chunk-z10c81a9.js.map → chunk-5px4rkzf.js.map} +1 -1
  32. package/dist/{chunk-bb8e7rhf.js → chunk-7dnb21s9.js} +2 -2
  33. package/dist/{chunk-bb8e7rhf.js.map → chunk-7dnb21s9.js.map} +1 -1
  34. package/dist/chunk-7hfv5n00.js +5 -0
  35. package/dist/{chunk-cyze295m.js.map → chunk-7hfv5n00.js.map} +4 -3
  36. package/dist/{chunk-p0px3ym0.js → chunk-7kedxtbp.js} +2 -2
  37. package/dist/{chunk-p0px3ym0.js.map → chunk-7kedxtbp.js.map} +1 -1
  38. package/dist/{chunk-vpcys0ty.js → chunk-7ktsceyz.js} +2 -2
  39. package/dist/{chunk-vpcys0ty.js.map → chunk-7ktsceyz.js.map} +1 -1
  40. package/dist/{chunk-s22afmm9.js → chunk-7s5nh5mx.js} +2 -2
  41. package/dist/{chunk-s22afmm9.js.map → chunk-7s5nh5mx.js.map} +1 -1
  42. package/dist/{chunk-fz805r97.js → chunk-7vjbebst.js} +2 -2
  43. package/dist/{chunk-fz805r97.js.map → chunk-7vjbebst.js.map} +1 -1
  44. package/dist/{chunk-a1y7pa5z.js → chunk-8g99gnsd.js} +2 -2
  45. package/dist/{chunk-a1y7pa5z.js.map → chunk-8g99gnsd.js.map} +1 -1
  46. package/dist/{chunk-khvnm11p.js → chunk-9g5cpkkk.js} +2 -2
  47. package/dist/{chunk-khvnm11p.js.map → chunk-9g5cpkkk.js.map} +1 -1
  48. package/dist/{chunk-v6vsjdp7.js → chunk-9xf2fx98.js} +2 -2
  49. package/dist/{chunk-v6vsjdp7.js.map → chunk-9xf2fx98.js.map} +1 -1
  50. package/dist/{chunk-9pcsm8g3.js → chunk-adm5g1v8.js} +2 -2
  51. package/dist/{chunk-9pcsm8g3.js.map → chunk-adm5g1v8.js.map} +1 -1
  52. package/dist/{chunk-ej5mkm7t.js → chunk-b8m6zs7e.js} +2 -2
  53. package/dist/{chunk-ej5mkm7t.js.map → chunk-b8m6zs7e.js.map} +1 -1
  54. package/dist/{chunk-1wdfjmkx.js → chunk-bedkys40.js} +2 -2
  55. package/dist/{chunk-1wdfjmkx.js.map → chunk-bedkys40.js.map} +1 -1
  56. package/dist/chunk-bk4f99s4.js +5 -0
  57. package/dist/{chunk-svzdv2rf.js.map → chunk-bk4f99s4.js.map} +5 -5
  58. package/dist/chunk-br9p390p.js +5 -0
  59. package/dist/chunk-br9p390p.js.map +11 -0
  60. package/dist/chunk-dhe96f7z.js +5 -0
  61. package/dist/{chunk-4bh0maq0.js.map → chunk-dhe96f7z.js.map} +1 -1
  62. package/dist/{chunk-3prm2e2t.js → chunk-epwaxctc.js} +2 -2
  63. package/dist/{chunk-3prm2e2t.js.map → chunk-epwaxctc.js.map} +1 -1
  64. package/dist/{chunk-pwchwgkc.js → chunk-eqtsfvvd.js} +2 -2
  65. package/dist/{chunk-pwchwgkc.js.map → chunk-eqtsfvvd.js.map} +1 -1
  66. package/dist/{chunk-ffpm75zs.js → chunk-et6thczw.js} +2 -2
  67. package/dist/{chunk-ffpm75zs.js.map → chunk-et6thczw.js.map} +1 -1
  68. package/dist/{chunk-3m10ve1n.js → chunk-f6e2t4vb.js} +3 -3
  69. package/dist/{chunk-3m10ve1n.js.map → chunk-f6e2t4vb.js.map} +1 -1
  70. package/dist/{chunk-6ak8jfhm.js → chunk-f6veb369.js} +2 -2
  71. package/dist/{chunk-6ak8jfhm.js.map → chunk-f6veb369.js.map} +1 -1
  72. package/dist/{chunk-5y9jk4h4.js → chunk-fq03tz45.js} +2 -2
  73. package/dist/{chunk-5y9jk4h4.js.map → chunk-fq03tz45.js.map} +1 -1
  74. package/dist/{chunk-0rs8a7re.js → chunk-fyxp4bn0.js} +2 -2
  75. package/dist/{chunk-0rs8a7re.js.map → chunk-fyxp4bn0.js.map} +1 -1
  76. package/dist/{chunk-vbfwvyb8.js → chunk-ghz3e8b7.js} +2 -2
  77. package/dist/{chunk-vbfwvyb8.js.map → chunk-ghz3e8b7.js.map} +1 -1
  78. package/dist/{chunk-qrczhr16.js → chunk-h24rv10h.js} +2 -2
  79. package/dist/{chunk-qrczhr16.js.map → chunk-h24rv10h.js.map} +1 -1
  80. package/dist/{chunk-g6byqmdq.js → chunk-j2nx0dtq.js} +2 -2
  81. package/dist/{chunk-6xh4e55j.js.map → chunk-j2nx0dtq.js.map} +1 -1
  82. package/dist/chunk-j9x86xsc.js +19 -0
  83. package/dist/{chunk-g8tgp3ja.js.map → chunk-j9x86xsc.js.map} +4 -5
  84. package/dist/{chunk-7jshf4ms.js → chunk-jrp35qrk.js} +1 -1
  85. package/dist/{chunk-sppjqk4n.js → chunk-jxhznqhe.js} +3 -3
  86. package/dist/{chunk-sppjqk4n.js.map → chunk-jxhznqhe.js.map} +1 -1
  87. package/dist/{chunk-5v2rx0rk.js → chunk-kzh8bkg5.js} +2 -2
  88. package/dist/{chunk-5v2rx0rk.js.map → chunk-kzh8bkg5.js.map} +1 -1
  89. package/dist/{chunk-dwkhs81y.js → chunk-m3z60v9d.js} +2 -2
  90. package/dist/{chunk-dwkhs81y.js.map → chunk-m3z60v9d.js.map} +1 -1
  91. package/dist/{chunk-d869bd41.js → chunk-mekw2ap4.js} +2 -2
  92. package/dist/{chunk-d869bd41.js.map → chunk-mekw2ap4.js.map} +1 -1
  93. package/dist/{chunk-7k7a6h9j.js → chunk-mf936r5e.js} +2 -2
  94. package/dist/{chunk-7k7a6h9j.js.map → chunk-mf936r5e.js.map} +1 -1
  95. package/dist/{chunk-sqd77ksy.js → chunk-mym0zxxp.js} +3 -3
  96. package/dist/{chunk-sqd77ksy.js.map → chunk-mym0zxxp.js.map} +1 -1
  97. package/dist/{chunk-qv2sdxbq.js → chunk-n4807648.js} +3 -3
  98. package/dist/{chunk-qv2sdxbq.js.map → chunk-n4807648.js.map} +1 -1
  99. package/dist/{chunk-mmfstb0z.js → chunk-nfhy3sp8.js} +2 -2
  100. package/dist/{chunk-mmfstb0z.js.map → chunk-nfhy3sp8.js.map} +1 -1
  101. package/dist/{chunk-nvbbgbdk.js → chunk-nqabsqty.js} +4 -4
  102. package/dist/{chunk-nvbbgbdk.js.map → chunk-nqabsqty.js.map} +1 -1
  103. package/dist/{chunk-6xh4e55j.js → chunk-p3mdtnvv.js} +2 -2
  104. package/dist/{chunk-g6byqmdq.js.map → chunk-p3mdtnvv.js.map} +1 -1
  105. package/dist/{chunk-y3hdh6q6.js → chunk-qj5ts9d5.js} +2 -2
  106. package/dist/{chunk-y3hdh6q6.js.map → chunk-qj5ts9d5.js.map} +1 -1
  107. package/dist/{chunk-aawtyngp.js → chunk-qpek76vn.js} +3 -3
  108. package/dist/{chunk-aawtyngp.js.map → chunk-qpek76vn.js.map} +1 -1
  109. package/dist/{chunk-vryvdzmk.js → chunk-qqev9e50.js} +2 -2
  110. package/dist/{chunk-vryvdzmk.js.map → chunk-qqev9e50.js.map} +1 -1
  111. package/dist/{chunk-241aehp3.js → chunk-qxda7pzm.js} +2 -2
  112. package/dist/{chunk-241aehp3.js.map → chunk-qxda7pzm.js.map} +1 -1
  113. package/dist/{chunk-za1ncjh0.js → chunk-qz2p0hv5.js} +2 -2
  114. package/dist/{chunk-za1ncjh0.js.map → chunk-qz2p0hv5.js.map} +1 -1
  115. package/dist/{chunk-7bmctvep.js → chunk-safv6h9x.js} +2 -2
  116. package/dist/{chunk-7bmctvep.js.map → chunk-safv6h9x.js.map} +1 -1
  117. package/dist/{chunk-pgn3yh5k.js → chunk-ssqxzcad.js} +3 -3
  118. package/dist/{chunk-pgn3yh5k.js.map → chunk-ssqxzcad.js.map} +1 -1
  119. package/dist/{chunk-3jpetvsj.js → chunk-tcefqn3d.js} +2 -2
  120. package/dist/{chunk-3jpetvsj.js.map → chunk-tcefqn3d.js.map} +1 -1
  121. package/dist/{chunk-t328955a.js → chunk-twhf7w1x.js} +2 -2
  122. package/dist/{chunk-t328955a.js.map → chunk-twhf7w1x.js.map} +1 -1
  123. package/dist/{chunk-knw4t9e6.js → chunk-w98tp5fa.js} +2 -2
  124. package/dist/{chunk-knw4t9e6.js.map → chunk-w98tp5fa.js.map} +1 -1
  125. package/dist/{chunk-z405ks42.js → chunk-x24davqq.js} +2 -2
  126. package/dist/{chunk-z405ks42.js.map → chunk-x24davqq.js.map} +1 -1
  127. package/dist/{chunk-dmvrx8nm.js → chunk-xtqxy492.js} +3 -3
  128. package/dist/{chunk-dmvrx8nm.js.map → chunk-xtqxy492.js.map} +1 -1
  129. package/dist/chunk-ykbehyp9.js +17 -0
  130. package/dist/{chunk-c37g1gzy.js.map → chunk-ykbehyp9.js.map} +4 -3
  131. package/dist/{chunk-0n8t329w.js → chunk-z16nyxb8.js} +2 -2
  132. package/dist/{chunk-0n8t329w.js.map → chunk-z16nyxb8.js.map} +1 -1
  133. package/dist/{chunk-fx02sqe2.js → chunk-z9ydpvc8.js} +3 -3
  134. package/dist/{chunk-fx02sqe2.js.map → chunk-z9ydpvc8.js.map} +1 -1
  135. package/dist/chunk-zyw42zny.js +217 -0
  136. package/dist/chunk-zyw42zny.js.map +16 -0
  137. package/dist/config/index.js +1 -1
  138. package/dist/console/run.js +2 -2
  139. package/dist/console/run.js.map +1 -1
  140. package/dist/container/index.js +2 -2
  141. package/dist/container/index.js.map +1 -1
  142. package/dist/database/index.js +2 -2
  143. package/dist/database/index.js.map +1 -1
  144. package/dist/email/index.js +2 -2
  145. package/dist/email/index.js.map +2 -2
  146. package/dist/facades/Lock.d.ts +24 -0
  147. package/dist/facades/Lock.d.ts.map +1 -0
  148. package/dist/facades/index.d.ts +1 -0
  149. package/dist/facades/index.d.ts.map +1 -1
  150. package/dist/facades/index.js +2 -2
  151. package/dist/facades/index.js.map +1 -1
  152. package/dist/foundation/index.js +2 -2
  153. package/dist/foundation/index.js.map +1 -1
  154. package/dist/http/index.js +2 -2
  155. package/dist/http/index.js.map +1 -1
  156. package/dist/i18n/dictionaryRuntime.js +2 -2
  157. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  158. package/dist/i18n/index.js +2 -2
  159. package/dist/i18n/index.js.map +1 -1
  160. package/dist/kernel/index.js +2 -2
  161. package/dist/kernel/index.js.map +2 -2
  162. package/dist/orm/index.js +2 -2
  163. package/dist/orm/index.js.map +2 -2
  164. package/dist/server/index.js +2 -2
  165. package/dist/server/index.js.map +1 -1
  166. package/dist/services/cron/CronJob.d.ts +37 -1
  167. package/dist/services/cron/CronJob.d.ts.map +1 -1
  168. package/dist/services/cron/ScheduleServiceProvider.d.ts.map +1 -1
  169. package/dist/services/cron/Scheduler.d.ts +19 -1
  170. package/dist/services/cron/Scheduler.d.ts.map +1 -1
  171. package/dist/services/index.d.ts +5 -1
  172. package/dist/services/index.d.ts.map +1 -1
  173. package/dist/services/index.js +3 -3
  174. package/dist/services/index.js.map +2 -2
  175. package/dist/services/lock/DatabaseLockStore.d.ts +84 -0
  176. package/dist/services/lock/DatabaseLockStore.d.ts.map +1 -0
  177. package/dist/services/lock/LockManager.d.ts +93 -0
  178. package/dist/services/lock/LockManager.d.ts.map +1 -0
  179. package/dist/services/lock/LockStore.d.ts +87 -0
  180. package/dist/services/lock/LockStore.d.ts.map +1 -0
  181. package/dist/services/lock/MemoryLockStore.d.ts +28 -0
  182. package/dist/services/lock/MemoryLockStore.d.ts.map +1 -0
  183. package/dist/services/lock/lockStoreContract.d.ts +13 -0
  184. package/dist/services/lock/lockStoreContract.d.ts.map +1 -0
  185. package/dist/services/queue/DatabaseQueueDriver.d.ts +7 -0
  186. package/dist/services/queue/DatabaseQueueDriver.d.ts.map +1 -1
  187. package/dist/services/queue/Job.d.ts +66 -0
  188. package/dist/services/queue/Job.d.ts.map +1 -1
  189. package/dist/services/queue/QueueDriver.d.ts +9 -0
  190. package/dist/services/queue/QueueDriver.d.ts.map +1 -1
  191. package/dist/services/queue/QueueManager.d.ts +46 -0
  192. package/dist/services/queue/QueueManager.d.ts.map +1 -1
  193. package/dist/services/queue/QueueServiceProvider.d.ts.map +1 -1
  194. package/dist/services/queue/config.d.ts +13 -0
  195. package/dist/services/queue/config.d.ts.map +1 -1
  196. package/dist/services/queue/work.js +2 -2
  197. package/dist/services/queue/work.js.map +2 -2
  198. package/dist/support/index.js +2 -2
  199. package/dist/support/index.js.map +2 -2
  200. package/package.json +1 -1
  201. package/dist/chunk-4bh0maq0.js +0 -5
  202. package/dist/chunk-c37g1gzy.js +0 -17
  203. package/dist/chunk-cyze295m.js +0 -5
  204. package/dist/chunk-g8tgp3ja.js +0 -19
  205. package/dist/chunk-rgcfqq21.js +0 -5
  206. package/dist/chunk-rgcfqq21.js.map +0 -10
  207. package/dist/chunk-svzdv2rf.js +0 -5
  208. package/dist/chunk-t4x7q9x8.js +0 -142
  209. package/dist/chunk-t4x7q9x8.js.map +0 -13
  210. /package/dist/{chunk-dve6ryfd.js.map → chunk-2yyr5tdc.js.map} +0 -0
  211. /package/dist/{chunk-aq1hjk00.js.map → chunk-3fjkbcra.js.map} +0 -0
  212. /package/dist/{chunk-7jshf4ms.js.map → chunk-jrp35qrk.js.map} +0 -0
@@ -0,0 +1,154 @@
1
+ import type { ReasoningEffort } from "./Agent";
2
+ import { AgentProvider, type ProviderCapabilities, type ProviderStream, type ProviderStreamParams } from "./AgentProvider";
3
+ import type { AgentError, Usage } from "./types";
4
+ /**
5
+ * An ordered chain of providers (#666): the primary, then the fallbacks.
6
+ *
7
+ * It is a provider itself, so `Agent`, `generate()` and the controller take it
8
+ * where they take any other, and nothing above the provider learns there is a
9
+ * chain. That is the point: the alternative was a `providers: [...]` option on
10
+ * `Agent`, and every place that reads `config.provider` would have had to
11
+ * answer "which one?".
12
+ *
13
+ * THE ONE RULE THAT SHAPES EVERYTHING: no fallback once output has reached the
14
+ * consumer. A leg that has streamed a word, a reasoning summary or a tool call
15
+ * has been seen — by the user, and by `Agent`, which already appended it to the
16
+ * message — and a second model starting over would put two answers in one
17
+ * message. So a leg's events are held back until its first content event, and
18
+ * from that event on the leg is committed and a later error is final.
19
+ *
20
+ * Reasoning commits too, not only text, tool calls and structured output. It is
21
+ * streamed to the client like text is, and a reasoning item is tied to the
22
+ * deployment that wrote it: sending one leg's item back to another on the next
23
+ * turn is a request the vendor may refuse. Holding reasoning back until the
24
+ * answer starts would hide minutes of "thinking" from the UI on every call.
25
+ */
26
+ /** One leg of a chain. */
27
+ export type FallbackEntry = {
28
+ provider: AgentProvider;
29
+ /**
30
+ * How long this leg has to produce its FIRST event, in milliseconds. Past
31
+ * that it is abandoned (its request aborted) and the next leg is tried. Once
32
+ * any event has arrived, this deadline is off and the leg's own request
33
+ * timeout applies — a slow answer that has started is not a dead one.
34
+ *
35
+ * Omitted: no deadline of the chain's own.
36
+ */
37
+ timeoutMs?: number;
38
+ /**
39
+ * Overrides `ProviderStreamParams.reasoning` for this leg. Models in one
40
+ * chain take different effort values (#658), so the agent's single setting
41
+ * is right for at most one of them. Dropped, as usual, by a provider whose
42
+ * `capabilities.reasoning` is false.
43
+ */
44
+ reasoning?: ReasoningEffort;
45
+ };
46
+ /** What `fallbackOn` is told besides the normalized error. */
47
+ export type FallbackFailure = {
48
+ /** The leg's position in the chain this provider was built with (after `from()`). */
49
+ index: number;
50
+ model: string;
51
+ /** The HTTP status of the failed response, when there was one. */
52
+ status?: number;
53
+ requestId?: string;
54
+ /** True when the leg produced nothing within its `timeoutMs`. */
55
+ timedOut: boolean;
56
+ };
57
+ /** One leg's report, for `onUsage`. Called once per leg that was tried. */
58
+ export type FallbackUsage = {
59
+ /** The leg's position in this provider's chain. */
60
+ index: number;
61
+ /** The leg's configured model. */
62
+ model: string;
63
+ /** 1 for the first leg tried in this call, 2 for the first fallback, and so on. */
64
+ attempt: number;
65
+ /**
66
+ * What the leg reported, including a failed leg that billed tokens (a
67
+ * content filter does). Absent when the leg never reported usage: it timed
68
+ * out, threw, or was abandoned.
69
+ */
70
+ usage?: Usage;
71
+ /** `ok`: this leg answered (the call may still have failed after output). */
72
+ outcome: "ok" | "fallback" | "failed" | "aborted";
73
+ error?: AgentError;
74
+ };
75
+ export type FallbackOptions = {
76
+ /**
77
+ * Whether a failure moves on to the next leg. Default: `error.retryable`,
78
+ * which `normalizeError` sets for a 429 that is not a spent quota, a 5xx, a
79
+ * 408/409, a timeout and a network failure — and not for a request that would
80
+ * fail the same way on any model (context length, a bad tool schema).
81
+ *
82
+ * Never asked about the last leg, about a user abort, or about a failure
83
+ * after output.
84
+ */
85
+ fallbackOn?: (error: AgentError, failure: FallbackFailure) => boolean;
86
+ /** Per-leg usage. An exception thrown here is swallowed: accounting must not
87
+ * fail the call it is accounting for. */
88
+ onUsage?: (report: FallbackUsage) => void;
89
+ };
90
+ export declare class FallbackProvider extends AgentProvider {
91
+ /** The first leg's model: the one the chain is named after in logs. */
92
+ readonly model: string;
93
+ /**
94
+ * The intersection of every leg's capabilities. A tool or a structured output
95
+ * one leg cannot handle would otherwise be found the day the primary is down,
96
+ * which is the worst day to find it. `Agent` drops what is false here, so a
97
+ * chain behaves the same whichever leg answers.
98
+ */
99
+ readonly capabilities: ProviderCapabilities;
100
+ readonly entries: readonly FallbackEntry[];
101
+ private readonly options;
102
+ constructor(entries: readonly FallbackEntry[], options?: FallbackOptions);
103
+ static chain(entries: readonly FallbackEntry[], options?: FallbackOptions): FallbackProvider;
104
+ /**
105
+ * The same chain entered at `index`. For work that should never reach the
106
+ * primary — a cheap text task on an expensive chain — without a second chain
107
+ * to keep in step. Same options; `index` in reports counts from the new start.
108
+ */
109
+ from(index: number): FallbackProvider;
110
+ /** The leg at `index` on its own, with its reasoning and timeout. What `evalChain` runs. */
111
+ leg(index: number): FallbackProvider;
112
+ /**
113
+ * To the first leg only. A provider's file id is not portable (#443): an id
114
+ * from one OpenAI account or Azure resource means nothing to another, so
115
+ * uploading to every leg would cost N uploads for ids nobody could choose
116
+ * between. Legs on the same Azure resource share its files, which is the
117
+ * common chain; a chain across accounts should keep files out of the
118
+ * fallback path or store them with gemi.
119
+ */
120
+ upload(file: File): Promise<string>;
121
+ normalizeError(error: unknown): AgentError;
122
+ stream(params: ProviderStreamParams): ProviderStream;
123
+ private run;
124
+ private shouldFallBack;
125
+ private report;
126
+ }
127
+ export type EvalChainResult<T> = {
128
+ index: number;
129
+ model: string;
130
+ /** One per sample that resolved, in sample order. */
131
+ results: T[];
132
+ /** One per sample that threw, with the sample number it came from. */
133
+ errors: {
134
+ sample: number;
135
+ error: unknown;
136
+ }[];
137
+ };
138
+ /**
139
+ * Runs `fixture` against every leg on its own — no fallback between them —
140
+ * `samples` times each, and returns the outcomes per leg. For comparing the
141
+ * models in a chain before reordering it: the fixture builds an `Agent` (or
142
+ * calls `generate()`) with the provider it is handed and returns whatever is
143
+ * worth comparing.
144
+ *
145
+ * Legs run one after another and samples in sequence, so a rate limit on one
146
+ * leg does not skew another's numbers.
147
+ */
148
+ export declare function evalChain<T>(chain: FallbackProvider, fixture: (provider: AgentProvider, context: {
149
+ index: number;
150
+ sample: number;
151
+ }) => Promise<T>, options?: {
152
+ samples?: number;
153
+ }): Promise<EvalChainResult<T>[]>;
154
+ //# sourceMappingURL=FallbackProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FallbackProvider.d.ts","sourceRoot":"","sources":["../../ai/FallbackProvider.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export { AzureOpenAIImageProvider, ImageProvider, OpenAIImageProvider } from "./
40
40
  export type { ImageProviderEditParams, ImageProviderParams } from "./ImageProvider";
41
41
  export { ImageRequestError } from "./providers/images";
42
42
  export { AgentProvider, AzureOpenAIProvider, OpenAIProvider } from "./AgentProvider";
43
+ export { evalChain, FallbackProvider } from "./FallbackProvider";
44
+ export type { EvalChainResult, FallbackEntry, FallbackFailure, FallbackOptions, FallbackUsage, } from "./FallbackProvider";
43
45
  export type { AzureConfig, ProviderCapabilities, ProviderConfig, ProviderEvent, ProviderStream, ProviderStreamParams, ProviderToolNamespace, ProviderToolSpec, } from "./AgentProvider";
44
46
  export { AgentController, AttachmentNotFoundError, defaultAgentStore, defaultAttachmentStore, defaultFileOwners, defaultNonceStore, FrameCursorEvictedError, InvalidAttachmentScopeError, liveRuns, LiveRunNotFoundError, MemoryAgentStore, MemoryAttachmentStore, MemoryFileOwners, MemoryLiveRuns, MemoryNonceStore, RedisNonceStore, ScopedAttachments, } from "./AgentController";
45
47
  export type { AgentHookContext, AgentMiddlewareConfig, AgentRoute, AgentRouteMethod, AgentRouteRPC, AgentStore, Attachment, AttachmentDestination, AttachmentLimits, AttachmentScope, AttachmentStorage, AttachmentStore, AuthorizeRequestParams, FileOwnerRecord, FileOwners, LiveRuns, NonceRedisClient, NonceStore, PutAttachmentParams, RedisNonceStoreOptions, ToolAttachmentPut, ToolAttachmentRecord, ToolAttachments, UploadResult, } from "./AgentController";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../ai/index.ts"],"names":[],"mappings":"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"}