@stigmer/react 3.1.1 → 3.1.3

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 (483) hide show
  1. package/composer/SessionComposer.d.ts +25 -1
  2. package/composer/SessionComposer.d.ts.map +1 -1
  3. package/composer/SessionComposer.js +19 -8
  4. package/composer/SessionComposer.js.map +1 -1
  5. package/execution/ArtifactContentRenderer.d.ts +11 -1
  6. package/execution/ArtifactContentRenderer.d.ts.map +1 -1
  7. package/execution/ArtifactContentRenderer.js +39 -15
  8. package/execution/ArtifactContentRenderer.js.map +1 -1
  9. package/execution/ArtifactPreviewModal.d.ts +5 -5
  10. package/execution/ArtifactPreviewModal.js +4 -4
  11. package/execution/ArtifactPreviewModal.js.map +1 -1
  12. package/execution/FileChangeProgressBar.d.ts +47 -0
  13. package/execution/FileChangeProgressBar.d.ts.map +1 -0
  14. package/execution/FileChangeProgressBar.js +49 -0
  15. package/execution/FileChangeProgressBar.js.map +1 -0
  16. package/execution/FileChangesView.d.ts.map +1 -1
  17. package/execution/FileChangesView.js +19 -4
  18. package/execution/FileChangesView.js.map +1 -1
  19. package/execution/FilePathContext.d.ts +8 -1
  20. package/execution/FilePathContext.d.ts.map +1 -1
  21. package/execution/FilePathContext.js.map +1 -1
  22. package/execution/FilePathLink.d.ts.map +1 -1
  23. package/execution/FilePathLink.js +21 -6
  24. package/execution/FilePathLink.js.map +1 -1
  25. package/execution/FileReviewAtoms.d.ts +27 -0
  26. package/execution/FileReviewAtoms.d.ts.map +1 -0
  27. package/execution/FileReviewAtoms.js +64 -0
  28. package/execution/FileReviewAtoms.js.map +1 -0
  29. package/execution/FileReviewCard.d.ts +2 -2
  30. package/execution/FileReviewCard.d.ts.map +1 -1
  31. package/execution/FileReviewCard.js +32 -62
  32. package/execution/FileReviewCard.js.map +1 -1
  33. package/execution/MessageEntry.d.ts +20 -0
  34. package/execution/MessageEntry.d.ts.map +1 -1
  35. package/execution/MessageEntry.js +19 -5
  36. package/execution/MessageEntry.js.map +1 -1
  37. package/execution/MessageThread.d.ts +75 -13
  38. package/execution/MessageThread.d.ts.map +1 -1
  39. package/execution/MessageThread.js +195 -27
  40. package/execution/MessageThread.js.map +1 -1
  41. package/execution/PlanArtifactCard.d.ts +36 -21
  42. package/execution/PlanArtifactCard.d.ts.map +1 -1
  43. package/execution/PlanArtifactCard.js +39 -25
  44. package/execution/PlanArtifactCard.js.map +1 -1
  45. package/execution/PlanCompletionCard.d.ts +4 -4
  46. package/execution/PlanCompletionCard.d.ts.map +1 -1
  47. package/execution/PlanCompletionCard.js +4 -4
  48. package/execution/PlanCompletionCard.js.map +1 -1
  49. package/execution/PlanDocumentMessage.d.ts +32 -0
  50. package/execution/PlanDocumentMessage.d.ts.map +1 -0
  51. package/execution/PlanDocumentMessage.js +37 -0
  52. package/execution/PlanDocumentMessage.js.map +1 -0
  53. package/execution/PlanStreamingCard.d.ts +50 -0
  54. package/execution/PlanStreamingCard.d.ts.map +1 -0
  55. package/execution/PlanStreamingCard.js +40 -0
  56. package/execution/PlanStreamingCard.js.map +1 -0
  57. package/execution/index.d.ts +9 -1
  58. package/execution/index.d.ts.map +1 -1
  59. package/execution/index.js +4 -0
  60. package/execution/index.js.map +1 -1
  61. package/execution/use-build-from-plan-hotkey.d.ts +1 -1
  62. package/execution/use-build-from-plan-hotkey.js +1 -1
  63. package/execution/useArtifactCopy.d.ts +51 -0
  64. package/execution/useArtifactCopy.d.ts.map +1 -0
  65. package/execution/useArtifactCopy.js +75 -0
  66. package/execution/useArtifactCopy.js.map +1 -0
  67. package/execution/useArtifactDownload.d.ts.map +1 -1
  68. package/execution/useArtifactDownload.js +17 -5
  69. package/execution/useArtifactDownload.js.map +1 -1
  70. package/execution/useCreateAgentExecution.d.ts +12 -0
  71. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  72. package/execution/useCreateAgentExecution.js +5 -1
  73. package/execution/useCreateAgentExecution.js.map +1 -1
  74. package/github/decodeGitHubContent.d.ts +29 -0
  75. package/github/decodeGitHubContent.d.ts.map +1 -0
  76. package/github/decodeGitHubContent.js +72 -0
  77. package/github/decodeGitHubContent.js.map +1 -0
  78. package/github/index.d.ts +1 -0
  79. package/github/index.d.ts.map +1 -1
  80. package/github/index.js +1 -0
  81. package/github/index.js.map +1 -1
  82. package/github/useGitHubFileReader.d.ts +26 -0
  83. package/github/useGitHubFileReader.d.ts.map +1 -0
  84. package/github/useGitHubFileReader.js +106 -0
  85. package/github/useGitHubFileReader.js.map +1 -0
  86. package/github/useGitHubTreeLister.d.ts.map +1 -1
  87. package/github/useGitHubTreeLister.js +6 -2
  88. package/github/useGitHubTreeLister.js.map +1 -1
  89. package/index.d.ts +9 -9
  90. package/index.d.ts.map +1 -1
  91. package/index.js +5 -5
  92. package/index.js.map +1 -1
  93. package/internal/ResizableSplit.d.ts +72 -22
  94. package/internal/ResizableSplit.d.ts.map +1 -1
  95. package/internal/ResizableSplit.js +96 -38
  96. package/internal/ResizableSplit.js.map +1 -1
  97. package/internal/VirtualizedThread.d.ts +5 -3
  98. package/internal/VirtualizedThread.d.ts.map +1 -1
  99. package/internal/VirtualizedThread.js +6 -4
  100. package/internal/VirtualizedThread.js.map +1 -1
  101. package/internal/file-icons/index.d.ts +17 -0
  102. package/internal/file-icons/index.d.ts.map +1 -0
  103. package/internal/file-icons/index.js +60 -0
  104. package/internal/file-icons/index.js.map +1 -0
  105. package/internal/file-tree/FileTreeNode.d.ts +18 -1
  106. package/internal/file-tree/FileTreeNode.d.ts.map +1 -1
  107. package/internal/file-tree/FileTreeNode.js +11 -2
  108. package/internal/file-tree/FileTreeNode.js.map +1 -1
  109. package/internal/markdown-components.d.ts +38 -1
  110. package/internal/markdown-components.d.ts.map +1 -1
  111. package/internal/markdown-components.js +86 -11
  112. package/internal/markdown-components.js.map +1 -1
  113. package/{workflow → internal}/motion-preference.d.ts +7 -4
  114. package/internal/motion-preference.d.ts.map +1 -0
  115. package/{workflow → internal}/motion-preference.js +7 -4
  116. package/internal/motion-preference.js.map +1 -0
  117. package/internal/store/index.d.ts +33 -0
  118. package/internal/store/index.d.ts.map +1 -1
  119. package/internal/store/index.js +59 -0
  120. package/internal/store/index.js.map +1 -1
  121. package/internal/store/workspace-editors-store.d.ts +145 -0
  122. package/internal/store/workspace-editors-store.d.ts.map +1 -0
  123. package/internal/store/workspace-editors-store.js +208 -0
  124. package/internal/store/workspace-editors-store.js.map +1 -0
  125. package/internal/store/workspace-file-selection-store.d.ts +38 -0
  126. package/internal/store/workspace-file-selection-store.d.ts.map +1 -0
  127. package/internal/store/workspace-file-selection-store.js +62 -0
  128. package/internal/store/workspace-file-selection-store.js.map +1 -0
  129. package/internal/useRevealLine.d.ts +49 -0
  130. package/internal/useRevealLine.d.ts.map +1 -0
  131. package/internal/useRevealLine.js +43 -0
  132. package/internal/useRevealLine.js.map +1 -0
  133. package/library/detect-plan-artifact.d.ts +43 -4
  134. package/library/detect-plan-artifact.d.ts.map +1 -1
  135. package/library/detect-plan-artifact.js +45 -5
  136. package/library/detect-plan-artifact.js.map +1 -1
  137. package/library/detect-streaming-plan.d.ts +45 -0
  138. package/library/detect-streaming-plan.d.ts.map +1 -0
  139. package/library/detect-streaming-plan.js +83 -0
  140. package/library/detect-streaming-plan.js.map +1 -0
  141. package/library/index.d.ts +4 -1
  142. package/library/index.d.ts.map +1 -1
  143. package/library/index.js +2 -1
  144. package/library/index.js.map +1 -1
  145. package/package.json +4 -4
  146. package/session/NewSessionViewer.d.ts +19 -4
  147. package/session/NewSessionViewer.d.ts.map +1 -1
  148. package/session/NewSessionViewer.js +52 -25
  149. package/session/NewSessionViewer.js.map +1 -1
  150. package/session/PlanEditor.d.ts +55 -0
  151. package/session/PlanEditor.d.ts.map +1 -0
  152. package/session/PlanEditor.js +88 -0
  153. package/session/PlanEditor.js.map +1 -0
  154. package/session/PlanStreamingDocument.d.ts +30 -0
  155. package/session/PlanStreamingDocument.d.ts.map +1 -0
  156. package/session/PlanStreamingDocument.js +37 -0
  157. package/session/PlanStreamingDocument.js.map +1 -0
  158. package/session/SessionPanelChip.d.ts +26 -0
  159. package/session/SessionPanelChip.d.ts.map +1 -0
  160. package/session/SessionPanelChip.js +40 -0
  161. package/session/SessionPanelChip.js.map +1 -0
  162. package/session/SessionViewer.d.ts +34 -7
  163. package/session/SessionViewer.d.ts.map +1 -1
  164. package/session/SessionViewer.js +334 -33
  165. package/session/SessionViewer.js.map +1 -1
  166. package/session/{inspector → facets}/ArtifactsTab.d.ts +10 -2
  167. package/session/facets/ArtifactsTab.d.ts.map +1 -0
  168. package/session/{inspector → facets}/ArtifactsTab.js +8 -3
  169. package/session/facets/ArtifactsTab.js.map +1 -0
  170. package/session/{inspector → facets}/ChangesTab.d.ts +3 -3
  171. package/session/facets/ChangesTab.d.ts.map +1 -0
  172. package/session/{inspector → facets}/ChangesTab.js +3 -3
  173. package/session/facets/ChangesTab.js.map +1 -0
  174. package/session/facets/InspectTab.d.ts.map +1 -0
  175. package/session/facets/InspectTab.js.map +1 -0
  176. package/session/{inspector → facets}/SetupTab.d.ts +11 -2
  177. package/session/facets/SetupTab.d.ts.map +1 -0
  178. package/session/{inspector → facets}/SetupTab.js +4 -3
  179. package/session/facets/SetupTab.js.map +1 -0
  180. package/session/{inspector → facets}/UsageTab.d.ts +1 -1
  181. package/session/facets/UsageTab.d.ts.map +1 -0
  182. package/session/{inspector → facets}/UsageTab.js +1 -1
  183. package/session/facets/UsageTab.js.map +1 -0
  184. package/session/{inspector → facets}/index.d.ts +0 -6
  185. package/session/facets/index.d.ts.map +1 -0
  186. package/session/{inspector → facets}/index.js +0 -3
  187. package/session/facets/index.js.map +1 -0
  188. package/session/index.d.ts +11 -2
  189. package/session/index.d.ts.map +1 -1
  190. package/session/index.js +15 -2
  191. package/session/index.js.map +1 -1
  192. package/session/plan-document.d.ts +21 -0
  193. package/session/plan-document.d.ts.map +1 -0
  194. package/session/plan-document.js +28 -0
  195. package/session/plan-document.js.map +1 -0
  196. package/session/useOpenFileChange.d.ts +20 -0
  197. package/session/useOpenFileChange.d.ts.map +1 -0
  198. package/session/useOpenFileChange.js +31 -0
  199. package/session/useOpenFileChange.js.map +1 -0
  200. package/session/usePlanDraft.d.ts +52 -0
  201. package/session/usePlanDraft.d.ts.map +1 -0
  202. package/session/usePlanDraft.js +63 -0
  203. package/session/usePlanDraft.js.map +1 -0
  204. package/session/useSessionConversation.d.ts +14 -1
  205. package/session/useSessionConversation.d.ts.map +1 -1
  206. package/session/useSessionConversation.js +20 -2
  207. package/session/useSessionConversation.js.map +1 -1
  208. package/session/useSessionPageFlow.d.ts.map +1 -1
  209. package/session/useSessionPageFlow.js +1 -0
  210. package/session/useSessionPageFlow.js.map +1 -1
  211. package/session/useSessionPanel.d.ts +120 -0
  212. package/session/useSessionPanel.d.ts.map +1 -0
  213. package/session/useSessionPanel.js +130 -0
  214. package/session/useSessionPanel.js.map +1 -0
  215. package/session/useSessionRailViews.d.ts +45 -0
  216. package/session/useSessionRailViews.d.ts.map +1 -0
  217. package/session/useSessionRailViews.js +105 -0
  218. package/session/useSessionRailViews.js.map +1 -0
  219. package/src/composer/SessionComposer.tsx +53 -10
  220. package/src/composer/__tests__/SessionComposer-contract.test.tsx +58 -4
  221. package/src/execution/ArtifactContentRenderer.tsx +101 -24
  222. package/src/execution/ArtifactPreviewModal.tsx +9 -9
  223. package/src/execution/FileChangeProgressBar.tsx +121 -0
  224. package/src/execution/FileChangesView.tsx +18 -4
  225. package/src/execution/FilePathContext.tsx +8 -1
  226. package/src/execution/FilePathLink.tsx +22 -6
  227. package/src/execution/FileReviewAtoms.tsx +89 -0
  228. package/src/execution/FileReviewCard.tsx +57 -90
  229. package/src/execution/MessageEntry.tsx +49 -1
  230. package/src/execution/MessageThread.tsx +308 -39
  231. package/src/execution/PlanArtifactCard.tsx +174 -64
  232. package/src/execution/PlanCompletionCard.tsx +5 -5
  233. package/src/execution/PlanDocumentMessage.tsx +96 -0
  234. package/src/execution/PlanStreamingCard.tsx +141 -0
  235. package/src/execution/__tests__/ArtifactContentRenderer.test.tsx +80 -1
  236. package/src/execution/__tests__/ArtifactPreviewModal.test.tsx +6 -6
  237. package/src/execution/__tests__/FileChangeProgressBar.test.tsx +125 -0
  238. package/src/execution/__tests__/FilePathLink.test.tsx +87 -0
  239. package/src/execution/__tests__/FileReviewCard.test.tsx +66 -7
  240. package/src/execution/__tests__/MessageThread.test.tsx +102 -1
  241. package/src/execution/__tests__/PlanArtifactCard.test.tsx +114 -26
  242. package/src/execution/__tests__/PlanCompletionCard.test.tsx +2 -2
  243. package/src/execution/__tests__/PlanDocumentMessage.test.tsx +55 -0
  244. package/src/execution/__tests__/PlanStreamingCard.test.tsx +56 -0
  245. package/src/execution/__tests__/buildThreadItems-plan-completion.test.ts +600 -22
  246. package/src/execution/__tests__/message-entry.test.tsx +17 -0
  247. package/src/execution/__tests__/useArtifactCopy.test.tsx +90 -0
  248. package/src/execution/__tests__/useArtifactDownload.test.tsx +2 -0
  249. package/src/execution/__tests__/useCreateAgentExecution.test.tsx +85 -0
  250. package/src/execution/index.ts +13 -1
  251. package/src/execution/use-build-from-plan-hotkey.ts +1 -1
  252. package/src/execution/useArtifactCopy.ts +109 -0
  253. package/src/execution/useArtifactDownload.ts +17 -5
  254. package/src/execution/useCreateAgentExecution.ts +18 -1
  255. package/src/github/__tests__/decodeGitHubContent.test.ts +102 -0
  256. package/src/github/__tests__/useGitHubFileReader.test.ts +183 -0
  257. package/src/github/decodeGitHubContent.ts +83 -0
  258. package/src/github/index.ts +1 -0
  259. package/src/github/useGitHubFileReader.ts +152 -0
  260. package/src/github/useGitHubTreeLister.ts +6 -2
  261. package/src/index.ts +69 -9
  262. package/src/internal/ResizableSplit.tsx +184 -51
  263. package/src/internal/VirtualizedThread.tsx +12 -4
  264. package/src/internal/__tests__/ResizableSplit.test.tsx +125 -3
  265. package/src/internal/__tests__/markdown-components.test.tsx +68 -0
  266. package/src/internal/__tests__/useRevealLine.test.tsx +97 -0
  267. package/src/internal/file-icons/__tests__/file-icons.test.tsx +35 -0
  268. package/src/internal/file-icons/index.tsx +137 -0
  269. package/src/internal/file-tree/FileTreeNode.tsx +56 -5
  270. package/src/internal/file-tree/__tests__/FileTreeNode-explorer.test.tsx +86 -0
  271. package/src/internal/markdown-components.tsx +116 -11
  272. package/src/{workflow → internal}/motion-preference.ts +7 -4
  273. package/src/internal/store/__tests__/workspace-editors-store.test.ts +216 -0
  274. package/src/internal/store/__tests__/workspace-file-selection-store.test.ts +118 -0
  275. package/src/internal/store/index.ts +94 -0
  276. package/src/internal/store/workspace-editors-store.ts +315 -0
  277. package/src/internal/store/workspace-file-selection-store.ts +88 -0
  278. package/src/internal/useRevealLine.ts +81 -0
  279. package/src/library/__tests__/detect-plan-artifact.test.ts +69 -0
  280. package/src/library/__tests__/detect-streaming-plan.test.ts +234 -0
  281. package/src/library/detect-plan-artifact.ts +62 -5
  282. package/src/library/detect-streaming-plan.ts +108 -0
  283. package/src/library/index.ts +7 -0
  284. package/src/session/NewSessionViewer.tsx +123 -55
  285. package/src/session/PlanEditor.tsx +361 -0
  286. package/src/session/PlanStreamingDocument.tsx +97 -0
  287. package/src/session/SessionPanelChip.tsx +103 -0
  288. package/src/session/SessionViewer.tsx +655 -96
  289. package/src/session/__tests__/NewSessionViewer.test.tsx +148 -0
  290. package/src/session/__tests__/PlanEditor.test.tsx +217 -0
  291. package/src/session/__tests__/PlanStreamingDocument.test.tsx +50 -0
  292. package/src/session/__tests__/SessionPanelChip.test.tsx +42 -0
  293. package/src/session/__tests__/SessionViewer-fileReviewDock.test.tsx +66 -4
  294. package/src/session/__tests__/SessionViewer-transcriptFileOpen.test.tsx +205 -0
  295. package/src/session/__tests__/audienceWiring.test.tsx +55 -19
  296. package/src/session/__tests__/useOpenFileChange.test.tsx +82 -0
  297. package/src/session/__tests__/usePlanDraft.test.ts +102 -0
  298. package/src/session/__tests__/useSessionConversation.test.tsx +44 -0
  299. package/src/session/__tests__/useSessionPanel.test.ts +298 -0
  300. package/src/session/__tests__/useSessionRailViews.test.tsx +124 -0
  301. package/src/session/{inspector → facets}/ArtifactsTab.tsx +27 -5
  302. package/src/session/{inspector → facets}/ChangesTab.tsx +3 -3
  303. package/src/session/{inspector → facets}/SetupTab.tsx +13 -1
  304. package/src/session/{inspector → facets}/UsageTab.tsx +1 -1
  305. package/src/session/{inspector → facets}/__tests__/ArtifactsTab.test.tsx +42 -8
  306. package/src/session/facets/__tests__/SetupTab.test.tsx +44 -0
  307. package/src/session/{inspector → facets}/index.ts +0 -16
  308. package/src/session/index.ts +30 -13
  309. package/src/session/plan-document.ts +30 -0
  310. package/src/session/useOpenFileChange.ts +53 -0
  311. package/src/session/usePlanDraft.ts +109 -0
  312. package/src/session/useSessionConversation.ts +38 -3
  313. package/src/session/useSessionPageFlow.ts +1 -0
  314. package/src/session/useSessionPanel.ts +288 -0
  315. package/src/session/useSessionRailViews.tsx +200 -0
  316. package/src/workflow/WorkflowExecutionGraph.tsx +1 -1
  317. package/src/workflow/index.ts +1 -1
  318. package/src/workflow/useFollowExecution.ts +1 -1
  319. package/src/workspace/EditorTabs.tsx +174 -0
  320. package/src/workspace/ExplorerTree.tsx +253 -0
  321. package/src/workspace/FileViewer.tsx +537 -0
  322. package/src/workspace/WorkspaceContentSearch.tsx +502 -0
  323. package/src/workspace/WorkspaceContentSearcher.ts +70 -0
  324. package/src/workspace/WorkspaceEditor.tsx +19 -16
  325. package/src/workspace/WorkspaceFileLister.ts +11 -0
  326. package/src/workspace/WorkspaceFileReader.ts +57 -0
  327. package/src/workspace/WorkspaceFileSearch.tsx +452 -0
  328. package/src/workspace/WorkspaceSurface.tsx +839 -0
  329. package/src/workspace/__tests__/EditorTabs.test.tsx +102 -0
  330. package/src/workspace/__tests__/ExplorerTree.test.tsx +204 -0
  331. package/src/workspace/__tests__/FileViewer.test.tsx +439 -0
  332. package/src/workspace/__tests__/WorkspaceContentSearch.test.tsx +229 -0
  333. package/src/workspace/__tests__/WorkspaceEditor-initialPanel.test.tsx +19 -0
  334. package/src/workspace/__tests__/WorkspaceFileSearch.test.tsx +227 -0
  335. package/src/workspace/__tests__/WorkspaceSurface.test.tsx +418 -0
  336. package/src/workspace/__tests__/a11y/harness.tsx +140 -0
  337. package/src/workspace/__tests__/a11y/mock-capabilities.ts +138 -0
  338. package/src/workspace/__tests__/a11y/workspace-editor.a11y.test.tsx +65 -0
  339. package/src/workspace/__tests__/a11y/workspace-explorer-search.a11y.test.tsx +112 -0
  340. package/src/workspace/__tests__/a11y/workspace-viewer-tabs.a11y.test.tsx +69 -0
  341. package/src/workspace/__tests__/findChangeForSelection.test.ts +132 -0
  342. package/src/workspace/__tests__/matchContentPreview.test.ts +55 -0
  343. package/src/workspace/__tests__/matchWorkspaceFiles.test.ts +104 -0
  344. package/src/workspace/__tests__/resolveWorkspaceFileSelection.test.ts +135 -0
  345. package/src/workspace/__tests__/useWorkspaceContentSearch.test.tsx +196 -0
  346. package/src/workspace/__tests__/useWorkspaceFileContent.test.tsx +190 -0
  347. package/src/workspace/__tests__/useWorkspaceFileSearch.test.tsx +162 -0
  348. package/src/workspace/findChangeForSelection.ts +61 -0
  349. package/src/workspace/index.ts +56 -2
  350. package/src/workspace/matchContentPreview.ts +51 -0
  351. package/src/workspace/matchWorkspaceFiles.ts +86 -0
  352. package/src/workspace/resolveWorkspaceFileSelection.ts +119 -0
  353. package/src/workspace/useWorkspaceContentSearch.ts +228 -0
  354. package/src/workspace/useWorkspaceFileContent.ts +129 -0
  355. package/src/workspace/useWorkspaceFileSearch.ts +184 -0
  356. package/src/workspace/useWorkspaceFiles.ts +27 -27
  357. package/src/workspace/workspaceListingCache.ts +93 -0
  358. package/styles.css +1 -1
  359. package/workflow/WorkflowExecutionGraph.js +1 -1
  360. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  361. package/workflow/index.d.ts +1 -1
  362. package/workflow/index.d.ts.map +1 -1
  363. package/workflow/index.js +1 -1
  364. package/workflow/index.js.map +1 -1
  365. package/workflow/useFollowExecution.js +1 -1
  366. package/workflow/useFollowExecution.js.map +1 -1
  367. package/workspace/EditorTabs.d.ts +47 -0
  368. package/workspace/EditorTabs.d.ts.map +1 -0
  369. package/workspace/EditorTabs.js +78 -0
  370. package/workspace/EditorTabs.js.map +1 -0
  371. package/workspace/ExplorerTree.d.ts +32 -0
  372. package/workspace/ExplorerTree.d.ts.map +1 -0
  373. package/workspace/ExplorerTree.js +49 -0
  374. package/workspace/ExplorerTree.js.map +1 -0
  375. package/workspace/FileViewer.d.ts +93 -0
  376. package/workspace/FileViewer.d.ts.map +1 -0
  377. package/workspace/FileViewer.js +193 -0
  378. package/workspace/FileViewer.js.map +1 -0
  379. package/workspace/WorkspaceContentSearch.d.ts +41 -0
  380. package/workspace/WorkspaceContentSearch.d.ts.map +1 -0
  381. package/workspace/WorkspaceContentSearch.js +216 -0
  382. package/workspace/WorkspaceContentSearch.js.map +1 -0
  383. package/workspace/WorkspaceContentSearcher.d.ts +59 -0
  384. package/workspace/WorkspaceContentSearcher.d.ts.map +1 -0
  385. package/workspace/WorkspaceContentSearcher.js +7 -0
  386. package/workspace/WorkspaceContentSearcher.js.map +1 -0
  387. package/workspace/WorkspaceEditor.d.ts.map +1 -1
  388. package/workspace/WorkspaceEditor.js +8 -10
  389. package/workspace/WorkspaceEditor.js.map +1 -1
  390. package/workspace/WorkspaceFileLister.d.ts +11 -0
  391. package/workspace/WorkspaceFileLister.d.ts.map +1 -1
  392. package/workspace/WorkspaceFileReader.d.ts +48 -0
  393. package/workspace/WorkspaceFileReader.d.ts.map +1 -0
  394. package/workspace/WorkspaceFileReader.js +11 -0
  395. package/workspace/WorkspaceFileReader.js.map +1 -0
  396. package/workspace/WorkspaceFileSearch.d.ts +32 -0
  397. package/workspace/WorkspaceFileSearch.d.ts.map +1 -0
  398. package/workspace/WorkspaceFileSearch.js +175 -0
  399. package/workspace/WorkspaceFileSearch.js.map +1 -0
  400. package/workspace/WorkspaceSurface.d.ts +151 -0
  401. package/workspace/WorkspaceSurface.d.ts.map +1 -0
  402. package/workspace/WorkspaceSurface.js +220 -0
  403. package/workspace/WorkspaceSurface.js.map +1 -0
  404. package/workspace/findChangeForSelection.d.ts +19 -0
  405. package/workspace/findChangeForSelection.d.ts.map +1 -0
  406. package/workspace/findChangeForSelection.js +46 -0
  407. package/workspace/findChangeForSelection.js.map +1 -0
  408. package/workspace/index.d.ts +24 -2
  409. package/workspace/index.d.ts.map +1 -1
  410. package/workspace/index.js +13 -1
  411. package/workspace/index.js.map +1 -1
  412. package/workspace/matchContentPreview.d.ts +21 -0
  413. package/workspace/matchContentPreview.d.ts.map +1 -0
  414. package/workspace/matchContentPreview.js +36 -0
  415. package/workspace/matchContentPreview.js.map +1 -0
  416. package/workspace/matchWorkspaceFiles.d.ts +30 -0
  417. package/workspace/matchWorkspaceFiles.d.ts.map +1 -0
  418. package/workspace/matchWorkspaceFiles.js +58 -0
  419. package/workspace/matchWorkspaceFiles.js.map +1 -0
  420. package/workspace/resolveWorkspaceFileSelection.d.ts +19 -0
  421. package/workspace/resolveWorkspaceFileSelection.d.ts.map +1 -0
  422. package/workspace/resolveWorkspaceFileSelection.js +115 -0
  423. package/workspace/resolveWorkspaceFileSelection.js.map +1 -0
  424. package/workspace/useWorkspaceContentSearch.d.ts +69 -0
  425. package/workspace/useWorkspaceContentSearch.d.ts.map +1 -0
  426. package/workspace/useWorkspaceContentSearch.js +154 -0
  427. package/workspace/useWorkspaceContentSearch.js.map +1 -0
  428. package/workspace/useWorkspaceFileContent.d.ts +73 -0
  429. package/workspace/useWorkspaceFileContent.d.ts.map +1 -0
  430. package/workspace/useWorkspaceFileContent.js +57 -0
  431. package/workspace/useWorkspaceFileContent.js.map +1 -0
  432. package/workspace/useWorkspaceFileSearch.d.ts +61 -0
  433. package/workspace/useWorkspaceFileSearch.d.ts.map +1 -0
  434. package/workspace/useWorkspaceFileSearch.js +119 -0
  435. package/workspace/useWorkspaceFileSearch.js.map +1 -0
  436. package/workspace/useWorkspaceFiles.d.ts +13 -5
  437. package/workspace/useWorkspaceFiles.d.ts.map +1 -1
  438. package/workspace/useWorkspaceFiles.js +18 -19
  439. package/workspace/useWorkspaceFiles.js.map +1 -1
  440. package/workspace/workspaceListingCache.d.ts +47 -0
  441. package/workspace/workspaceListingCache.d.ts.map +1 -0
  442. package/workspace/workspaceListingCache.js +55 -0
  443. package/workspace/workspaceListingCache.js.map +1 -0
  444. package/session/inspector/ArtifactsTab.d.ts.map +0 -1
  445. package/session/inspector/ArtifactsTab.js.map +0 -1
  446. package/session/inspector/ChangesTab.d.ts.map +0 -1
  447. package/session/inspector/ChangesTab.js.map +0 -1
  448. package/session/inspector/InspectTab.d.ts.map +0 -1
  449. package/session/inspector/InspectTab.js.map +0 -1
  450. package/session/inspector/SessionInspector.d.ts +0 -64
  451. package/session/inspector/SessionInspector.d.ts.map +0 -1
  452. package/session/inspector/SessionInspector.js +0 -53
  453. package/session/inspector/SessionInspector.js.map +0 -1
  454. package/session/inspector/SetupTab.d.ts.map +0 -1
  455. package/session/inspector/SetupTab.js.map +0 -1
  456. package/session/inspector/UsageTab.d.ts.map +0 -1
  457. package/session/inspector/UsageTab.js.map +0 -1
  458. package/session/inspector/WorkspaceTab.d.ts +0 -35
  459. package/session/inspector/WorkspaceTab.d.ts.map +0 -1
  460. package/session/inspector/WorkspaceTab.js +0 -75
  461. package/session/inspector/WorkspaceTab.js.map +0 -1
  462. package/session/inspector/index.d.ts.map +0 -1
  463. package/session/inspector/index.js.map +0 -1
  464. package/session/inspector/useSessionInspector.d.ts +0 -49
  465. package/session/inspector/useSessionInspector.d.ts.map +0 -1
  466. package/session/inspector/useSessionInspector.js +0 -122
  467. package/session/inspector/useSessionInspector.js.map +0 -1
  468. package/src/session/inspector/SessionInspector.tsx +0 -162
  469. package/src/session/inspector/WorkspaceTab.tsx +0 -245
  470. package/src/session/inspector/__tests__/useSessionInspector.test.ts +0 -251
  471. package/src/session/inspector/useSessionInspector.ts +0 -178
  472. package/src/workspace/WorkspaceEntryFiles.tsx +0 -196
  473. package/workflow/motion-preference.d.ts.map +0 -1
  474. package/workflow/motion-preference.js.map +0 -1
  475. package/workspace/WorkspaceEntryFiles.d.ts +0 -22
  476. package/workspace/WorkspaceEntryFiles.d.ts.map +0 -1
  477. package/workspace/WorkspaceEntryFiles.js +0 -58
  478. package/workspace/WorkspaceEntryFiles.js.map +0 -1
  479. /package/session/{inspector → facets}/InspectTab.d.ts +0 -0
  480. /package/session/{inspector → facets}/InspectTab.js +0 -0
  481. /package/src/{workflow → internal}/__tests__/motion-preference.test.ts +0 -0
  482. /package/src/session/{inspector → facets}/InspectTab.tsx +0 -0
  483. /package/src/session/{inspector → facets}/__tests__/ChangesTab.test.tsx +0 -0
