@opengeni/react 1.4.4 → 1.4.5-canary.37485542607001

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 (249) hide show
  1. package/README.md +17 -6
  2. package/dist/artifacts.d.ts +1 -0
  3. package/dist/artifacts.js +22 -15
  4. package/dist/artifacts.js.map +1 -1
  5. package/dist/{browser-viewer-5EEAS3IU.js → browser-viewer-CV23VIHB.js} +8 -6
  6. package/dist/{chunk-XS67YG5R.js → chunk-4O7OE7ON.js} +45 -4
  7. package/dist/chunk-4O7OE7ON.js.map +1 -0
  8. package/dist/{chunk-JHTIMBOL.js → chunk-5JSUNNQN.js} +26 -4
  9. package/dist/{chunk-JHTIMBOL.js.map → chunk-5JSUNNQN.js.map} +1 -1
  10. package/dist/{chunk-QMMCJGFI.js → chunk-6BAMPGBV.js} +6 -3
  11. package/dist/chunk-6BAMPGBV.js.map +1 -0
  12. package/dist/{chunk-I6OY3MWC.js → chunk-6FOTSVWU.js} +2 -2
  13. package/dist/{chunk-LVS3MH5T.js → chunk-ATIRUHBZ.js} +128 -10
  14. package/dist/chunk-ATIRUHBZ.js.map +1 -0
  15. package/dist/chunk-BOFEQC6K.js +162 -0
  16. package/dist/chunk-BOFEQC6K.js.map +1 -0
  17. package/dist/{chunk-2OQA3CPB.js → chunk-CESBPQP5.js} +19 -5
  18. package/dist/chunk-CESBPQP5.js.map +1 -0
  19. package/dist/{chunk-YVFRBXST.js → chunk-GMNGUPMX.js} +2 -2
  20. package/dist/{chunk-PHBFJCEU.js → chunk-I5EGRXXG.js} +110 -7
  21. package/dist/chunk-I5EGRXXG.js.map +1 -0
  22. package/dist/{chunk-PBCZL4JP.js → chunk-INIZSNXT.js} +2 -2
  23. package/dist/chunk-IZV5FTJC.js +55 -0
  24. package/dist/chunk-IZV5FTJC.js.map +1 -0
  25. package/dist/chunk-JDJJMBB3.js +1883 -0
  26. package/dist/chunk-JDJJMBB3.js.map +1 -0
  27. package/dist/chunk-LHF6BVM4.js +83 -0
  28. package/dist/chunk-LHF6BVM4.js.map +1 -0
  29. package/dist/{chunk-C5BF4L26.js → chunk-LSMWZSCJ.js} +7 -7
  30. package/dist/chunk-LTKGTXUQ.js +174 -0
  31. package/dist/chunk-LTKGTXUQ.js.map +1 -0
  32. package/dist/chunk-N7S72EXK.js +25 -0
  33. package/dist/chunk-N7S72EXK.js.map +1 -0
  34. package/dist/{chunk-CVYCLFMH.js → chunk-PEHTX3V7.js} +19 -1
  35. package/dist/chunk-PEHTX3V7.js.map +1 -0
  36. package/dist/chunk-R5R5RQQD.js +51 -0
  37. package/dist/chunk-R5R5RQQD.js.map +1 -0
  38. package/dist/{chunk-IYQCWGU5.js → chunk-RGTZ2VDR.js} +35 -62
  39. package/dist/chunk-RGTZ2VDR.js.map +1 -0
  40. package/dist/chunk-RI42H5IU.js +326 -0
  41. package/dist/chunk-RI42H5IU.js.map +1 -0
  42. package/dist/{chunk-EAOSEIXB.js → chunk-RRRS5D5T.js} +727 -1983
  43. package/dist/chunk-RRRS5D5T.js.map +1 -0
  44. package/dist/{chunk-JH7V627O.js → chunk-SHLZMAJN.js} +2 -11
  45. package/dist/chunk-SHLZMAJN.js.map +1 -0
  46. package/dist/{chunk-IUHHPMAX.js → chunk-SZOCY5VG.js} +18 -87
  47. package/dist/chunk-SZOCY5VG.js.map +1 -0
  48. package/dist/{chunk-L2J3PU7A.js → chunk-VYIPNDUZ.js} +29 -100
  49. package/dist/chunk-VYIPNDUZ.js.map +1 -0
  50. package/dist/{chunk-G6YRCIYJ.js → chunk-YK6QMGVL.js} +55 -60
  51. package/dist/chunk-YK6QMGVL.js.map +1 -0
  52. package/dist/chunk-ZIB4H5LN.js +101 -0
  53. package/dist/chunk-ZIB4H5LN.js.map +1 -0
  54. package/dist/client.d.ts +9 -3
  55. package/dist/clipboard.js +1 -1
  56. package/dist/components/browser-viewer.d.ts +6 -0
  57. package/dist/components/composer.d.ts +3 -69
  58. package/dist/components/human-input-form.d.ts +3 -32
  59. package/dist/components/markdown.d.ts +8 -0
  60. package/dist/components/model-policy-picker.d.ts +4 -37
  61. package/dist/components/opper-mark.d.ts +7 -0
  62. package/dist/components/provider-recovery-notice.d.ts +15 -0
  63. package/dist/components/remark-soft-line-breaks.d.ts +38 -0
  64. package/dist/components/sandbox-workspace.d.ts +13 -0
  65. package/dist/components/session-chrome.d.ts +5 -3
  66. package/dist/components/session-conversation.d.ts +15 -3
  67. package/dist/composer-messages.d.ts +74 -0
  68. package/dist/composer-messages.js +9 -0
  69. package/dist/composer.js +15 -10
  70. package/dist/{computer-viewer-ELNLZGHI.js → computer-viewer-K4CKYRX6.js} +4 -4
  71. package/dist/connect-setup.d.ts +2 -0
  72. package/dist/connect.d.ts +1 -1
  73. package/dist/connect.js +21 -6
  74. package/dist/connect.js.map +1 -1
  75. package/dist/{embedded-voice-NIL4RDX3.js → embedded-voice-K7SOZVVZ.js} +6 -4
  76. package/dist/{embedded-voice-NIL4RDX3.js.map → embedded-voice-K7SOZVVZ.js.map} +1 -1
  77. package/dist/hooks/shared-machines-list.d.ts +4 -0
  78. package/dist/hooks/use-client-config-flags.d.ts +6 -0
  79. package/dist/hooks/use-goal.d.ts +2 -1
  80. package/dist/hooks/use-new-session-draft.d.ts +74 -0
  81. package/dist/human-input-model.d.ts +40 -0
  82. package/dist/index.d.ts +4 -1
  83. package/dist/index.js +116 -73
  84. package/dist/index.js.map +1 -1
  85. package/dist/interaction.js +5 -5
  86. package/dist/{latest-question-2POFPYNB.js → latest-question-27HGRPVF.js} +3 -3
  87. package/dist/lib/clipboard.d.ts +7 -0
  88. package/dist/lib/provider-recovery.d.ts +49 -0
  89. package/dist/lib/transient-retry.d.ts +25 -0
  90. package/dist/machines.js +2 -2
  91. package/dist/model-mark-paths.d.ts +34 -0
  92. package/dist/model-mark-paths.js +16 -0
  93. package/dist/model-picker-model.d.ts +111 -0
  94. package/dist/model-picker-model.js +25 -0
  95. package/dist/model-picker-model.js.map +1 -0
  96. package/dist/{model-policy-picker-menu-WRNSRFQC.js → model-policy-picker-menu-I5KPC3D6.js} +6 -4
  97. package/dist/model-policy-picker-menu-I5KPC3D6.js.map +1 -0
  98. package/dist/model-policy.d.ts +10 -0
  99. package/dist/model-policy.js +5 -1
  100. package/dist/new-session-draft.d.ts +7 -0
  101. package/dist/new-session-draft.js +639 -0
  102. package/dist/new-session-draft.js.map +1 -0
  103. package/dist/organization-model.d.ts +32 -0
  104. package/dist/organization-model.js +65 -0
  105. package/dist/organization-model.js.map +1 -0
  106. package/dist/{platform-activity-row-PJJVATTZ.js → platform-activity-row-NJ47YBXW.js} +7 -84
  107. package/dist/platform-activity-row-NJ47YBXW.js.map +1 -0
  108. package/dist/queue-presentation-model.d.ts +72 -0
  109. package/dist/queue-presentation-model.js +38 -0
  110. package/dist/queue-presentation-model.js.map +1 -0
  111. package/dist/{queue-surface-implementation-67FS7FUI.js → queue-surface-implementation-YPJFQ3O6.js} +24 -252
  112. package/dist/queue-surface-implementation-YPJFQ3O6.js.map +1 -0
  113. package/dist/realtime.js +5 -3
  114. package/dist/{sandbox-files-34CJJNOY.js → sandbox-files-2DGDO6NI.js} +5 -5
  115. package/dist/sandbox-files-2DGDO6NI.js.map +1 -0
  116. package/dist/sandbox-label-model.d.ts +23 -0
  117. package/dist/sandbox-label-model.js +28 -0
  118. package/dist/sandbox-label-model.js.map +1 -0
  119. package/dist/session-agents-model.d.ts +10 -0
  120. package/dist/session-agents-model.js +25 -0
  121. package/dist/session-agents-model.js.map +1 -0
  122. package/dist/session-attention-model.d.ts +8 -0
  123. package/dist/session-attention-model.js +46 -0
  124. package/dist/session-attention-model.js.map +1 -0
  125. package/dist/session-feedback-model.d.ts +20 -0
  126. package/dist/session-feedback-model.js +56 -0
  127. package/dist/session-feedback-model.js.map +1 -0
  128. package/dist/session-list-model.d.ts +119 -0
  129. package/dist/session-list-model.js +244 -0
  130. package/dist/session-list-model.js.map +1 -0
  131. package/dist/session-status-model.d.ts +19 -0
  132. package/dist/session-ui.js +26 -17
  133. package/dist/session-ui.js.map +1 -1
  134. package/dist/session.js +8 -6
  135. package/dist/testing/session-scenarios.d.ts +10 -0
  136. package/dist/testing/session-scenarios.js +303 -0
  137. package/dist/testing/session-scenarios.js.map +1 -0
  138. package/dist/timeline/genie-copy.d.ts +3 -0
  139. package/dist/timeline/genie-loading.d.ts +11 -0
  140. package/dist/timeline/index.d.ts +1 -1
  141. package/dist/timeline/notice-presentation.d.ts +7 -0
  142. package/dist/timeline/patch-apply-command.d.ts +18 -0
  143. package/dist/timeline/platform-activity-presentation.d.ts +7 -0
  144. package/dist/timeline/presented-image.d.ts +6 -1
  145. package/dist/timeline/question-nav-model.d.ts +23 -0
  146. package/dist/timeline/registry.d.ts +10 -1
  147. package/dist/timeline/retained-loaders.d.ts +1 -1
  148. package/dist/timeline/tool-presentation.d.ts +172 -0
  149. package/dist/timeline/turn-summary-model.d.ts +90 -0
  150. package/dist/timeline/turn-summary.d.ts +4 -74
  151. package/dist/timeline/work-presentation.d.ts +42 -0
  152. package/dist/timeline-model.d.ts +24 -0
  153. package/dist/timeline-model.js +152 -0
  154. package/dist/timeline-model.js.map +1 -0
  155. package/package.json +55 -3
  156. package/src/artifacts.ts +1 -0
  157. package/src/client.ts +9 -3
  158. package/src/components/browser-viewer.tsx +23 -2
  159. package/src/components/claude-mark.tsx +2 -1
  160. package/src/components/composer.tsx +8 -146
  161. package/src/components/grok-mark.tsx +2 -1
  162. package/src/components/human-input-form.tsx +13 -124
  163. package/src/components/markdown.tsx +19 -1
  164. package/src/components/message-timeline.tsx +45 -99
  165. package/src/components/model-mark.tsx +2 -1
  166. package/src/components/model-policy-picker-menu.tsx +30 -85
  167. package/src/components/model-policy-picker.tsx +20 -150
  168. package/src/components/opper-mark.tsx +18 -0
  169. package/src/components/provider-recovery-notice.tsx +41 -0
  170. package/src/components/queue-surface-implementation.tsx +20 -349
  171. package/src/components/remark-soft-line-breaks.ts +166 -0
  172. package/src/components/sandbox-workspace.tsx +17 -1
  173. package/src/components/session-chrome.tsx +114 -99
  174. package/src/components/session-conversation.tsx +55 -6
  175. package/src/components/session-status.tsx +17 -16
  176. package/src/composer-messages.ts +150 -0
  177. package/src/connect-setup.tsx +45 -11
  178. package/src/connect.ts +1 -1
  179. package/src/hooks/shared-machines-list.ts +34 -1
  180. package/src/hooks/use-client-config-flags.ts +8 -0
  181. package/src/hooks/use-goal.ts +66 -10
  182. package/src/hooks/use-new-session-draft.ts +813 -0
  183. package/src/human-input-model.ts +147 -0
  184. package/src/index.ts +16 -0
  185. package/src/lib/clipboard.ts +29 -0
  186. package/src/lib/format.ts +7 -0
  187. package/src/lib/provider-recovery.ts +202 -0
  188. package/src/lib/transient-retry.ts +99 -0
  189. package/src/model-mark-paths.ts +53 -0
  190. package/src/model-picker-model.ts +330 -0
  191. package/src/model-policy.ts +75 -5
  192. package/src/new-session-draft.ts +22 -0
  193. package/src/organization-model.ts +118 -0
  194. package/src/queue-presentation-model.ts +464 -0
  195. package/src/sandbox-label-model.ts +41 -0
  196. package/src/session-agents-model.ts +33 -0
  197. package/src/session-attention-model.ts +59 -0
  198. package/src/session-feedback-model.ts +95 -0
  199. package/src/session-list-model.ts +377 -0
  200. package/src/session-status-model.ts +62 -0
  201. package/src/testing/session-scenarios.ts +326 -0
  202. package/src/timeline/activity-rail.tsx +54 -24
  203. package/src/timeline/genie-copy.ts +19 -0
  204. package/src/timeline/genie-loading.tsx +15 -19
  205. package/src/timeline/index.ts +1 -0
  206. package/src/timeline/notice-presentation.ts +22 -0
  207. package/src/timeline/patch-apply-command.tsx +135 -0
  208. package/src/timeline/platform-activity-presentation.ts +122 -0
  209. package/src/timeline/platform-activity-row.tsx +6 -96
  210. package/src/timeline/presented-image.ts +16 -2
  211. package/src/timeline/projection.ts +12 -1
  212. package/src/timeline/question-nav-model.ts +28 -0
  213. package/src/timeline/registry.ts +11 -1
  214. package/src/timeline/retained-loaders.ts +9 -4
  215. package/src/timeline/rolling-activity.tsx +7 -19
  216. package/src/timeline/tool-presentation.ts +1316 -0
  217. package/src/timeline/tool-renderers.tsx +254 -1024
  218. package/src/timeline/turn-summary-model.ts +338 -0
  219. package/src/timeline/turn-summary.tsx +21 -326
  220. package/src/timeline/work-presentation.ts +139 -0
  221. package/src/timeline-model.ts +108 -0
  222. package/styles/compiled.css +17 -4
  223. package/styles/connect.css +4 -0
  224. package/styles/responsive.css +11 -2
  225. package/dist/chunk-2OQA3CPB.js.map +0 -1
  226. package/dist/chunk-CVYCLFMH.js.map +0 -1
  227. package/dist/chunk-EAOSEIXB.js.map +0 -1
  228. package/dist/chunk-G6YRCIYJ.js.map +0 -1
  229. package/dist/chunk-HXYOSSQO.js +0 -117
  230. package/dist/chunk-HXYOSSQO.js.map +0 -1
  231. package/dist/chunk-IUHHPMAX.js.map +0 -1
  232. package/dist/chunk-IYQCWGU5.js.map +0 -1
  233. package/dist/chunk-JH7V627O.js.map +0 -1
  234. package/dist/chunk-L2J3PU7A.js.map +0 -1
  235. package/dist/chunk-LVS3MH5T.js.map +0 -1
  236. package/dist/chunk-PHBFJCEU.js.map +0 -1
  237. package/dist/chunk-QMMCJGFI.js.map +0 -1
  238. package/dist/chunk-XS67YG5R.js.map +0 -1
  239. package/dist/platform-activity-row-PJJVATTZ.js.map +0 -1
  240. package/dist/queue-surface-implementation-67FS7FUI.js.map +0 -1
  241. /package/dist/{browser-viewer-5EEAS3IU.js.map → browser-viewer-CV23VIHB.js.map} +0 -0
  242. /package/dist/{chunk-I6OY3MWC.js.map → chunk-6FOTSVWU.js.map} +0 -0
  243. /package/dist/{chunk-YVFRBXST.js.map → chunk-GMNGUPMX.js.map} +0 -0
  244. /package/dist/{chunk-PBCZL4JP.js.map → chunk-INIZSNXT.js.map} +0 -0
  245. /package/dist/{chunk-C5BF4L26.js.map → chunk-LSMWZSCJ.js.map} +0 -0
  246. /package/dist/{computer-viewer-ELNLZGHI.js.map → composer-messages.js.map} +0 -0
  247. /package/dist/{model-policy-picker-menu-WRNSRFQC.js.map → computer-viewer-K4CKYRX6.js.map} +0 -0
  248. /package/dist/{latest-question-2POFPYNB.js.map → latest-question-27HGRPVF.js.map} +0 -0
  249. /package/dist/{sandbox-files-34CJJNOY.js.map → model-mark-paths.js.map} +0 -0
