@parhelia/core 0.4.12800 → 0.4.12825

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 (620) 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 +5 -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/AgentStatusBadge.js +11 -9
  48. package/dist/editor/ai/AgentStatusBadge.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/ContentInspectorPopover.d.ts +2 -1
  52. package/dist/editor/ai/ContentInspectorPopover.js +3 -3
  53. package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
  54. package/dist/editor/ai/MediaImage.js +2 -1
  55. package/dist/editor/ai/MediaImage.js.map +1 -1
  56. package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
  57. package/dist/editor/ai/activityRowNavigation.js +53 -0
  58. package/dist/editor/ai/activityRowNavigation.js.map +1 -0
  59. package/dist/editor/ai/agentDiagnostics.d.ts +1 -1
  60. package/dist/editor/ai/agentDiagnostics.js +8 -0
  61. package/dist/editor/ai/agentDiagnostics.js.map +1 -1
  62. package/dist/editor/ai/agentMessageGrouping.d.ts +1 -1
  63. package/dist/editor/ai/agentMessageGrouping.js +2 -13
  64. package/dist/editor/ai/agentMessageGrouping.js.map +1 -1
  65. package/dist/editor/ai/agentMessageHelpers.js +21 -1
  66. package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
  67. package/dist/editor/ai/terminal/agentSessionSelectors.js +0 -4
  68. package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
  69. package/dist/editor/ai/terminal/agentSessionSnapshot.d.ts +15 -0
  70. package/dist/editor/ai/terminal/agentSessionSnapshot.js +103 -3
  71. package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
  72. package/dist/editor/ai/terminal/agentSessionState.d.ts +0 -2
  73. package/dist/editor/ai/terminal/agentSessionState.js +13 -13
  74. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  75. package/dist/editor/ai/terminal/agentTurnTiming.d.ts +2 -0
  76. package/dist/editor/ai/terminal/agentTurnTiming.js +26 -1
  77. package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -1
  78. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.d.ts +3 -1
  79. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +53 -11
  80. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
  81. package/dist/editor/ai/terminal/components/AgentBanners.d.ts +2 -1
  82. package/dist/editor/ai/terminal/components/AgentBanners.js +3 -2
  83. package/dist/editor/ai/terminal/components/AgentBanners.js.map +1 -1
  84. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +6 -5
  85. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  86. package/dist/editor/ai/terminal/components/AgentDocumentList.js +20 -10
  87. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  88. package/dist/editor/ai/terminal/components/AgentGreeting.js +1 -1
  89. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  90. package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +2 -1
  91. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +12 -9
  92. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
  93. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
  94. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
  95. package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
  96. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +1 -1
  97. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +4 -72
  98. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  99. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.d.ts +2 -1
  100. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +2 -2
  101. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js.map +1 -1
  102. package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -1
  103. package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
  104. package/dist/editor/ai/terminal/components/AgentSettingsSections.d.ts +1 -0
  105. package/dist/editor/ai/terminal/components/AgentSettingsSections.js +1 -1
  106. package/dist/editor/ai/terminal/components/AgentSettingsSections.js.map +1 -1
  107. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js +2 -2
  108. package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js.map +1 -1
  109. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.d.ts +2 -1
  110. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js +2 -2
  111. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js.map +1 -1
  112. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +2 -1
  113. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +9 -3
  114. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  115. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.d.ts +2 -1
  116. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +2 -6
  117. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.d.ts +2 -1
  119. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +8 -2
  120. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  121. package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
  122. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  123. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.d.ts +6 -1
  124. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js +5 -3
  125. package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js.map +1 -1
  126. package/dist/editor/ai/terminal/components/AiResponseMessage.d.ts +2 -1
  127. package/dist/editor/ai/terminal/components/AiResponseMessage.js +20 -16
  128. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  129. package/dist/editor/ai/terminal/components/ContextInfoBar.js +2 -2
  130. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  131. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
  132. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
  133. package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
  134. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +15 -4
  135. package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
  136. package/dist/editor/ai/terminal/components/ToolCallDisplay.d.ts +2 -1
  137. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +22 -54
  138. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  139. package/dist/editor/ai/terminal/components/UserMessage.d.ts +6 -0
  140. package/dist/editor/ai/terminal/components/UserMessage.js +17 -4
  141. package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
  142. package/dist/editor/ai/terminal/components/agentThinkingStyles.d.ts +5 -0
  143. package/dist/editor/ai/terminal/components/agentThinkingStyles.js +5 -0
  144. package/dist/editor/ai/terminal/components/agentThinkingStyles.js.map +1 -1
  145. package/dist/editor/ai/terminal/components/toolCallContentRenderers.d.ts +2 -0
  146. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js +6 -0
  147. package/dist/editor/ai/terminal/components/toolCallContentRenderers.js.map +1 -1
  148. package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
  149. package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
  150. package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
  151. package/dist/editor/ai/terminal/types.d.ts +2 -0
  152. package/dist/editor/ai/terminal/useAgentDraftInitializer.d.ts +2 -0
  153. package/dist/editor/ai/terminal/useAgentDraftInitializer.js +51 -14
  154. package/dist/editor/ai/terminal/useAgentDraftInitializer.js.map +1 -1
  155. package/dist/editor/ai/terminal/useAgentEditorContext.js +13 -3
  156. package/dist/editor/ai/terminal/useAgentEditorContext.js.map +1 -1
  157. package/dist/editor/ai/terminal/useAgentLoadPipeline.d.ts +2 -0
  158. package/dist/editor/ai/terminal/useAgentLoadPipeline.js +3 -1
  159. package/dist/editor/ai/terminal/useAgentLoadPipeline.js.map +1 -1
  160. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js +5 -1
  161. package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js.map +1 -1
  162. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js +33 -1
  163. package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js.map +1 -1
  164. package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
  165. package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
  166. package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
  167. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.d.ts +1 -1
  168. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js +3 -3
  169. package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js.map +1 -1
  170. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.d.ts +2 -2
  171. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js +5 -5
  172. package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js.map +1 -1
  173. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js +14 -10
  174. package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js.map +1 -1
  175. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +6 -7
  176. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js +5 -5
  177. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js.map +1 -1
  178. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.d.ts +1 -1
  179. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +23 -16
  180. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
  181. package/dist/editor/ai/terminal/useAgentServerReconciler.js +11 -0
  182. package/dist/editor/ai/terminal/useAgentServerReconciler.js.map +1 -1
  183. package/dist/editor/ai/terminal/useAgentSession.d.ts +0 -2
  184. package/dist/editor/ai/terminal/useAgentSession.js +8 -15
  185. package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
  186. package/dist/editor/ai/terminal/useAgentSessionFacade.d.ts +1 -0
  187. package/dist/editor/ai/terminal/useAgentSessionFacade.js +2 -0
  188. package/dist/editor/ai/terminal/useAgentSessionFacade.js.map +1 -1
  189. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.d.ts +1 -1
  190. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js +3 -3
  191. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
  192. package/dist/editor/ai/terminal/useAgentStreamPipeline.d.ts +2 -2
  193. package/dist/editor/ai/terminal/useAgentStreamPipeline.js +5 -5
  194. package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
  195. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.d.ts +0 -1
  196. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js +3 -12
  197. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js.map +1 -1
  198. package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +1 -0
  199. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +24 -7
  200. package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
  201. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +6 -1
  202. package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
  203. package/dist/editor/ai/terminal/useAgentTerminalController.js +13 -10
  204. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  205. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -1
  206. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  207. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +1 -1
  208. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  209. package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
  210. package/dist/editor/bridge/bridgeKeys.js +8 -0
  211. package/dist/editor/bridge/bridgeKeys.js.map +1 -0
  212. package/dist/editor/bridge/linkDownload.d.ts +3 -0
  213. package/dist/editor/bridge/linkDownload.js +52 -0
  214. package/dist/editor/bridge/linkDownload.js.map +1 -0
  215. package/dist/editor/bridge/protocol.d.ts +39 -0
  216. package/dist/editor/bridge/protocol.js +3 -1
  217. package/dist/editor/bridge/protocol.js.map +1 -1
  218. package/dist/editor/client/EditorShell.js +34 -24
  219. package/dist/editor/client/EditorShell.js.map +1 -1
  220. package/dist/editor/client/OperationDialogContent.d.ts +10 -3
  221. package/dist/editor/client/OperationDialogContent.js +27 -4
  222. package/dist/editor/client/OperationDialogContent.js.map +1 -1
  223. package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
  224. package/dist/editor/client/agentLoadItemPolicy.js +60 -0
  225. package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
  226. package/dist/editor/client/editContext.d.ts +16 -0
  227. package/dist/editor/client/editContext.js.map +1 -1
  228. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +5 -0
  229. package/dist/editor/client/hooks/useSocketMessageHandler.js +56 -14
  230. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  231. package/dist/editor/client/itemsRepository.js +26 -7
  232. package/dist/editor/client/itemsRepository.js.map +1 -1
  233. package/dist/editor/client/localUserEditActivity.d.ts +3 -0
  234. package/dist/editor/client/localUserEditActivity.js +12 -0
  235. package/dist/editor/client/localUserEditActivity.js.map +1 -0
  236. package/dist/editor/client/operations.js +60 -15
  237. package/dist/editor/client/operations.js.map +1 -1
  238. package/dist/editor/commands/commands.d.ts +6 -0
  239. package/dist/editor/commands/commands.js.map +1 -1
  240. package/dist/editor/commands/undo.js +8 -2
  241. package/dist/editor/commands/undo.js.map +1 -1
  242. package/dist/editor/componentVisualMode.d.ts +14 -0
  243. package/dist/editor/componentVisualMode.js +43 -0
  244. package/dist/editor/componentVisualMode.js.map +1 -0
  245. package/dist/editor/field-types/ImageFieldEditor.js +1 -1
  246. package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
  247. package/dist/editor/field-types/MultiLineText.js +29 -46
  248. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  249. package/dist/editor/field-types/PictureFieldEditor.js +1 -1
  250. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  251. package/dist/editor/field-types/RichTextEditorComponent.js +19 -3
  252. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  253. package/dist/editor/field-types/SingleLineText.js +28 -79
  254. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  255. package/dist/editor/field-types/richtext/components/ReactSlate.js +67 -10
  256. package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
  257. package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js +4 -1
  258. package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js.map +1 -1
  259. package/dist/editor/field-types/richtext/components/ToolbarButton.js +4 -1
  260. package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
  261. package/dist/editor/field-types/richtext/types.d.ts +7 -0
  262. package/dist/editor/field-types/richtext/types.js.map +1 -1
  263. package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +18 -0
  264. package/dist/editor/field-types/richtext/utils/changeHighlight.js +57 -0
  265. package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
  266. package/dist/editor/field-types/useFormFieldCaretPresence.d.ts +11 -0
  267. package/dist/editor/field-types/useFormFieldCaretPresence.js +33 -16
  268. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
  269. package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +36 -0
  270. package/dist/editor/field-types/useFormFieldSelectionRange.js +123 -0
  271. package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
  272. package/dist/editor/field-types/useTextCompletion.js +13 -3
  273. package/dist/editor/field-types/useTextCompletion.js.map +1 -1
  274. package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
  275. package/dist/editor/find-replace/FindReplacePanel.js +311 -0
  276. package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
  277. package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
  278. package/dist/editor/find-replace/findReplaceCommand.js +25 -0
  279. package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
  280. package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
  281. package/dist/editor/find-replace/findReplaceMatches.js +66 -0
  282. package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
  283. package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
  284. package/dist/editor/find-replace/findReplaceStore.js +61 -0
  285. package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
  286. package/dist/editor/find-replace/findReplaceTargets.d.ts +49 -0
  287. package/dist/editor/find-replace/findReplaceTargets.js +110 -0
  288. package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
  289. package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
  290. package/dist/editor/find-replace/findReplaceText.js +189 -0
  291. package/dist/editor/find-replace/findReplaceText.js.map +1 -0
  292. package/dist/editor/media-selector/AiImageSearchPrompt.d.ts +2 -1
  293. package/dist/editor/media-selector/AiImageSearchPrompt.js +2 -2
  294. package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
  295. package/dist/editor/media-selector/Thumbnails.d.ts +2 -1
  296. package/dist/editor/media-selector/Thumbnails.js +2 -2
  297. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  298. package/dist/editor/media-selector/TreeSelector.js +142 -42
  299. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  300. package/dist/editor/media-selector/UploadZone.d.ts +6 -1
  301. package/dist/editor/media-selector/UploadZone.js +10 -7
  302. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  303. package/dist/editor/media-selector/mediaFileType.d.ts +2 -0
  304. package/dist/editor/media-selector/mediaFileType.js +37 -0
  305. package/dist/editor/media-selector/mediaFileType.js.map +1 -1
  306. package/dist/editor/menubar/ActiveUsers.js +1 -1
  307. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  308. package/dist/editor/menubar/GenericToolbar.d.ts +2 -1
  309. package/dist/editor/menubar/GenericToolbar.js +2 -2
  310. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  311. package/dist/editor/menubar/ToolbarFactory.js +10 -2
  312. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  313. package/dist/editor/menubar/VersionSelector.js +2 -2
  314. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  315. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +10 -3
  316. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
  317. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
  318. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
  319. package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
  320. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +6 -1
  321. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  322. package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
  323. package/dist/editor/menubar/toolbar-sections/index.js +1 -0
  324. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  325. package/dist/editor/notifications/WatchButton.js +11 -4
  326. package/dist/editor/notifications/WatchButton.js.map +1 -1
  327. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +20 -0
  328. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +31 -0
  329. package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
  330. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +2 -2
  331. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  332. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +33 -0
  333. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +290 -0
  334. package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
  335. package/dist/editor/page-editor-chrome/FieldActionIndicator.js +8 -4
  336. package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
  337. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
  338. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +117 -0
  339. package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
  340. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +27 -10
  341. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -1
  342. package/dist/editor/page-editor-chrome/InsertComponentMenu.d.ts +6 -1
  343. package/dist/editor/page-editor-chrome/InsertComponentMenu.js +53 -6
  344. package/dist/editor/page-editor-chrome/InsertComponentMenu.js.map +1 -1
  345. package/dist/editor/page-editor-chrome/PageEditorChrome.js +3 -1
  346. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  347. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +14 -2
  348. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  349. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +67 -14
  350. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  351. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +1 -1
  352. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +6 -271
  353. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  354. package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
  355. package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
  356. package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
  357. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +15 -2
  358. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  359. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +2 -0
  360. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +58 -5
  361. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
  362. package/dist/editor/page-viewer/DeviceToolbar.js +53 -10
  363. package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
  364. package/dist/editor/page-viewer/MiniMap.d.ts +6 -2
  365. package/dist/editor/page-viewer/MiniMap.js +152 -36
  366. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  367. package/dist/editor/page-viewer/PageViewerFrame.js +225 -32
  368. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  369. package/dist/editor/page-viewer/bridgeFieldPatch.js +1 -0
  370. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  371. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +6 -0
  372. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +19 -1
  373. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
  374. package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
  375. package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
  376. package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
  377. package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
  378. package/dist/editor/page-viewer/minimapViewport.js +31 -0
  379. package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
  380. package/dist/editor/page-viewer/pageViewContext.d.ts +2 -1
  381. package/dist/editor/page-viewer/pageViewContext.js +10 -4
  382. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  383. package/dist/editor/pageModel.d.ts +2 -0
  384. package/dist/editor/reviews/Comment.js +13 -12
  385. package/dist/editor/reviews/Comment.js.map +1 -1
  386. package/dist/editor/reviews/CommentDisplayPopover.js +25 -29
  387. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  388. package/dist/editor/reviews/CommentEditor.js +58 -19
  389. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  390. package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
  391. package/dist/editor/reviews/CommentImageAttachments.js +19 -0
  392. package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
  393. package/dist/editor/reviews/CommentQuote.d.ts +4 -0
  394. package/dist/editor/reviews/CommentQuote.js +30 -0
  395. package/dist/editor/reviews/CommentQuote.js.map +1 -0
  396. package/dist/editor/reviews/CommentThreadAgentLink.d.ts +23 -0
  397. package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
  398. package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
  399. package/dist/editor/reviews/CommentView.d.ts +2 -3
  400. package/dist/editor/reviews/CommentView.js +17 -14
  401. package/dist/editor/reviews/CommentView.js.map +1 -1
  402. package/dist/editor/reviews/Comments.js +14 -5
  403. package/dist/editor/reviews/Comments.js.map +1 -1
  404. package/dist/editor/reviews/MentionText.d.ts +5 -1
  405. package/dist/editor/reviews/MentionText.js +23 -0
  406. package/dist/editor/reviews/MentionText.js.map +1 -1
  407. package/dist/editor/reviews/ReviewCard.js +14 -8
  408. package/dist/editor/reviews/ReviewCard.js.map +1 -1
  409. package/dist/editor/reviews/ReviewersPanel.js +7 -2
  410. package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
  411. package/dist/editor/reviews/SuggestedEdit.js +75 -15
  412. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  413. package/dist/editor/reviews/SuggestionCommentThread.js +5 -4
  414. package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
  415. package/dist/editor/reviews/SuggestionDisplayPopover.d.ts +3 -1
  416. package/dist/editor/reviews/SuggestionDisplayPopover.js +7 -2
  417. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  418. package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
  419. package/dist/editor/reviews/commentAgentAttachments.js +51 -0
  420. package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
  421. package/dist/editor/reviews/commentAi.d.ts +29 -3
  422. package/dist/editor/reviews/commentAi.js +122 -34
  423. package/dist/editor/reviews/commentAi.js.map +1 -1
  424. package/dist/editor/reviews/commentImages.d.ts +49 -0
  425. package/dist/editor/reviews/commentImages.js +164 -0
  426. package/dist/editor/reviews/commentImages.js.map +1 -0
  427. package/dist/editor/reviews/feedbackAvatar.js +11 -5
  428. package/dist/editor/reviews/feedbackAvatar.js.map +1 -1
  429. package/dist/editor/reviews/feedbackCommentRules.d.ts +1 -1
  430. package/dist/editor/reviews/feedbackCommentRules.js +3 -9
  431. package/dist/editor/reviews/feedbackCommentRules.js.map +1 -1
  432. package/dist/editor/reviews/feedbackSelection.d.ts +13 -0
  433. package/dist/editor/reviews/feedbackSelection.js +37 -0
  434. package/dist/editor/reviews/feedbackSelection.js.map +1 -1
  435. package/dist/editor/reviews/suggestionDisplayValue.d.ts +24 -2
  436. package/dist/editor/reviews/suggestionDisplayValue.js +28 -4
  437. package/dist/editor/reviews/suggestionDisplayValue.js.map +1 -1
  438. package/dist/editor/reviews/useCommentImagePaste.d.ts +72 -0
  439. package/dist/editor/reviews/useCommentImagePaste.js +188 -0
  440. package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
  441. package/dist/editor/services/agentErrorMessage.js +5 -1
  442. package/dist/editor/services/agentErrorMessage.js.map +1 -1
  443. package/dist/editor/services/agentService.d.ts +12 -0
  444. package/dist/editor/services/agentService.js.map +1 -1
  445. package/dist/editor/services/agentStatus.d.ts +1 -0
  446. package/dist/editor/services/agentStatus.js +14 -0
  447. package/dist/editor/services/agentStatus.js.map +1 -1
  448. package/dist/editor/services/contentService.d.ts +2 -0
  449. package/dist/editor/services/contentService.js.map +1 -1
  450. package/dist/editor/services/editService.d.ts +17 -2
  451. package/dist/editor/services/editService.js +7 -2
  452. package/dist/editor/services/editService.js.map +1 -1
  453. package/dist/editor/services/searchService.d.ts +2 -1
  454. package/dist/editor/services/searchService.js +2 -1
  455. package/dist/editor/services/searchService.js.map +1 -1
  456. package/dist/editor/services/userResolution.js +6 -5
  457. package/dist/editor/services/userResolution.js.map +1 -1
  458. package/dist/editor/settings/index/RecentBatchesList.js +2 -1
  459. package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
  460. package/dist/editor/sidebar/ComponentPalette.js +12 -4
  461. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  462. package/dist/editor/sidebar/ComponentTree.js +41 -22
  463. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  464. package/dist/editor/sidebar/EditHistory.js +2 -2
  465. package/dist/editor/sidebar/EditHistory.js.map +1 -1
  466. package/dist/editor/sidebar/MainContentTree.js +1 -1
  467. package/dist/editor/sidebar/MainContentTree.js.map +1 -1
  468. package/dist/editor/sidebar/MorePanelsButton.js +2 -2
  469. package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
  470. package/dist/editor/sidebar/NavigationPanelMenuItem.js +2 -2
  471. package/dist/editor/sidebar/NavigationPanelMenuItem.js.map +1 -1
  472. package/dist/editor/sidebar/OperationItem.js +2 -1
  473. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  474. package/dist/editor/sidebar/Validation.js +38 -44
  475. package/dist/editor/sidebar/Validation.js.map +1 -1
  476. package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
  477. package/dist/editor/sidebar/liveComponentThumbnails.js +220 -0
  478. package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
  479. package/dist/editor/ui/ItemCollectionEditor.d.ts +17 -1
  480. package/dist/editor/ui/ItemCollectionEditor.js +17 -5
  481. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  482. package/dist/editor/ui/ItemList.d.ts +5 -0
  483. package/dist/editor/ui/ItemList.js +10 -2
  484. package/dist/editor/ui/ItemList.js.map +1 -1
  485. package/dist/editor/ui/ItemSearch.d.ts +7 -0
  486. package/dist/editor/ui/ItemSearch.js +14 -6
  487. package/dist/editor/ui/ItemSearch.js.map +1 -1
  488. package/dist/editor/ui/ParheliaMark.d.ts +15 -0
  489. package/dist/editor/ui/ParheliaMark.js +12 -0
  490. package/dist/editor/ui/ParheliaMark.js.map +1 -0
  491. package/dist/editor/ui/PublishDialog.js +3 -2
  492. package/dist/editor/ui/PublishDialog.js.map +1 -1
  493. package/dist/editor/ui/SimpleTabs.js +58 -3
  494. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  495. package/dist/editor/ui/Splitter.d.ts +15 -0
  496. package/dist/editor/ui/Splitter.js +77 -100
  497. package/dist/editor/ui/Splitter.js.map +1 -1
  498. package/dist/editor/ui/TreeListSelector.d.ts +15 -1
  499. package/dist/editor/ui/TreeListSelector.js +2 -2
  500. package/dist/editor/ui/TreeListSelector.js.map +1 -1
  501. package/dist/editor/ui/WorkboxItemsTable.d.ts +6 -1
  502. package/dist/editor/ui/WorkboxItemsTable.js +44 -48
  503. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  504. package/dist/editor/ui/publishReadiness.d.ts +13 -0
  505. package/dist/editor/ui/publishReadiness.js +56 -0
  506. package/dist/editor/ui/publishReadiness.js.map +1 -1
  507. package/dist/editor/undoEligibility.d.ts +2 -0
  508. package/dist/editor/undoEligibility.js +8 -0
  509. package/dist/editor/undoEligibility.js.map +1 -0
  510. package/dist/editor/utils/keyboardNavigation.js +16 -0
  511. package/dist/editor/utils/keyboardNavigation.js.map +1 -1
  512. package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
  513. package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
  514. package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
  515. package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
  516. package/dist/editor/validation/navigateToValidationIssue.js +43 -0
  517. package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
  518. package/dist/editor/validation/validationFixAgent.d.ts +26 -0
  519. package/dist/editor/validation/validationFixAgent.js +124 -0
  520. package/dist/editor/validation/validationFixAgent.js.map +1 -0
  521. package/dist/editor/validation/validationSeverity.d.ts +15 -0
  522. package/dist/editor/validation/validationSeverity.js +47 -0
  523. package/dist/editor/validation/validationSeverity.js.map +1 -0
  524. package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -4
  525. package/dist/editor/version-diff/versionDiffGeometryKeys.js +21 -7
  526. package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -1
  527. package/dist/editor/version-diff/versionDiffTargets.d.ts +6 -1
  528. package/dist/editor/version-diff/versionDiffTargets.js +5 -5
  529. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  530. package/dist/editor/views/editorSlotContext.d.ts +4 -0
  531. package/dist/editor/views/editorSlotContext.js +37 -1
  532. package/dist/editor/views/editorSlotContext.js.map +1 -1
  533. package/dist/index.d.ts +1 -0
  534. package/dist/index.js +1 -0
  535. package/dist/index.js.map +1 -1
  536. package/dist/lib/utils.d.ts +5 -0
  537. package/dist/lib/utils.js +7 -0
  538. package/dist/lib/utils.js.map +1 -1
  539. package/dist/revision.d.ts +2 -2
  540. package/dist/revision.js +2 -2
  541. package/dist/splash-screen/ModernSplashScreen.js +10 -8
  542. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  543. package/dist/splash-screen/RecentPages.js +35 -20
  544. package/dist/splash-screen/RecentPages.js.map +1 -1
  545. package/dist/task-board/TaskBoardWorkspace.js +243 -81
  546. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  547. package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
  548. package/dist/task-board/components/AttentionPromptDialog.js +45 -0
  549. package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
  550. package/dist/task-board/components/CommentsList.js +11 -11
  551. package/dist/task-board/components/CommentsList.js.map +1 -1
  552. package/dist/task-board/components/GoalDataView.d.ts +53 -1
  553. package/dist/task-board/components/GoalDataView.js +164 -55
  554. package/dist/task-board/components/GoalDataView.js.map +1 -1
  555. package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
  556. package/dist/task-board/components/GoalFindingsTable.js +160 -0
  557. package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
  558. package/dist/task-board/components/GoalsMatrix.js +33 -6
  559. package/dist/task-board/components/GoalsMatrix.js.map +1 -1
  560. package/dist/task-board/components/IssuePanel.d.ts +31 -0
  561. package/dist/task-board/components/IssuePanel.js +268 -0
  562. package/dist/task-board/components/IssuePanel.js.map +1 -0
  563. package/dist/task-board/components/ProjectDashboard.d.ts +2 -18
  564. package/dist/task-board/components/ProjectDashboard.js +2 -206
  565. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  566. package/dist/task-board/components/ProjectGoalsPanel.js +173 -15
  567. package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
  568. package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
  569. package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
  570. package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
  571. package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
  572. package/dist/task-board/components/SubgoalFindings.js +88 -0
  573. package/dist/task-board/components/SubgoalFindings.js.map +1 -0
  574. package/dist/task-board/components/TaskAgentPanel.d.ts +2 -0
  575. package/dist/task-board/components/TaskAgentPanel.js +5 -4
  576. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  577. package/dist/task-board/components/TaskBoardHomeView.d.ts +11 -0
  578. package/dist/task-board/components/TaskBoardHomeView.js +40 -2
  579. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
  580. package/dist/task-board/components/TaskBoardProjectListSidebar.js +2 -11
  581. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  582. package/dist/task-board/components/TaskDetailPanel.js +58 -23
  583. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  584. package/dist/task-board/components/WizardCommunicationCenter.d.ts +2 -0
  585. package/dist/task-board/components/WizardCommunicationCenter.js +5 -3
  586. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  587. package/dist/task-board/components/WizardCommunicationShared.js +2 -1
  588. package/dist/task-board/components/WizardCommunicationShared.js.map +1 -1
  589. package/dist/task-board/components/WizardTask.d.ts +2 -0
  590. package/dist/task-board/components/WizardTask.js +2 -2
  591. package/dist/task-board/components/WizardTask.js.map +1 -1
  592. package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +4 -0
  593. package/dist/task-board/components/WizardTaskDetailsPanel.js +16 -3
  594. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  595. package/dist/task-board/components/commentAuthor.d.ts +14 -0
  596. package/dist/task-board/components/commentAuthor.js +25 -0
  597. package/dist/task-board/components/commentAuthor.js.map +1 -0
  598. package/dist/task-board/services/issueService.d.ts +193 -0
  599. package/dist/task-board/services/issueService.js +97 -0
  600. package/dist/task-board/services/issueService.js.map +1 -0
  601. package/dist/task-board/taskBoardNavStore.d.ts +6 -0
  602. package/dist/task-board/taskBoardNavStore.js +36 -1
  603. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  604. package/dist/task-board/types.d.ts +28 -0
  605. package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
  606. package/dist/task-board/utils/projectDashboardModel.js +363 -0
  607. package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
  608. package/dist/task-board/views/DependencyGraphView.d.ts +7 -1
  609. package/dist/task-board/views/DependencyGraphView.js +58 -19
  610. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  611. package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
  612. package/dist/task-board/views/ProjectDashboardView.js +316 -0
  613. package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
  614. package/dist/tour/Tour.js +21 -2
  615. package/dist/tour/Tour.js.map +1 -1
  616. package/dist/types.d.ts +11 -0
  617. package/images/Parhelia-Onboarding-Beach.jpg +0 -0
  618. package/package.json +1 -1
  619. package/styles.css +57 -3
  620. package/images/Parhelia-Onboarding-BG.jpg +0 -0
