@opengeni/react 7.4.0 → 7.5.0-canary.36927100590001

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 (210) hide show
  1. package/README.md +124 -27
  2. package/dist/artifacts-document.js +3 -2
  3. package/dist/artifacts-presentation.js +3 -2
  4. package/dist/artifacts-spreadsheet.js +2 -2
  5. package/dist/artifacts.d.ts +1 -0
  6. package/dist/artifacts.js +516 -1413
  7. package/dist/artifacts.js.map +1 -1
  8. package/dist/{browser-viewer-2E6R2Y4W.js → browser-viewer-Z7S7QEJL.js} +6 -5
  9. package/dist/chat-interactive-block-UGBTNB3L.js +11 -0
  10. package/dist/{chunk-Y3QTZN2F.js → chunk-2VFNCX4E.js} +6 -6
  11. package/dist/{chunk-UDD6DLLT.js → chunk-3IJJEYW4.js} +15 -3
  12. package/dist/chunk-3IJJEYW4.js.map +1 -0
  13. package/dist/chunk-4RVYOY4O.js +379 -0
  14. package/dist/chunk-4RVYOY4O.js.map +1 -0
  15. package/dist/chunk-5CVXZA3Y.js +292 -0
  16. package/dist/chunk-5CVXZA3Y.js.map +1 -0
  17. package/dist/{chunk-5YK2ZDIG.js → chunk-5J4FOW6Q.js} +2 -10
  18. package/dist/chunk-5J4FOW6Q.js.map +1 -0
  19. package/dist/{chunk-KVERXCFY.js → chunk-5KYZIQFY.js} +40 -3
  20. package/dist/chunk-5KYZIQFY.js.map +1 -0
  21. package/dist/{chunk-KNDIXZN6.js → chunk-7UAMYXJY.js} +25 -18
  22. package/dist/{chunk-KNDIXZN6.js.map → chunk-7UAMYXJY.js.map} +1 -1
  23. package/dist/{chunk-SEEVCT36.js → chunk-A4UJB2MM.js} +2 -2
  24. package/dist/{chunk-X4HIN6TV.js → chunk-AFLPWUQ7.js} +71 -162
  25. package/dist/chunk-AFLPWUQ7.js.map +1 -0
  26. package/dist/chunk-B3V6TG77.js +41 -0
  27. package/dist/chunk-B3V6TG77.js.map +1 -0
  28. package/dist/{chunk-XEJEOAOV.js → chunk-B7WMS3CS.js} +51 -40
  29. package/dist/chunk-B7WMS3CS.js.map +1 -0
  30. package/dist/{chunk-S5JQ4R22.js → chunk-BDKR6BAR.js} +54 -24
  31. package/dist/chunk-BDKR6BAR.js.map +1 -0
  32. package/dist/{chunk-4MDLEHXL.js → chunk-DYWBUX5Q.js} +24 -12
  33. package/dist/chunk-DYWBUX5Q.js.map +1 -0
  34. package/dist/{chunk-YZ3YYMOM.js → chunk-E3G7SAYZ.js} +252 -624
  35. package/dist/chunk-E3G7SAYZ.js.map +1 -0
  36. package/dist/chunk-JT4JW7BC.js +54 -0
  37. package/dist/chunk-JT4JW7BC.js.map +1 -0
  38. package/dist/{chunk-5AZSK6MV.js → chunk-LWNLETQT.js} +5 -5
  39. package/dist/{chunk-USXVQACU.js → chunk-M7LBYP63.js} +5 -4
  40. package/dist/{chunk-USXVQACU.js.map → chunk-M7LBYP63.js.map} +1 -1
  41. package/dist/{chunk-L4OSXQ6H.js → chunk-NBOHNRLJ.js} +1289 -1060
  42. package/dist/chunk-NBOHNRLJ.js.map +1 -0
  43. package/dist/chunk-RHREZ7BO.js +11 -0
  44. package/dist/chunk-RHREZ7BO.js.map +1 -0
  45. package/dist/chunk-SCOTPE2I.js +589 -0
  46. package/dist/chunk-SCOTPE2I.js.map +1 -0
  47. package/dist/chunk-WEHMPOXK.js +39 -0
  48. package/dist/chunk-WEHMPOXK.js.map +1 -0
  49. package/dist/chunk-WRHIZYZF.js +988 -0
  50. package/dist/chunk-WRHIZYZF.js.map +1 -0
  51. package/dist/{chunk-3E2AITTZ.js → chunk-WUISZ3WU.js} +32 -28
  52. package/dist/{chunk-3E2AITTZ.js.map → chunk-WUISZ3WU.js.map} +1 -1
  53. package/dist/chunk-XCHWDJ22.js +107 -0
  54. package/dist/chunk-XCHWDJ22.js.map +1 -0
  55. package/dist/{chunk-DUEBTL3N.js → chunk-Y2PRMYLC.js} +4 -3
  56. package/dist/{chunk-DUEBTL3N.js.map → chunk-Y2PRMYLC.js.map} +1 -1
  57. package/dist/chunk-YBXQDQFX.js +1772 -0
  58. package/dist/chunk-YBXQDQFX.js.map +1 -0
  59. package/dist/chunk-YV4L3ILF.js +9 -0
  60. package/dist/chunk-YV4L3ILF.js.map +1 -0
  61. package/dist/{chunk-V2ABIVYJ.js → chunk-ZXSEDZP7.js} +70 -6
  62. package/dist/chunk-ZXSEDZP7.js.map +1 -0
  63. package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
  64. package/dist/components/artifacts/artifact-sandbox.d.ts +27 -0
  65. package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
  66. package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
  67. package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
  68. package/dist/components/artifacts/editable-artifact-view.d.ts +46 -0
  69. package/dist/components/artifacts/index.d.ts +7 -0
  70. package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
  71. package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
  72. package/dist/components/artifacts/site-view.d.ts +23 -0
  73. package/dist/components/browser-select-control.d.ts +3 -1
  74. package/dist/components/code-editor.d.ts +1 -4
  75. package/dist/components/desktop-viewer.d.ts +1 -1
  76. package/dist/components/message-timeline.d.ts +20 -3
  77. package/dist/components/open-geni-links.d.ts +16 -0
  78. package/dist/components/session-conversation.d.ts +20 -1
  79. package/dist/components/timeline-pill-geometry.d.ts +8 -0
  80. package/dist/components/timeline-pill-placement.d.ts +24 -0
  81. package/dist/components/usage-limit-notice.d.ts +49 -0
  82. package/dist/components/usage-member-list.d.ts +91 -0
  83. package/dist/components/usage-meter.d.ts +73 -0
  84. package/dist/composer.js +5 -5
  85. package/dist/{computer-viewer-WMJE6OA3.js → computer-viewer-KJWLH3GI.js} +7 -5
  86. package/dist/connect.js +7 -6
  87. package/dist/connect.js.map +1 -1
  88. package/dist/conversation-timeline.d.ts +1 -1
  89. package/dist/desktop.d.ts +7 -0
  90. package/dist/desktop.js +26 -0
  91. package/dist/desktop.js.map +1 -0
  92. package/dist/editor.d.ts +7 -0
  93. package/dist/editor.js +21 -0
  94. package/dist/editor.js.map +1 -0
  95. package/dist/hooks/latest-question.d.ts +1 -1
  96. package/dist/hooks/use-composer.d.ts +4 -0
  97. package/dist/hooks/use-desktop-stream.d.ts +1 -1
  98. package/dist/hooks/use-usage.d.ts +40 -0
  99. package/dist/index.d.ts +7 -2
  100. package/dist/index.js +460 -1386
  101. package/dist/index.js.map +1 -1
  102. package/dist/interaction.js +8 -6
  103. package/dist/interaction.js.map +1 -1
  104. package/dist/{latest-question-QB4EUCW5.js → latest-question-IS445HOW.js} +3 -3
  105. package/dist/lib/format.d.ts +6 -1
  106. package/dist/lib/workbench-peers.d.ts +36 -0
  107. package/dist/machines.js +2 -2
  108. package/dist/{markdown-table-layout-PFUEZ2U4.js → markdown-table-layout-QXSLK4BY.js} +37 -5
  109. package/dist/markdown-table-layout-QXSLK4BY.js.map +1 -0
  110. package/dist/{queue-surface-implementation-IM2HD3SK.js → queue-surface-implementation-2CAQAIHM.js} +2 -2
  111. package/dist/realtime.js +3 -3
  112. package/dist/{sandbox-files-PXPIZAFG.js → sandbox-files-AEJTWGT4.js} +8 -5
  113. package/dist/sandbox-files-AEJTWGT4.js.map +1 -0
  114. package/dist/session-ui.d.ts +9 -2
  115. package/dist/session-ui.js +39 -20
  116. package/dist/session-ui.js.map +1 -1
  117. package/dist/session.js +4 -4
  118. package/dist/sites.js +4 -289
  119. package/dist/sites.js.map +1 -1
  120. package/dist/terminal.d.ts +8 -0
  121. package/dist/terminal.js +31 -0
  122. package/dist/terminal.js.map +1 -0
  123. package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
  124. package/dist/timeline/genie-loading.d.ts +3 -1
  125. package/dist/timeline/types.d.ts +8 -1
  126. package/dist/{timeline-annotation-selection-ODLVF4OI.js → timeline-annotation-selection-DMLMM2TX.js} +6 -1
  127. package/dist/timeline-annotation-selection-DMLMM2TX.js.map +1 -0
  128. package/dist/timeline-pill-geometry-Z23V243M.js +110 -0
  129. package/dist/timeline-pill-geometry-Z23V243M.js.map +1 -0
  130. package/dist/usage/allowance-copy.d.ts +25 -0
  131. package/dist/usage/summary.d.ts +35 -0
  132. package/dist/usage.d.ts +13 -0
  133. package/dist/usage.js +1073 -0
  134. package/dist/usage.js.map +1 -0
  135. package/package.json +19 -3
  136. package/src/artifacts.ts +37 -0
  137. package/src/components/artifacts/artifact-chrome.tsx +413 -0
  138. package/src/components/artifacts/artifact-sandbox.tsx +185 -0
  139. package/src/components/artifacts/chat-interactive-block.tsx +260 -0
  140. package/src/components/artifacts/deferred-chat-media.tsx +67 -0
  141. package/src/components/artifacts/editable-artifact-ui.tsx +3 -1
  142. package/src/components/artifacts/editable-artifact-view.tsx +187 -0
  143. package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
  144. package/src/components/artifacts/editable-document.tsx +34 -36
  145. package/src/components/artifacts/editable-presentation.tsx +21 -16
  146. package/src/components/artifacts/index.ts +41 -0
  147. package/src/components/artifacts/latest-task-runner.ts +49 -0
  148. package/src/components/artifacts/session-artifact-viewer.tsx +376 -0
  149. package/src/components/artifacts/site-view.tsx +116 -0
  150. package/src/components/browser-select-control.tsx +4 -1
  151. package/src/components/browser-viewer.tsx +81 -22
  152. package/src/components/code-editor.tsx +13 -16
  153. package/src/components/computer-viewer.tsx +51 -23
  154. package/src/components/desktop-viewer.tsx +1 -1
  155. package/src/components/markdown-table-layout.ts +49 -5
  156. package/src/components/markdown.tsx +5 -2
  157. package/src/components/message-timeline.tsx +557 -516
  158. package/src/components/open-geni-links.tsx +24 -0
  159. package/src/components/sandbox-terminal.tsx +48 -11
  160. package/src/components/session-chrome.tsx +22 -3
  161. package/src/components/session-conversation.tsx +195 -102
  162. package/src/components/timeline-annotation-selection.tsx +7 -0
  163. package/src/components/timeline-pill-geometry.ts +169 -0
  164. package/src/components/timeline-pill-placement.ts +99 -0
  165. package/src/components/usage-limit-notice.tsx +179 -0
  166. package/src/components/usage-member-list.tsx +792 -0
  167. package/src/components/usage-meter.tsx +382 -0
  168. package/src/conversation-timeline.ts +10 -2
  169. package/src/desktop.ts +24 -0
  170. package/src/editor.ts +13 -0
  171. package/src/hooks/use-available-models.ts +1 -1
  172. package/src/hooks/use-composer.ts +57 -2
  173. package/src/hooks/use-desktop-stream.ts +19 -28
  174. package/src/hooks/use-usage.ts +100 -0
  175. package/src/index.ts +22 -0
  176. package/src/lib/format.ts +32 -6
  177. package/src/lib/workbench-peers.ts +62 -0
  178. package/src/session-ui.ts +22 -0
  179. package/src/terminal.ts +26 -0
  180. package/src/timeline/activity-rail.tsx +5 -3
  181. package/src/timeline/allowance-exhausted-row.tsx +86 -0
  182. package/src/timeline/genie-loading.tsx +16 -6
  183. package/src/timeline/projection.ts +78 -4
  184. package/src/timeline/types.ts +8 -0
  185. package/src/usage/allowance-copy.ts +64 -0
  186. package/src/usage/summary.ts +93 -0
  187. package/src/usage.ts +50 -0
  188. package/styles/compiled.css +325 -0
  189. package/dist/chunk-4MDLEHXL.js.map +0 -1
  190. package/dist/chunk-5YK2ZDIG.js.map +0 -1
  191. package/dist/chunk-KVERXCFY.js.map +0 -1
  192. package/dist/chunk-L4OSXQ6H.js.map +0 -1
  193. package/dist/chunk-S5JQ4R22.js.map +0 -1
  194. package/dist/chunk-UDD6DLLT.js.map +0 -1
  195. package/dist/chunk-UGMKPUEM.js +0 -299
  196. package/dist/chunk-UGMKPUEM.js.map +0 -1
  197. package/dist/chunk-V2ABIVYJ.js.map +0 -1
  198. package/dist/chunk-X4HIN6TV.js.map +0 -1
  199. package/dist/chunk-XEJEOAOV.js.map +0 -1
  200. package/dist/chunk-YZ3YYMOM.js.map +0 -1
  201. package/dist/markdown-table-layout-PFUEZ2U4.js.map +0 -1
  202. package/dist/timeline-annotation-selection-ODLVF4OI.js.map +0 -1
  203. /package/dist/{browser-viewer-2E6R2Y4W.js.map → browser-viewer-Z7S7QEJL.js.map} +0 -0
  204. /package/dist/{computer-viewer-WMJE6OA3.js.map → chat-interactive-block-UGBTNB3L.js.map} +0 -0
  205. /package/dist/{chunk-Y3QTZN2F.js.map → chunk-2VFNCX4E.js.map} +0 -0
  206. /package/dist/{chunk-SEEVCT36.js.map → chunk-A4UJB2MM.js.map} +0 -0
  207. /package/dist/{chunk-5AZSK6MV.js.map → chunk-LWNLETQT.js.map} +0 -0
  208. /package/dist/{sandbox-files-PXPIZAFG.js.map → computer-viewer-KJWLH3GI.js.map} +0 -0
  209. /package/dist/{latest-question-QB4EUCW5.js.map → latest-question-IS445HOW.js.map} +0 -0
  210. /package/dist/{queue-surface-implementation-IM2HD3SK.js.map → queue-surface-implementation-2CAQAIHM.js.map} +0 -0