@@ -8,22 +8,23 @@ import {
8
8
  useBrowserSession,
9
9
  useBrowserSessions,
10
10
  useSiteAuthConnections
11
- } from "./chunk-2OQA3CPB.js";
11
+ } from "./chunk-CESBPQP5.js";
12
12
  import {
13
13
  ComputerViewer,
14
14
  useComputerFrameStream,
15
15
  useComputerSession,
16
16
  useComputerSessions
17
- } from "./chunk-I6OY3MWC.js";
17
+ } from "./chunk-6FOTSVWU.js";
18
18
  import {
19
19
  useInteractionInterventions,
20
20
  useInteractionInvalidation
21
21
  } from "./chunk-BNKV5ZLF.js";
22
- import "./chunk-CVYCLFMH.js";
22
+ import "./chunk-PEHTX3V7.js";
23
23
  import "./chunk-IMSUVYQB.js";
24
24
  import "./chunk-ZUWF4NF7.js";
25
- import "./chunk-LVS3MH5T.js";
25
+ import "./chunk-ATIRUHBZ.js";
26
26
  import "./chunk-TNEZNMSN.js";
27
+ import "./chunk-5I4VRWBB.js";
27
28
  import "./chunk-QHUE7E4N.js";
28
29
  import "./chunk-CM7LVUKC.js";