@@ -5,17 +5,17 @@ import { cn } from "../lib/utils";
5
5
  import { Splitter } from "../editor/ui/Splitter";
6
6
  import { getProjectGoals } from "./services/goalService";
7
7
  import { ProjectGoalsPanel } from "./components/ProjectGoalsPanel";
8
- import { deleteProject, getExecutionState, getGraphLayout, getProject, getProjects, getTasks, getMyTasks, getDependencies, restartProject, runOrchestrator, triggerPlanning, updateProject, updateTask, } from "./services/taskService";
8
+ import { deleteProject, getExecutionState, getGraphLayout, getProject, getProjects, getProjectTemplates, getTasks, getMyTasks, getDependencies, restartProject, runOrchestrator, triggerPlanning, updateProject, updateTask, } from "./services/taskService";
9
9
  import { loadAiProfiles } from "../editor/services/aiService";
10
10
  import { useEditContext } from "../editor/client/editContext";
11
11
  import { LicenseFeatures, useFeature } from "../licensing";
12
12
  import { KanbanView } from "./views/KanbanView";
13
13
  import { ListView } from "./views/ListView";
14
- import { WizardView } from "./views/WizardView";
14
+ import { ProjectDashboardView } from "./views/ProjectDashboardView";
15
15
  import { SimpleTabs } from "../editor/ui/SimpleTabs";
