@stigmer/react 0.3.3 → 0.4.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 (442) hide show
  1. package/billing/AutoRechargeCard.d.ts +38 -0
  2. package/billing/AutoRechargeCard.d.ts.map +1 -0
  3. package/billing/AutoRechargeCard.js +90 -0
  4. package/billing/AutoRechargeCard.js.map +1 -0
  5. package/billing/BillingSection.d.ts +32 -0
  6. package/billing/BillingSection.d.ts.map +1 -0
  7. package/billing/BillingSection.js +81 -0
  8. package/billing/BillingSection.js.map +1 -0
  9. package/billing/CreditBalanceCard.d.ts +25 -0
  10. package/billing/CreditBalanceCard.d.ts.map +1 -0
  11. package/billing/CreditBalanceCard.js +28 -0
  12. package/billing/CreditBalanceCard.js.map +1 -0
  13. package/billing/CreditLedgerTable.d.ts +22 -0
  14. package/billing/CreditLedgerTable.d.ts.map +1 -0
  15. package/billing/CreditLedgerTable.js +75 -0
  16. package/billing/CreditLedgerTable.js.map +1 -0
  17. package/billing/CreditPackGrid.d.ts +31 -0
  18. package/billing/CreditPackGrid.d.ts.map +1 -0
  19. package/billing/CreditPackGrid.js +35 -0
  20. package/billing/CreditPackGrid.js.map +1 -0
  21. package/billing/LowBalanceBanner.d.ts +26 -0
  22. package/billing/LowBalanceBanner.d.ts.map +1 -0
  23. package/billing/LowBalanceBanner.js +33 -0
  24. package/billing/LowBalanceBanner.js.map +1 -0
  25. package/billing/PaymentMethodCard.d.ts +35 -0
  26. package/billing/PaymentMethodCard.d.ts.map +1 -0
  27. package/billing/PaymentMethodCard.js +48 -0
  28. package/billing/PaymentMethodCard.js.map +1 -0
  29. package/billing/credit-packs.d.ts +25 -0
  30. package/billing/credit-packs.d.ts.map +1 -0
  31. package/billing/credit-packs.js +39 -0
  32. package/billing/credit-packs.js.map +1 -0
  33. package/billing/format.d.ts +39 -0
  34. package/billing/format.d.ts.map +1 -0
  35. package/billing/format.js +90 -0
  36. package/billing/format.js.map +1 -0
  37. package/billing/index.d.ts +32 -0
  38. package/billing/index.d.ts.map +1 -0
  39. package/billing/index.js +21 -0
  40. package/billing/index.js.map +1 -0
  41. package/billing/useBillingAccount.d.ts +40 -0
  42. package/billing/useBillingAccount.d.ts.map +1 -0
  43. package/billing/useBillingAccount.js +35 -0
  44. package/billing/useBillingAccount.js.map +1 -0
  45. package/billing/useBillingUsageReport.d.ts +42 -0
  46. package/billing/useBillingUsageReport.d.ts.map +1 -0
  47. package/billing/useBillingUsageReport.js +43 -0
  48. package/billing/useBillingUsageReport.js.map +1 -0
  49. package/billing/useCreateBillingPortalSession.d.ts +35 -0
  50. package/billing/useCreateBillingPortalSession.d.ts.map +1 -0
  51. package/billing/useCreateBillingPortalSession.js +50 -0
  52. package/billing/useCreateBillingPortalSession.js.map +1 -0
  53. package/billing/useCreateCheckoutSession.d.ts +54 -0
  54. package/billing/useCreateCheckoutSession.d.ts.map +1 -0
  55. package/billing/useCreateCheckoutSession.js +58 -0
  56. package/billing/useCreateCheckoutSession.js.map +1 -0
  57. package/billing/useCreditLedger.d.ts +48 -0
  58. package/billing/useCreditLedger.d.ts.map +1 -0
  59. package/billing/useCreditLedger.js +39 -0
  60. package/billing/useCreditLedger.js.map +1 -0
  61. package/billing/useCustomerModelPricing.d.ts +41 -0
  62. package/billing/useCustomerModelPricing.d.ts.map +1 -0
  63. package/billing/useCustomerModelPricing.js +37 -0
  64. package/billing/useCustomerModelPricing.js.map +1 -0
  65. package/billing/useSetAutoRechargeConfig.d.ts +50 -0
  66. package/billing/useSetAutoRechargeConfig.d.ts.map +1 -0
  67. package/billing/useSetAutoRechargeConfig.js +53 -0
  68. package/billing/useSetAutoRechargeConfig.js.map +1 -0
  69. package/composer/ComposerToolbar.js +1 -1
  70. package/composer/ComposerToolbar.js.map +1 -1
  71. package/composer/SessionComposer.d.ts +1 -1
  72. package/composer/SessionComposer.d.ts.map +1 -1
  73. package/composer/SessionComposer.js +19 -4
  74. package/composer/SessionComposer.js.map +1 -1
  75. package/composer/__tests__/SessionComposer-memo.test.d.ts +2 -0
  76. package/composer/__tests__/SessionComposer-memo.test.d.ts.map +1 -0
  77. package/composer/__tests__/SessionComposer-memo.test.js +23 -0
  78. package/composer/__tests__/SessionComposer-memo.test.js.map +1 -0
  79. package/execution/ApprovalCard.d.ts +5 -1
  80. package/execution/ApprovalCard.d.ts.map +1 -1
  81. package/execution/ApprovalCard.js +7 -3
  82. package/execution/ApprovalCard.js.map +1 -1
  83. package/execution/ExecutionPhaseBadge.d.ts +1 -1
  84. package/execution/ExecutionPhaseBadge.d.ts.map +1 -1
  85. package/execution/ExecutionPhaseBadge.js +3 -2
  86. package/execution/ExecutionPhaseBadge.js.map +1 -1
  87. package/execution/MessageEntry.d.ts +7 -3
  88. package/execution/MessageEntry.d.ts.map +1 -1
  89. package/execution/MessageEntry.js +19 -8
  90. package/execution/MessageEntry.js.map +1 -1
  91. package/execution/MessageThread.d.ts +84 -3
  92. package/execution/MessageThread.d.ts.map +1 -1
  93. package/execution/MessageThread.js +113 -65
  94. package/execution/MessageThread.js.map +1 -1
  95. package/execution/SetupProgress.d.ts +1 -1
  96. package/execution/SetupProgress.d.ts.map +1 -1
  97. package/execution/SetupProgress.js +3 -3
  98. package/execution/SetupProgress.js.map +1 -1
  99. package/execution/SubAgentSection.d.ts +5 -1
  100. package/execution/SubAgentSection.d.ts.map +1 -1
  101. package/execution/SubAgentSection.js +13 -7
  102. package/execution/SubAgentSection.js.map +1 -1
  103. package/execution/ThreadSkeleton.d.ts +22 -0
  104. package/execution/ThreadSkeleton.d.ts.map +1 -0
  105. package/execution/ThreadSkeleton.js +26 -0
  106. package/execution/ThreadSkeleton.js.map +1 -0
  107. package/execution/ToolCallGroup.d.ts +16 -1
  108. package/execution/ToolCallGroup.d.ts.map +1 -1
  109. package/execution/ToolCallGroup.js +31 -3
  110. package/execution/ToolCallGroup.js.map +1 -1
  111. package/execution/UsageWidget.d.ts +1 -1
  112. package/execution/__tests__/message-entry.test.d.ts +2 -0
  113. package/execution/__tests__/message-entry.test.d.ts.map +1 -0
  114. package/execution/__tests__/message-entry.test.js +178 -0
  115. package/execution/__tests__/message-entry.test.js.map +1 -0
  116. package/execution/__tests__/thread-keys.test.d.ts +2 -0
  117. package/execution/__tests__/thread-keys.test.d.ts.map +1 -0
  118. package/execution/__tests__/thread-keys.test.js +289 -0
  119. package/execution/__tests__/thread-keys.test.js.map +1 -0
  120. package/execution/__tests__/thread-memoization.test.d.ts +2 -0
  121. package/execution/__tests__/thread-memoization.test.d.ts.map +1 -0
  122. package/execution/__tests__/thread-memoization.test.js +262 -0
  123. package/execution/__tests__/thread-memoization.test.js.map +1 -0
  124. package/execution/__tests__/thread-skeleton.test.d.ts +2 -0
  125. package/execution/__tests__/thread-skeleton.test.d.ts.map +1 -0
  126. package/execution/__tests__/thread-skeleton.test.js +35 -0
  127. package/execution/__tests__/thread-skeleton.test.js.map +1 -0
  128. package/execution/__tests__/useExecutionStream.test.js +73 -10
  129. package/execution/__tests__/useExecutionStream.test.js.map +1 -1
  130. package/execution/__tests__/useSessionVariables-stability.test.d.ts +2 -0
  131. package/execution/__tests__/useSessionVariables-stability.test.d.ts.map +1 -0
  132. package/execution/__tests__/useSessionVariables-stability.test.js +69 -0
  133. package/execution/__tests__/useSessionVariables-stability.test.js.map +1 -0
  134. package/execution/__tests__/virtualized-thread.test.d.ts +2 -0
  135. package/execution/__tests__/virtualized-thread.test.d.ts.map +1 -0
  136. package/execution/__tests__/virtualized-thread.test.js +274 -0
  137. package/execution/__tests__/virtualized-thread.test.js.map +1 -0
  138. package/execution/index.d.ts +2 -0
  139. package/execution/index.d.ts.map +1 -1
  140. package/execution/index.js +1 -0
  141. package/execution/index.js.map +1 -1
  142. package/execution/useExecutionStream.d.ts +35 -10
  143. package/execution/useExecutionStream.d.ts.map +1 -1
  144. package/execution/useExecutionStream.js +79 -40
  145. package/execution/useExecutionStream.js.map +1 -1
  146. package/execution/useSessionVariables.d.ts.map +1 -1
  147. package/execution/useSessionVariables.js +4 -3
  148. package/execution/useSessionVariables.js.map +1 -1
  149. package/github/useGitHubConnection.d.ts.map +1 -1
  150. package/github/useGitHubConnection.js +5 -4
  151. package/github/useGitHubConnection.js.map +1 -1
  152. package/identity-account/index.d.ts +2 -0
  153. package/identity-account/index.d.ts.map +1 -0
  154. package/identity-account/index.js +2 -0
  155. package/identity-account/index.js.map +1 -0
  156. package/identity-account/useIdentityAccountGate.d.ts +81 -0
  157. package/identity-account/useIdentityAccountGate.d.ts.map +1 -0
  158. package/identity-account/useIdentityAccountGate.js +100 -0
  159. package/identity-account/useIdentityAccountGate.js.map +1 -0
  160. package/index.d.ts +10 -4
  161. package/index.d.ts.map +1 -1
  162. package/index.js +8 -2
  163. package/index.js.map +1 -1
  164. package/internal/FetchCacheProvider.d.ts +44 -0
  165. package/internal/FetchCacheProvider.d.ts.map +1 -0
  166. package/internal/FetchCacheProvider.js +61 -0
  167. package/internal/FetchCacheProvider.js.map +1 -0
  168. package/internal/JumpToLatestButton.d.ts +14 -0
  169. package/internal/JumpToLatestButton.d.ts.map +1 -0
  170. package/internal/JumpToLatestButton.js +19 -0
  171. package/internal/JumpToLatestButton.js.map +1 -0
  172. package/internal/ThreadItemWrapper.d.ts +20 -0
  173. package/internal/ThreadItemWrapper.d.ts.map +1 -0
  174. package/internal/ThreadItemWrapper.js +44 -0
  175. package/internal/ThreadItemWrapper.js.map +1 -0
  176. package/internal/VirtualizedThread.d.ts +25 -0
  177. package/internal/VirtualizedThread.d.ts.map +1 -0
  178. package/internal/VirtualizedThread.js +58 -0
  179. package/internal/VirtualizedThread.js.map +1 -0
  180. package/internal/__tests__/fetch-cache.test.d.ts +2 -0
  181. package/internal/__tests__/fetch-cache.test.d.ts.map +1 -0
  182. package/internal/__tests__/fetch-cache.test.js +182 -0
  183. package/internal/__tests__/fetch-cache.test.js.map +1 -0
  184. package/internal/__tests__/stream-controller.test.d.ts +2 -0
  185. package/internal/__tests__/stream-controller.test.d.ts.map +1 -0
  186. package/internal/__tests__/stream-controller.test.js +294 -0
  187. package/internal/__tests__/stream-controller.test.js.map +1 -0
  188. package/internal/__tests__/thread-animation.test.d.ts +2 -0
  189. package/internal/__tests__/thread-animation.test.d.ts.map +1 -0
  190. package/internal/__tests__/thread-animation.test.js +79 -0
  191. package/internal/__tests__/thread-animation.test.js.map +1 -0
  192. package/internal/__tests__/useAutoScroll.test.d.ts +2 -0
  193. package/internal/__tests__/useAutoScroll.test.d.ts.map +1 -0
  194. package/internal/__tests__/useAutoScroll.test.js +188 -0
  195. package/internal/__tests__/useAutoScroll.test.js.map +1 -0
  196. package/internal/__tests__/useFetch-cache.test.d.ts +2 -0
  197. package/internal/__tests__/useFetch-cache.test.d.ts.map +1 -0
  198. package/internal/__tests__/useFetch-cache.test.js +137 -0
  199. package/internal/__tests__/useFetch-cache.test.js.map +1 -0
  200. package/internal/dev/__tests__/use-key-stability.test.d.ts +2 -0
  201. package/internal/dev/__tests__/use-key-stability.test.d.ts.map +1 -0
  202. package/internal/dev/__tests__/use-key-stability.test.js +72 -0
  203. package/internal/dev/__tests__/use-key-stability.test.js.map +1 -0
  204. package/internal/dev/__tests__/use-render-tracer.test.d.ts +2 -0
  205. package/internal/dev/__tests__/use-render-tracer.test.d.ts.map +1 -0
  206. package/internal/dev/__tests__/use-render-tracer.test.js +55 -0
  207. package/internal/dev/__tests__/use-render-tracer.test.js.map +1 -0
  208. package/internal/dev/dom-counter.d.ts +14 -0
  209. package/internal/dev/dom-counter.d.ts.map +1 -0
  210. package/internal/dev/dom-counter.js +39 -0
  211. package/internal/dev/dom-counter.js.map +1 -0
  212. package/internal/dev/index.d.ts +6 -0
  213. package/internal/dev/index.d.ts.map +1 -0
  214. package/internal/dev/index.js +6 -0
  215. package/internal/dev/index.js.map +1 -0
  216. package/internal/dev/profiler-wrapper.d.ts +16 -0
  217. package/internal/dev/profiler-wrapper.d.ts.map +1 -0
  218. package/internal/dev/profiler-wrapper.js +31 -0
  219. package/internal/dev/profiler-wrapper.js.map +1 -0
  220. package/internal/dev/use-key-stability.d.ts +22 -0
  221. package/internal/dev/use-key-stability.d.ts.map +1 -0
  222. package/internal/dev/use-key-stability.js +67 -0
  223. package/internal/dev/use-key-stability.js.map +1 -0
  224. package/internal/dev/use-render-tracer.d.ts +13 -0
  225. package/internal/dev/use-render-tracer.d.ts.map +1 -0
  226. package/internal/dev/use-render-tracer.js +57 -0
  227. package/internal/dev/use-render-tracer.js.map +1 -0
  228. package/internal/dev/use-stream-rate.d.ts +23 -0
  229. package/internal/dev/use-stream-rate.d.ts.map +1 -0
  230. package/internal/dev/use-stream-rate.js +94 -0
  231. package/internal/dev/use-stream-rate.js.map +1 -0
  232. package/internal/fetch-cache.d.ts +72 -0
  233. package/internal/fetch-cache.d.ts.map +1 -0
  234. package/internal/fetch-cache.js +118 -0
  235. package/internal/fetch-cache.js.map +1 -0
  236. package/internal/store/__tests__/conversation-store.test.d.ts +2 -0
  237. package/internal/store/__tests__/conversation-store.test.d.ts.map +1 -0
  238. package/internal/store/__tests__/conversation-store.test.js +200 -0
  239. package/internal/store/__tests__/conversation-store.test.js.map +1 -0
  240. package/internal/store/__tests__/structural-share.test.d.ts +2 -0
  241. package/internal/store/__tests__/structural-share.test.d.ts.map +1 -0
  242. package/internal/store/__tests__/structural-share.test.js +368 -0
  243. package/internal/store/__tests__/structural-share.test.js.map +1 -0
  244. package/internal/store/conversation-store.d.ts +62 -0
  245. package/internal/store/conversation-store.d.ts.map +1 -0
  246. package/internal/store/conversation-store.js +95 -0
  247. package/internal/store/conversation-store.js.map +1 -0
  248. package/internal/store/index.d.ts +31 -0
  249. package/internal/store/index.d.ts.map +1 -0
  250. package/internal/store/index.js +54 -0
  251. package/internal/store/index.js.map +1 -0
  252. package/internal/store/structural-share.d.ts +13 -0
  253. package/internal/store/structural-share.d.ts.map +1 -0
  254. package/internal/store/structural-share.js +240 -0
  255. package/internal/store/structural-share.js.map +1 -0
  256. package/internal/stream-controller.d.ts +85 -0
  257. package/internal/stream-controller.d.ts.map +1 -0
  258. package/internal/stream-controller.js +146 -0
  259. package/internal/stream-controller.js.map +1 -0
  260. package/internal/useAutoScroll.d.ts +32 -0
  261. package/internal/useAutoScroll.d.ts.map +1 -0
  262. package/internal/useAutoScroll.js +97 -0
  263. package/internal/useAutoScroll.js.map +1 -0
  264. package/internal/useFetch.d.ts +14 -0
  265. package/internal/useFetch.d.ts.map +1 -1
  266. package/internal/useFetch.js +32 -2
  267. package/internal/useFetch.js.map +1 -1
  268. package/package.json +7 -5
  269. package/session/__tests__/useNewSessionFlow.test.js +16 -0
  270. package/session/__tests__/useNewSessionFlow.test.js.map +1 -1
  271. package/session/__tests__/usePersistedModel.test.d.ts +2 -0
  272. package/session/__tests__/usePersistedModel.test.d.ts.map +1 -0
  273. package/session/__tests__/usePersistedModel.test.js +82 -0
  274. package/session/__tests__/usePersistedModel.test.js.map +1 -0
  275. package/session/__tests__/useSession.test.d.ts +2 -0
  276. package/session/__tests__/useSession.test.d.ts.map +1 -0
  277. package/session/__tests__/useSession.test.js +130 -0
  278. package/session/__tests__/useSession.test.js.map +1 -0
  279. package/session/useNewSessionFlow.d.ts.map +1 -1
  280. package/session/useNewSessionFlow.js +12 -6
  281. package/session/useNewSessionFlow.js.map +1 -1
  282. package/session/usePersistedModel.d.ts +3 -0
  283. package/session/usePersistedModel.d.ts.map +1 -1
  284. package/session/usePersistedModel.js +27 -2
  285. package/session/usePersistedModel.js.map +1 -1
  286. package/session/useSession.d.ts.map +1 -1
  287. package/session/useSession.js +1 -1
  288. package/session/useSession.js.map +1 -1
  289. package/session/useSessionConversation.d.ts.map +1 -1
  290. package/session/useSessionConversation.js +9 -1
  291. package/session/useSessionConversation.js.map +1 -1
  292. package/session/useSessionExecutions.d.ts.map +1 -1
  293. package/session/useSessionExecutions.js +1 -1
  294. package/session/useSessionExecutions.js.map +1 -1
  295. package/session/useSessionPageFlow.js +1 -1
  296. package/session/useSessionPageFlow.js.map +1 -1
  297. package/session/useSessionUsage.d.ts +24 -40
  298. package/session/useSessionUsage.d.ts.map +1 -1
  299. package/session/useSessionUsage.js +64 -97
  300. package/session/useSessionUsage.js.map +1 -1
  301. package/settings/BillingSection.d.ts +3 -0
  302. package/settings/BillingSection.d.ts.map +1 -0
  303. package/settings/BillingSection.js +3 -0
  304. package/settings/BillingSection.js.map +1 -0
  305. package/settings/index.d.ts +2 -0
  306. package/settings/index.d.ts.map +1 -1
  307. package/settings/index.js +1 -0
  308. package/settings/index.js.map +1 -1
  309. package/settings/settings-nav.js +1 -1
  310. package/settings/settings-nav.js.map +1 -1
  311. package/src/billing/AutoRechargeCard.tsx +274 -0
  312. package/src/billing/BillingSection.tsx +255 -0
  313. package/src/billing/CreditBalanceCard.tsx +81 -0
  314. package/src/billing/CreditLedgerTable.tsx +281 -0
  315. package/src/billing/CreditPackGrid.tsx +132 -0
  316. package/src/billing/LowBalanceBanner.tsx +67 -0
  317. package/src/billing/PaymentMethodCard.tsx +133 -0
  318. package/src/billing/credit-packs.ts +54 -0
  319. package/src/billing/format.ts +97 -0
  320. package/src/billing/index.ts +51 -0
  321. package/src/billing/useBillingAccount.ts +64 -0
  322. package/src/billing/useBillingUsageReport.ts +73 -0
  323. package/src/billing/useCreateBillingPortalSession.ts +76 -0
  324. package/src/billing/useCreateCheckoutSession.ts +101 -0
  325. package/src/billing/useCreditLedger.ts +79 -0
  326. package/src/billing/useCustomerModelPricing.ts +67 -0
  327. package/src/billing/useSetAutoRechargeConfig.ts +90 -0
  328. package/src/composer/ComposerToolbar.tsx +1 -1
  329. package/src/composer/SessionComposer.tsx +22 -4
  330. package/src/composer/__tests__/SessionComposer-memo.test.ts +26 -0
  331. package/src/execution/ApprovalCard.tsx +7 -3
  332. package/src/execution/ExecutionPhaseBadge.tsx +3 -2
  333. package/src/execution/MessageEntry.tsx +27 -16
  334. package/src/execution/MessageThread.tsx +308 -131
  335. package/src/execution/SetupProgress.tsx +3 -3
  336. package/src/execution/SubAgentSection.tsx +14 -6
  337. package/src/execution/ThreadSkeleton.tsx +73 -0
  338. package/src/execution/ToolCallGroup.tsx +36 -3
  339. package/src/execution/UsageWidget.tsx +1 -1
  340. package/src/execution/__tests__/message-entry.test.tsx +236 -0
  341. package/src/execution/__tests__/thread-keys.test.ts +409 -0
  342. package/src/execution/__tests__/thread-memoization.test.ts +320 -0
  343. package/src/execution/__tests__/thread-skeleton.test.tsx +44 -0
  344. package/src/execution/__tests__/useExecutionStream.test.tsx +109 -12
  345. package/src/execution/__tests__/useSessionVariables-stability.test.ts +95 -0
  346. package/src/execution/__tests__/virtualized-thread.test.tsx +401 -0
  347. package/src/execution/index.ts +3 -0
  348. package/src/execution/useExecutionStream.ts +123 -48
  349. package/src/execution/useSessionVariables.ts +17 -12
  350. package/src/github/useGitHubConnection.ts +18 -13
  351. package/src/identity-account/index.ts +5 -0
  352. package/src/identity-account/useIdentityAccountGate.ts +163 -0
  353. package/src/index.ts +73 -0
  354. package/src/internal/FetchCacheProvider.tsx +74 -0
  355. package/src/internal/JumpToLatestButton.tsx +61 -0
  356. package/src/internal/ThreadItemWrapper.tsx +65 -0
  357. package/src/internal/VirtualizedThread.tsx +162 -0
  358. package/src/internal/__tests__/fetch-cache.test.ts +230 -0
  359. package/src/internal/__tests__/stream-controller.test.ts +395 -0
  360. package/src/internal/__tests__/thread-animation.test.tsx +121 -0
  361. package/src/internal/__tests__/useAutoScroll.test.tsx +261 -0
  362. package/src/internal/__tests__/useFetch-cache.test.ts +214 -0
  363. package/src/internal/dev/__tests__/use-key-stability.test.ts +124 -0
  364. package/src/internal/dev/__tests__/use-render-tracer.test.ts +78 -0
  365. package/src/internal/dev/dom-counter.ts +47 -0
  366. package/src/internal/dev/index.ts +5 -0
  367. package/src/internal/dev/profiler-wrapper.tsx +52 -0
  368. package/src/internal/dev/use-key-stability.ts +86 -0
  369. package/src/internal/dev/use-render-tracer.ts +70 -0
  370. package/src/internal/dev/use-stream-rate.ts +138 -0
  371. package/src/internal/fetch-cache.ts +155 -0
  372. package/src/internal/store/__tests__/conversation-store.test.ts +257 -0
  373. package/src/internal/store/__tests__/structural-share.test.ts +454 -0
  374. package/src/internal/store/conversation-store.ts +128 -0
  375. package/src/internal/store/index.ts +68 -0
  376. package/src/internal/store/structural-share.ts +318 -0
  377. package/src/internal/stream-controller.ts +201 -0
  378. package/src/internal/useAutoScroll.ts +121 -0
  379. package/src/internal/useFetch.ts +51 -2
  380. package/src/session/__tests__/useNewSessionFlow.test.tsx +22 -0
  381. package/src/session/__tests__/usePersistedModel.test.tsx +117 -0
  382. package/src/session/__tests__/useSession.test.tsx +187 -0
  383. package/src/session/useNewSessionFlow.ts +12 -6
  384. package/src/session/usePersistedModel.ts +28 -2
  385. package/src/session/useSession.ts +1 -0
  386. package/src/session/useSessionConversation.ts +11 -2
  387. package/src/session/useSessionExecutions.ts +1 -0
  388. package/src/session/useSessionPageFlow.ts +1 -1
  389. package/src/session/useSessionUsage.ts +102 -123
  390. package/src/settings/BillingSection.tsx +4 -0
  391. package/src/settings/index.ts +2 -0
  392. package/src/settings/settings-nav.ts +1 -1
  393. package/src/styles.css +31 -0
  394. package/src/usage/AgentBreakdownList.tsx +147 -0
  395. package/src/usage/CreditRunwayIndicator.tsx +71 -0
  396. package/src/usage/ExportButton.tsx +115 -0
  397. package/src/usage/HarnessSplitCard.tsx +103 -0
  398. package/src/usage/OrgUsagePanel.tsx +109 -45
  399. package/src/usage/index.ts +15 -0
  400. package/src/usage/useExportCSV.ts +115 -0
  401. package/src/usage/useOrgUsageReport.ts +2 -1
  402. package/src/workspace/__tests__/useWorkspaceEntries-stability.test.ts +76 -0
  403. package/src/workspace/useWorkspaceEntries.ts +16 -11
  404. package/styles.css +1 -1
  405. package/usage/AgentBreakdownList.d.ts +21 -0
  406. package/usage/AgentBreakdownList.d.ts.map +1 -0
  407. package/usage/AgentBreakdownList.js +44 -0
  408. package/usage/AgentBreakdownList.js.map +1 -0
  409. package/usage/CreditRunwayIndicator.d.ts +21 -0
  410. package/usage/CreditRunwayIndicator.d.ts.map +1 -0
  411. package/usage/CreditRunwayIndicator.js +38 -0
  412. package/usage/CreditRunwayIndicator.js.map +1 -0
  413. package/usage/ExportButton.d.ts +20 -0
  414. package/usage/ExportButton.d.ts.map +1 -0
  415. package/usage/ExportButton.js +36 -0
  416. package/usage/ExportButton.js.map +1 -0
  417. package/usage/HarnessSplitCard.d.ts +17 -0
  418. package/usage/HarnessSplitCard.d.ts.map +1 -0
  419. package/usage/HarnessSplitCard.js +38 -0
  420. package/usage/HarnessSplitCard.js.map +1 -0
  421. package/usage/OrgUsagePanel.d.ts.map +1 -1
  422. package/usage/OrgUsagePanel.js +30 -22
  423. package/usage/OrgUsagePanel.js.map +1 -1
  424. package/usage/index.d.ts +10 -0
  425. package/usage/index.d.ts.map +1 -1
  426. package/usage/index.js +5 -0
  427. package/usage/index.js.map +1 -1
  428. package/usage/useExportCSV.d.ts +23 -0
  429. package/usage/useExportCSV.d.ts.map +1 -0
  430. package/usage/useExportCSV.js +81 -0
  431. package/usage/useExportCSV.js.map +1 -0
  432. package/usage/useOrgUsageReport.d.ts +2 -1
  433. package/usage/useOrgUsageReport.d.ts.map +1 -1
  434. package/usage/useOrgUsageReport.js +2 -1
  435. package/usage/useOrgUsageReport.js.map +1 -1
  436. package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts +2 -0
  437. package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts.map +1 -0
  438. package/workspace/__tests__/useWorkspaceEntries-stability.test.js +57 -0
  439. package/workspace/__tests__/useWorkspaceEntries-stability.test.js.map +1 -0
  440. package/workspace/useWorkspaceEntries.d.ts.map +1 -1
  441. package/workspace/useWorkspaceEntries.js +5 -4
  442. package/workspace/useWorkspaceEntries.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LowBalanceBanner.js","sourceRoot":"","sources":["../../src/billing/LowBalanceBanner.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAY/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,eAAe,EACf,eAAe,EACf,SAAS,GACa;IACtB,IAAI,eAAe,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAEpD,MAAM,gBAAgB,GAAG,eAAe,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,eACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,EAAE,CACX,gEAAgE,EAChE,gBAAgB;YACd,CAAC,CAAC,yDAAyD;YAC3D,CAAC,CAAC,wDAAwD,EAC5D,SAAS,CACV,aAED,KAAC,aAAa,IAAC,SAAS,EAAC,0BAA0B,iBAAa,MAAM,GAAG,EACzE,0BACE,YAAG,SAAS,EAAC,aAAa,YACvB,gBAAgB;4BACf,CAAC,CAAC,0BAA0B;4BAC5B,CAAC,CAAC,oBAAoB,GACtB,EACJ,YAAG,SAAS,EAAC,mBAAmB,YAC7B,gBAAgB;4BACf,CAAC,CAAC,qFAAqF;4BACvF,CAAC,CAAC,iBAAiB,mBAAmB,CAAC,eAAe,CAAC,2EAA2E,GAClI,IACA,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { PaymentMethodSummary } from "@stigmer/protos/ai/stigmer/billing/v1/billing_account_pb";
