@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
@@ -0,0 +1,119 @@
1
+ "use client";
2
+ import { useEffect, useMemo, useRef, useState } from "react";
3
+ import { toError } from "../internal/toError.js";
4
+ import { loadEntryFiles } from "./workspaceListingCache.js";
5
+ import { matchWorkspaceFiles } from "./matchWorkspaceFiles.js";
6
+ const EMPTY_GROUPS = [];
7
+ /**
8
+ * Behavior hook powering workspace-wide filename/path search.
9
+ *
10
+ * Loads each entry's listing through the shared
11
+ * {@link loadEntryFiles} cache (warm from
12
+ * Files browsing → usually free), then ranks matches per entry with the pure
13
+ * {@link matchWorkspaceFiles}. Fetching is keyed by the set of entry ids, so a
14
+ * query change re-ranks the already-loaded listings without re-fetching. Errors
15
+ * are isolated per entry (one failing repo never blanks the rest), and a stale
16
+ * generation's late resolutions are ignored.
17
+ *
18
+ * Meant to be consumed by a component mounted only while Search is active
19
+ * (`WorkspaceFileSearch`), so the Files view incurs no search fetching.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const { groups, totalMatches, isLoading } = useWorkspaceFileSearch({
24
+ * entries: workspace.entries,
25
+ * lister: workspaceFileLister,
26
+ * query,
27
+ * });
28
+ * ```
29
+ */
30
+ export function useWorkspaceFileSearch({ entries, lister, query, }) {
31
+ const [states, setStates] = useState({});
32
+ // Latest entries read inside the effect without widening its dependency to the
33
+ // (possibly per-render) array identity — the effect keys on the id set instead.
34
+ const entriesRef = useRef(entries);
35
+ entriesRef.current = entries;
36
+ const entriesKey = entries.map((entry) => entry.id).join("\u0000");
37
+ // Ignore resolutions from a superseded entry set (id set or lister changed).
38
+ const generationRef = useRef(0);
39
+ useEffect(() => {
40
+ if (!lister) {
41
+ setStates({});
42
+ return;
43
+ }
44
+ const currentEntries = entriesRef.current;
45
+ const generation = ++generationRef.current;
46
+ // Seed loading for not-yet-known entries; drop states for removed ones.
47
+ setStates((prev) => {
48
+ const next = {};
49
+ for (const entry of currentEntries) {
50
+ next[entry.id] = prev[entry.id] ?? { status: "loading" };
51
+ }
52
+ return next;
53
+ });
54
+ for (const entry of currentEntries) {
55
+ loadEntryFiles(entry, lister)
56
+ .then((listing) => {
57
+ if (generationRef.current !== generation)
58
+ return;
59
+ setStates((prev) => ({
60
+ ...prev,
61
+ [entry.id]: listing === null
62
+ ? { status: "unsupported" }
63
+ : { status: "ready", listing },
64
+ }));
65
+ })
66
+ .catch((err) => {
67
+ if (generationRef.current !== generation)
68
+ return;
69
+ setStates((prev) => ({
70
+ ...prev,
71
+ [entry.id]: { status: "error", error: toError(err) },
72
+ }));
73
+ });
74
+ }
75
+ }, [entriesKey, lister]);
76
+ return useMemo(() => {
77
+ if (!lister) {
78
+ return {
79
+ groups: EMPTY_GROUPS,
80
+ totalMatches: 0,
81
+ isLoading: false,
82
+ isUnsupported: true,
83
+ error: null,
84
+ };
85
+ }
86
+ const groups = [];
87
+ let totalMatches = 0;
88
+ let isLoading = false;
89
+ let firstError = null;
90
+ let unsupportedCount = 0;
91
+ for (const entry of entries) {
92
+ const state = states[entry.id];
93
+ if (!state || state.status === "loading") {
94
+ isLoading = true;
95
+ continue;
96
+ }
97
+ if (state.status === "unsupported") {
98
+ unsupportedCount += 1;
99
+ continue;
100
+ }
101
+ const error = state.status === "error" ? state.error ?? null : null;
102
+ if (error && !firstError)
103
+ firstError = error;
104
+ const truncated = state.listing?.truncated ?? false;
105
+ const matches = state.listing
106
+ ? matchWorkspaceFiles(state.listing.files, query)
107
+ : [];
108
+ totalMatches += matches.length;
109
+ // A group is worth showing only when it carries matches, an error, or a
110
+ // truncation notice — otherwise it is silent.
111
+ if (matches.length > 0 || error || truncated) {
112
+ groups.push({ entry, matches, truncated, error });
113
+ }
114
+ }
115
+ const isUnsupported = entries.length > 0 && unsupportedCount === entries.length;
116
+ return { groups, totalMatches, isLoading, isUnsupported, error: firstError };
117
+ }, [entries, states, query, lister]);
118
+ }
119
+ //# sourceMappingURL=useWorkspaceFileSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorkspaceFileSearch.js","sourceRoot":"","sources":["../../src/workspace/useWorkspaceFileSearch.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type TreeNode } from "../internal/file-tree/index.js";
1
+ import type { TreeNode } from "../internal/file-tree/index.js";
2
2
  import type { WorkspaceEntry } from "./useWorkspaceEntries.js";