@@ -2,4 +2,4 @@ import type { ComposerState } from "./hooks/use-composer.js";
2
2
  import type { UseTurnQueueResult } from "./hooks/use-turn-queue.js";
3
3
  import type { TimelineItem } from "./timeline/types.js";
4
4
  /** Keep pending prompts in the queue, not duplicated in the conversation. */
5
- export declare function conversationTimeline(items: TimelineItem[], queue: Pick<UseTurnQueueResult, "queue" | "snapshot" | "acceptedSteers">, composer: Pick<ComposerState, "optimisticMessages" | "retryOptimisticMessage" | "removeOptimisticMessage">): TimelineItem[];
5
+ export declare function conversationTimeline(items: TimelineItem[], queue: Pick<UseTurnQueueResult, "queue" | "snapshot" | "acceptedSteers">, composer: Pick<ComposerState, "optimisticMessages" | "retryOptimisticMessage" | "restoreOptimisticMessage" | "removeOptimisticMessage">): TimelineItem[];
@@ -0,0 +1,7 @@
1
+ export { DesktopViewer } from "./components/desktop-viewer.js";
2
+ export type { DesktopViewerProps } from "./components/desktop-viewer.js";
3
+ export { useDesktopStream } from "./hooks/use-desktop-stream.js";
4
+ export type { UseDesktopStreamOptions, UseDesktopStreamResult } from "./hooks/use-desktop-stream.js";
5
+ export { registerDesktopViewer } from "./lib/workbench-peers.js";
6
+ /** Opt in once on a VNC route; relay-frame viewers need no noVNC peer. */
7
+ export declare function enableDesktopViewer(): void;
@@ -0,0 +1,26 @@
1
+ import {
2
+ DesktopViewer,
3
+ useDesktopStream
4
+ } from "./chunk-DYWBUX5Q.js";
5
+ import "./chunk-RHREZ7BO.js";
6
+ import "./chunk-5J4FOW6Q.js";
7
+ import {
8
+ registerDesktopViewer
9
+ } from "./chunk-JT4JW7BC.js";
10
+ import "./chunk-22KP6LR5.js";
11
+
12
+ // src/desktop.ts
13
+ async function loadDesktop() {
14
+ const mod = await import("@novnc/novnc");
15
+ return (target, url, options) => new mod.default(target, url, options);
16
+ }
17
+ function enableDesktopViewer() {
18
+ registerDesktopViewer(loadDesktop);
19
+ }
20
+ export {
21
+ DesktopViewer,
22
+ enableDesktopViewer,
23
+ registerDesktopViewer,
24
+ useDesktopStream
25
+ };
26
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/desktop.ts"],"sourcesContent":["import type { DesktopRfbFactory, DesktopRfbLike } from \"@opengeni/sdk\";\nimport { registerDesktopViewer } from \"./lib/workbench-peers\";\n\nexport { DesktopViewer } from \"./components/desktop-viewer\";\nexport type { DesktopViewerProps } from \"./components/desktop-viewer\";\nexport { useDesktopStream } from \"./hooks/use-desktop-stream\";\nexport type { UseDesktopStreamOptions, UseDesktopStreamResult } from \"./hooks/use-desktop-stream\";\nexport { registerDesktopViewer } from \"./lib/workbench-peers\";\n\nasync function loadDesktop(): Promise<DesktopRfbFactory> {\n const mod = (await import(\"@novnc/novnc\")) as unknown as {\n default: new (\n target: HTMLElement,\n url: string,\n options: Parameters<DesktopRfbFactory>[2],\n ) => DesktopRfbLike;\n };\n return (target, url, options) => new mod.default(target, url, options);\n}\n\n/** Opt in once on a VNC route; relay-frame viewers need no noVNC peer. */\nexport function enableDesktopViewer(): void {\n registerDesktopViewer(loadDesktop);\n}\n"],"mappings":";;;;;;;;;;;;AASA,eAAe,cAA0C;AACvD,QAAM,MAAO,MAAM,OAAO,cAAc;AAOxC,SAAO,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,QAAQ,QAAQ,KAAK,OAAO;AACvE;AAGO,SAAS,sBAA4B;AAC1C,wBAAsB,WAAW;AACnC;","names":[]}
@@ -0,0 +1,7 @@
1
+ import { type CodeEditorLanguages } from "./lib/workbench-peers.js";
2
+ export { CodeEditor, languageForPath } from "./components/code-editor.js";
3
+ export type { CodeEditorProps } from "./components/code-editor.js";
4
+ export { registerCodeEditor } from "./lib/workbench-peers.js";
5
+ export type { CodeEditorLanguage, CodeEditorLanguages } from "./lib/workbench-peers.js";
6
+ /** Only name installed grammar peers in host-supplied language loaders. */
7
+ export declare function enableCodeEditor(languages?: CodeEditorLanguages): void;
package/dist/editor.js ADDED
@@ -0,0 +1,21 @@
1
+ import {
2
+ CodeEditor,
3
+ languageForPath
4
+ } from "./chunk-4RVYOY4O.js";
5
+ import {
6
+ registerCodeEditor
7
+ } from "./chunk-JT4JW7BC.js";
8
+ import "./chunk-22KP6LR5.js";
9
+
10
+ // src/editor.ts
11
+ var loadEditor = async () => ({ module: await import("@uiw/react-codemirror") });
12
+ function enableCodeEditor(languages) {
13
+ registerCodeEditor(languages ? async () => ({ ...await loadEditor(), languages }) : loadEditor);
14
+ }
15
+ export {
16
+ CodeEditor,
17
+ enableCodeEditor,
18
+ languageForPath,
19
+ registerCodeEditor
20
+ };
21
+ //# sourceMappingURL=editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/editor.ts"],"sourcesContent":["import { registerCodeEditor, type CodeEditorLanguages } from \"./lib/workbench-peers\";\n\nexport { CodeEditor, languageForPath } from \"./components/code-editor\";\nexport type { CodeEditorProps } from \"./components/code-editor\";\nexport { registerCodeEditor } from \"./lib/workbench-peers\";\nexport type { CodeEditorLanguage, CodeEditorLanguages } from \"./lib/workbench-peers\";\n\nconst loadEditor = async () => ({ module: await import(\"@uiw/react-codemirror\") });\n\n/** Only name installed grammar peers in host-supplied language loaders. */\nexport function enableCodeEditor(languages?: CodeEditorLanguages): void {\n registerCodeEditor(languages ? async () => ({ ...(await loadEditor()), languages }) : loadEditor);\n}\n"],"mappings":";;;;;;;;;;AAOA,IAAM,aAAa,aAAa,EAAE,QAAQ,MAAM,OAAO,uBAAuB,EAAE;AAGzE,SAAS,iBAAiB,WAAuC;AACtE,qBAAmB,YAAY,aAAa,EAAE,GAAI,MAAM,WAAW,GAAI,UAAU,KAAK,UAAU;AAClG;","names":[]}
@@ -8,7 +8,7 @@ export type LatestQuestionOptions = {
8
8
  };