29
30
  import {
@@ -32,7 +33,6 @@ import {
32
33
  useEmbeddedInteraction,
33
34
  useEmbeddedInterventions
34
35
  } from "./chunk-XTD7TZHW.js";
35
- import "./chunk-5I4VRWBB.js";
36
36
  import "./chunk-TXS65BB2.js";
37
37
 
38
38
  // src/hooks/use-network-routes.ts
@@ -3,9 +3,9 @@ import {
3
3
  isTimelineUserQuestion,
4
4
  isTurnExecutionEvidence,
5
5
  timelineQuestionPlacement
6
- } from "./chunk-QMMCJGFI.js";
6
+ } from "./chunk-6BAMPGBV.js";
7
7
  import "./chunk-T46QZH3E.js";
8
- import "./chunk-LVS3MH5T.js";
8
+ import "./chunk-ATIRUHBZ.js";
9
9
 
10
10
  // src/hooks/latest-question.ts
11
11
  import { SESSION_EVENT_TYPES } from "@opengeni/sdk";
@@ -115,4 +115,4 @@ export {
115
115
  TIMELINE_TURN_ANCHOR_EVENT_TYPES,
116
116
  resolveLatestQuestion
117
117
  };
118
- //# sourceMappingURL=latest-question-2POFPYNB.js.map
118
+ //# sourceMappingURL=latest-question-27HGRPVF.js.map
@@ -3,5 +3,12 @@
3
3
  * back to a short-lived textarea for older embeds / denied permissions.
