@a5c-ai/genty-ui 5.1.1-staging.00ceebd28cf2

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 (514) hide show
  1. package/README.md +94 -0
  2. package/dist/client/GatewayClient.d.ts +72 -0
  3. package/dist/client/GatewayClient.d.ts.map +1 -0
  4. package/dist/client/GatewayClient.js +239 -0
  5. package/dist/client/GatewayClient.js.map +1 -0
  6. package/dist/client/backoff.d.ts +6 -0
  7. package/dist/client/backoff.d.ts.map +1 -0
  8. package/dist/client/backoff.js +9 -0
  9. package/dist/client/backoff.js.map +1 -0
  10. package/dist/client/errors.d.ts +9 -0
  11. package/dist/client/errors.d.ts.map +1 -0
  12. package/dist/client/errors.js +19 -0
  13. package/dist/client/errors.js.map +1 -0
  14. package/dist/client/transports/ws-browser.d.ts +12 -0
  15. package/dist/client/transports/ws-browser.d.ts.map +1 -0
  16. package/dist/client/transports/ws-browser.js +24 -0
  17. package/dist/client/transports/ws-browser.js.map +1 -0
  18. package/dist/client/transports/ws-node.d.ts +2 -0
  19. package/dist/client/transports/ws-node.d.ts.map +1 -0
  20. package/dist/client/transports/ws-node.js +25 -0
  21. package/dist/client/transports/ws-node.js.map +1 -0
  22. package/dist/client/transports/ws-react-native.d.ts +2 -0
  23. package/dist/client/transports/ws-react-native.d.ts.map +1 -0
  24. package/dist/client/transports/ws-react-native.js +24 -0
  25. package/dist/client/transports/ws-react-native.js.map +1 -0
  26. package/dist/codegen/kotlin-types.d.ts +1 -0
  27. package/dist/codegen/kotlin-types.d.ts.map +1 -0
  28. package/dist/codegen/kotlin-types.js +236 -0
  29. package/dist/codegen/kotlin-types.js.map +1 -0
  30. package/dist/codegen/swift-types.d.ts +1 -0
  31. package/dist/codegen/swift-types.d.ts.map +1 -0
  32. package/dist/codegen/swift-types.js +298 -0
  33. package/dist/codegen/swift-types.js.map +1 -0
  34. package/dist/components/Agent/AgentAppearanceEditor.d.ts +23 -0
  35. package/dist/components/Agent/AgentAppearanceEditor.d.ts.map +1 -0
  36. package/dist/components/Agent/AgentAppearanceEditor.js +10 -0
  37. package/dist/components/Agent/AgentAppearanceEditor.js.map +1 -0
  38. package/dist/components/Agent/AgentCreateWizard.d.ts +26 -0
  39. package/dist/components/Agent/AgentCreateWizard.d.ts.map +1 -0
  40. package/dist/components/Agent/AgentCreateWizard.js +136 -0
  41. package/dist/components/Agent/AgentCreateWizard.js.map +1 -0
  42. package/dist/components/Agent/AgentDirectory.d.ts +8 -0
  43. package/dist/components/Agent/AgentDirectory.d.ts.map +1 -0
  44. package/dist/components/Agent/AgentDirectory.js +19 -0
  45. package/dist/components/Agent/AgentDirectory.js.map +1 -0
  46. package/dist/components/Agent/AgentPersonaEditor.d.ts +23 -0
  47. package/dist/components/Agent/AgentPersonaEditor.d.ts.map +1 -0
  48. package/dist/components/Agent/AgentPersonaEditor.js +29 -0
  49. package/dist/components/Agent/AgentPersonaEditor.js.map +1 -0
  50. package/dist/components/Agent/AgentProfileCard.d.ts +39 -0
  51. package/dist/components/Agent/AgentProfileCard.d.ts.map +1 -0
  52. package/dist/components/Agent/AgentProfileCard.js +27 -0
  53. package/dist/components/Agent/AgentProfileCard.js.map +1 -0
  54. package/dist/components/Agent/AgentProfilePage.d.ts +68 -0
  55. package/dist/components/Agent/AgentProfilePage.d.ts.map +1 -0
  56. package/dist/components/Agent/AgentProfilePage.js +31 -0
  57. package/dist/components/Agent/AgentProfilePage.js.map +1 -0
  58. package/dist/components/Agent/AgentSoulEditor.d.ts +5 -0
  59. package/dist/components/Agent/AgentSoulEditor.d.ts.map +1 -0
  60. package/dist/components/Agent/AgentSoulEditor.js +5 -0
  61. package/dist/components/Agent/AgentSoulEditor.js.map +1 -0
  62. package/dist/components/Agent/AgentVoiceEditor.d.ts +17 -0
  63. package/dist/components/Agent/AgentVoiceEditor.d.ts.map +1 -0
  64. package/dist/components/Agent/AgentVoiceEditor.js +29 -0
  65. package/dist/components/Agent/AgentVoiceEditor.js.map +1 -0
  66. package/dist/components/Agent/ApprovalActions.d.ts +5 -0
  67. package/dist/components/Agent/ApprovalActions.d.ts.map +1 -0
  68. package/dist/components/Agent/ApprovalActions.js +55 -0
  69. package/dist/components/Agent/ApprovalActions.js.map +1 -0
  70. package/dist/components/Agent/DispatchButton.d.ts +37 -0
  71. package/dist/components/Agent/DispatchButton.d.ts.map +1 -0
  72. package/dist/components/Agent/DispatchButton.js +111 -0
  73. package/dist/components/Agent/DispatchButton.js.map +1 -0
  74. package/dist/components/Agent/index.d.ts +20 -0
  75. package/dist/components/Agent/index.d.ts.map +1 -0
  76. package/dist/components/Agent/index.js +11 -0
  77. package/dist/components/Agent/index.js.map +1 -0
  78. package/dist/components/AgentPicker.d.ts +5 -0
  79. package/dist/components/AgentPicker.d.ts.map +1 -0
  80. package/dist/components/AgentPicker.js +7 -0
  81. package/dist/components/AgentPicker.js.map +1 -0
  82. package/dist/components/Chat/ChatMessages.d.ts +32 -0
  83. package/dist/components/Chat/ChatMessages.d.ts.map +1 -0
  84. package/dist/components/Chat/ChatMessages.js +146 -0
  85. package/dist/components/Chat/ChatMessages.js.map +1 -0
  86. package/dist/components/Chat/chatStyles.d.ts +41 -0
  87. package/dist/components/Chat/chatStyles.d.ts.map +1 -0
  88. package/dist/components/Chat/chatStyles.js +181 -0
  89. package/dist/components/Chat/chatStyles.js.map +1 -0
  90. package/dist/components/Chat/index.d.ts +2 -0
  91. package/dist/components/Chat/index.d.ts.map +1 -0
  92. package/dist/components/Chat/index.js +3 -0
  93. package/dist/components/Chat/index.js.map +1 -0
  94. package/dist/components/ConnectionBanner.d.ts +4 -0
  95. package/dist/components/ConnectionBanner.d.ts.map +1 -0
  96. package/dist/components/ConnectionBanner.js +9 -0
  97. package/dist/components/ConnectionBanner.js.map +1 -0
  98. package/dist/components/CostMeter.d.ts +3 -0
  99. package/dist/components/CostMeter.d.ts.map +1 -0
  100. package/dist/components/CostMeter.js +7 -0
  101. package/dist/components/CostMeter.js.map +1 -0
  102. package/dist/components/EventList.d.ts +9 -0
  103. package/dist/components/EventList.d.ts.map +1 -0
  104. package/dist/components/EventList.js +21 -0
  105. package/dist/components/EventList.js.map +1 -0
  106. package/dist/components/HookApprovalPrompt.d.ts +10 -0
  107. package/dist/components/HookApprovalPrompt.d.ts.map +1 -0
  108. package/dist/components/HookApprovalPrompt.js +20 -0
  109. package/dist/components/HookApprovalPrompt.js.map +1 -0
  110. package/dist/components/InputBar.d.ts +5 -0
  111. package/dist/components/InputBar.d.ts.map +1 -0
  112. package/dist/components/InputBar.js +9 -0
  113. package/dist/components/InputBar.js.map +1 -0
  114. package/dist/components/Kanban/KanbanBoard.d.ts +14 -0
  115. package/dist/components/Kanban/KanbanBoard.d.ts.map +1 -0
  116. package/dist/components/Kanban/KanbanBoard.js +183 -0
  117. package/dist/components/Kanban/KanbanBoard.js.map +1 -0
  118. package/dist/components/Kanban/KanbanCard.d.ts +13 -0
  119. package/dist/components/Kanban/KanbanCard.d.ts.map +1 -0
  120. package/dist/components/Kanban/KanbanCard.js +75 -0
  121. package/dist/components/Kanban/KanbanCard.js.map +1 -0
  122. package/dist/components/Kanban/KanbanColumn.d.ts +25 -0
  123. package/dist/components/Kanban/KanbanColumn.d.ts.map +1 -0
  124. package/dist/components/Kanban/KanbanColumn.js +130 -0
  125. package/dist/components/Kanban/KanbanColumn.js.map +1 -0
  126. package/dist/components/Kanban/KanbanFilters.d.ts +16 -0
  127. package/dist/components/Kanban/KanbanFilters.d.ts.map +1 -0
  128. package/dist/components/Kanban/KanbanFilters.js +45 -0
  129. package/dist/components/Kanban/KanbanFilters.js.map +1 -0
  130. package/dist/components/Kanban/index.d.ts +5 -0
  131. package/dist/components/Kanban/index.d.ts.map +1 -0
  132. package/dist/components/Kanban/index.js +6 -0
  133. package/dist/components/Kanban/index.js.map +1 -0
  134. package/dist/components/Kanban/kanbanHelpers.d.ts +76 -0
  135. package/dist/components/Kanban/kanbanHelpers.d.ts.map +1 -0
  136. package/dist/components/Kanban/kanbanHelpers.js +160 -0
  137. package/dist/components/Kanban/kanbanHelpers.js.map +1 -0
  138. package/dist/components/Memory/MemoryOntologyEditor.d.ts +27 -0
  139. package/dist/components/Memory/MemoryOntologyEditor.d.ts.map +1 -0
  140. package/dist/components/Memory/MemoryOntologyEditor.js +225 -0
  141. package/dist/components/Memory/MemoryOntologyEditor.js.map +1 -0
  142. package/dist/components/Memory/MemorySearchForm.d.ts +46 -0
  143. package/dist/components/Memory/MemorySearchForm.d.ts.map +1 -0
  144. package/dist/components/Memory/MemorySearchForm.js +194 -0
  145. package/dist/components/Memory/MemorySearchForm.js.map +1 -0
  146. package/dist/components/Memory/index.d.ts +4 -0
  147. package/dist/components/Memory/index.d.ts.map +1 -0
  148. package/dist/components/Memory/index.js +3 -0
  149. package/dist/components/Memory/index.js.map +1 -0
  150. package/dist/components/ModelPicker.d.ts +5 -0
  151. package/dist/components/ModelPicker.d.ts.map +1 -0
  152. package/dist/components/ModelPicker.js +7 -0
  153. package/dist/components/ModelPicker.js.map +1 -0
  154. package/dist/components/Observability/ActivityFeed.d.ts +13 -0
  155. package/dist/components/Observability/ActivityFeed.d.ts.map +1 -0
  156. package/dist/components/Observability/ActivityFeed.js +155 -0
  157. package/dist/components/Observability/ActivityFeed.js.map +1 -0
  158. package/dist/components/Observability/ToolInspector.d.ts +22 -0
  159. package/dist/components/Observability/ToolInspector.d.ts.map +1 -0
  160. package/dist/components/Observability/ToolInspector.js +166 -0
  161. package/dist/components/Observability/ToolInspector.js.map +1 -0
  162. package/dist/components/Observability/index.d.ts +4 -0
  163. package/dist/components/Observability/index.d.ts.map +1 -0
  164. package/dist/components/Observability/index.js +3 -0
  165. package/dist/components/Observability/index.js.map +1 -0
  166. package/dist/components/Rendering/EffectTreeView.d.ts +20 -0
  167. package/dist/components/Rendering/EffectTreeView.d.ts.map +1 -0
  168. package/dist/components/Rendering/EffectTreeView.js +123 -0
  169. package/dist/components/Rendering/EffectTreeView.js.map +1 -0
  170. package/dist/components/Rendering/MessageTypeRenderer.d.ts +4 -0
  171. package/dist/components/Rendering/MessageTypeRenderer.d.ts.map +1 -0
  172. package/dist/components/Rendering/MessageTypeRenderer.js +108 -0
  173. package/dist/components/Rendering/MessageTypeRenderer.js.map +1 -0
  174. package/dist/components/Rendering/ProgressStatusLine.d.ts +9 -0
  175. package/dist/components/Rendering/ProgressStatusLine.d.ts.map +1 -0
  176. package/dist/components/Rendering/ProgressStatusLine.js +57 -0
  177. package/dist/components/Rendering/ProgressStatusLine.js.map +1 -0
  178. package/dist/components/Rendering/StreamingOutputPanel.d.ts +20 -0
  179. package/dist/components/Rendering/StreamingOutputPanel.d.ts.map +1 -0
  180. package/dist/components/Rendering/StreamingOutputPanel.js +75 -0
  181. package/dist/components/Rendering/StreamingOutputPanel.js.map +1 -0
  182. package/dist/components/Rendering/StructuredDiffView.d.ts +13 -0
  183. package/dist/components/Rendering/StructuredDiffView.d.ts.map +1 -0
  184. package/dist/components/Rendering/StructuredDiffView.js +106 -0
  185. package/dist/components/Rendering/StructuredDiffView.js.map +1 -0
  186. package/dist/components/Rendering/SubagentDrillDown.d.ts +46 -0
  187. package/dist/components/Rendering/SubagentDrillDown.d.ts.map +1 -0
  188. package/dist/components/Rendering/SubagentDrillDown.js +101 -0
  189. package/dist/components/Rendering/SubagentDrillDown.js.map +1 -0
  190. package/dist/components/Rendering/index.d.ts +12 -0
  191. package/dist/components/Rendering/index.d.ts.map +1 -0
  192. package/dist/components/Rendering/index.js +10 -0
  193. package/dist/components/Rendering/index.js.map +1 -0
  194. package/dist/components/RunStatusBadge.d.ts +3 -0
  195. package/dist/components/RunStatusBadge.d.ts.map +1 -0
  196. package/dist/components/RunStatusBadge.js +7 -0
  197. package/dist/components/RunStatusBadge.js.map +1 -0
  198. package/dist/components/Session/SessionCost.d.ts +22 -0
  199. package/dist/components/Session/SessionCost.d.ts.map +1 -0
  200. package/dist/components/Session/SessionCost.js +168 -0
  201. package/dist/components/Session/SessionCost.js.map +1 -0
  202. package/dist/components/Session/SessionShell.d.ts +63 -0
  203. package/dist/components/Session/SessionShell.d.ts.map +1 -0
  204. package/dist/components/Session/SessionShell.js +150 -0
  205. package/dist/components/Session/SessionShell.js.map +1 -0
  206. package/dist/components/Session/SessionTabs.d.ts +6 -0
  207. package/dist/components/Session/SessionTabs.d.ts.map +1 -0
  208. package/dist/components/Session/SessionTabs.js +7 -0
  209. package/dist/components/Session/SessionTabs.js.map +1 -0
  210. package/dist/components/Session/index.d.ts +7 -0
  211. package/dist/components/Session/index.d.ts.map +1 -0
  212. package/dist/components/Session/index.js +5 -0
  213. package/dist/components/Session/index.js.map +1 -0
  214. package/dist/components/Session/sessionUtils.d.ts +31 -0
  215. package/dist/components/Session/sessionUtils.d.ts.map +1 -0
  216. package/dist/components/Session/sessionUtils.js +90 -0
  217. package/dist/components/Session/sessionUtils.js.map +1 -0
  218. package/dist/components/SessionListItem.d.ts +5 -0
  219. package/dist/components/SessionListItem.d.ts.map +1 -0
  220. package/dist/components/SessionListItem.js +8 -0
  221. package/dist/components/SessionListItem.js.map +1 -0
  222. package/dist/components/Workspace/WorkspaceAssociations.d.ts +10 -0
  223. package/dist/components/Workspace/WorkspaceAssociations.d.ts.map +1 -0
  224. package/dist/components/Workspace/WorkspaceAssociations.js +72 -0
  225. package/dist/components/Workspace/WorkspaceAssociations.js.map +1 -0
  226. package/dist/components/Workspace/WorkspaceCodespace.d.ts +18 -0
  227. package/dist/components/Workspace/WorkspaceCodespace.d.ts.map +1 -0
  228. package/dist/components/Workspace/WorkspaceCodespace.js +91 -0
  229. package/dist/components/Workspace/WorkspaceCodespace.js.map +1 -0
  230. package/dist/components/Workspace/WorkspacePanel.d.ts +89 -0
  231. package/dist/components/Workspace/WorkspacePanel.d.ts.map +1 -0
  232. package/dist/components/Workspace/WorkspacePanel.js +451 -0
  233. package/dist/components/Workspace/WorkspacePanel.js.map +1 -0
  234. package/dist/components/Workspace/index.d.ts +6 -0
  235. package/dist/components/Workspace/index.d.ts.map +1 -0
  236. package/dist/components/Workspace/index.js +4 -0
  237. package/dist/components/Workspace/index.js.map +1 -0
  238. package/dist/components/event-cards/TextDeltaBubble.d.ts +3 -0
  239. package/dist/components/event-cards/TextDeltaBubble.d.ts.map +1 -0
  240. package/dist/components/event-cards/TextDeltaBubble.js +7 -0
  241. package/dist/components/event-cards/TextDeltaBubble.js.map +1 -0
  242. package/dist/components/event-cards/ThinkingBubble.d.ts +3 -0
  243. package/dist/components/event-cards/ThinkingBubble.d.ts.map +1 -0
  244. package/dist/components/event-cards/ThinkingBubble.js +7 -0
  245. package/dist/components/event-cards/ThinkingBubble.js.map +1 -0
  246. package/dist/components/event-cards/ToolCallCard.d.ts +7 -0
  247. package/dist/components/event-cards/ToolCallCard.d.ts.map +1 -0
  248. package/dist/components/event-cards/ToolCallCard.js +27 -0
  249. package/dist/components/event-cards/ToolCallCard.js.map +1 -0
  250. package/dist/components/event-cards/ToolResultCard.d.ts +7 -0
  251. package/dist/components/event-cards/ToolResultCard.d.ts.map +1 -0
  252. package/dist/components/event-cards/ToolResultCard.js +20 -0
  253. package/dist/components/event-cards/ToolResultCard.js.map +1 -0
  254. package/dist/components/event-cards/builtins.d.ts +1 -0
  255. package/dist/components/event-cards/builtins.d.ts.map +1 -0
  256. package/dist/components/event-cards/builtins.js +31 -0
  257. package/dist/components/event-cards/builtins.js.map +1 -0
  258. package/dist/components/event-cards/index.d.ts +6 -0
  259. package/dist/components/event-cards/index.d.ts.map +1 -0
  260. package/dist/components/event-cards/index.js +6 -0
  261. package/dist/components/event-cards/index.js.map +1 -0
  262. package/dist/components/event-cards/registry.d.ts +24 -0
  263. package/dist/components/event-cards/registry.d.ts.map +1 -0
  264. package/dist/components/event-cards/registry.js +24 -0
  265. package/dist/components/event-cards/registry.js.map +1 -0
  266. package/dist/components/event-cards/renderers/bash.d.ts +2 -0
  267. package/dist/components/event-cards/renderers/bash.d.ts.map +1 -0
  268. package/dist/components/event-cards/renderers/bash.js +8 -0
  269. package/dist/components/event-cards/renderers/bash.js.map +1 -0
  270. package/dist/components/event-cards/renderers/edit.d.ts +2 -0
  271. package/dist/components/event-cards/renderers/edit.d.ts.map +1 -0
  272. package/dist/components/event-cards/renderers/edit.js +8 -0
  273. package/dist/components/event-cards/renderers/edit.js.map +1 -0
  274. package/dist/components/event-cards/renderers/generic.d.ts +2 -0
  275. package/dist/components/event-cards/renderers/generic.d.ts.map +1 -0
  276. package/dist/components/event-cards/renderers/generic.js +33 -0
  277. package/dist/components/event-cards/renderers/generic.js.map +1 -0
  278. package/dist/components/event-cards/renderers/glob.d.ts +2 -0
  279. package/dist/components/event-cards/renderers/glob.d.ts.map +1 -0
  280. package/dist/components/event-cards/renderers/glob.js +8 -0
  281. package/dist/components/event-cards/renderers/glob.js.map +1 -0
  282. package/dist/components/event-cards/renderers/grep.d.ts +2 -0
  283. package/dist/components/event-cards/renderers/grep.d.ts.map +1 -0
  284. package/dist/components/event-cards/renderers/grep.js +8 -0
  285. package/dist/components/event-cards/renderers/grep.js.map +1 -0
  286. package/dist/components/event-cards/renderers/read.d.ts +2 -0
  287. package/dist/components/event-cards/renderers/read.d.ts.map +1 -0
  288. package/dist/components/event-cards/renderers/read.js +8 -0
  289. package/dist/components/event-cards/renderers/read.js.map +1 -0
  290. package/dist/components/event-cards/renderers/web-fetch.d.ts +2 -0
  291. package/dist/components/event-cards/renderers/web-fetch.d.ts.map +1 -0
  292. package/dist/components/event-cards/renderers/web-fetch.js +8 -0
  293. package/dist/components/event-cards/renderers/web-fetch.js.map +1 -0
  294. package/dist/components/event-cards/renderers/web-search.d.ts +2 -0
  295. package/dist/components/event-cards/renderers/web-search.d.ts.map +1 -0
  296. package/dist/components/event-cards/renderers/web-search.js +8 -0
  297. package/dist/components/event-cards/renderers/web-search.js.map +1 -0
  298. package/dist/components/event-cards/renderers/write.d.ts +2 -0
  299. package/dist/components/event-cards/renderers/write.d.ts.map +1 -0
  300. package/dist/components/event-cards/renderers/write.js +8 -0
  301. package/dist/components/event-cards/renderers/write.js.map +1 -0
  302. package/dist/components/primitives/Button.d.ts +5 -0
  303. package/dist/components/primitives/Button.d.ts.map +1 -0
  304. package/dist/components/primitives/Button.js +19 -0
  305. package/dist/components/primitives/Button.js.map +1 -0
  306. package/dist/components/primitives/Card.d.ts +2 -0
  307. package/dist/components/primitives/Card.d.ts.map +1 -0
  308. package/dist/components/primitives/Card.js +22 -0
  309. package/dist/components/primitives/Card.js.map +1 -0
  310. package/dist/components/primitives/CommandPalette.d.ts +21 -0
  311. package/dist/components/primitives/CommandPalette.d.ts.map +1 -0
  312. package/dist/components/primitives/CommandPalette.js +229 -0
  313. package/dist/components/primitives/CommandPalette.js.map +1 -0
  314. package/dist/components/primitives/ConfirmDialog.d.ts +19 -0
  315. package/dist/components/primitives/ConfirmDialog.d.ts.map +1 -0
  316. package/dist/components/primitives/ConfirmDialog.js +78 -0
  317. package/dist/components/primitives/ConfirmDialog.js.map +1 -0
  318. package/dist/components/primitives/NotificationBell.d.ts +5 -0
  319. package/dist/components/primitives/NotificationBell.d.ts.map +1 -0
  320. package/dist/components/primitives/NotificationBell.js +202 -0
  321. package/dist/components/primitives/NotificationBell.js.map +1 -0
  322. package/dist/components/primitives/Pagination.d.ts +14 -0
  323. package/dist/components/primitives/Pagination.d.ts.map +1 -0
  324. package/dist/components/primitives/Pagination.js +46 -0
  325. package/dist/components/primitives/Pagination.js.map +1 -0
  326. package/dist/components/primitives/ScrollContainer.d.ts +2 -0
  327. package/dist/components/primitives/ScrollContainer.d.ts.map +1 -0
  328. package/dist/components/primitives/ScrollContainer.js +17 -0
  329. package/dist/components/primitives/ScrollContainer.js.map +1 -0
  330. package/dist/components/primitives/Text.d.ts +2 -0
  331. package/dist/components/primitives/Text.d.ts.map +1 -0
  332. package/dist/components/primitives/Text.js +14 -0
  333. package/dist/components/primitives/Text.js.map +1 -0
  334. package/dist/components/primitives/index.d.ts +13 -0
  335. package/dist/components/primitives/index.d.ts.map +1 -0
  336. package/dist/components/primitives/index.js +9 -0
  337. package/dist/components/primitives/index.js.map +1 -0
  338. package/dist/components/primitives/theme.d.ts +8 -0
  339. package/dist/components/primitives/theme.d.ts.map +1 -0
  340. package/dist/components/primitives/theme.js +10 -0
  341. package/dist/components/primitives/theme.js.map +1 -0
  342. package/dist/components/session-flow/SessionFlowView.d.ts +9 -0
  343. package/dist/components/session-flow/SessionFlowView.d.ts.map +1 -0
  344. package/dist/components/session-flow/SessionFlowView.js +228 -0
  345. package/dist/components/session-flow/SessionFlowView.js.map +1 -0
  346. package/dist/gateway.d.ts +8 -0
  347. package/dist/gateway.d.ts.map +1 -0
  348. package/dist/gateway.js +8 -0
  349. package/dist/gateway.js.map +1 -0
  350. package/dist/hooks/GatewayProvider.d.ts +10 -0
  351. package/dist/hooks/GatewayProvider.d.ts.map +1 -0
  352. package/dist/hooks/GatewayProvider.js +84 -0
  353. package/dist/hooks/GatewayProvider.js.map +1 -0
  354. package/dist/hooks/useAgents.d.ts +1 -0
  355. package/dist/hooks/useAgents.d.ts.map +1 -0
  356. package/dist/hooks/useAgents.js +7 -0
  357. package/dist/hooks/useAgents.js.map +1 -0
  358. package/dist/hooks/useConnection.d.ts +1 -0
  359. package/dist/hooks/useConnection.d.ts.map +1 -0
  360. package/dist/hooks/useConnection.js +7 -0
  361. package/dist/hooks/useConnection.js.map +1 -0
  362. package/dist/hooks/useCostTotals.d.ts +3 -0
  363. package/dist/hooks/useCostTotals.d.ts.map +1 -0
  364. package/dist/hooks/useCostTotals.js +8 -0
  365. package/dist/hooks/useCostTotals.js.map +1 -0
  366. package/dist/hooks/useGateway.d.ts +4 -0
  367. package/dist/hooks/useGateway.d.ts.map +1 -0
  368. package/dist/hooks/useGateway.js +11 -0
  369. package/dist/hooks/useGateway.js.map +1 -0
  370. package/dist/hooks/useHookRequests.d.ts +1 -0
  371. package/dist/hooks/useHookRequests.d.ts.map +1 -0
  372. package/dist/hooks/useHookRequests.js +9 -0
  373. package/dist/hooks/useHookRequests.js.map +1 -0
  374. package/dist/hooks/useRun.d.ts +1 -0
  375. package/dist/hooks/useRun.d.ts.map +1 -0
  376. package/dist/hooks/useRun.js +7 -0
  377. package/dist/hooks/useRun.js.map +1 -0
  378. package/dist/hooks/useRunEvents.d.ts +8 -0
  379. package/dist/hooks/useRunEvents.d.ts.map +1 -0
  380. package/dist/hooks/useRunEvents.js +8 -0
  381. package/dist/hooks/useRunEvents.js.map +1 -0
  382. package/dist/hooks/useSendSessionMessage.d.ts +6 -0
  383. package/dist/hooks/useSendSessionMessage.d.ts.map +1 -0
  384. package/dist/hooks/useSendSessionMessage.js +19 -0
  385. package/dist/hooks/useSendSessionMessage.js.map +1 -0
  386. package/dist/hooks/useSession.d.ts +1 -0
  387. package/dist/hooks/useSession.d.ts.map +1 -0
  388. package/dist/hooks/useSession.js +7 -0
  389. package/dist/hooks/useSession.js.map +1 -0
  390. package/dist/hooks/useSessions.d.ts +1 -0
  391. package/dist/hooks/useSessions.d.ts.map +1 -0
  392. package/dist/hooks/useSessions.js +8 -0
  393. package/dist/hooks/useSessions.js.map +1 -0
  394. package/dist/hooks/useStartSession.d.ts +10 -0
  395. package/dist/hooks/useStartSession.d.ts.map +1 -0
  396. package/dist/hooks/useStartSession.js +29 -0
  397. package/dist/hooks/useStartSession.js.map +1 -0
  398. package/dist/hooks/useStopRun.d.ts +1 -0
  399. package/dist/hooks/useStopRun.d.ts.map +1 -0
  400. package/dist/hooks/useStopRun.js +11 -0
  401. package/dist/hooks/useStopRun.js.map +1 -0
  402. package/dist/index.d.ts +49 -0
  403. package/dist/index.d.ts.map +1 -0
  404. package/dist/index.js +46 -0
  405. package/dist/index.js.map +1 -0
  406. package/dist/protocol/v1.d.ts +111 -0
  407. package/dist/protocol/v1.d.ts.map +1 -0
  408. package/dist/protocol/v1.js +2 -0
  409. package/dist/protocol/v1.js.map +1 -0
  410. package/dist/screens/AgentsScreen.d.ts +4 -0
  411. package/dist/screens/AgentsScreen.d.ts.map +1 -0
  412. package/dist/screens/AgentsScreen.js +9 -0
  413. package/dist/screens/AgentsScreen.js.map +1 -0
  414. package/dist/screens/HookInboxScreen.d.ts +1 -0
  415. package/dist/screens/HookInboxScreen.d.ts.map +1 -0
  416. package/dist/screens/HookInboxScreen.js +19 -0
  417. package/dist/screens/HookInboxScreen.js.map +1 -0
  418. package/dist/screens/NewRunScreen.d.ts +6 -0
  419. package/dist/screens/NewRunScreen.d.ts.map +1 -0
  420. package/dist/screens/NewRunScreen.js +35 -0
  421. package/dist/screens/NewRunScreen.js.map +1 -0
  422. package/dist/screens/SessionDetailScreen.d.ts +3 -0
  423. package/dist/screens/SessionDetailScreen.d.ts.map +1 -0
  424. package/dist/screens/SessionDetailScreen.js +46 -0
  425. package/dist/screens/SessionDetailScreen.js.map +1 -0
  426. package/dist/screens/SessionListScreen.d.ts +3 -0
  427. package/dist/screens/SessionListScreen.d.ts.map +1 -0
  428. package/dist/screens/SessionListScreen.js +9 -0
  429. package/dist/screens/SessionListScreen.js.map +1 -0
  430. package/dist/screens/SettingsScreen.d.ts +1 -0
  431. package/dist/screens/SettingsScreen.d.ts.map +1 -0
  432. package/dist/screens/SettingsScreen.js +9 -0
  433. package/dist/screens/SettingsScreen.js.map +1 -0
  434. package/dist/session-flow/adapters.d.ts +36 -0
  435. package/dist/session-flow/adapters.d.ts.map +1 -0
  436. package/dist/session-flow/adapters.js +362 -0
  437. package/dist/session-flow/adapters.js.map +1 -0
  438. package/dist/session-flow/cost.d.ts +2 -0
  439. package/dist/session-flow/cost.d.ts.map +1 -0
  440. package/dist/session-flow/cost.js +30 -0
  441. package/dist/session-flow/cost.js.map +1 -0
  442. package/dist/session-flow/file-attention.d.ts +3 -0
  443. package/dist/session-flow/file-attention.d.ts.map +1 -0
  444. package/dist/session-flow/file-attention.js +43 -0
  445. package/dist/session-flow/file-attention.js.map +1 -0
  446. package/dist/session-flow/model.d.ts +6 -0
  447. package/dist/session-flow/model.d.ts.map +1 -0
  448. package/dist/session-flow/model.js +110 -0
  449. package/dist/session-flow/model.js.map +1 -0
  450. package/dist/session-flow/native.d.ts +3 -0
  451. package/dist/session-flow/native.d.ts.map +1 -0
  452. package/dist/session-flow/native.js +185 -0
  453. package/dist/session-flow/native.js.map +1 -0
  454. package/dist/session-flow/projector.d.ts +8 -0
  455. package/dist/session-flow/projector.d.ts.map +1 -0
  456. package/dist/session-flow/projector.js +392 -0
  457. package/dist/session-flow/projector.js.map +1 -0
  458. package/dist/session-flow/types.d.ts +87 -0
  459. package/dist/session-flow/types.d.ts.map +1 -0
  460. package/dist/session-flow/types.js +2 -0
  461. package/dist/session-flow/types.js.map +1 -0
  462. package/dist/session-flow/utils.d.ts +11 -0
  463. package/dist/session-flow/utils.d.ts.map +1 -0
  464. package/dist/session-flow/utils.js +118 -0
  465. package/dist/session-flow/utils.js.map +1 -0
  466. package/dist/session-flow.d.ts +7 -0
  467. package/dist/session-flow.d.ts.map +1 -0
  468. package/dist/session-flow.js +6 -0
  469. package/dist/session-flow.js.map +1 -0
  470. package/dist/store/index.d.ts +72 -0
  471. package/dist/store/index.d.ts.map +1 -0
  472. package/dist/store/index.js +145 -0
  473. package/dist/store/index.js.map +1 -0
  474. package/dist/store/selectors.d.ts +15 -0
  475. package/dist/store/selectors.d.ts.map +1 -0
  476. package/dist/store/selectors.js +72 -0
  477. package/dist/store/selectors.js.map +1 -0
  478. package/dist/store/slices/agents.d.ts +2 -0
  479. package/dist/store/slices/agents.d.ts.map +1 -0
  480. package/dist/store/slices/agents.js +4 -0
  481. package/dist/store/slices/agents.js.map +1 -0
  482. package/dist/store/slices/connection.d.ts +2 -0
  483. package/dist/store/slices/connection.d.ts.map +1 -0
  484. package/dist/store/slices/connection.js +4 -0
  485. package/dist/store/slices/connection.js.map +1 -0
  486. package/dist/store/slices/events.d.ts +2 -0
  487. package/dist/store/slices/events.d.ts.map +1 -0
  488. package/dist/store/slices/events.js +4 -0
  489. package/dist/store/slices/events.js.map +1 -0
  490. package/dist/store/slices/hooks.d.ts +2 -0
  491. package/dist/store/slices/hooks.d.ts.map +1 -0
  492. package/dist/store/slices/hooks.js +4 -0
  493. package/dist/store/slices/hooks.js.map +1 -0
  494. package/dist/store/slices/runs.d.ts +2 -0
  495. package/dist/store/slices/runs.d.ts.map +1 -0
  496. package/dist/store/slices/runs.js +4 -0
  497. package/dist/store/slices/runs.js.map +1 -0
  498. package/dist/store/slices/sessions.d.ts +2 -0
  499. package/dist/store/slices/sessions.d.ts.map +1 -0
  500. package/dist/store/slices/sessions.js +4 -0
  501. package/dist/store/slices/sessions.js.map +1 -0
  502. package/dist/theme/dark.d.ts +2 -0
  503. package/dist/theme/dark.d.ts.map +1 -0
  504. package/dist/theme/dark.js +21 -0
  505. package/dist/theme/dark.js.map +1 -0
  506. package/dist/theme/light.d.ts +2 -0
  507. package/dist/theme/light.d.ts.map +1 -0
  508. package/dist/theme/light.js +21 -0
  509. package/dist/theme/light.js.map +1 -0
  510. package/dist/theme/tokens.d.ts +20 -0
  511. package/dist/theme/tokens.d.ts.map +1 -0
  512. package/dist/theme/tokens.js +2 -0
  513. package/dist/theme/tokens.js.map +1 -0
  514. package/package.json +152 -0