2
+ import { BillingAccountStatus } from "@stigmer/protos/ai/stigmer/billing/v1/enum_pb";
3
+ /** Props for {@link PaymentMethodCard}. */
4
+ export interface PaymentMethodCardProps {
5
+ /** The saved payment method, or undefined if none is on file. */
6
+ readonly paymentMethod?: PaymentMethodSummary;
7
+ /** Account status — portal button disabled when suspended or closed. */
8
+ readonly accountStatus: BillingAccountStatus;
9
+ /** `true` while the portal session is being created. */
10
+ readonly isPortalLoading?: boolean;
11
+ /** Called when the user clicks "Manage payment methods". */
12
+ readonly onManage: () => void;
13
+ /** Additional CSS class names. */
14
+ readonly className?: string;
15
+ }
16
+ /**
17
+ * Displays the saved payment method with a button to open the
18
+ * Stripe Customer Portal for management.
19
+ *
20
+ * Shows card brand, last 4 digits, and expiry when a payment method
21
+ * is on file. Shows an empty state prompt when none exists. The
22
+ * "Manage" button opens the Stripe Customer Portal where users can
23
+ * add, update, or remove payment methods.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <PaymentMethodCard
28
+ * paymentMethod={account.defaultPaymentMethod}
29
+ * accountStatus={account.status}
30
+ * onManage={() => openPortal(orgId)}
31
+ * />
32
+ * ```
33
+ */
34
+ export declare function PaymentMethodCard({ paymentMethod, accountStatus, isPortalLoading, onManage, className, }: PaymentMethodCardProps): import("react/jsx-runtime").JSX.Element;
35
+ //# sourceMappingURL=PaymentMethodCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentMethodCard.d.ts","sourceRoot":"","sources":["../../src/billing/PaymentMethodCard.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAErF,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAC7C,wDAAwD;IACxD,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAsBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,SAAS,GACV,EAAE,sBAAsB,2CA0DxB"}
@@ -0,0 +1,48 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn } from "@stigmer/theme";
4
+ import { BillingAccountStatus } from "@stigmer/protos/ai/stigmer/billing/v1/enum_pb";
5
+ const BRAND_DISPLAY = {
6
+ visa: "Visa",
7
+ mastercard: "Mastercard",
8
+ amex: "American Express",
9
+ discover: "Discover",
10
+ diners: "Diners Club",
11
+ jcb: "JCB",
12
+ unionpay: "UnionPay",
13
+ };
14
+ function formatBrand(brand) {
15
+ return BRAND_DISPLAY[brand.toLowerCase()] ?? brand;
16
+ }
17
+ function formatExpiry(month, year) {
18
+ const m = String(month).padStart(2, "0");
19
+ const y = String(year).slice(-2);
20
+ return `${m}/${y}`;
21
+ }
22
+ /**
23
+ * Displays the saved payment method with a button to open the
24
+ * Stripe Customer Portal for management.
25
+ *
26
+ * Shows card brand, last 4 digits, and expiry when a payment method
27
+ * is on file. Shows an empty state prompt when none exists. The
28
+ * "Manage" button opens the Stripe Customer Portal where users can
29
+ * add, update, or remove payment methods.
30
+ *
31
+ * @example
32
+ * ```tsx
33
+ * <PaymentMethodCard
34
+ * paymentMethod={account.defaultPaymentMethod}
35
+ * accountStatus={account.status}
36
+ * onManage={() => openPortal(orgId)}
37
+ * />
38
+ * ```
39
+ */
40
+ export function PaymentMethodCard({ paymentMethod, accountStatus, isPortalLoading, onManage, className, }) {
41
+ const isAccountActive = accountStatus === BillingAccountStatus.billing_account_active;
42
+ const hasPm = paymentMethod != null && paymentMethod.paymentMethodId !== "";
43
+ return (_jsxs("div", { className: cn("rounded-lg border border-border bg-card px-4 py-4", className), children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h3", { className: "text-xs font-semibold text-foreground", children: "Payment Method" }), hasPm && (_jsx("button", { type: "button", disabled: !isAccountActive || isPortalLoading, onClick: onManage, className: cn("rounded-md px-2.5 py-1 text-xs font-medium transition-colors", "text-muted-foreground hover:bg-accent hover:text-foreground", "disabled:pointer-events-none disabled:opacity-50"), "aria-busy": isPortalLoading, children: isPortalLoading ? "Opening\u2026" : "Manage" }))] }), hasPm ? (_jsxs("div", { className: "mt-2 flex items-center gap-3", children: [_jsx(CardBrandIcon, { brand: paymentMethod.brand }), _jsxs("div", { children: [_jsxs("div", { className: "text-sm font-medium text-foreground", children: [formatBrand(paymentMethod.brand), " \u00B7\u00B7\u00B7\u00B7", " ", paymentMethod.last4] }), _jsxs("div", { className: "text-xs text-muted-foreground", children: ["Expires", " ", formatExpiry(paymentMethod.expMonth, paymentMethod.expYear)] })] })] })) : (_jsx("div", { className: "mt-2", children: _jsx("p", { className: "text-xs text-muted-foreground", children: "No payment method on file. A card will be saved automatically when you purchase your first credit pack." }) }))] }));
44
+ }
45
+ function CardBrandIcon({ brand }) {
46
+ return (_jsx("div", { className: "flex size-9 items-center justify-center rounded-md border border-border bg-background", children: _jsx("span", { className: "text-[0.6rem] font-bold uppercase text-muted-foreground", children: brand.slice(0, 4) }) }));
47
+ }
48
+ //# sourceMappingURL=PaymentMethodCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentMethodCard.js","sourceRoot":"","sources":["../../src/billing/PaymentMethodCard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAgBrF,MAAM,aAAa,GAA2B;IAC5C,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,aAAa;IACrB,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,SAAS,GACc;IACvB,MAAM,eAAe,GACnB,aAAa,KAAK,oBAAoB,CAAC,sBAAsB,CAAC;IAChE,MAAM,KAAK,GACT,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,eAAe,KAAK,EAAE,CAAC;IAEhE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,aAED,eAAK,SAAS,EAAC,mCAAmC,aAChD,aAAI,SAAS,EAAC,uCAAuC,+BAEhD,EACJ,KAAK,IAAI,CACR,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,eAAe,IAAI,eAAe,EAC7C,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,6DAA6D,EAC7D,kDAAkD,CACnD,eACU,eAAe,YAEzB,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,GACtC,CACV,IACG,EAEL,KAAK,CAAC,CAAC,CAAC,CACP,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,aAAa,IAAC,KAAK,EAAE,aAAa,CAAC,KAAK,GAAI,EAC7C,0BACE,eAAK,SAAS,EAAC,qCAAqC,aACjD,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,+BAAO,GAAG,EAC1C,aAAa,CAAC,KAAK,IAChB,EACN,eAAK,SAAS,EAAC,+BAA+B,wBACpC,GAAG,EACV,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,IACxD,IACF,IACF,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,MAAM,YACnB,YAAG,SAAS,EAAC,+BAA+B,wHAGxC,GACA,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,KAAK,EAAqB;IACjD,OAAO,CACL,cAAK,SAAS,EAAC,uFAAuF,YACpG,eAAM,SAAS,EAAC,yDAAyD,YACtE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GACb,GACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ /** Metadata for a self-serve credit pack. */
2
+ export interface CreditPackInfo {
3
+ /** Stable identifier matching the backend catalog (e.g., "starter"). */
4
+ readonly packId: string;
5
+ /** Display name shown in the UI. */
6
+ readonly displayName: string;
7
+ /** Brief description of the pack's positioning. */
8
+ readonly description: string;
9
+ /** Price in USD cents (e.g., 1000 = $10.00). */
10
+ readonly priceCents: number;
11
+ /** Number of credits granted (1 credit = $0.01 USD). */
12
+ readonly credits: number;
13
+ }
14
+ /**
15
+ * Static credit pack catalog matching the backend `CreditPackCatalog`.
16
+ *
17
+ * Packs are static product entries, not database-backed resources.
18
+ * At launch, credits equal the dollar value (no volume bonus).
19
+ */
20
+ export declare const CREDIT_PACKS: readonly CreditPackInfo[];
21
+ /** Format a cent amount as a dollar string (e.g., 1000 -> "$10"). */
22
+ export declare function formatPackPrice(cents: number): string;
23
+ /** Format a credit count with commas (e.g., 5000 -> "5,000"). */
24
+ export declare function formatCreditCount(credits: number): string;
25
+ //# sourceMappingURL=credit-packs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-packs.d.ts","sourceRoot":"","sources":["../../src/billing/credit-packs.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,cAAc,EAsBjD,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Static credit pack catalog matching the backend `CreditPackCatalog`.
3
+ *
4
+ * Packs are static product entries, not database-backed resources.
5
+ * At launch, credits equal the dollar value (no volume bonus).
6
+ */
7
+ export const CREDIT_PACKS = [
8
+ {
9
+ packId: "starter",
10
+ displayName: "Starter",
11
+ description: "For trying things out",
12
+ priceCents: 1_000,
13
+ credits: 1_000,
14
+ },
15
+ {
16
+ packId: "growth",
17
+ displayName: "Growth",
18
+ description: "For growing teams",
19
+ priceCents: 5_000,
20
+ credits: 5_000,
21
+ },
22
+ {
23
+ packId: "team",
24
+ displayName: "Team",
25
+ description: "For production workloads",
26
+ priceCents: 20_000,
27
+ credits: 20_000,
28
+ },
29
+ ];
30
+ /** Format a cent amount as a dollar string (e.g., 1000 -> "$10"). */
31
+ export function formatPackPrice(cents) {
32
+ const dollars = cents / 100;
33
+ return dollars % 1 === 0 ? `$${dollars}` : `$${dollars.toFixed(2)}`;
34
+ }
35
+ /** Format a credit count with commas (e.g., 5000 -> "5,000"). */
36
+ export function formatCreditCount(credits) {
37
+ return credits.toLocaleString("en-US");
38
+ }
39
+ //# sourceMappingURL=credit-packs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-packs.js","sourceRoot":"","sources":["../../src/billing/credit-packs.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAA8B;IACrD;QACE,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;KACf;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE,mBAAmB;QAChC,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;KACf;IACD;QACE,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,MAAM;KAChB;CACF,CAAC;AAEF,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC;IAC5B,OAAO,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { LedgerEntryType } from "@stigmer/protos/ai/stigmer/billing/v1/enum_pb";
2
+ /**
3
+ * Convert micro-USD (bigint) to a display string like "$12.50".
4
+ *
5
+ * Micro-USD uses 6 decimal places (1 USD = 1,000,000 micros).
6
+ * The output always shows exactly 2 decimal places.
7
+ */
8
+ export declare function formatCreditBalance(micros: bigint | undefined): string;
9
+ /**
10
+ * Convert micro-USD (bigint) to a signed display string.
11
+ *
12
+ * Positive amounts show "+$5.00", negative show "-$0.23",
13
+ * zero shows "$0.00" (no sign).
14
+ */
15
+ export declare function formatLedgerAmount(micros: bigint): string;
16
+ /** Human-readable label for a ledger entry type. */
17
+ export declare function ledgerEntryLabel(type: LedgerEntryType): string;
18
+ /**
19
+ * Whether a ledger entry type represents a credit (positive amount).
20
+ *
21
+ * Used by UI components to choose semantic colors: green for credits,
22
+ * red for debits, gray for holds/releases.
23
+ */
24
+ export declare function isCredit(type: LedgerEntryType): boolean;
25
+ /**
26
+ * Whether a ledger entry type represents a hold operation.
27
+ *
28
+ * Holds are neither credits nor debits in the user's mental model —
29
+ * they represent temporary balance changes (reservations, disputes).
30
+ */
31
+ export declare function isHold(type: LedgerEntryType): boolean;
32
+ /**
33
+ * Format a protobuf Timestamp for ledger display.
34
+ *
35
+ * Returns a locale-appropriate date and time string
36
+ * (e.g., "May 3, 2026, 4:30 PM").
37
+ */
38
+ export declare function formatLedgerDate(seconds: bigint): string;
39
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/billing/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKtE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzD;AAiBD,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CASvD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAKrD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASxD"}
@@ -0,0 +1,90 @@
1
+ import { LedgerEntryType } from "@stigmer/protos/ai/stigmer/billing/v1/enum_pb";
2
+ /**
3
+ * Convert micro-USD (bigint) to a display string like "$12.50".
4
+ *
5
+ * Micro-USD uses 6 decimal places (1 USD = 1,000,000 micros).
6
+ * The output always shows exactly 2 decimal places.
7
+ */
8
+ export function formatCreditBalance(micros) {
9
+ if (micros === undefined)
10
+ return "$0.00";
11
+ const cents = Number(micros) / 10_000;
12
+ const dollars = cents / 100;
13
+ return `$${dollars.toFixed(2)}`;
14
+ }
15
+ /**
16
+ * Convert micro-USD (bigint) to a signed display string.
17
+ *
18
+ * Positive amounts show "+$5.00", negative show "-$0.23",
19
+ * zero shows "$0.00" (no sign).
20
+ */
21
+ export function formatLedgerAmount(micros) {
22
+ const zero = BigInt(0);
23
+ const absMicros = micros < zero ? -micros : micros;
24
+ const dollars = Number(absMicros) / 1_000_000;
25
+ const formatted = `$${dollars.toFixed(2)}`;
26
+ if (micros > zero)
27
+ return `+${formatted}`;
28
+ if (micros < zero)
29
+ return `-${formatted}`;
30
+ return formatted;
31
+ }
32
+ const ENTRY_LABELS = {
33
+ [LedgerEntryType.purchase_credit]: "Credit Purchase",
34
+ [LedgerEntryType.promotional_credit]: "Promotional Credit",
35
+ [LedgerEntryType.usage_debit]: "Usage",
36
+ [LedgerEntryType.reservation_hold]: "Reservation Hold",
37
+ [LedgerEntryType.reservation_release]: "Reservation Release",
38
+ [LedgerEntryType.adjustment_credit]: "Admin Credit",
39
+ [LedgerEntryType.adjustment_debit]: "Admin Debit",
40
+ [LedgerEntryType.refund_reversal]: "Refund",
41
+ [LedgerEntryType.dispute_hold]: "Dispute Hold",
42
+ [LedgerEntryType.dispute_release]: "Dispute Release",
43
+ [LedgerEntryType.expiry_debit]: "Credit Expiry",
44
+ [LedgerEntryType.auto_recharge_credit]: "Auto-Recharge",
45
+ };
46
+ /** Human-readable label for a ledger entry type. */
47
+ export function ledgerEntryLabel(type) {
48
+ return ENTRY_LABELS[type] ?? "Unknown";
49
+ }
50
+ /**
51
+ * Whether a ledger entry type represents a credit (positive amount).
52
+ *
53
+ * Used by UI components to choose semantic colors: green for credits,
54
+ * red for debits, gray for holds/releases.
55
+ */
56
+ export function isCredit(type) {
57
+ return (type === LedgerEntryType.purchase_credit ||
58
+ type === LedgerEntryType.promotional_credit ||
59
+ type === LedgerEntryType.adjustment_credit ||
60
+ type === LedgerEntryType.reservation_release ||
61
+ type === LedgerEntryType.dispute_release ||
62
+ type === LedgerEntryType.auto_recharge_credit);
63
+ }
64
+ /**
65
+ * Whether a ledger entry type represents a hold operation.
66
+ *
67
+ * Holds are neither credits nor debits in the user's mental model —
68
+ * they represent temporary balance changes (reservations, disputes).
69
+ */
70
+ export function isHold(type) {
71
+ return (type === LedgerEntryType.reservation_hold ||
72
+ type === LedgerEntryType.dispute_hold);
73
+ }
74
+ /**
75
+ * Format a protobuf Timestamp for ledger display.
76
+ *
77
+ * Returns a locale-appropriate date and time string
78
+ * (e.g., "May 3, 2026, 4:30 PM").
79
+ */
80
+ export function formatLedgerDate(seconds) {
81
+ const date = new Date(Number(seconds) * 1000);
82
+ return new Intl.DateTimeFormat("en-US", {
83
+ month: "short",
84
+ day: "numeric",
85
+ year: "numeric",
86
+ hour: "numeric",
87
+ minute: "2-digit",
88
+ }).format(date);
89
+ }
90
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/billing/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA0B;IAC5D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,IAAI,MAAM,GAAG,IAAI;QAAE,OAAO,IAAI,SAAS,EAAE,CAAC;IAC1C,IAAI,MAAM,GAAG,IAAI;QAAE,OAAO,IAAI,SAAS,EAAE,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,YAAY,GAA2B;IAC3C,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,iBAAiB;IACpD,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,oBAAoB;IAC1D,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,OAAO;IACtC,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,kBAAkB;IACtD,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,qBAAqB;IAC5D,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,cAAc;IACnD,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,aAAa;IACjD,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,QAAQ;IAC3C,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,cAAc;IAC9C,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,iBAAiB;IACpD,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,eAAe;IAC/C,CAAC,eAAe,CAAC,oBAAoB,CAAC,EAAE,eAAe;CACxD,CAAC;AAEF,oDAAoD;AACpD,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAqB;IAC5C,OAAO,CACL,IAAI,KAAK,eAAe,CAAC,eAAe;QACxC,IAAI,KAAK,eAAe,CAAC,kBAAkB;QAC3C,IAAI,KAAK,eAAe,CAAC,iBAAiB;QAC1C,IAAI,KAAK,eAAe,CAAC,mBAAmB;QAC5C,IAAI,KAAK,eAAe,CAAC,eAAe;QACxC,IAAI,KAAK,eAAe,CAAC,oBAAoB,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,IAAqB;IAC1C,OAAO,CACL,IAAI,KAAK,eAAe,CAAC,gBAAgB;QACzC,IAAI,KAAK,eAAe,CAAC,YAAY,CACtC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QACtC,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,32 @@
1
+ export { useBillingAccount } from "./useBillingAccount";
2
+ export type { UseBillingAccountReturn } from "./useBillingAccount";
3
+ export { useCreditLedger } from "./useCreditLedger";
4
+ export type { UseCreditLedgerReturn, UseCreditLedgerOptions } from "./useCreditLedger";
5
+ export { useBillingUsageReport } from "./useBillingUsageReport";
6
+ export type { UseBillingUsageReportReturn } from "./useBillingUsageReport";
7
+ export { useCustomerModelPricing } from "./useCustomerModelPricing";
8
+ export type { UseCustomerModelPricingReturn } from "./useCustomerModelPricing";
9
+ export { useCreateCheckoutSession } from "./useCreateCheckoutSession";
10
+ export type { CreateCheckoutSessionInput, UseCreateCheckoutSessionReturn, } from "./useCreateCheckoutSession";
11
+ export { useCreateBillingPortalSession } from "./useCreateBillingPortalSession";
12
+ export type { UseCreateBillingPortalSessionReturn } from "./useCreateBillingPortalSession";
13
+ export { useSetAutoRechargeConfig } from "./useSetAutoRechargeConfig";
14
+ export type { SetAutoRechargeConfigInput, UseSetAutoRechargeConfigReturn, } from "./useSetAutoRechargeConfig";
15
+ export { BillingSection } from "./BillingSection";
16
+ export type { BillingSectionProps } from "./BillingSection";
17
+ export { CreditBalanceCard } from "./CreditBalanceCard";
18
+ export type { CreditBalanceCardProps } from "./CreditBalanceCard";
19
+ export { PaymentMethodCard } from "./PaymentMethodCard";
20
+ export type { PaymentMethodCardProps } from "./PaymentMethodCard";
21
+ export { AutoRechargeCard } from "./AutoRechargeCard";
22
+ export type { AutoRechargeCardProps } from "./AutoRechargeCard";
23
+ export { CreditPackGrid } from "./CreditPackGrid";
24
+ export type { CreditPackGridProps } from "./CreditPackGrid";
25
+ export { CreditLedgerTable } from "./CreditLedgerTable";
26
+ export type { CreditLedgerTableProps } from "./CreditLedgerTable";
27
+ export { LowBalanceBanner } from "./LowBalanceBanner";
28
+ export type { LowBalanceBannerProps } from "./LowBalanceBanner";
29
+ export { CREDIT_PACKS, formatPackPrice, formatCreditCount } from "./credit-packs";
30
+ export type { CreditPackInfo } from "./credit-packs";
31
+ export { formatCreditBalance, formatLedgerAmount, ledgerEntryLabel, isCredit, isHold, formatLedgerDate, } from "./format";
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAG/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,YAAY,EAAE,mCAAmC,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClF,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,gBAAgB,GACjB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,21 @@
1
+ // Data hooks
2
+ export { useBillingAccount } from "./useBillingAccount";
3
+ export { useCreditLedger } from "./useCreditLedger";
4
+ export { useBillingUsageReport } from "./useBillingUsageReport";
5
+ export { useCustomerModelPricing } from "./useCustomerModelPricing";
6
+ // Behavior hooks
7
+ export { useCreateCheckoutSession } from "./useCreateCheckoutSession";
8
+ export { useCreateBillingPortalSession } from "./useCreateBillingPortalSession";
9
+ export { useSetAutoRechargeConfig } from "./useSetAutoRechargeConfig";
10
+ // Styled components
11
+ export { BillingSection } from "./BillingSection";
12
+ export { CreditBalanceCard } from "./CreditBalanceCard";
13
+ export { PaymentMethodCard } from "./PaymentMethodCard";
14
+ export { AutoRechargeCard } from "./AutoRechargeCard";
15
+ export { CreditPackGrid } from "./CreditPackGrid";
16
+ export { CreditLedgerTable } from "./CreditLedgerTable";
17
+ export { LowBalanceBanner } from "./LowBalanceBanner";
18
+ // Credit pack catalog and formatting utilities
19
+ export { CREDIT_PACKS, formatPackPrice, formatCreditCount } from "./credit-packs";
20
+ export { formatCreditBalance, formatLedgerAmount, ledgerEntryLabel, isCredit, isHold, formatLedgerDate, } from "./format";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,iBAAiB;AACjB,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAMtE,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,+CAA+C;AAC/C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,gBAAgB,GACjB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { BillingAccount } from "@stigmer/protos/ai/stigmer/billing/v1/billing_account_pb";
2
+ /** Return value of {@link useBillingAccount}. */
3
+ export interface UseBillingAccountReturn {
4
+ /** The billing account, or `null` before the first successful fetch. */
5
+ readonly account: BillingAccount | null;
6
+ /** `true` while the initial fetch is in flight. */
7
+ readonly isLoading: boolean;
8
+ /** `true` while a background refetch is in flight and stale data is shown. */
9
+ readonly isRefetching: boolean;
10
+ /** Error from the last failed request, or `null` when healthy. */
11
+ readonly error: Error | null;
12
+ /** Discard cached data and re-fetch from the server. */
13
+ readonly refetch: () => void;
14
+ }
15
+ /**
16
+ * Data hook that fetches the billing account for an organization.
17
+ *
18
+ * Calls `billing.getOrCreateBillingAccount` which is idempotent —
19
+ * creates the account on first call, returns the existing account
20
+ * on subsequent calls. The returned `BillingAccount` includes
21
+ * the embedded `CreditBalance` with available, reserved,
22
+ * promotional, and purchased breakdowns.
23
+ *
24
+ * Pass `null` as `orgId` to skip fetching (stable no-op).
25
+ *
26
+ * @param orgId - Organization ID, or `null` to skip.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * const { account, isLoading, error } = useBillingAccount(orgId);
31
+ *
32
+ * if (isLoading) return <Skeleton />;
33
+ * if (error) return <ErrorMessage error={error} />;
34
+ * if (!account) return null;
35
+ *
36
+ * return <div>Balance: {formatCreditBalance(account.balance?.availableMicros)}</div>;
37
+ * ```
38
+ */
39
+ export declare function useBillingAccount(orgId: string | null): UseBillingAccountReturn;
40
+ //# sourceMappingURL=useBillingAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBillingAccount.d.ts","sourceRoot":"","sources":["../../src/billing/useBillingAccount.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAI/F,iDAAiD;AACjD,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACxC,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,uBAAuB,CAazB"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { useStigmer } from "../hooks";
3
+ import { useFetch } from "../internal/useFetch";
4
+ /**
5
+ * Data hook that fetches the billing account for an organization.
6
+ *
7
+ * Calls `billing.getOrCreateBillingAccount` which is idempotent —
8
+ * creates the account on first call, returns the existing account
9
+ * on subsequent calls. The returned `BillingAccount` includes
10
+ * the embedded `CreditBalance` with available, reserved,
11
+ * promotional, and purchased breakdowns.
12
+ *
13
+ * Pass `null` as `orgId` to skip fetching (stable no-op).
14
+ *
15
+ * @param orgId - Organization ID, or `null` to skip.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const { account, isLoading, error } = useBillingAccount(orgId);
20
+ *
21
+ * if (isLoading) return <Skeleton />;
22
+ * if (error) return <ErrorMessage error={error} />;
23
+ * if (!account) return null;
24
+ *
25
+ * return <div>Balance: {formatCreditBalance(account.balance?.availableMicros)}</div>;
26
+ * ```
27
+ */
28
+ export function useBillingAccount(orgId) {
29
+ const stigmer = useStigmer();
30
+ const { data: account, isLoading, isRefetching, error, refetch } = useFetch(orgId
31
+ ? () => stigmer.billing.getOrCreateBillingAccount(orgId)
32
+ : null, [orgId, stigmer], null);
33
+ return { account, isLoading, isRefetching, error, refetch };
34
+ }
35
+ //# sourceMappingURL=useBillingAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBillingAccount.js","sourceRoot":"","sources":["../../src/billing/useBillingAccount.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAOb,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAgBhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAoB;IAEpB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CACzE,KAAK;QACH,CAAC,CAAC,GAAG,EAAE,CACH,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACpD,CAAC,CAAC,IAAI,EACR,CAAC,KAAK,EAAE,OAAO,CAAC,EAChB,IAA6B,CAC9B,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { BillingUsageReportResponse } from "@stigmer/protos/ai/stigmer/billing/v1/io_pb";
2
+ /** Return value of {@link useBillingUsageReport}. */
3
+ export interface UseBillingUsageReportReturn {
4
+ /** The usage report, or `null` before the first successful fetch. */
5
+ readonly report: BillingUsageReportResponse | null;
6
+ /** `true` while the initial fetch is in flight. */
7
+ readonly isLoading: boolean;
8
+ /** `true` while a background refetch is in flight and stale data is shown. */
9
+ readonly isRefetching: boolean;
10
+ /** Error from the last failed request, or `null` when healthy. */
11
+ readonly error: Error | null;
12
+ /** Discard cached data and re-fetch from the server. */
13
+ readonly refetch: () => void;
14
+ }
15
+ /**
16
+ * Data hook that fetches an aggregated billing usage report for a date range.
17
+ *
18
+ * Returns total provider cost, total billable amount, execution and LLM
19
+ * call counts, and a per-model breakdown with cost tier attribution.
20
+ *
21
+ * Pass `null` as `orgId` to skip fetching (stable no-op).
22
+ *
23
+ * @param orgId - Organization ID, or `null` to skip.
24
+ * @param startTime - Start of the reporting period.
25
+ * @param endTime - End of the reporting period.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * const { report, isLoading } = useBillingUsageReport(
30
+ * orgId,
31
+ * new Date("2026-05-01"),
32
+ * new Date("2026-05-31"),
33
+ * );
34
+ *
35
+ * if (isLoading) return <Skeleton />;
36
+ * if (!report) return null;
37
+ *
38
+ * return <div>Total: {formatCreditBalance(report.totalBillableAmountMicros)}</div>;
39
+ * ```
40
+ */
41
+ export declare function useBillingUsageReport(orgId: string | null, startTime: Date, endTime: Date): UseBillingUsageReportReturn;
42
+ //# sourceMappingURL=useBillingUsageReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBillingUsageReport.d.ts","sourceRoot":"","sources":["../../src/billing/useBillingUsageReport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,0BAA0B,EAC3B,MAAM,6CAA6C,CAAC;AAIrD,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI,CAAC;IACnD,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,2BAA2B,CAoB7B"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import { useStigmer } from "../hooks";
3
+ import { useFetch } from "../internal/useFetch";
4
+ /**
5
+ * Data hook that fetches an aggregated billing usage report for a date range.
6
+ *
7
+ * Returns total provider cost, total billable amount, execution and LLM
8
+ * call counts, and a per-model breakdown with cost tier attribution.
9
+ *
10
+ * Pass `null` as `orgId` to skip fetching (stable no-op).
11
+ *
12
+ * @param orgId - Organization ID, or `null` to skip.
13
+ * @param startTime - Start of the reporting period.
14
+ * @param endTime - End of the reporting period.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * const { report, isLoading } = useBillingUsageReport(
19
+ * orgId,
20
+ * new Date("2026-05-01"),
21
+ * new Date("2026-05-31"),
22
+ * );
23
+ *
24
+ * if (isLoading) return <Skeleton />;
25
+ * if (!report) return null;
26
+ *
27
+ * return <div>Total: {formatCreditBalance(report.totalBillableAmountMicros)}</div>;
28
+ * ```
29
+ */
30
+ export function useBillingUsageReport(orgId, startTime, endTime) {
31
+ const stigmer = useStigmer();
32
+ const startKey = startTime.toISOString();
33
+ const endKey = endTime.toISOString();
34
+ const { data: report, isLoading, isRefetching, error, refetch } = useFetch(orgId
35
+ ? () => stigmer.billing.getBillingUsageReport({
36
+ orgId,
37
+ startTime,
38
+ endTime,
39
+ })
40
+ : null, [orgId, startKey, endKey, stigmer], null);
41
+ return { report, isLoading, isRefetching, error, refetch };
42
+ }
43
+ //# sourceMappingURL=useBillingUsageReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBillingUsageReport.js","sourceRoot":"","sources":["../../src/billing/useBillingUsageReport.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAKb,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAgBhD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,SAAe,EACf,OAAa;IAEb,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CACxE,KAAK;QACH,CAAC,CAAC,GAAG,EAAE,CACH,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACpC,KAAK;YACL,SAAS;YACT,OAAO;SACR,CAAC;QACN,CAAC,CAAC,IAAI,EACR,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAClC,IAAyC,CAC1C,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,35 @@
1
+ /** Return value of {@link useCreateBillingPortalSession}. */
2
+ export interface UseCreateBillingPortalSessionReturn {
3
+ /**
4
+ * Open the Stripe Customer Portal for payment method management.
5
+ *
6
+ * On success, redirects the user to the Stripe-hosted portal page.
7
+ * The promise resolves before the redirect occurs.
8
+ */
9
+ readonly openPortal: (orgId: string) => Promise<void>;
10
+ /** `true` while the portal session is being created. */
11
+ readonly isLoading: boolean;
12
+ /** Error from the last failed attempt, or `null` when healthy. */
13
+ readonly error: Error | null;
14
+ /** Reset `error` to `null`. */
15
+ readonly clearError: () => void;
16
+ }
17
+ /**
18
+ * Behavior hook that opens the Stripe Customer Portal for payment
19
+ * method management.
20
+ *
21
+ * Wraps `billing.createBillingPortalSession` with loading and error
22
+ * state management. On success, redirects the user to the Stripe-hosted
23
+ * portal. Payment method changes are synced back via webhooks.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * const { openPortal, isLoading } = useCreateBillingPortalSession();
28
+ *
29
+ * <button onClick={() => openPortal(orgId)} disabled={isLoading}>
30
+ * Manage payment methods
31
+ * </button>
32
+ * ```
33
+ */
34
+ export declare function useCreateBillingPortalSession(): UseCreateBillingPortalSessionReturn;
35
+ //# sourceMappingURL=useCreateBillingPortalSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateBillingPortalSession.d.ts","sourceRoot":"","sources":["../../src/billing/useCreateBillingPortalSession.ts"],"names":[],"mappings":"AAMA,6DAA6D;AAC7D,MAAM,WAAW,mCAAmC;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,6BAA6B,IAAI,mCAAmC,CAmCnF"}