4
4
  */
5
5
  export declare function copyTextToClipboard(text: string): Promise<boolean>;
6
+ /**
7
+ * Copy text that is still being prepared, such as a command around a freshly
8
+ * minted URL. Safari only allows a clipboard write during the click itself, so
9
+ * hand the pending text to a `ClipboardItem` where supported; otherwise wait
10
+ * for it and copy. Resolves false when the text failed or nothing was copied.
11
+ */
12
+ export declare function copyPendingTextToClipboard(text: Promise<string>): Promise<boolean>;
6
13
  /** Serialize an HTML table to tab-separated values (spreadsheet-friendly). */
7
14
  export declare function tableElementToTsv(table: HTMLTableElement | null | undefined): string;
@@ -0,0 +1,49 @@
1
+ import type { SessionEvent, SessionStatus } from "@opengeni/sdk";
2
+ /**
3
+ * Finite same-turn provider recovery, projected for people. Presentation only:
4
+ * the worker owns retry authority, pacing and the recovery budget. The worker
5
+ * (`apps/worker/src/activities/agent-turn/provider-recovery-copy.ts`) writes
6
+ * the same exhausted sentence into `turn.failed.error`; keep the two in step.
7
+ */
8
+ export type ProviderRecoveryCondition = "overloaded" | "unavailable" | "unresponsive" | "rate_limited";
9
+ export type ProviderRecoveryFacts = {
10
+ /** Recorded worker failure code (`provider_unavailable`, `mcp_transport_timeout`, ...). */
11
+ code: string;
12
+ condition: ProviderRecoveryCondition | null;
13
+ /** Display label of the affected model, when the route was recorded. */
14
+ modelLabel: string | null;
15
+ /** Display label of the serving provider, when the route was recorded. */
16
+ providerLabel: string | null;
17
+ /** Automatic retries scheduled (live) or spent (exhausted). */
18
+ attempt: number | null;
19
+ /** Finite automatic retry budget. */
20
+ maxAttempts: number | null;
21
+ /** True when the model route itself is affected, so another model may help. */
22
+ modelRoute: boolean;
23
+ };
24
+ /**
25
+ * Read a retryable `turn.recovery.requested` payload or an exhausted
26
+ * `turn.failed` payload. Returns null for every other recovery reason (human
27
+ * Retry, worker shutdown, credential rotation, capacity waits, ...).
28
+ */
29
+ export declare function parseProviderRecovery(payload: unknown): ProviderRecoveryFacts | null;
30
+ /** One present-tense clause naming what is unavailable, without a trailing period. */
31
+ export declare function providerRecoverySubject(facts: ProviderRecoveryFacts): string;
32
+ /** Live status while the same turn waits for its next automatic retry. */
33
+ export declare function providerRecoveryRetryingText(facts: ProviderRecoveryFacts): string;
34
+ /** Terminal sentence once the automatic budget is spent. */
35
+ export declare function providerRecoveryExhaustedText(facts: ProviderRecoveryFacts): string;
36
+ /**
37
+ * The active turn's current automatic provider retry, or null. Only a
38
+ * `recovering`, unpaused session qualifies, and only the newest boundary of its
39
+ * exact active turn counts, so merged or replayed pages never borrow another
40
+ * turn's diagnosis.
41
+ */
42
+ export declare function currentProviderRecovery(session: {
43
+ id: string;
44
+ status: SessionStatus | null | undefined;
45
+ activeTurnId: string | null | undefined;
46
+ effectiveControl?: {
47
+ state: string;
48
+ } | null | undefined;
49
+ }, events: readonly SessionEvent[]): ProviderRecoveryFacts | null;
@@ -0,0 +1,25 @@
1
+ /** Backoff between attempts: about ten seconds in all before anything is shown. */
2
+ export declare const TRANSIENT_RETRY_DELAYS_MS: readonly number[];
3
+ /** After the quiet retries give up, try once at this pace until Opengeni answers. */
4
+ export declare const TRANSIENT_RECONNECT_INTERVAL_MS = 3000;
5
+ /** The one line shown while Opengeni is briefly unreachable. */
6
+ export declare const OPENGENI_UPDATING_NOTICE = "Opengeni is updating. We'll reconnect automatically.";
7
+ /**
8
+ * True for a failure that says the service is briefly unreachable, not that
9
+ * the request was wrong: a gateway or availability status, a 500 the API marks
10
+ * retryable, or a request that never got a response.
11
+ */
12
+ export declare function isTransientServiceFailure(error: unknown): boolean;
13
+ export type RetryTransientOptions = {
14
+ /** Stop waiting (and rethrow the last failure) once this returns false. */
15
+ shouldContinue?: () => boolean;
16
+ signal?: AbortSignal;
17
+ delaysMs?: readonly number[];
18
+ sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
19
+ };
20
+ /**
21
+ * Run a read, retrying only transient service failures with backoff. Never use
22
+ * this for a request whose repeat could apply twice: it is for reads and for
23
+ * writes that are idempotent by construction.
24
+ */
25
+ export declare function retryTransient<T>(operation: () => Promise<T>, options?: RetryTransientOptions): Promise<T>;
package/dist/machines.js CHANGED
@@ -29,9 +29,9 @@ import {
29
29
  healthPulses,
30
30
  pointsFor,
31
31
  useMachines
32
- } from "./chunk-JHTIMBOL.js";
32
+ } from "./chunk-5JSUNNQN.js";
33
33
  import "./chunk-PKCAYHDC.js";
