@parhelia/core 0.1.12888 → 0.1.12889

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 (246) hide show
  1. package/dist/agents-view/AgentCard.d.ts +2 -1
  2. package/dist/agents-view/AgentCard.js +16 -35
  3. package/dist/agents-view/AgentCard.js.map +1 -1
  4. package/dist/agents-view/AgentGalleryCard.d.ts +12 -0
  5. package/dist/agents-view/AgentGalleryCard.js +13 -0
  6. package/dist/agents-view/AgentGalleryCard.js.map +1 -0
  7. package/dist/agents-view/AgentGalleryView.d.ts +18 -0
  8. package/dist/agents-view/AgentGalleryView.js +88 -0
  9. package/dist/agents-view/AgentGalleryView.js.map +1 -0
  10. package/dist/agents-view/AgentsView.js +39 -11
  11. package/dist/agents-view/AgentsView.js.map +1 -1
  12. package/dist/agents-view/AgentsWorkspaceView.js +40 -21
  13. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  14. package/dist/agents-view/DateAgentsGroup.d.ts +2 -1
  15. package/dist/agents-view/DateAgentsGroup.js +2 -2
  16. package/dist/agents-view/DateAgentsGroup.js.map +1 -1
  17. package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -1
  18. package/dist/agents-view/ProfileAgentsGroup.js +5 -5
  19. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  20. package/dist/agents-view/RenameAgentDialog.d.ts +12 -0
  21. package/dist/agents-view/RenameAgentDialog.js +40 -0
  22. package/dist/agents-view/RenameAgentDialog.js.map +1 -0
  23. package/dist/components/FilterInput.d.ts +2 -0
  24. package/dist/components/FilterInput.js +4 -2
  25. package/dist/components/FilterInput.js.map +1 -1
  26. package/dist/components/ui/alert-dialog.d.ts +1 -1
  27. package/dist/components/ui/alert-dialog.js +5 -5
  28. package/dist/components/ui/alert-dialog.js.map +1 -1
  29. package/dist/components/ui/alert.d.ts +3 -2
  30. package/dist/components/ui/alert.js +9 -4
  31. package/dist/components/ui/alert.js.map +1 -1
  32. package/dist/components/ui/badge.d.ts +1 -1
  33. package/dist/components/ui/button.d.ts +9 -4
  34. package/dist/components/ui/button.js +16 -9
  35. package/dist/components/ui/button.js.map +1 -1
  36. package/dist/components/ui/dialog.d.ts +1 -1
  37. package/dist/components/ui/dialog.js +4 -3
  38. package/dist/components/ui/dialog.js.map +1 -1
  39. package/dist/components/ui/styled-dialog-title.js +1 -1
  40. package/dist/components/ui/styled-dialog-title.js.map +1 -1
  41. package/dist/editor/FieldListField.js +6 -2
  42. package/dist/editor/FieldListField.js.map +1 -1
  43. package/dist/editor/GlobalMenuBar.js +2 -1
  44. package/dist/editor/GlobalMenuBar.js.map +1 -1
  45. package/dist/editor/LinkEditorDialog.js +3 -3
  46. package/dist/editor/LinkEditorDialog.js.map +1 -1
  47. package/dist/editor/ai/AgentInlineDialogContent.js +1 -1
  48. package/dist/editor/ai/AgentInlineDialogContent.js.map +1 -1
  49. package/dist/editor/ai/Agents.js +2 -2
  50. package/dist/editor/ai/Agents.js.map +1 -1
  51. package/dist/editor/ai/InlineAiDialog.js +1 -1
  52. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  53. package/dist/editor/ai/dialogs/QuestionnaireInline.js +52 -82
  54. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  55. package/dist/editor/ai/terminal/agentQuestionnaireRecap.d.ts +82 -0
  56. package/dist/editor/ai/terminal/agentQuestionnaireRecap.js +277 -0
  57. package/dist/editor/ai/terminal/agentQuestionnaireRecap.js.map +1 -0
  58. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.d.ts +3 -0
  59. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.js +3 -3
  60. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.js.map +1 -1
  61. package/dist/editor/ai/terminal/agentSessionLiveTotals.d.ts +5 -0
  62. package/dist/editor/ai/terminal/agentSessionLiveTotals.js +14 -0
  63. package/dist/editor/ai/terminal/agentSessionLiveTotals.js.map +1 -1
  64. package/dist/editor/ai/terminal/agentSessionSnapshot.js +2 -0
  65. package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
  66. package/dist/editor/ai/terminal/components/AgentGreeting.js +5 -2
  67. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  68. package/dist/editor/ai/terminal/components/AgentProjectProgress.d.ts +12 -0
  69. package/dist/editor/ai/terminal/components/AgentProjectProgress.js +207 -0
  70. package/dist/editor/ai/terminal/components/AgentProjectProgress.js.map +1 -0
  71. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +4 -3
  72. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +4 -19
  73. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  74. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +5 -1
  75. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +33 -2
  76. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  77. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +2 -0
  78. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +20 -1
  79. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  80. package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +3 -2
  81. package/dist/editor/ai/terminal/components/AgentTerminalView.js +11 -2
  82. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  83. package/dist/editor/ai/terminal/components/AiResponseMessage.js +59 -7
  84. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  85. package/dist/editor/ai/terminal/components/QuestionnaireRecap.d.ts +9 -0
  86. package/dist/editor/ai/terminal/components/QuestionnaireRecap.js +56 -0
  87. package/dist/editor/ai/terminal/components/QuestionnaireRecap.js.map +1 -0
  88. package/dist/editor/ai/terminal/contextBreakdown.d.ts +17 -0
  89. package/dist/editor/ai/terminal/contextBreakdown.js +58 -0
  90. package/dist/editor/ai/terminal/contextBreakdown.js.map +1 -0
  91. package/dist/editor/ai/terminal/types.d.ts +2 -0
  92. package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.d.ts +29 -0
  93. package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.js +68 -0
  94. package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.js.map +1 -0
  95. package/dist/editor/ai/terminal/useAgentInlineDialogEvents.js +8 -3
  96. package/dist/editor/ai/terminal/useAgentInlineDialogEvents.js.map +1 -1
  97. package/dist/editor/ai/terminal/useAgentInlineDialogState.d.ts +10 -3
  98. package/dist/editor/ai/terminal/useAgentInlineDialogState.js +33 -4
  99. package/dist/editor/ai/terminal/useAgentInlineDialogState.js.map +1 -1
  100. package/dist/editor/ai/terminal/useAgentRunResyncSocketHandler.js +16 -2
  101. package/dist/editor/ai/terminal/useAgentRunResyncSocketHandler.js.map +1 -1
  102. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +3 -1
  103. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
  104. package/dist/editor/ai/terminal/useAgentSession.js +12 -1
  105. package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
  106. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.d.ts +3 -0
  107. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js +6 -1
  108. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js.map +1 -1
  109. package/dist/editor/ai/terminal/useAgentTerminalController.js +48 -4
  110. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  111. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -0
  112. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js +2 -1
  113. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  114. package/dist/editor/ai/terminal/useAgentToolCallHandler.js +13 -1
  115. package/dist/editor/ai/terminal/useAgentToolCallHandler.js.map +1 -1
  116. package/dist/editor/ai/terminal/useAgentToolResultHandler.js +31 -7
  117. package/dist/editor/ai/terminal/useAgentToolResultHandler.js.map +1 -1
  118. package/dist/editor/bridge/BridgeClient.d.ts +1 -8
  119. package/dist/editor/bridge/BridgeClient.js +2 -4
  120. package/dist/editor/bridge/BridgeClient.js.map +1 -1
  121. package/dist/editor/bridge/protocol.d.ts +517 -0
  122. package/dist/editor/bridge/protocol.js +188 -0
  123. package/dist/editor/bridge/protocol.js.map +1 -0
  124. package/dist/editor/client/AboutDialog.js +15 -4
  125. package/dist/editor/client/AboutDialog.js.map +1 -1
  126. package/dist/editor/client/EditorShell.js +36 -6
  127. package/dist/editor/client/EditorShell.js.map +1 -1
  128. package/dist/editor/client/editContext.d.ts +6 -0
  129. package/dist/editor/client/editContext.js.map +1 -1
  130. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +3 -0
  131. package/dist/editor/client/hooks/useSocketMessageHandler.js +57 -25
  132. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  133. package/dist/editor/client/hooks/useWorkbox.d.ts +1 -0
  134. package/dist/editor/client/hooks/useWorkbox.js +14 -1
  135. package/dist/editor/client/hooks/useWorkbox.js.map +1 -1
  136. package/dist/editor/client/operationToasts.d.ts +2 -0
  137. package/dist/editor/client/operationToasts.js +35 -0
  138. package/dist/editor/client/operationToasts.js.map +1 -0
  139. package/dist/editor/client/operations.d.ts +4 -0
  140. package/dist/editor/client/operations.js +134 -74
  141. package/dist/editor/client/operations.js.map +1 -1
  142. package/dist/editor/client/waitForEditOperationTerminal.d.ts +1 -0
  143. package/dist/editor/client/waitForEditOperationTerminal.js +1 -1
  144. package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -1
  145. package/dist/editor/commands/itemCommands.js +5 -16
  146. package/dist/editor/commands/itemCommands.js.map +1 -1
  147. package/dist/editor/field-types/CheckboxEditor.js +3 -1
  148. package/dist/editor/field-types/CheckboxEditor.js.map +1 -1
  149. package/dist/editor/field-types/MultiLineText.js +24 -7
  150. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  151. package/dist/editor/field-types/SingleLineText.js +19 -2
  152. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  153. package/dist/editor/field-types/useTextCompletion.d.ts +20 -0
  154. package/dist/editor/field-types/useTextCompletion.js +166 -0
  155. package/dist/editor/field-types/useTextCompletion.js.map +1 -0
  156. package/dist/editor/menubar/OperationsIndicator.d.ts +7 -0
  157. package/dist/editor/menubar/OperationsIndicator.js +87 -0
  158. package/dist/editor/menubar/OperationsIndicator.js.map +1 -0
  159. package/dist/editor/menubar/ToolbarFactory.js +4 -1
  160. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  161. package/dist/editor/menubar/WorkflowButton.js +7 -4
  162. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  163. package/dist/editor/menubar/toolbar-sections/EditControls.js +7 -3
  164. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  165. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +4 -1
  166. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  167. package/dist/editor/notifications/NotificationCenter.js +28 -27
  168. package/dist/editor/notifications/NotificationCenter.js.map +1 -1
  169. package/dist/editor/notifications/NotificationItem.js +99 -15
  170. package/dist/editor/notifications/NotificationItem.js.map +1 -1
  171. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.d.ts +1 -1
  172. package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +1 -1
  173. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +7 -1
  174. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  175. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +3 -10
  176. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  177. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +2 -2
  178. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +1 -1
  179. package/dist/editor/page-viewer/MiniMap.d.ts +21 -0
  180. package/dist/editor/page-viewer/MiniMap.js +113 -11
  181. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  182. package/dist/editor/page-viewer/PageViewerFrame.js +88 -22
  183. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  184. package/dist/editor/page-viewer/bridgeFieldPatch.d.ts +1 -2
  185. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  186. package/dist/editor/page-viewer/pageViewContext.d.ts +1 -1
  187. package/dist/editor/reviews/DecisionsMatrix.js +5 -1
  188. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  189. package/dist/editor/reviews/SuggestedEdit.js +12 -2
  190. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  191. package/dist/editor/reviews/latestFeedbackData.js +7 -1
  192. package/dist/editor/reviews/latestFeedbackData.js.map +1 -1
  193. package/dist/editor/reviews/suggestedEditState.d.ts +2 -0
  194. package/dist/editor/reviews/suggestedEditState.js +20 -0
  195. package/dist/editor/reviews/suggestedEditState.js.map +1 -1
  196. package/dist/editor/reviews/suggestionContentChange.d.ts +1 -1
  197. package/dist/editor/reviews/suggestionContentChange.js +23 -3
  198. package/dist/editor/reviews/suggestionContentChange.js.map +1 -1
  199. package/dist/editor/services/agentService.d.ts +6 -0
  200. package/dist/editor/services/agentService.js +14 -0
  201. package/dist/editor/services/agentService.js.map +1 -1
  202. package/dist/editor/services/aiService.d.ts +5 -0
  203. package/dist/editor/services/aiService.js.map +1 -1
  204. package/dist/editor/settings/About.js +1 -1
  205. package/dist/editor/settings/About.js.map +1 -1
  206. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -0
  207. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  208. package/dist/editor/settings/panels/AgentToolsPanel.js +61 -33
  209. package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
  210. package/dist/editor/settings/panels/ClusterInstancesPanel.js +2 -1
  211. package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
  212. package/dist/editor/settings/panels/StatusPanel.js +10 -7
  213. package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
  214. package/dist/editor/sidebar/Completions.js +1 -1
  215. package/dist/editor/sidebar/Completions.js.map +1 -1
  216. package/dist/editor/sidebar/ComponentTree.js +1 -1
  217. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  218. package/dist/editor/sidebar/OperationItem.js +1 -1
  219. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  220. package/dist/editor/sidebar/Workbox.js +18 -4
  221. package/dist/editor/sidebar/Workbox.js.map +1 -1
  222. package/dist/editor/ui/DialogButtons.d.ts +3 -1
  223. package/dist/editor/ui/DialogButtons.js +3 -2
  224. package/dist/editor/ui/DialogButtons.js.map +1 -1
  225. package/dist/editor/ui/ItemCollectionEditor.js +2 -2
  226. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  227. package/dist/editor/ui/PublishItemDialog.js +4 -6
  228. package/dist/editor/ui/PublishItemDialog.js.map +1 -1
  229. package/dist/editor/version-diff/versionDiffTargets.d.ts +1 -1
  230. package/dist/editor/workflowFields.d.ts +1 -0
  231. package/dist/editor/workflowFields.js +16 -0
  232. package/dist/editor/workflowFields.js.map +1 -0
  233. package/dist/index.d.ts +4 -2
  234. package/dist/index.js +3 -2
  235. package/dist/index.js.map +1 -1
  236. package/dist/revision.d.ts +2 -2
  237. package/dist/revision.js +2 -2
  238. package/dist/splash-screen/NewPage.js +26 -7
  239. package/dist/splash-screen/NewPage.js.map +1 -1
  240. package/dist/task-board/TaskBoardWorkspace.js +57 -4
  241. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  242. package/dist/task-board/components/TaskBoardHomeView.d.ts +27 -0
  243. package/dist/task-board/components/TaskBoardHomeView.js +158 -0
  244. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -0
  245. package/package.json +1 -2
  246. package/styles.css +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"agentSessionLiveTotals.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/agentSessionLiveTotals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentSessionLiveTotals.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/agentSessionLiveTotals.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,oBAAoB,CAClC,MAAmC;IAEnC,OAAO,CACL,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC;QAC3B,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;QACvB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QACxB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QACxB,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAS;IAET,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;QACxC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;QAChD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;QAChD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;QAClD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;QAClD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;QAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACpC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5C,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5C,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC9C,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7D,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACpC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAClD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAClC,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAS;IAET,IACE,CAAC,IAAI;QACL,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,EAChE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC3C,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;QACnD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;QACnD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;QACrD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;QACrD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACjD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAChD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAClD,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAClD,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAC1D,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACrD,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACvD,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACvD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC3C,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC7C,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACtD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAW;IAEX,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC;QAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;QACrD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;QACrD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC;QACvD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC;QACvD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACnD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACpD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC;QACzD,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAC5D,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACvD,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACzD,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACzD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;QAC/C,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACxD,SAAS;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAY;IAEZ,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAU,CAAC;SACpD,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IAE9D,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,IAAS,EACT,KAAa;IAEb,MAAM,gBAAgB,GAAG,IAAI,EAAE,aAAa,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,EAAE,WAAW,CAAC;IACzC,IACE,gBAAgB,KAAK,SAAS;QAC9B,gBAAgB,KAAK,IAAI;QACzB,cAAc,KAAK,SAAS;QAC5B,cAAc,KAAK,IAAI,EACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACpD,IACE,mBAAmB,IAAI,CAAC;QACxB,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACtC,oBAAoB,GAAG,CAAC,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,mBAAmB;QACnB,oBAAoB;QACpB,kBAAkB,EAAE,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,GAAG,GAAG;QACtE,KAAK;QACL,SAAS,EAAE,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC;KACzD,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { mergeMessagesById } from "../agentMessageGrouping";
