@athenaintel/react 0.28.1 → 0.32.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 (817) hide show
  1. package/README.md +479 -10
  2. package/dist/agent-runtime/src/asset-attachment.cjs.map +1 -0
  3. package/dist/agent-runtime/src/asset-attachment.js.map +1 -0
  4. package/dist/agent-runtime/src/athena-asset-drag.cjs +44 -0
  5. package/dist/agent-runtime/src/athena-asset-drag.cjs.map +1 -0
  6. package/dist/agent-runtime/src/athena-asset-drag.js +44 -0
  7. package/dist/agent-runtime/src/athena-asset-drag.js.map +1 -0
  8. package/dist/agent-runtime/src/auth-denial.cjs.map +1 -0
  9. package/dist/agent-runtime/src/auth-denial.js.map +1 -0
  10. package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
  11. package/dist/agent-runtime/src/client-tool-bridge.js.map +1 -0
  12. package/dist/agent-runtime/src/client-tools.cjs.map +1 -0
  13. package/dist/agent-runtime/src/client-tools.js.map +1 -0
  14. package/dist/agent-runtime/src/composer-markdown.cjs +124 -0
  15. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -0
  16. package/dist/agent-runtime/src/composer-markdown.js +124 -0
  17. package/dist/agent-runtime/src/composer-markdown.js.map +1 -0
  18. package/dist/agent-runtime/src/config-mutations.cjs +59 -0
  19. package/dist/agent-runtime/src/config-mutations.cjs.map +1 -0
  20. package/dist/agent-runtime/src/config-mutations.js +59 -0
  21. package/dist/agent-runtime/src/config-mutations.js.map +1 -0
  22. package/dist/agent-runtime/src/conversation-index.cjs.map +1 -0
  23. package/dist/agent-runtime/src/conversation-index.js.map +1 -0
  24. package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.cjs +36 -0
  25. package/dist/agent-runtime/src/conversation-list.cjs.map +1 -0
  26. package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-list.js +36 -0
  27. package/dist/agent-runtime/src/conversation-list.js.map +1 -0
  28. package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.cjs +5 -3
  29. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
  30. package/dist/{packages/agent-runtime → agent-runtime}/src/deep-agent-transport-recipe.js +6 -4
  31. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
  32. package/dist/agent-runtime/src/edit-command.cjs.map +1 -0
  33. package/dist/agent-runtime/src/edit-command.js.map +1 -0
  34. package/dist/{packages/agent-runtime → agent-runtime}/src/errors.cjs +23 -0
  35. package/dist/agent-runtime/src/errors.cjs.map +1 -0
  36. package/dist/{packages/agent-runtime → agent-runtime}/src/errors.js +23 -0
  37. package/dist/agent-runtime/src/errors.js.map +1 -0
  38. package/dist/agent-runtime/src/execute-output.cjs +41 -0
  39. package/dist/agent-runtime/src/execute-output.cjs.map +1 -0
  40. package/dist/agent-runtime/src/execute-output.js +41 -0
  41. package/dist/agent-runtime/src/execute-output.js.map +1 -0
  42. package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.cjs +16 -2
  43. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
  44. package/dist/{packages/agent-runtime → agent-runtime}/src/generated/runconfig-contract.js +16 -2
  45. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
  46. package/dist/agent-runtime/src/github-wake-event.cjs.map +1 -0
  47. package/dist/agent-runtime/src/github-wake-event.js.map +1 -0
  48. package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.cjs +24 -1
  49. package/dist/agent-runtime/src/interrupts.cjs.map +1 -0
  50. package/dist/{packages/agent-runtime → agent-runtime}/src/interrupts.js +24 -1
  51. package/dist/agent-runtime/src/interrupts.js.map +1 -0
  52. package/dist/agent-runtime/src/message-author.cjs.map +1 -0
  53. package/dist/agent-runtime/src/message-author.js.map +1 -0
  54. package/dist/agent-runtime/src/message-window.cjs.map +1 -0
  55. package/dist/agent-runtime/src/message-window.js.map +1 -0
  56. package/dist/{packages/agent-runtime → agent-runtime}/src/messages.cjs +8 -4
  57. package/dist/agent-runtime/src/messages.cjs.map +1 -0
  58. package/dist/{packages/agent-runtime → agent-runtime}/src/messages.js +6 -2
  59. package/dist/agent-runtime/src/messages.js.map +1 -0
  60. package/dist/agent-runtime/src/model-context.cjs.map +1 -0
  61. package/dist/agent-runtime/src/model-context.js.map +1 -0
  62. package/dist/agent-runtime/src/optimistic-content.cjs.map +1 -0
  63. package/dist/agent-runtime/src/optimistic-content.js.map +1 -0
  64. package/dist/agent-runtime/src/protocol.cjs.map +1 -0
  65. package/dist/agent-runtime/src/protocol.js.map +1 -0
  66. package/dist/{packages/agent-runtime → agent-runtime}/src/queue.cjs +23 -2
  67. package/dist/agent-runtime/src/queue.cjs.map +1 -0
  68. package/dist/{packages/agent-runtime → agent-runtime}/src/queue.js +23 -2
  69. package/dist/agent-runtime/src/queue.js.map +1 -0
  70. package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.cjs +71 -13
  71. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
  72. package/dist/{packages/agent-runtime → agent-runtime}/src/quota-safe-local-storage-session.js +73 -15
  73. package/dist/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
  74. package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -0
  75. package/dist/agent-runtime/src/runtime-messages.js.map +1 -0
  76. package/dist/agent-runtime/src/screen-point.cjs.map +1 -0
  77. package/dist/agent-runtime/src/screen-point.js.map +1 -0
  78. package/dist/agent-runtime/src/send-recovery.cjs.map +1 -0
  79. package/dist/agent-runtime/src/send-recovery.js.map +1 -0
  80. package/dist/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
  81. package/dist/agent-runtime/src/statewire-attach-observer.js.map +1 -0
  82. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.cjs +8 -0
  83. package/dist/agent-runtime/src/statewire-state.cjs.map +1 -0
  84. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-state.js +8 -0
  85. package/dist/agent-runtime/src/statewire-state.js.map +1 -0
  86. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.cjs +4 -0
  87. package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -0
  88. package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-suspended.js +4 -0
  89. package/dist/agent-runtime/src/statewire-suspended.js.map +1 -0
  90. package/dist/agent-runtime/src/statewire-transport.cjs +43 -0
  91. package/dist/agent-runtime/src/statewire-transport.cjs.map +1 -0
  92. package/dist/agent-runtime/src/statewire-transport.js +43 -0
  93. package/dist/agent-runtime/src/statewire-transport.js.map +1 -0
  94. package/dist/agent-runtime/src/streaming-markdown.cjs.map +1 -0
  95. package/dist/agent-runtime/src/streaming-markdown.js.map +1 -0
  96. package/dist/agent-runtime/src/subscription-wake-event.cjs +252 -0
  97. package/dist/agent-runtime/src/subscription-wake-event.cjs.map +1 -0
  98. package/dist/agent-runtime/src/subscription-wake-event.js +252 -0
  99. package/dist/agent-runtime/src/subscription-wake-event.js.map +1 -0
  100. package/dist/agent-runtime/src/thread-extras.cjs.map +1 -0
  101. package/dist/agent-runtime/src/thread-extras.js.map +1 -0
  102. package/dist/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
  103. package/dist/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
  104. package/dist/agent-runtime/src/thread-status.cjs.map +1 -0
  105. package/dist/agent-runtime/src/thread-status.js.map +1 -0
  106. package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.cjs +304 -9
  107. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -0
  108. package/dist/{packages/agent-runtime → agent-runtime}/src/tool-metadata.js +304 -9
  109. package/dist/agent-runtime/src/tool-metadata.js.map +1 -0
  110. package/dist/agent-runtime/src/tool-names.cjs +5 -0
  111. package/dist/agent-runtime/src/tool-names.cjs.map +1 -0
  112. package/dist/agent-runtime/src/tool-names.js +5 -0
  113. package/dist/agent-runtime/src/tool-names.js.map +1 -0
  114. package/dist/agent-runtime/src/tool-outputs.cjs.map +1 -0
  115. package/dist/agent-runtime/src/tool-outputs.js.map +1 -0
  116. package/dist/agent-runtime/src/tool-result.cjs.map +1 -0
  117. package/dist/agent-runtime/src/tool-result.js.map +1 -0
  118. package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.cjs +33 -22
  119. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -0
  120. package/dist/{packages/agent-runtime → agent-runtime}/src/use-conversation-list.js +34 -23
  121. package/dist/agent-runtime/src/use-conversation-list.js.map +1 -0
  122. package/dist/agent-runtime/src/use-deep-agent-config.cjs +129 -0
  123. package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
  124. package/dist/agent-runtime/src/use-deep-agent-config.js +129 -0
  125. package/dist/agent-runtime/src/use-deep-agent-config.js.map +1 -0
  126. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.cjs +2 -0
  127. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
  128. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-edit-submit.js +2 -0
  129. package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
  130. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
  131. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
  132. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.cjs +1 -0
  133. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
  134. package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-thread.js +2 -1
  135. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
  136. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
  137. package/dist/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
  138. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +52 -0
  139. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -0
  140. package/dist/agent-runtime/src/use-historical-edit-attachments.js +52 -0
  141. package/dist/agent-runtime/src/use-historical-edit-attachments.js.map +1 -0
  142. package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.cjs +14 -0
  143. package/dist/agent-runtime/src/voice-presentation.cjs.map +1 -0
  144. package/dist/{packages/agent-runtime → agent-runtime}/src/voice-presentation.js +14 -0
  145. package/dist/agent-runtime/src/voice-presentation.js.map +1 -0
  146. package/dist/agent-runtime/src/voice-turn-grouping.cjs.map +1 -0
  147. package/dist/agent-runtime/src/voice-turn-grouping.js.map +1 -0
  148. package/dist/assets/AthenaAssetEmbed.cjs +13 -2
  149. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  150. package/dist/assets/AthenaAssetEmbed.d.ts +10 -0
  151. package/dist/assets/AthenaAssetEmbed.js +14 -3
  152. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  153. package/dist/assets/AthenaLayout.cjs +97 -31
  154. package/dist/assets/AthenaLayout.cjs.map +1 -1
  155. package/dist/assets/AthenaLayout.d.ts +13 -0
  156. package/dist/assets/AthenaLayout.js +98 -32
  157. package/dist/assets/AthenaLayout.js.map +1 -1
  158. package/dist/assets/asset-embed-messages.cjs +6 -0
  159. package/dist/assets/asset-embed-messages.cjs.map +1 -1
  160. package/dist/assets/asset-embed-messages.d.ts +13 -0
  161. package/dist/assets/asset-embed-messages.js +6 -0
  162. package/dist/assets/asset-embed-messages.js.map +1 -1
  163. package/dist/assets/asset-panel-store.cjs +68 -32
  164. package/dist/assets/asset-panel-store.cjs.map +1 -1
  165. package/dist/assets/asset-panel-store.d.ts +47 -1
  166. package/dist/assets/asset-panel-store.js +68 -32
  167. package/dist/assets/asset-panel-store.js.map +1 -1
  168. package/dist/assets/use-asset-embed.cjs +29 -8
  169. package/dist/assets/use-asset-embed.cjs.map +1 -1
  170. package/dist/assets/use-asset-embed.d.ts +7 -0
  171. package/dist/assets/use-asset-embed.js +29 -8
  172. package/dist/assets/use-asset-embed.js.map +1 -1
  173. package/dist/catalog/chat-pickers.cjs +152 -0
  174. package/dist/catalog/chat-pickers.cjs.map +1 -0
  175. package/dist/catalog/chat-pickers.d.ts +22 -0
  176. package/dist/catalog/chat-pickers.js +152 -0
  177. package/dist/catalog/chat-pickers.js.map +1 -0
  178. package/dist/catalog/runtime-catalog.cjs +181 -0
  179. package/dist/catalog/runtime-catalog.cjs.map +1 -0
  180. package/dist/catalog/runtime-catalog.d.ts +100 -0
  181. package/dist/catalog/runtime-catalog.js +181 -0
  182. package/dist/catalog/runtime-catalog.js.map +1 -0
  183. package/dist/chat/AthenaChat.cjs +122 -67
  184. package/dist/chat/AthenaChat.cjs.map +1 -1
  185. package/dist/chat/AthenaChat.d.ts +21 -4
  186. package/dist/chat/AthenaChat.js +124 -69
  187. package/dist/chat/AthenaChat.js.map +1 -1
  188. package/dist/chat/StatewireApprovalCard.cjs +38 -37
  189. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  190. package/dist/chat/StatewireApprovalCard.d.ts +2 -0
  191. package/dist/chat/StatewireApprovalCard.js +39 -38
  192. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  193. package/dist/chat/StatewireClientToolBridge.cjs +2 -2
  194. package/dist/chat/StatewireClientToolBridge.js +2 -2
  195. package/dist/chat/StatewireQueuedMessages.cjs +15 -12
  196. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  197. package/dist/chat/StatewireQueuedMessages.d.ts +22 -2
  198. package/dist/chat/StatewireQueuedMessages.js +15 -12
  199. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  200. package/dist/chat/StatewireRunRefusalNotice.cjs +48 -0
  201. package/dist/chat/StatewireRunRefusalNotice.cjs.map +1 -0
  202. package/dist/chat/StatewireRunRefusalNotice.d.ts +25 -0
  203. package/dist/chat/StatewireRunRefusalNotice.js +48 -0
  204. package/dist/chat/StatewireRunRefusalNotice.js.map +1 -0
  205. package/dist/chat/WaitingOnYouBanner.cjs +2 -2
  206. package/dist/chat/WaitingOnYouBanner.js +2 -2
  207. package/dist/chat/athena-citation-links.cjs +19 -15
  208. package/dist/chat/athena-citation-links.cjs.map +1 -1
  209. package/dist/chat/athena-citation-links.js +19 -15
  210. package/dist/chat/athena-citation-links.js.map +1 -1
  211. package/dist/chat/run-activity.cjs +9 -1
  212. package/dist/chat/run-activity.cjs.map +1 -1
  213. package/dist/chat/run-activity.d.ts +6 -0
  214. package/dist/chat/run-activity.js +10 -2
  215. package/dist/chat/run-activity.js.map +1 -1
  216. package/dist/chat/statewire-banners.cjs +30 -1
  217. package/dist/chat/statewire-banners.cjs.map +1 -1
  218. package/dist/chat/statewire-banners.d.ts +20 -1
  219. package/dist/chat/statewire-banners.js +32 -3
  220. package/dist/chat/statewire-banners.js.map +1 -1
  221. package/dist/chat/statewire-client-tools.cjs +1 -1
  222. package/dist/chat/statewire-client-tools.js +1 -1
  223. package/dist/chat/super-grouping/CollapsibleGroup.cjs +1 -1
  224. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
  225. package/dist/chat/super-grouping/CollapsibleGroup.js +1 -1
  226. package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -1
  227. package/dist/chat/super-grouping/SuperGroupingCard.cjs +38 -16
  228. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
  229. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +21 -4
  230. package/dist/chat/super-grouping/SuperGroupingCard.js +39 -17
  231. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
  232. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +377 -0
  233. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -0
  234. package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +31 -0
  235. package/dist/chat/super-grouping/SuperGroupingTranscript.js +377 -0
  236. package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -0
  237. package/dist/chat/super-grouping/ToolTimeline.cjs +13 -2
  238. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  239. package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -3
  240. package/dist/chat/super-grouping/ToolTimeline.js +13 -2
  241. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  242. package/dist/chat/super-grouping/activity-timeline.cjs +69 -29
  243. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
  244. package/dist/chat/super-grouping/activity-timeline.d.ts +60 -9
  245. package/dist/chat/super-grouping/activity-timeline.js +70 -30
  246. package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
  247. package/dist/chat/super-grouping/index.cjs +14 -0
  248. package/dist/chat/super-grouping/index.cjs.map +1 -1
  249. package/dist/chat/super-grouping/index.d.ts +7 -2
  250. package/dist/chat/super-grouping/index.js +16 -2
  251. package/dist/chat/super-grouping/index.js.map +1 -1
  252. package/dist/chat/super-grouping/timeline-step.cjs +14 -5
  253. package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
  254. package/dist/chat/super-grouping/timeline-step.d.ts +10 -1
  255. package/dist/chat/super-grouping/timeline-step.js +15 -6
  256. package/dist/chat/super-grouping/timeline-step.js.map +1 -1
  257. package/dist/chat/super-grouping/toolkit-map.cjs +1 -0
  258. package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -1
  259. package/dist/chat/super-grouping/toolkit-map.js +1 -0
  260. package/dist/chat/super-grouping/toolkit-map.js.map +1 -1
  261. package/dist/chat/super-grouping/turn-segments.cjs +82 -0
  262. package/dist/chat/super-grouping/turn-segments.cjs.map +1 -0
  263. package/dist/chat/super-grouping/turn-segments.d.ts +69 -0
  264. package/dist/chat/super-grouping/turn-segments.js +82 -0
  265. package/dist/chat/super-grouping/turn-segments.js.map +1 -0
  266. package/dist/chat/super-grouping/turn-timing.cjs +110 -0
  267. package/dist/chat/super-grouping/turn-timing.cjs.map +1 -0
  268. package/dist/chat/super-grouping/turn-timing.d.ts +52 -0
  269. package/dist/chat/super-grouping/turn-timing.js +110 -0
  270. package/dist/chat/super-grouping/turn-timing.js.map +1 -0
  271. package/dist/chat/tiptap-text.cjs +1 -1
  272. package/dist/chat/tiptap-text.js +1 -1
  273. package/dist/chat/use-athena-run-live.cjs +1 -1
  274. package/dist/chat/use-athena-run-live.js +1 -1
  275. package/dist/chat/use-statewire-approval-request.cjs +73 -4
  276. package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
  277. package/dist/chat/use-statewire-approval-request.js +74 -5
  278. package/dist/chat/use-statewire-approval-request.js.map +1 -1
  279. package/dist/chat-ui/composer/composer-message.cjs +284 -0
  280. package/dist/chat-ui/composer/composer-message.cjs.map +1 -0
  281. package/dist/chat-ui/composer/composer-message.d.ts +152 -0
  282. package/dist/chat-ui/composer/composer-message.js +284 -0
  283. package/dist/chat-ui/composer/composer-message.js.map +1 -0
  284. package/dist/chat-ui/composer/tiptap-composer.cjs +97 -15
  285. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  286. package/dist/chat-ui/composer/tiptap-composer.d.ts +34 -6
  287. package/dist/chat-ui/composer/tiptap-composer.js +97 -15
  288. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  289. package/dist/chat-ui/index.cjs +4 -1
  290. package/dist/chat-ui/index.cjs.map +1 -1
  291. package/dist/chat-ui/index.d.ts +3 -2
  292. package/dist/chat-ui/index.js +5 -2
  293. package/dist/chat-ui/index.js.map +1 -1
  294. package/dist/chat-ui/mentions/mention-chip.cjs +31 -3
  295. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  296. package/dist/chat-ui/mentions/mention-chip.d.ts +2 -5
  297. package/dist/chat-ui/mentions/mention-chip.js +33 -5
  298. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  299. package/dist/chat-ui/mentions/mention-extension.cjs +9 -3
  300. package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
  301. package/dist/chat-ui/mentions/mention-extension.js +9 -3
  302. package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
  303. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +3 -1
  304. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
  305. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +3 -1
  306. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -1
  307. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +65 -19
  308. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  309. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +15 -0
  310. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +67 -21
  311. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  312. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +4 -2
  313. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  314. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +2 -1
  315. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +5 -3
  316. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  317. package/dist/chat-ui/mentions/use-account-workspace-id.cjs +61 -0
  318. package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -0
  319. package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +3 -0
  320. package/dist/chat-ui/mentions/use-account-workspace-id.js +61 -0
  321. package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -0
  322. package/dist/chat-ui/mentions/use-member-avatar.cjs +75 -0
  323. package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -0
  324. package/dist/chat-ui/mentions/use-member-avatar.d.ts +2 -0
  325. package/dist/chat-ui/mentions/use-member-avatar.js +75 -0
  326. package/dist/chat-ui/mentions/use-member-avatar.js.map +1 -0
  327. package/dist/chat-ui/messages/message-components.cjs +30 -10
  328. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  329. package/dist/chat-ui/messages/message-components.d.ts +21 -1
  330. package/dist/chat-ui/messages/message-components.js +30 -10
  331. package/dist/chat-ui/messages/message-components.js.map +1 -1
  332. package/dist/chat-ui/messages/runtime-message.cjs +1 -1
  333. package/dist/chat-ui/messages/runtime-message.js +1 -1
  334. package/dist/chat-ui/messages/statewire-continue-run.cjs +5 -5
  335. package/dist/chat-ui/messages/statewire-continue-run.js +5 -5
  336. package/dist/chat-ui/messages/user-edit-composer.cjs +1 -1
  337. package/dist/chat-ui/messages/user-edit-composer.js +1 -1
  338. package/dist/chat-ui/messages/wake-marker.cjs +39 -4
  339. package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
  340. package/dist/chat-ui/messages/wake-marker.d.ts +16 -5
  341. package/dist/chat-ui/messages/wake-marker.js +40 -5
  342. package/dist/chat-ui/messages/wake-marker.js.map +1 -1
  343. package/dist/chat-ui/rich-text/chat-message-body.cjs +12 -8
  344. package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
  345. package/dist/chat-ui/rich-text/chat-message-body.d.ts +6 -1
  346. package/dist/chat-ui/rich-text/chat-message-body.js +13 -9
  347. package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -1
  348. package/dist/chat-ui/rich-text/chat-text-schema.cjs +64 -6
  349. package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
  350. package/dist/chat-ui/rich-text/chat-text-schema.d.ts +5 -0
  351. package/dist/chat-ui/rich-text/chat-text-schema.js +66 -8
  352. package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
  353. package/dist/chat-ui/statewire.cjs +1 -1
  354. package/dist/chat-ui/statewire.d.ts +1 -1
  355. package/dist/chat-ui/statewire.js +1 -1
  356. package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -2
  357. package/dist/chat-ui/thread/statewire-history-edge.js +2 -2
  358. package/dist/collab/client.cjs +282 -16
  359. package/dist/collab/client.cjs.map +1 -1
  360. package/dist/collab/client.d.ts +127 -2
  361. package/dist/collab/client.js +285 -20
  362. package/dist/collab/client.js.map +1 -1
  363. package/dist/collab/index.cjs +2 -0
  364. package/dist/collab/index.cjs.map +1 -1
  365. package/dist/collab/index.d.ts +1 -1
  366. package/dist/collab/index.js +3 -1
  367. package/dist/composer/AttachmentContext.cjs +38 -12
  368. package/dist/composer/AttachmentContext.cjs.map +1 -1
  369. package/dist/composer/AttachmentContext.d.ts +22 -1
  370. package/dist/composer/AttachmentContext.js +40 -14
  371. package/dist/composer/AttachmentContext.js.map +1 -1
  372. package/dist/composer/QuoteContext.cjs +80 -28
  373. package/dist/composer/QuoteContext.cjs.map +1 -1
  374. package/dist/composer/QuoteContext.d.ts +35 -6
  375. package/dist/composer/QuoteContext.js +82 -30
  376. package/dist/composer/QuoteContext.js.map +1 -1
  377. package/dist/composer/build-composed-message.cjs +27 -0
  378. package/dist/composer/build-composed-message.cjs.map +1 -1
  379. package/dist/composer/build-composed-message.d.ts +21 -0
  380. package/dist/composer/build-composed-message.js +28 -1
  381. package/dist/composer/build-composed-message.js.map +1 -1
  382. package/dist/composer/composer-handoff.cjs +13 -1
  383. package/dist/composer/composer-handoff.cjs.map +1 -1
  384. package/dist/composer/composer-handoff.d.ts +12 -0
  385. package/dist/composer/composer-handoff.js +15 -3
  386. package/dist/composer/composer-handoff.js.map +1 -1
  387. package/dist/composer/index.d.ts +6 -3
  388. package/dist/composer/useReadComposerDraft.cjs +16 -0
  389. package/dist/composer/useReadComposerDraft.cjs.map +1 -0
  390. package/dist/composer/useReadComposerDraft.d.ts +6 -0
  391. package/dist/composer/useReadComposerDraft.js +16 -0
  392. package/dist/composer/useReadComposerDraft.js.map +1 -0
  393. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  394. package/dist/diagnostics/athena-diagnostics.d.ts +3 -1
  395. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  396. package/dist/diagnostics/errors.cjs +6 -0
  397. package/dist/diagnostics/errors.cjs.map +1 -1
  398. package/dist/diagnostics/errors.d.ts +6 -0
  399. package/dist/diagnostics/errors.js +6 -0
  400. package/dist/diagnostics/errors.js.map +1 -1
  401. package/dist/index.cjs +163 -7
  402. package/dist/index.cjs.map +1 -1
  403. package/dist/index.d.ts +55 -12
  404. package/dist/index.js +170 -14
  405. package/dist/index.js.map +1 -1
  406. package/dist/lib/owner-document.cjs +32 -0
  407. package/dist/lib/owner-document.cjs.map +1 -0
  408. package/dist/lib/owner-document.d.ts +17 -0
  409. package/dist/lib/owner-document.js +32 -0
  410. package/dist/lib/owner-document.js.map +1 -0
  411. package/dist/lib/portal-surface.cjs +55 -0
  412. package/dist/lib/portal-surface.cjs.map +1 -0
  413. package/dist/lib/portal-surface.d.ts +37 -0
  414. package/dist/lib/portal-surface.js +55 -0
  415. package/dist/lib/portal-surface.js.map +1 -0
  416. package/dist/lib/use-athena-rest-query.cjs +34 -0
  417. package/dist/lib/use-athena-rest-query.cjs.map +1 -0
  418. package/dist/lib/use-athena-rest-query.d.ts +31 -0
  419. package/dist/lib/use-athena-rest-query.js +34 -0
  420. package/dist/lib/use-athena-rest-query.js.map +1 -0
  421. package/dist/provider/AthenaProvider.cjs +70 -10
  422. package/dist/provider/AthenaProvider.cjs.map +1 -1
  423. package/dist/provider/AthenaProvider.d.ts +27 -2
  424. package/dist/provider/AthenaProvider.js +74 -14
  425. package/dist/provider/AthenaProvider.js.map +1 -1
  426. package/dist/provider/citation-links.d.ts +10 -2
  427. package/dist/{packages/react → react}/package.json.cjs +1 -1
  428. package/dist/{packages/react → react}/package.json.js +1 -1
  429. package/dist/runtime/StatewireModelLaneSync.cjs +96 -0
  430. package/dist/runtime/StatewireModelLaneSync.cjs.map +1 -0
  431. package/dist/runtime/StatewireModelLaneSync.d.ts +45 -0
  432. package/dist/runtime/StatewireModelLaneSync.js +96 -0
  433. package/dist/runtime/StatewireModelLaneSync.js.map +1 -0
  434. package/dist/runtime/statewire-lifecycle.cjs +20 -5
  435. package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
  436. package/dist/runtime/statewire-lifecycle.d.ts +11 -0
  437. package/dist/runtime/statewire-lifecycle.js +20 -5
  438. package/dist/runtime/statewire-lifecycle.js.map +1 -1
  439. package/dist/runtime/statewire-model-lane.cjs +28 -0
  440. package/dist/runtime/statewire-model-lane.cjs.map +1 -0
  441. package/dist/runtime/statewire-model-lane.d.ts +64 -0
  442. package/dist/runtime/statewire-model-lane.js +28 -0
  443. package/dist/runtime/statewire-model-lane.js.map +1 -0
  444. package/dist/runtime/statewire-run-config.cjs +16 -2
  445. package/dist/runtime/statewire-run-config.cjs.map +1 -1
  446. package/dist/runtime/statewire-run-config.d.ts +10 -0
  447. package/dist/runtime/statewire-run-config.js +16 -2
  448. package/dist/runtime/statewire-run-config.js.map +1 -1
  449. package/dist/runtime/statewire-server-lane-context.cjs +24 -0
  450. package/dist/runtime/statewire-server-lane-context.cjs.map +1 -0
  451. package/dist/runtime/statewire-server-lane-context.d.ts +30 -0
  452. package/dist/runtime/statewire-server-lane-context.js +24 -0
  453. package/dist/runtime/statewire-server-lane-context.js.map +1 -0
  454. package/dist/runtime/useAthenaStatewireRuntime.cjs +47 -23
  455. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  456. package/dist/runtime/useAthenaStatewireRuntime.d.ts +8 -1
  457. package/dist/runtime/useAthenaStatewireRuntime.js +48 -24
  458. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  459. package/dist/search/useAthenaRepoSearch.cjs +5 -13
  460. package/dist/search/useAthenaRepoSearch.cjs.map +1 -1
  461. package/dist/search/useAthenaRepoSearch.d.ts +3 -3
  462. package/dist/search/useAthenaRepoSearch.js +6 -14
  463. package/dist/search/useAthenaRepoSearch.js.map +1 -1
  464. package/dist/sheet-range/a1.cjs +162 -0
  465. package/dist/sheet-range/a1.cjs.map +1 -0
  466. package/dist/sheet-range/a1.d.ts +91 -0
  467. package/dist/sheet-range/a1.js +162 -0
  468. package/dist/sheet-range/a1.js.map +1 -0
  469. package/dist/sheet-range/index.cjs +22 -0
  470. package/dist/sheet-range/index.cjs.map +1 -0
  471. package/dist/sheet-range/index.d.ts +12 -0
  472. package/dist/sheet-range/index.js +22 -0
  473. package/dist/sheet-range/index.js.map +1 -0
  474. package/dist/sheet-range/range-preview-table.cjs +75 -0
  475. package/dist/sheet-range/range-preview-table.cjs.map +1 -0
  476. package/dist/sheet-range/range-preview-table.d.ts +20 -0
  477. package/dist/sheet-range/range-preview-table.js +75 -0
  478. package/dist/sheet-range/range-preview-table.js.map +1 -0
  479. package/dist/sheet-range/range-preview.cjs +116 -0
  480. package/dist/sheet-range/range-preview.cjs.map +1 -0
  481. package/dist/sheet-range/range-preview.d.ts +67 -0
  482. package/dist/sheet-range/range-preview.js +116 -0
  483. package/dist/sheet-range/range-preview.js.map +1 -0
  484. package/dist/styles.css +1 -1
  485. package/dist/threads/Inbox.cjs +289 -0
  486. package/dist/threads/Inbox.cjs.map +1 -0
  487. package/dist/threads/Inbox.d.ts +46 -0
  488. package/dist/threads/Inbox.js +289 -0
  489. package/dist/threads/Inbox.js.map +1 -0
  490. package/dist/threads/SessionList.cjs +51 -126
  491. package/dist/threads/SessionList.cjs.map +1 -1
  492. package/dist/threads/SessionList.d.ts +26 -1
  493. package/dist/threads/SessionList.js +45 -120
  494. package/dist/threads/SessionList.js.map +1 -1
  495. package/dist/threads/SessionsPage.cjs +753 -0
  496. package/dist/threads/SessionsPage.cjs.map +1 -0
  497. package/dist/threads/SessionsPage.d.ts +35 -0
  498. package/dist/threads/SessionsPage.js +753 -0
  499. package/dist/threads/SessionsPage.js.map +1 -0
  500. package/dist/threads/api.cjs +23 -2
  501. package/dist/threads/api.cjs.map +1 -1
  502. package/dist/threads/api.d.ts +60 -0
  503. package/dist/threads/api.js +23 -2
  504. package/dist/threads/api.js.map +1 -1
  505. package/dist/threads/conversation-list-fetcher.cjs +9 -2
  506. package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
  507. package/dist/threads/conversation-list-fetcher.d.ts +14 -1
  508. package/dist/threads/conversation-list-fetcher.js +9 -2
  509. package/dist/threads/conversation-list-fetcher.js.map +1 -1
  510. package/dist/threads/index.d.ts +2 -1
  511. package/dist/threads/pull-request-display.cjs +25 -0
  512. package/dist/threads/pull-request-display.cjs.map +1 -0
  513. package/dist/threads/pull-request-display.d.ts +15 -0
  514. package/dist/threads/pull-request-display.js +25 -0
  515. package/dist/threads/pull-request-display.js.map +1 -0
  516. package/dist/threads/session-list-model.cjs +16 -2
  517. package/dist/threads/session-list-model.cjs.map +1 -1
  518. package/dist/threads/session-list-model.d.ts +10 -0
  519. package/dist/threads/session-list-model.js +16 -2
  520. package/dist/threads/session-list-model.js.map +1 -1
  521. package/dist/threads/session-row-parts.cjs +152 -0
  522. package/dist/threads/session-row-parts.cjs.map +1 -0
  523. package/dist/threads/session-row-parts.d.ts +50 -0
  524. package/dist/threads/session-row-parts.js +152 -0
  525. package/dist/threads/session-row-parts.js.map +1 -0
  526. package/dist/threads/sessions-page-model.cjs +305 -0
  527. package/dist/threads/sessions-page-model.cjs.map +1 -0
  528. package/dist/threads/sessions-page-model.d.ts +86 -0
  529. package/dist/threads/sessions-page-model.js +305 -0
  530. package/dist/threads/sessions-page-model.js.map +1 -0
  531. package/dist/threads/sessions-page-storage.cjs +93 -0
  532. package/dist/threads/sessions-page-storage.cjs.map +1 -0
  533. package/dist/threads/sessions-page-storage.d.ts +23 -0
  534. package/dist/threads/sessions-page-storage.js +93 -0
  535. package/dist/threads/sessions-page-storage.js.map +1 -0
  536. package/dist/threads/sessions-query.cjs +235 -0
  537. package/dist/threads/sessions-query.cjs.map +1 -0
  538. package/dist/threads/sessions-query.d.ts +119 -0
  539. package/dist/threads/sessions-query.js +235 -0
  540. package/dist/threads/sessions-query.js.map +1 -0
  541. package/dist/threads/statewire-thread-list.cjs +133 -40
  542. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  543. package/dist/threads/statewire-thread-list.d.ts +83 -2
  544. package/dist/threads/statewire-thread-list.js +134 -41
  545. package/dist/threads/statewire-thread-list.js.map +1 -1
  546. package/dist/threads/use-athena-sessions.cjs +198 -0
  547. package/dist/threads/use-athena-sessions.cjs.map +1 -0
  548. package/dist/threads/use-athena-sessions.d.ts +81 -0
  549. package/dist/threads/use-athena-sessions.js +198 -0
  550. package/dist/threads/use-athena-sessions.js.map +1 -0
  551. package/dist/threads/use-athena-thread-model.cjs +14 -0
  552. package/dist/threads/use-athena-thread-model.cjs.map +1 -0
  553. package/dist/threads/use-athena-thread-model.d.ts +22 -0
  554. package/dist/threads/use-athena-thread-model.js +14 -0
  555. package/dist/threads/use-athena-thread-model.js.map +1 -0
  556. package/dist/threads/use-rest-conversation-history.cjs +1 -1
  557. package/dist/threads/use-rest-conversation-history.js +1 -1
  558. package/dist/threads/use-statewire-conversation-history.cjs +1 -1
  559. package/dist/threads/use-statewire-conversation-history.d.ts +3 -0
  560. package/dist/threads/use-statewire-conversation-history.js +1 -1
  561. package/dist/threads/use-thread-read-state.cjs +73 -0
  562. package/dist/threads/use-thread-read-state.cjs.map +1 -0
  563. package/dist/threads/use-thread-read-state.d.ts +51 -0
  564. package/dist/threads/use-thread-read-state.js +73 -0
  565. package/dist/threads/use-thread-read-state.js.map +1 -0
  566. package/dist/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +1 -0
  567. package/dist/tiptap-markdown-table/src/markdown-table-serializer.js.map +1 -0
  568. package/dist/tools/auto-open-tools.cjs +2 -0
  569. package/dist/tools/auto-open-tools.cjs.map +1 -1
  570. package/dist/tools/auto-open-tools.js +2 -0
  571. package/dist/tools/auto-open-tools.js.map +1 -1
  572. package/dist/tools/file-tool-uis.cjs +18 -43
  573. package/dist/tools/file-tool-uis.cjs.map +1 -1
  574. package/dist/tools/file-tool-uis.d.ts +1 -2
  575. package/dist/tools/file-tool-uis.js +18 -42
  576. package/dist/tools/file-tool-uis.js.map +1 -1
  577. package/dist/tools/index.cjs +6 -2
  578. package/dist/tools/index.cjs.map +1 -1
  579. package/dist/tools/index.d.ts +1 -0
  580. package/dist/tools/index.js +6 -2
  581. package/dist/tools/index.js.map +1 -1
  582. package/dist/tools/misc-tool-uis.cjs +2 -2
  583. package/dist/tools/misc-tool-uis.js +2 -2
  584. package/dist/tools/primitives.cjs +1 -1
  585. package/dist/tools/primitives.js +1 -1
  586. package/dist/tools/read-asset-tool-ui.cjs +21 -70
  587. package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
  588. package/dist/tools/read-asset-tool-ui.js +21 -70
  589. package/dist/tools/read-asset-tool-ui.js.map +1 -1
  590. package/dist/tools/step-text.cjs +21 -0
  591. package/dist/tools/step-text.cjs.map +1 -0
  592. package/dist/tools/step-text.d.ts +10 -0
  593. package/dist/tools/step-text.js +21 -0
  594. package/dist/tools/step-text.js.map +1 -0
  595. package/dist/tools/tool-fallback.cjs +24 -5
  596. package/dist/tools/tool-fallback.cjs.map +1 -1
  597. package/dist/tools/tool-fallback.d.ts +3 -1
  598. package/dist/tools/tool-fallback.js +24 -5
  599. package/dist/tools/tool-fallback.js.map +1 -1
  600. package/dist/tools/tool-summary.cjs +661 -0
  601. package/dist/tools/tool-summary.cjs.map +1 -0
  602. package/dist/tools/tool-summary.d.ts +99 -0
  603. package/dist/tools/tool-summary.js +661 -0
  604. package/dist/tools/tool-summary.js.map +1 -0
  605. package/dist/tools/tool-uis.cjs +37 -95
  606. package/dist/tools/tool-uis.cjs.map +1 -1
  607. package/dist/tools/tool-uis.js +37 -95
  608. package/dist/tools/tool-uis.js.map +1 -1
  609. package/dist/tools/voice-update-tool-ui.cjs +1 -1
  610. package/dist/tools/voice-update-tool-ui.js +1 -1
  611. package/dist/tools/write-todos-tool-ui.cjs +3 -2
  612. package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
  613. package/dist/tools/write-todos-tool-ui.d.ts +5 -0
  614. package/dist/tools/write-todos-tool-ui.js +5 -4
  615. package/dist/tools/write-todos-tool-ui.js.map +1 -1
  616. package/dist/ui/popover.cjs +6 -6
  617. package/dist/ui/popover.cjs.map +1 -1
  618. package/dist/ui/popover.js +6 -6
  619. package/dist/ui/popover.js.map +1 -1
  620. package/dist/ui/tooltip.cjs +16 -2
  621. package/dist/ui/tooltip.cjs.map +1 -1
  622. package/dist/ui/tooltip.d.ts +1 -1
  623. package/dist/ui/tooltip.js +16 -2
  624. package/dist/ui/tooltip.js.map +1 -1
  625. package/dist/version.cjs +1 -1
  626. package/dist/version.js +1 -1
  627. package/dist/voice/use-athena-voice-session.cjs.map +1 -1
  628. package/dist/voice/use-athena-voice-session.d.ts +3 -3
  629. package/dist/voice/use-athena-voice-session.js.map +1 -1
  630. package/dist/workbench/SessionWorkbench.cjs +378 -0
  631. package/dist/workbench/SessionWorkbench.cjs.map +1 -0
  632. package/dist/workbench/SessionWorkbench.d.ts +30 -0
  633. package/dist/workbench/SessionWorkbench.js +378 -0
  634. package/dist/workbench/SessionWorkbench.js.map +1 -0
  635. package/dist/workbench/session-workbench-context.cjs +26 -0
  636. package/dist/workbench/session-workbench-context.cjs.map +1 -0
  637. package/dist/workbench/session-workbench-context.d.ts +55 -0
  638. package/dist/workbench/session-workbench-context.js +26 -0
  639. package/dist/workbench/session-workbench-context.js.map +1 -0
  640. package/dist/workbench/session-workbench-model.cjs +288 -0
  641. package/dist/workbench/session-workbench-model.cjs.map +1 -0
  642. package/dist/workbench/session-workbench-model.d.ts +168 -0
  643. package/dist/workbench/session-workbench-model.js +288 -0
  644. package/dist/workbench/session-workbench-model.js.map +1 -0
  645. package/dist/workbench/session-workbench-panes.cjs +580 -0
  646. package/dist/workbench/session-workbench-panes.cjs.map +1 -0
  647. package/dist/workbench/session-workbench-panes.d.ts +16 -0
  648. package/dist/workbench/session-workbench-panes.js +580 -0
  649. package/dist/workbench/session-workbench-panes.js.map +1 -0
  650. package/dist/workbench/session-workspace-api.cjs +157 -0
  651. package/dist/workbench/session-workspace-api.cjs.map +1 -0
  652. package/dist/workbench/session-workspace-api.d.ts +70 -0
  653. package/dist/workbench/session-workspace-api.js +157 -0
  654. package/dist/workbench/session-workspace-api.js.map +1 -0
  655. package/dist/workbench/use-session-workspace.cjs +100 -0
  656. package/dist/workbench/use-session-workspace.cjs.map +1 -0
  657. package/dist/workbench/use-session-workspace.d.ts +45 -0
  658. package/dist/workbench/use-session-workspace.js +100 -0
  659. package/dist/workbench/use-session-workspace.js.map +1 -0
  660. package/dist/workbench/workbench-layout-context.cjs +10 -0
  661. package/dist/workbench/workbench-layout-context.cjs.map +1 -0
  662. package/dist/workbench/workbench-layout-context.d.ts +17 -0
  663. package/dist/workbench/workbench-layout-context.js +10 -0
  664. package/dist/workbench/workbench-layout-context.js.map +1 -0
  665. package/package.json +21 -10
  666. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +0 -77
  667. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +0 -1
  668. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +0 -77
  669. package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +0 -1
  670. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +0 -181
  671. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +0 -1
  672. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +0 -181
  673. package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +0 -1
  674. package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +0 -1
  675. package/dist/packages/agent-runtime/src/asset-attachment.js.map +0 -1
  676. package/dist/packages/agent-runtime/src/auth-denial.cjs.map +0 -1
  677. package/dist/packages/agent-runtime/src/auth-denial.js.map +0 -1
  678. package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +0 -1
  679. package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +0 -1
  680. package/dist/packages/agent-runtime/src/client-tools.cjs.map +0 -1
  681. package/dist/packages/agent-runtime/src/client-tools.js.map +0 -1
  682. package/dist/packages/agent-runtime/src/conversation-index.cjs.map +0 -1
  683. package/dist/packages/agent-runtime/src/conversation-index.js.map +0 -1
  684. package/dist/packages/agent-runtime/src/conversation-list.cjs.map +0 -1
  685. package/dist/packages/agent-runtime/src/conversation-list.js.map +0 -1
  686. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +0 -1
  687. package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +0 -1
  688. package/dist/packages/agent-runtime/src/edit-command.cjs.map +0 -1
  689. package/dist/packages/agent-runtime/src/edit-command.js.map +0 -1
  690. package/dist/packages/agent-runtime/src/errors.cjs.map +0 -1
  691. package/dist/packages/agent-runtime/src/errors.js.map +0 -1
  692. package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +0 -1
  693. package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +0 -1
  694. package/dist/packages/agent-runtime/src/github-wake-event.cjs.map +0 -1
  695. package/dist/packages/agent-runtime/src/github-wake-event.js.map +0 -1
  696. package/dist/packages/agent-runtime/src/interrupts.cjs.map +0 -1
  697. package/dist/packages/agent-runtime/src/interrupts.js.map +0 -1
  698. package/dist/packages/agent-runtime/src/message-author.cjs.map +0 -1
  699. package/dist/packages/agent-runtime/src/message-author.js.map +0 -1
  700. package/dist/packages/agent-runtime/src/message-window.cjs.map +0 -1
  701. package/dist/packages/agent-runtime/src/message-window.js.map +0 -1
  702. package/dist/packages/agent-runtime/src/messages.cjs.map +0 -1
  703. package/dist/packages/agent-runtime/src/messages.js.map +0 -1
  704. package/dist/packages/agent-runtime/src/model-context.cjs.map +0 -1
  705. package/dist/packages/agent-runtime/src/model-context.js.map +0 -1
  706. package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +0 -1
  707. package/dist/packages/agent-runtime/src/optimistic-content.js.map +0 -1
  708. package/dist/packages/agent-runtime/src/protocol.cjs.map +0 -1
  709. package/dist/packages/agent-runtime/src/protocol.js.map +0 -1
  710. package/dist/packages/agent-runtime/src/queue.cjs.map +0 -1
  711. package/dist/packages/agent-runtime/src/queue.js.map +0 -1
  712. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +0 -1
  713. package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +0 -1
  714. package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +0 -1
  715. package/dist/packages/agent-runtime/src/runtime-messages.js.map +0 -1
  716. package/dist/packages/agent-runtime/src/screen-point.cjs.map +0 -1
  717. package/dist/packages/agent-runtime/src/screen-point.js.map +0 -1
  718. package/dist/packages/agent-runtime/src/send-recovery.cjs.map +0 -1
  719. package/dist/packages/agent-runtime/src/send-recovery.js.map +0 -1
  720. package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +0 -1
  721. package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +0 -1
  722. package/dist/packages/agent-runtime/src/statewire-state.cjs.map +0 -1
  723. package/dist/packages/agent-runtime/src/statewire-state.js.map +0 -1
  724. package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +0 -1
  725. package/dist/packages/agent-runtime/src/statewire-suspended.js.map +0 -1
  726. package/dist/packages/agent-runtime/src/statewire-transport.cjs +0 -11
  727. package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +0 -1
  728. package/dist/packages/agent-runtime/src/statewire-transport.js +0 -11
  729. package/dist/packages/agent-runtime/src/statewire-transport.js.map +0 -1
  730. package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +0 -1
  731. package/dist/packages/agent-runtime/src/streaming-markdown.js.map +0 -1
  732. package/dist/packages/agent-runtime/src/thread-extras.cjs.map +0 -1
  733. package/dist/packages/agent-runtime/src/thread-extras.js.map +0 -1
  734. package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +0 -1
  735. package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +0 -1
  736. package/dist/packages/agent-runtime/src/thread-status.cjs.map +0 -1
  737. package/dist/packages/agent-runtime/src/thread-status.js.map +0 -1
  738. package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +0 -1
  739. package/dist/packages/agent-runtime/src/tool-metadata.js.map +0 -1
  740. package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +0 -1
  741. package/dist/packages/agent-runtime/src/tool-outputs.js.map +0 -1
  742. package/dist/packages/agent-runtime/src/tool-result.cjs.map +0 -1
  743. package/dist/packages/agent-runtime/src/tool-result.js.map +0 -1
  744. package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +0 -1
  745. package/dist/packages/agent-runtime/src/use-conversation-list.js.map +0 -1
  746. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +0 -13
  747. package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +0 -1
  748. package/dist/packages/agent-runtime/src/use-deep-agent-config.js +0 -13
  749. package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +0 -1
  750. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +0 -1
  751. package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +0 -1
  752. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +0 -1
  753. package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +0 -1
  754. package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +0 -1
  755. package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +0 -1
  756. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +0 -1
  757. package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +0 -1
  758. package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +0 -1
  759. package/dist/packages/agent-runtime/src/voice-presentation.js.map +0 -1
  760. package/dist/packages/agent-runtime/src/voice-turn-grouping.cjs.map +0 -1
  761. package/dist/packages/agent-runtime/src/voice-turn-grouping.js.map +0 -1
  762. package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.cjs.map +0 -1
  763. package/dist/packages/tiptap-markdown-table/src/markdown-table-serializer.js.map +0 -1
  764. /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.cjs +0 -0
  765. /package/dist/{packages/agent-runtime → agent-runtime}/src/asset-attachment.js +0 -0
  766. /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.cjs +0 -0
  767. /package/dist/{packages/agent-runtime → agent-runtime}/src/auth-denial.js +0 -0
  768. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.cjs +0 -0
  769. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tool-bridge.js +0 -0
  770. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.cjs +0 -0
  771. /package/dist/{packages/agent-runtime → agent-runtime}/src/client-tools.js +0 -0
  772. /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.cjs +0 -0
  773. /package/dist/{packages/agent-runtime → agent-runtime}/src/conversation-index.js +0 -0
  774. /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.cjs +0 -0
  775. /package/dist/{packages/agent-runtime → agent-runtime}/src/edit-command.js +0 -0
  776. /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.cjs +0 -0
  777. /package/dist/{packages/agent-runtime → agent-runtime}/src/github-wake-event.js +0 -0
  778. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.cjs +0 -0
  779. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-author.js +0 -0
  780. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.cjs +0 -0
  781. /package/dist/{packages/agent-runtime → agent-runtime}/src/message-window.js +0 -0
  782. /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.cjs +0 -0
  783. /package/dist/{packages/agent-runtime → agent-runtime}/src/model-context.js +0 -0
  784. /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.cjs +0 -0
  785. /package/dist/{packages/agent-runtime → agent-runtime}/src/optimistic-content.js +0 -0
  786. /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.cjs +0 -0
  787. /package/dist/{packages/agent-runtime → agent-runtime}/src/protocol.js +0 -0
  788. /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.cjs +0 -0
  789. /package/dist/{packages/agent-runtime → agent-runtime}/src/runtime-messages.js +0 -0
  790. /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.cjs +0 -0
  791. /package/dist/{packages/agent-runtime → agent-runtime}/src/screen-point.js +0 -0
  792. /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.cjs +0 -0
  793. /package/dist/{packages/agent-runtime → agent-runtime}/src/send-recovery.js +0 -0
  794. /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.cjs +0 -0
  795. /package/dist/{packages/agent-runtime → agent-runtime}/src/statewire-attach-observer.js +0 -0
  796. /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.cjs +0 -0
  797. /package/dist/{packages/agent-runtime → agent-runtime}/src/streaming-markdown.js +0 -0
  798. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.cjs +0 -0
  799. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-extras.js +0 -0
  800. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.cjs +0 -0
  801. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-snapshot-cache.js +0 -0
  802. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.cjs +0 -0
  803. /package/dist/{packages/agent-runtime → agent-runtime}/src/thread-status.js +0 -0
  804. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.cjs +0 -0
  805. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-outputs.js +0 -0
  806. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.cjs +0 -0
  807. /package/dist/{packages/agent-runtime → agent-runtime}/src/tool-result.js +0 -0
  808. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.cjs +0 -0
  809. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-runtime.js +0 -0
  810. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.cjs +0 -0
  811. /package/dist/{packages/agent-runtime → agent-runtime}/src/use-deep-agent-window-sync.js +0 -0
  812. /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.cjs +0 -0
  813. /package/dist/{packages/agent-runtime → agent-runtime}/src/voice-turn-grouping.js +0 -0
  814. /package/dist/{packages/react → react}/package.json.cjs.map +0 -0
  815. /package/dist/{packages/react → react}/package.json.js.map +0 -0
  816. /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.cjs +0 -0
  817. /package/dist/{packages/tiptap-markdown-table → tiptap-markdown-table}/src/markdown-table-serializer.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useAthenaRepoSearch.js","sources":["../../src/search/useAthenaRepoSearch.ts"],"sourcesContent":["/**\n * Code search over the workspace's indexed repositories —\n * `POST /api/search/repositories` (agora `web/api/search/repositories.py`),\n * the HTTP face of Clio's repository source for a Devin-style \"Ask\" surface\n * that searches the monorepo without an agent turn. Athena platform staff\n * only (the account-level `is_admin`, not a workspace role) on the managed\n * cloud today: a non-staff caller reads `403`, a private deployment `404`.\n */\nimport {\n keepPreviousData,\n QueryClient,\n QueryClientContext,\n useQuery,\n type UseQueryResult,\n} from '@tanstack/react-query';\nimport { useContext, useRef, useState } from 'react';\nimport { getAthenaApiBaseUrl } from '../collab/mint';\nimport { AthenaSdkError } from '../diagnostics/errors';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport { sendWithCredentialRenewal } from '../runtime/credential-renewal';\nimport type { StatewireAuthSource } from '../runtime/statewire-auth-headers';\nimport { credentialShape, sameCredentialShape } from '../threads/credential-shape';\n\nexport type AthenaRepoSearchMode = 'hybrid' | 'lexical';\n\n/** One file range of one indexed repository, as the route serves it. */\nexport interface AthenaRepoSearchHit {\n /** The GitHub catalog asset the repository is connected through. */\n catalogAssetId: string;\n /** `owner/repo`; `null` when the catalog names no repository. */\n repoFullName: string | null;\n /** Repo-relative, `/`-separated. */\n path: string;\n /** 1-based, inclusive. */\n startLine: number;\n endLine: number;\n /** The enclosing declaration (`Class.method`) when the chunk's header named one. */\n symbol: string | null;\n /** Clio's language name for the file (`python`, `typescript`, …). */\n language: string | null;\n /** `code` (an AST chunk) or `window` (a Markdown heading window). */\n unitType: string;\n score: number;\n /** The indexed commit the hit was read at. */\n commitSha: string | null;\n /** `{origin}/{owner}/{repo}/blob/{sha}/{path}#L{a}-L{b}`, GHES-aware. */\n githubUrl: string | null;\n /** The chunk's lines, header line removed, line breaks preserved. */\n snippet: string;\n /** `asset_<catalog>?anchor=file_line_range&…` — what `read_asset` and a citation take. */\n readAssetReference: string;\n}\n\nexport interface AthenaRepoSearchResponse {\n /** Best first, at most `limit`. */\n hits: AthenaRepoSearchHit[];\n tookMs: number;\n mode: AthenaRepoSearchMode;\n}\n\nexport interface AthenaRepoSearchParams {\n query: string;\n /** 1–25; the route's default is 10. */\n limit?: number;\n /** `hybrid` (default) or `lexical`. */\n mode?: AthenaRepoSearchMode;\n /** Search these GitHub catalog assets only; empty means every indexed repository. */\n repositoryAssetIds?: string[];\n /** gitignore-style globs a hit's path must match (`agora/**\\/*.py`, `docs/`). */\n paths?: string[];\n /** Clio language names a hit's file must be indexed as. */\n languages?: string[];\n}\n\nexport interface UseAthenaRepoSearchOptions extends AthenaRepoSearchParams {\n /** `false` holds the query idle (a blank `query` does too). Default `true`. */\n enabled?: boolean;\n}\n\n/** The route's JSON body — snake_case, unset filters omitted. */\nexport interface AthenaRepoSearchRequestBody {\n query: string;\n limit?: number;\n mode?: AthenaRepoSearchMode;\n repository_asset_ids?: string[];\n paths?: string[];\n languages?: string[];\n}\n\nexport const ATHENA_REPO_SEARCH_PATH = '/api/search/repositories';\n\nexport function repoSearchRequestBody(params: AthenaRepoSearchParams): AthenaRepoSearchRequestBody {\n const body: AthenaRepoSearchRequestBody = { query: params.query.trim() };\n if (params.limit !== undefined) body.limit = params.limit;\n if (params.mode !== undefined) body.mode = params.mode;\n if (params.repositoryAssetIds?.length) body.repository_asset_ids = params.repositoryAssetIds;\n if (params.paths?.length) body.paths = params.paths;\n if (params.languages?.length) body.languages = params.languages;\n return body;\n}\n\n/** A `fetch` the caller cancelled (unmount, a newer query): lifecycle, not failure. */\nfunction isAbortError(error: unknown): boolean {\n return (error instanceof DOMException || error instanceof Error) && error.name === 'AbortError';\n}\n\n/**\n * One search request. The credential rides `Authorization: Bearer` (a token,\n * resolved live through `getToken` when the host provided one) or\n * `X-API-KEY`; with neither, a same-origin host's session cookie rides\n * automatically, as the SDK's other REST helpers allow. A refused bearer\n * (`401`) gets one forced re-mint through `getToken` (`force: true`, the\n * statewire transport's `staleAuth` contract; `sendWithCredentialRenewal`) — a\n * getter that caches until forced would otherwise resend the same expired\n * token on every retry. Every failure is an `AthenaSdkError`, transport\n * rejections included; only an abort keeps its own identity.\n */\nexport async function fetchRepoSearch(\n backendUrl: string,\n auth: StatewireAuthSource,\n params: AthenaRepoSearchParams,\n opts: { signal?: AbortSignal } = {},\n): Promise<AthenaRepoSearchResponse> {\n const url = `${getAthenaApiBaseUrl(backendUrl)}${ATHENA_REPO_SEARCH_PATH}`;\n const body = JSON.stringify(repoSearchRequestBody(params));\n const post = async (headers: Record<string, string>): Promise<Response> => {\n try {\n return await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...headers },\n body,\n signal: opts.signal ?? null,\n });\n } catch (error) {\n if (isAbortError(error)) throw error;\n throw new AthenaSdkError({\n code: 'repo_search_failed',\n message: 'Repository search could not reach the Agora API.',\n cause: error,\n hint: 'Check the network and that backendUrl points at the Agora API base.',\n });\n }\n };\n const res = await sendWithCredentialRenewal(auth, post);\n if (!res.ok) {\n const refused = res.status === 401 || res.status === 403;\n throw new AthenaSdkError({\n code: refused ? 'auth_rejected' : 'repo_search_failed',\n message: `Repository search failed: ${res.status}`,\n status: res.status,\n detail: await res.json().catch(() => undefined),\n hint: refused\n ? 'Repository search is limited to Athena platform staff on the managed cloud; check the credential.'\n : res.status === 404\n ? 'Repository search is not offered on this deployment (managed cloud only).'\n : 'Check backendUrl points at the Agora API base and that Clio is available.',\n });\n }\n return (await res.json()) as AthenaRepoSearchResponse;\n}\n\n/**\n * Search the indexed repositories through TanStack Query with the provider's\n * `backendUrl` and credentials. Keyed by the non-secret request and a\n * credential generation (a counter that advances when the host's credentials\n * change), never by the credential itself. Uses the host's `QueryClient` when\n * one is in context (`enableThreadList` mounts the SDK's own) and a\n * hook-scoped client otherwise, so it works under any `<AthenaProvider>`.\n */\nexport function useAthenaRepoSearch({\n enabled = true,\n ...params\n}: UseAthenaRepoSearchOptions): UseQueryResult<AthenaRepoSearchResponse, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const credentialsRef = useRef(credentialShape({ apiKey, token: config.token, getToken }));\n const generationRef = useRef(0);\n const currentCredentials = credentialShape({ apiKey, token: config.token, getToken });\n if (!sameCredentialShape(credentialsRef.current, currentCredentials)) {\n credentialsRef.current = currentCredentials;\n generationRef.current += 1;\n }\n const body = repoSearchRequestBody(params);\n const contextClient = useContext(QueryClientContext);\n const [fallbackClient] = useState(() => (contextClient ? undefined : new QueryClient()));\n return useQuery(\n {\n queryKey: ['athena-sdk', 'repo-search', backendUrl, generationRef.current, body],\n // `config.token` is read at fetch time: the provider serves the latest\n // token through a getter, so rotations reach the request.\n queryFn: ({ signal }) =>\n fetchRepoSearch(backendUrl, { apiKey, token: config.token, getToken }, params, { signal }),\n enabled: enabled && body.query.length > 0 && backendUrl.length > 0,\n staleTime: 30_000,\n placeholderData: keepPreviousData,\n refetchOnWindowFocus: false,\n },\n contextClient ?? fallbackClient,\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAthenaRepoSearch.js","sources":["../../src/search/useAthenaRepoSearch.ts"],"sourcesContent":["/**\n * Code search over the workspace's indexed repositories —\n * `POST /api/search/repositories` (agora `web/api/search/repositories.py`),\n * the HTTP face of Clio's repository source for a Devin-style \"Ask\" surface\n * that searches the monorepo without an agent turn. Athena platform staff\n * only (the account-level `is_admin`, not a workspace role) on the managed\n * cloud today: a non-staff caller reads `403`, a private deployment `404`.\n */\nimport { keepPreviousData, useQuery, type UseQueryResult } from '@tanstack/react-query';\nimport { getAthenaApiBaseUrl } from '../collab/mint';\nimport { AthenaSdkError } from '../diagnostics/errors';\nimport { useAthenaQueryClient, useAthenaQueryIdentity } from '../lib/use-athena-rest-query';\nimport { useAthenaConfig } from '../provider/AthenaContext';\nimport { sendWithCredentialRenewal } from '../runtime/credential-renewal';\nimport type { StatewireAuthSource } from '../runtime/statewire-auth-headers';\n\nexport type AthenaRepoSearchMode = 'hybrid' | 'lexical';\n\n/** One file range of one indexed repository, as the route serves it. */\nexport interface AthenaRepoSearchHit {\n /** The GitHub catalog asset the repository is connected through. */\n catalogAssetId: string;\n /** `owner/repo`; `null` when the catalog names no repository. */\n repoFullName: string | null;\n /** Repo-relative, `/`-separated. */\n path: string;\n /** 1-based, inclusive. */\n startLine: number;\n endLine: number;\n /** The enclosing declaration (`Class.method`) when the chunk's header named one. */\n symbol: string | null;\n /** Clio's language name for the file (`python`, `typescript`, …). */\n language: string | null;\n /** `code` (an AST chunk) or `window` (a Markdown heading window). */\n unitType: string;\n score: number;\n /** The indexed commit the hit was read at. */\n commitSha: string | null;\n /** `{origin}/{owner}/{repo}/blob/{sha}/{path}#L{a}-L{b}`, GHES-aware. */\n githubUrl: string | null;\n /** The chunk's lines, header line removed, line breaks preserved. */\n snippet: string;\n /** `asset_<catalog>?anchor=file_line_range&…` — what `read_asset` and a citation take. */\n readAssetReference: string;\n}\n\nexport interface AthenaRepoSearchResponse {\n /** Best first, at most `limit`. */\n hits: AthenaRepoSearchHit[];\n tookMs: number;\n mode: AthenaRepoSearchMode;\n}\n\nexport interface AthenaRepoSearchParams {\n query: string;\n /** 1–25; the route's default is 10. */\n limit?: number;\n /** `hybrid` (default) or `lexical`. */\n mode?: AthenaRepoSearchMode;\n /** Search these GitHub catalog assets only; empty means every indexed repository. */\n repositoryAssetIds?: string[];\n /** gitignore-style globs a hit's path must match (`agora/**\\/*.py`, `docs/`). */\n paths?: string[];\n /** Clio language names a hit's file must be indexed as. */\n languages?: string[];\n}\n\nexport interface UseAthenaRepoSearchOptions extends AthenaRepoSearchParams {\n /** `false` holds the query idle (a blank `query` does too). Default `true`. */\n enabled?: boolean;\n}\n\n/** The route's JSON body — snake_case, unset filters omitted. */\nexport interface AthenaRepoSearchRequestBody {\n query: string;\n limit?: number;\n mode?: AthenaRepoSearchMode;\n repository_asset_ids?: string[];\n paths?: string[];\n languages?: string[];\n}\n\nexport const ATHENA_REPO_SEARCH_PATH = '/api/search/repositories';\n\nexport function repoSearchRequestBody(params: AthenaRepoSearchParams): AthenaRepoSearchRequestBody {\n const body: AthenaRepoSearchRequestBody = { query: params.query.trim() };\n if (params.limit !== undefined) body.limit = params.limit;\n if (params.mode !== undefined) body.mode = params.mode;\n if (params.repositoryAssetIds?.length) body.repository_asset_ids = params.repositoryAssetIds;\n if (params.paths?.length) body.paths = params.paths;\n if (params.languages?.length) body.languages = params.languages;\n return body;\n}\n\n/** A `fetch` the caller cancelled (unmount, a newer query): lifecycle, not failure. */\nfunction isAbortError(error: unknown): boolean {\n return (error instanceof DOMException || error instanceof Error) && error.name === 'AbortError';\n}\n\n/**\n * One search request. The credential rides `Authorization: Bearer` (a token,\n * resolved live through `getToken` when the host provided one) or\n * `X-API-KEY`; with neither, a same-origin host's session cookie rides\n * automatically, as the SDK's other REST helpers allow. A refused bearer\n * (`401`) gets one forced re-mint through `getToken` (`force: true`, the\n * statewire transport's `staleAuth` contract; `sendWithCredentialRenewal`) — a\n * getter that caches until forced would otherwise resend the same expired\n * token on every retry. Every failure is an `AthenaSdkError`, transport\n * rejections included; only an abort keeps its own identity.\n */\nexport async function fetchRepoSearch(\n backendUrl: string,\n auth: StatewireAuthSource,\n params: AthenaRepoSearchParams,\n opts: { signal?: AbortSignal } = {},\n): Promise<AthenaRepoSearchResponse> {\n const url = `${getAthenaApiBaseUrl(backendUrl)}${ATHENA_REPO_SEARCH_PATH}`;\n const body = JSON.stringify(repoSearchRequestBody(params));\n const post = async (headers: Record<string, string>): Promise<Response> => {\n try {\n return await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...headers },\n body,\n signal: opts.signal ?? null,\n });\n } catch (error) {\n if (isAbortError(error)) throw error;\n throw new AthenaSdkError({\n code: 'repo_search_failed',\n message: 'Repository search could not reach the Agora API.',\n cause: error,\n hint: 'Check the network and that backendUrl points at the Agora API base.',\n });\n }\n };\n const res = await sendWithCredentialRenewal(auth, post);\n if (!res.ok) {\n const refused = res.status === 401 || res.status === 403;\n throw new AthenaSdkError({\n code: refused ? 'auth_rejected' : 'repo_search_failed',\n message: `Repository search failed: ${res.status}`,\n status: res.status,\n detail: await res.json().catch(() => undefined),\n hint: refused\n ? 'Repository search is limited to Athena platform staff on the managed cloud; check the credential.'\n : res.status === 404\n ? 'Repository search is not offered on this deployment (managed cloud only).'\n : 'Check backendUrl points at the Agora API base and that Clio is available.',\n });\n }\n return (await res.json()) as AthenaRepoSearchResponse;\n}\n\n/**\n * Search the indexed repositories through TanStack Query with the provider's\n * `backendUrl` and credentials. Keyed by the non-secret request, the signed-in\n * principal and a credential generation (a counter that advances when the\n * host's credentials change), never by the credential itself. Uses the host's `QueryClient` when\n * one is in context (`enableThreadList` mounts the SDK's own) and a\n * hook-scoped client otherwise, so it works under any `<AthenaProvider>`.\n */\nexport function useAthenaRepoSearch({\n enabled = true,\n ...params\n}: UseAthenaRepoSearchOptions): UseQueryResult<AthenaRepoSearchResponse, Error> {\n const config = useAthenaConfig();\n const { backendUrl, apiKey, getToken } = config;\n const identity = useAthenaQueryIdentity({ apiKey, token: config.token, getToken });\n const body = repoSearchRequestBody(params);\n const queryClient = useAthenaQueryClient();\n return useQuery(\n {\n queryKey: ['athena-sdk', 'repo-search', backendUrl, ...identity, body],\n // `config.token` is read at fetch time: the provider serves the latest\n // token through a getter, so rotations reach the request.\n queryFn: ({ signal }) =>\n fetchRepoSearch(backendUrl, { apiKey, token: config.token, getToken }, params, { signal }),\n enabled: enabled && body.query.length > 0 && backendUrl.length > 0,\n staleTime: 30_000,\n placeholderData: keepPreviousData,\n refetchOnWindowFocus: false,\n },\n queryClient,\n );\n}\n"],"names":[],"mappings":";;;;;;AAkFO,MAAM,0BAA0B;AAEhC,SAAS,sBAAsB,QAA6D;;AACjG,QAAM,OAAoC,EAAE,OAAO,OAAO,MAAM,OAAK;AACrE,MAAI,OAAO,UAAU,OAAW,MAAK,QAAQ,OAAO;AACpD,MAAI,OAAO,SAAS,OAAW,MAAK,OAAO,OAAO;AAClD,OAAI,YAAO,uBAAP,mBAA2B,OAAQ,MAAK,uBAAuB,OAAO;AAC1E,OAAI,YAAO,UAAP,mBAAc,OAAQ,MAAK,QAAQ,OAAO;AAC9C,OAAI,YAAO,cAAP,mBAAkB,OAAQ,MAAK,YAAY,OAAO;AACtD,SAAO;AACT;AAGA,SAAS,aAAa,OAAyB;AAC7C,UAAQ,iBAAiB,gBAAgB,iBAAiB,UAAU,MAAM,SAAS;AACrF;AAaA,eAAsB,gBACpB,YACA,MACA,QACA,OAAiC,CAAA,GACE;AACnC,QAAM,MAAM,GAAG,oBAAoB,UAAU,CAAC,GAAG,uBAAuB;AACxE,QAAM,OAAO,KAAK,UAAU,sBAAsB,MAAM,CAAC;AACzD,QAAM,OAAO,OAAO,YAAuD;AACzE,QAAI;AACF,aAAO,MAAM,MAAM,KAAK;AAAA,QACtB,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,oBAAoB,GAAG,QAAA;AAAA,QAClD;AAAA,QACA,QAAQ,KAAK,UAAU;AAAA,MAAA,CACxB;AAAA,IACH,SAAS,OAAO;AACd,UAAI,aAAa,KAAK,EAAG,OAAM;AAC/B,YAAM,IAAI,eAAe;AAAA,QACvB,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,QACP,MAAM;AAAA,MAAA,CACP;AAAA,IACH;AAAA,EACF;AACA,QAAM,MAAM,MAAM,0BAA0B,MAAM,IAAI;AACtD,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,UAAU,IAAI,WAAW,OAAO,IAAI,WAAW;AACrD,UAAM,IAAI,eAAe;AAAA,MACvB,MAAM,UAAU,kBAAkB;AAAA,MAClC,SAAS,6BAA6B,IAAI,MAAM;AAAA,MAChD,QAAQ,IAAI;AAAA,MACZ,QAAQ,MAAM,IAAI,OAAO,MAAM,MAAM,MAAS;AAAA,MAC9C,MAAM,UACF,sGACA,IAAI,WAAW,MACb,8EACA;AAAA,IAAA,CACP;AAAA,EACH;AACA,SAAQ,MAAM,IAAI,KAAA;AACpB;AAUO,SAAS,oBAAoB;AAAA,EAClC,UAAU;AAAA,EACV,GAAG;AACL,GAAgF;AAC9E,QAAM,SAAS,gBAAA;AACf,QAAM,EAAE,YAAY,QAAQ,SAAA,IAAa;AACzC,QAAM,WAAW,uBAAuB,EAAE,QAAQ,OAAO,OAAO,OAAO,UAAU;AACjF,QAAM,OAAO,sBAAsB,MAAM;AACzC,QAAM,cAAc,qBAAA;AACpB,SAAO;AAAA,IACL;AAAA,MACE,UAAU,CAAC,cAAc,eAAe,YAAY,GAAG,UAAU,IAAI;AAAA;AAAA;AAAA,MAGrE,SAAS,CAAC,EAAE,OAAA,MACV,gBAAgB,YAAY,EAAE,QAAQ,OAAO,OAAO,OAAO,SAAA,GAAY,QAAQ,EAAE,QAAQ;AAAA,MAC3F,SAAS,WAAW,KAAK,MAAM,SAAS,KAAK,WAAW,SAAS;AAAA,MACjE,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,IAAA;AAAA,IAExB;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const SHEET_MAX_ROW = 1048576;
4
+ const SHEET_MAX_COLUMN = 16384;
5
+ const CELL_REFERENCE = /^\$?([A-Za-z]{1,3})\$?(\d{1,7})$/;
6
+ const COLUMN_REFERENCE = /^\$?([A-Za-z]{1,3})$/;
7
+ const ROW_REFERENCE = /^\$?(\d{1,7})$/;
8
+ function columnLettersToNumber(letters) {
9
+ if (!/^[A-Za-z]{1,3}$/.test(letters)) return null;
10
+ let column = 0;
11
+ for (const letter of letters.toUpperCase()) column = column * 26 + (letter.charCodeAt(0) - 64);
12
+ return column <= SHEET_MAX_COLUMN ? column : null;
13
+ }
14
+ function columnNumberToLetters(column) {
15
+ if (!Number.isInteger(column) || column < 1) return "";
16
+ let letters = "";
17
+ for (let rest = column; rest > 0; rest = Math.floor((rest - 1) / 26)) {
18
+ letters = String.fromCharCode(65 + (rest - 1) % 26) + letters;
19
+ }
20
+ return letters;
21
+ }
22
+ function formatA1Cell({ row, column }) {
23
+ return `${columnNumberToLetters(column)}${row}`;
24
+ }
25
+ function formatA1Range({ startRow, endRow, startColumn, endColumn }) {
26
+ const start = formatA1Cell({ row: startRow, column: startColumn });
27
+ if (startRow === endRow && startColumn === endColumn) return start;
28
+ return `${start}:${formatA1Cell({ row: endRow, column: endColumn })}`;
29
+ }
30
+ function splitSheetPrefix(reference) {
31
+ if (reference.startsWith("'")) {
32
+ let name2 = "";
33
+ let index = 1;
34
+ while (index < reference.length) {
35
+ const char = reference[index];
36
+ if (char === "'") {
37
+ if (reference[index + 1] !== "'") break;
38
+ name2 += "'";
39
+ index += 2;
40
+ continue;
41
+ }
42
+ name2 += char;
43
+ index += 1;
44
+ }
45
+ if (name2 === "" || reference[index] !== "'" || reference[index + 1] !== "!") return null;
46
+ return { sheetName: name2, address: reference.slice(index + 2) };
47
+ }
48
+ const bang = reference.indexOf("!");
49
+ if (bang === -1) return { sheetName: null, address: reference };
50
+ const name = reference.slice(0, bang);
51
+ if (name === "" || name.includes("'")) return null;
52
+ return { sheetName: name, address: reference.slice(bang + 1) };
53
+ }
54
+ function parseRow(digits) {
55
+ const row = Number(digits);
56
+ return Number.isInteger(row) && row >= 1 && row <= SHEET_MAX_ROW ? row : null;
57
+ }
58
+ function parseCell(part) {
59
+ const match = CELL_REFERENCE.exec(part);
60
+ if (!match) return null;
61
+ const column = columnLettersToNumber(match[1]);
62
+ const row = parseRow(match[2]);
63
+ return column === null || row === null ? null : { row, column };
64
+ }
65
+ function parseColumn(part) {
66
+ const match = COLUMN_REFERENCE.exec(part);
67
+ return match ? columnLettersToNumber(match[1]) : null;
68
+ }
69
+ function parseWholeRow(part) {
70
+ const match = ROW_REFERENCE.exec(part);
71
+ return match ? parseRow(match[1]) : null;
72
+ }
73
+ function parseA1Range(reference) {
74
+ if (typeof reference !== "string") return null;
75
+ const qualified = splitSheetPrefix(reference.trim());
76
+ if (!qualified) return null;
77
+ const { sheetName } = qualified;
78
+ const parts = qualified.address.split(":").map((part) => part.trim());
79
+ if (parts.length > 2 || parts.some((part) => part === "")) return null;
80
+ if (parts.length === 1) {
81
+ const cell = parseCell(parts[0]);
82
+ if (!cell) return null;
83
+ return {
84
+ kind: "cell",
85
+ sheetName,
86
+ startRow: cell.row,
87
+ endRow: cell.row,
88
+ startColumn: cell.column,
89
+ endColumn: cell.column
90
+ };
91
+ }
92
+ const [first, second] = parts;
93
+ const startCell = parseCell(first);
94
+ const endCell = parseCell(second);
95
+ if (startCell && endCell) {
96
+ return {
97
+ kind: "range",
98
+ sheetName,
99
+ startRow: Math.min(startCell.row, endCell.row),
100
+ endRow: Math.max(startCell.row, endCell.row),
101
+ startColumn: Math.min(startCell.column, endCell.column),
102
+ endColumn: Math.max(startCell.column, endCell.column)
103
+ };
104
+ }
105
+ const startColumn = parseColumn(first);
106
+ const endColumn = parseColumn(second);
107
+ if (startColumn !== null && endColumn !== null) {
108
+ return {
109
+ kind: "columns",
110
+ sheetName,
111
+ startRow: null,
112
+ endRow: null,
113
+ startColumn: Math.min(startColumn, endColumn),
114
+ endColumn: Math.max(startColumn, endColumn)
115
+ };
116
+ }
117
+ const startRow = parseWholeRow(first);
118
+ const endRow = parseWholeRow(second);
119
+ if (startRow !== null && endRow !== null) {
120
+ return {
121
+ kind: "rows",
122
+ sheetName,
123
+ startRow: Math.min(startRow, endRow),
124
+ endRow: Math.max(startRow, endRow),
125
+ startColumn: null,
126
+ endColumn: null
127
+ };
128
+ }
129
+ return null;
130
+ }
131
+ function a1AnchorCell(reference) {
132
+ if (typeof reference !== "string" || !parseA1Range(reference)) return null;
133
+ const qualified = splitSheetPrefix(reference.trim());
134
+ const first = (qualified == null ? void 0 : qualified.address.split(":")[0].trim()) ?? "";
135
+ const cell = parseCell(first);
136
+ if (cell) return cell;
137
+ const column = parseColumn(first);
138
+ if (column !== null) return { row: 1, column };
139
+ const row = parseWholeRow(first);
140
+ return row === null ? null : { row, column: 1 };
141
+ }
142
+ function a1RangeBounds(reference) {
143
+ const range = parseA1Range(reference);
144
+ if (!range || range.kind !== "cell" && range.kind !== "range") return null;
145
+ return {
146
+ startRow: range.startRow,
147
+ endRow: range.endRow,
148
+ startColumn: range.startColumn,
149
+ endColumn: range.endColumn
150
+ };
151
+ }
152
+ exports.SHEET_MAX_COLUMN = SHEET_MAX_COLUMN;
153
+ exports.SHEET_MAX_ROW = SHEET_MAX_ROW;
154
+ exports.a1AnchorCell = a1AnchorCell;
155
+ exports.a1RangeBounds = a1RangeBounds;
156
+ exports.columnLettersToNumber = columnLettersToNumber;
157
+ exports.columnNumberToLetters = columnNumberToLetters;
158
+ exports.formatA1Cell = formatA1Cell;
159
+ exports.formatA1Range = formatA1Range;
160
+ exports.parseA1Range = parseA1Range;
161
+ exports.splitSheetPrefix = splitSheetPrefix;
162
+ //# sourceMappingURL=a1.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a1.cjs","sources":["../../src/sheet-range/a1.ts"],"sourcesContent":["/**\n * A1 references, read and written the way every spreadsheet surface outside\n * the grid reads them: the SDK's sheet tool cards, and Olympus's sheet tool\n * cards, citation previews and citation navigation. Pure: no React, no engine.\n *\n * Rows and columns are 1-based, as the sheets engine counts them: `A1` is row\n * 1, column 1.\n */\n\n/** The last row a sheet addresses (Excel and the sheets engine). */\nexport const SHEET_MAX_ROW = 1_048_576;\n/** The last column a sheet addresses: XFD. */\nexport const SHEET_MAX_COLUMN = 16_384;\n\n/** A rectangle of cells, 1-based and inclusive on both ends. */\nexport interface SheetRangeBounds {\n startRow: number;\n endRow: number;\n startColumn: number;\n endColumn: number;\n}\n\ninterface SheetQualifier {\n /** The sheet a `Sales!` or `'Q1 Plan'!` prefix names (quotes removed, `''` read as `'`); null without one. */\n sheetName: string | null;\n}\n\n/**\n * A parsed A1 reference. A cell or a rectangle carries all four bounds\n * (normalized so start ≤ end, as `C5:A1` means `A1:C5`); whole columns (`A:C`)\n * leave the rows open and whole rows (`3:5`) the columns.\n */\nexport type A1Range =\n | (SheetQualifier & SheetRangeBounds & { kind: 'cell' | 'range' })\n | (SheetQualifier & {\n kind: 'columns';\n startRow: null;\n endRow: null;\n startColumn: number;\n endColumn: number;\n })\n | (SheetQualifier & {\n kind: 'rows';\n startRow: number;\n endRow: number;\n startColumn: null;\n endColumn: null;\n });\n\n/** A cell (`B7`, `$B$7`); the column is 1–3 letters, the row 1–7 digits. */\nconst CELL_REFERENCE = /^\\$?([A-Za-z]{1,3})\\$?(\\d{1,7})$/;\n/** One side of whole columns (`A`, `$A`). */\nconst COLUMN_REFERENCE = /^\\$?([A-Za-z]{1,3})$/;\n/** One side of whole rows (`3`, `$3`). */\nconst ROW_REFERENCE = /^\\$?(\\d{1,7})$/;\n\n/** Column letters to the 1-based column (`A` → 1, `AA` → 27); null past XFD or for anything but letters. */\nexport function columnLettersToNumber(letters: string): number | null {\n if (!/^[A-Za-z]{1,3}$/.test(letters)) return null;\n let column = 0;\n for (const letter of letters.toUpperCase()) column = column * 26 + (letter.charCodeAt(0) - 64);\n return column <= SHEET_MAX_COLUMN ? column : null;\n}\n\n/** A 1-based column to its letters (1 → `A`, 27 → `AA`); empty for anything below 1 or fractional. */\nexport function columnNumberToLetters(column: number): string {\n if (!Number.isInteger(column) || column < 1) return '';\n let letters = '';\n for (let rest = column; rest > 0; rest = Math.floor((rest - 1) / 26)) {\n letters = String.fromCharCode(65 + ((rest - 1) % 26)) + letters;\n }\n return letters;\n}\n\n/** A cell's A1 address: `{ row: 7, column: 2 }` → `B7`. */\nexport function formatA1Cell({ row, column }: { row: number; column: number }): string {\n return `${columnNumberToLetters(column)}${row}`;\n}\n\n/** A rectangle's A1 address: `A1:C5`, or `A1` alone when it is one cell. */\nexport function formatA1Range({ startRow, endRow, startColumn, endColumn }: SheetRangeBounds): string {\n const start = formatA1Cell({ row: startRow, column: startColumn });\n if (startRow === endRow && startColumn === endColumn) return start;\n return `${start}:${formatA1Cell({ row: endRow, column: endColumn })}`;\n}\n\n/**\n * Split the sheet prefix off a reference: `'Q1 Plan'!A1:B2` → `Q1 Plan` and\n * `A1:B2`, `Sales!B7` → `Sales` and `B7`, `B7` → no sheet and `B7`. A quoted\n * name runs to the first quote that is not doubled (`'Bob''s'!A1` names\n * `Bob's`); an unquoted one runs to the first `!` and holds no quote. Null for\n * a prefix that is not one (an empty name, an unclosed quote, a quote without\n * its `!`).\n */\nexport function splitSheetPrefix(reference: string): { sheetName: string | null; address: string } | null {\n if (reference.startsWith(\"'\")) {\n let name = '';\n let index = 1;\n while (index < reference.length) {\n const char = reference[index];\n if (char === \"'\") {\n if (reference[index + 1] !== \"'\") break;\n name += \"'\";\n index += 2;\n continue;\n }\n name += char;\n index += 1;\n }\n if (name === '' || reference[index] !== \"'\" || reference[index + 1] !== '!') return null;\n return { sheetName: name, address: reference.slice(index + 2) };\n }\n const bang = reference.indexOf('!');\n if (bang === -1) return { sheetName: null, address: reference };\n const name = reference.slice(0, bang);\n if (name === '' || name.includes(\"'\")) return null;\n return { sheetName: name, address: reference.slice(bang + 1) };\n}\n\nfunction parseRow(digits: string): number | null {\n const row = Number(digits);\n return Number.isInteger(row) && row >= 1 && row <= SHEET_MAX_ROW ? row : null;\n}\n\nfunction parseCell(part: string): { row: number; column: number } | null {\n const match = CELL_REFERENCE.exec(part);\n if (!match) return null;\n const column = columnLettersToNumber(match[1]);\n const row = parseRow(match[2]);\n return column === null || row === null ? null : { row, column };\n}\n\nfunction parseColumn(part: string): number | null {\n const match = COLUMN_REFERENCE.exec(part);\n return match ? columnLettersToNumber(match[1]) : null;\n}\n\nfunction parseWholeRow(part: string): number | null {\n const match = ROW_REFERENCE.exec(part);\n return match ? parseRow(match[1]) : null;\n}\n\n/**\n * Read an A1 reference: a cell (`B7`), a rectangle (`A1:C5`), whole columns\n * (`A:C`) or whole rows (`3:5`), with an optional sheet prefix (`Sales!`,\n * `'Q1 Plan'!`), `$` absolute markers and any letter case. Whitespace around\n * the reference and around its `:` is ignored. Null for anything else: a named\n * range, a column past XFD, row 0 or a row past 1,048,576, a lone column or\n * row, mixed sides (`A1:C`), three parts.\n */\nexport function parseA1Range(reference: string | null | undefined): A1Range | null {\n if (typeof reference !== 'string') return null;\n const qualified = splitSheetPrefix(reference.trim());\n if (!qualified) return null;\n const { sheetName } = qualified;\n const parts = qualified.address.split(':').map((part) => part.trim());\n if (parts.length > 2 || parts.some((part) => part === '')) return null;\n\n if (parts.length === 1) {\n const cell = parseCell(parts[0]);\n if (!cell) return null;\n return {\n kind: 'cell',\n sheetName,\n startRow: cell.row,\n endRow: cell.row,\n startColumn: cell.column,\n endColumn: cell.column,\n };\n }\n\n const [first, second] = parts;\n const startCell = parseCell(first);\n const endCell = parseCell(second);\n if (startCell && endCell) {\n return {\n kind: 'range',\n sheetName,\n startRow: Math.min(startCell.row, endCell.row),\n endRow: Math.max(startCell.row, endCell.row),\n startColumn: Math.min(startCell.column, endCell.column),\n endColumn: Math.max(startCell.column, endCell.column),\n };\n }\n const startColumn = parseColumn(first);\n const endColumn = parseColumn(second);\n if (startColumn !== null && endColumn !== null) {\n return {\n kind: 'columns',\n sheetName,\n startRow: null,\n endRow: null,\n startColumn: Math.min(startColumn, endColumn),\n endColumn: Math.max(startColumn, endColumn),\n };\n }\n const startRow = parseWholeRow(first);\n const endRow = parseWholeRow(second);\n if (startRow !== null && endRow !== null) {\n return {\n kind: 'rows',\n sheetName,\n startRow: Math.min(startRow, endRow),\n endRow: Math.max(startRow, endRow),\n startColumn: null,\n endColumn: null,\n };\n }\n return null;\n}\n\n/**\n * The cell a reference starts from as written, its first part: `D6` for\n * `D6:C5`, row 1 of column C for `C:A`, column A of row 5 for `5:3`. A write\n * anchored at a range starts there; the backend does not reorder a range\n * written backwards. Null for anything `parseA1Range` cannot read.\n */\nexport function a1AnchorCell(reference: string | null | undefined): { row: number; column: number } | null {\n if (typeof reference !== 'string' || !parseA1Range(reference)) return null;\n const qualified = splitSheetPrefix(reference.trim());\n const first = qualified?.address.split(':')[0].trim() ?? '';\n const cell = parseCell(first);\n if (cell) return cell;\n const column = parseColumn(first);\n if (column !== null) return { row: 1, column };\n const row = parseWholeRow(first);\n return row === null ? null : { row, column: 1 };\n}\n\n/**\n * The rectangle a cell or rectangle reference covers. Null for whole columns\n * or rows, whose extent is open, and for anything `parseA1Range` cannot read.\n */\nexport function a1RangeBounds(reference: string | null | undefined): SheetRangeBounds | null {\n const range = parseA1Range(reference);\n if (!range || (range.kind !== 'cell' && range.kind !== 'range')) return null;\n return {\n startRow: range.startRow,\n endRow: range.endRow,\n startColumn: range.startColumn,\n endColumn: range.endColumn,\n };\n}\n"],"names":["name"],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * A1 references, read and written the way every spreadsheet surface outside
3
+ * the grid reads them: the SDK's sheet tool cards, and Olympus's sheet tool
4
+ * cards, citation previews and citation navigation. Pure: no React, no engine.
5
+ *
6
+ * Rows and columns are 1-based, as the sheets engine counts them: `A1` is row
7
+ * 1, column 1.
8
+ */
9
+ /** The last row a sheet addresses (Excel and the sheets engine). */
10
+ export declare const SHEET_MAX_ROW = 1048576;
11
+ /** The last column a sheet addresses: XFD. */
12
+ export declare const SHEET_MAX_COLUMN = 16384;
13
+ /** A rectangle of cells, 1-based and inclusive on both ends. */
14
+ export interface SheetRangeBounds {
15
+ startRow: number;
16
+ endRow: number;
17
+ startColumn: number;
18
+ endColumn: number;
19
+ }
20
+ interface SheetQualifier {
21
+ /** The sheet a `Sales!` or `'Q1 Plan'!` prefix names (quotes removed, `''` read as `'`); null without one. */
22
+ sheetName: string | null;
23
+ }
24
+ /**
25
+ * A parsed A1 reference. A cell or a rectangle carries all four bounds
26
+ * (normalized so start ≤ end, as `C5:A1` means `A1:C5`); whole columns (`A:C`)
27
+ * leave the rows open and whole rows (`3:5`) the columns.
28
+ */
29
+ export type A1Range = (SheetQualifier & SheetRangeBounds & {
30
+ kind: 'cell' | 'range';
31
+ }) | (SheetQualifier & {
32
+ kind: 'columns';
33
+ startRow: null;
34
+ endRow: null;
35
+ startColumn: number;
36
+ endColumn: number;
37
+ }) | (SheetQualifier & {
38
+ kind: 'rows';
39
+ startRow: number;
40
+ endRow: number;
41
+ startColumn: null;
42
+ endColumn: null;
43
+ });
44
+ /** Column letters to the 1-based column (`A` → 1, `AA` → 27); null past XFD or for anything but letters. */
45
+ export declare function columnLettersToNumber(letters: string): number | null;
46
+ /** A 1-based column to its letters (1 → `A`, 27 → `AA`); empty for anything below 1 or fractional. */
47
+ export declare function columnNumberToLetters(column: number): string;
48
+ /** A cell's A1 address: `{ row: 7, column: 2 }` → `B7`. */
49
+ export declare function formatA1Cell({ row, column }: {
50
+ row: number;
51
+ column: number;
52
+ }): string;
53
+ /** A rectangle's A1 address: `A1:C5`, or `A1` alone when it is one cell. */
54
+ export declare function formatA1Range({ startRow, endRow, startColumn, endColumn }: SheetRangeBounds): string;
55
+ /**
56
+ * Split the sheet prefix off a reference: `'Q1 Plan'!A1:B2` → `Q1 Plan` and
57
+ * `A1:B2`, `Sales!B7` → `Sales` and `B7`, `B7` → no sheet and `B7`. A quoted
58
+ * name runs to the first quote that is not doubled (`'Bob''s'!A1` names
59
+ * `Bob's`); an unquoted one runs to the first `!` and holds no quote. Null for
60
+ * a prefix that is not one (an empty name, an unclosed quote, a quote without
61
+ * its `!`).
62
+ */
63
+ export declare function splitSheetPrefix(reference: string): {
64
+ sheetName: string | null;
65
+ address: string;
66
+ } | null;
67
+ /**
68
+ * Read an A1 reference: a cell (`B7`), a rectangle (`A1:C5`), whole columns
69
+ * (`A:C`) or whole rows (`3:5`), with an optional sheet prefix (`Sales!`,
70
+ * `'Q1 Plan'!`), `$` absolute markers and any letter case. Whitespace around
71
+ * the reference and around its `:` is ignored. Null for anything else: a named
72
+ * range, a column past XFD, row 0 or a row past 1,048,576, a lone column or
73
+ * row, mixed sides (`A1:C`), three parts.
74
+ */
75
+ export declare function parseA1Range(reference: string | null | undefined): A1Range | null;
76
+ /**
77
+ * The cell a reference starts from as written, its first part: `D6` for
78
+ * `D6:C5`, row 1 of column C for `C:A`, column A of row 5 for `5:3`. A write
79
+ * anchored at a range starts there; the backend does not reorder a range
80
+ * written backwards. Null for anything `parseA1Range` cannot read.
81
+ */
82
+ export declare function a1AnchorCell(reference: string | null | undefined): {
83
+ row: number;
84
+ column: number;
85
+ } | null;
86
+ /**
87
+ * The rectangle a cell or rectangle reference covers. Null for whole columns
88
+ * or rows, whose extent is open, and for anything `parseA1Range` cannot read.
89
+ */
90
+ export declare function a1RangeBounds(reference: string | null | undefined): SheetRangeBounds | null;
91
+ export {};
@@ -0,0 +1,162 @@
1
+ const SHEET_MAX_ROW = 1048576;
2
+ const SHEET_MAX_COLUMN = 16384;
3
+ const CELL_REFERENCE = /^\$?([A-Za-z]{1,3})\$?(\d{1,7})$/;
4
+ const COLUMN_REFERENCE = /^\$?([A-Za-z]{1,3})$/;
5
+ const ROW_REFERENCE = /^\$?(\d{1,7})$/;
6
+ function columnLettersToNumber(letters) {
7
+ if (!/^[A-Za-z]{1,3}$/.test(letters)) return null;
8
+ let column = 0;
9
+ for (const letter of letters.toUpperCase()) column = column * 26 + (letter.charCodeAt(0) - 64);
10
+ return column <= SHEET_MAX_COLUMN ? column : null;
11
+ }
12
+ function columnNumberToLetters(column) {
13
+ if (!Number.isInteger(column) || column < 1) return "";
14
+ let letters = "";
15
+ for (let rest = column; rest > 0; rest = Math.floor((rest - 1) / 26)) {
16
+ letters = String.fromCharCode(65 + (rest - 1) % 26) + letters;
17
+ }
18
+ return letters;
19
+ }
20
+ function formatA1Cell({ row, column }) {
21
+ return `${columnNumberToLetters(column)}${row}`;
22
+ }
23
+ function formatA1Range({ startRow, endRow, startColumn, endColumn }) {
24
+ const start = formatA1Cell({ row: startRow, column: startColumn });
25
+ if (startRow === endRow && startColumn === endColumn) return start;
26
+ return `${start}:${formatA1Cell({ row: endRow, column: endColumn })}`;
27
+ }
28
+ function splitSheetPrefix(reference) {
29
+ if (reference.startsWith("'")) {
30
+ let name2 = "";
31
+ let index = 1;
32
+ while (index < reference.length) {
33
+ const char = reference[index];
34
+ if (char === "'") {
35
+ if (reference[index + 1] !== "'") break;
36
+ name2 += "'";
37
+ index += 2;
38
+ continue;
39
+ }
40
+ name2 += char;
41
+ index += 1;
42
+ }
43
+ if (name2 === "" || reference[index] !== "'" || reference[index + 1] !== "!") return null;
44
+ return { sheetName: name2, address: reference.slice(index + 2) };
45
+ }
46
+ const bang = reference.indexOf("!");
47
+ if (bang === -1) return { sheetName: null, address: reference };
48
+ const name = reference.slice(0, bang);
49
+ if (name === "" || name.includes("'")) return null;
50
+ return { sheetName: name, address: reference.slice(bang + 1) };
51
+ }
52
+ function parseRow(digits) {
53
+ const row = Number(digits);
54
+ return Number.isInteger(row) && row >= 1 && row <= SHEET_MAX_ROW ? row : null;
55
+ }
56
+ function parseCell(part) {
57
+ const match = CELL_REFERENCE.exec(part);
58
+ if (!match) return null;
59
+ const column = columnLettersToNumber(match[1]);
60
+ const row = parseRow(match[2]);
61
+ return column === null || row === null ? null : { row, column };
62
+ }
63
+ function parseColumn(part) {
64
+ const match = COLUMN_REFERENCE.exec(part);
65
+ return match ? columnLettersToNumber(match[1]) : null;
66
+ }
67
+ function parseWholeRow(part) {
68
+ const match = ROW_REFERENCE.exec(part);
69
+ return match ? parseRow(match[1]) : null;
70
+ }
71
+ function parseA1Range(reference) {
72
+ if (typeof reference !== "string") return null;
73
+ const qualified = splitSheetPrefix(reference.trim());
74
+ if (!qualified) return null;
75
+ const { sheetName } = qualified;
76
+ const parts = qualified.address.split(":").map((part) => part.trim());
77
+ if (parts.length > 2 || parts.some((part) => part === "")) return null;
78
+ if (parts.length === 1) {
79
+ const cell = parseCell(parts[0]);
80
+ if (!cell) return null;
81
+ return {
82
+ kind: "cell",
83
+ sheetName,
84
+ startRow: cell.row,
85
+ endRow: cell.row,
86
+ startColumn: cell.column,
87
+ endColumn: cell.column
88
+ };
89
+ }
90
+ const [first, second] = parts;
91
+ const startCell = parseCell(first);
92
+ const endCell = parseCell(second);
93
+ if (startCell && endCell) {
94
+ return {
95
+ kind: "range",
96
+ sheetName,
97
+ startRow: Math.min(startCell.row, endCell.row),
98
+ endRow: Math.max(startCell.row, endCell.row),
99
+ startColumn: Math.min(startCell.column, endCell.column),
100
+ endColumn: Math.max(startCell.column, endCell.column)
101
+ };
102
+ }
103
+ const startColumn = parseColumn(first);
104
+ const endColumn = parseColumn(second);
105
+ if (startColumn !== null && endColumn !== null) {
106
+ return {
107
+ kind: "columns",
108
+ sheetName,
109
+ startRow: null,
110
+ endRow: null,
111
+ startColumn: Math.min(startColumn, endColumn),
112
+ endColumn: Math.max(startColumn, endColumn)
113
+ };
114
+ }
115
+ const startRow = parseWholeRow(first);
116
+ const endRow = parseWholeRow(second);
117
+ if (startRow !== null && endRow !== null) {
118
+ return {
119
+ kind: "rows",
120
+ sheetName,
121
+ startRow: Math.min(startRow, endRow),
122
+ endRow: Math.max(startRow, endRow),
123
+ startColumn: null,
124
+ endColumn: null
125
+ };
126
+ }
127
+ return null;
128
+ }
129
+ function a1AnchorCell(reference) {
130
+ if (typeof reference !== "string" || !parseA1Range(reference)) return null;
131
+ const qualified = splitSheetPrefix(reference.trim());
132
+ const first = (qualified == null ? void 0 : qualified.address.split(":")[0].trim()) ?? "";
133
+ const cell = parseCell(first);
134
+ if (cell) return cell;
135
+ const column = parseColumn(first);
136
+ if (column !== null) return { row: 1, column };
137
+ const row = parseWholeRow(first);
138
+ return row === null ? null : { row, column: 1 };
139
+ }
140
+ function a1RangeBounds(reference) {
141
+ const range = parseA1Range(reference);
142
+ if (!range || range.kind !== "cell" && range.kind !== "range") return null;
143
+ return {
144
+ startRow: range.startRow,
145
+ endRow: range.endRow,
146
+ startColumn: range.startColumn,
147
+ endColumn: range.endColumn
148
+ };
149
+ }
150
+ export {
151
+ SHEET_MAX_COLUMN,
152
+ SHEET_MAX_ROW,
153
+ a1AnchorCell,
154
+ a1RangeBounds,
155
+ columnLettersToNumber,
156
+ columnNumberToLetters,
157
+ formatA1Cell,
158
+ formatA1Range,
159
+ parseA1Range,
160
+ splitSheetPrefix
161
+ };
162
+ //# sourceMappingURL=a1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a1.js","sources":["../../src/sheet-range/a1.ts"],"sourcesContent":["/**\n * A1 references, read and written the way every spreadsheet surface outside\n * the grid reads them: the SDK's sheet tool cards, and Olympus's sheet tool\n * cards, citation previews and citation navigation. Pure: no React, no engine.\n *\n * Rows and columns are 1-based, as the sheets engine counts them: `A1` is row\n * 1, column 1.\n */\n\n/** The last row a sheet addresses (Excel and the sheets engine). */\nexport const SHEET_MAX_ROW = 1_048_576;\n/** The last column a sheet addresses: XFD. */\nexport const SHEET_MAX_COLUMN = 16_384;\n\n/** A rectangle of cells, 1-based and inclusive on both ends. */\nexport interface SheetRangeBounds {\n startRow: number;\n endRow: number;\n startColumn: number;\n endColumn: number;\n}\n\ninterface SheetQualifier {\n /** The sheet a `Sales!` or `'Q1 Plan'!` prefix names (quotes removed, `''` read as `'`); null without one. */\n sheetName: string | null;\n}\n\n/**\n * A parsed A1 reference. A cell or a rectangle carries all four bounds\n * (normalized so start ≤ end, as `C5:A1` means `A1:C5`); whole columns (`A:C`)\n * leave the rows open and whole rows (`3:5`) the columns.\n */\nexport type A1Range =\n | (SheetQualifier & SheetRangeBounds & { kind: 'cell' | 'range' })\n | (SheetQualifier & {\n kind: 'columns';\n startRow: null;\n endRow: null;\n startColumn: number;\n endColumn: number;\n })\n | (SheetQualifier & {\n kind: 'rows';\n startRow: number;\n endRow: number;\n startColumn: null;\n endColumn: null;\n });\n\n/** A cell (`B7`, `$B$7`); the column is 1–3 letters, the row 1–7 digits. */\nconst CELL_REFERENCE = /^\\$?([A-Za-z]{1,3})\\$?(\\d{1,7})$/;\n/** One side of whole columns (`A`, `$A`). */\nconst COLUMN_REFERENCE = /^\\$?([A-Za-z]{1,3})$/;\n/** One side of whole rows (`3`, `$3`). */\nconst ROW_REFERENCE = /^\\$?(\\d{1,7})$/;\n\n/** Column letters to the 1-based column (`A` → 1, `AA` → 27); null past XFD or for anything but letters. */\nexport function columnLettersToNumber(letters: string): number | null {\n if (!/^[A-Za-z]{1,3}$/.test(letters)) return null;\n let column = 0;\n for (const letter of letters.toUpperCase()) column = column * 26 + (letter.charCodeAt(0) - 64);\n return column <= SHEET_MAX_COLUMN ? column : null;\n}\n\n/** A 1-based column to its letters (1 → `A`, 27 → `AA`); empty for anything below 1 or fractional. */\nexport function columnNumberToLetters(column: number): string {\n if (!Number.isInteger(column) || column < 1) return '';\n let letters = '';\n for (let rest = column; rest > 0; rest = Math.floor((rest - 1) / 26)) {\n letters = String.fromCharCode(65 + ((rest - 1) % 26)) + letters;\n }\n return letters;\n}\n\n/** A cell's A1 address: `{ row: 7, column: 2 }` → `B7`. */\nexport function formatA1Cell({ row, column }: { row: number; column: number }): string {\n return `${columnNumberToLetters(column)}${row}`;\n}\n\n/** A rectangle's A1 address: `A1:C5`, or `A1` alone when it is one cell. */\nexport function formatA1Range({ startRow, endRow, startColumn, endColumn }: SheetRangeBounds): string {\n const start = formatA1Cell({ row: startRow, column: startColumn });\n if (startRow === endRow && startColumn === endColumn) return start;\n return `${start}:${formatA1Cell({ row: endRow, column: endColumn })}`;\n}\n\n/**\n * Split the sheet prefix off a reference: `'Q1 Plan'!A1:B2` → `Q1 Plan` and\n * `A1:B2`, `Sales!B7` → `Sales` and `B7`, `B7` → no sheet and `B7`. A quoted\n * name runs to the first quote that is not doubled (`'Bob''s'!A1` names\n * `Bob's`); an unquoted one runs to the first `!` and holds no quote. Null for\n * a prefix that is not one (an empty name, an unclosed quote, a quote without\n * its `!`).\n */\nexport function splitSheetPrefix(reference: string): { sheetName: string | null; address: string } | null {\n if (reference.startsWith(\"'\")) {\n let name = '';\n let index = 1;\n while (index < reference.length) {\n const char = reference[index];\n if (char === \"'\") {\n if (reference[index + 1] !== \"'\") break;\n name += \"'\";\n index += 2;\n continue;\n }\n name += char;\n index += 1;\n }\n if (name === '' || reference[index] !== \"'\" || reference[index + 1] !== '!') return null;\n return { sheetName: name, address: reference.slice(index + 2) };\n }\n const bang = reference.indexOf('!');\n if (bang === -1) return { sheetName: null, address: reference };\n const name = reference.slice(0, bang);\n if (name === '' || name.includes(\"'\")) return null;\n return { sheetName: name, address: reference.slice(bang + 1) };\n}\n\nfunction parseRow(digits: string): number | null {\n const row = Number(digits);\n return Number.isInteger(row) && row >= 1 && row <= SHEET_MAX_ROW ? row : null;\n}\n\nfunction parseCell(part: string): { row: number; column: number } | null {\n const match = CELL_REFERENCE.exec(part);\n if (!match) return null;\n const column = columnLettersToNumber(match[1]);\n const row = parseRow(match[2]);\n return column === null || row === null ? null : { row, column };\n}\n\nfunction parseColumn(part: string): number | null {\n const match = COLUMN_REFERENCE.exec(part);\n return match ? columnLettersToNumber(match[1]) : null;\n}\n\nfunction parseWholeRow(part: string): number | null {\n const match = ROW_REFERENCE.exec(part);\n return match ? parseRow(match[1]) : null;\n}\n\n/**\n * Read an A1 reference: a cell (`B7`), a rectangle (`A1:C5`), whole columns\n * (`A:C`) or whole rows (`3:5`), with an optional sheet prefix (`Sales!`,\n * `'Q1 Plan'!`), `$` absolute markers and any letter case. Whitespace around\n * the reference and around its `:` is ignored. Null for anything else: a named\n * range, a column past XFD, row 0 or a row past 1,048,576, a lone column or\n * row, mixed sides (`A1:C`), three parts.\n */\nexport function parseA1Range(reference: string | null | undefined): A1Range | null {\n if (typeof reference !== 'string') return null;\n const qualified = splitSheetPrefix(reference.trim());\n if (!qualified) return null;\n const { sheetName } = qualified;\n const parts = qualified.address.split(':').map((part) => part.trim());\n if (parts.length > 2 || parts.some((part) => part === '')) return null;\n\n if (parts.length === 1) {\n const cell = parseCell(parts[0]);\n if (!cell) return null;\n return {\n kind: 'cell',\n sheetName,\n startRow: cell.row,\n endRow: cell.row,\n startColumn: cell.column,\n endColumn: cell.column,\n };\n }\n\n const [first, second] = parts;\n const startCell = parseCell(first);\n const endCell = parseCell(second);\n if (startCell && endCell) {\n return {\n kind: 'range',\n sheetName,\n startRow: Math.min(startCell.row, endCell.row),\n endRow: Math.max(startCell.row, endCell.row),\n startColumn: Math.min(startCell.column, endCell.column),\n endColumn: Math.max(startCell.column, endCell.column),\n };\n }\n const startColumn = parseColumn(first);\n const endColumn = parseColumn(second);\n if (startColumn !== null && endColumn !== null) {\n return {\n kind: 'columns',\n sheetName,\n startRow: null,\n endRow: null,\n startColumn: Math.min(startColumn, endColumn),\n endColumn: Math.max(startColumn, endColumn),\n };\n }\n const startRow = parseWholeRow(first);\n const endRow = parseWholeRow(second);\n if (startRow !== null && endRow !== null) {\n return {\n kind: 'rows',\n sheetName,\n startRow: Math.min(startRow, endRow),\n endRow: Math.max(startRow, endRow),\n startColumn: null,\n endColumn: null,\n };\n }\n return null;\n}\n\n/**\n * The cell a reference starts from as written, its first part: `D6` for\n * `D6:C5`, row 1 of column C for `C:A`, column A of row 5 for `5:3`. A write\n * anchored at a range starts there; the backend does not reorder a range\n * written backwards. Null for anything `parseA1Range` cannot read.\n */\nexport function a1AnchorCell(reference: string | null | undefined): { row: number; column: number } | null {\n if (typeof reference !== 'string' || !parseA1Range(reference)) return null;\n const qualified = splitSheetPrefix(reference.trim());\n const first = qualified?.address.split(':')[0].trim() ?? '';\n const cell = parseCell(first);\n if (cell) return cell;\n const column = parseColumn(first);\n if (column !== null) return { row: 1, column };\n const row = parseWholeRow(first);\n return row === null ? null : { row, column: 1 };\n}\n\n/**\n * The rectangle a cell or rectangle reference covers. Null for whole columns\n * or rows, whose extent is open, and for anything `parseA1Range` cannot read.\n */\nexport function a1RangeBounds(reference: string | null | undefined): SheetRangeBounds | null {\n const range = parseA1Range(reference);\n if (!range || (range.kind !== 'cell' && range.kind !== 'range')) return null;\n return {\n startRow: range.startRow,\n endRow: range.endRow,\n startColumn: range.startColumn,\n endColumn: range.endColumn,\n };\n}\n"],"names":["name"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const a1 = require("./a1.cjs");
4
+ const rangePreview = require("./range-preview.cjs");
5
+ const rangePreviewTable = require("./range-preview-table.cjs");
6
+ exports.SHEET_MAX_COLUMN = a1.SHEET_MAX_COLUMN;
7
+ exports.SHEET_MAX_ROW = a1.SHEET_MAX_ROW;
8
+ exports.a1AnchorCell = a1.a1AnchorCell;
9
+ exports.a1RangeBounds = a1.a1RangeBounds;
10
+ exports.columnLettersToNumber = a1.columnLettersToNumber;
11
+ exports.columnNumberToLetters = a1.columnNumberToLetters;
12
+ exports.formatA1Cell = a1.formatA1Cell;
13
+ exports.formatA1Range = a1.formatA1Range;
14
+ exports.parseA1Range = a1.parseA1Range;
15
+ exports.splitSheetPrefix = a1.splitSheetPrefix;
16
+ exports.RANGE_PREVIEW_MAX_COLUMNS = rangePreview.RANGE_PREVIEW_MAX_COLUMNS;
17
+ exports.RANGE_PREVIEW_MAX_ROWS = rangePreview.RANGE_PREVIEW_MAX_ROWS;
18
+ exports.rangePreviewFromCellMap = rangePreview.rangePreviewFromCellMap;
19
+ exports.rangePreviewFromRows = rangePreview.rangePreviewFromRows;
20
+ exports.rangePreviewToTableData = rangePreview.rangePreviewToTableData;
21
+ exports.RangePreviewTable = rangePreviewTable.RangePreviewTable;
22
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Spreadsheet ranges outside the grid: reading and writing A1 references, and
3
+ * drawing a read-only preview of a range's values. The SDK's sheet tool cards
4
+ * draw it, and so do Olympus's sheet tool cards and citation previews. Pure
5
+ * apart from the one table component, and free of the chat runtime, so a
6
+ * host's shell can import it without loading the chat.
7
+ *
8
+ * Published as the `@athenaintel/react/sheet-range` sub-path.
9
+ */
10
+ export { type A1Range, a1AnchorCell, a1RangeBounds, columnLettersToNumber, columnNumberToLetters, formatA1Cell, formatA1Range, parseA1Range, SHEET_MAX_COLUMN, SHEET_MAX_ROW, type SheetRangeBounds, splitSheetPrefix, } from './a1';
11
+ export { RANGE_PREVIEW_MAX_COLUMNS, RANGE_PREVIEW_MAX_ROWS, type RangePreview, type RangePreviewLimits, type RangePreviewRow, rangePreviewFromCellMap, rangePreviewFromRows, rangePreviewToTableData, } from './range-preview';
12
+ export { RangePreviewTable, type RangePreviewTableProps } from './range-preview-table';
@@ -0,0 +1,22 @@
1
+ import { SHEET_MAX_COLUMN, SHEET_MAX_ROW, a1AnchorCell, a1RangeBounds, columnLettersToNumber, columnNumberToLetters, formatA1Cell, formatA1Range, parseA1Range, splitSheetPrefix } from "./a1.js";
2
+ import { RANGE_PREVIEW_MAX_COLUMNS, RANGE_PREVIEW_MAX_ROWS, rangePreviewFromCellMap, rangePreviewFromRows, rangePreviewToTableData } from "./range-preview.js";
3
+ import { RangePreviewTable } from "./range-preview-table.js";
4
+ export {
5
+ RANGE_PREVIEW_MAX_COLUMNS,
6
+ RANGE_PREVIEW_MAX_ROWS,
7
+ RangePreviewTable,
8
+ SHEET_MAX_COLUMN,
9
+ SHEET_MAX_ROW,
10
+ a1AnchorCell,
11
+ a1RangeBounds,
12
+ columnLettersToNumber,
13
+ columnNumberToLetters,
14
+ formatA1Cell,
15
+ formatA1Range,
16
+ parseA1Range,
17
+ rangePreviewFromCellMap,
18
+ rangePreviewFromRows,
19
+ rangePreviewToTableData,
20
+ splitSheetPrefix
21
+ };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}