34
- import "./chunk-LVS3MH5T.js";
34
+ import "./chunk-ATIRUHBZ.js";
35
35
  import "./chunk-QHUE7E4N.js";
36
36
  import "./chunk-CM7LVUKC.js";
37
37
  import "./chunk-XTD7TZHW.js";
@@ -0,0 +1,34 @@
1
+ import { type ModelDisplayInput, type ModelVendor } from "@opengeni/sdk/model-display";
2
+ /** ChatGPT / OpenAI mark (Simple Icons, CC0). */
3
+ export declare const CHATGPT_MARK_PATH = "M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3653-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8414 3.3698-2.02 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.783-2.7622a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z";
4
+ /** Claude mark (Simple Icons, CC0; https://github.com/simple-icons/simple-icons). */
5
+ export declare const CLAUDE_MARK_PATH = "m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z";
6
+ /**
7
+ * MIT License
8
+ *
9
+ * Copyright (c) 2023 LobeHub
10
+ *
11
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ * of this software and associated documentation files (the "Software"), to deal
13
+ * in the Software without restriction, including without limitation the rights
14
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ * copies of the Software, and to permit persons to whom the Software is
16
+ * furnished to do so, subject to the following conditions:
17
+ *
18
+ * The above copyright notice and this permission notice shall be included in all
19
+ * copies or substantial portions of the Software.
20
+ *
21
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ * SOFTWARE.
28
+ * Source: https://raw.githubusercontent.com/lobehub/lobe-icons/master/src/Grok/components/Mono.tsx
29
+ */
30
+ export declare const GROK_MARK_PATH = "M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815";
31
+ export type MarkedModelVendor = Extract<ModelVendor, "openai" | "anthropic" | "xai">;
32
+ export declare const MODEL_MARK_PATHS: Record<MarkedModelVendor, string>;
33
+ /** The maker whose logo marks this model, or null for the neutral fallback. */
34
+ export declare function modelMarkVendor(model: ModelDisplayInput): MarkedModelVendor | null;
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import {
3
+ CHATGPT_MARK_PATH,
4
+ CLAUDE_MARK_PATH,
5
+ GROK_MARK_PATH,
6
+ MODEL_MARK_PATHS,
7
+ modelMarkVendor
8
+ } from "./chunk-N7S72EXK.js";
9
+ export {
10
+ CHATGPT_MARK_PATH,
11
+ CLAUDE_MARK_PATH,
12
+ GROK_MARK_PATH,
13
+ MODEL_MARK_PATHS,
14
+ modelMarkVendor
15
+ };
16
+ //# sourceMappingURL=model-mark-paths.js.map
@@ -0,0 +1,111 @@
1
+ /**
2
+ * The model picker's presentation logic, free of any renderer: which rows show,
3
+ * how they group and filter, and which thinking/latency controls apply. The web
4
+ * menu and native sheets both render from this.
5
+ */
6
+ import type { ClientModel, LatencyMode, ReasoningEffort } from "@opengeni/sdk";
7
+ import { type PickerBillingClass, type PickerModelRow } from "./model-policy.js";
8
+ type ClientPickerModelRow = PickerModelRow<ClientModel>;
9
+ export type ModelPolicyPickerMessages = {
10
+ label: string;
11
+ loading: string;
12
+ noModels: string;
13
+ connectTitle: string;
14
+ connectBody: string;
15
+ connectAction: string;
16
+ thinking: string;
17
+ fast: string;
18
+ fastRateHint: string;
19
+ codexOnly: string;
20
+ searchLabel?: string;
21
+ searchPlaceholder?: string;
22
+ currentModel?: string;
23
+ noMatches?: string;
24
+ unsupportedAttachments?: string;
25
+ thinkingEffort?: string;
26
+ selected?: string;
27
+ free?: string;
28
+ billingHints: Record<PickerBillingClass, string>;
29
+ };
30
+ export declare const defaultModelPolicyPickerMessages: ModelPolicyPickerMessages;
31
+ /** Host branding for one payment group; the icon type belongs to the renderer. */
32
+ export type ModelPickerGroupBranding<TIcon = unknown> = {
33
+ label?: string | undefined;
34
+ /** Omit to preserve the default; null hides the supporting text. */
35
+ description?: string | null | undefined;
36
+ /** Decorative, non-interactive content. Omit for the default; null hides it. */
37
+ icon?: TIcon | undefined;
38
+ };
39
+ export type ModelPickerGroupPresentation<TIcon = unknown> = Partial<Record<PickerBillingClass, ModelPickerGroupBranding<TIcon>>>;
40
+ /** The renderer-neutral inputs every picker surface shares. */
41
+ export type ModelPickerInput<TIcon = unknown> = {
42
+ groupPresentation?: ModelPickerGroupPresentation<TIcon> | undefined;
43
+ models?: ClientModel[] | undefined;
44
+ rows?: PickerModelRow[] | undefined;
45
+ hasImageAttachments?: boolean | undefined;
46
+ model: string;
47
+ effort: ReasoningEffort;
48
+ latencyMode: LatencyMode;
49
+ codexOnly?: boolean | undefined;
50
+ collapseScopes?: boolean | undefined;
51
+ allowLatencyMode?: boolean | undefined;
52
+ messages?: Partial<ModelPolicyPickerMessages> | undefined;
53
+ };
54
+ /** Models settings keeps naming who is billed for a key. */
55
+ export declare const SCOPED_BILLING_HINTS: Partial<Record<PickerBillingClass, string>>;
56
+ export declare function isCodexPickerModel(model: ClientModel): boolean;
57
+ /** The payment group a selection the catalog no longer lists most likely belonged to. */
58
+ export declare function billingClassForMissingSelection(modelId: string): PickerBillingClass;
59
+ /**
60
+ * Host branding for a payment group. While scopes are collapsed, API keys are
61
+ * one group, so either API-key presentation serves both.
62
+ */
63
+ export declare function groupPresentationFor<TIcon>(props: {
64
+ groupPresentation?: ModelPickerGroupPresentation<TIcon> | undefined;
65
+ collapseScopes?: boolean | undefined;
66
+ }, billingClass: PickerBillingClass): ModelPickerGroupBranding<TIcon> | undefined;
67
+ export declare function effectiveRows<TIcon>(props: ModelPickerInput<TIcon>): ClientPickerModelRow[];
68
+ export type ModelPickerMenuGroup = {
69
+ billingClass: PickerBillingClass;
70
+ label: string;
71
+ description: string | null;
72
+ rows: ClientPickerModelRow[];
73
+ };
74
+ export type ModelPickerThinking = {
75
+ efforts: ReasoningEffort[];
76
+ value: ReasoningEffort;
77
+ showThinking: boolean;
78
+ showFast: boolean;
79
+ /** The selected row cannot run, so its controls are read-only. */
80
+ disabled: boolean;
81
+ };
82
+ export type ModelPickerMenuView = {
83
+ messages: ModelPolicyPickerMessages;
84
+ rows: ClientPickerModelRow[];
85
+ selected: ClientPickerModelRow | null;
86
+ /** Any row can run; otherwise the surface offers to connect models instead. */
87
+ anySelectable: boolean;
88
+ /** Whether the query is non-empty (decides "no matches" versus "no models"). */
89
+ searching: boolean;
90
+ groups: ModelPickerMenuGroup[];
91
+ matchCount: number;
92
+ /** Thinking and Fast controls for the selected model, or null when it has none. */
93
+ thinking: ModelPickerThinking | null;
94
+ /** The selected model cannot view images the draft carries. */
95
+ unsupportedAttachments: boolean;
96
+ };
97
+ /** Everything a picker menu shows for this input and search query. */
98
+ export declare function modelPickerMenuView<TIcon>(props: ModelPickerInput<TIcon>, query: string): ModelPickerMenuView;
99
+ export type ModelPickerChoice = {
100
+ /** The new model, or null when the row is already selected. */
101
+ model: string | null;
102
+ /** Always reported, so hosts can commit model and effort together. */
103
+ effort: ReasoningEffort;
104
+ /** Fast falls back to standard when the new model cannot run it. */
105
+ latencyMode: LatencyMode | null;
106
+ };
107
+ /** What choosing a row changes, or null when the row cannot be chosen. */
108
+ export declare function modelPickerChoice(props: Pick<ModelPickerInput, "model" | "effort" | "latencyMode">, row: ClientPickerModelRow): ModelPickerChoice | null;
109
+ /** The web segmented control's short labels ("X-high" fits a phone row). */
110
+ export declare function compactEffortLabel(effort: ReasoningEffort, label: string): string;
111
+ export {};
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import {
3
+ SCOPED_BILLING_HINTS,
4
+ billingClassForMissingSelection,
5
+ compactEffortLabel,
6
+ defaultModelPolicyPickerMessages,
7
+ effectiveRows,
8
+ groupPresentationFor,
9
+ isCodexPickerModel,
10
+ modelPickerChoice,
11
+ modelPickerMenuView
12
+ } from "./chunk-LTKGTXUQ.js";
13
+ import "./chunk-4O7OE7ON.js";
14
+ export {
15
+ SCOPED_BILLING_HINTS,
16
+ billingClassForMissingSelection,
17
+ compactEffortLabel,
18
+ defaultModelPolicyPickerMessages,
19
+ effectiveRows,
20
+ groupPresentationFor,
21
+ isCodexPickerModel,
22
+ modelPickerChoice,
23
+ modelPickerMenuView
24
+ };
25
+ //# sourceMappingURL=model-picker-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -2,14 +2,16 @@
2
2
  import {
3
3
  ModelPolicyPickerMenu,
4
4
  ModelPolicyPickerPopover
5
- } from "./chunk-IYQCWGU5.js";
6
- import "./chunk-L2J3PU7A.js";
5
+ } from "./chunk-RGTZ2VDR.js";
6
+ import "./chunk-VYIPNDUZ.js";
7
7
  import "./chunk-PMV53IMM.js";