@@ -1,25 +1,89 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useCallback, useMemo, useRef } from "react";
3
+ import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import { create } from "@bufbuild/protobuf";
4
5
  import { cn } from "@stigmer/theme";
5
6
  import { getUserMessage } from "@stigmer/sdk";
7
+ import { GetArtifactContentRequestSchema, UploadAttachmentRequestSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/io_pb";
8
+ import { resolveWorkspaceFileSelection } from "../workspace/resolveWorkspaceFileSelection.js";
9
+ import { WorkspaceSurface, } from "../workspace/WorkspaceSurface.js";
6
10
  import { ResizableSplit } from "../internal/ResizableSplit.js";
7
11
  import { SelectionStore } from "../internal/store/selection-store.js";
12
+ import { useWorkspaceEditors, isVirtualEntryId } from "../internal/store/index.js";
8
13
  import { ThreadSelectionContext } from "../execution/ThreadSelectionContext.js";
9
14
  import { useSelectedThreadItem } from "../execution/useThreadSelection.js";
10
15
  import { MessageThread } from "../execution/MessageThread.js";
16
+ import { FileChangeProgressBar } from "../execution/FileChangeProgressBar.js";
11
17
  import { FileReviewDock } from "../execution/FileReviewDock.js";
18
+ import { FilePathContext, } from "../execution/FilePathContext.js";
12
19
  import { ThreadSkeleton } from "../execution/ThreadSkeleton.js";
13
20
  import { SessionComposer } from "../composer/index.js";
14
21
  import { SecretFlowErrorGuide, isSecretFlowError } from "../error/index.js";
22
+ import { useStigmer } from "../hooks.js";
23
+ import { findLatestSessionPlan, findPlanArtifact, } from "../library/detect-plan-artifact.js";
24
+ import { findStreamingPlan } from "../library/detect-streaming-plan.js";
15
25
  import { useSessionPageFlow } from "./useSessionPageFlow.js";
16
- import { SessionInspector } from "./inspector/SessionInspector.js";
26
+ import { useOpenFileChange } from "./useOpenFileChange.js";
27
+ import { usePlanDraft, planDraftKey } from "./usePlanDraft.js";
28
+ import { PlanEditor } from "./PlanEditor.js";
29
+ import { PlanStreamingDocument } from "./PlanStreamingDocument.js";
30
+ import { PLAN_DOCUMENT_ENTRY_ID, PLAN_DOCUMENT_PATH } from "./plan-document.js";
31
+ import { useSessionRailViews } from "./useSessionRailViews.js";
32
+ import { useSessionPanel } from "./useSessionPanel.js";
33
+ import { SessionPanelChip } from "./SessionPanelChip.js";
34
+ import { useSessionWriteBacks } from "./useSessionWriteBacks.js";
35
+ import { useSessionArtifacts } from "./useSessionArtifacts.js";
36
+ import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
17
37
  /**
18
- * Message submitted when the user implements a plan. References the published
19
- * `plan.md` explicitly so the agent acts on the durable artifact rather than
20
- * relying on re-reading its own prior chat message.
38
+ * Where the approved plan mounts in the implement execution's workspace
39
+ * the harnesses' standard attachment inputs directory, where the runner's
40
+ * implement-plan directive points the agent (shared/implement-plan-prompt.ts).
41
+ * Attaching under the plan's own filename (e.g. `feature-x_a1b2c3d4.plan.md`) is what
42
+ * makes the build implement the document the user approved (including in-place
43
+ * edits), not a paraphrase from memory; the runner detects it by the plan
44
+ * filename convention (`isPlanArtifactName`), so the exact name is free to vary.
21
45
  */
22
- const IMPLEMENT_PLAN_MESSAGE = "Implement the plan above (saved as plan.md). Follow it step by step and make the changes it describes.";
46
+ function approvedPlanMountPath(planFileName) {
47
+ return `.stigmer/inputs/${planFileName}`;
48
+ }
49
+ /**
50
+ * The build turn's user message — a short human-readable label, NOT the
51
+ * implement instruction. The agent-facing instruction is runner-injected
52
+ * (keyed off `executionConfig.buildFromPlan`). The thread hides the turn
53
+ * entirely from the same flag (the plan card above it is the visible cause);
54
+ * this label exists for surfaces without that treatment (the CLI, execution
55
+ * history, older clients), which show it as-is.
56
+ */
57
+ const BUILD_FROM_PLAN_MESSAGE = "Build from plan";
58
+ /**
59
+ * Reads the published plan's full text for the build handoff. Refuses a
60
+ * truncated read (content RPC caps at 512 KB): attaching a partial plan would
61
+ * silently implement half a document — the caller falls back to
62
+ * conversation-history implement instead.
63
+ */
64
+ async function fetchPlanText(stigmer, plan) {
65
+ const result = await stigmer.agentExecution.getArtifactContent(create(GetArtifactContentRequestSchema, {
66
+ executionId: plan.executionId,
67
+ storageKey: plan.artifact.storageKey,
68
+ }));
69
+ if (result.truncated) {
70
+ throw new Error("plan content truncated — not attaching a partial plan");
71
+ }
72
+ return new TextDecoder().decode(result.content);
73
+ }
74
+ /**
75
+ * Width and anchoring of the conversation reading column, shared by the
76
+ * thread and the composer/banners block so they can never drift apart.
77
+ *
78
+ * Centered (the classic chat reading view, matching Cursor's agent panel):
79
+ * with the session panel collapsed the column sits in the middle of the
80
+ * row; opening the panel narrows the chat pane below the column max, so
81
+ * the column simply fills it. The thread applies the same geometry via
82
+ * `contentColumn="center"`, which adds the item gutter; the composer/banner
83
+ * block's children carry their own edge padding, so only width and
84
+ * anchoring live here.
85
+ */
86
+ const CONVERSATION_COLUMN_CLASS = "mx-auto w-full max-w-3xl";
23
87
  /**
24
88
  * Full-featured agent session viewer — the graph-less analog of
25
89
  * `WorkflowExecutionViewer`.
@@ -27,10 +91,13 @@ const IMPLEMENT_PLAN_MESSAGE = "Implement the plan above (saved as plan.md). Fol
27
91
  * Owns `useSessionPageFlow` internally and composes:
28
92
  * - **Conversation column** (primary): `MessageThread` + error
29
93
  * banners + `SessionComposer`
30
- * - **SessionInspector** (secondary): tabbed panel with Workspace,
31
- * Config, Changes, Artifacts, Usage, and Inspect facets
94
+ * - **Session panel** (secondary): the unified `WorkspaceSurface` — explorer,
95
+ * search, read-only editor, and the session facets (Config, Changes,
96
+ * Artifacts, Usage, Inspect) as injected rail views. Collapsed by default
97
+ * to a top-right chip; opening a file (tree, search, or a transcript path)
98
+ * expands it.
32
99
  *
33
- * Connected via `ResizableSplit` with persisted width.
100
+ * Connected via `ResizableSplit` with persisted chat width.
34
101
  *
35
102
  * Thread selection is provided via `ThreadSelectionContext` (Phase 2
36
103
  * opt-in) for render-isolated per-item selection.
@@ -59,7 +126,7 @@ const IMPLEMENT_PLAN_MESSAGE = "Implement the plan above (saved as plan.md). Fol
59
126
  * />
60
127
  * ```
61
128
  */
62
- export function SessionViewer({ sessionId, org, gitHubConnection, enableGitHub = true, enableLocal = false, onBrowseLocalFolder, workspaceFileLister, getRuntimeEnv, audience = "integrator", headerActions, onApplied, className, }) {
129
+ export function SessionViewer({ sessionId, org, gitHubConnection, enableGitHub = true, enableLocal = false, onBrowseLocalFolder, workspaceFileLister, workspaceFileReader, workspaceContentSearcher, getRuntimeEnv, audience = "integrator", headerActions, accessSlot, onApplied, className, }) {
63
130
  const flow = useSessionPageFlow({ sessionId, org, getRuntimeEnv });
64
131
  const { conv } = flow;
65
132
  const isEndUser = audience === "endUser";
@@ -71,16 +138,153 @@ export function SessionViewer({ sessionId, org, gitHubConnection, enableGitHub =
71
138
  selectionStoreRef.current = new SelectionStore();
72
139
  }
73
140
  const selectionStore = selectionStoreRef.current;
141
+ const phase = flow.displayExecution?.status?.phase ??
142
+ ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
143
+ const hasPhase = phase !== ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
144
+ // Facet arrival counts: rail badges inside the panel, the chip's dot-count
145
+ // while collapsed. Arrivals never auto-open the panel (badge-only signal).
146
+ const { hasWriteBacks, writeBackCount } = useSessionWriteBacks(flow.allExecutions);
147
+ const { artifactCount } = useSessionArtifacts(flow.allExecutions);
148
+ // The session's current plan (latest published plan.md across executions)
149
+ // and its viewer-owned draft. Ownership at this level is deliberate: the
150
+ // panel unmounts facet content on every view switch, so a facet-local
151
+ // draft would silently lose the user's edits (see usePlanDraft).
152
+ const stigmer = useStigmer();
153
+ const sessionPlan = useMemo(() => findLatestSessionPlan(flow.allExecutions), [flow.allExecutions]);
154
+ const planDraft = usePlanDraft(sessionPlan);
155
+ // The plan the ACTIVE turn is writing right now (the H1 convention — see
156
+ // findStreamingPlan), resolved at this level for the same reason
157
+ // sessionPlan is: the panel's plan tab renders it. Recomputed per stream
158
+ // commit by design — this component already re-renders on every commit
159
+ // (it reads `flow`), and the scan touches only the last AI message.
160
+ const streamingPlan = useMemo(() => {
161
+ const activeExec = conv.activeStreamExecution;
162
+ const live = findStreamingPlan(activeExec);
163
+ const executionId = activeExec?.metadata?.id;
164
+ return live && executionId
165
+ ? { executionId, displayText: live.displayText }
166
+ : undefined;
167
+ }, [conv.activeStreamExecution]);
168
+ const [isBuildingFromPlan, setIsBuildingFromPlan] = useState(false);
169
+ const [planAttachFailed, setPlanAttachFailed] = useState(false);
170
+ // WHICH plan the panel's plan document tab shows. `null` means the session's
171
+ // current (latest) plan — the editable, buildable one; an execution id
172
+ // selects that turn's historical plan, rendered read-only. One tab, host-
173
+ // controlled content (Decision 3 in DD-16).
174
+ const [openPlanExecutionId, setOpenPlanExecutionId] = useState(null);
175
+ // The plan tab's identity across both plan lifecycles: while a plan
176
+ // streams, the in-flight turn owns the tab (`<executionId>:streaming`);
177
+ // once published, the artifact identity (planDraftKey) takes over. Each
178
+ // transition is a NEW identity, so useSessionPanel's planKey trigger
179
+ // auto-opens the tab the moment a plan starts streaming AND (idempotently)
180
+ // when it settles into the published plan.
181
+ const currentPlanKey = sessionPlan ? planDraftKey(sessionPlan) : null;
182
+ const panelPlanKey = streamingPlan
183
+ ? `${streamingPlan.executionId}:streaming`
184
+ : currentPlanKey;
185
+ // A new plan identity (a plan starting to stream, the first published
186
+ // plan, or a refinement) supersedes any historical plan the user had
187
+ // opened: the tab snaps back to "latest" so the auto-open always surfaces
188
+ // the incoming plan. Adjust-state-during-render — own state only, the
189
+ // established idiom.
190
+ const [prevPlanKey, setPrevPlanKey] = useState(panelPlanKey);
191
+ if (panelPlanKey !== prevPlanKey) {
192
+ setPrevPlanKey(panelPlanKey);
193
+ setOpenPlanExecutionId(null);
194
+ }
195
+ // The unified-panel controller: owns the open-editor group store, the
196
+ // open/collapsed state, and the rail-view FSM. Shared with the launcher
197
+ // (DD-016). The editor store is owned here (never subscribed at this level)
198
+ // so opening/switching files re-renders only the panel subtree — the
199
+ // SessionPanelRegion subscribes, not the conversation column — preserving
200
+ // streaming render isolation (DD-009/DD-010, invariant 2).
201
+ const panel = useSessionPanel({
202
+ phase: hasPhase ? phase : null,
203
+ hasChanges: hasWriteBacks,
204
+ planKey: panelPlanKey,
205
+ });
74
206
  const handleBuildFromPlan = useCallback(() => {
75
207
  // Switch the picker to Agent (so subsequent turns stay in Agent) and submit
76
- // the implement message immediately through the composer's full pipeline.
208
+ // the implement message through the composer's full pipeline.
77
209
  // `interactionMode: "agent"` is passed explicitly to win the same-tick race
78
210
  // where the composer prop has not yet re-rendered from "plan".
79
211
  setInteractionMode("agent");
80
- composerRef.current?.submit(IMPLEMENT_PLAN_MESSAGE, {
81
- interactionMode: "agent",
82
- });
83
- }, [setInteractionMode]);
212
+ setPlanAttachFailed(false);
213
+ // `buildFromPlan` (not message text) is what tells the runner to inject
214
+ // the implement directive and the thread to hide the turn's message —
215
+ // with or without the attachment (the runner picks the directive variant).
216
+ const submitImplementTurn = (attachments) => {
217
+ composerRef.current?.submit(BUILD_FROM_PLAN_MESSAGE, {
218
+ interactionMode: "agent",
219
+ buildFromPlan: true,
220
+ attachments,
221
+ });
222
+ };
223
+ // No published artifact (the bare-CTA fallback card) — nothing to attach.
224
+ if (!sessionPlan) {
225
+ submitImplementTurn();
226
+ return;
227
+ }
228
+ // Deterministic handoff: upload the APPROVED plan (draft if edited, else
229
+ // the artifact text — one uniform path) and attach it to the implement
230
+ // execution. The published artifact itself stays immutable; the approved
231
+ // copy is a new input on the build turn (edit-as-input provenance).
232
+ setIsBuildingFromPlan(true);
233
+ // The approved copy keeps the published plan's filename, so the mounted
234
+ // input, the download, and the plan card all agree on one name.
235
+ const planFileName = sessionPlan.artifact.name;
236
+ void (async () => {
237
+ try {
238
+ const approvedText = planDraft.readDraft() ?? (await fetchPlanText(stigmer, sessionPlan));
239
+ const response = await stigmer.agentExecution.uploadAttachment(create(UploadAttachmentRequestSchema, {
240
+ filename: planFileName,
241
+ content: new TextEncoder().encode(approvedText),
242
+ contentType: "text/markdown",
243
+ }));
244
+ submitImplementTurn([
245
+ {
246
+ filename: planFileName,
247
+ storageKey: response.storageKey,
248
+ mountPath: approvedPlanMountPath(planFileName),
249
+ contentType: "text/markdown",
250
+ },
251
+ ]);
252
+ }
253
+ catch {
254
+ // Attachment plumbing must never block the build: implement from
255
+ // conversation history alone, and say so (non-blocking notice).
256
+ setPlanAttachFailed(true);
257
+ submitImplementTurn();
258
+ }
259
+ finally {
260
+ setIsBuildingFromPlan(false);
261
+ }
262
+ })();
263
+ }, [setInteractionMode, sessionPlan, planDraft.readDraft, stigmer]);
264
+ // "Open plan" (a thread plan card, or the Artifacts facet's plan.md) → the
265
+ // panel's plan document tab. Opening the LATEST plan clears the historical
266
+ // selection (the tab shows the editable current plan); any other execution
267
+ // id opens that turn's plan read-only in the same tab.
268
+ const handleOpenPlan = useCallback((executionId) => {
269
+ setOpenPlanExecutionId(sessionPlan && executionId === sessionPlan.executionId
270
+ ? null
271
+ : executionId);
272
+ panel.openPlanDocument();
273
+ }, [sessionPlan, panel.openPlanDocument]);
274
+ // Open a transcript tool-call file path in the panel's read-only editor.
275
+ // Resolves the (possibly absolute / subdir-prefixed) path to a
276
+ // repo/root-relative selection the editor can fetch; on a definite hit it
277
+ // opens the file (expanding the panel) and returns `true` (handled),
278
+ // otherwise returns `false` so the path keeps its default copy / GitHub-link
279
+ // behavior. Writing the editor store re-renders only the panel subtree
280
+ // (which subscribes), never this streaming column.
281
+ const handleTranscriptFilePathClick = useCallback((path) => {
282
+ const selection = resolveWorkspaceFileSelection(path, flow.workspace.entries, flow.sandboxWorkspaceRoot);
283
+ if (!selection)
284
+ return false;
285
+ panel.openFile(selection.entryId, selection.path);
286
+ return true;
287
+ }, [flow.workspace.entries, flow.sandboxWorkspaceRoot, panel.openFile]);
84
288
  if (conv.isLoading) {
85
289
  return (_jsx("div", { className: cn("flex h-full w-full flex-col", className), children: _jsx(ThreadSkeleton, { className: "flex-1 px-0" }) }));
86
290
  }
@@ -90,9 +294,9 @@ export function SessionViewer({ sessionId, org, gitHubConnection, enableGitHub =
90
294
  if (!conv.session && !conv.isLoading) {
91
295
  return _jsx(SessionStarting, {});
92
296
  }
93
- return (_jsxs("div", { className: cn("relative flex h-full w-full flex-col", className), children: [headerActions && (_jsx("div", { className: "absolute top-2 right-6 z-10", children: headerActions })), _jsx(ThreadSelectionContext.Provider, { value: selectionStore, children: _jsx(ResizableSplit, { defaultSize: 384, minSize: 280, maxSize: 600, storageKey: "stgm-session-inspector-width", className: cn("min-h-0 flex-1", "[&>*:nth-child(2)]:max-lg:hidden [&>*:nth-child(3)]:max-lg:hidden"), primary: _jsx(ConversationColumn, { flow: flow, modelId: modelId, setModelId: setModelId, interactionMode: interactionMode, setInteractionMode: setInteractionMode, composerRef: composerRef, org: org, gitHubConnection: gitHubConnection, enableGitHub: enableGitHub, enableLocal: enableLocal, onBrowseLocalFolder: onBrowseLocalFolder, onBuildFromPlan: handleBuildFromPlan, isEndUser: isEndUser }), secondary: _jsx(InspectorPanel, { flow: flow, org: org, selectionStore: selectionStore, onApplied: onApplied, onImplementPlan: handleBuildFromPlan, enableGitHub: enableGitHub, enableLocal: enableLocal, gitHubConnection: gitHubConnection, onBrowseLocalFolder: onBrowseLocalFolder, workspaceFileLister: workspaceFileLister, isEndUser: isEndUser }) }) })] }));
297
+ return (_jsxs("div", { className: cn("relative flex h-full w-full flex-col", className), children: [_jsxs("div", { className: "absolute top-2 right-6 z-10 flex items-center gap-2", children: [headerActions, _jsx(SessionPanelChip, { isOpen: panel.isOpen, onToggle: panel.isOpen ? panel.closePanel : panel.openPanel, badgeCount: writeBackCount + artifactCount })] }), _jsx(ThreadSelectionContext.Provider, { value: selectionStore, children: _jsx(ResizableSplit, { resizablePane: "primary", collapsedPane: panel.isOpen ? "none" : "secondary", defaultSize: 420, minSize: 320, maxSize: 640, storageKey: "stgm-session-chat-width", responsiveCollapse: panel.isOpen ? "primary" : "none", ariaLabel: "Resize chat panel", className: "min-h-0 flex-1", primary: _jsx(ConversationColumn, { flow: flow, modelId: modelId, setModelId: setModelId, interactionMode: interactionMode, setInteractionMode: setInteractionMode, composerRef: composerRef, org: org, gitHubConnection: gitHubConnection, enableGitHub: enableGitHub, enableLocal: enableLocal, onBrowseLocalFolder: onBrowseLocalFolder, onBuildFromPlan: handleBuildFromPlan, onOpenPlan: handleOpenPlan, isBuildingFromPlan: isBuildingFromPlan, planAttachFailed: planAttachFailed, onDismissPlanAttachFailed: () => setPlanAttachFailed(false), onFilePathClick: handleTranscriptFilePathClick, isEndUser: isEndUser }), secondary: panel.isOpen ? (_jsx(SessionPanelRegion, { flow: flow, org: org, panel: panel, accessSlot: accessSlot, onApplied: onApplied, onImplementPlan: handleBuildFromPlan, implementPlanDisabled: !conv.canSendFollowUp || isBuildingFromPlan, sessionPlan: sessionPlan, streamingPlan: streamingPlan, planDraft: planDraft, openPlanExecutionId: openPlanExecutionId, onOpenPlan: handleOpenPlan, enableLocal: enableLocal, onBrowseLocalFolder: onBrowseLocalFolder, workspaceFileLister: workspaceFileLister, workspaceFileReader: workspaceFileReader, workspaceContentSearcher: workspaceContentSearcher, isEndUser: isEndUser })) : null }) })] }));
94
298
  }
95
- function ConversationColumn({ flow, modelId, setModelId, interactionMode, setInteractionMode, composerRef, org, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, onBuildFromPlan, isEndUser, }) {
299
+ const ConversationColumn = memo(function ConversationColumn({ flow, modelId, setModelId, interactionMode, setInteractionMode, composerRef, org, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, onBuildFromPlan, onOpenPlan, isBuildingFromPlan, planAttachFailed, onDismissPlanAttachFailed, onFilePathClick, isEndUser, }) {
96
300
  const { conv } = flow;
97
301
  // Approval failures are NOT folded into this banner: they now surface in-card,
98
302
  // beside the exact gate that failed (see MessageThread's approvalErrors →
@@ -120,10 +324,77 @@ function ConversationColumn({ flow, modelId, setModelId, interactionMode, setInt
120
324
  composerRef.current?.setMessage(text);
121
325
  composerRef.current?.focus();
122
326
  }, [conv.stop, composerRef]);
123
- return (_jsxs("div", { className: "flex h-full min-w-0 flex-col", children: [_jsx(MessageThread, { executions: conv.completedExecutions, activeStreamExecution: conv.activeStreamExecution, pendingUserMessage: conv.pendingUserMessage, pendingMessageFailed: !!conv.sendError && !!conv.pendingUserMessage, onRetrySend: conv.retryLastSend, onRetryExecution: onRetryExecution, onApprovalSubmit: flow.submitApproval, submittingApprovalIds: conv.submittingApprovalIds, approvalErrors: conv.approvalErrors, showFileReviewRecords: true, onEditMessage: conv.isStoppable ? handleEditMessage : undefined, workspaceEntries: conv.workspaceEntries, sandboxWorkspaceRoot: flow.sandboxWorkspaceRoot, onBuildFromPlan: onBuildFromPlan, org: org, planActionsDisabled: !conv.canSendFollowUp, centerContent: true, className: "flex-1" }), _jsxs("div", { className: "mx-auto w-full max-w-3xl", children: [conv.isReconnecting && _jsx(ReconnectingIndicator, {}), conv.connectTimedOut && (_jsx(ConnectTimedOutBanner, { onRetry: conv.reconnectStream })), conv.isSlow && !conv.connectTimedOut && _jsx(SlowIndicator, {}), conv.streamError && (_jsx(StreamErrorBanner, { error: conv.streamError, onReconnect: conv.reconnectStream })), sendError && _jsx(SendErrorBanner, { error: sendError }), flow.autoApproveAll && (_jsx(AutoApproveIndicator, { onTurnOff: () => flow.setAutoApproveAll(false) })), _jsx(FileReviewDock, { changeSets: conv.fileChangeSets, onSubmit: conv.submitFileDecision, submittingDecisionKeys: conv.submittingFileDecisionKeys, decisionErrors: conv.fileDecisionErrors }), _jsx(SessionComposer, { ref: composerRef, onSubmit: flow.handleSubmit, isSubmitting: conv.isSending, disabled: !conv.canSendFollowUp, onStop: conv.isStoppable ? handleStop : undefined, isStopping: conv.isStopping, org: org, harness: flow.harness, defaultModelId: modelId, onModelChange: setModelId, interactionMode: interactionMode, onInteractionModeChange: setInteractionMode, showInteractionModePicker: true, workspace: flow.workspace, gitHubConnection: gitHubConnection, enableGitHub: enableGitHub, enableLocal: enableLocal, onBrowseLocalFolder: onBrowseLocalFolder, agentRef: flow.agentRef, onAgentRefChange: flow.setAgentRef, onAgentResolutionChange: flow.setResolution, isDefaultAgent: flow.isDefaultAgent, lockAgent: isEndUser, mcpServerUsages: isEndUser ? undefined : flow.mcpServerUsages, onMcpServerUsagesChange: isEndUser ? undefined : flow.setMcpServerUsages, skillRefs: isEndUser ? undefined : flow.skillRefs, onSkillRefsChange: isEndUser ? undefined : flow.setSkillRefs, sessionVariables: isEndUser ? undefined : flow.sessionVariables, className: "px-4 py-3" })] })] }));
124
- }
125
- function InspectorPanel({ flow, org, selectionStore, onApplied, onImplementPlan, enableGitHub, enableLocal, gitHubConnection, onBrowseLocalFolder, workspaceFileLister, isEndUser, }) {
327
+ // The composer-docked FileReviewDock sits OUTSIDE MessageThread, so the
328
+ // thread's own FilePathContext provider does not reach it. This provider
329
+ // gives the dock's file list the same path resolution and click routing
330
+ // (open in the panel's viewer; GitHub/copy fallback) as the transcript —
331
+ // one click behavior for a path everywhere in the session. Memoized so the
332
+ // dock's memoized cards are not invalidated by unrelated renders (DD-010).
333
+ const dockFilePathCtx = useMemo(() => ({
334
+ workspaceEntries: conv.workspaceEntries ?? [],
335
+ onFilePathClick,
336
+ }), [conv.workspaceEntries, onFilePathClick]);
337
+ return (_jsxs("div", { className: "flex h-full min-w-0 flex-col", children: [_jsx(MessageThread, { executions: conv.completedExecutions, activeStreamExecution: conv.activeStreamExecution, pendingUserMessage: conv.pendingUserMessage, pendingMessageFailed: !!conv.sendError && !!conv.pendingUserMessage, onRetrySend: conv.retryLastSend, onRetryExecution: onRetryExecution, onApprovalSubmit: flow.submitApproval, submittingApprovalIds: conv.submittingApprovalIds, approvalErrors: conv.approvalErrors, showFileReviewRecords: true, onEditMessage: conv.isStoppable ? handleEditMessage : undefined, workspaceEntries: conv.workspaceEntries, onFilePathClick: onFilePathClick, sandboxWorkspaceRoot: flow.sandboxWorkspaceRoot, onBuildFromPlan: onBuildFromPlan, onOpenPlan: onOpenPlan, org: org, planActionsDisabled: !conv.canSendFollowUp || isBuildingFromPlan, planBuildPending: isBuildingFromPlan, contentColumn: "center", className: "flex-1" }), _jsxs("div", { className: CONVERSATION_COLUMN_CLASS, children: [planAttachFailed && (_jsx(PlanAttachFailedNotice, { onDismiss: onDismissPlanAttachFailed })), conv.isReconnecting && _jsx(ReconnectingIndicator, {}), conv.connectTimedOut && (_jsx(ConnectTimedOutBanner, { onRetry: conv.reconnectStream })), conv.isSlow && !conv.connectTimedOut && _jsx(SlowIndicator, {}), conv.streamError && (_jsx(StreamErrorBanner, { error: conv.streamError, onReconnect: conv.reconnectStream })), sendError && _jsx(SendErrorBanner, { error: sendError }), flow.autoApproveAll && (_jsx(AutoApproveIndicator, { onTurnOff: () => flow.setAutoApproveAll(false) })), _jsxs(FilePathContext.Provider, { value: dockFilePathCtx, children: [_jsx(FileChangeProgressBar, { progress: conv.fileChangeProgress }), _jsx(FileReviewDock, { changeSets: conv.fileChangeSets, onSubmit: conv.submitFileDecision, submittingDecisionKeys: conv.submittingFileDecisionKeys, decisionErrors: conv.fileDecisionErrors })] }), _jsx(SessionComposer, { ref: composerRef, onSubmit: flow.handleSubmit, isSubmitting: conv.isSending, disabled: !conv.canSendFollowUp, onStop: conv.isStoppable ? handleStop : undefined, isStopping: conv.isStopping, org: org, harness: flow.harness, defaultModelId: modelId, onModelChange: setModelId, interactionMode: interactionMode, onInteractionModeChange: setInteractionMode, showInteractionModePicker: true, workspace: flow.workspace, gitHubConnection: gitHubConnection, enableGitHub: enableGitHub, enableLocal: enableLocal, onBrowseLocalFolder: onBrowseLocalFolder, agentRef: flow.agentRef, onAgentRefChange: flow.setAgentRef, onAgentResolutionChange: flow.setResolution, isDefaultAgent: flow.isDefaultAgent, lockAgent: isEndUser, mcpServerUsages: isEndUser ? undefined : flow.mcpServerUsages, onMcpServerUsagesChange: isEndUser ? undefined : flow.setMcpServerUsages, skillRefs: isEndUser ? undefined : flow.skillRefs, onSkillRefsChange: isEndUser ? undefined : flow.setSkillRefs, sessionVariables: isEndUser ? undefined : flow.sessionVariables, className: "px-4 py-3" })] })] }));
338
+ });
339
+ function SessionPanelRegion({ flow, org, panel, accessSlot, onApplied, onImplementPlan, implementPlanDisabled, sessionPlan, streamingPlan, planDraft, openPlanExecutionId, onOpenPlan, enableLocal, onBrowseLocalFolder, workspaceFileLister, workspaceFileReader, workspaceContentSearcher, isEndUser, }) {
126
340
  const selectedItem = useSelectedThreadItem();
341
+ const { editors, activeKey, activeFile, reveal } = useWorkspaceEditors(panel.editorsStore);
342
+ // Honor a pending jump-to-line reveal only while it targets the active editor
343
+ // (an EditorReveal is structurally a RevealTarget). Switching tabs changes
344
+ // activeKey, so a stale reveal for another tab is naturally ignored.
345
+ const activeReveal = reveal && reveal.key === activeKey ? reveal : undefined;
346
+ // This region is the level that subscribes to thread selection; report it to
347
+ // the controller so an open panel can auto-surface the Inspect view. (A
348
+ // collapsed panel never sees — and deliberately never reacts to — selection.)
349
+ useEffect(() => {
350
+ panel.notifySelection(selectedItem);
351
+ }, [selectedItem, panel.notifySelection]);
352
+ // Correlate the active file with its session change for diff-as-default
353
+ // (DD-06 parity with the transcript's rendering of the same change). A
354
+ // virtual document (the plan tab) is not a workspace file — pass `null` so
355
+ // the hook's no-file guard skips the net-change fold entirely, rather than
356
+ // relying on the correlation harmlessly missing the sentinel id.
357
+ const openFileChange = useOpenFileChange(activeFile && !isVirtualEntryId(activeFile.entryId) ? activeFile : null, flow.allExecutions, flow.workspace.entries, flow.sandboxWorkspaceRoot);
358
+ // Resolve WHICH plan the plan document tab shows: the latest (editable,
359
+ // buildable, draft-backed) unless a historical execution id was opened —
360
+ // that plan renders read-only. A stale id (execution gone, or its plan
361
+ // artifact missing) degrades to the latest rather than an empty tab.
362
+ const openPlan = useMemo(() => {
363
+ if (openPlanExecutionId === null ||
364
+ openPlanExecutionId === sessionPlan?.executionId) {
365
+ return sessionPlan;
366
+ }
367
+ const execution = flow.allExecutions.find((e) => e.metadata?.id === openPlanExecutionId);
368
+ const artifact = findPlanArtifact(execution);
369
+ return artifact
370
+ ? { executionId: openPlanExecutionId, artifact }
371
+ : sessionPlan;
372
+ }, [openPlanExecutionId, sessionPlan, flow.allExecutions]);
373
+ // The plan document tab (SurfaceVirtualDocument): the panel's editor-area
374
+ // rendering of the session's plan. Three states, in precedence order:
375
+ // a STREAMING plan owns the tab (live document, no actions); otherwise the
376
+ // resolved `openPlan` renders in the editor (keyed by plan identity so
377
+ // switching plans resets view state cleanly); otherwise an honest empty
378
+ // notice (DD-006) — reachable only when a streaming plan auto-opened the
379
+ // tab and its turn then ended without publishing, with no earlier plan to
380
+ // fall back to.
381
+ const openPlanIsLatest = openPlan?.executionId === sessionPlan?.executionId;
382
+ const virtualDocuments = useMemo(() => {
383
+ return [
384
+ {
385
+ entryId: PLAN_DOCUMENT_ENTRY_ID,
386
+ path: PLAN_DOCUMENT_PATH,
387
+ content: streamingPlan ? (_jsx(PlanStreamingDocument, { displayText: streamingPlan.displayText }, `streaming-${streamingPlan.executionId}`)) : openPlan ? (_jsx(PlanEditor, { plan: openPlan, draft: openPlanIsLatest ? planDraft : undefined, onBuildFromPlan: openPlanIsLatest ? onImplementPlan : undefined, buildDisabled: implementPlanDisabled, readOnly: !openPlanIsLatest }, planDraftKey(openPlan))) : (_jsx(PlanUnavailableNotice, {})),
388
+ },
389
+ ];
390
+ }, [
391
+ streamingPlan,
392
+ openPlan,
393
+ openPlanIsLatest,
394
+ planDraft,
395
+ onImplementPlan,
396
+ implementPlanDisabled,
397
+ ]);
127
398
  const handleRemoveAgent = useCallback(() => {
128
399
  flow.setAgentRef(null);
129
400
  flow.setResolution(null);
@@ -143,8 +414,8 @@ function InspectorPanel({ flow, org, selectionStore, onApplied, onImplementPlan,
143
414
  harness: flow.harness,
144
415
  executionTarget: flow.executionTarget,
145
416
  modelId: flow.model[0],
146
- // End users see the configuration but cannot strip it — the Setup
147
- // tab renders read-only without mutation callbacks (DD-011).
417
+ // End users see the configuration but cannot strip it — the Config
418
+ // facet renders read-only without mutation callbacks (DD-011).
148
419
  mutations: isEndUser
149
420
  ? undefined
150
421
  : {
@@ -152,22 +423,33 @@ function InspectorPanel({ flow, org, selectionStore, onApplied, onImplementPlan,
152
423
  onRemoveMcp: handleRemoveMcp,
153
424
  onRemoveSkill: handleRemoveSkill,
154
425
  },
426
+ accessSlot,
155
427
  }), [
156
428
  flow.agentRef, flow.isDefaultAgent, flow.mcpServerUsages, flow.skillRefs,
157
429
  flow.sessionVariables, flow.harness, flow.executionTarget, flow.model,
158
430
  isEndUser, handleRemoveAgent, handleRemoveMcp, handleRemoveSkill,
431
+ accessSlot,
159
432
  ]);
160
- const workspaceConfig = useMemo(() => ({
161
- actions: {
162
- workspace: flow.workspace,
163
- enableGitHub,
164
- enableLocal,
165
- gitHubConnection,
166
- onBrowseLocalFolder,
167
- workspaceFileLister,
168
- },
169
- }), [flow.workspace, enableGitHub, enableLocal, gitHubConnection, onBrowseLocalFolder, workspaceFileLister]);
170
- return (_jsx("aside", { className: "flex h-full flex-col overflow-hidden", children: _jsx(SessionInspector, { displayExecution: flow.displayExecution, allExecutions: flow.allExecutions, org: org, selectedItem: selectedItem, onApplied: onApplied, onImplementPlan: onImplementPlan, sessionConfig: sessionConfig, workspaceConfig: workspaceConfig, className: "min-h-0 flex-1" }) }));
433
+ // The session facets (Config / Changes / Artifacts / Usage / Inspect) as
434
+ // injected rail views — the full inspector feature set inside one panel.
435
+ const railViews = useSessionRailViews({
436
+ allExecutions: flow.allExecutions,
437
+ org,
438
+ sessionConfig,
439
+ selectedItem,
440
+ onApplied,
441
+ onImplementPlan,
442
+ onOpenPlan,
443
+ });
444
+ // Explorer-footer folder attach (desktop only — needs the native picker).
445
+ // Same wiring the retired Workspace tab used.
446
+ const canAddLocalFolder = enableLocal && !!onBrowseLocalFolder;
447
+ const handleAddLocalFolder = useCallback(async () => {
448
+ const path = await onBrowseLocalFolder?.();
449
+ if (path)
450
+ flow.workspace.addLocalPath(path);
451
+ }, [onBrowseLocalFolder, flow.workspace.addLocalPath]);
452
+ return (_jsx(WorkspaceSurface, { entries: flow.workspace.entries, lister: workspaceFileLister, reader: workspaceFileReader, searcher: workspaceContentSearcher, view: panel.view, onViewChange: panel.setView, extraViews: railViews, virtualDocuments: virtualDocuments, onRemoveEntry: flow.workspace.remove, onAddLocalFolder: canAddLocalFolder ? handleAddLocalFolder : undefined, editors: editors, selectedFile: activeFile, onOpenFile: panel.openFile, onActivateEditor: panel.activateEditor, onPinEditor: panel.pinEditor, onCloseEditor: panel.closeEditor, onCollapse: panel.closePanel, change: openFileChange ?? undefined, reveal: activeReveal, className: "h-full" }));
171
453
  }
172
454
  // ---------------------------------------------------------------------------
173
455
  // Local sub-components (error states)
@@ -187,6 +469,25 @@ function SessionStarting() {
187
469
  function AutoApproveIndicator({ onTurnOff }) {
188
470
  return (_jsxs("div", { role: "status", className: "flex items-center gap-2 border-t border-border-muted px-4 py-1.5 text-xs text-muted-foreground", children: [_jsx(ShieldCheckIcon, {}), _jsx("span", { className: "min-w-0 flex-1 truncate", children: "Auto-approving tool calls for this session" }), _jsx("button", { type: "button", onClick: onTurnOff, className: "shrink-0 rounded font-medium text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Turn off" })] }));
189
471
  }
472
+ /**
473
+ * The plan document tab's empty state — reachable only when a streaming plan
474
+ * auto-opened the tab and its turn then ended without publishing (stopped or
475
+ * failed) while the session has no earlier published plan to fall back to.
476
+ * The partial plan reverts to the conversation (the thread un-collapses it),
477
+ * so the notice points there. Never a blank pane (DD-006).
478
+ */
479
+ function PlanUnavailableNotice() {
480
+ return (_jsxs("div", { role: "status", className: "mx-auto flex w-full max-w-3xl flex-col items-center gap-1 px-4 py-8 text-center", children: [_jsx("p", { className: "text-xs font-medium text-foreground", children: "This turn ended before a plan was completed." }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Any partial plan text remains in the conversation." })] }));
481
+ }
482
+ /**
483
+ * Non-blocking notice for a build that fell back to message-only implement
484
+ * (the approved plan.md could not be uploaded/attached). The build itself
485
+ * proceeded — the agent follows the plan from conversation history — so this
486
+ * is a status, not an alert, and it is dismissible.
487
+ */
488
+ function PlanAttachFailedNotice({ onDismiss }) {
489
+ return (_jsxs("div", { role: "status", className: "flex items-center gap-2 border-t border-border-muted px-4 py-1.5 text-xs text-muted-foreground", children: [_jsx("span", { className: "min-w-0 flex-1 truncate", children: "Couldn\u2019t attach plan.md \u2014 the agent will follow the plan from the conversation instead." }), _jsx("button", { type: "button", onClick: onDismiss, className: "shrink-0 rounded font-medium text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: "Dismiss" })] }));
490
+ }
190
491
  function SendErrorBanner({ error }) {
191
492
  if (isSecretFlowError(error)) {
192
493
  return _jsx(SecretFlowErrorGuide, { error: error, className: "mx-4 my-2" });
@@ -1 +1 @@
1
- {"version":3,"file":"SessionViewer.js","sourceRoot":"","sources":["../../src/session/SessionViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionViewer.js","sourceRoot":"","sources":["../../src/session/SessionViewer.tsx"],"names":[],"mappings":"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"}
@@ -10,13 +10,21 @@ export interface ArtifactsTabProps {
10
10
  * action as the message-thread plan card.
11
11
  */
12
12
  readonly onImplementPlan?: () => void;
13
+ /**
14
+ * Open a plan in the session panel's plan document tab. When provided, a
15
+ * `plan.md` artifact routes there instead of the preview modal — the plan
16
+ * is a first-class document, not a popup. Non-plan artifacts keep the
17
+ * modal. When omitted (hosts without the plan tab) the modal remains for
18
+ * every artifact.
19
+ */
20
+ readonly onOpenPlan?: (executionId: string) => void;
13
21
  }
14
22
  /**
15
- * Artifacts facet for the SessionInspector.
23
+ * Artifacts facet for the session panel (a `useSessionRailViews` rail view).
16
24
  *
17
25
  * Wraps `useSessionArtifacts` → `ArtifactCard` list with
18
26
  * `ArtifactPreviewModal` — the same content as `ArtifactsWidget`
19
27
  * without the section heading.
20
28
  */
21
- export declare function ArtifactsTab({ executions, org, onApplied, onImplementPlan }: ArtifactsTabProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare function ArtifactsTab({ executions, org, onApplied, onImplementPlan, onOpenPlan, }: ArtifactsTabProps): import("react/jsx-runtime").JSX.Element;
22
30
  //# sourceMappingURL=ArtifactsTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactsTab.d.ts","sourceRoot":"","sources":["../../../src/session/facets/ArtifactsTab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAQlG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,GAAG,EACH,SAAS,EACT,eAAe,EACf,UAAU,GACX,EAAE,iBAAiB,2CA8DnB"}
@@ -6,18 +6,23 @@ import { ArtifactCard } from "../../execution/ArtifactCard.js";
6
6
  import { ArtifactPreviewModal } from "../../execution/ArtifactPreviewModal.js";
7
7
  import { isPlanArtifact } from "../../library/detect-plan-artifact.js";
8
8
  /**
9
- * Artifacts facet for the SessionInspector.
9
+ * Artifacts facet for the session panel (a `useSessionRailViews` rail view).
10
10
  *
11
11
  * Wraps `useSessionArtifacts` → `ArtifactCard` list with
12
12
  * `ArtifactPreviewModal` — the same content as `ArtifactsWidget`
13
13
  * without the section heading.
14
14
  */
15
- export function ArtifactsTab({ executions, org, onApplied, onImplementPlan }) {
15
+ export function ArtifactsTab({ executions, org, onApplied, onImplementPlan, onOpenPlan, }) {
16
16
  const { artifacts, hasArtifacts } = useSessionArtifacts(executions);
17
17
  const [previewEntry, setPreviewEntry] = useState(null);
18
18
  const handlePreview = useCallback((entry) => {
19
+ // The plan opens as a document (the panel's plan tab), never a popup.
20
+ if (onOpenPlan && isPlanArtifact(entry.artifact)) {
21
+ onOpenPlan(entry.executionId);
22
+ return;
23
+ }
19
24
  setPreviewEntry(entry);
20
- }, []);
25
+ }, [onOpenPlan]);
21
26
  const handleClosePreview = useCallback(() => {
22
27
  setPreviewEntry(null);
23
28
  }, []);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactsTab.js","sourceRoot":"","sources":["../../../src/session/facets/ArtifactsTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EACL,mBAAmB,GAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAuBvE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,UAAU,EACV,GAAG,EACH,SAAS,EACT,eAAe,EACf,UAAU,GACQ;IAClB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAA8B,IAAI,CAAC,CAAC;IAEpF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAA2B,EAAE,EAAE;QAC9B,sEAAsE;QACtE,IAAI,UAAU,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CACL,cAAK,SAAS,EAAC,iEAAiE,YAC9E,YAAG,SAAS,EAAC,+BAA+B,iFAExC,GACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,8BACE,cAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,YACnC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACxB,cAA6D,IAAI,EAAC,UAAU,YAC1E,KAAC,YAAY,IACX,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,GAAG,EAAE,GAAG,EACR,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,SAAS,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GACrC,IAPM,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAQrD,CACP,CAAC,GACE,EAEL,YAAY,IAAI,CACf,KAAC,oBAAoB,IACnB,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAC/B,WAAW,EAAE,YAAY,CAAC,WAAW,EACrC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,GAAG,EAAE,GAAG,EACR,IAAI,QACJ,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,SAAS,EACpB,WAAW,EACT,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,GAErE,CACH,IACA,CACJ,CAAC;AACJ,CAAC"}