16
16
  import { TaskDetailPanel, } from "./components/TaskDetailPanel";
17
17
  import { TaskAgentPanel } from "./components/TaskAgentPanel";
18
- import { ProjectDashboard, ProjectKpisPanel, } from "./components/ProjectDashboard";
18
+ import { ProjectDashboard, } from "./components/ProjectDashboard";
19
19
  import { CreateTaskDialog } from "./components/CreateTaskDialog";
20
20
  import { CreateProjectDialog } from "./components/CreateProjectDialog";
21
21
  import { ProjectSettingsPanel } from "./components/ProjectSettingsDialog";
@@ -34,6 +34,8 @@ import { normalizeTaskStatus } from "./taskStatus";
34
34
  import { getTaskExecutionDisplay, } from "./taskExecutionStatus";
35
35
  import { indexTaskExecutionRecords, overlayTaskExecutionList, taskExecutionRecordsEqual, } from "./taskExecutionRecords";
36
36
  import { WizardCommunicationCenter } from "./components/WizardCommunicationCenter";
37
+ import { AttentionPromptDialog } from "./components/AttentionPromptDialog";
38
+ import { listAttentionTasks } from "./utils/projectDashboardModel";
37
39
  import { Loader2 } from "lucide-react";
38
40
  import { MainContentTree } from "../editor/sidebar/MainContentTree";