8
- import "./chunk-XS67YG5R.js";
8
+ import "./chunk-N7S72EXK.js";
9
+ import "./chunk-LTKGTXUQ.js";
9
10
  import "./chunk-XEA5BCMA.js";
11
+ import "./chunk-4O7OE7ON.js";
10
12
  import "./chunk-TXS65BB2.js";
11
13
  export {
12
14
  ModelPolicyPickerMenu,
13
15
  ModelPolicyPickerPopover
14
16
  };
15
- //# sourceMappingURL=model-policy-picker-menu-WRNSRFQC.js.map
17
+ //# sourceMappingURL=model-policy-picker-menu-I5KPC3D6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -24,6 +24,16 @@ export declare function availabilityReasonLabel(reason: WorkspaceModelCatalogMod
24
24
  export declare function effortOptionsForModel(model: ClientModel): ReasoningEffort[];
25
25
  export declare function defaultEffortForModel(model: ClientModel): ReasoningEffort;
26
26
  export declare function coerceReasoningEffortForModel(model: ClientModel, effort: ReasoningEffort): ReasoningEffort;
27
+ /** Whether the composer offers (and therefore labels) a reasoning-effort choice. */
28
+ export declare function modelOffersEffortChoice(model: ClientModel): boolean;
29
+ /**
30
+ * The composer model pill at phone width: the catalog's compact name (falling
31
+ * back to the display name) and the effort label when effort is a choice.
32
+ */
33
+ export declare function compactModelPill(models: readonly ClientModel[], modelId: string, effort: ReasoningEffort | null | undefined): {
34
+ name: string;
35
+ effort: string | null;
36
+ };
27
37
  export declare function runnableLatencyModesForModel(model: ClientModel): LatencyModeId[];
