@parhelia/core 0.4.12800 → 0.4.12818

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 (495) hide show
  1. package/dist/agents-view/AgentsWorkspaceView.d.ts +2 -0
  2. package/dist/agents-view/AgentsWorkspaceView.js +12 -3
  3. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  4. package/dist/components/WorkspaceHomeView.d.ts +14 -3
  5. package/dist/components/WorkspaceHomeView.js +7 -4
  6. package/dist/components/WorkspaceHomeView.js.map +1 -1
  7. package/dist/components/ui/dialog.d.ts +7 -1
  8. package/dist/components/ui/dialog.js +6 -3
  9. package/dist/components/ui/dialog.js.map +1 -1
  10. package/dist/components/ui/popover.d.ts +8 -0
  11. package/dist/components/ui/popover.js +40 -6
  12. package/dist/components/ui/popover.js.map +1 -1
  13. package/dist/components/ui/tooltip.d.ts +2 -2
  14. package/dist/components/ui/tooltip.js +9 -4
  15. package/dist/components/ui/tooltip.js.map +1 -1
  16. package/dist/config/config.js +2 -2
  17. package/dist/config/config.js.map +1 -1
  18. package/dist/editor/ConfirmationDialog.d.ts +1 -0
  19. package/dist/editor/ConfirmationDialog.js +9 -2
  20. package/dist/editor/ConfirmationDialog.js.map +1 -1
  21. package/dist/editor/ContentTree.d.ts +9 -1
  22. package/dist/editor/ContentTree.js +50 -23
  23. package/dist/editor/ContentTree.js.map +1 -1
  24. package/dist/editor/FieldList.js +41 -4
  25. package/dist/editor/FieldList.js.map +1 -1
  26. package/dist/editor/FieldListField.js +156 -123
  27. package/dist/editor/FieldListField.js.map +1 -1
  28. package/dist/editor/LinkEditorDialog.d.ts +3 -0
  29. package/dist/editor/LinkEditorDialog.js +9 -4
  30. package/dist/editor/LinkEditorDialog.js.map +1 -1
  31. package/dist/editor/MainLayout.js +9 -2
  32. package/dist/editor/MainLayout.js.map +1 -1
  33. package/dist/editor/SetupWizard.js +1 -1
  34. package/dist/editor/SetupWizard.js.map +1 -1
  35. package/dist/editor/UsedBy.d.ts +2 -0
  36. package/dist/editor/UsedBy.js +50 -10
  37. package/dist/editor/UsedBy.js.map +1 -1
  38. package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
  39. package/dist/editor/agent-changes/agentChangeTargets.js +174 -0
  40. package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
  41. package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +57 -0
  42. package/dist/editor/agent-changes/agentChangeTextHighlight.js +109 -0
  43. package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
  44. package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
  45. package/dist/editor/ai/AgentImagePreview.js +41 -0
  46. package/dist/editor/ai/AgentImagePreview.js.map +1 -0
  47. package/dist/editor/ai/ContentInspectorPopover.d.ts +2 -1
  48. package/dist/editor/ai/ContentInspectorPopover.js +3 -3
  49. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
  50. package/dist/editor/ai/MediaImage.js +2 -1
  51. package/dist/editor/ai/MediaImage.js.map +1 -1
  52. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  53. package/dist/editor/ai/activityRowNavigation.js +53 -0
  54. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  55. package/dist/editor/ai/agentMessageGrouping.d.ts +1 -1
  56. package/dist/editor/ai/agentMessageGrouping.js +2 -13
  57. package/dist/editor/ai/agentMessageGrouping.js.map +1 -1
  58. package/dist/editor/ai/agentMessageHelpers.js +21 -1
  59. package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
  60. package/dist/editor/ai/terminal/agentSessionSelectors.js +0 -4
  61. package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
  62. package/dist/editor/ai/terminal/agentSessionState.d.ts +0 -2
  63. package/dist/editor/ai/terminal/agentSessionState.js +8 -12
  64. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  65. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +2 -0
  66. package/dist/editor/ai/terminal/agentTurnTiming.js +26 -1
  67. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -1
  68. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.d.ts +3 -1
  69. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +48 -6
  70. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
  71. package/dist/editor/ai/terminal/components/AgentBanners.d.ts +2 -1
  72. package/dist/editor/ai/terminal/components/AgentBanners.js +3 -2
  73. package/dist/editor/ai/terminal/components/AgentBanners.js.map +1 -1
  74. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +6 -5
  75. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  76. package/dist/editor/ai/terminal/components/AgentDocumentList.js +20 -10
  77. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  78. package/dist/editor/ai/terminal/components/AgentGreeting.js +1 -1
  79. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  80. package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +2 -1
  81. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +12 -9
  82. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
  83. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  84. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  85. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  86. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +1 -1
  87. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +3 -71
  88. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  89. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.d.ts +2 -1
  90. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +2 -2
  91. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js.map +1 -1
  92. package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -1
  93. package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
  94. package/dist/editor/ai/terminal/components/AgentSettingsSections.d.ts +1 -0
  95. package/dist/editor/ai/terminal/components/AgentSettingsSections.js +1 -1
  96. package/dist/editor/ai/terminal/components/AgentSettingsSections.js.map +1 -1
  97. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.d.ts +2 -1
  98. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js +2 -2
  99. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js.map +1 -1
  100. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +2 -1
  101. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +9 -3
  102. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  103. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.d.ts +2 -1
  104. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +2 -6
  105. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js.map +1 -1
  106. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.d.ts +2 -1
  107. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +8 -2
  108. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  109. package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
  110. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  111. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.d.ts +6 -1
  112. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js +5 -3
  113. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js.map +1 -1
  114. package/dist/editor/ai/terminal/components/AiResponseMessage.d.ts +2 -1
  115. package/dist/editor/ai/terminal/components/AiResponseMessage.js +12 -9
  116. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  117. package/dist/editor/ai/terminal/components/ContextInfoBar.js +1 -1
  118. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  119. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  120. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  121. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  122. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +15 -4
  123. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
  124. package/dist/editor/ai/terminal/components/ToolCallDisplay.d.ts +2 -1
  125. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +22 -54
  126. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  127. package/dist/editor/ai/terminal/components/UserMessage.d.ts +6 -0
  128. package/dist/editor/ai/terminal/components/UserMessage.js +17 -4
  129. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  130. package/dist/editor/ai/terminal/components/agentThinkingStyles.d.ts +5 -0
  131. package/dist/editor/ai/terminal/components/agentThinkingStyles.js +5 -0
  132. package/dist/editor/ai/terminal/components/agentThinkingStyles.js.map +1 -1
  133. package/dist/editor/ai/terminal/components/toolCallContentRenderers.d.ts +2 -0
  134. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js +6 -0
  135. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js.map +1 -1
  136. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  137. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  138. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  139. package/dist/editor/ai/terminal/types.d.ts +2 -0
  140. package/dist/editor/ai/terminal/useAgentDraftInitializer.d.ts +2 -0
  141. package/dist/editor/ai/terminal/useAgentDraftInitializer.js +51 -14
  142. package/dist/editor/ai/terminal/useAgentDraftInitializer.js.map +1 -1
  143. package/dist/editor/ai/terminal/useAgentLoadPipeline.d.ts +2 -0
  144. package/dist/editor/ai/terminal/useAgentLoadPipeline.js +3 -1
  145. package/dist/editor/ai/terminal/useAgentLoadPipeline.js.map +1 -1
  146. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  147. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  148. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  149. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.d.ts +1 -1
  150. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js +3 -3
  151. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js.map +1 -1
  152. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.d.ts +2 -2
  153. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js +5 -5
  154. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js.map +1 -1
  155. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js +14 -10
  156. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js.map +1 -1
  157. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +6 -7
  158. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js +5 -5
  159. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js.map +1 -1
  160. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.d.ts +1 -1
  161. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +23 -16
  162. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
  163. package/dist/editor/ai/terminal/useAgentSession.d.ts +0 -2
  164. package/dist/editor/ai/terminal/useAgentSession.js +8 -15
  165. package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
  166. package/dist/editor/ai/terminal/useAgentSessionFacade.d.ts +1 -0
  167. package/dist/editor/ai/terminal/useAgentSessionFacade.js +2 -0
  168. package/dist/editor/ai/terminal/useAgentSessionFacade.js.map +1 -1
  169. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.d.ts +1 -1
  170. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js +3 -3
  171. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
  172. package/dist/editor/ai/terminal/useAgentStreamPipeline.d.ts +2 -2
  173. package/dist/editor/ai/terminal/useAgentStreamPipeline.js +5 -5
  174. package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
  175. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.d.ts +0 -1
  176. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js +3 -12
  177. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js.map +1 -1
  178. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +18 -5
  179. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  180. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +6 -1
  181. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
  182. package/dist/editor/ai/terminal/useAgentTerminalController.js +9 -10
  183. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  184. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -1
  185. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  186. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +1 -1
  187. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  188. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  189. package/dist/editor/bridge/bridgeKeys.js +8 -0
  190. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  191. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  192. package/dist/editor/bridge/linkDownload.js +52 -0
  193. package/dist/editor/bridge/linkDownload.js.map +1 -0
  194. package/dist/editor/bridge/protocol.d.ts +34 -0
  195. package/dist/editor/bridge/protocol.js +3 -1
  196. package/dist/editor/bridge/protocol.js.map +1 -1
  197. package/dist/editor/client/EditorShell.js +30 -21
  198. package/dist/editor/client/EditorShell.js.map +1 -1
  199. package/dist/editor/client/OperationDialogContent.d.ts +10 -3
  200. package/dist/editor/client/OperationDialogContent.js +27 -4
  201. package/dist/editor/client/OperationDialogContent.js.map +1 -1
  202. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  203. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  204. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  205. package/dist/editor/client/editContext.d.ts +16 -0
  206. package/dist/editor/client/editContext.js.map +1 -1
  207. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +5 -0
  208. package/dist/editor/client/hooks/useSocketMessageHandler.js +53 -13
  209. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  210. package/dist/editor/client/itemsRepository.js +26 -7
  211. package/dist/editor/client/itemsRepository.js.map +1 -1
  212. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  213. package/dist/editor/client/localUserEditActivity.js +12 -0
  214. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  215. package/dist/editor/client/operations.js +26 -13
  216. package/dist/editor/client/operations.js.map +1 -1
  217. package/dist/editor/commands/undo.js +8 -2
  218. package/dist/editor/commands/undo.js.map +1 -1
  219. package/dist/editor/componentVisualMode.d.ts +14 -0
  220. package/dist/editor/componentVisualMode.js +43 -0
  221. package/dist/editor/componentVisualMode.js.map +1 -0
  222. package/dist/editor/field-types/ImageFieldEditor.js +1 -1
  223. package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
  224. package/dist/editor/field-types/MultiLineText.js +29 -46
  225. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  226. package/dist/editor/field-types/PictureFieldEditor.js +1 -1
  227. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  228. package/dist/editor/field-types/RichTextEditorComponent.js +9 -2
  229. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  230. package/dist/editor/field-types/SingleLineText.js +28 -79
  231. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  232. package/dist/editor/field-types/richtext/components/ReactSlate.js +59 -8
  233. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  234. package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js +4 -1
  235. package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js.map +1 -1
  236. package/dist/editor/field-types/richtext/components/ToolbarButton.js +4 -1
  237. package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
  238. package/dist/editor/field-types/richtext/types.d.ts +7 -0
  239. package/dist/editor/field-types/richtext/types.js.map +1 -1
  240. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +18 -0
  241. package/dist/editor/field-types/richtext/utils/changeHighlight.js +57 -0
  242. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  243. package/dist/editor/field-types/useFormFieldCaretPresence.d.ts +11 -0
  244. package/dist/editor/field-types/useFormFieldCaretPresence.js +32 -16
  245. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
  246. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +36 -0
  247. package/dist/editor/field-types/useFormFieldSelectionRange.js +123 -0
  248. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  249. package/dist/editor/field-types/useTextCompletion.js +13 -3
  250. package/dist/editor/field-types/useTextCompletion.js.map +1 -1
  251. package/dist/editor/media-selector/AiImageSearchPrompt.d.ts +2 -1
  252. package/dist/editor/media-selector/AiImageSearchPrompt.js +2 -2
  253. package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
  254. package/dist/editor/media-selector/Thumbnails.d.ts +2 -1
  255. package/dist/editor/media-selector/Thumbnails.js +2 -2
  256. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  257. package/dist/editor/media-selector/TreeSelector.js +142 -42
  258. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  259. package/dist/editor/media-selector/UploadZone.d.ts +6 -1
  260. package/dist/editor/media-selector/UploadZone.js +10 -7
  261. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  262. package/dist/editor/media-selector/mediaFileType.d.ts +2 -0
  263. package/dist/editor/media-selector/mediaFileType.js +37 -0
  264. package/dist/editor/media-selector/mediaFileType.js.map +1 -1
  265. package/dist/editor/menubar/GenericToolbar.d.ts +2 -1
  266. package/dist/editor/menubar/GenericToolbar.js +2 -2
  267. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  268. package/dist/editor/menubar/ToolbarFactory.js +1 -1
  269. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  270. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +10 -3
  271. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
  272. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +6 -1
  273. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  274. package/dist/editor/notifications/WatchButton.js +11 -4
  275. package/dist/editor/notifications/WatchButton.js.map +1 -1
  276. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +20 -0
  277. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +31 -0
  278. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  279. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +2 -2
  280. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  281. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +33 -0
  282. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +290 -0
  283. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  284. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +27 -10
  285. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -1
  286. package/dist/editor/page-editor-chrome/InsertComponentMenu.d.ts +6 -1
  287. package/dist/editor/page-editor-chrome/InsertComponentMenu.js +53 -6
  288. package/dist/editor/page-editor-chrome/InsertComponentMenu.js.map +1 -1
  289. package/dist/editor/page-editor-chrome/PageEditorChrome.js +2 -1
  290. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  291. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +14 -2
  292. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  293. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +59 -13
  294. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  295. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +1 -1
  296. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +6 -271
  297. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  298. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  299. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  300. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  301. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +15 -2
  302. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  303. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +2 -0
  304. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +58 -5
  305. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
  306. package/dist/editor/page-viewer/DeviceToolbar.js +53 -10
  307. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  308. package/dist/editor/page-viewer/MiniMap.js +22 -24
  309. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  310. package/dist/editor/page-viewer/PageViewerFrame.js +204 -27
  311. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  312. package/dist/editor/page-viewer/bridgeFieldPatch.js +1 -0
  313. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  314. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  315. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  316. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  317. package/dist/editor/page-viewer/pageViewContext.d.ts +2 -1
  318. package/dist/editor/page-viewer/pageViewContext.js +10 -4
  319. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  320. package/dist/editor/pageModel.d.ts +2 -0
  321. package/dist/editor/reviews/Comment.js +13 -12
  322. package/dist/editor/reviews/Comment.js.map +1 -1
  323. package/dist/editor/reviews/CommentDisplayPopover.js +25 -29
  324. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  325. package/dist/editor/reviews/CommentEditor.js +47 -13
  326. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  327. package/dist/editor/reviews/CommentQuote.d.ts +4 -0
  328. package/dist/editor/reviews/CommentQuote.js +30 -0
  329. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  330. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +23 -0
  331. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  332. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  333. package/dist/editor/reviews/CommentView.d.ts +2 -3
  334. package/dist/editor/reviews/CommentView.js +17 -14
  335. package/dist/editor/reviews/CommentView.js.map +1 -1
  336. package/dist/editor/reviews/Comments.js +14 -5
  337. package/dist/editor/reviews/Comments.js.map +1 -1
  338. package/dist/editor/reviews/MentionText.d.ts +5 -1
  339. package/dist/editor/reviews/MentionText.js +23 -0
  340. package/dist/editor/reviews/MentionText.js.map +1 -1
  341. package/dist/editor/reviews/ReviewCard.js +14 -8
  342. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  343. package/dist/editor/reviews/ReviewersPanel.js +7 -2
  344. package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
  345. package/dist/editor/reviews/SuggestedEdit.js +75 -15
  346. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  347. package/dist/editor/reviews/SuggestionCommentThread.js +5 -4
  348. package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
  349. package/dist/editor/reviews/commentAi.d.ts +27 -3
  350. package/dist/editor/reviews/commentAi.js +109 -28
  351. package/dist/editor/reviews/commentAi.js.map +1 -1
  352. package/dist/editor/reviews/commentImages.d.ts +49 -0
  353. package/dist/editor/reviews/commentImages.js +164 -0
  354. package/dist/editor/reviews/commentImages.js.map +1 -0
  355. package/dist/editor/reviews/feedbackAvatar.js +11 -5
  356. package/dist/editor/reviews/feedbackAvatar.js.map +1 -1
  357. package/dist/editor/reviews/feedbackCommentRules.d.ts +1 -1
  358. package/dist/editor/reviews/feedbackCommentRules.js +3 -9
  359. package/dist/editor/reviews/feedbackCommentRules.js.map +1 -1
  360. package/dist/editor/reviews/feedbackSelection.d.ts +13 -0
  361. package/dist/editor/reviews/feedbackSelection.js +37 -0
  362. package/dist/editor/reviews/feedbackSelection.js.map +1 -1
  363. package/dist/editor/reviews/suggestionDisplayValue.d.ts +24 -2
  364. package/dist/editor/reviews/suggestionDisplayValue.js +28 -4
  365. package/dist/editor/reviews/suggestionDisplayValue.js.map +1 -1
  366. package/dist/editor/reviews/useCommentImagePaste.d.ts +45 -0
  367. package/dist/editor/reviews/useCommentImagePaste.js +149 -0
  368. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  369. package/dist/editor/services/agentErrorMessage.js +5 -1
  370. package/dist/editor/services/agentErrorMessage.js.map +1 -1
  371. package/dist/editor/services/agentService.d.ts +12 -0
  372. package/dist/editor/services/agentService.js.map +1 -1
  373. package/dist/editor/services/contentService.d.ts +2 -0
  374. package/dist/editor/services/contentService.js.map +1 -1
  375. package/dist/editor/services/editService.d.ts +17 -2
  376. package/dist/editor/services/editService.js +7 -2
  377. package/dist/editor/services/editService.js.map +1 -1
  378. package/dist/editor/services/searchService.d.ts +2 -1
  379. package/dist/editor/services/searchService.js +2 -1
  380. package/dist/editor/services/searchService.js.map +1 -1
  381. package/dist/editor/services/userResolution.js +6 -5
  382. package/dist/editor/services/userResolution.js.map +1 -1
  383. package/dist/editor/sidebar/ComponentPalette.js +12 -4
  384. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  385. package/dist/editor/sidebar/ComponentTree.js +38 -22
  386. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  387. package/dist/editor/sidebar/EditHistory.js +2 -2
  388. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  389. package/dist/editor/sidebar/MainContentTree.js +1 -1
  390. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  391. package/dist/editor/sidebar/MorePanelsButton.js +2 -2
  392. package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
  393. package/dist/editor/sidebar/NavigationPanelMenuItem.js +2 -2
  394. package/dist/editor/sidebar/NavigationPanelMenuItem.js.map +1 -1
  395. package/dist/editor/sidebar/Validation.js +38 -44
  396. package/dist/editor/sidebar/Validation.js.map +1 -1
  397. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +62 -0
  398. package/dist/editor/sidebar/liveComponentThumbnails.js +215 -0
  399. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  400. package/dist/editor/ui/ItemCollectionEditor.d.ts +17 -1
  401. package/dist/editor/ui/ItemCollectionEditor.js +17 -5
  402. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  403. package/dist/editor/ui/ItemList.d.ts +5 -0
  404. package/dist/editor/ui/ItemList.js +10 -2
  405. package/dist/editor/ui/ItemList.js.map +1 -1
  406. package/dist/editor/ui/ItemSearch.d.ts +7 -0
  407. package/dist/editor/ui/ItemSearch.js +14 -6
  408. package/dist/editor/ui/ItemSearch.js.map +1 -1
  409. package/dist/editor/ui/PublishDialog.js +3 -2
  410. package/dist/editor/ui/PublishDialog.js.map +1 -1
  411. package/dist/editor/ui/SimpleTabs.js +58 -3
  412. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  413. package/dist/editor/ui/Splitter.d.ts +15 -0
  414. package/dist/editor/ui/Splitter.js +77 -100
  415. package/dist/editor/ui/Splitter.js.map +1 -1
  416. package/dist/editor/ui/TreeListSelector.d.ts +15 -1
  417. package/dist/editor/ui/TreeListSelector.js +2 -2
  418. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  419. package/dist/editor/ui/WorkboxItemsTable.d.ts +6 -1
  420. package/dist/editor/ui/WorkboxItemsTable.js +44 -48
  421. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  422. package/dist/editor/ui/publishReadiness.d.ts +13 -0
  423. package/dist/editor/ui/publishReadiness.js +56 -0
  424. package/dist/editor/ui/publishReadiness.js.map +1 -1
  425. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  426. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  427. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  428. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  429. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  430. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  431. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  432. package/dist/editor/validation/validationFixAgent.js +124 -0
  433. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  434. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  435. package/dist/editor/validation/validationSeverity.js +47 -0
  436. package/dist/editor/validation/validationSeverity.js.map +1 -0
  437. package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -4
  438. package/dist/editor/version-diff/versionDiffGeometryKeys.js +21 -7
  439. package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -1
  440. package/dist/editor/version-diff/versionDiffTargets.d.ts +6 -1
  441. package/dist/editor/version-diff/versionDiffTargets.js +5 -5
  442. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  443. package/dist/editor/views/editorSlotContext.d.ts +4 -0
  444. package/dist/editor/views/editorSlotContext.js +37 -1
  445. package/dist/editor/views/editorSlotContext.js.map +1 -1
  446. package/dist/revision.d.ts +2 -2
  447. package/dist/revision.js +2 -2
  448. package/dist/splash-screen/ModernSplashScreen.js +6 -5
  449. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  450. package/dist/splash-screen/RecentPages.js +33 -18
  451. package/dist/splash-screen/RecentPages.js.map +1 -1
  452. package/dist/task-board/TaskBoardWorkspace.js +65 -49
  453. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  454. package/dist/task-board/components/CommentsList.js +11 -11
  455. package/dist/task-board/components/CommentsList.js.map +1 -1
  456. package/dist/task-board/components/GoalDataView.d.ts +32 -1
  457. package/dist/task-board/components/GoalDataView.js +105 -42
  458. package/dist/task-board/components/GoalDataView.js.map +1 -1
  459. package/dist/task-board/components/ProjectDashboard.d.ts +2 -18
  460. package/dist/task-board/components/ProjectDashboard.js +2 -206
  461. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  462. package/dist/task-board/components/ProjectGoalsPanel.js +115 -10
  463. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  464. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  465. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  466. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  467. package/dist/task-board/components/TaskBoardHomeView.d.ts +11 -0
  468. package/dist/task-board/components/TaskBoardHomeView.js +40 -2
  469. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
  470. package/dist/task-board/components/TaskBoardProjectListSidebar.js +2 -11
  471. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  472. package/dist/task-board/components/TaskDetailPanel.js +62 -23
  473. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  474. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  475. package/dist/task-board/components/commentAuthor.js +25 -0
  476. package/dist/task-board/components/commentAuthor.js.map +1 -0
  477. package/dist/task-board/taskBoardNavStore.d.ts +6 -0
  478. package/dist/task-board/taskBoardNavStore.js +36 -1
  479. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  480. package/dist/task-board/types.d.ts +4 -0
  481. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  482. package/dist/task-board/utils/projectDashboardModel.js +355 -0
  483. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  484. package/dist/task-board/views/DependencyGraphView.d.ts +7 -1
  485. package/dist/task-board/views/DependencyGraphView.js +58 -19
  486. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  487. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  488. package/dist/task-board/views/ProjectDashboardView.js +316 -0
  489. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  490. package/dist/tour/Tour.js +21 -2
  491. package/dist/tour/Tour.js.map +1 -1
  492. package/dist/types.d.ts +11 -0
  493. package/images/Parhelia-Onboarding-Beach.jpg +0 -0
  494. package/package.json +1 -1
  495. package/images/Parhelia-Onboarding-BG.jpg +0 -0