3
3
  import type { WorkspaceFileLister } from "./WorkspaceFileLister.js";
4
4
  /** Options for {@link useWorkspaceFiles}. */
@@ -16,6 +16,12 @@ export interface UseWorkspaceFilesReturn {
16
16
  readonly isLoading: boolean;
17
17
  /** Error from the lister, if any. */
18
18
  readonly error: Error | null;
19
+ /**
20
+ * `true` when the listing was truncated by the backend (repository too large).
21
+ * The advisory entry is excluded from `tree`; callers render an incomplete-results
22
+ * banner from this flag instead (DD-11).
23
+ */
24
+ readonly truncated: boolean;
19
25
  /** Re-fetch the file listing for the current entry (cache-bust). */
20
26
  readonly refresh: () => void;
21
27
  }
@@ -23,16 +29,18 @@ export interface UseWorkspaceFilesReturn {
23
29
  * Behavior hook that fetches and caches a file listing for a single
24
30
  * workspace entry, converting it into a {@link TreeNode} hierarchy.
25
31
  *
26
- * - Calls the platform-injected `lister` when the entry changes.
27
- * - Caches results per `entry.id` so tab switches and re-expands
28
- * are instant without re-fetching.
32
+ * - Calls the platform-injected `lister` (via the shared
33
+ * {@link loadEntryFiles} cache) when the
34
+ * entry changes.
35
+ * - Reads the shared listing cache so tab switches, re-expands, and the search
36
+ * surface are instant without re-fetching (one cache, keyed by `entry.id`).
29
37
  * - Returns an empty tree and skips the call when `lister` is
30
38
  * `undefined` (graceful degradation — DD-011 opt-in).
31
39
  * - Memoizes the return value for referential stability (DD-010).
32
40
  *
33
41
  * @example
34
42
  * ```tsx
35
- * const { tree, isLoading, error, refresh } = useWorkspaceFiles({
43
+ * const { tree, isLoading, error, truncated, refresh } = useWorkspaceFiles({
36
44
  * entry: selectedEntry,
37
45
  * lister: workspaceFileLister,
38
46
  * });
@@ -1 +1 @@
1
- {"version":3,"file":"useWorkspaceFiles.d.ts","sourceRoot":"","sources":["../../src/workspace/useWorkspaceFiles.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAExF,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAClD;AAED,iDAAiD;AACjD,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,MAAM,GACP,EAAE,wBAAwB,GAAG,uBAAuB,CAsEpD"}
1
+ {"version":3,"file":"useWorkspaceFiles.d.ts","sourceRoot":"","sources":["../../src/workspace/useWorkspaceFiles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,sGAAsG;IACtG,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAClD;AAED,iDAAiD;AACjD,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,MAAM,GACP,EAAE,wBAAwB,GAAG,uBAAuB,CA0EpD"}
@@ -1,29 +1,24 @@
1
1
  "use client";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
- import { buildFileTree } from "../internal/file-tree/index.js";
4
3
  import { toError } from "../internal/toError.js";
4
+ import { loadEntryFiles, peekEntryListing } from "./workspaceListingCache.js";
5
5
  const EMPTY_TREE = [];
6
- /**
7
- * Module-level cache shared across all component instances. This ensures
8
- * that switching between tabs (e.g., Workspace tab unmount/remount) doesn't
9
- * re-fetch file listings that were already loaded. Entries are keyed by
10
- * the workspace entry's stable ID.
11
- */
12
- const sharedCache = new Map();
13
6
  /**
14
7
  * Behavior hook that fetches and caches a file listing for a single
15
8
  * workspace entry, converting it into a {@link TreeNode} hierarchy.
16
9
  *
17
- * - Calls the platform-injected `lister` when the entry changes.
18
- * - Caches results per `entry.id` so tab switches and re-expands
19
- * are instant without re-fetching.
10
+ * - Calls the platform-injected `lister` (via the shared
11
+ * {@link loadEntryFiles} cache) when the
12
+ * entry changes.
13
+ * - Reads the shared listing cache so tab switches, re-expands, and the search
14
+ * surface are instant without re-fetching (one cache, keyed by `entry.id`).
20
15
  * - Returns an empty tree and skips the call when `lister` is
21
16
  * `undefined` (graceful degradation — DD-011 opt-in).
22
17
  * - Memoizes the return value for referential stability (DD-010).
23
18
  *
24
19
  * @example
25
20
  * ```tsx
26
- * const { tree, isLoading, error, refresh } = useWorkspaceFiles({
21
+ * const { tree, isLoading, error, truncated, refresh } = useWorkspaceFiles({
27
22
  * entry: selectedEntry,
28
23
  * lister: workspaceFileLister,
29
24
  * });
@@ -33,14 +28,16 @@ export function useWorkspaceFiles({ entry, lister, }) {
33
28
  const [isLoading, setIsLoading] = useState(false);
34
29
  const [error, setError] = useState(null);
35
30
  const [tree, setTree] = useState(EMPTY_TREE);
31
+ const [truncated, setTruncated] = useState(false);
36
32
  const fetchIdRef = useRef(0);
37
33
  const fetchFiles = useCallback(async (target, bustCache) => {
38
34
  if (!lister)
39
35
  return;
40
36
  if (!bustCache) {
41
- const cached = sharedCache.get(target.id);
37
+ const cached = peekEntryListing(target.id);
42
38
  if (cached) {
43
39
  setTree(cached.tree);
40
+ setTruncated(cached.truncated);
44
41
  setError(null);
45
42
  setIsLoading(false);
46
43
  return;
@@ -50,17 +47,17 @@ export function useWorkspaceFiles({ entry, lister, }) {
50
47
  setIsLoading(true);
51
48
  setError(null);
52
49
  try {
53
- const files = await lister(target);
50
+ const listing = await loadEntryFiles(target, lister, { bustCache });
54
51
  if (fetchIdRef.current !== id)
55
52
  return;
56
- if (files === null) {
53
+ if (listing === null) {
57
54
  setTree(EMPTY_TREE);
55
+ setTruncated(false);
58
56
  setIsLoading(false);
59
57
  return;
60
58
  }
61
- const built = buildFileTree(files.filter((f) => !f.isDirectory));
62
- sharedCache.set(target.id, { files, tree: built });
63
- setTree(built);
59
+ setTree(listing.tree);
60
+ setTruncated(listing.truncated);
64
61
  setIsLoading(false);
65
62
  }
66
63
  catch (err) {
@@ -68,12 +65,14 @@ export function useWorkspaceFiles({ entry, lister, }) {
68
65
  return;
69
66
  setError(toError(err));
70
67
  setTree(EMPTY_TREE);
68
+ setTruncated(false);
71
69
  setIsLoading(false);
72
70
  }
73
71
  }, [lister]);
74
72
  useEffect(() => {
75
73
  if (!entry || !lister) {
76
74
  setTree(EMPTY_TREE);
75
+ setTruncated(false);
77
76
  setIsLoading(false);
78
77
  setError(null);
79
78
  return;
@@ -85,6 +84,6 @@ export function useWorkspaceFiles({ entry, lister, }) {
85
84
  fetchFiles(entry, true);
86
85
  }
87
86
  }, [entry, lister, fetchFiles]);
88
- return useMemo(() => ({ tree, isLoading, error, refresh }), [tree, isLoading, error, refresh]);
87
+ return useMemo(() => ({ tree, isLoading, error, truncated, refresh }), [tree, isLoading, error, truncated, refresh]);
89
88
  }
90
89
  //# sourceMappingURL=useWorkspaceFiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWorkspaceFiles.js","sourceRoot":"","sources":["../../src/workspace/useWorkspaceFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useWorkspaceFiles.js","sourceRoot":"","sources":["../../src/workspace/useWorkspaceFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { type TreeNode } from "../internal/file-tree/index.js";
2
+ import type { WorkspaceEntry } from "./useWorkspaceEntries.js";
3
+ import type { WorkspaceFileEntry, WorkspaceFileLister } from "./WorkspaceFileLister.js";
4
+ /**
5
+ * A processed listing for one workspace entry.
6
+ *
7
+ * Advisory `notice` entries (e.g. GitHub's "tree truncated" marker) are removed
8
+ * from {@link WorkspaceListing.files} and never enter {@link WorkspaceListing.tree};
9
+ * their presence is collapsed into {@link WorkspaceListing.truncated} so both the
10
+ * accordion and search render one honest "results may be incomplete" banner
11
+ * instead of a fake, clickable row (DD-11).
12
+ */
13
+ export interface WorkspaceListing {
14
+ /** Openable entries (files and directories); advisory notices removed. */
15
+ readonly files: readonly WorkspaceFileEntry[];
16
+ /** Hierarchy of the openable files (directories excluded), ready for `FileTreeNode`. */
17
+ readonly tree: readonly TreeNode[];
18
+ /** `true` when the lister signalled the listing was incomplete (too many files). */
19
+ readonly truncated: boolean;
20
+ }
21
+ /** Options for {@link loadEntryFiles}. */
22
+ export interface LoadEntryFilesOptions {
23
+ /** Skip the cache and re-call the lister (the accordion's Refresh action). */
24
+ readonly bustCache?: boolean;
25
+ }
26
+ /**
27
+ * Returns a cached {@link WorkspaceListing} for an entry synchronously, or
28
+ * `undefined` when nothing is cached. Lets a consumer render a warm listing
29
+ * instantly (no loading flash) before deciding whether to fetch.
30
+ */
31
+ export declare function peekEntryListing(entryId: string): WorkspaceListing | undefined;
32
+ /**
33
+ * Loads and caches the processed listing for a single workspace entry.
34
+ *
35
+ * Returns the cached listing when present (unless `bustCache`), otherwise calls
36
+ * the platform-injected `lister`, processes the raw entries once, and caches the
37
+ * result. Returns `null` when the lister returns `null` (substrate unsupported
38
+ * for this entry) — the honest "unavailable here" signal, not cached.
39
+ */
40
+ export declare function loadEntryFiles(entry: WorkspaceEntry, lister: WorkspaceFileLister, options?: LoadEntryFilesOptions): Promise<WorkspaceListing | null>;
41
+ /**
42
+ * Clears the shared cache. Test-only seam for deterministic isolation.
43
+ *
44
+ * @internal
45
+ */
46
+ export declare function __clearWorkspaceListingCache(): void;
47
+ //# sourceMappingURL=workspaceListingCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceListingCache.d.ts","sourceRoot":"","sources":["../../src/workspace/workspaceListingCache.ts"],"names":[],"mappings":"AASA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IACnC,oFAAoF;IACpF,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE9E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAYlC;AAUD;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
@@ -0,0 +1,55 @@
1
+ // Single source of truth for a workspace entry's file listing.
2
+ //
3
+ // Both surfaces that need a listing read through here: the Files accordion
4
+ // (`useWorkspaceFiles`, one entry) and workspace search (`useWorkspaceFileSearch`,
5
+ // many entries). Keeping one module-level cache — keyed by the stable-within-page
6
+ // `entry.id` — guarantees the two never double-fetch or drift, and lets one fetch
7
+ // produce every shape a consumer needs (flat files for search, a tree for the
8
+ // accordion, and the truncation flag for the banner).
9
+ import { buildFileTree } from "../internal/file-tree/index.js";
10
+ const sharedCache = new Map();
11
+ /**
12
+ * Returns a cached {@link WorkspaceListing} for an entry synchronously, or
13
+ * `undefined` when nothing is cached. Lets a consumer render a warm listing
14
+ * instantly (no loading flash) before deciding whether to fetch.
15
+ */
16
+ export function peekEntryListing(entryId) {
17
+ return sharedCache.get(entryId);
18
+ }
19
+ /**
20
+ * Loads and caches the processed listing for a single workspace entry.
21
+ *
22
+ * Returns the cached listing when present (unless `bustCache`), otherwise calls
23
+ * the platform-injected `lister`, processes the raw entries once, and caches the
24
+ * result. Returns `null` when the lister returns `null` (substrate unsupported
25
+ * for this entry) — the honest "unavailable here" signal, not cached.
26
+ */
27
+ export async function loadEntryFiles(entry, lister, options = {}) {
28
+ if (!options.bustCache) {
29
+ const cached = sharedCache.get(entry.id);
30
+ if (cached)
31
+ return cached;
32
+ }
33
+ const raw = await lister(entry);
34
+ if (raw === null)
35
+ return null;
36
+ const listing = buildListing(raw);
37
+ sharedCache.set(entry.id, listing);
38
+ return listing;
39
+ }
40
+ /** Processes a raw lister result into a {@link WorkspaceListing}. */
41
+ function buildListing(raw) {
42
+ const truncated = raw.some((entry) => entry.notice === true);
43
+ const files = raw.filter((entry) => !entry.notice);
44
+ const tree = buildFileTree(files.filter((entry) => !entry.isDirectory));
45
+ return { files, tree, truncated };
46
+ }
47
+ /**
48
+ * Clears the shared cache. Test-only seam for deterministic isolation.
49
+ *
50
+ * @internal
51
+ */
52
+ export function __clearWorkspaceListingCache() {
53
+ sharedCache.clear();
54
+ }
55
+ //# sourceMappingURL=workspaceListingCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceListingCache.js","sourceRoot":"","sources":["../../src/workspace/workspaceListingCache.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,mFAAmF;AACnF,kFAAkF;AAClF,kFAAkF;AAClF,8EAA8E;AAC9E,sDAAsD;AAEtD,OAAO,EAAE,aAAa,EAAiB,MAAM,gCAAgC,CAAC;AA+B9E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAqB,EACrB,MAA2B,EAC3B,UAAiC,EAAE;IAEnC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,GAAkC;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACxE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArtifactsTab.d.ts","sourceRoot":"","sources":["../../../src/session/inspector/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;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,iBAAiB,2CAsD9F"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArtifactsTab.js","sourceRoot":"","sources":["../../../src/session/inspector/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;AAevE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAqB;IAC7F,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,CAAC,CAAC,KAA2B,EAAE,EAAE;QAChE,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChangesTab.d.ts","sourceRoot":"","sources":["../../../src/session/inspector/ChangesTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAIlG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,2CAuBzD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChangesTab.js","sourceRoot":"","sources":["../../../src/session/inspector/ChangesTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAMjE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,UAAU,EAAmB;IACxD,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEvE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,cAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,YACnC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACzB,cAA8C,IAAI,EAAC,UAAU,YAC3D,KAAC,aAAa,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,IADrC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAEtC,CACP,CAAC,GACE,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,iEAAiE,YAC9E,YAAG,SAAS,EAAC,+BAA+B,uHAGxC,GACA,CACP,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InspectTab.d.ts","sourceRoot":"","sources":["../../../src/session/inspector/InspectTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE,eAAe,2CAsB3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"InspectTab.js","sourceRoot":"","sources":["../../../src/session/inspector/InspectTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAQb;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,YAAY,EAAmB;IAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CACL,eAAK,SAAS,EAAC,iEAAiE,aAC9E,KAAC,cAAc,KAAG,EAClB,YAAG,SAAS,EAAC,oCAAoC,2EAE7C,IACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,yCAAyC,aACtD,wCACc,eAAM,SAAS,EAAC,6BAA6B,YAAE,YAAY,CAAC,IAAI,GAAQ,IAClF,EACJ,YAAG,SAAS,EAAC,kBAAkB,iDAE3B,IACA,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CACL,eACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,SAAS,EAAC,uBAAuB,iBACrB,MAAM,aAElB,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,EAClD,eAAM,CAAC,EAAC,gBAAgB,GAAG,IACvB,CACP,CAAC;AACJ,CAAC"}
@@ -1,64 +0,0 @@
1
- import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
2
- import { type SetupTabProps } from "./SetupTab.js";
3
- import { type WorkspaceTabProps } from "./WorkspaceTab.js";
4
- import type { SelectedThreadItem } from "../../internal/store/selection-store.js";
5
- import type { ApplyResourceResult } from "../../library/useApplyResource.js";
6
- /** Props for {@link SessionInspector}. */
7
- export interface SessionInspectorProps {
8
- /**
9
- * The most relevant execution — the active streaming execution,
10
- * or the last completed one. Drives the run-status header (phase badge).
11
- */
12
- readonly displayExecution: AgentExecution | null;
13
- /**
14
- * All executions in the session (completed + active stream).
15
- * Drives aggregation hooks for Changes, Artifacts, and Usage.
16
- */
17
- readonly allExecutions: readonly AgentExecution[];
18
- /** Organization slug for artifact Apply CTA. */
19
- readonly org: string;
20
- /** Currently selected thread item, or null. */
21
- readonly selectedItem: SelectedThreadItem | null;
22
- /** Called after a resource is applied from the Artifacts tab. */
23
- readonly onApplied?: (result: ApplyResourceResult) => void;
24
- /**
25
- * Implement a plan from the Artifacts tab. When provided, plan
26
- * artifacts (`plan.md`) surface an Implement action in their preview.
27
- */
28
- readonly onImplementPlan?: () => void;
29
- /**
30
- * Session-level configuration for the Configure tab.
31
- * Includes core config fields and optional interactive
32
- * mutation callbacks. When mutation callbacks are absent,
33
- * sections render read-only (DD-011 backward compatibility).
34
- */
35
- readonly sessionConfig?: SetupTabProps;
36
- /**
37
- * Workspace tab configuration. When provided, the Workspace tab
38
- * renders interactive workspace actions (add/remove entries, file
39
- * tree browsing). When absent, the tab shows an empty state.
40
- */
41
- readonly workspaceConfig?: WorkspaceTabProps;
42
- /** Additional CSS classes. */
43
- readonly className?: string;
44
- }
45
- /**
46
- * Tabbed right-side inspector panel for agent sessions.
47
- *
48
- * Displays an always-visible run-status header (phase badge) above
49
- * contextual tabs: Workspace, Config, Changes, Artifacts, Usage, and
50
- * Inspect (when a thread item is selected). The agent's plan/todos render
51
- * inline in the message thread (see {@link TodoCard}), not as a tab here.
52
- *
53
- * Mirrors the `ExecutionInspector` architecture from the workflow
54
- * view — same `Tabs` primitive, same tab-FSM behavior hook, same
55
- * contextual visibility pattern.
56
- *
57
- * `React.memo`'d to prevent re-renders from parent layout changes
58
- * that don't affect inspector data.
59
- *
60
- * All visual properties flow through `--stgm-*` tokens. Zero
61
- * Console/Next/Tauri dependencies (DD-004).
62
- */
63
- export declare const SessionInspector: import("react").NamedExoticComponent<SessionInspectorProps>;
64
- //# sourceMappingURL=SessionInspector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionInspector.d.ts","sourceRoot":"","sources":["../../../src/session/inspector/SessionInspector.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAalG,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,EAAE,cAAc,GAAG,IAAI,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,cAAc,EAAE,CAAC;IAClD,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACjD,iEAAiE;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAC7C,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB,6DAkF3B,CAAC"}
@@ -1,53 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { memo } from "react";
4
- import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
5
- import { cn } from "@stigmer/theme";
6
- import { Tabs } from "../../tabs/Tabs.js";
7
- import { ExecutionPhaseBadge } from "../../execution/ExecutionPhaseBadge.js";
8
- import { useSessionArtifacts } from "../useSessionArtifacts.js";
9
- import { useSessionWriteBacks } from "../useSessionWriteBacks.js";
10
- import { useSessionUsage } from "../useSessionUsage.js";
11
- import { useSessionInspector } from "./useSessionInspector.js";
12
- import { ChangesTab } from "./ChangesTab.js";
13
- import { ArtifactsTab } from "./ArtifactsTab.js";
14
- import { UsageTab } from "./UsageTab.js";
15
- import { InspectTab } from "./InspectTab.js";
16
- import { SetupTab } from "./SetupTab.js";
17
- import { WorkspaceTab } from "./WorkspaceTab.js";
18
- /**
19
- * Tabbed right-side inspector panel for agent sessions.
20
- *
21
- * Displays an always-visible run-status header (phase badge) above
22
- * contextual tabs: Workspace, Config, Changes, Artifacts, Usage, and
23
- * Inspect (when a thread item is selected). The agent's plan/todos render
24
- * inline in the message thread (see {@link TodoCard}), not as a tab here.
25
- *
26
- * Mirrors the `ExecutionInspector` architecture from the workflow
27
- * view — same `Tabs` primitive, same tab-FSM behavior hook, same
28
- * contextual visibility pattern.
29
- *
30
- * `React.memo`'d to prevent re-renders from parent layout changes
31
- * that don't affect inspector data.
32
- *
33
- * All visual properties flow through `--stgm-*` tokens. Zero
34
- * Console/Next/Tauri dependencies (DD-004).
35
- */
36
- export const SessionInspector = memo(function SessionInspector({ displayExecution, allExecutions, org, selectedItem, onApplied, onImplementPlan, sessionConfig, workspaceConfig, className, }) {
37
- const phase = displayExecution?.status?.phase ??
38
- ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED;
39
- const { hasWriteBacks, writeBackCount } = useSessionWriteBacks(allExecutions);
40
- const { hasArtifacts, artifactCount } = useSessionArtifacts(allExecutions);
41
- const { hasUsage } = useSessionUsage(allExecutions);
42
- const { tabs, activeTab, onTabChange } = useSessionInspector({
43
- phase: phase === ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED ? null : phase,
44
- hasWriteBacks,
45
- writeBackCount,
46
- hasArtifacts,
47
- artifactCount,
48
- hasUsage,
49
- selectedItem,
50
- });
51
- return (_jsxs("div", { className: cn("flex h-full flex-col", className), children: [_jsx("div", { role: "region", "aria-label": "Execution progress", className: "flex items-center gap-2 border-b border-border px-3 py-2.5", children: phase !== ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED ? (_jsx(ExecutionPhaseBadge, { phase: phase })) : (_jsx("span", { className: "text-xs text-muted-foreground", children: "No execution" })) }), _jsx(Tabs, { tabs: tabs, activeTab: activeTab, onTabChange: onTabChange, "aria-label": "Session details", className: "min-h-0 flex-1", children: _jsxs("div", { className: "h-full min-h-0 overflow-y-auto px-3 py-3", children: [activeTab === "workspace" && workspaceConfig && (_jsx(WorkspaceTab, { ...workspaceConfig })), activeTab === "configure" && sessionConfig && (_jsx(SetupTab, { ...sessionConfig })), activeTab === "changes" && (_jsx(ChangesTab, { executions: allExecutions })), activeTab === "artifacts" && (_jsx(ArtifactsTab, { executions: allExecutions, org: org, onApplied: onApplied, onImplementPlan: onImplementPlan })), activeTab === "usage" && (_jsx(UsageTab, { executions: allExecutions })), activeTab === "inspect" && (_jsx(InspectTab, { selectedItem: selectedItem }))] }) })] }));
52
- });
53
- //# sourceMappingURL=SessionInspector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionInspector.js","sourceRoot":"","sources":["../../../src/session/inspector/SessionInspector.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SetupTab.d.ts","sourceRoot":"","sources":["../../../src/session/inspector/SetupTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAExF,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,gDAAgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,0CAA0C;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CACrD;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CAChD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,OAAO,EACP,SAAS,GACV,EAAE,aAAa,2CAgCf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SetupTab.js","sourceRoot":"","sources":["../../../src/session/inspector/SetupTab.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UsageTab.d.ts","sourceRoot":"","sources":["../../../src/session/inspector/UsageTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAIlG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,2CAcrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UsageTab.js","sourceRoot":"","sources":["../../../src/session/inspector/UsageTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAM7D;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,UAAU,EAAiB;IACpD,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CACL,cAAK,SAAS,EAAC,iEAAiE,YAC9E,YAAG,SAAS,EAAC,+BAA+B,0EAExC,GACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,WAAW,IAAC,UAAU,EAAE,UAAU,GAAI,CAAC;AACjD,CAAC"}
@@ -1,35 +0,0 @@
1
- import type { UseWorkspaceEntriesReturn } from "../../workspace/useWorkspaceEntries.js";
2
- import type { WorkspaceFileLister } from "../../workspace/WorkspaceFileLister.js";
3
- import type { UseGitHubConnectionReturn } from "../../github/useGitHubConnection.js";
4
- /**
5
- * Interactive workspace actions required by the Workspace tab.
6
- * Mirrors the shape from SetupTab for consistency but is the
7
- * primary owner going forward.
8
- */
9
- export interface WorkspaceTabActions {
10
- readonly workspace: UseWorkspaceEntriesReturn;
11
- readonly enableGitHub?: boolean;
12
- readonly enableLocal?: boolean;
13
- readonly gitHubConnection?: UseGitHubConnectionReturn;
14
- readonly onBrowseLocalFolder?: () => Promise<string | null>;
15
- readonly workspaceFileLister?: WorkspaceFileLister;
16
- }
17
- /** Props for {@link WorkspaceTab}. */
18
- export interface WorkspaceTabProps {
19
- readonly actions: WorkspaceTabActions;
20
- }
21
- /**
22
- * Dedicated workspace tab for the SessionInspector.
23
- *
24
- * Provides a full-height layout for managing workspace entries:
25
- * - Entry list with expandable file trees (accordion, one at a time)
26
- * - Add actions: Browse Folder and Connect GitHub
27
- * - Short display names with full path on hover
28
- *
29
- * Entries start collapsed by default to avoid expensive file-listing
30
- * fetches until the user explicitly expands one.
31
- *
32
- * All visual properties flow through `--stgm-*` tokens (DD-005).
33
- */
34
- export declare function WorkspaceTab({ actions }: WorkspaceTabProps): import("react/jsx-runtime").JSX.Element;
35
- //# sourceMappingURL=WorkspaceTab.d.ts.map