28
38
  export declare function labelLatencyMode(mode: LatencyModeId): string;
29
39
  export declare function labelReasoningEffort(effort: ReasoningEffort): string;
@@ -5,6 +5,7 @@ import {
5
5
  billingClassForModel,
6
6
  billingClassLabel,
7
7
  coerceReasoningEffortForModel,
8
+ compactModelPill,
8
9
  defaultEffortForModel,
9
10
  effortOptionsForModel,
10
11
  findPickerRow,
@@ -12,6 +13,7 @@ import {
12
13
  labelLatencyMode,
13
14
  labelReasoningEffort,
14
15
  modelDisplayName,
16
+ modelOffersEffortChoice,
15
17
  modelUsesCredits,
16
18
  modelVendor,
17
19
  payerSummaryForModel,
@@ -20,13 +22,14 @@ import {
20
22
  runnableLatencyModesForModel,
21
23
  scopedBillingClassLabel,
22
24
  sortPickerRows
23
- } from "./chunk-XS67YG5R.js";
25
+ } from "./chunk-4O7OE7ON.js";
24
26
  export {
25
27
  advancedSourceSummary,
26
28
  availabilityReasonLabel,
27
29
  billingClassForModel,
28
30
  billingClassLabel,
29
31
  coerceReasoningEffortForModel,
32
+ compactModelPill,
30
33
  defaultEffortForModel,
31
34
  effortOptionsForModel,
32
35
  findPickerRow,
@@ -34,6 +37,7 @@ export {
34
37
  labelLatencyMode,
35
38
  labelReasoningEffort,
36
39
  modelDisplayName,
40
+ modelOffersEffortChoice,
37
41
  modelUsesCredits,
38
42
  modelVendor,
39
43
  payerSummaryForModel,
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The new-session composer's server-authoritative draft (text, model, options,
3
+ * project, attachments), shared by the web app and native apps so a draft
4
+ * started on one device continues on another.
5
+ */
6
+ export { isNewSessionDraftConflict, useNewSessionDraft, type AcknowledgeConsumedNewSessionDraftResult, type FlushedNewSessionDraft, type NewSessionDraftEditable, type UseNewSessionDraftOptions, type UseNewSessionDraftResult, } from "./hooks/use-new-session-draft.js";
7
+ export { isTransientServiceFailure, OPENGENI_UPDATING_NOTICE, retryTransient, TRANSIENT_RECONNECT_INTERVAL_MS, TRANSIENT_RETRY_DELAYS_MS, type RetryTransientOptions, } from "./lib/transient-retry.js";