@@ -1,3 +1,10 @@
1
+ import { localStorageService } from "../editor/services/localStorageService";
2
+ /**
3
+ * The project the user last worked on. Persisted so re-entering the
4
+ * workspace after a full page load (no in-memory return state, no tb* URL
5
+ * params) reopens that project instead of the empty home view.
6
+ */
7
+ export const TASKBOARD_LAST_PROJECT_STORAGE_KEY = "taskboard.lastProjectId";
1
8
  const defaultState = {
2
9
  projectTitle: "Tasks",
3
10
  projectSubtitle: "Select a project to get started",
@@ -36,6 +43,10 @@ const defaultReturnState = {
36
43
  };
37
44
  let state = defaultState;
38
45
  let returnState = defaultReturnState;
46
+ // Whether the in-memory return state has been written since the last reset.
47
+ // Until then the persisted last project is the best guess; afterwards the
48
+ // in-memory value wins so an explicit deselection stays deselected.
49
+ let returnStateTouched = false;
39
50
  const listeners = new Set();
40
51
  function emit() {
41
52
  listeners.forEach((listener) => listener());
@@ -70,6 +81,19 @@ function persistTaskBoardReturnState(partial) {
70
81
  selectedTaskId,
71
82
  activeTab,
72
83
  };
84
+ returnStateTouched = true;
85
+ if (hasProject) {
86
+ if (selectedProjectId) {
87
+ localStorageService.setString(TASKBOARD_LAST_PROJECT_STORAGE_KEY, selectedProjectId);
88
+ }
89
+ else {
90
+ localStorageService.removeItem(TASKBOARD_LAST_PROJECT_STORAGE_KEY);
91
+ }
92
+ }
93
+ }
94
+ function getPersistedLastProjectId() {
95
+ const stored = localStorageService.getString(TASKBOARD_LAST_PROJECT_STORAGE_KEY);
96
+ return stored && stored.trim().length > 0 ? stored : null;
73
97
  }
74
98
  export function subscribeTaskBoardNav(listener) {
75
99
  listeners.add(listener);
@@ -88,9 +112,20 @@ export function resetTaskBoardNavState() {
88
112
  emit();
89
113
  }
90
114
  export function getTaskBoardReturnState() {
91
- return returnState;
115
+ if (returnStateTouched)
116
+ return returnState;
117
+ const persistedProjectId = getPersistedLastProjectId();
118
+ if (!persistedProjectId)
119
+ return returnState;
120
+ return {
121
+ ...returnState,
122
+ selectedProjectId: persistedProjectId,
123
+ selectedTaskId: null,
124
+ };
92
125
  }
93
126
  export function resetTaskBoardReturnState() {
94
127
  returnState = defaultReturnState;
128
+ returnStateTouched = false;
129
+ localStorageService.removeItem(TASKBOARD_LAST_PROJECT_STORAGE_KEY);
95
130
  }
96
131
  //# sourceMappingURL=taskBoardNavStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taskBoardNavStore.js","sourceRoot":"","sources":["../../src/task-board/taskBoardNavStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taskBoardNavStore.js","sourceRoot":"","sources":["../../src/task-board/taskBoardNavStore.ts"],"names":[],"mappings":"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"}
@@ -318,6 +318,10 @@ export type TaskComment = {
318
318
  text: string;
319
319
  author: string;
320
320
  authorDisplayName?: string | null;
321
+ /** "User" or "Agent"; missing or null on older rows and means User. */
322
+ authorType?: "User" | "Agent" | string | null;
323
+ /** The agent that wrote the comment on behalf of `author`, when authorType is Agent. */
324
+ authorAgentId?: string | null;
321
325
  createdAt: string;
322
326
  };
323
327
  export type TaskDependencyType = "BlockedBy" | "RelatedTo";
@@ -0,0 +1,68 @@
1
+ import type { GoalDisplaySpec } from "../components/goalDisplaySpec";
2
+ import type { Goal, TaskItem } from "../types";
3
+ /**
4
+ * The dashboard reduces the fifteen execution states to four buckets that a
5
+ * project owner acts on differently: nothing (done), watch (running), act
6
+ * (attention) or wait (open, which includes blocked and unassigned work).
7
+ */
8
+ export type DashboardTaskBucket = "done" | "running" | "attention" | "open";
9
+ export declare function getDashboardTaskBucket(task: TaskItem): DashboardTaskBucket;
10
+ export declare function isFailedTask(task: TaskItem): boolean;
11
+ export type DashboardPhase = "empty" | "finished" | "running" | "attention" | "idle";
12
+ export type DashboardStatusSummary = {
13
+ total: number;
14
+ done: number;
15
+ running: number;
16
+ attention: number;
17
+ failed: number;
18
+ open: number;
19
+ phase: DashboardPhase;
20
+ /** Short lead ("Running.") shown in bold. */
21
+ headline: string;
22
+ /** Plain-language sentence(s) after the headline. */
23
+ detail: string;
24
+ };
25
+ export declare function buildDashboardStatusSummary(tasks: TaskItem[]): DashboardStatusSummary;
26
+ export type DashboardAttentionAction = "Review" | "Answer" | "Open";
27
+ export type DashboardAttentionEntry = {
28
+ task: TaskItem;
29
+ /** What the task needs from the user, in plain words. */
30
+ description: string;
31
+ action: DashboardAttentionAction;
32
+ };
33
+ export declare function describeAttention(task: TaskItem): {
34
+ description: string;
35
+ action: DashboardAttentionAction;
36
+ };
37
+ export declare function listAttentionTasks(tasks: TaskItem[]): DashboardAttentionEntry[];
38
+ export declare function listRunningTasks(tasks: TaskItem[]): TaskItem[];
39
+ /** Row label for the pipeline; null means the row shows no status text. */
40
+ export declare function getDashboardTaskStatusLabel(task: TaskItem, isBlocked: boolean): string | null;
41
+ /** Wall-clock duration of a finished execution, or null when unknown. */
42
+ export declare function getTaskDurationMs(task: TaskItem): number | null;
43
+ /** Time since the execution started, or null when the task never started. */
44
+ export declare function getTaskElapsedMs(task: TaskItem, now: number): number | null;
45
+ export declare function formatDurationShort(ms: number): string;
46
+ /** Earliest execution start across the run, or null when nothing started. */
47
+ export declare function getRunStartedAt(tasks: TaskItem[]): number | null;
48
+ export type DashboardTile = {
49
+ key: string;
50
+ label: string;
51
+ value: string;
52
+ suffix?: string;
53
+ /** Muted trailing text under the value. */
54
+ detail?: string;
55
+ /** Emphasised (red) lead-in for `detail`, e.g. "9 high". */
56
+ emphasis?: string;
57
+ /** 0..100 progress bar under the value. */
58
+ progress?: number | null;
59
+ tone?: "ok" | "neutral";
60
+ };
61
+ export declare const MAX_GOAL_TILES = 4;
62
+ export declare function readGoalSummary(goal: Goal): string | null;
63
+ /**
64
+ * Turns the generic goal widgets (coverage, score, severity counts, metrics)
65
+ * into at most four figures. The goal template's display spec decides the
66
+ * order, so no project type needs its own dashboard code.
67
+ */
68
+ export declare function buildGoalTiles(goal: Goal, spec: GoalDisplaySpec | null): DashboardTile[];
@@ -0,0 +1,355 @@
1
+ import { asMetrics, asRecord, asScore, asSeverityCounts, } from "../components/GoalDataView";
2
+ import { normalizeTaskStatus } from "../taskStatus";
3
+ const RUNNING_STATES = new Set(["Working", "Starting"]);
4
+ const ATTENTION_STATES = new Set([
5
+ "WaitingForApproval",
6
+ "WaitingForToolApproval",
7
+ "Questions",
8
+ "WaitingForInput",
9
+ "WaitingForUser",
10
+ "AgentError",
11
+ "WaitingForBudget",
12
+ ]);
13
+ export function getDashboardTaskBucket(task) {
14
+ const status = normalizeTaskStatus(task.status, task.executionState);
15
+ if (status === "Done")
16
+ return "done";
17
+ const state = task.executionState ?? "";
18
+ if (RUNNING_STATES.has(state))
19
+ return "running";
20
+ switch (task.executionAttentionReason) {
21
+ case "approval":
22
+ case "input":
23
+ case "failed":
24
+ case "budget":
25
+ return "attention";
26
+ }
27
+ if (ATTENTION_STATES.has(state))
28
+ return "attention";
29
+ if (status === "Review")
30
+ return "attention";
31
+ return "open";
32
+ }
33
+ export function isFailedTask(task) {
34
+ return (getDashboardTaskBucket(task) === "attention" &&
35
+ (task.executionState === "AgentError" ||
36
+ task.executionAttentionReason === "failed"));
37
+ }
38
+ function pluralTasks(count) {
39
+ return count === 1 ? "task" : "tasks";
40
+ }
41
+ export function buildDashboardStatusSummary(tasks) {
42
+ const counts = { done: 0, running: 0, attention: 0, open: 0 };
43
+ let failed = 0;
44
+ for (const task of tasks) {
45
+ counts[getDashboardTaskBucket(task)] += 1;
46
+ if (isFailedTask(task))
47
+ failed += 1;
48
+ }
49
+ const total = tasks.length;
50
+ if (total === 0) {
51
+ return {
52
+ total,
53
+ ...counts,
54
+ failed,
55
+ phase: "empty",
56
+ headline: "No tasks yet.",
57
+ detail: "",
58
+ };
59
+ }
60
+ if (counts.done === total) {
61
+ return {
62
+ total,
63
+ ...counts,
64
+ failed,
65
+ phase: "finished",
66
+ headline: "Finished.",
67
+ detail: total === 1 ? "The task is done." : `All ${total} tasks are done.`,
68
+ };
69
+ }
70
+ const phase = counts.running > 0
71
+ ? "running"
72
+ : counts.attention > 0
73
+ ? "attention"
74
+ : "idle";
75
+ const headline = phase === "running"
76
+ ? "Running."
77
+ : phase === "attention"
78
+ ? "Waiting for you."
79
+ : "Not running.";
80
+ const sentences = [`${counts.done} of ${total} tasks done.`];
81
+ if (counts.attention > 0) {
82
+ sentences.push(`${counts.attention} ${pluralTasks(counts.attention)} ${counts.attention === 1 ? "is" : "are"} waiting for you.`);
83
+ }
84
+ return {
85
+ total,
86
+ ...counts,
87
+ failed,
88
+ phase,
89
+ headline,
90
+ detail: sentences.join(" "),
91
+ };
92
+ }
93
+ export function describeAttention(task) {
94
+ switch (task.executionState) {
95
+ case "WaitingForToolApproval":
96
+ return {
97
+ description: "Wants to run a tool and needs your approval",
98
+ action: "Review",
99
+ };
100
+ case "Questions":
101
+ return { description: "Has questions for you", action: "Answer" };
102
+ case "WaitingForInput":
103
+ return { description: "Needs your input to continue", action: "Answer" };
104
+ case "WaitingForUser":
105
+ return { description: "Waiting for you to continue", action: "Open" };
106
+ case "AgentError": {
107
+ const error = task.executionError?.trim();
108
+ return {
109
+ description: error
110
+ ? `Stopped with an error: ${error}`
111
+ : "Stopped with an error",
112
+ action: "Open",
113
+ };
114
+ }
115
+ case "WaitingForBudget":
116
+ return {
117
+ description: "Paused until the project budget is extended",
118
+ action: "Open",
119
+ };
120
+ }
121
+ if (task.executionState === "WaitingForApproval" ||
122
+ normalizeTaskStatus(task.status, task.executionState) === "Review") {
123
+ return {
124
+ description: "Finished and waiting for your approval",
125
+ action: "Review",
126
+ };
127
+ }
128
+ return { description: "Needs your attention", action: "Open" };
129
+ }
130
+ export function listAttentionTasks(tasks) {
131
+ return tasks
132
+ .filter((task) => getDashboardTaskBucket(task) === "attention")
133
+ .map((task) => ({ task, ...describeAttention(task) }));
134
+ }
135
+ export function listRunningTasks(tasks) {
136
+ return tasks.filter((task) => getDashboardTaskBucket(task) === "running");
137
+ }
138
+ /** Row label for the pipeline; null means the row shows no status text. */
139
+ export function getDashboardTaskStatusLabel(task, isBlocked) {
140
+ const status = normalizeTaskStatus(task.status, task.executionState);
141
+ switch (task.executionState) {
142
+ case "Working":
143
+ return "Working";
144
+ case "Starting":
145
+ return "Starting";
146
+ case "Waiting":
147
+ return "Waiting";
148
+ }
149
+ if (status === "Waiting")
150
+ return "Waiting";
151
+ if (status === "Review")
152
+ return "Awaiting approval";
153
+ switch (task.executionState) {
154
+ case "WaitingForApproval":
155
+ return "Awaiting approval";
156
+ case "WaitingForToolApproval":
157
+ return "Awaiting tool approval";
158
+ case "Questions":
159
+ return "Questions";
160
+ case "WaitingForInput":
161
+ return "Waiting for input";
162
+ case "WaitingForUser":
163
+ return "Waiting for user";
164
+ case "AgentError":
165
+ return "Agent error";
166
+ case "WaitingForBudget":
167
+ return "Budget limit reached";
168
+ case "Unassigned":
169
+ return null;
170
+ }
171
+ if (isBlocked)
172
+ return null;
173
+ switch (task.executionState) {
174
+ case "WaitingForDependency":
175
+ return "Blocked";
176
+ case "AgentNotStarted":
177
+ return "Not started";
178
+ }
179
+ switch (status) {
180
+ case "Done":
181
+ return "Done";
182
+ case "InProgress":
183
+ return "In progress";
184
+ default:
185
+ return null;
186
+ }
187
+ }
188
+ function parseDate(value) {
189
+ if (!value)
190
+ return null;
191
+ const time = Date.parse(value);
192
+ return Number.isFinite(time) ? time : null;
193
+ }
194
+ /** Wall-clock duration of a finished execution, or null when unknown. */
195
+ export function getTaskDurationMs(task) {
196
+ const start = parseDate(task.executionStartedAt);
197
+ const end = parseDate(task.executionCompletedAt);
198
+ if (start === null || end === null || end < start)
199
+ return null;
200
+ return end - start;
201
+ }
202
+ /** Time since the execution started, or null when the task never started. */
203
+ export function getTaskElapsedMs(task, now) {
204
+ const start = parseDate(task.executionStartedAt);
205
+ if (start === null || now < start)
206
+ return null;
207
+ return now - start;
208
+ }
209
+ export function formatDurationShort(ms) {
210
+ const seconds = Math.round(ms / 1000);
211
+ if (seconds < 60)
212
+ return `${Math.max(seconds, 1)} s`;
213
+ const minutes = Math.round(seconds / 60);
214
+ if (minutes < 60)
215
+ return `${minutes} min`;
216
+ const hours = Math.floor(minutes / 60);
217
+ const rest = minutes % 60;
218
+ return rest > 0 ? `${hours} h ${rest} min` : `${hours} h`;
219
+ }
220
+ /** Earliest execution start across the run, or null when nothing started. */
221
+ export function getRunStartedAt(tasks) {
222
+ let earliest = null;
223
+ for (const task of tasks) {
224
+ const start = parseDate(task.executionStartedAt);
225
+ if (start === null)
226
+ continue;
227
+ if (earliest === null || start < earliest)
228
+ earliest = start;
229
+ }
230
+ return earliest;
231
+ }
232
+ export const MAX_GOAL_TILES = 4;
233
+ export function readGoalSummary(goal) {
234
+ const record = asRecord(goal.data);
235
+ const summary = record?.summary;
236
+ return typeof summary === "string" && summary.trim().length > 0
237
+ ? summary.trim()
238
+ : null;
239
+ }
240
+ const DEFAULT_GOAL_SECTIONS = [
241
+ { widget: "score", key: "score" },
242
+ { widget: "severityCounts", key: "severityCounts" },
243
+ { widget: "metrics", key: "metrics" },
244
+ ];
245
+ const SEVERITY_ORDER = [
246
+ "critical",
247
+ "high",
248
+ "medium",
249
+ "low",
250
+ "info",
251
+ ];
252
+ function formatNumber(value) {
253
+ return new Intl.NumberFormat("en-US").format(value);
254
+ }
255
+ /**
256
+ * Turns the generic goal widgets (coverage, score, severity counts, metrics)
257
+ * into at most four figures. The goal template's display spec decides the
258
+ * order, so no project type needs its own dashboard code.
259
+ */
260
+ export function buildGoalTiles(goal, spec) {
261
+ const tiles = [];
262
+ const coverage = goal.coverage;
263
+ if (coverage && coverage.hasMeasurableSubgoals && coverage.total > 0) {
264
+ const parts = [];
265
+ if (coverage.inProgress > 0)
266
+ parts.push(`${coverage.inProgress} in progress`);
267
+ if (coverage.pending > 0)
268
+ parts.push(`${coverage.pending} not started`);
269
+ if (coverage.failed > 0)
270
+ parts.push(`${coverage.failed} failed`);
271
+ if (coverage.skipped > 0)
272
+ parts.push(`${coverage.skipped} skipped`);
273
+ tiles.push({
274
+ key: "coverage",
275
+ label: "Subgoals done",
276
+ value: formatNumber(coverage.done),
277
+ suffix: `of ${formatNumber(coverage.total)}`,
278
+ detail: parts.length > 0 ? parts.join(" · ") : undefined,
279
+ progress: Math.round((coverage.done / coverage.total) * 100),
280
+ tone: "ok",
281
+ });
282
+ }
283
+ const record = asRecord(goal.data);
284
+ if (!record)
285
+ return tiles;
286
+ const sections = spec?.sections ?? DEFAULT_GOAL_SECTIONS;
287
+ for (const section of sections) {
288
+ if (tiles.length >= MAX_GOAL_TILES)
289
+ break;
290
+ const value = record[section.key];
291
+ switch (section.widget) {
292
+ case "score": {
293
+ const score = asScore(value);
294
+ if (!score)
295
+ break;
296
+ tiles.push({
297
+ key: `score-${section.key}`,
298
+ label: section.label ?? score.label ?? "Score",
299
+ value: formatNumber(score.value),
300
+ suffix: `of ${formatNumber(score.max)}`,
301
+ progress: Math.round(Math.max(0, Math.min(1, score.value / score.max)) * 100),
302
+ tone: "neutral",
303
+ });
304
+ break;
305
+ }
306
+ case "severityCounts": {
307
+ const counts = asSeverityCounts(value);
308
+ if (!counts)
309
+ break;
310
+ const present = SEVERITY_ORDER.filter((severity) => counts[severity] !== undefined);
311
+ if (present.length === 0)
312
+ break;
313
+ const total = present.reduce((sum, severity) => sum + (counts[severity] ?? 0), 0);
314
+ const urgent = present.filter((severity) => (severity === "critical" || severity === "high") &&
315
+ (counts[severity] ?? 0) > 0);
316
+ const rest = present.filter((severity) => !urgent.includes(severity));
317
+ tiles.push({
318
+ key: `severity-${section.key}`,
319
+ label: section.label ?? "Findings",
320
+ value: formatNumber(total),
321
+ emphasis: urgent.length > 0
322
+ ? urgent
323
+ .map((severity) => `${counts[severity]} ${severity}`)
324
+ .join(" · ")
325
+ : undefined,
326
+ detail: rest.length > 0
327
+ ? rest
328
+ .map((severity) => `${counts[severity]} ${severity}`)
329
+ .join(" · ")
330
+ : undefined,
331
+ });
332
+ break;
333
+ }
334
+ case "metrics": {
335
+ const metrics = asMetrics(value);
336
+ if (!metrics)
337
+ break;
338
+ for (const metric of metrics) {
339
+ if (tiles.length >= MAX_GOAL_TILES)
340
+ break;
341
+ if (!metric.label.trim() || !metric.value.trim())
342
+ continue;
343
+ tiles.push({
344
+ key: `metric-${section.key}-${metric.label}`,
345
+ label: metric.label,
346
+ value: metric.value,
347
+ });
348
+ }
349
+ break;
350
+ }
351
+ }
352
+ }
353
+ return tiles.slice(0, MAX_GOAL_TILES);
354
+ }
355
+ //# sourceMappingURL=projectDashboardModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectDashboardModel.js","sourceRoot":"","sources":["../../../src/task-board/utils/projectDashboardModel.ts"],"names":[],"mappings":"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"}
@@ -42,9 +42,12 @@ type TaskGroupMember = {
42
42
  };
43
43
  type TaskGroupNodeData = {
44
44
  groupId: string;
45
- parentTaskId: string;
45
+ /** Parent task of the members, or null for a batch created without a parent (the group is then a root node). */
46
+ parentTaskId: string | null;
46
47
  batchId: string;
47
48
  label: string;
49
+ /** False when the members share no title and the label is just the member count. */
50
+ hasSharedTitle: boolean;
48
51
  memberCount: number;
49
52
  statusCounts: TaskGroupStatusCounts;
50
53
  members: TaskGroupMember[];
@@ -74,6 +77,7 @@ export declare function buildDependencyGraphLayout(args: {
74
77
  selectedTaskId?: string | null;
75
78
  orientation?: GraphOrientation;
76
79
  autoLayoutStrategy?: "allEdges" | "hierarchy";
80
+ taskTemplateTitles?: ReadonlyMap<string, string>;
77
81
  }): {
78
82
  nodes: DependencyGraphNode[];
79
83
  edges: TaskGraphEdge[];
@@ -122,6 +126,8 @@ export declare function DependencyGraphView(props: {
122
126
  onAddChildTaskFromNode?: (taskId: string) => void;
123
127
  /** Remove control on each node (e.g. project template task templates). */
124
128
  onRemoveTask?: (taskId: string) => void;
129
+ /** Task template titles by lower-cased template id; names collapsed batches after the template they instantiate. */
130
+ taskTemplateTitles?: ReadonlyMap<string, string>;
125
131
  /** Enable creating graph relationships by dragging from source handles to target handles. */
126
132
  allowDependencyConnect?: boolean;
127
133
  /** Called when the graph creates a new dependency link. */