39
41
  import { useTaskBoardAgentPanelState } from "./useTaskBoardAgentPanelState";
@@ -54,12 +56,17 @@ const TASKBOARD_PROJECT_QUERY_KEY = "tbProjectId";
54
56
  const TASKBOARD_TASK_QUERY_KEY = "tbTaskId";
55
57
  const TASKBOARD_VIEW_QUERY_KEY = "tbView";
56
58
  const WS_REFRESH_DELAY_MS = 500;
59
+ const ATTENTION_PROMPT_DELAY_MS = 250;
60
+ // Pause after the user handles an action before the panel moves on to the
61
+ // next task that needs them, so the confirmation (approved, answered) is seen.
62
+ const WIZARD_AUTO_ADVANCE_DELAY_MS = 2000;
63
+ /** Retry delays when goal issue counts come back flagged as inconsistent. */
64
+ const GOAL_CONSISTENCY_BACKOFF_MS = [500, 1000, 2000];
57
65
  const TASKBOARD_VIEW_TAB_IDS = [
58
66
  "overview",
59
67
  "kanban",
60
68
  "list",
61
69
  "graph",
62
- "kpis",
63
70
  "settings",
64
71
  "properties",
65
72
  "goals",
@@ -193,6 +200,9 @@ export function TaskBoardWorkspace() {
193
200
  const [isTasksLoading, setIsTasksLoading] = useState(false);
194
201
  const [dependencies, setDependencies] = useState([]);
195
202
  const [graphLayout, setGraphLayout] = useState(null);
203
+ /** Task template titles by lower-cased template id, keyed by project template id. Fetched once per session. */
204
+ const taskTemplateTitlesByProjectTemplateRef = useRef(null);
205
+ const [taskTemplateTitles, setTaskTemplateTitles] = useState(null);
196
206
  const [executionRecordsByTaskId, setExecutionRecordsByTaskId] = useState({});
197
207
  const [selectedTaskId, setSelectedTaskId] = useState(() => getTaskBoardStateFromUrl({ useReturnStateFallback: true }).taskId);
198
208
  const [selectedTaskSource, setSelectedTaskSource] = useState(() => getTaskBoardStateFromUrl({ useReturnStateFallback: true }).taskId
@@ -203,11 +213,10 @@ export function TaskBoardWorkspace() {
203
213
  const isOverviewView = activeViewTabId === "overview";
204
214
  const isListView = activeViewTabId === "list";
205
215
  const isGraphView = activeViewTabId === "graph";
206
- const isKpisView = activeViewTabId === "kpis";
207
216
  const isSettingsView = activeViewTabId === "settings";
208
217
  const isPropertiesView = activeViewTabId === "properties";
209
218
  const isGoalsView = activeViewTabId === "goals";
210
- const shouldKeepSubprojectTaskDetails = isOverviewView || isKpisView;
219
+ const shouldKeepSubprojectTaskDetails = isOverviewView;
211
220
  const [createDialogOpen, setCreateDialogOpen] = useState(false);
212
221
  const [createProjectOpen, setCreateProjectOpen] = useState(false);
213
222
  const [runningOrchestrator, setRunningOrchestrator] = useState(false);
@@ -215,7 +224,10 @@ export function TaskBoardWorkspace() {
215
224
  const [isArchivingProject, setIsArchivingProject] = useState(false);
216
225
  const [showAllProjects, setShowAllProjects] = useState(false);
217
226
  const [isProjectsLoading, setIsProjectsLoading] = useState(false);
218
- const [projectViewLoadingId, setProjectViewLoadingId] = useState(null);
227
+ // Seeded with the restored project so re-entering the workspace paints the
228
+ // "Loading project..." state on the very first frame instead of flashing the
229
+ // empty home view until the load effect below runs.
230
+ const [projectViewLoadingId, setProjectViewLoadingId] = useState(() => getTaskBoardStateFromUrl({ useReturnStateFallback: true }).projectId);
219
231
  const [agentProfileTitlesById, setAgentProfileTitlesById] = useState({});
220
232
  const [subprojectTaskCounts, setSubprojectTaskCounts] = useState({});
221
233
  const [subprojectTasksByProjectId, setSubprojectTasksByProjectId] = useState({});
@@ -279,7 +291,15 @@ export function TaskBoardWorkspace() {
279
291
  const directSubprojectIdsRef = useRef(new Set());
280
292
  const tasksRef = useRef([]);
281
293
  const previousTaskStatusesRef = useRef({});
282
- const previousWizardAttentionSignatureRef = useRef("");
294
+ const previousAttentionSnapshotRef = useRef(null);
295
+ const wizardDisplayedTaskIdRef = useRef(null);
296
+ const selectedTaskSourceRef = useRef(null);
297
+ const wizardDisplayedNeedsAttentionRef = useRef(false);
298
+ const previousDisplayedAttentionRef = useRef(null);
299
+ const autoAdvanceTimeoutRef = useRef(null);
300
+ const findNextAttentionTaskIdRef = useRef(() => null);
301
+ const [autoAdvancePending, setAutoAdvancePending] = useState(false);
302
+ const [attentionPromptTaskIds, setAttentionPromptTaskIds] = useState([]);
283
303
  const autoSelectedProjectIdsRef = useRef(new Set());
284
304
  const syncTaskBoardStateFromUrl = useCallback(() => {
285
305
  const nextState = getTaskBoardStateFromUrl();
@@ -374,6 +394,49 @@ export function TaskBoardWorkspace() {
374
394
  const tasksWithDisplayAssignees = useMemo(() => addAgentDisplayNames(overlayTaskExecutionList(tasks, executionRecordsByTaskId), agentProfileTitlesById), [tasks, executionRecordsByTaskId, agentProfileTitlesById]);
375
395
  const selectedProject = useMemo(() => projects.find((p) => p.project.projectId === selectedProjectId) ?? null, [projects, selectedProjectId]);
376
396
  const selectedProjectTaskCounts = useMemo(() => buildTaskCounts(tasksWithDisplayAssignees), [tasksWithDisplayAssignees]);
397
+ const sourceProjectTemplateId = selectedProject?.project.sourceProjectTemplateId?.trim().toLowerCase() ||
398
+ null;
399
+ useEffect(() => {
400
+ if (!sourceProjectTemplateId) {
401
+ setTaskTemplateTitles(null);
402
+ return;
403
+ }
404
+ let cancelled = false;
405
+ // The list endpoint is open to every board user (the by-id one is admin-only); it is loaded
406
+ // once per session and only names the batch nodes, so a failure just leaves them unnamed
407
+ // and is retried on the next project switch.
408
+ taskTemplateTitlesByProjectTemplateRef.current ??= getProjectTemplates()
409
+ .then((result) => {
410
+ const byProjectTemplate = new Map();
411
+ if (result.type !== "success") {
412
+ taskTemplateTitlesByProjectTemplateRef.current = null;
413
+ return byProjectTemplate;
414
+ }
415
+ for (const template of result.data ?? []) {
416
+ const titles = new Map();
417
+ for (const taskTemplate of template.taskTemplates ?? []) {
418
+ const id = taskTemplate.id?.trim().toLowerCase();
419
+ const title = taskTemplate.title?.trim();
420
+ if (id && title)
421
+ titles.set(id, title);
422
+ }
423
+ byProjectTemplate.set(template.id.trim().toLowerCase(), titles);
424
+ }
425
+ return byProjectTemplate;
426
+ })
427
+ .catch(() => {
428
+ taskTemplateTitlesByProjectTemplateRef.current = null;
429
+ return new Map();
430
+ });
431
+ void taskTemplateTitlesByProjectTemplateRef.current.then((byProjectTemplate) => {
432
+ if (cancelled)
433
+ return;
434
+ setTaskTemplateTitles(byProjectTemplate.get(sourceProjectTemplateId) ?? null);
435
+ });
436
+ return () => {
437
+ cancelled = true;
438
+ };
439
+ }, [sourceProjectTemplateId]);
377
440
  const directSubprojects = useMemo(() => selectedProjectId
378
441
  ? projects
379
442
  .filter((project) => project.project.parentProjectId === selectedProjectId)
@@ -399,31 +462,6 @@ export function TaskBoardWorkspace() {
399
462
  tasks: subprojectTasksWithDisplayAssignees[subproject.project.projectId] ||
400
463
  [],
401
464
  })), [directSubprojects, subprojectTasksWithDisplayAssignees]);
402
- const kpiAttentionTaskGroups = useMemo(() => {
403
- if (!selectedProjectId)
404
- return [];
405
- return [
406
- {
407
- projectId: selectedProjectId,
408
- projectTitle: selectedProject?.project.title ?? "Selected project",
409
- tasks: tasksWithDisplayAssignees,
410
- },
411
- ...directSubprojects.map((subproject) => {
412
- const projectId = subproject.project.projectId;
413
- return {
414
- projectId,
415
- projectTitle: subproject.project.title,
416
- tasks: subprojectTasksWithDisplayAssignees[projectId] || [],
417
- };
418
- }),
419
- ];
420
- }, [
421
- directSubprojects,
422
- selectedProject?.project.title,
423
- selectedProjectId,
424
- subprojectTasksWithDisplayAssignees,
425
- tasksWithDisplayAssignees,
426
- ]);
427
465
  const wizardTasksWithDisplayAssignees = useMemo(() => [
428
466
  ...tasksWithDisplayAssignees,
429
467
  ...wizardSubprojectTaskLists.flatMap((subproject) => subproject.tasks),
@@ -438,11 +476,10 @@ export function TaskBoardWorkspace() {
438
476
  }
439
477
  return merged;
440
478
  }, [executionRecordsByTaskId, subprojectExecutionRecordsByProjectId]);
441
- const taskSelectionUniverse = useMemo(() => isOverviewView || isKpisView
479
+ const taskSelectionUniverse = useMemo(() => isOverviewView
442
480
  ? wizardTasksWithDisplayAssignees
443
481
  : tasksWithDisplayAssignees, [
444
482
  isOverviewView,
445
- isKpisView,
446
483
  wizardTasksWithDisplayAssignees,
447
484
  tasksWithDisplayAssignees,
448
485
  ]);
@@ -541,11 +578,10 @@ export function TaskBoardWorkspace() {
541
578
  // to project owners — so only owners get the inline "Extend limit" action.
542
579
  const canExtendProjectBudget = selectedProject?.permission === "Owner";
543
580
  const viewTabs = useMemo(() => [
544
- { id: "overview", label: "Task overview", content: null },
581
+ { id: "overview", label: "Dashboard", content: null },
545
582
  { id: "kanban", label: "Kanban", content: null },
546
583
  { id: "list", label: "List", content: null },
547
584
  { id: "graph", label: "Flow chart", content: null },
548
- { id: "kpis", label: "KPIs", content: null },
549
585
  { id: "settings", label: "Settings", content: null },
550
586
  { id: "properties", label: "Properties", content: null },
551
587
  { id: "goals", label: "Goals", content: null },
@@ -662,38 +698,80 @@ export function TaskBoardWorkspace() {
662
698
  return;
663
699
  setWizardApprovedTaskId(null);
664
700
  }, [wizardApprovedTaskId, wizardDisplayedTask?.taskId]);
701
+ wizardDisplayedTaskIdRef.current = wizardDisplayedTask?.taskId ?? null;
702
+ selectedTaskSourceRef.current = selectedTaskSource;
703
+ const wizardDisplayedNeedsAttention = !!wizardDisplayedTask &&
704
+ (Boolean(wizardDisplayedExecutionDisplay?.needsAttention) ||
705
+ normalizeTaskStatus(wizardDisplayedTask.status, wizardDisplayedTask.executionState) === "Review");
706
+ wizardDisplayedNeedsAttentionRef.current = wizardDisplayedNeedsAttention;
707
+ // Dashboard attention prompt: open a semi-modal dialog when a task the user
708
+ // already saw newly needs them. Only transitions count, so opening the board
709
+ // with pending approvals, late-loading subproject lists, or re-renders never
710
+ // prompt. The check is deferred a tick so the panel's own auto-select can
711
+ // claim the task first; a task that is already displayed is not prompted.
665
712
  useEffect(() => {
666
- const attentionSnapshot = JSON.stringify({
667
- selectedTaskId,
668
- selectedTaskSource,
669
- wizardPinnedTaskId,
670
- wizardForceOverview,
671
- attentionTaskId: wizardAttentionState.task?.taskId ?? null,
672
- attentionAgentId: wizardAttentionState.agentId ?? null,
673
- summaryState: wizardAttentionState.summaryState,
674
- totalCount: wizardAttentionState.stats.totalCount,
675
- completedCount: wizardAttentionState.stats.completedCount,
676
- approvalCount: wizardAttentionState.stats.approvalCount,
677
- blockedCount: wizardAttentionState.stats.blockedCount,
678
- runningCount: wizardAttentionState.stats.runningCount,
679
- displayedTaskId: wizardDisplayedTask?.taskId ?? null,
680
- displayedExecutionLabel: wizardDisplayedExecutionDisplay?.label ?? null,
681
- displayedNeedsAttention: wizardDisplayedExecutionDisplay?.needsAttention ?? null,
682
- });
683
- if (previousWizardAttentionSignatureRef.current === attentionSnapshot) {
713
+ if (!isOverviewView || isTasksLoading || subprojectCountsLoading) {
714
+ previousAttentionSnapshotRef.current = null;
684
715
  return;
685
716
  }
686
- previousWizardAttentionSignatureRef.current = attentionSnapshot;
717
+ const attentionIds = new Set(listAttentionTasks(orderedWizardTasks).map(({ task }) => task.taskId));
718
+ const knownIds = new Set(orderedWizardTasks.map((task) => task.taskId));
719
+ const previous = previousAttentionSnapshotRef.current;
720
+ previousAttentionSnapshotRef.current = { knownIds, attentionIds };
721
+ if (!previous)
722
+ return;
723
+ const arrivedIds = [...attentionIds].filter((taskId) => previous.knownIds.has(taskId) && !previous.attentionIds.has(taskId));
724
+ if (arrivedIds.length === 0)
725
+ return;
726
+ const timeoutId = window.setTimeout(() => {
727
+ const displayedId = wizardDisplayedTaskIdRef.current;
728
+ const promptIds = arrivedIds.filter((taskId) => taskId !== displayedId);
729
+ if (promptIds.length === 0)
730
+ return;
731
+ // One action at a time: while the displayed task itself needs the user,
732
+ // new arrivals just queue up in "Waiting for you" and the panel moves on
733
+ // to them by itself once this one is handled.
734
+ if (wizardDisplayedNeedsAttentionRef.current)
735
+ return;
736
+ // Nothing the user chose to look at is in the way: show the action
737
+ // directly instead of asking first.
738
+ if (selectedTaskSourceRef.current !== "user") {
739
+ setWizardForceOverview(false);
740
+ setTaskSelection(promptIds[0], {
741
+ source: "system",
742
+ pinInWizard: true,
743
+ });
744
+ return;
745
+ }
746
+ setAttentionPromptTaskIds((current) => [
747
+ ...current,
748
+ ...promptIds.filter((taskId) => !current.includes(taskId)),
749
+ ]);
750
+ }, ATTENTION_PROMPT_DELAY_MS);
751
+ return () => window.clearTimeout(timeoutId);
687
752
  }, [
688
- selectedTaskId,
689
- selectedTaskSource,
690
- wizardAttentionState,
691
- wizardDisplayedExecutionDisplay?.label,
692
- wizardDisplayedExecutionDisplay?.needsAttention,
693
- wizardDisplayedTask?.taskId,
694
- wizardForceOverview,
695
- wizardPinnedTaskId,
753
+ isOverviewView,
754
+ isTasksLoading,
755
+ subprojectCountsLoading,
756
+ orderedWizardTasks,
757
+ setTaskSelection,
696
758
  ]);
759
+ const attentionPromptTasks = useMemo(() => {
760
+ if (attentionPromptTaskIds.length === 0)
761
+ return [];
762
+ const displayedId = wizardDisplayedTask?.taskId ?? null;
763
+ const attentionById = new Map(listAttentionTasks(orderedWizardTasks).map(({ task }) => [
764
+ task.taskId,
765
+ task,
766
+ ]));
767
+ return attentionPromptTaskIds
768
+ .filter((taskId) => taskId !== displayedId)
769
+ .map((taskId) => attentionById.get(taskId))
770
+ .filter((task) => Boolean(task));
771
+ }, [attentionPromptTaskIds, orderedWizardTasks, wizardDisplayedTask?.taskId]);
772
+ const dismissAttentionPrompt = useCallback(() => {
773
+ setAttentionPromptTaskIds([]);
774
+ }, []);
697
775
  const clearWizardCloseTransitionTimeout = useCallback(() => {
698
776
  if (wizardCloseTransitionTimeoutRef.current !== null) {
699
777
  window.clearTimeout(wizardCloseTransitionTimeoutRef.current);
@@ -728,6 +806,61 @@ export function TaskBoardWorkspace() {
728
806
  }
729
807
  return null;
730
808
  }, [orderedWizardTasks, wizardExecutionRecordsByTaskId]);
809
+ findNextAttentionTaskIdRef.current = findNextAttentionTaskId;
810
+ // One action at a time: once the displayed task stops needing the user (its
811
+ // tool call was approved, its question answered, it was reviewed), move on to
812
+ // the next task that does, after a short pause so the confirmation is seen.
813
+ const clearAutoAdvance = useCallback(() => {
814
+ if (autoAdvanceTimeoutRef.current !== null) {
815
+ window.clearTimeout(autoAdvanceTimeoutRef.current);
816
+ autoAdvanceTimeoutRef.current = null;
817
+ }
818
+ setAutoAdvancePending(false);
819
+ }, []);
820
+ useEffect(() => {
821
+ const current = wizardDisplayedTask
822
+ ? {
823
+ taskId: wizardDisplayedTask.taskId,
824
+ needsAttention: wizardDisplayedNeedsAttention,
825
+ }
826
+ : null;
827
+ const previous = previousDisplayedAttentionRef.current;
828
+ previousDisplayedAttentionRef.current = current;
829
+ if (!current || !previous || previous.taskId !== current.taskId) {
830
+ clearAutoAdvance();
831
+ return;
832
+ }
833
+ if (!isOverviewView)
834
+ return;
835
+ if (!previous.needsAttention || current.needsAttention)
836
+ return;
837
+ if (!findNextAttentionTaskId(current.taskId))
838
+ return;
839
+ clearAutoAdvance();
840
+ const sourceTaskId = current.taskId;
841
+ setAutoAdvancePending(true);
842
+ autoAdvanceTimeoutRef.current = window.setTimeout(() => {
843
+ autoAdvanceTimeoutRef.current = null;
844
+ setAutoAdvancePending(false);
845
+ if (wizardDisplayedTaskIdRef.current !== sourceTaskId)
846
+ return;
847
+ if (wizardDisplayedNeedsAttentionRef.current)
848
+ return;
849
+ const nextTaskId = findNextAttentionTaskIdRef.current(sourceTaskId);
850
+ if (!nextTaskId)
851
+ return;
852
+ setWizardForceOverview(false);
853
+ setTaskSelection(nextTaskId, { source: "system", pinInWizard: true });
854
+ }, WIZARD_AUTO_ADVANCE_DELAY_MS);
855
+ }, [
856
+ clearAutoAdvance,
857
+ findNextAttentionTaskId,
858
+ isOverviewView,
859
+ setTaskSelection,
860
+ wizardDisplayedNeedsAttention,
861
+ wizardDisplayedTask,
862
+ ]);
863
+ useEffect(() => clearAutoAdvance, [clearAutoAdvance]);
731
864
  // ── data fetching ──
732
865
  const refreshProjects = useCallback(async (options) => {
733
866
  projectsRequestCountRef.current += 1;
@@ -864,7 +997,7 @@ export function TaskBoardWorkspace() {
864
997
  const indexed = indexTaskExecutionRecords(records);
865
998
  setExecutionRecordsByTaskId(indexed);
866
999
  }, []);
867
- const refreshGoals = useCallback(async (projectId, includeDescendants) => {
1000
+ const refreshGoals = useCallback(async (projectId, includeDescendants, attempt = 0) => {
868
1001
  const generation = ++goalsRequestGenerationRef.current;
869
1002
  latestGoalsProjectIdRef.current = projectId;
870
1003
  setGoalsLoading(true);
@@ -885,12 +1018,24 @@ export function TaskBoardWorkspace() {
885
1018
  toast.error(message);
886
1019
  return;
887
1020
  }
888
- setGoals(result.data?.goals ?? []);
1021
+ const goals = result.data?.goals ?? [];
1022
+ setGoals(goals);
889
1023
  setGoalCatalog(result.data?.catalog ?? []);
890
1024
  setGoalPermissions(result.data?.permissions ?? {});
891
1025
  setGoalDisplaySpecs(result.data?.displaySpecs ?? {});
892
1026
  setGoalStateScope({ projectId, includeDescendants });
893
1027
  setGoalsError(null);
1028
+ // Issue counts read while issues were changing: read again with
1029
+ // bounded backoff (500 ms, 1 s, 2 s); the last result stays flagged
1030
+ // and the goal card says so. A later goal:changed is not relied on.
1031
+ const inconsistent = goals.some((goal) => goal.issueSummaryConsistent === false);
1032
+ if (inconsistent && attempt < GOAL_CONSISTENCY_BACKOFF_MS.length) {
1033
+ window.setTimeout(() => {
1034
+ if (latestGoalsProjectIdRef.current === projectId &&
1035
+ generation === goalsRequestGenerationRef.current)
1036
+ void refreshGoals(projectId, includeDescendants, attempt + 1);
1037
+ }, GOAL_CONSISTENCY_BACKOFF_MS[attempt]);
1038
+ }
894
1039
  }
895
1040
  finally {
896
1041
  if (latestGoalsProjectIdRef.current === projectId &&
@@ -909,12 +1054,18 @@ export function TaskBoardWorkspace() {
909
1054
  }
910
1055
  };
911
1056
  }, [refreshGoals, includeGoalSubprojects]);
912
- // Load goals when the Goals tab is active (and on project/scope change).
1057
+ // Issue revisions and QA state may have changed while the socket was offline.
913
1058
  useEffect(() => {
914
- if (!isGoalsView || !selectedProjectId)
1059
+ refreshGoalsRef.current?.();
1060
+ }, [editContext?.socketConnectionVersion]);
1061
+ // Load goals when the Goals tab or the dashboard is active (and on
1062
+ // project/scope change); the dashboard shows each goal's figures.
1063
+ const needsGoals = isGoalsView || isOverviewView;
1064
+ useEffect(() => {
1065
+ if (!needsGoals || !selectedProjectId)
915
1066
  return;
916
1067
  void refreshGoals(selectedProjectId, includeGoalSubprojects);
917
- }, [isGoalsView, selectedProjectId, includeGoalSubprojects, refreshGoals]);
1068
+ }, [needsGoals, selectedProjectId, includeGoalSubprojects, refreshGoals]);
918
1069
  useEffect(() => {
919
1070
  return () => {
920
1071
  if (wsGoalRefreshTimeoutRef.current !== null) {
@@ -1755,7 +1906,8 @@ export function TaskBoardWorkspace() {
1755
1906
  }, [refreshSubprojectTaskCounts]);
1756
1907
  useEffect(() => {
1757
1908
  previousTaskStatusesRef.current = {};
1758
- previousWizardAttentionSignatureRef.current = "";
1909
+ previousAttentionSnapshotRef.current = null;
1910
+ setAttentionPromptTaskIds([]);
1759
1911
  transitionGoalTaskNavigation({
1760
1912
  type: "projectSelected",
1761
1913
  projectId: selectedProjectId,
@@ -2052,6 +2204,9 @@ export function TaskBoardWorkspace() {
2052
2204
  const wizardNextReviewTaskId = useMemo(() => wizardDisplayedTask
2053
2205
  ? findNextAttentionTaskId(wizardDisplayedTask.taskId)
2054
2206
  : null, [findNextAttentionTaskId, wizardDisplayedTask]);
2207
+ const wizardNextReviewTask = useMemo(() => wizardNextReviewTaskId
2208
+ ? (orderedWizardTasks.find((task) => task.taskId === wizardNextReviewTaskId) ?? null)
2209
+ : null, [orderedWizardTasks, wizardNextReviewTaskId]);
2055
2210
  const handleReviewNextWizardTask = useCallback(() => {
2056
2211
  clearWizardCloseTransitionTimeout();
2057
2212
  setWizardApprovedTaskId(null);
@@ -2093,7 +2248,7 @@ export function TaskBoardWorkspace() {
2093
2248
  });
2094
2249
  }
2095
2250
  await refreshVisibleTaskData();
2096
- }, showApprovedState: wizardDisplayedTask?.taskId === wizardApprovedTaskId, hasNextReviewTask: Boolean(wizardNextReviewTaskId), onReviewNext: handleReviewNextWizardTask, onInteractionSubmitted: () => {
2251
+ }, showApprovedState: wizardDisplayedTask?.taskId === wizardApprovedTaskId, hasNextReviewTask: Boolean(wizardNextReviewTaskId), nextAttentionTask: wizardNextReviewTask, autoAdvancePending: autoAdvancePending, onReviewNext: handleReviewNextWizardTask, onInteractionSubmitted: () => {
2097
2252
  handleCloseWizardTask({ advanceToNext: true });
2098
2253
  }, onCloseTask: () => handleCloseWizardTask(), onSelectTask: (taskId) => {
2099
2254
  clearWizardCloseTransitionTimeout();
@@ -2119,6 +2274,8 @@ export function TaskBoardWorkspace() {
2119
2274
  setTaskSelection,
2120
2275
  wizardApprovedTaskId,
2121
2276
  wizardNextReviewTaskId,
2277
+ wizardNextReviewTask,
2278
+ autoAdvancePending,
2122
2279
  ]);
2123
2280
  const isProjectViewLoading = !!selectedProjectId && projectViewLoadingId === selectedProjectId;
2124
2281
  const goalScopeMatches = goalScopesMatch(goalStateScope, {
@@ -2228,10 +2385,15 @@ export function TaskBoardWorkspace() {
2228
2385
  return _jsx(TaskBoardHomeView, { nav: nav });
2229
2386
  }
2230
2387
  if (isOverviewView) {
2231
- return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx("div", { className: "mt-3 min-h-0 flex-1", children: _jsx(WizardView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
2388
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx("div", { className: "mt-3 min-h-0 flex-1", children: _jsx(ProjectDashboardView, { projectId: selectedProjectId, projectTitle: selectedProject?.project.title ?? "No project selected", tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
2232
2389
  setWizardForceOverview(false);
2233
2390
  setTaskSelection(id, { source: "user", pinInWizard: true });
2234
- }, projectTitle: selectedProject?.project.title ?? "No project selected", projectDescription: selectedProject?.project.description, projectCostUsed: selectedProjectCumulativeCostUsed, projectCostLimit: selectedProject?.project.costLimit ?? null, canEditProperties: selectedProject?.permission === "Owner", showProperties: false, showCost: false, communicationPanel: wizardCommunicationPanel }) })] }));
2391
+ }, projectCostUsed: selectedProjectCumulativeCostUsed, projectCostLimit: selectedProject?.project.costLimit ?? null, goals: goalScopeMatches ? goals : [], goalsLoading: goalsLoading || !goalScopeMatches, goalDisplaySpecs: goalScopeMatches ? goalDisplaySpecs : {}, onOpenGoals: () => setActiveTab(getTaskBoardViewTabIndex("goals")), communicationPanel: wizardDisplayedTask ? wizardCommunicationPanel : undefined }) }), _jsx(AttentionPromptDialog, { tasks: attentionPromptTasks, onReview: (taskId) => {
2392
+ setAttentionPromptTaskIds([]);
2393
+ clearWizardCloseTransitionTimeout();
2394
+ setWizardForceOverview(false);
2395
+ setTaskSelection(taskId, { source: "user", pinInWizard: true });
2396
+ }, onDismiss: dismissAttentionPrompt })] }));
2235
2397
  }
2236
2398
  if (isSettingsView) {
2237
2399
  return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx("div", { className: "mt-3", children: _jsx(ProjectSettingsPanel, { projectId: selectedProjectId, selectedProject: selectedProject, projects: projects, canOpenSourceTemplate: isAdministrator, onOpenSourceTemplate: handleOpenSourceTemplate, onDeleteProject: handleDeleteProject, onChanged: async () => {
@@ -2249,9 +2411,6 @@ export function TaskBoardWorkspace() {
2249
2411
  refreshGoalsRef.current?.();
2250
2412
  } }) })] }));
2251
2413
  }
2252
- if (isKpisView) {
2253
- return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx("div", { className: "mt-3 max-w-[1000px]", children: _jsx(ProjectKpisPanel, { selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, selectedProjectAttention: selectedProject?.overview?.attention, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, attentionTaskGroups: kpiAttentionTaskGroups, attentionDetailsLoading: subprojectCountsLoading, onSelectAttentionTask: (taskId) => setTaskSelection(taskId, { source: "user" }) }) })] }));
2254
- }
2255
2414
  if (isPropertiesView) {
2256
2415
  return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectPropertiesPanel, { projectId: selectedProjectId, canEdit: selectedProject?.permission === "Owner", defaultExpanded: true, showHeader: false, className: "border-border-default mt-3 rounded-md border bg-white p-4" })] }));