@@ -0,0 +1,75 @@
1
+ // StreamingOutputPanel.ts — Streaming output panel management (GAP-UX-001f)
2
+ // Pure TypeScript: manages panels of streaming output with scrollback.
3
+ // ---------------------------------------------------------------------------
4
+ // StreamPanelManager
5
+ // ---------------------------------------------------------------------------
6
+ export class StreamPanelManager {
7
+ panels = new Map();
8
+ addPanel(id, title, opts) {
9
+ const panel = {
10
+ id,
11
+ title,
12
+ lines: [],
13
+ maxLines: opts?.maxLines ?? 500,
14
+ autoScroll: opts?.autoScroll ?? true,
15
+ };
16
+ this.panels.set(id, panel);
17
+ return panel;
18
+ }
19
+ appendLine(panelId, line) {
20
+ const panel = this.panels.get(panelId);
21
+ if (!panel)
22
+ return;
23
+ panel.lines.push(line);
24
+ // Trim from front if exceeding maxLines
25
+ if (panel.lines.length > panel.maxLines) {
26
+ const excess = panel.lines.length - panel.maxLines;
27
+ panel.lines.splice(0, excess);
28
+ }
29
+ }
30
+ getPanel(id) {
31
+ return this.panels.get(id);
32
+ }
33
+ listPanels() {
34
+ return Array.from(this.panels.values());
35
+ }
36
+ removePanel(id) {
37
+ return this.panels.delete(id);
38
+ }
39
+ clear(panelId) {
40
+ const panel = this.panels.get(panelId);
41
+ if (panel)
42
+ panel.lines = [];
43
+ }
44
+ }
45
+ // ---------------------------------------------------------------------------
46
+ // Panel text rendering
47
+ // ---------------------------------------------------------------------------
48
+ function repeatChar(char, count) {
49
+ return count > 0 ? char.repeat(count) : '';
50
+ }
51
+ export function formatPanelOutput(panel, width = 80) {
52
+ const innerWidth = Math.max(width - 4, 10); // 2 border chars + 2 padding
53
+ const titleText = ` ${panel.title} `;
54
+ const titlePadding = Math.max(innerWidth - titleText.length, 0);
55
+ const leftPad = Math.floor(titlePadding / 2);
56
+ const rightPad = titlePadding - leftPad;
57
+ const lines = [];
58
+ // Top border with title
59
+ lines.push(`┌${repeatChar('─', leftPad)}${titleText}${repeatChar('─', rightPad)}┐`);
60
+ // Content lines
61
+ if (panel.lines.length === 0) {
62
+ lines.push(`│ ${repeatChar(' ', innerWidth)} │`);
63
+ }
64
+ else {
65
+ for (const line of panel.lines) {
66
+ const truncated = line.length > innerWidth ? line.slice(0, innerWidth - 1) + '…' : line;
67
+ const padded = truncated + repeatChar(' ', innerWidth - truncated.length);
68
+ lines.push(`│ ${padded} │`);
69
+ }
70
+ }
71
+ // Bottom border
72
+ lines.push(`└${repeatChar('─', innerWidth + 2)}┘`);
73
+ return lines.join('\n');
74
+ }
75
+ //# sourceMappingURL=StreamingOutputPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingOutputPanel.js","sourceRoot":"","sources":["../../../src/components/Rendering/StreamingOutputPanel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type DiffLineType = 'add' | 'remove' | 'context';
2
+ export interface DiffLine {
3
+ type: DiffLineType;
4
+ content: string;
5
+ lineNumber: number | null;
6
+ }
7
+ export interface DiffHunk {
8
+ header: string;
9
+ lines: DiffLine[];
10
+ }
11
+ export declare function parseDiffOutput(diffText: string): DiffHunk[];
12
+ export declare function formatDiffText(hunks: DiffHunk[]): string;
13
+ export declare function formatDiffHtml(hunks: DiffHunk[]): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructuredDiffView.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/StructuredDiffView.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAMD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyC5D;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAaxD;AA0BD,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAuBxD"}
@@ -0,0 +1,106 @@
1
+ // StructuredDiffView.ts — Unified diff parsing and rendering (GAP-UX-001b)
2
+ // Pure TypeScript: parses unified diff output, renders text or HTML.
3
+ // ---------------------------------------------------------------------------
4
+ // Diff parsing
5
+ // ---------------------------------------------------------------------------
6
+ export function parseDiffOutput(diffText) {
7
+ const hunks = [];
8
+ const rawLines = diffText.split('\n');
9
+ let currentHunk = null;
10
+ let oldLine = 0;
11
+ let newLine = 0;
12
+ for (const rawLine of rawLines) {
13
+ // Hunk header: @@ -oldStart,oldCount +newStart,newCount @@
14
+ const hunkMatch = rawLine.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@(.*)$/);
15
+ if (hunkMatch) {
16
+ currentHunk = { header: rawLine, lines: [] };
17
+ hunks.push(currentHunk);
18
+ oldLine = parseInt(hunkMatch[1], 10);
19
+ newLine = parseInt(hunkMatch[2], 10);
20
+ continue;
21
+ }
22
+ // Skip file headers (---, +++, diff, index)
23
+ if (rawLine.startsWith('---') || rawLine.startsWith('+++') || rawLine.startsWith('diff ') || rawLine.startsWith('index ')) {
24
+ continue;
25
+ }
26
+ if (!currentHunk)
27
+ continue;
28
+ if (rawLine.startsWith('+')) {
29
+ currentHunk.lines.push({ type: 'add', content: rawLine.slice(1), lineNumber: newLine });
30
+ newLine++;
31
+ }
32
+ else if (rawLine.startsWith('-')) {
33
+ currentHunk.lines.push({ type: 'remove', content: rawLine.slice(1), lineNumber: oldLine });
34
+ oldLine++;
35
+ }
36
+ else if (rawLine.startsWith(' ') || rawLine === '') {
37
+ const content = rawLine.startsWith(' ') ? rawLine.slice(1) : rawLine;
38
+ currentHunk.lines.push({ type: 'context', content, lineNumber: newLine });
39
+ oldLine++;
40
+ newLine++;
41
+ }
42
+ }
43
+ return hunks;
44
+ }
45
+ // ---------------------------------------------------------------------------
46
+ // Text rendering
47
+ // ---------------------------------------------------------------------------
48
+ export function formatDiffText(hunks) {
49
+ if (hunks.length === 0)
50
+ return '(no changes)';
51
+ const lines = [];
52
+ for (const hunk of hunks) {
53
+ lines.push(hunk.header);
54
+ for (const line of hunk.lines) {
55
+ const prefix = line.type === 'add' ? '+' : line.type === 'remove' ? '-' : ' ';
56
+ const lineNum = line.lineNumber != null ? String(line.lineNumber).padStart(4) : ' ';
57
+ lines.push(`${lineNum} ${prefix} ${line.content}`);
58
+ }
59
+ }
60
+ return lines.join('\n');
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // HTML rendering
64
+ // ---------------------------------------------------------------------------
65
+ function escapeHtml(text) {
66
+ return text
67
+ .replace(/&/g, '&')
68
+ .replace(/</g, '&lt;')
69
+ .replace(/>/g, '&gt;')
70
+ .replace(/"/g, '&quot;');
71
+ }
72
+ const DIFF_LINE_CLASS = {
73
+ add: 'diff-add',
74
+ remove: 'diff-remove',
75
+ context: 'diff-context',
76
+ };
77
+ const DIFF_LINE_BG = {
78
+ add: '#e6ffec',
79
+ remove: '#ffebe9',
80
+ context: 'transparent',
81
+ };
82
+ export function formatDiffHtml(hunks) {
83
+ if (hunks.length === 0)
84
+ return '<div class="diff-view">(no changes)</div>';
85
+ let html = '<div class="diff-view">';
86
+ for (const hunk of hunks) {
87
+ html += `<div class="diff-hunk">`;
88
+ html += `<div class="diff-header">${escapeHtml(hunk.header)}</div>`;
89
+ html += `<table class="diff-table">`;
90
+ for (const line of hunk.lines) {
91
+ const cls = DIFF_LINE_CLASS[line.type];
92
+ const bg = DIFF_LINE_BG[line.type];
93
+ const prefix = line.type === 'add' ? '+' : line.type === 'remove' ? '-' : ' ';
94
+ const lineNum = line.lineNumber != null ? String(line.lineNumber) : '';
95
+ html += `<tr class="${cls}" style="background:${bg}">`;
96
+ html += `<td class="diff-line-num">${lineNum}</td>`;
97
+ html += `<td class="diff-prefix">${prefix}</td>`;
98
+ html += `<td class="diff-content">${escapeHtml(line.content)}</td>`;
99
+ html += `</tr>`;
100
+ }
101
+ html += `</table></div>`;
102
+ }
103
+ html += '</div>';
104
+ return html;
105
+ }
106
+ //# sourceMappingURL=StructuredDiffView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructuredDiffView.js","sourceRoot":"","sources":["../../../src/components/Rendering/StructuredDiffView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export type SubagentStatus = 'idle' | 'running' | 'completed' | 'failed' | 'cancelled';
2
+ export interface SubagentEffect {
3
+ id: string;
4
+ kind: string;
5
+ title: string;
6
+ status: string;
7
+ }
8
+ export interface SubagentView {
9
+ agentId: string;
10
+ status: SubagentStatus;
11
+ tokenUsage: {
12
+ input: number;
13
+ output: number;
14
+ };
15
+ effects: SubagentEffect[];
16
+ duration: number;
17
+ model: string;
18
+ }
19
+ export interface SubagentDrillDownData {
20
+ agents: SubagentView[];
21
+ selectedAgentId?: string;
22
+ expandedEffects: Set<string>;
23
+ }
24
+ export interface ProgressAgent {
25
+ id: string;
26
+ status?: string;
27
+ model?: string;
28
+ tokenUsage?: {
29
+ input?: number;
30
+ output?: number;
31
+ };
32
+ effects?: Array<{
33
+ id: string;
34
+ kind: string;
35
+ title: string;
36
+ status: string;
37
+ }>;
38
+ startedAt?: number;
39
+ completedAt?: number;
40
+ }
41
+ export interface ProgressTracker {
42
+ agents: ProgressAgent[];
43
+ }
44
+ export declare function buildSubagentView(tracker: ProgressTracker): SubagentDrillDownData;
45
+ export declare function formatSubagentSummary(view: SubagentView): string;
46
+ export declare function formatSubagentDetail(view: SubagentView): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubagentDrillDown.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/SubagentDrillDown.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAMD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAMD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,CAuBjF;AA+CD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAMhE;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAoB/D"}
@@ -0,0 +1,101 @@
1
+ // SubagentDrillDown.ts — Subagent drill-down view construction and rendering (GAP-SUBOBS-005)
2
+ // Pure TypeScript: builds subagent views and renders summary/detail strings.
3
+ // ---------------------------------------------------------------------------
4
+ // View construction
5
+ // ---------------------------------------------------------------------------
6
+ export function buildSubagentView(tracker) {
7
+ const agents = tracker.agents.map((agent) => ({
8
+ agentId: agent.id,
9
+ status: normalizeStatus(agent.status),
10
+ tokenUsage: {
11
+ input: agent.tokenUsage?.input ?? 0,
12
+ output: agent.tokenUsage?.output ?? 0,
13
+ },
14
+ effects: (agent.effects ?? []).map((e) => ({
15
+ id: e.id,
16
+ kind: e.kind,
17
+ title: e.title,
18
+ status: e.status,
19
+ })),
20
+ duration: computeDuration(agent.startedAt, agent.completedAt),
21
+ model: agent.model ?? 'unknown',
22
+ }));
23
+ return {
24
+ agents,
25
+ selectedAgentId: undefined,
26
+ expandedEffects: new Set(),
27
+ };
28
+ }
29
+ function normalizeStatus(status) {
30
+ const s = (status ?? '').toLowerCase();
31
+ if (s === 'idle' || s === 'running' || s === 'completed' || s === 'failed' || s === 'cancelled') {
32
+ return s;
33
+ }
34
+ if (s === 'error')
35
+ return 'failed';
36
+ if (s === 'done' || s === 'success')
37
+ return 'completed';
38
+ return 'idle';
39
+ }
40
+ function computeDuration(startedAt, completedAt) {
41
+ if (startedAt == null)
42
+ return 0;
43
+ const end = completedAt ?? Date.now();
44
+ return Math.max(end - startedAt, 0);
45
+ }
46
+ // ---------------------------------------------------------------------------
47
+ // Formatting helpers
48
+ // ---------------------------------------------------------------------------
49
+ function formatDuration(ms) {
50
+ if (ms < 1000)
51
+ return `${ms}ms`;
52
+ const seconds = Math.floor(ms / 1000);
53
+ if (seconds < 60)
54
+ return `${seconds}s`;
55
+ const minutes = Math.floor(seconds / 60);
56
+ const remainingSeconds = seconds % 60;
57
+ return remainingSeconds > 0 ? `${minutes}m ${remainingSeconds}s` : `${minutes}m`;
58
+ }
59
+ function formatTokens(usage) {
60
+ return `${usage.input.toLocaleString()}in/${usage.output.toLocaleString()}out`;
61
+ }
62
+ const STATUS_ICON = {
63
+ idle: '○', // ○
64
+ running: '◔', // ◔
65
+ completed: '✔', // ✔
66
+ failed: '✘', // ✘
67
+ cancelled: '–', // –
68
+ };
69
+ // ---------------------------------------------------------------------------
70
+ // Summary rendering (one-line per agent)
71
+ // ---------------------------------------------------------------------------
72
+ export function formatSubagentSummary(view) {
73
+ const icon = STATUS_ICON[view.status] ?? '?';
74
+ const dur = formatDuration(view.duration);
75
+ const tokens = formatTokens(view.tokenUsage);
76
+ const effectCount = view.effects.length;
77
+ return `${icon} ${view.agentId} [${view.model}] ${view.status} | ${dur} | ${tokens} | ${effectCount} effect${effectCount !== 1 ? 's' : ''}`;
78
+ }
79
+ // ---------------------------------------------------------------------------
80
+ // Detail rendering (expanded with effects)
81
+ // ---------------------------------------------------------------------------
82
+ export function formatSubagentDetail(view) {
83
+ const lines = [];
84
+ const icon = STATUS_ICON[view.status] ?? '?';
85
+ lines.push(`${icon} Agent: ${view.agentId}`);
86
+ lines.push(` Model: ${view.model}`);
87
+ lines.push(` Status: ${view.status}`);
88
+ lines.push(` Duration: ${formatDuration(view.duration)}`);
89
+ lines.push(` Tokens: ${formatTokens(view.tokenUsage)}`);
90
+ if (view.effects.length > 0) {
91
+ lines.push(` Effects (${view.effects.length}):`);
92
+ for (const effect of view.effects) {
93
+ lines.push(` │ [${effect.kind}] ${effect.title} (${effect.status})`);
94
+ }
95
+ }
96
+ else {
97
+ lines.push(' Effects: (none)');
98
+ }
99
+ return lines.join('\n');
100
+ }
101
+ //# sourceMappingURL=SubagentDrillDown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubagentDrillDown.js","sourceRoot":"","sources":["../../../src/components/Rendering/SubagentDrillDown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { buildEffectTree, formatEffectTreeText, renderEffectTreeHtml, } from './EffectTreeView.js';
2
+ export type { EffectStatus, EffectTreeNode, FlatEffect, } from './EffectTreeView.js';
3
+ export { formatProgressBar, formatStatusLine, } from './ProgressStatusLine.js';
4
+ export type { ProgressData, } from './ProgressStatusLine.js';
5
+ export { StreamPanelManager, formatPanelOutput, } from './StreamingOutputPanel.js';
6
+ export type { StreamPanel, } from './StreamingOutputPanel.js';
7
+ export { parseDiffOutput, formatDiffText, formatDiffHtml, } from './StructuredDiffView.js';
8
+ export type { DiffLine, DiffLineType, DiffHunk, } from './StructuredDiffView.js';
9
+ export { detectMessageType, formatMessageText, formatMessageHtml, } from './MessageTypeRenderer.js';
10
+ export type { MessageType, } from './MessageTypeRenderer.js';
11
+ export { buildSubagentView, formatSubagentSummary, formatSubagentDetail, } from './SubagentDrillDown.js';
12
+ export type { SubagentStatus, SubagentEffect, SubagentView, SubagentDrillDownData, ProgressAgent, ProgressTracker, } from './SubagentDrillDown.js';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Rendering/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,eAAe,GAChB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,10 @@
1
+ // Rendering primitives barrel export — pure TypeScript rendering utilities
2
+ // for effect trees, progress bars, streaming panels, diffs, message types,
3
+ // and subagent drill-down views.
4
+ export { buildEffectTree, formatEffectTreeText, renderEffectTreeHtml, } from './EffectTreeView.js';
5
+ export { formatProgressBar, formatStatusLine, } from './ProgressStatusLine.js';
6
+ export { StreamPanelManager, formatPanelOutput, } from './StreamingOutputPanel.js';
7
+ export { parseDiffOutput, formatDiffText, formatDiffHtml, } from './StructuredDiffView.js';
8
+ export { detectMessageType, formatMessageText, formatMessageHtml, } from './MessageTypeRenderer.js';
9
+ export { buildSubagentView, formatSubagentSummary, formatSubagentDetail, } from './SubagentDrillDown.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Rendering/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,iCAAiC;AAEjC,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function RunStatusBadge(props: {
2
+ status: string;
3
+ }): JSX.Element;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunStatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/RunStatusBadge.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAMrE"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Card } from './primitives/Card.js';
3
+ import { Text } from './primitives/Text.js';
4
+ export function RunStatusBadge(props) {
5
+ return (_jsx(Card, { children: _jsx(Text, { children: props.status }) }));
6
+ }
7
+ //# sourceMappingURL=RunStatusBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunStatusBadge.js","sourceRoot":"","sources":["../../src/components/RunStatusBadge.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,OAAO,CACL,KAAC,IAAI,cACH,KAAC,IAAI,cAAE,KAAK,CAAC,MAAM,GAAQ,GACtB,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface TurnUsage {
2
+ id?: string;
3
+ turnId?: string;
4
+ messageId?: string;
5
+ timestamp?: string;
6
+ model?: string;
7
+ modelId?: string;
8
+ inputTokens?: number;
9
+ input_tokens?: number;
10
+ outputTokens?: number;
11
+ output_tokens?: number;
12
+ cacheReadTokens?: number;
13
+ cache_read_input_tokens?: number;
14
+ cacheWriteTokens?: number;
15
+ cache_write_input_tokens?: number;
16
+ }
17
+ export interface SessionCostProps {
18
+ turns?: TurnUsage[];
19
+ totalCost?: number | string | null;
20
+ compact?: boolean;
21
+ }
22
+ export declare function SessionCost({ turns, totalCost, compact }: SessionCostProps): JSX.Element;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionCost.d.ts","sourceRoot":"","sources":["../../../src/components/Session/SessionCost.tsx"],"names":[],"mappings":"AA2CA,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AA6KD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAU,EAAE,SAAS,EAAE,OAAe,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAsGrG"}
@@ -0,0 +1,168 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ const MODEL_PRICING = {
4
+ 'claude-opus-4': { input: 15, output: 75, cacheRead: 1.5, cacheWrite: 18.75 },
5
+ 'claude-opus-4-5': { input: 15, output: 75, cacheRead: 1.5, cacheWrite: 18.75 },
6
+ 'claude-sonnet-4': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
7
+ 'claude-sonnet-4-5': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
8
+ 'claude-sonnet-3-7': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
9
+ 'claude-sonnet-3-5': { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 3.75 },
10
+ 'claude-haiku-3-5': { input: 0.8, output: 4, cacheRead: 0.08, cacheWrite: 1 },
11
+ 'claude-haiku-3': { input: 0.25, output: 1.25, cacheRead: 0.03, cacheWrite: 0.3 },
12
+ 'gpt-4o': { input: 2.5, output: 10, cacheRead: 1.25, cacheWrite: 0 },
13
+ 'gpt-4o-mini': { input: 0.15, output: 0.6, cacheRead: 0.075, cacheWrite: 0 },
14
+ 'gpt-4-turbo': { input: 10, output: 30, cacheRead: 0, cacheWrite: 0 },
15
+ 'gpt-4': { input: 30, output: 60, cacheRead: 0, cacheWrite: 0 },
16
+ };
17
+ function normalizeModelKey(model) {
18
+ if (!model)
19
+ return null;
20
+ const s = model.toLowerCase().replace(/[_\s]/g, '-');
21
+ if (MODEL_PRICING[s])
22
+ return s;
23
+ const keys = Object.keys(MODEL_PRICING);
24
+ let best = null;
25
+ for (const key of keys) {
26
+ if (s.startsWith(key) || s.includes(key)) {
27
+ if (!best || key.length > best.length)
28
+ best = key;
29
+ }
30
+ }
31
+ return best;
32
+ }
33
+ function computeTurnCost(turn) {
34
+ const model = turn.model || turn.modelId || '';
35
+ const key = normalizeModelKey(model);
36
+ const rates = key ? MODEL_PRICING[key] : null;
37
+ if (!rates)
38
+ return null;
39
+ const inputTokens = turn.inputTokens || turn.input_tokens || 0;
40
+ const outputTokens = turn.outputTokens || turn.output_tokens || 0;
41
+ const cacheRead = turn.cacheReadTokens || turn.cache_read_input_tokens || 0;
42
+ const cacheWrite = turn.cacheWriteTokens || turn.cache_write_input_tokens || 0;
43
+ return ((inputTokens * rates.input +
44
+ outputTokens * rates.output +
45
+ cacheRead * rates.cacheRead +
46
+ cacheWrite * rates.cacheWrite) /
47
+ 1_000_000);
48
+ }
49
+ function formatCost(usd) {
50
+ if (usd == null)
51
+ return '—';
52
+ if (usd < 0.0001)
53
+ return '<$0.0001';
54
+ if (usd < 0.01)
55
+ return `$${usd.toFixed(4)}`;
56
+ return `$${usd.toFixed(3)}`;
57
+ }
58
+ function formatTokens(n) {
59
+ if (n == null || n === 0)
60
+ return '0';
61
+ if (n >= 1_000_000)
62
+ return `${(n / 1_000_000).toFixed(1)}M`;
63
+ if (n >= 1000)
64
+ return `${(n / 1000).toFixed(1)}k`;
65
+ return String(n);
66
+ }
67
+ function turnCostKey(turn) {
68
+ return turn.id ||
69
+ turn.turnId ||
70
+ turn.messageId ||
71
+ turn.timestamp ||
72
+ [
73
+ turn.model || turn.modelId || 'unknown-model',
74
+ turn.inputTokens || turn.input_tokens || 0,
75
+ turn.outputTokens || turn.output_tokens || 0,
76
+ turn.cacheReadTokens || turn.cache_read_input_tokens || 0,
77
+ turn.cacheWriteTokens || turn.cache_write_input_tokens || 0,
78
+ ].join(':') || '';
79
+ }
80
+ function TurnCostRow({ turn, index }) {
81
+ const [open, setOpen] = useState(false);
82
+ const model = turn.model || turn.modelId || '—';
83
+ const inputTokens = turn.inputTokens || turn.input_tokens || 0;
84
+ const outputTokens = turn.outputTokens || turn.output_tokens || 0;
85
+ const cacheRead = turn.cacheReadTokens || turn.cache_read_input_tokens || 0;
86
+ const cacheWrite = turn.cacheWriteTokens || turn.cache_write_input_tokens || 0;
87
+ const cost = computeTurnCost(turn);
88
+ const known = normalizeModelKey(model);
89
+ return (_jsxs("details", { open: open, onToggle: (e) => setOpen(e.target.open), style: { marginBottom: 4 }, children: [_jsxs("summary", { style: {
90
+ cursor: 'pointer',
91
+ display: 'flex',
92
+ alignItems: 'center',
93
+ gap: 8,
94
+ padding: '5px 8px',
95
+ backgroundColor: '#f8fafc',
96
+ border: '1px solid #e2e8f0',
97
+ borderRadius: 4,
98
+ fontSize: 12,
99
+ listStyle: 'none',
100
+ }, children: [_jsxs("span", { style: { color: 'var(--text-muted)', flexShrink: 0, fontSize: 11 }, children: ["Turn ", index + 1] }), _jsx("span", { style: {
101
+ fontFamily: 'monospace',
102
+ fontSize: 11,
103
+ color: 'var(--text)',
104
+ flex: 1,
105
+ overflow: 'hidden',
106
+ textOverflow: 'ellipsis',
107
+ whiteSpace: 'nowrap',
108
+ }, children: model }), _jsx("span", { style: {
109
+ fontFamily: 'monospace',
110
+ fontSize: 11,
111
+ fontWeight: 600,
112
+ color: cost != null ? '#1e293b' : '#9ca3af',
113
+ flexShrink: 0,
114
+ }, children: cost != null ? formatCost(cost) : '—' }), _jsx("span", { style: { fontSize: 10, color: 'var(--text-muted)', flexShrink: 0 }, children: open ? '▲' : '▼' })] }), _jsxs("div", { style: {
115
+ padding: '8px 10px',
116
+ border: '1px solid #e2e8f0',
117
+ borderTop: 'none',
118
+ borderRadius: '0 0 4px 4px',
119
+ backgroundColor: '#fff',
120
+ }, children: [_jsx("table", { style: { width: '100%', fontSize: 11, borderCollapse: 'collapse' }, children: _jsxs("tbody", { children: [_jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Input tokens" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(inputTokens) })] }), _jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Output tokens" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(outputTokens) })] }), cacheRead > 0 && (_jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Cache read" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(cacheRead) })] })), cacheWrite > 0 && (_jsxs("tr", { children: [_jsx("td", { style: { padding: '2px 8px 2px 0', color: 'var(--text-muted)' }, children: "Cache write" }), _jsx("td", { style: { fontFamily: 'monospace', textAlign: 'right' }, children: formatTokens(cacheWrite) })] })), _jsxs("tr", { style: { borderTop: '1px solid #e2e8f0' }, children: [_jsx("td", { style: { padding: '4px 8px 2px 0', color: 'var(--text)', fontWeight: 600 }, children: "Estimated cost" }), _jsx("td", { style: {
121
+ fontFamily: 'monospace',
122
+ textAlign: 'right',
123
+ fontWeight: 600,
124
+ color: cost != null ? '#1e293b' : '#9ca3af',
125
+ }, children: cost != null ? formatCost(cost) : known === null ? 'unknown model' : '—' })] })] }) }), !known && (_jsxs("p", { style: { fontSize: 10, color: 'var(--text-muted)', marginTop: 6 }, children: ["Pricing not available for model \"", model, "\". Cost cannot be estimated."] }))] })] }));
126
+ }
127
+ export function SessionCost({ turns = [], totalCost, compact = false }) {
128
+ const turnsWithUsage = (turns || []).filter((t) => ((t.inputTokens || t.input_tokens || 0) + (t.outputTokens || t.output_tokens || 0)) > 0);
129
+ const computedTotal = turnsWithUsage.reduce((acc, t) => {
130
+ const c = computeTurnCost(t);
131
+ return c != null ? acc + c : acc;
132
+ }, 0);
133
+ const displayTotal = totalCost != null
134
+ ? `$${Number(totalCost).toFixed(3)}`
135
+ : turnsWithUsage.length > 0
136
+ ? formatCost(computedTotal)
137
+ : '—';
138
+ const totalInputTokens = turnsWithUsage.reduce((acc, t) => acc + (t.inputTokens || t.input_tokens || 0), 0);
139
+ const totalOutputTokens = turnsWithUsage.reduce((acc, t) => acc + (t.outputTokens || t.output_tokens || 0), 0);
140
+ if (compact) {
141
+ return (_jsxs("div", { "aria-live": "polite", "aria-label": `Session cost: ${displayTotal}`, style: {
142
+ display: 'flex',
143
+ alignItems: 'center',
144
+ gap: 12,
145
+ fontSize: 12,
146
+ padding: '6px 10px',
147
+ backgroundColor: '#f8fafc',
148
+ border: '1px solid #e2e8f0',
149
+ borderRadius: 4,
150
+ }, children: [_jsx("span", { style: { color: 'var(--text-muted)' }, children: "Session cost" }), _jsx("strong", { style: { fontFamily: 'monospace', color: '#1e293b' }, children: displayTotal }), totalInputTokens > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { style: { color: '#d1d5db' }, children: "|" }), _jsxs("span", { style: { color: 'var(--text-muted)', fontSize: 11 }, children: [formatTokens(totalInputTokens), " in / ", formatTokens(totalOutputTokens), " out"] })] })), _jsxs("span", { style: { color: 'var(--text-muted)', fontSize: 11 }, children: [turnsWithUsage.length, " turns"] })] }));
151
+ }
152
+ return (_jsxs("div", { children: [_jsxs("div", { "aria-live": "polite", "aria-label": `Total session cost: ${displayTotal}`, style: {
153
+ display: 'flex',
154
+ alignItems: 'center',
155
+ gap: 8,
156
+ marginBottom: 10,
157
+ padding: '8px 10px',
158
+ backgroundColor: '#f0fdf4',
159
+ border: '1px solid #bbf7d0',
160
+ borderRadius: 4,
161
+ }, children: [_jsx("span", { style: { fontSize: 12, color: '#166534' }, children: "Total session cost" }), _jsx("strong", { style: {
162
+ fontFamily: 'monospace',
163
+ fontSize: 14,
164
+ color: '#14532d',
165
+ flex: 1,
166
+ }, children: displayTotal }), _jsxs("span", { style: { fontSize: 11, color: '#16a34a' }, children: [formatTokens(totalInputTokens), " in / ", formatTokens(totalOutputTokens), " out"] })] }), turnsWithUsage.length > 0 ? (_jsx("div", { children: turnsWithUsage.map((turn, turnIndex) => (_jsx(TurnCostRow, { turn: turn, index: turnIndex }, turnCostKey(turn)))) })) : (_jsx("p", { style: { fontSize: 13, color: 'var(--text-muted)', padding: '8px 0' }, children: "No per-turn token usage data available for this session." }))] }));
167
+ }
168
+ //# sourceMappingURL=SessionCost.js.map