9
9
  /** Include every canonical execution fallback, not just turn.started. Derive
10
10
  * this optional navigation index only when the user requests Latest question. */
11
- export declare const TIMELINE_TURN_ANCHOR_EVENT_TYPES: ("agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.selection.changed" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "instruction.confirmation.recovered" | "knowledge.confirmation.recovered" | "knowledge.source.failed" | "knowledge.source.prepared" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.model_settings.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded")[];
11
+ export declare const TIMELINE_TURN_ANCHOR_EVENT_TYPES: ("agent.message.completed" | "agent.message.delta" | "agent.model.request" | "agent.model.usage" | "agent.reasoning.delta" | "agent.toolCall.created" | "agent.toolCall.output" | "agent.updated" | "artifact.created" | "codex.account.selection.changed" | "codex.account.switched" | "codex.capacity.resumed" | "codex.capacity.superseded" | "codex.capacity.waiting" | "codex.credential.selected" | "codex.fleet.decision" | "credential.auth_needed" | "fs.changed" | "git.changed" | "goal.cleared" | "goal.completed" | "goal.continuation" | "goal.held" | "goal.paused" | "goal.progress" | "goal.resumed" | "goal.rewrite.proposed" | "goal.rewrite.rejected" | "goal.set" | "goal.updated" | "instruction.confirmation.recovered" | "knowledge.confirmation.recovered" | "knowledge.source.failed" | "knowledge.source.prepared" | "machine.link.lost" | "machine.link.restored" | "machine.op.failed" | "machine.op.recovered" | "machine.runner.restarted" | "memory.corrected" | "memory.saved" | "recording.available" | "recording.failed" | "recording.started" | "rig.setup.completed" | "rig.setup.failed" | "rig.setup.skipped" | "rig.setup.started" | "sandbox.box.created" | "sandbox.box.lost" | "sandbox.box.snapshot" | "sandbox.box.terminated" | "sandbox.command.output.delta" | "sandbox.env.drift" | "sandbox.operation.completed" | "sandbox.operation.failed" | "sandbox.operation.started" | "session.agent.updated" | "session.command.backgrounded" | "session.command.finished" | "session.context.cleared" | "session.context.compacted" | "session.context.compaction.requested" | "session.context.compaction.skipped" | "session.context.compaction.started" | "session.control.paused" | "session.control.resumed" | "session.control.steer_requested" | "session.created" | "session.event.envelope_omitted" | "session.humanInput.requested" | "session.mcp.approval_policy.updated" | "session.model_settings.updated" | "session.personal_resources.attached" | "session.queue.changed" | "session.queue.history" | "session.queue.prompt.cancelled" | "session.realtime.ended" | "session.realtime.started" | "session.requiresAction" | "session.route.reconciled" | "session.runtime.configured" | "session.status.changed" | "session.title_set" | "session.tool_policy.updated" | "session.variable_sets.updated" | "session.visibility.changed" | "session.wait.finished" | "session.wait.started" | "stream.closed" | "stream.opened" | "stream.revoked" | "stream.url.rotated" | "system.update.cancelled" | "system.update.delivered" | "system.update.pending" | "system.update.settled" | "system.update.superseded" | "terminal.pty.exited" | "terminal.pty.output.delta" | "terminal.pty.started" | "tool.auth_needed" | "turn.cancelled" | "turn.capacity_waiting" | "turn.completed" | "turn.event.rejected_late" | "turn.failed" | "turn.queued" | "turn.recovery.requested" | "turn.started" | "turn.startup.phase.completed" | "turn.startup.phase.failed" | "turn.startup.phase.started" | "turn.superseded" | "usage.exhausted" | "usage.period_reset" | "usage.threshold_reached" | "user.approvalDecision" | "user.humanInputResponse" | "user.message" | "user.pause" | "workspace.inference.paused" | "workspace.inference.resumed" | "workspace.revision.captured" | "workspace.revision.degraded")[];
12
12
  /** Resolve an optional navigation destination without owning the hook's window
13
13
  * or React state. The caller guards errors and applies only a current result. */
14
14
  export declare function resolveLatestQuestion({ client, workspaceId, sessionId, isCurrent, resumeSequence, options, }: {
@@ -47,6 +47,8 @@ export type ComposerOptimisticMessage = {
47
47
  triggerEventId?: string | null | undefined;
48
48
  appliedQueueVersion?: number | null | undefined;
49
49
  error?: string | undefined;
50
+ /** False for a definitive refusal that requires changing payment or allowance settings. */
51
+ retryable?: boolean | undefined;
50
52
  outcomeUnknown?: boolean | undefined;
51
53
  };
52
54
  export type ComposerState = {
@@ -68,6 +70,8 @@ export type ComposerState = {
68
70
  /** Locally acknowledged ordinary sends awaiting durable timeline reconciliation. */
69
71
  optimisticMessages?: ComposerOptimisticMessage[] | undefined;
70
72
  retryOptimisticMessage?: ((clientEventId: string) => void) | undefined;
73
+ /** Move a definitively refused message into an empty composer without resending it. */
74
+ restoreOptimisticMessage?: ((clientEventId: string) => void) | undefined;
71
75
  removeOptimisticMessage?: ((clientEventId: string) => void) | undefined;
72
76
  /** Supersede current direction with the draft. */
73
77
  steer: (text?: string) => Promise<boolean>;
@@ -9,7 +9,7 @@ export type UseDesktopStreamOptions = {
9
9
  /** Read-only by default (v1 ruling H). interactive only when cap.mode allows. */
10
10
  interactive?: boolean | undefined;
11
11
  scaleViewport?: boolean | undefined;
12
- /** Custom RFB factory (tests / a WebRTC swap). Defaults to a lazy @novnc/novnc. */
12
+ /** Custom RFB factory. Otherwise call enableDesktopViewer() on the desktop subpath. */
13
13
  rfbFactory?: DesktopRfbFactory | undefined;
14
14
  /** Additional WebSocket protocols for an authenticated placement proxy. */
15
15
  webSocketProtocols?: string[] | undefined;
@@ -0,0 +1,40 @@
1
+ import type { OpenGeniClient } from "@opengeni/sdk";
2
+ import { type UsageAllowancePeriod, type WorkspaceUsageResponse } from "@opengeni/sdk/usage-allowances";
3
+ import { type UsageSummary } from "../usage/summary.js";
4
+ /**
5
+ * Anything that can read the signed-in member's own usage: the root SDK client
6
+ * pointed at your session proxy (`getMyUsage`), or any client exposing
7
+ * `requestJson` (for example the narrower browser client).
8
+ */
9
+ export type UsageClientLike = Pick<OpenGeniClient, "getMyUsage"> | Pick<OpenGeniClient, "requestJson">;
10
+ export type UseUsageOptions = {
11
+ /** Defaults to the `<OpenGeniProvider>` client. */
12
+ client?: UsageClientLike | undefined;
13
+ /** Defaults to the `<OpenGeniProvider>` workspace. */
14
+ workspaceId?: string | undefined;
15
+ /** `"current"` (default) or a `YYYY-MM` allowance period. */
16
+ period?: UsageAllowancePeriod | undefined;
17
+ /** Re-read on an interval. Off by default; usage changes only when work settles. */
18
+ pollIntervalMs?: number | undefined;
19
+ enabled?: boolean | undefined;
20
+ /**
21
+ * Re-read whenever this value changes, keeping the current reading while it
22
+ * loads. Pass something that changes when work settles (a turn count, the
23
+ * session status) so the meter follows real usage without polling.
24
+ */
25
+ refreshKey?: unknown;
26
+ };
27
+ export type UseUsageResult = {
28
+ /** The raw `/usage/me` response: the workspace pool and your own row. */
29
+ usage: WorkspaceUsageResponse | null;
30
+ /** What to tell this member; null until loaded. */
31
+ summary: UsageSummary | null;
32
+ loading: boolean;
33
+ error: Error | null;
34
+ refresh: () => Promise<void>;
35
+ };
36
+ /**
37
+ * The signed-in member's own usage in one workspace, read through `/usage/me`
38
+ * (the session proxy serves exactly this route). Never reads another member.
39
+ */
40
+ export declare function useUsage(options?: UseUsageOptions): UseUsageResult;
package/dist/index.d.ts CHANGED
@@ -139,14 +139,17 @@ export { MessageTimeline, TimelineRow } from "./components/message-timeline.js";
139
139
  export { GeneratedVideoPlayer } from "./components/generated-video-player.js";
140
140
  export type { GeneratedVideoPlayerProps } from "./components/generated-video-player.js";
141
141
  export type { MessageTimelineProps } from "./components/message-timeline.js";
142
+ export type { RenderAllowanceExhausted } from "./timeline/allowance-exhausted-row.js";
143
+ export type { AllowanceLabels, AllowanceScope } from "./usage/allowance-copy.js";
142
144
  export type { TimelineSearchTarget } from "./components/timeline-search.js";
143
145
  export { UserMessageBody, userMessageLikelyNeedsDisclosure } from "./components/user-message-body.js";
144
146
  export type { UserMessageBodyProps, UserMessageDisclosureLabels, } from "./components/user-message-body.js";
145
147
  export { Markdown, sandboxFileLocationFromHref, sandboxFilePathFromHref, } from "./components/markdown.js";
146
148
  export type { MarkdownProps, MarkdownInteractiveBlock, SandboxFileLocation, } from "./components/markdown.js";
147
- export { OpenGeniLinkProvider, chainLinkResolvers, sessionLinkResolver, useOpenGeniLinkResolver, } from "./components/open-geni-links.js";
148
- export type { OpenGeniLinkResolution, OpenGeniLinkResolver, OpenGeniLinkTarget, } from "./components/open-geni-links.js";
149
+ export { OpenGeniLinkProvider, chainLinkResolvers, sessionLinkResolver, useOpenGeniLinkResolver, viewerLinkResolver, } from "./components/open-geni-links.js";
150
+ export type { OpenGeniLinkResolution, OpenGeniLinkResolver, OpenGeniLinkTarget, OpenGeniViewerTarget, } from "./components/open-geni-links.js";
149
151
  export { parseOpenGeniLink } from "@opengeni/sdk";
152
+ export { ArtifactLabelsProvider, DEFAULT_ARTIFACT_LABELS, type ArtifactLabels, } from "./components/artifacts/artifact-chrome.js";
150
153
  export { CopyButton, CopyHoverFrame } from "./components/copy-button.js";
151
154
  export { copyTextToClipboard, tableElementToTsv } from "./lib/clipboard.js";
152
155
  export { SessionStatus, StatusDot, SESSION_STATUS_META } from "./components/session-status.js";
@@ -163,6 +166,8 @@ export { DiffView } from "./components/diff-view.js";
163
166
  export type { DiffViewProps, DiffTheme } from "./components/diff-view.js";
164
167
  export { PierreDiff } from "./components/pierre-diff.js";
165
168
  export { registerPierreDiffs, type PierreDiffsLoader } from "./lib/pierre-diffs-loader.js";
169
+ export { registerSandboxTerminal, registerCodeEditor, registerDesktopViewer, } from "./lib/workbench-peers.js";
170
+ export type { WorkbenchPeerLoader, SandboxTerminalPeers, CodeEditorPeers, CodeEditorLanguage, CodeEditorLanguages, } from "./lib/workbench-peers.js";
166
171
  export type { PierreDiffProps } from "./components/pierre-diff.js";
167
172
  export { PierreFile } from "./components/pierre-file.js";
168
173
  export type { PierreFileProps } from "./components/pierre-file.js";