2257
2416
  }
@@ -2261,7 +2420,7 @@ export function TaskBoardWorkspace() {
2261
2420
  }, projectId: selectedProjectId, permission: selectedProject?.permission }) })] }));
2262
2421
  }
2263
2422
  if (isGraphView) {
2264
- return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showSubprojectTaskVisibilityHint: showSubprojectTaskVisibilityHint }), sharedViewSwitcher, _jsx("div", { className: "mt-3 min-h-0 flex-1", children: _jsx(Suspense, { fallback: _jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center text-sm", children: "Loading dependency graph..." }), children: _jsx(DependencyGraphView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, dependencies: dependencies, miniMapWidth: 160, miniMapHeight: 120, orientation: "horizontal", autoLayoutStrategy: "hierarchy", showOrientationToggle: true, savedLayout: graphLayout, selectedTaskId: selectedTaskId, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), permission: selectedProject?.permission, onLayoutSaved: (layout) => setGraphLayout(layout && selectedProjectId
2423
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showSubprojectTaskVisibilityHint: showSubprojectTaskVisibilityHint }), sharedViewSwitcher, _jsx("div", { className: "mt-3 min-h-0 flex-1", children: _jsx(Suspense, { fallback: _jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center text-sm", children: "Loading dependency graph..." }), children: _jsx(DependencyGraphView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, dependencies: dependencies, miniMapWidth: 160, miniMapHeight: 120, orientation: "horizontal", autoLayoutStrategy: "hierarchy", showOrientationToggle: true, savedLayout: graphLayout, selectedTaskId: selectedTaskId, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), permission: selectedProject?.permission, taskTemplateTitles: taskTemplateTitles ?? undefined, onLayoutSaved: (layout) => setGraphLayout(layout && selectedProjectId
2265
2424
  ? {
2266
2425
  projectId: selectedProjectId,
2267
2426
  ...layout,
@@ -2279,7 +2438,6 @@ export function TaskBoardWorkspace() {
2279
2438
  isOverviewView,
2280
2439
  isListView,
2281
2440
  isGraphView,
2282
- isKpisView,
2283
2441
  isSettingsView,
2284
2442
  isPropertiesView,
2285
2443
  isGoalsView,
@@ -2301,7 +2459,6 @@ export function TaskBoardWorkspace() {
2301
2459
  selectedProjectTaskCounts,
2302
2460
  directSubprojects,
2303
2461
  subprojectTaskCounts,
2304
- kpiAttentionTaskGroups,
2305
2462
  subprojectCountsLoading,
2306
2463
  parentProject?.project.projectId,
2307
2464
  parentProject?.project.title,
@@ -2318,6 +2475,9 @@ export function TaskBoardWorkspace() {
2318
2475
  wizardSubprojectTaskLists,
2319
2476
  wizardDisplayedTask?.taskId,
2320
2477
  wizardCommunicationPanel,
2478
+ attentionPromptTasks,
2479
+ dismissAttentionPrompt,
2480
+ clearWizardCloseTransitionTimeout,
2321
2481
  setTaskSelection,
2322
2482
  refreshProjects,
2323
2483
  refreshGoals,
@@ -2395,6 +2555,8 @@ export function TaskBoardWorkspace() {
2395
2555
  ]);
2396
2556
  const agentTerminalPanel = useMemo(() => (_jsx(TaskAgentPanel, { agentId: displayAgentId, mode: agentPanelMode, label: selectedTaskIsPlan ? "Planner" : "Task Agent", taskDetailsContent: taskDetailsPopoverContent ?? undefined, taskDetailsPopoverOpen: isTaskDetailsPopoverOpen, onTaskDetailsPopoverOpenChange: setIsTaskDetailsPopoverOpen, assignedAgentStatus: undefined, onReopenTask: selectedTask && canEditTasks
2397
2557
  ? () => void handleReopenSelectedTask()
2558
+ : undefined, onClose: selectedTask
2559
+ ? () => setTaskSelection(null, { source: "user" })
2398
2560
  : undefined })), [
2399
2561
  displayAgentId,
2400
2562
  agentPanelMode,
@@ -2404,6 +2566,7 @@ export function TaskBoardWorkspace() {
2404
2566
  canEditTasks,
2405
2567
  selectedTask,
2406
2568
  handleReopenSelectedTask,
2569
+ setTaskSelection,
2407
2570
  ]);
2408
2571
  const buildRightHandPanels = useCallback((showAgentColumn) => {
2409
2572
  const renderDetailPanel = (collapsedFlag) => (_jsx(TaskDetailPanel, { project: selectedTaskProject, projects: projects, task: selectedTask, allTasks: taskSelectionUniverse, dependencies: dependencies, onTaskChanged: () => {
@@ -2498,7 +2661,7 @@ export function TaskBoardWorkspace() {
2498
2661
  const showAgentColumnForSelectedTask = !!selectedProjectId &&
2499
2662
  !shouldHideAgentPanelForSelectedTask &&
2500
2663
  agentPanelMode === "agent";
2501
- if (isOverviewView || isKpisView) {
2664
+ if (isOverviewView) {
2502
2665
  const overviewPanels = [
2503
2666
  {
2504
2667
  name: "task-list",
@@ -2569,7 +2732,6 @@ export function TaskBoardWorkspace() {
2569
2732
  return kanbanPanels;
2570
2733
  }, [
2571
2734
  isOverviewView,
2572
- isKpisView,
2573
2735
  isListView,
2574
2736
  isGraphView,
2575
2737
  selectedProjectId,