2
+ import { parseContextBreakdown } from "./agentSessionLiveTotals";
2
3
  function isRunningAgentStatus(status) {
3
4
  return status === "running" || status === 1;
4
5
  }
@@ -55,6 +56,7 @@ export function buildLoadedContextWindowStatus(agentData) {
55
56
  ? (agentData.contextUsedTokens / agentData.contextWindowTokens) * 100
56
57
  : 0,
57
58
  model: agentData.model,
59
+ breakdown: parseContextBreakdown(agentData.contextBreakdown),
58
60
  };
59
61
  }
60
62
  export function parseLoadedAgentMetadata(agentData) {
@@ -1 +1 @@
1
- {"version":3,"file":"agentSessionSnapshot.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/agentSessionSnapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentSessionSnapshot.js","sourceRoot":"","sources":["../../../../src/editor/ai/terminal/agentSessionSnapshot.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { MessageSquare, ArrowRight } from "lucide-react";
3
3
  import { cn } from "../../../../lib/utils";
4
- import { sanitizeHtml } from "../../../../lib/sanitize";
4
+ import { sanitizeHtml, sanitizeSvg } from "../../../../lib/sanitize";
5
+ import { ParheliaAgentIcon } from "../../../ui/Icons";
5
6
  export function AgentGreeting({ profile, onPromptClick, className, }) {
6
7
  const prompts = profile.prompts || [];
7
- return (_jsxs("div", { className: cn("flex h-full flex-col items-center justify-center p-8 text-center", className), children: [_jsxs("div", { className: "animate-in fade-in slide-in-from-bottom-4 duration-1000", children: [_jsx("h2", { className: "text-neutral-grey-100 mb-2 text-2xl font-semibold tracking-tight", children: profile.agentName || profile.name }), profile.greetingMessage ? (_jsx("div", { className: "prose prose-slate text-neutral-grey-50 mx-auto max-w-prose text-lg leading-relaxed", dangerouslySetInnerHTML: {
8
+ return (_jsxs("div", { className: cn("flex h-full flex-col items-center justify-center p-8 text-center", className), children: [_jsxs("div", { className: "animate-in fade-in slide-in-from-bottom-4 duration-1000", children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-100 mx-auto mb-5 flex size-16 items-center justify-center rounded-2xl", "data-testid": "agent-greeting-icon", children: profile.svgIcon ? (_jsx("div", { className: "size-8 [&>svg]:h-full [&>svg]:w-full", dangerouslySetInnerHTML: {
9
+ __html: sanitizeSvg(profile.svgIcon),
10
+ } })) : (_jsx(ParheliaAgentIcon, { size: 32, strokeWidth: 1.5 })) }), _jsx("h2", { className: "text-neutral-grey-100 mb-3 text-2xl font-semibold tracking-tight", children: profile.agentName || profile.name }), profile.greetingMessage ? (_jsx("div", { className: "prose prose-slate text-neutral-grey-100 mx-auto max-w-xl text-3xl leading-snug font-semibold tracking-tight", dangerouslySetInnerHTML: {
8
11
  __html: sanitizeHtml(profile.greetingMessage),
9
12
  } })) : (_jsx("p", { className: "text-neutral-grey-50 mx-auto max-w-prose text-lg leading-relaxed", children: profile.description || "How can I help you today?" }))] }), prompts.length > 0 && (_jsx("div", { className: "animate-in fade-in slide-in-from-bottom-6 mt-12 flex w-full max-w-2xl flex-wrap justify-center gap-3 duration-1000 [animation-delay:400ms]", children: prompts.map((prompt, index) => (_jsxs("button", { onClick: () => onPromptClick?.(prompt.prompt), className: "group border-border-default text-neutral-grey-100 hover:border-feedback-blue hover:text-feedback-blue flex items-center gap-3 rounded-2xl border bg-white/50 px-5 py-3 text-xs font-medium backdrop-blur-sm transition-all hover:bg-white hover:shadow-md active:scale-95", children: [_jsx(MessageSquare, { size: 16, className: "text-neutral-grey-50 group-hover:text-feedback-blue transition-colors" }), _jsx("span", { children: prompt.title }), _jsx(ArrowRight, { size: 14, className: "ml-1 -translate-x-2 opacity-0 transition-all group-hover:translate-x-0 group-hover:opacity-100" })] }, index))) }))] }));
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AgentGreeting.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentGreeting.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQxD,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,aAAa,EACb,SAAS,GACU;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAEtC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,SAAS,CACV,aAED,eAAK,SAAS,EAAC,yDAAyD,aACtE,aAAI,SAAS,EAAC,kEAAkE,YAC7E,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,GAC/B,EAEJ,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CACzB,cACE,SAAS,EAAC,oFAAoF,EAC9F,uBAAuB,EAAE;4BACvB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;yBAC9C,GACD,CACH,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,kEAAkE,YAC5E,OAAO,CAAC,WAAW,IAAI,2BAA2B,GACjD,CACL,IACG,EAEL,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,cAAK,SAAS,EAAC,4IAA4I,YACxJ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7C,SAAS,EAAC,2QAA2Q,aAErR,KAAC,aAAa,IACZ,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,uEAAuE,GACjF,EACF,yBAAO,MAAM,CAAC,KAAK,GAAQ,EAC3B,KAAC,UAAU,IACT,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,gGAAgG,GAC1G,KAZG,KAAK,CAaH,CACV,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AgentGreeting.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentGreeting.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAQtD,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,aAAa,EACb,SAAS,GACU;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAEtC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,SAAS,CACV,aAED,eAAK,SAAS,EAAC,yDAAyD,aACtE,cACE,SAAS,EAAC,2GAA2G,iBACzG,qBAAqB,YAEhC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CACjB,cACE,SAAS,EAAC,sCAAsC,EAChD,uBAAuB,EAAE;gCACvB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;6BACrC,GACD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,GAAI,CAClD,GACG,EAEN,aAAI,SAAS,EAAC,kEAAkE,YAC7E,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,GAC/B,EAEJ,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CACzB,cACE,SAAS,EAAC,6GAA6G,EACvH,uBAAuB,EAAE;4BACvB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;yBAC9C,GACD,CACH,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,kEAAkE,YAC5E,OAAO,CAAC,WAAW,IAAI,2BAA2B,GACjD,CACL,IACG,EAEL,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,cAAK,SAAS,EAAC,4IAA4I,YACxJ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,kBAEE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC7C,SAAS,EAAC,2QAA2Q,aAErR,KAAC,aAAa,IACZ,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,uEAAuE,GACjF,EACF,yBAAO,MAAM,CAAC,KAAK,GAAQ,EAC3B,KAAC,UAAU,IACT,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,gGAAgG,GAC1G,KAZG,KAAK,CAaH,CACV,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Agent, type AgentChatMessage, type AgentMetadata } from "../../../services/agentService";
2
+ /**
3
+ * Progress header for the taskboard project created by this agent (tracked in
4
+ * the agent context as additionalData.createdProjectId). Rendered directly
5
+ * above the prompt composer; the expand button opens the project in the
6
+ * taskboard workspace.
7
+ */
8
+ export declare function AgentProjectProgress({ agent, agentMetadata, messages, }: {
9
+ agent?: Agent | null;
10
+ agentMetadata: AgentMetadata | null | undefined;
11
+ messages?: AgentChatMessage[];
12
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,207 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useMemo, useState } from "react";
4
+ import { ExternalLink } from "lucide-react";
5
+ import { getProject, getTasks, } from "../../../../task-board/services/taskService";
6
+ import { useEditContext } from "../../../client/editContext";
7
+ import { useParheliaSettings } from "../../../hooks/useParheliaSettings";
8
+ import { getAgent as fetchAgent, } from "../../../services/agentService";
9
+ const REFRESH_INTERVAL_MS = 10_000;
10
+ function asRecord(value) {
11
+ return value && typeof value === "object" && !Array.isArray(value)
12
+ ? value
13
+ : undefined;
14
+ }
15
+ function getString(record, ...keys) {
16
+ if (!record)
17
+ return undefined;
18
+ for (const key of keys) {
19
+ const value = record[key];
20
+ if (typeof value === "string" && value.trim())
21
+ return value;
22
+ }
23
+ return undefined;
24
+ }
25
+ function getTrackedProjectFromAdditionalData(additionalData) {
26
+ const data = asRecord(additionalData);
27
+ const projectId = getString(data, "createdProjectId", "CreatedProjectId");
28
+ if (!projectId)
29
+ return null;
30
+ return {
31
+ projectId,
32
+ title: getString(data, "createdProjectTitle", "CreatedProjectTitle"),
33
+ };
34
+ }
35
+ function getTrackedProjectFromAgentContext(agentContext) {
36
+ if (!agentContext)
37
+ return null;
38
+ try {
39
+ const context = typeof agentContext === "string"
40
+ ? JSON.parse(agentContext)
41
+ : agentContext;
42
+ const record = asRecord(context);
43
+ return getTrackedProjectFromAdditionalData(record?.additionalData ?? record?.AdditionalData);
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
49
+ function getTrackedProjectFromMessages(messages) {
50
+ if (!messages?.length)
51
+ return null;
52
+ for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex -= 1) {
53
+ const toolCalls = messages[messageIndex]?.toolCalls;
54
+ if (!toolCalls?.length)
55
+ continue;
56
+ for (let callIndex = toolCalls.length - 1; callIndex >= 0; callIndex -= 1) {
57
+ const toolCall = toolCalls[callIndex];
58
+ if (toolCall?.functionName !== "create-project" ||
59
+ toolCall.functionError ||
60
+ !toolCall.functionResult) {
61
+ continue;
62
+ }
63
+ try {
64
+ const result = JSON.parse(toolCall.functionResult);
65
+ const record = asRecord(result);
66
+ const projectId = getString(record, "projectId", "ProjectId");
67
+ if (projectId) {
68
+ return {
69
+ projectId,
70
+ title: getString(record, "title", "Title"),
71
+ };
72
+ }
73
+ }
74
+ catch {
75
+ // Ignore non-JSON results; the context fallback can still find the project.
76
+ }
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+ function ProjectProgressBar({ done, total, className, }) {
82
+ const percent = total > 0 ? Math.min((done / total) * 100, 100) : 0;
83
+ return (_jsx("div", { className: `bg-neutral-grey-10 h-2 w-full overflow-hidden rounded-full ${className || ""}`, children: _jsx("div", { className: "bg-feedback-green h-full rounded-full transition-all duration-300", style: { width: `${percent}%` } }) }));
84
+ }
85
+ /**
86
+ * Progress header for the taskboard project created by this agent (tracked in
87
+ * the agent context as additionalData.createdProjectId). Rendered directly
88
+ * above the prompt composer; the expand button opens the project in the
89
+ * taskboard workspace.
90
+ */
91
+ export function AgentProjectProgress({ agent, agentMetadata, messages, }) {
92
+ const additionalData = agentMetadata?.additionalData;
93
+ const metadataTrackedProject = getTrackedProjectFromAdditionalData(additionalData);
94
+ const messageTrackedProject = useMemo(() => getTrackedProjectFromMessages(messages), [messages]);
95
+ const [loadedTrackedProject, setLoadedTrackedProject] = useState(null);
96
+ const agentId = agent?.id;
97
+ const metadataProjectId = metadataTrackedProject?.projectId;
98
+ const messageProjectId = messageTrackedProject?.projectId;
99
+ const loadedProjectId = loadedTrackedProject?.projectId;
100
+ const projectId = metadataProjectId ?? messageProjectId ?? loadedProjectId;
101
+ const trackedTitle = metadataTrackedProject?.title ??
102
+ messageTrackedProject?.title ??
103
+ loadedTrackedProject?.title;
104
+ const editContext = useEditContext();
105
+ const parheliaSettings = useParheliaSettings();
106
+ const currency = parheliaSettings?.currency || "USD";
107
+ const [project, setProject] = useState(null);
108
+ const [tasks, setTasks] = useState(null);
109
+ useEffect(() => {
110
+ setLoadedTrackedProject(null);
111
+ }, [agentId]);
112
+ useEffect(() => {
113
+ if (projectId || !agentId)
114
+ return;
115
+ let disposed = false;
116
+ const loadTrackedProject = async () => {
117
+ try {
118
+ const details = await fetchAgent(agentId);
119
+ const trackedProject = getTrackedProjectFromAgentContext(details.agentContext) ??
120
+ getTrackedProjectFromMessages(details.messages);
121
+ if (!disposed && trackedProject?.projectId) {
122
+ setLoadedTrackedProject(trackedProject);
123
+ }
124
+ }
125
+ catch {
126
+ // The regular interval will retry; absence of this header is non-fatal.
127
+ }
128
+ };
129
+ void loadTrackedProject();
130
+ const interval = window.setInterval(() => void loadTrackedProject(), REFRESH_INTERVAL_MS);
131
+ return () => {
132
+ disposed = true;
133
+ window.clearInterval(interval);
134
+ };
135
+ }, [agentId, projectId]);
136
+ const refresh = useCallback(async () => {
137
+ if (!projectId)
138
+ return;
139
+ try {
140
+ const [projectResult, tasksResult] = await Promise.all([
141
+ getProject(projectId),
142
+ getTasks(projectId),
143
+ ]);
144
+ if (projectResult.type === "success" && projectResult.data) {
145
+ const data = projectResult.data;
146
+ setProject(data.project ?? data);
147
+ }
148
+ if (tasksResult.type === "success" && Array.isArray(tasksResult.data)) {
149
+ setTasks(tasksResult.data);
150
+ }
151
+ }
152
+ catch {
153
+ // Keep the last known data; the next poll may succeed again.
154
+ }
155
+ }, [projectId]);
156
+ useEffect(() => {
157
+ setProject(null);
158
+ setTasks(null);
159
+ if (!projectId)
160
+ return;
161
+ void refresh();
162
+ const interval = setInterval(() => void refresh(), REFRESH_INTERVAL_MS);
163
+ return () => clearInterval(interval);
164
+ }, [projectId, refresh]);
165
+ const openInTaskboard = useCallback(() => {
166
+ if (!projectId || typeof window === "undefined")
167
+ return;
168
+ if (editContext?.workspaceId !== "taskboard") {
169
+ editContext?.switchWorkspace?.("taskboard", {
170
+ skipNavigationHistory: true,
171
+ });
172
+ }
173
+ // Mirror the notification-route deep link: workspace + tbProjectId, with
174
+ // editor/task params cleared (see config/notificationRoutes.ts).
175
+ const params = new URLSearchParams(window.location.search);
176
+ params.set("workspace", "taskboard");
177
+ params.set("tbProjectId", projectId);
178
+ for (const key of [
179
+ "tbTaskId",
180
+ "tbView",
181
+ "tbWizard",
182
+ "itemid",
183
+ "lang",
184
+ "language",
185
+ "version",
186
+ "reviewId",
187
+ ]) {
188
+ params.delete(key);
189
+ }
190
+ const queryString = params.toString();
191
+ window.history.replaceState(null, "", queryString
192
+ ? `${window.location.pathname}?${queryString}`
193
+ : window.location.pathname);
194
+ window.dispatchEvent(new PopStateEvent("popstate"));
195
+ }, [editContext, projectId]);
196
+ if (!projectId)
197
+ return null;
198
+ const title = project?.title || trackedTitle || "Project";
199
+ const total = tasks?.length ?? 0;
200
+ const done = tasks?.filter((t) => t.status === "Done").length ?? 0;
201
+ const costUsed = project?.costUsed ?? null;
202
+ const costLimit = project?.costLimit ?? null;
203
+ return (_jsxs("div", { "data-testid": "agent-project-progress", className: "shrink-0 px-4 pt-3 pb-2", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "text-neutral-grey-100 truncate text-sm font-semibold", title: title, children: title }), costUsed != null && (_jsxs("span", { className: "text-neutral-grey-50 hidden truncate text-xs sm:block", children: ["Current total cost:", " ", _jsxs("span", { className: "font-semibold", children: [costUsed.toFixed(2), " ", currency] }), costLimit != null &&
204
+ costLimit > 0 &&
205
+ ` / ${costLimit.toFixed(2)} ${currency}`] })), _jsxs("div", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: [_jsx("span", { "data-testid": "agent-project-progress-counts", className: "bg-neutral-grey-5 text-neutral-grey-100 rounded-md px-2 py-0.5 text-xs font-medium tabular-nums", children: tasks ? `${done}/${total} done` : "..." }), _jsx("button", { type: "button", "data-testid": "agent-project-progress-expand", title: "Open in Taskboard", "aria-label": "Open in Taskboard", onClick: openInTaskboard, className: "text-neutral-grey-50 hover:text-neutral-grey-100 hover:bg-neutral-grey-5 rounded-md p-1.5 transition-colors", children: _jsx(ExternalLink, { className: "h-4 w-4" }) })] })] }), _jsx(ProjectProgressBar, { done: done, total: total, className: "mt-2" })] }));
206
+ }
207
+ //# sourceMappingURL=AgentProjectProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentProjectProgress.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentProjectProgress.tsx"],"names":[],"mappings":"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"}
@@ -7,9 +7,10 @@ export interface AgentTerminalFullLayoutProps {
7
7
  onBackToParent: () => void;
8
8
  readOnlyAccessNotice: React.ReactNode;
9
9
  upperContent: React.ReactNode;
10
+ /** Inline dialog panel for non-questionnaire dialogs (stacked above the composer). */
10
11
  inlineDialog: React.ReactNode;
11
- isQuestionnaireDialogOpen: boolean;
12
- compact: boolean;
12
+ /** Persistent strip rendered directly above the prompt composer (e.g. project progress). */
13
+ aboveComposer?: React.ReactNode;
13
14
  promptComposerProps: Omit<AgentPromptComposerProps, "className" | "children">;
14
15
  promptControls: React.ReactNode;
15
16
  showStatusBar?: boolean;
@@ -20,4 +21,4 @@ export interface AgentTerminalFullLayoutProps {
20
21
  attachmentsContent?: React.ReactNode;
21
22
  dropHandlers?: AgentPromptComposerProps["dropHandlers"];
22
23
  }
23
- export declare function AgentTerminalFullLayout({ className, parentAgentId, simpleMode, onBackToParent, readOnlyAccessNotice, upperContent, inlineDialog, isQuestionnaireDialogOpen, compact, promptComposerProps, promptControls, trayOverlay, attachmentsContent, dropHandlers, }: AgentTerminalFullLayoutProps): import("react/jsx-runtime").JSX.Element;
24
+ export declare function AgentTerminalFullLayout({ className, parentAgentId, simpleMode, onBackToParent, readOnlyAccessNotice, upperContent, inlineDialog, aboveComposer, promptComposerProps, promptControls, trayOverlay, attachmentsContent, dropHandlers, }: AgentTerminalFullLayoutProps): import("react/jsx-runtime").JSX.Element;
@@ -1,23 +1,8 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Splitter } from "../../../ui/Splitter";
1
+ import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
3
2
  import { AgentParentLink } from "./AgentParentLink";
4
3
  import { AgentPromptComposer, } from "./AgentPromptComposer";
5
- export function AgentTerminalFullLayout({ className, parentAgentId, simpleMode, onBackToParent, readOnlyAccessNotice, upperContent, inlineDialog, isQuestionnaireDialogOpen, compact, promptComposerProps, promptControls, trayOverlay, attachmentsContent, dropHandlers, }) {
6
- const showQuestionnaireSplitter = isQuestionnaireDialogOpen && !!inlineDialog;
7
- const content = showQuestionnaireSplitter ? (_jsx(Splitter, { panels: [
8
- {
9
- name: "conversation",
10
- defaultSize: 65,
11
- content: upperContent,
12
- },
13
- {
14
- name: "questionnaire",
15
- defaultSize: 35,
16
- content: inlineDialog,
17
- },
18
- ], direction: "vertical", localStorageKey: compact
19
- ? "agent-terminal-compact-questionnaire-splitter"
20
- : "agent-terminal-questionnaire-splitter", className: "min-h-0 flex-1", splitterClassName: "bg-neutral-grey-10 hover:bg-neutral-grey-10" })) : (_jsxs(_Fragment, { children: [upperContent, inlineDialog] }));
21
- return (_jsxs("div", { className: `flex h-full min-h-0 flex-col ${className || ""}`, children: [_jsx(AgentParentLink, { parentAgentId: parentAgentId, simpleMode: simpleMode, onBack: onBackToParent }), readOnlyAccessNotice, content, _jsx(AgentPromptComposer, { ...promptComposerProps, trayOverlay: trayOverlay, attachmentsContent: attachmentsContent, dropHandlers: dropHandlers, className: simpleMode ? "pb-10" : undefined, children: promptControls })] }));
4
+ export function AgentTerminalFullLayout({ className, parentAgentId, simpleMode, onBackToParent, readOnlyAccessNotice, upperContent, inlineDialog, aboveComposer, promptComposerProps, promptControls, trayOverlay, attachmentsContent, dropHandlers, }) {
5
+ const content = (_jsxs(_Fragment, { children: [upperContent, inlineDialog] }));
6
+ return (_jsxs("div", { className: `flex h-full min-h-0 flex-col ${className || ""}`, children: [_jsx(AgentParentLink, { parentAgentId: parentAgentId, simpleMode: simpleMode, onBack: onBackToParent }), readOnlyAccessNotice, content, aboveComposer, _jsx(AgentPromptComposer, { ...promptComposerProps, trayOverlay: trayOverlay, attachmentsContent: attachmentsContent, dropHandlers: dropHandlers, className: simpleMode ? "pb-10" : undefined, children: promptControls })] }));
22
7
  }
23
8
  //# sourceMappingURL=AgentTerminalFullLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTerminalFullLayout.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentTerminalFullLayout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAuB/B,MAAM,UAAU,uBAAuB,CAAC,EACtC,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,OAAO,EACP,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,YAAY,GACiB;IAC7B,MAAM,yBAAyB,GAAG,yBAAyB,IAAI,CAAC,CAAC,YAAY,CAAC;IAC9E,MAAM,OAAO,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAC1C,KAAC,QAAQ,IACP,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,YAAY;aACtB;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,YAAY;aACtB;SACF,EACD,SAAS,EAAC,UAAU,EACpB,eAAe,EACb,OAAO;YACL,CAAC,CAAC,+CAA+C;YACjD,CAAC,CAAC,uCAAuC,EAE7C,SAAS,EAAC,gBAAgB,EAC1B,iBAAiB,EAAC,6CAA6C,GAC/D,CACH,CAAC,CAAC,CAAC,CACF,8BACG,YAAY,EACZ,YAAY,IACZ,CACJ,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,gCAAgC,SAAS,IAAI,EAAE,EAAE,aAC/D,KAAC,eAAe,IACd,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GACtB,EACD,oBAAoB,EACpB,OAAO,EACR,KAAC,mBAAmB,OACd,mBAAmB,EACvB,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YAE1C,cAAc,GACK,IAClB,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AgentTerminalFullLayout.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentTerminalFullLayout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAC;AAwB/B,MAAM,UAAU,uBAAuB,CAAC,EACtC,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,YAAY,GACiB;IAC7B,MAAM,OAAO,GAAG,CACd,8BACG,YAAY,EACZ,YAAY,IACZ,CACJ,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,gCAAgC,SAAS,IAAI,EAAE,EAAE,aAC/D,KAAC,eAAe,IACd,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GACtB,EACD,oBAAoB,EACpB,OAAO,EACP,aAAa,EACd,KAAC,mBAAmB,OACd,mBAAmB,EACvB,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YAE1C,cAAc,GACK,IAClB,CACP,CAAC;AACJ,CAAC"}
@@ -48,5 +48,9 @@ export interface AgentTerminalFullUpperContentProps {
48
48
  onDeleteQueuedPrompt?: (queuedPrompt: QueuedPrompt) => void | Promise<void>;
49
49
  queuePushDisabled?: boolean;
50
50
  queueDeleteDisabled?: boolean;
51
+ /** Active questionnaire dialog rendered inline at the end of the conversation. */
52
+ conversationInlineDialog?: React.ReactNode;
53
+ /** Identifier (callbackId) of the active inline dialog; scrolls it into view when it changes. */
54
+ conversationInlineDialogKey?: string;
51
55
  }
52
- export declare function AgentTerminalFullUpperContent({ fixedBrowserClaimBanner, agent, agentStub, error, lastRunStatusReason, messagesContainerRef, onScroll, messages, hideGreeting, isLoading, activeProfile, onGreetingPromptClick, showInitialThinkingSplash, inlineBrowserClaimBanner, operations, isExecuting, defaultCollapseJson, allPendingApprovals, onSwitchToAutonomous, browserCaptureInlinePrompt, readOnly, onQuickAction, shouldShowThinkingDots, simpleMode, costLimitBanner, messagesEndRef, hideContext, isMobile, contextChrome, documentListRef, hasTodoContent, hasSpawnedAgents, hasHistoryContent, agentMetadata, contextPanelsActiveTab, setContextPanelsActiveTab, queuedPrompts, onPushQueuedPrompt, onDeleteQueuedPrompt, queuePushDisabled, queueDeleteDisabled, }: AgentTerminalFullUpperContentProps): import("react/jsx-runtime").JSX.Element;
56
+ export declare function AgentTerminalFullUpperContent({ fixedBrowserClaimBanner, agent, agentStub, error, lastRunStatusReason, messagesContainerRef, onScroll, messages, hideGreeting, isLoading, activeProfile, onGreetingPromptClick, showInitialThinkingSplash, inlineBrowserClaimBanner, operations, isExecuting, defaultCollapseJson, allPendingApprovals, onSwitchToAutonomous, browserCaptureInlinePrompt, readOnly, onQuickAction, shouldShowThinkingDots, simpleMode, costLimitBanner, messagesEndRef, hideContext, isMobile, contextChrome, documentListRef, hasTodoContent, hasSpawnedAgents, hasHistoryContent, agentMetadata, contextPanelsActiveTab, setContextPanelsActiveTab, queuedPrompts, onPushQueuedPrompt, onDeleteQueuedPrompt, queuePushDisabled, queueDeleteDisabled, conversationInlineDialog, conversationInlineDialogKey, }: AgentTerminalFullUpperContentProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useRef } from "react";
2
3
  import { Loader2 } from "lucide-react";
3
4
  import { AgentGreeting } from "./AgentGreeting";
4
5
  import { InitialThinkingSplash } from "./InitialThinkingSplash";
@@ -7,7 +8,37 @@ import { AgentRunStatusBanners } from "./AgentRunStatusBanners";
7
8
  import { AgentTerminalMessageGroups, } from "./AgentTerminalMessageGroups";
8
9
  import { AgentThinkingDots } from "./AgentThinkingDots";
9
10
  import { AgentTerminalContextPanels } from "./AgentTerminalContextPanels";
10
- export function AgentTerminalFullUpperContent({ fixedBrowserClaimBanner, agent, agentStub, error, lastRunStatusReason, messagesContainerRef, onScroll, messages, hideGreeting, isLoading, activeProfile, onGreetingPromptClick, showInitialThinkingSplash, inlineBrowserClaimBanner, operations, isExecuting, defaultCollapseJson, allPendingApprovals, onSwitchToAutonomous, browserCaptureInlinePrompt, readOnly, onQuickAction, shouldShowThinkingDots, simpleMode, costLimitBanner, messagesEndRef, hideContext, isMobile, contextChrome, documentListRef, hasTodoContent, hasSpawnedAgents, hasHistoryContent, agentMetadata, contextPanelsActiveTab, setContextPanelsActiveTab, queuedPrompts, onPushQueuedPrompt, onDeleteQueuedPrompt, queuePushDisabled, queueDeleteDisabled, }) {
11
- return (_jsxs("div", { className: "flex h-full min-h-0 flex-1 flex-col", children: [fixedBrowserClaimBanner, _jsx(AgentRunStatusBanners, { agent: agent, agentStub: agentStub, error: error, lastRunStatusReason: lastRunStatusReason }), _jsxs("div", { ref: messagesContainerRef, className: "flex-1 overflow-y-auto", onScroll: onScroll, children: [messages.length === 0 && !error && !hideGreeting && !isLoading ? (_jsx("div", { className: "flex h-full items-center justify-center", children: !activeProfile ? (_jsx(Loader2, { className: "text-neutral-grey-50 mx-auto h-8 w-8 animate-spin" })) : (_jsx(AgentGreeting, { profile: activeProfile, onPromptClick: onGreetingPromptClick })) })) : null, showInitialThinkingSplash ? (_jsx(InitialThinkingSplash, {})) : null, inlineBrowserClaimBanner, _jsxs("div", { className: "space-y-0 select-text", children: [_jsx(AgentTerminalMessageGroups, { messages: messages, operations: operations, isExecuting: isExecuting, defaultCollapseJson: defaultCollapseJson, profile: activeProfile, agentId: agent?.id || agentStub.id, allPendingApprovals: allPendingApprovals, onSwitchToAutonomous: onSwitchToAutonomous, browserCaptureInlinePrompt: browserCaptureInlinePrompt, readOnly: readOnly, onQuickAction: onQuickAction }), shouldShowThinkingDots ? (_jsx(AgentThinkingDots, { profile: activeProfile })) : null] }), !simpleMode && costLimitBanner, _jsx("div", { ref: messagesEndRef })] }), _jsx(AgentTerminalContextPanels, { hideContext: hideContext, simpleMode: simpleMode, isMobile: isMobile, contextChrome: contextChrome, agent: agent, activeProfile: activeProfile, documentListRef: documentListRef, hasTodoContent: hasTodoContent, hasSpawnedAgents: hasSpawnedAgents, hasHistoryContent: hasHistoryContent, messages: messages, agentMetadata: agentMetadata, operations: operations, activeTab: contextPanelsActiveTab, setActiveTab: setContextPanelsActiveTab }), !simpleMode ? (_jsx(QueuedPromptsPanel, { queuedPrompts: queuedPrompts, onPushQueuedPrompt: onPushQueuedPrompt, onDeleteQueuedPrompt: onDeleteQueuedPrompt, pushDisabled: queuePushDisabled, deleteDisabled: queueDeleteDisabled })) : null] }));
11
+ export function AgentTerminalFullUpperContent({ fixedBrowserClaimBanner, agent, agentStub, error, lastRunStatusReason, messagesContainerRef, onScroll, messages, hideGreeting, isLoading, activeProfile, onGreetingPromptClick, showInitialThinkingSplash, inlineBrowserClaimBanner, operations, isExecuting, defaultCollapseJson, allPendingApprovals, onSwitchToAutonomous, browserCaptureInlinePrompt, readOnly, onQuickAction, shouldShowThinkingDots, simpleMode, costLimitBanner, messagesEndRef, hideContext, isMobile, contextChrome, documentListRef, hasTodoContent, hasSpawnedAgents, hasHistoryContent, agentMetadata, contextPanelsActiveTab, setContextPanelsActiveTab, queuedPrompts, onPushQueuedPrompt, onDeleteQueuedPrompt, queuePushDisabled, queueDeleteDisabled, conversationInlineDialog, conversationInlineDialogKey, }) {
12
+ // Scroll the conversation so the questionnaire's TOP is in view once per
13
+ // dialog (title and first question visible — a tall form scrolled to the
14
+ // bottom would open on its footer). Covers both the live request path and
15
+ // recovery after reload. Re-renders while the same dialog stays open must
16
+ // not yank a user who scrolled away.
17
+ const conversationInlineDialogRef = useRef(null);
18
+ const lastScrolledDialogKeyRef = useRef(null);
19
+ useLayoutEffect(() => {
20
+ if (!conversationInlineDialogKey) {
21
+ lastScrolledDialogKeyRef.current = null;
22
+ return;
23
+ }
24
+ if (lastScrolledDialogKeyRef.current === conversationInlineDialogKey) {
25
+ return;
26
+ }
27
+ lastScrolledDialogKeyRef.current = conversationInlineDialogKey;
28
+ const scrollDialogIntoView = () => {
29
+ const container = messagesContainerRef.current;
30
+ const dialogElement = conversationInlineDialogRef.current;
31
+ if (!container || !dialogElement) {
32
+ return;
33
+ }
34
+ const containerRect = container.getBoundingClientRect();
35
+ const dialogRect = dialogElement.getBoundingClientRect();
36
+ container.scrollTop += dialogRect.top - containerRect.top - 8;
37
+ };
38
+ scrollDialogIntoView();
39
+ const animationFrameId = window.requestAnimationFrame(scrollDialogIntoView);
40
+ return () => window.cancelAnimationFrame(animationFrameId);
41
+ }, [conversationInlineDialogKey, messagesContainerRef]);
42
+ return (_jsxs("div", { className: "flex h-full min-h-0 flex-1 flex-col", children: [fixedBrowserClaimBanner, _jsx(AgentRunStatusBanners, { agent: agent, agentStub: agentStub, error: error, lastRunStatusReason: lastRunStatusReason }), _jsxs("div", { ref: messagesContainerRef, className: "flex-1 overflow-y-auto", onScroll: onScroll, children: [messages.length === 0 && !error && !hideGreeting && !isLoading ? (_jsx("div", { className: "flex h-full items-center justify-center", children: !activeProfile ? (_jsx(Loader2, { className: "text-neutral-grey-50 mx-auto h-8 w-8 animate-spin" })) : (_jsx(AgentGreeting, { profile: activeProfile, onPromptClick: onGreetingPromptClick })) })) : null, showInitialThinkingSplash ? _jsx(InitialThinkingSplash, {}) : null, inlineBrowserClaimBanner, _jsxs("div", { className: "space-y-0 select-text", children: [_jsx(AgentTerminalMessageGroups, { messages: messages, operations: operations, isExecuting: isExecuting, defaultCollapseJson: defaultCollapseJson, profile: activeProfile, agentId: agent?.id || agentStub.id, allPendingApprovals: allPendingApprovals, onSwitchToAutonomous: onSwitchToAutonomous, browserCaptureInlinePrompt: browserCaptureInlinePrompt, readOnly: readOnly, onQuickAction: onQuickAction }), shouldShowThinkingDots ? (_jsx(AgentThinkingDots, { profile: activeProfile })) : null] }), conversationInlineDialog ? (_jsx("div", { ref: conversationInlineDialogRef, "data-testid": "agent-conversation-inline-dialog", className: "px-4 py-3", children: conversationInlineDialog })) : null, !simpleMode && costLimitBanner, _jsx("div", { ref: messagesEndRef })] }), _jsx(AgentTerminalContextPanels, { hideContext: hideContext, simpleMode: simpleMode, isMobile: isMobile, contextChrome: contextChrome, agent: agent, activeProfile: activeProfile, documentListRef: documentListRef, hasTodoContent: hasTodoContent, hasSpawnedAgents: hasSpawnedAgents, hasHistoryContent: hasHistoryContent, messages: messages, agentMetadata: agentMetadata, operations: operations, activeTab: contextPanelsActiveTab, setActiveTab: setContextPanelsActiveTab }), !simpleMode ? (_jsx(QueuedPromptsPanel, { queuedPrompts: queuedPrompts, onPushQueuedPrompt: onPushQueuedPrompt, onDeleteQueuedPrompt: onDeleteQueuedPrompt, pushDisabled: queuePushDisabled, deleteDisabled: queueDeleteDisabled })) : null] }));
12
43
  }
13
44
  //# sourceMappingURL=AgentTerminalFullUpperContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTerminalFullUpperContent.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentTerminalFullUpperContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentTerminalFullUpperContent.js","sourceRoot":"","sources":["../../../../../src/editor/ai/terminal/components/AgentTerminalFullUpperContent.tsx"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export type ContextWindowStatus = {
10
10
  estimatedInputTokens: number;
11
11
  contextUsedPercent: number;
12
12
  model?: string;
13
+ /** Estimated split of the used context by category (category key → tokens) */
14
+ breakdown?: Record<string, number>;
13
15
  } | null;
14
16
  export type LiveTotals = {
15
17
  input: number;
@@ -7,6 +7,7 @@ import { AgentCostDisplay } from "./AgentCostDisplay";
7
7
  import { ContentInspectorPopover, } from "../../ContentInspectorPopover";
8
8
  import { formatAgentDiagnosticsEvent, formatSeqRanges, interpretAgentRunDiagnostics, } from "../../agentDiagnostics";
9
9
  import { HeartbeatDiagnosticsPanel } from "../../HeartbeatDiagnosticsPanel";
10
+ import { buildContextBreakdownRows } from "../contextBreakdown";
10
11
  function formatDiagnosticTime(value) {
11
12
  if (!value)
12
13
  return "—";
@@ -396,6 +397,9 @@ function buildTokensSection(params) {
396
397
  ]),
397
398
  },
398
399
  ]);
400
+ const contextBreakdownLines = contextWindowStatus
401
+ ? buildContextBreakdownRows(contextWindowStatus).map((row) => ` ${row.label}: ${formatNumber(Math.round(row.tokens))} tokens (${formatPercent(row.percent)})`)
402
+ : [];
399
403
  const contextSection = contextWindowStatus
400
404
  ? joinSubsections([
401
405
  {
@@ -411,6 +415,8 @@ function buildTokensSection(params) {
411
415
  agent?.contextWindowTokens != null
412
416
  ? `Persisted window size: ${formatNumber(agent.contextWindowTokens)}`
413
417
  : null,
418
+ contextBreakdownLines.length > 0 ? "Breakdown (estimated):" : null,
419
+ ...contextBreakdownLines,
414
420
  ]),
415
421
  },
416
422
  ])
@@ -822,17 +828,30 @@ export function AgentTerminalStatusBar({ agent, contextWindowStatus, effectiveMo
822
828
  : "var(--color-neutral-grey-50)";
823
829
  const radius = 15.915;
824
830
  const formatTokens = (tokens) => {
831
+ if (tokens >= 1_000_000) {
832
+ return `${(tokens / 1_000_000).toFixed(1)}M`;
833
+ }
825
834
  if (tokens >= 1000) {
826
835
  return `${(tokens / 1000).toFixed(1)}k`;
827
836
  }
828
837
  return tokens.toString();
829
838
  };
839
+ const breakdownRows = useMemo(() => hasData && contextWindowStatus
840
+ ? buildContextBreakdownRows(contextWindowStatus)
841
+ : [], [hasData, contextWindowStatus]);
830
842
  const hasAssistantMessages = messages.some((m) => m.role === "assistant");
831
843
  const canOpenDiagnostics = Boolean(agent?.id) && agent?.status !== "new";
832
844
  return (_jsxs("div", { className: "text-neutral-grey-50 mt-1 flex items-center gap-2 text-[11px]", children: [agent?.id && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "flex cursor-help items-center justify-center", children: _jsxs("svg", { className: "h-3 w-3 shrink-0", viewBox: "0 0 36 36", "aria-hidden": "true", children: [_jsx("circle", { cx: "18", cy: "18", r: radius, fill: "none", stroke: "var(--color-border-default)", strokeWidth: "4" }), hasData && (_jsx("circle", { cx: "18", cy: "18", r: radius, fill: "none", stroke: contextColor, strokeWidth: "4", strokeDasharray: `${percentValue} 100`, strokeLinecap: "round", style: {
833
845
  transformOrigin: "center",
834
846
  transform: "rotate(-90deg)",
835
- } })), !hasData && (_jsx("circle", { cx: "18", cy: "18", r: radius, fill: "none", stroke: contextColor, strokeWidth: "4", strokeDasharray: "0 100", strokeLinecap: "round", opacity: 0.5 }))] }) }) }), _jsx(TooltipContent, { side: "top", sideOffset: 6, children: hasData && contextWindowStatus ? (_jsxs("div", { className: "max-w-[320px] space-y-1 text-[11px]", children: [resolvedModelName && (_jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Model:" }), " ", resolvedModelName] })), _jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Context window:" }), " ", formatTokens(contextWindowStatus.estimatedInputTokens || 0), " ", "/ ", formatTokens(contextWindowStatus.contextWindowTokens), " ", "tokens"] }), _jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Used:" }), " ", pct] })] })) : (_jsxs("div", { className: "max-w-[320px] space-y-1 text-[11px]", children: [resolvedModelName && (_jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Model:" }), " ", resolvedModelName] })), _jsx("div", { children: "Context window usage will appear here when the agent starts processing." })] })) })] })), agent?.compressionMarkerIndex != null && (_jsxs(Popover, { open: showCompressionPopover, onOpenChange: setShowCompressionPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "border-highlight-100/20 bg-highlight-10/50 text-highlight-100 hover:bg-highlight-10 badge-pad-sm flex cursor-pointer items-center rounded border text-[11px] transition-colors", onClick: () => setShowCompressionPopover(!showCompressionPopover), children: "Compressed" }) }), _jsx(PopoverContent, { className: "w-96 p-4", align: "start", side: "top", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-neutral-grey-100 text-[10px] font-semibold", children: "Conversation Compressed" }), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-[11px]", children: ["First ", agent.compressionMarkerIndex, " messages have been summarized to reduce context usage."] })] }), agent.compressedSummary && (_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "text-neutral-grey-100 text-[11px] font-medium", children: "Summary:" }), _jsx("div", { className: "border-border-default bg-neutral-grey-5 text-neutral-grey-100 max-h-64 overflow-y-auto rounded border p-3 text-[11px] whitespace-pre-wrap", children: agent.compressedSummary })] }))] }) })] })), _jsx(AgentCostDisplay, { totalTokens: liveTotals
847
+ } })), !hasData && (_jsx("circle", { cx: "18", cy: "18", r: radius, fill: "none", stroke: contextColor, strokeWidth: "4", strokeDasharray: "0 100", strokeLinecap: "round", opacity: 0.5 }))] }) }) }), _jsx(TooltipContent, { side: "top", sideOffset: 6, children: hasData && contextWindowStatus ? (_jsxs("div", { className: "max-w-[320px] space-y-1 text-[11px]", children: [resolvedModelName && (_jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Model:" }), " ", resolvedModelName] })), _jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Context window:" }), " ", formatTokens(contextWindowStatus.estimatedInputTokens || 0), " ", "/ ", formatTokens(contextWindowStatus.contextWindowTokens), " ", "tokens"] }), _jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Used:" }), " ", pct] }), breakdownRows.length > 0 && (_jsx("div", { className: "border-border-default mt-1.5 min-w-44 space-y-0.5 border-t pt-1.5", children: breakdownRows.map((row, index) => (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "h-2 w-2 shrink-0 rounded-[2px]", style: row.isFree
848
+ ? {
849
+ backgroundColor: "var(--color-border-default)",
850
+ }
851
+ : {
852
+ backgroundColor: "var(--color-highlight-100)",
853
+ opacity: Math.max(0.18, 1 - index * 0.16),
854
+ } }), _jsx("span", { className: "flex-1 pr-3", children: row.label }), _jsxs("span", { className: "tabular-nums whitespace-nowrap", children: [formatTokens(Math.round(row.tokens)), " \u00B7", " ", row.percent.toFixed(1), "%"] })] }, row.key))) }))] })) : (_jsxs("div", { className: "max-w-[320px] space-y-1 text-[11px]", children: [resolvedModelName && (_jsxs("div", { children: [_jsx("span", { className: "font-semibold", children: "Model:" }), " ", resolvedModelName] })), _jsx("div", { children: "Context window usage will appear here when the agent starts processing." })] })) })] })), agent?.compressionMarkerIndex != null && (_jsxs(Popover, { open: showCompressionPopover, onOpenChange: setShowCompressionPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "border-highlight-100/20 bg-highlight-10/50 text-highlight-100 hover:bg-highlight-10 badge-pad-sm flex cursor-pointer items-center rounded border text-[11px] transition-colors", onClick: () => setShowCompressionPopover(!showCompressionPopover), children: "Compressed" }) }), _jsx(PopoverContent, { className: "w-96 p-4", align: "start", side: "top", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-neutral-grey-100 text-[10px] font-semibold", children: "Conversation Compressed" }), _jsxs("p", { className: "text-neutral-grey-50 mt-1 text-[11px]", children: ["First ", agent.compressionMarkerIndex, " messages have been summarized to reduce context usage."] })] }), agent.compressedSummary && (_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "text-neutral-grey-100 text-[11px] font-medium", children: "Summary:" }), _jsx("div", { className: "border-border-default bg-neutral-grey-5 text-neutral-grey-100 max-h-64 overflow-y-auto rounded border p-3 text-[11px] whitespace-pre-wrap", children: agent.compressedSummary })] }))] }) })] })), _jsx(AgentCostDisplay, { totalTokens: liveTotals
836
855
  ? {
837
856
  input: liveTotals.input,
838
857
  output: liveTotals.output,