@cueloop/client 0.1.0-alpha.93 → 0.1.0-alpha.95

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 (309) hide show
  1. package/package.json +12 -12
  2. package/src/{annotation-palette.ts → annotations/annotation-palette.ts} +1 -1
  3. package/src/{components → annotations/components}/AnnotationCards.stories.tsx +4 -4
  4. package/src/{components → annotations/components}/AnnotationCards.tsx +7 -7
  5. package/src/{components → annotations/components}/DiscussionMarkerRail.stories.tsx +3 -3
  6. package/src/{components → annotations/components}/DiscussionMarkerRail.tsx +5 -5
  7. package/src/{discussions.ts → annotations/discussions.ts} +1 -1
  8. package/src/{use-annotation-surface.tsx → annotations/use-annotation-surface.tsx} +7 -7
  9. package/src/{App.appearance.test.tsx → app/App.appearance.test.tsx} +1 -1
  10. package/src/{App.autoclose.test.tsx → app/App.autoclose.test.tsx} +1 -1
  11. package/src/{App.deleted-scroll.test.tsx → app/App.deleted-scroll.test.tsx} +3 -3
  12. package/src/{App.diff.test.tsx → app/App.diff.test.tsx} +2 -2
  13. package/src/{App.export.test.tsx → app/App.export.test.tsx} +1 -1
  14. package/src/{App.identity.test.tsx → app/App.identity.test.tsx} +6 -1
  15. package/src/{App.plan-render.test.tsx → app/App.plan-render.test.tsx} +2 -2
  16. package/src/{App.plan-review.test.tsx → app/App.plan-review.test.tsx} +3 -3
  17. package/src/{App.prototype-markdown.test.tsx → app/App.prototype-markdown.test.tsx} +2 -2
  18. package/src/{App.prototype.test.tsx → app/App.prototype.test.tsx} +2 -2
  19. package/src/{App.readonly.test.tsx → app/App.readonly.test.tsx} +1 -1
  20. package/src/{App.regression.test.tsx → app/App.regression.test.tsx} +1 -1
  21. package/src/{App.rendering.test.tsx → app/App.rendering.test.tsx} +1 -1
  22. package/src/{App.share-dialog.test.tsx → app/App.share-dialog.test.tsx} +2 -2
  23. package/src/{App.submit-confirm.test.tsx → app/App.submit-confirm.test.tsx} +1 -1
  24. package/src/{App.test.tsx → app/App.test.tsx} +2 -2
  25. package/src/{App.toast.test.tsx → app/App.toast.test.tsx} +2 -2
  26. package/src/{App.tsx → app/App.tsx} +68 -37
  27. package/src/{App.visual.test.tsx → app/App.visual.test.tsx} +4 -4
  28. package/src/{App.walk.test.tsx → app/App.walk.test.tsx} +2 -2
  29. package/src/{App.workbench.test.tsx → app/App.workbench.test.tsx} +85 -3
  30. package/src/{app-key-state.ts → app/app-key-state.ts} +4 -4
  31. package/src/{app-screens.tsx → app/app-screens.tsx} +31 -31
  32. package/src/{app-view-model.ts → app/app-view-model.ts} +6 -6
  33. package/src/{components → app/components}/AppHeader.stories.tsx +4 -4
  34. package/src/{components → app/components}/AppHeader.tsx +3 -3
  35. package/src/{components → app/components}/AppShell.brand.test.tsx +2 -2
  36. package/src/{components → app/components}/AppShell.extensions.test.tsx +2 -2
  37. package/src/{components → app/components}/AppShell.stories.tsx +2 -2
  38. package/src/{components → app/components}/AppShell.tsx +12 -9
  39. package/src/{components → app/components}/AppShell.zoom.test.tsx +4 -4
  40. package/src/{components → app/components}/Breadcrumb.stories.tsx +2 -2
  41. package/src/{components → app/components}/Breadcrumb.tsx +2 -2
  42. package/src/{components → app/components}/MenuBar.stories.tsx +2 -2
  43. package/src/{components → app/components}/MenuBar.tsx +3 -3
  44. package/src/{components → app/components}/PaneGrid.stories.tsx +2 -2
  45. package/src/{components → app/components}/PaneGrid.tsx +1 -1
  46. package/src/{components → app/components}/PanelColumn.stories.tsx +2 -2
  47. package/src/{components → app/components}/PanelColumn.tsx +2 -2
  48. package/src/{components → app/components}/ShellHeader.stories.tsx +3 -3
  49. package/src/{components → app/components}/ShellHeader.tsx +2 -2
  50. package/src/{components → app/components}/WorkspacePanels.stories.tsx +3 -3
  51. package/src/{components → app/components}/WorkspacePanels.tsx +9 -5
  52. package/src/{components → app/components}/pages/Workspace.stories.tsx +4 -4
  53. package/src/{intent-dispatch.test.ts → app/intent-dispatch.test.ts} +7 -3
  54. package/src/{intent-dispatch.ts → app/intent-dispatch.ts} +12 -6
  55. package/src/{ready-signal.test.ts → app/ready-signal.test.ts} +1 -1
  56. package/src/{run.ts → app/run.ts} +12 -6
  57. package/src/{serve.ts → app/serve.ts} +1 -1
  58. package/src/{version.ts → app/version.ts} +1 -1
  59. package/src/{components → appearance/components}/theme-context.stories.tsx +2 -2
  60. package/src/{components → diff/components}/AnnotatableFileView.stories.tsx +2 -2
  61. package/src/{components → diff/components}/AnnotatableFileView.test.tsx +8 -2
  62. package/src/{components → diff/components}/AnnotatableFileView.tsx +3 -3
  63. package/src/{components → diff/components}/BareWorkbenchFileView.stories.tsx +2 -2
  64. package/src/{components → diff/components}/BareWorkbenchFileView.tsx +2 -2
  65. package/src/{components → diff/components}/DiffContentView.scroll.test.tsx +4 -4
  66. package/src/{components → diff/components}/DiffContentView.split.test.tsx +4 -4
  67. package/src/{components → diff/components}/DiffContentView.stories.tsx +5 -5
  68. package/src/{components → diff/components}/DiffContentView.syntax.test.tsx +3 -3
  69. package/src/{components → diff/components}/DiffContentView.tsx +13 -13
  70. package/src/{components → diff/components}/WalkWizard.stories.tsx +2 -2
  71. package/src/{components → diff/components}/WalkWizard.tsx +4 -4
  72. package/src/{components → diff/components}/diff-content-view-layout.test.ts +2 -2
  73. package/src/{components → diff/components}/diff-content-view-layout.ts +2 -2
  74. package/src/{diff-syntax.ts → diff/diff-syntax.ts} +1 -1
  75. package/src/{view-diff.ts → diff/view-diff.ts} +4 -4
  76. package/src/index.ts +8 -8
  77. package/src/{components → integrations/components}/ExtensionZone.stories.tsx +1 -1
  78. package/src/{components → integrations/components}/ExtensionZone.tsx +3 -3
  79. package/src/{components → integrations/components}/ShareDialog.stories.tsx +2 -2
  80. package/src/{components → integrations/components}/ShareDialog.tsx +11 -11
  81. package/src/{integrations.test.ts → integrations/integrations.test.ts} +1 -1
  82. package/src/{integrations.ts → integrations/integrations.ts} +1 -1
  83. package/src/{components → keyboard/components}/CompletionOverlay.stories.tsx +2 -2
  84. package/src/{components → keyboard/components}/CompletionOverlay.tsx +4 -4
  85. package/src/{components → keyboard/components}/HandleChipsInput.stories.tsx +2 -2
  86. package/src/{components → keyboard/components}/HandleChipsInput.test.tsx +2 -2
  87. package/src/{components → keyboard/components}/HandleChipsInput.tsx +3 -3
  88. package/src/{components → keyboard/components}/KeybindsDialog.stories.tsx +2 -2
  89. package/src/{components → keyboard/components}/KeybindsDialog.tsx +3 -3
  90. package/src/{components → keyboard/components}/NavModeHint.stories.tsx +2 -2
  91. package/src/{components → keyboard/components}/NavModeHint.tsx +1 -1
  92. package/src/{components → keyboard/components}/SlashComposer.stories.tsx +3 -3
  93. package/src/{components → keyboard/components}/SlashComposer.tsx +3 -3
  94. package/src/{key-bindings.test.ts → keyboard/key-bindings.test.ts} +1 -1
  95. package/src/{keymap.test.ts → keyboard/keymap.test.ts} +1 -1
  96. package/src/{keymap.ts → keyboard/keymap.ts} +1 -1
  97. package/src/{slash-palette.ts → keyboard/slash-palette.ts} +1 -1
  98. package/src/{components → markdown/components}/MarkdownGridBlock.stories.tsx +2 -2
  99. package/src/{components → markdown/components}/MarkdownGridBlock.tsx +2 -2
  100. package/src/{components → markdown/components}/MarkdownThreadEditor.stories.tsx +2 -2
  101. package/src/{components → markdown/components}/MarkdownThreadEditor.test.tsx +2 -2
  102. package/src/{components → markdown/components}/MarkdownThreadEditor.tsx +1 -1
  103. package/src/{components → markdown/components}/ThreadView.selection.test.tsx +4 -4
  104. package/src/{components → markdown/components}/ThreadView.slash.test.tsx +6 -6
  105. package/src/{components → markdown/components}/ThreadView.stories.tsx +4 -4
  106. package/src/{components → markdown/components}/ThreadView.tsx +13 -13
  107. package/src/{mark-runs.ts → markdown/mark-runs.ts} +1 -1
  108. package/src/{markdown-editor-syntax-style.ts → markdown/markdown-editor-syntax-style.ts} +1 -1
  109. package/src/{thread-code-syntax.ts → markdown/thread-code-syntax.ts} +3 -3
  110. package/src/{use-thread-body-editing.tsx → markdown/use-thread-body-editing.tsx} +2 -2
  111. package/src/{view-plan.ts → markdown/view-plan.ts} +3 -3
  112. package/src/{components → prototype/components}/PrototypeContentView.stories.tsx +2 -2
  113. package/src/{components → prototype/components}/PrototypeContentView.tsx +5 -5
  114. package/src/{components → settings/components}/SettingsDialog.stories.tsx +3 -3
  115. package/src/{components → settings/components}/SettingsDialog.tsx +7 -7
  116. package/src/{components → settings/components}/SettingsRows.stories.tsx +2 -2
  117. package/src/{components → settings/components}/SettingsRows.tsx +2 -2
  118. package/src/{components → settings/components}/quick-actions-editor.stories.tsx +2 -2
  119. package/src/{components → settings/components}/quick-actions-editor.test.tsx +1 -1
  120. package/src/{components → settings/components}/quick-actions-editor.tsx +3 -3
  121. package/src/{config.test.ts → settings/config.test.ts} +2 -2
  122. package/src/{config.ts → settings/config.ts} +8 -3
  123. package/src/{use-settings-dialog.tsx → settings/use-settings-dialog.tsx} +2 -2
  124. package/src/{components → stories}/stories-app.tsx +8 -8
  125. package/src/{components → stories}/stories.test.tsx +2 -2
  126. package/src/{components → stories}/story-fixtures.ts +2 -2
  127. package/src/{components → stories}/story-tree.test.ts +1 -1
  128. package/src/{components → stories}/story.ts +4 -4
  129. package/src/{components → terminal/components}/AnsiScreen.stories.tsx +1 -1
  130. package/src/{components → terminal/components}/AnsiScreen.tsx +2 -2
  131. package/src/{components → terminal/components}/terminal-pane.test.tsx +1 -1
  132. package/src/{ghostty-terminal.ts → terminal/ghostty-terminal.ts} +1 -1
  133. package/src/{pty.ts → terminal/pty.ts} +1 -1
  134. package/src/{test-support.test.ts → testing/test-support.test.ts} +1 -1
  135. package/src/{test-support.ts → testing/test-support.ts} +1 -1
  136. package/src/{components → thread/components}/ThreadFooter.stories.tsx +2 -2
  137. package/src/{components → thread/components}/ThreadFooter.test.tsx +2 -2
  138. package/src/{components → thread/components}/ThreadFooter.tsx +4 -4
  139. package/src/{components → thread/components}/ThreadTree.stories.tsx +3 -3
  140. package/src/{components → thread/components}/ThreadTree.tsx +8 -8
  141. package/src/{thread-controller.live-diff.test.ts → thread/thread-controller.live-diff.test.ts} +31 -1
  142. package/src/{thread-controller.share.test.ts → thread/thread-controller.share.test.ts} +1 -1
  143. package/src/{thread-controller.tree.test.ts → thread/thread-controller.tree.test.ts} +1 -1
  144. package/src/{thread-controller.ts → thread/thread-controller.ts} +43 -14
  145. package/src/{components → ui/components}/CodeBlock.stories.tsx +2 -2
  146. package/src/{components → ui/components}/CodeBlock.tsx +2 -2
  147. package/src/{components → ui/components}/ConfirmCard.stories.tsx +3 -3
  148. package/src/{components → ui/components}/ConfirmCard.tsx +12 -7
  149. package/src/{components → ui/components}/ConfirmDialog.stories.tsx +2 -2
  150. package/src/{components → ui/components}/ConfirmDialog.tsx +2 -2
  151. package/src/{components → ui/components}/OverlayScrollbar.stories.tsx +2 -2
  152. package/src/{components → ui/components}/OverlayScrollbar.test.tsx +5 -5
  153. package/src/{components → ui/components}/OverlayScrollbar.tsx +2 -2
  154. package/src/{components → ui/components}/PromptDialog.stories.tsx +2 -2
  155. package/src/{components → ui/components}/PromptDialog.test.tsx +2 -2
  156. package/src/{components → ui/components}/PromptDialog.tsx +2 -2
  157. package/src/{components → ui/components}/RootOverlay.stories.tsx +2 -2
  158. package/src/{components → ui/components}/ScrollArea.stories.tsx +2 -2
  159. package/src/{components → ui/components}/ScrollArea.tsx +1 -1
  160. package/src/{components → ui/components}/Toast.stories.tsx +2 -2
  161. package/src/{components → ui/components}/Toast.tsx +2 -2
  162. package/src/{components → ui/components}/Tooltip.stories.tsx +2 -2
  163. package/src/{components → ui/components}/Tooltip.tsx +1 -1
  164. package/src/{components → ui/components}/menu-control.stories.tsx +2 -2
  165. package/src/{components → ui/components}/primitives/Button.stories.tsx +2 -2
  166. package/src/{components → ui/components}/primitives/Button.tsx +2 -2
  167. package/src/{components → ui/components}/primitives/Card.stories.tsx +2 -2
  168. package/src/{components → ui/components}/primitives/Card.tsx +2 -2
  169. package/src/{components → ui/components}/primitives/Dialog.stories.tsx +2 -2
  170. package/src/{components → ui/components}/primitives/Dialog.test.tsx +2 -2
  171. package/src/{components → ui/components}/primitives/Dialog.tsx +2 -2
  172. package/src/{components → ui/components}/primitives/DialogActions.stories.tsx +2 -2
  173. package/src/{components → ui/components}/primitives/DialogActions.tsx +1 -1
  174. package/src/{components → ui/components}/primitives/IconButton.stories.tsx +2 -2
  175. package/src/{components → ui/components}/primitives/IconButton.tsx +1 -1
  176. package/src/{components → ui/components}/primitives/StatusBar.stories.tsx +2 -2
  177. package/src/{components → ui/components}/primitives/StatusBar.tsx +2 -2
  178. package/src/{components → ui/components}/primitives/Switch.stories.tsx +2 -2
  179. package/src/{components → ui/components}/primitives/Switch.tsx +2 -2
  180. package/src/{components → ui/components}/primitives/Tabs.stories.tsx +2 -2
  181. package/src/{components → ui/components}/primitives/Tabs.tsx +2 -2
  182. package/src/{components → ui/components}/primitives/Toolbar.stories.tsx +1 -1
  183. package/src/{components → ui/components}/primitives/Tree.stories.tsx +2 -2
  184. package/src/{components → ui/components}/primitives/Tree.tsx +2 -2
  185. package/src/{components → ui/components}/syntax-highlight.ts +1 -1
  186. package/src/{components → workbench/components}/ChangesColumn.stories.tsx +2 -2
  187. package/src/{components → workbench/components}/ChangesColumn.tsx +7 -7
  188. package/src/{components → workbench/components}/ChangesFileTree.test.tsx +2 -2
  189. package/src/{components → workbench/components}/EditorGrid.split.test.tsx +1 -1
  190. package/src/{components → workbench/components}/EditorGrid.stories.tsx +2 -2
  191. package/src/{components → workbench/components}/EditorGrid.tabs.test.tsx +2 -2
  192. package/src/{components → workbench/components}/EditorGrid.tsx +8 -8
  193. package/src/{components → workbench/components}/EditorGrid.zoom.test.tsx +2 -2
  194. package/src/{components → workbench/components}/FileContentsView.stories.tsx +2 -2
  195. package/src/{components → workbench/components}/FileContentsView.test.tsx +2 -2
  196. package/src/{components → workbench/components}/FileContentsView.tsx +4 -4
  197. package/src/{components → workbench/components}/GridTabContent.actions.test.tsx +6 -6
  198. package/src/{components → workbench/components}/GridTabContent.stories.tsx +4 -4
  199. package/src/{components → workbench/components}/GridTabContent.tsx +4 -4
  200. package/src/{components → workbench/components}/ProjectTreeView.stories.tsx +2 -2
  201. package/src/{components → workbench/components}/ProjectTreeView.test.tsx +2 -2
  202. package/src/{components → workbench/components}/ProjectTreeView.tsx +5 -5
  203. package/src/{components → workbench/components}/TreePane.stories.tsx +3 -3
  204. package/src/{components → workbench/components}/TreePane.tsx +6 -6
  205. package/src/{components → workbench/components}/WelcomePlayground.stories.tsx +2 -2
  206. package/src/{components → workbench/components}/WelcomePlayground.test.tsx +10 -3
  207. package/src/{components → workbench/components}/WelcomePlayground.tsx +5 -5
  208. package/src/{components → workbench/components}/file-tree.ts +1 -1
  209. package/src/{use-changes-workbench.ts → workbench/use-changes-workbench.ts} +2 -2
  210. package/src/{use-remember-layout.ts → workbench/use-remember-layout.ts} +2 -2
  211. package/src/{use-repo-changes.ts → workbench/use-repo-changes.ts} +5 -1
  212. /package/src/{thread-selection.test.ts → annotations/thread-selection.test.ts} +0 -0
  213. /package/src/{thread-selection.ts → annotations/thread-selection.ts} +0 -0
  214. /package/src/{App.focus.test.ts → app/App.focus.test.ts} +0 -0
  215. /package/src/{launch-layout.test.ts → app/launch-layout.test.ts} +0 -0
  216. /package/src/{launch-layout.ts → app/launch-layout.ts} +0 -0
  217. /package/src/{ready-signal.ts → app/ready-signal.ts} +0 -0
  218. /package/src/{serve.test.ts → app/serve.test.ts} +0 -0
  219. /package/src/{components → appearance/components}/theme-context.tsx +0 -0
  220. /package/src/{theme-presets.test.ts → appearance/theme-presets.test.ts} +0 -0
  221. /package/src/{theme-presets.ts → appearance/theme-presets.ts} +0 -0
  222. /package/src/{theme.ts → appearance/theme.ts} +0 -0
  223. /package/src/{visual → appearance/visual}/contrast.test.ts +0 -0
  224. /package/src/{visual → appearance/visual}/contrast.ts +0 -0
  225. /package/src/{diff-fold.test.ts → diff/diff-fold.test.ts} +0 -0
  226. /package/src/{diff-fold.ts → diff/diff-fold.ts} +0 -0
  227. /package/src/{diff-hunk-curate.test.ts → diff/diff-hunk-curate.test.ts} +0 -0
  228. /package/src/{diff-hunk-curate.ts → diff/diff-hunk-curate.ts} +0 -0
  229. /package/src/{diff-intraline.test.ts → diff/diff-intraline.test.ts} +0 -0
  230. /package/src/{diff-intraline.ts → diff/diff-intraline.ts} +0 -0
  231. /package/src/{diff-syntax.test.ts → diff/diff-syntax.test.ts} +0 -0
  232. /package/src/{split-diff.test.ts → diff/split-diff.test.ts} +0 -0
  233. /package/src/{split-diff.ts → diff/split-diff.ts} +0 -0
  234. /package/src/{view-diff.test.ts → diff/view-diff.test.ts} +0 -0
  235. /package/src/{walk.test.ts → diff/walk.test.ts} +0 -0
  236. /package/src/{walk.ts → diff/walk.ts} +0 -0
  237. /package/src/{attribution.test.ts → integrations/attribution.test.ts} +0 -0
  238. /package/src/{attribution.ts → integrations/attribution.ts} +0 -0
  239. /package/src/{client-extension-registry.test.tsx → integrations/client-extension-registry.test.tsx} +0 -0
  240. /package/src/{client-extension-registry.ts → integrations/client-extension-registry.ts} +0 -0
  241. /package/src/{clipboard.test.ts → integrations/clipboard.test.ts} +0 -0
  242. /package/src/{clipboard.ts → integrations/clipboard.ts} +0 -0
  243. /package/src/{components → integrations/components}/share-dialog-store.ts +0 -0
  244. /package/src/{editor.test.ts → integrations/editor.test.ts} +0 -0
  245. /package/src/{editor.ts → integrations/editor.ts} +0 -0
  246. /package/src/{github-identity.test.ts → integrations/github-identity.test.ts} +0 -0
  247. /package/src/{github-identity.ts → integrations/github-identity.ts} +0 -0
  248. /package/src/{herdr.test.ts → integrations/herdr.test.ts} +0 -0
  249. /package/src/{herdr.ts → integrations/herdr.ts} +0 -0
  250. /package/src/{pasted-image.test.ts → integrations/pasted-image.test.ts} +0 -0
  251. /package/src/{pasted-image.ts → integrations/pasted-image.ts} +0 -0
  252. /package/src/{share.ts → integrations/share.ts} +0 -0
  253. /package/src/{key-bindings.ts → keyboard/key-bindings.ts} +0 -0
  254. /package/src/{skills.test.ts → keyboard/skills.test.ts} +0 -0
  255. /package/src/{skills.ts → keyboard/skills.ts} +0 -0
  256. /package/src/{slash-palette.test.ts → keyboard/slash-palette.test.ts} +0 -0
  257. /package/src/{thread-chords.test.ts → keyboard/thread-chords.test.ts} +0 -0
  258. /package/src/{thread-chords.ts → keyboard/thread-chords.ts} +0 -0
  259. /package/src/{use-shared-keyboard.ts → keyboard/use-shared-keyboard.ts} +0 -0
  260. /package/src/{__snapshots__ → markdown/__snapshots__}/view-plan.regression.test.ts.snap +0 -0
  261. /package/src/{markdown-grid.test.ts → markdown/markdown-grid.test.ts} +0 -0
  262. /package/src/{markdown-grid.ts → markdown/markdown-grid.ts} +0 -0
  263. /package/src/{markdown-highlight.test.ts → markdown/markdown-highlight.test.ts} +0 -0
  264. /package/src/{markdown-highlight.ts → markdown/markdown-highlight.ts} +0 -0
  265. /package/src/{view-plan.regression.test.ts → markdown/view-plan.regression.test.ts} +0 -0
  266. /package/src/{view-plan.test.ts → markdown/view-plan.test.ts} +0 -0
  267. /package/src/{perf → performance}/otlp-trace.test.ts +0 -0
  268. /package/src/{perf → performance}/otlp-trace.ts +0 -0
  269. /package/src/{perf → performance}/perf-report.ts +0 -0
  270. /package/src/{perf → performance}/perf-timings.test.ts +0 -0
  271. /package/src/{perf → performance}/perf-timings.ts +0 -0
  272. /package/src/{prototype-browser.test.ts → prototype/prototype-browser.test.ts} +0 -0
  273. /package/src/{prototype-browser.ts → prototype/prototype-browser.ts} +0 -0
  274. /package/src/{prototype-pixels.tsx → prototype/prototype-pixels.tsx} +0 -0
  275. /package/src/{config-identity.test.ts → settings/config-identity.test.ts} +0 -0
  276. /package/src/{components → stories}/__snapshots__/stories.test.tsx.snap +0 -0
  277. /package/src/{ansi-screen.test.ts → terminal/ansi-screen.test.ts} +0 -0
  278. /package/src/{ansi-screen.ts → terminal/ansi-screen.ts} +0 -0
  279. /package/src/{components → terminal/components}/terminal-pane.ts +0 -0
  280. /package/src/{ghostty-terminal.test.ts → terminal/ghostty-terminal.test.ts} +0 -0
  281. /package/src/{kitty-image.test.ts → terminal/kitty-image.test.ts} +0 -0
  282. /package/src/{kitty-image.ts → terminal/kitty-image.ts} +0 -0
  283. /package/src/{pty.test.ts → terminal/pty.test.ts} +0 -0
  284. /package/src/{components → thread/components}/thread-tree.test.ts +0 -0
  285. /package/src/{components → thread/components}/thread-tree.ts +0 -0
  286. /package/src/{thread-controller.curate.test.ts → thread/thread-controller.curate.test.ts} +0 -0
  287. /package/src/{thread-controller.derivation.test.ts → thread/thread-controller.derivation.test.ts} +0 -0
  288. /package/src/{thread-controller.optimistic.test.ts → thread/thread-controller.optimistic.test.ts} +0 -0
  289. /package/src/{thread-controller.switch-cache.test.ts → thread/thread-controller.switch-cache.test.ts} +0 -0
  290. /package/src/{tree-view.test.ts → thread/tree-view.test.ts} +0 -0
  291. /package/src/{tree-view.ts → thread/tree-view.ts} +0 -0
  292. /package/src/{components → ui/components}/RootOverlay.tsx +0 -0
  293. /package/src/{components → ui/components}/menu-control.tsx +0 -0
  294. /package/src/{components → ui/components}/primitives/Toolbar.tsx +0 -0
  295. /package/src/{components → ui/components}/primitives/frame.test.ts +0 -0
  296. /package/src/{components → ui/components}/primitives/frame.ts +0 -0
  297. /package/src/{components → ui/components}/primitives/icons.ts +0 -0
  298. /package/src/{components → ui/components}/primitives/tree-model.test.ts +0 -0
  299. /package/src/{components → ui/components}/primitives/tree-model.ts +0 -0
  300. /package/src/{components → ui/components}/truncate-text.ts +0 -0
  301. /package/src/{components → ui/components}/truncate-title.test.ts +0 -0
  302. /package/src/{components → ui/components}/truncate-title.ts +0 -0
  303. /package/src/{use-frame-measure.ts → ui/use-frame-measure.ts} +0 -0
  304. /package/src/{use-terminal-virtualizer.ts → ui/use-terminal-virtualizer.ts} +0 -0
  305. /package/src/{components → workbench/components}/editor-grid.test.ts +0 -0
  306. /package/src/{components → workbench/components}/editor-grid.ts +0 -0
  307. /package/src/{components → workbench/components}/file-tree.test.ts +0 -0
  308. /package/src/{workbench-snapshot.test.ts → workbench/workbench-snapshot.test.ts} +0 -0
  309. /package/src/{workbench-snapshot.ts → workbench/workbench-snapshot.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
3
- import type { Story, StoryMeta } from "./story";
2
+ import { DARK } from "../../appearance/theme";
3
+ import type { Story, StoryMeta } from "../../stories/story";
4
4
  import { MarkdownThreadEditor } from "./MarkdownThreadEditor";
5
5
 
6
6
  export const meta: StoryMeta = { title: "Surfaces/MarkdownThreadEditor" };
@@ -1,8 +1,8 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import React from "react";
3
3
  import { testRender } from "@opentui/react/test-utils";
4
- import { DARK } from "../theme";
5
- import { press, settle } from "../test-support";
4
+ import { DARK } from "../../appearance/theme";
5
+ import { press, settle } from "../../testing/test-support";
6
6
  import { MarkdownThreadEditor, type MarkdownEditorHandle } from "./MarkdownThreadEditor";
7
7
 
8
8
  describe("MarkdownThreadEditor", () => {
@@ -13,7 +13,7 @@
13
13
 
14
14
  import React, { forwardRef, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
15
15
  import type { KeyBinding, TextareaRenderable } from "@opentui/core";
16
- import { type Theme } from "../theme";
16
+ import { type Theme } from "../../appearance/theme";
17
17
  import { markdownHighlightRanges } from "../markdown-highlight";
18
18
  import { markdownEditorStyle } from "../markdown-editor-syntax-style";
19
19
 
@@ -12,13 +12,13 @@ import React from "react";
12
12
  import { testRender } from "@opentui/react/test-utils";
13
13
  import { TextAttributes } from "@opentui/core";
14
14
  import type { TestRendererSetup } from "@opentui/core/testing";
15
- import { DEFAULT_QUICK_ACTIONS } from "../config";
16
- import { settle, typeText } from "../test-support";
15
+ import { DEFAULT_QUICK_ACTIONS } from "../../settings/config";
16
+ import { settle, typeText } from "../../testing/test-support";
17
17
  import { buildDisplay, marksByDisplay } from "../view-plan";
18
18
  import { makeAnchor, parseBlocks, type Annotation } from "@cueloop/schema";
19
- import type { TextSpan } from "../thread-selection";
19
+ import type { TextSpan } from "../../annotations/thread-selection";
20
20
  import * as markRuns from "../mark-runs";
21
- import { fixturePlanSession } from "./story-fixtures";
21
+ import { fixturePlanSession } from "../../stories/story-fixtures";
22
22
  import { ThreadView } from "./ThreadView";
23
23
 
24
24
  const PARAGRAPH =
@@ -4,14 +4,14 @@ import { describe, expect, test } from "bun:test";
4
4
  import React from "react";
5
5
  import type { RGBA } from "@opentui/core";
6
6
  import { testRender } from "@opentui/react/test-utils";
7
- import type { QuickAction } from "../config";
8
- import { settle, typeText } from "../test-support";
9
- import { DARK } from "../theme";
7
+ import type { QuickAction } from "../../settings/config";
8
+ import { settle, typeText } from "../../testing/test-support";
9
+ import { DARK } from "../../appearance/theme";
10
10
  import { buildDisplay, marksByDisplay } from "../view-plan";
11
- import { fixturePlanSession } from "./story-fixtures";
11
+ import { fixturePlanSession } from "../../stories/story-fixtures";
12
12
  import { ThreadView } from "./ThreadView";
13
- import { mergeSlashItems, slashItemsFrom, type SlashItem } from "../slash-palette";
14
- import { PaletteNamesContext, SlashSkillsContext } from "../skills";
13
+ import { mergeSlashItems, slashItemsFrom, type SlashItem } from "../../keyboard/slash-palette";
14
+ import { PaletteNamesContext, SlashSkillsContext } from "../../keyboard/skills";
15
15
 
16
16
  const SKILLS: QuickAction[] = [
17
17
  { prompt: "typescript magician" },
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
- import { DEFAULT_QUICK_ACTIONS } from "../config";
3
- import { DARK } from "../theme";
4
- import type { Story, StoryMeta } from "./story";
5
- import { fixtureDisplay, fixtureMarks, fixturePlanSession } from "./story-fixtures";
2
+ import { DEFAULT_QUICK_ACTIONS } from "../../settings/config";
3
+ import { DARK } from "../../appearance/theme";
4
+ import type { Story, StoryMeta } from "../../stories/story";
5
+ import { fixtureDisplay, fixtureMarks, fixturePlanSession } from "../../stories/story-fixtures";
6
6
  import { ThreadView } from "./ThreadView";
7
7
 
8
8
  export const meta: StoryMeta = { title: "Surfaces/ThreadView" };
@@ -27,26 +27,26 @@ import {
27
27
  type RunRole,
28
28
  type StyledRun,
29
29
  } from "../view-plan";
30
- import type { TextSpan } from "../thread-selection";
31
- import type { QuickAction } from "../config";
32
- import type { CheatsheetSection } from "../key-bindings";
33
- import type { Theme } from "../theme";
34
- import { BOLD, CUT, ITALIC, UNDERLINE } from "../annotation-palette";
30
+ import type { TextSpan } from "../../annotations/thread-selection";
31
+ import type { QuickAction } from "../../settings/config";
32
+ import type { CheatsheetSection } from "../../keyboard/key-bindings";
33
+ import type { Theme } from "../../appearance/theme";
34
+ import { BOLD, CUT, ITALIC, UNDERLINE } from "../../annotations/annotation-palette";
35
35
  import { wrapLines, type MarkRange, type VisualLine } from "../mark-runs";
36
36
  import { MarkdownGridBlock } from "./MarkdownGridBlock";
37
- import { useFrameMeasure } from "../use-frame-measure";
38
- import { scrollBoxDragViewport, useTerminalVirtualizer } from "../use-terminal-virtualizer";
39
- import { useAnnotationSurface, type LineSource } from "../use-annotation-surface";
40
- import { NavModeHint } from "./NavModeHint";
41
- import { DiscussionMarkerRail } from "./DiscussionMarkerRail";
42
- import { useComponentTheme } from "./theme-context";
43
- import { colorForSyntaxGroup } from "./syntax-highlight";
37
+ import { useFrameMeasure } from "../../ui/use-frame-measure";
38
+ import { scrollBoxDragViewport, useTerminalVirtualizer } from "../../ui/use-terminal-virtualizer";
39
+ import { useAnnotationSurface, type LineSource } from "../../annotations/use-annotation-surface";
40
+ import { NavModeHint } from "../../keyboard/components/NavModeHint";
41
+ import { DiscussionMarkerRail } from "../../annotations/components/DiscussionMarkerRail";
42
+ import { useComponentTheme } from "../../appearance/components/theme-context";
43
+ import { colorForSyntaxGroup } from "../../ui/components/syntax-highlight";
44
44
  import { highlightThreadCodeBlocks, type SyntaxSpan } from "../thread-code-syntax";
45
45
 
46
46
  /** Blocks kept mounted beyond the viewport, so a scroll step or a drag past the edge never shows a gap. */
47
47
  const OVERSCAN_BLOCKS = 8;
48
48
 
49
- export { lighten } from "../annotation-palette";
49
+ export { lighten } from "../../annotations/annotation-palette";
50
50
 
51
51
  interface CodeSyntaxState {
52
52
  display: DisplayBlock[];
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import type { KeyEvent } from "@opentui/core";
9
- import { wordRanges } from "./thread-selection";
9
+ import { wordRanges } from "../annotations/thread-selection";
10
10
 
11
11
  export interface MarkRange {
12
12
  start: number;
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { SyntaxStyle, type StyleDefinitionInput } from "@opentui/core";
10
- import { type Theme } from "./theme";
10
+ import { type Theme } from "../appearance/theme";
11
11
  import { MARKDOWN_HIGHLIGHT_GROUPS, type MarkdownHighlightGroup } from "./markdown-highlight";
12
12
 
13
13
  /** A markdown SyntaxStyle plus the lookup from token group to its native styleId. */
@@ -3,10 +3,10 @@
3
3
  import { getTreeSitterClient } from "@opentui/core";
4
4
  import type { DisplayBlock } from "./view-plan";
5
5
  import { renderedText } from "./view-plan";
6
- import { spansByLine, type SyntaxSpan } from "./diff-syntax";
7
- import { filetypeFor } from "./components/syntax-highlight";
6
+ import { spansByLine, type SyntaxSpan } from "../diff/diff-syntax";
7
+ import { filetypeFor } from "../ui/components/syntax-highlight";
8
8
 
9
- export type { SyntaxSpan } from "./diff-syntax";
9
+ export type { SyntaxSpan } from "../diff/diff-syntax";
10
10
 
11
11
  /** Highlight whole code blocks so multi-line syntax stays intact. */
12
12
  export async function highlightThreadCodeBlocks(
@@ -10,8 +10,8 @@
10
10
  */
11
11
 
12
12
  import React, { useRef, useState } from "react";
13
- import type { Theme } from "./theme";
14
- import type { ReviewController } from "./thread-controller";
13
+ import type { Theme } from "../appearance/theme";
14
+ import type { ReviewController } from "../thread/thread-controller";
15
15
  import { MarkdownThreadEditor, type MarkdownEditorHandle } from "./components/MarkdownThreadEditor";
16
16
 
17
17
  export interface ThreadBodyEditing {
@@ -20,10 +20,10 @@ import {
20
20
  type BlockTextSourceSegment,
21
21
  type TextCut,
22
22
  } from "@cueloop/schema";
23
- import { wordLevelChanges } from "./diff-intraline";
24
- import { spanRangeInBlock, type CharRange, type TextSpan } from "./thread-selection";
23
+ import { wordLevelChanges } from "../diff/diff-intraline";
24
+ import { spanRangeInBlock, type CharRange, type TextSpan } from "../annotations/thread-selection";
25
25
  import type { MarkRange, VisualLine } from "./mark-runs";
26
- import type { SyntaxSpan } from "./diff-syntax";
26
+ import type { SyntaxSpan } from "../diff/diff-syntax";
27
27
 
28
28
  // ── display model ─────────────────────────────
29
29
 
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
3
- import type { Story, StoryMeta } from "./story";
2
+ import { DARK } from "../../appearance/theme";
3
+ import type { Story, StoryMeta } from "../../stories/story";
4
4
  import { PrototypeContentView } from "./PrototypeContentView";
5
5
 
6
6
  export const meta: StoryMeta = { title: "Surfaces/PrototypeContentView" };
@@ -13,10 +13,10 @@ import React, { useEffect, useRef, useState } from "react";
13
13
  import type { BoxRenderable } from "@opentui/core";
14
14
  import * as v from "valibot";
15
15
  import { useKeyboard, useRenderer } from "@opentui/react";
16
- import type { Theme } from "../theme";
17
- import { useComponentTheme } from "./theme-context";
18
- import { Composer, DiscussionCard } from "./AnnotationCards";
19
- import { annotationPaletteFor } from "../annotation-palette";
16
+ import type { Theme } from "../../appearance/theme";
17
+ import { useComponentTheme } from "../../appearance/components/theme-context";
18
+ import { Composer, DiscussionCard } from "../../annotations/components/AnnotationCards";
19
+ import { annotationPaletteFor } from "../../annotations/annotation-palette";
20
20
  import {
21
21
  cssBoxToCell,
22
22
  imageCellToCss,
@@ -31,7 +31,7 @@ import {
31
31
  resolveTransmitMedium,
32
32
  transmitKittyImage,
33
33
  type CellRegion,
34
- } from "../kitty-image";
34
+ } from "../../terminal/kitty-image";
35
35
 
36
36
  export interface PrototypeContentViewProps {
37
37
  prototypePath: string;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
3
- import { THEME_PRESETS } from "../theme-presets";
4
- import type { Story, StoryMeta } from "./story";
2
+ import { DARK } from "../../appearance/theme";
3
+ import { THEME_PRESETS } from "../../appearance/theme-presets";
4
+ import type { Story, StoryMeta } from "../../stories/story";
5
5
  import { SettingsDialog, type SettingsCategory } from "./SettingsDialog";
6
6
 
7
7
  export const meta: StoryMeta = { title: "Overlays/SettingsDialog" };
@@ -7,15 +7,15 @@
7
7
  * stories catalog) drive it without a second key handler inside.
8
8
  */
9
9
 
10
- import { ScrollArea } from "./ScrollArea";
10
+ import { ScrollArea } from "../../ui/components/ScrollArea";
11
11
  import React from "react";
12
12
  import { useTerminalDimensions } from "@opentui/react";
13
- import type { Theme } from "../theme";
14
- import type { CheatsheetSection } from "../key-bindings";
15
- import { useComponentTheme } from "./theme-context";
16
- import { Dialog } from "./primitives/Dialog";
17
- import { Tree } from "./primitives/Tree";
18
- import type { TreeNode } from "./primitives/tree-model";
13
+ import type { Theme } from "../../appearance/theme";
14
+ import type { CheatsheetSection } from "../../keyboard/key-bindings";
15
+ import { useComponentTheme } from "../../appearance/components/theme-context";
16
+ import { Dialog } from "../../ui/components/primitives/Dialog";
17
+ import { Tree } from "../../ui/components/primitives/Tree";
18
+ import type { TreeNode } from "../../ui/components/primitives/tree-model";
19
19
  import { CycleRow, TextRow, ToggleRow, type SettingsRowDescriptor } from "./SettingsRows";
20
20
 
21
21
  export interface SettingsCategory {
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
3
- import type { Story, StoryMeta } from "./story";
2
+ import { DARK } from "../../appearance/theme";
3
+ import type { Story, StoryMeta } from "../../stories/story";
4
4
  import { CycleRow, TextRow, ToggleRow } from "./SettingsRows";
5
5
 
6
6
  export const meta: StoryMeta = { title: "Chrome/SettingsRows" };
@@ -6,8 +6,8 @@
6
6
  */
7
7
 
8
8
  import React from "react";
9
- import type { Theme } from "../theme";
10
- import { useComponentTheme } from "./theme-context";
9
+ import type { Theme } from "../../appearance/theme";
10
+ import { useComponentTheme } from "../../appearance/components/theme-context";
11
11
 
12
12
  export interface SettingsRowDescriptor {
13
13
  key: string;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
2
+ import { DARK } from "../../appearance/theme";
3
3
  import { DEFAULT_QUICK_ACTIONS } from "../config";
4
- import type { Story, StoryMeta } from "./story";
4
+ import type { Story, StoryMeta } from "../../stories/story";
5
5
  import { QuickActionsEditor } from "./quick-actions-editor";
6
6
 
7
7
  export const meta: StoryMeta = { title: "Chrome/QuickActionsEditor" };
@@ -4,7 +4,7 @@ import { describe, expect, test } from "bun:test";
4
4
  import React from "react";
5
5
  import { testRender } from "@opentui/react/test-utils";
6
6
  import type { QuickAction } from "../config";
7
- import { locateText, settle, typeText } from "../test-support";
7
+ import { locateText, settle, typeText } from "../../testing/test-support";
8
8
  import { QuickActionsEditor } from "./quick-actions-editor";
9
9
 
10
10
  const MANY: QuickAction[] = Array.from({ length: 14 }, (_, index) => ({
@@ -9,9 +9,9 @@
9
9
  import React, { useEffect, useRef, useState } from "react";
10
10
  import type { KeyBinding, ScrollBoxRenderable, TextareaRenderable } from "@opentui/core";
11
11
  import type { QuickAction } from "../config";
12
- import type { Theme } from "../theme";
13
- import { ScrollArea } from "./ScrollArea";
14
- import { useComponentTheme } from "./theme-context";
12
+ import type { Theme } from "../../appearance/theme";
13
+ import { ScrollArea } from "../../ui/components/ScrollArea";
14
+ import { useComponentTheme } from "../../appearance/components/theme-context";
15
15
 
16
16
  // ⏎ never inserts a newline: a system prompt is one line, esc closes the editor.
17
17
  const ACTION_INPUT_KEY_BINDINGS: KeyBinding[] = [{ name: "return", action: "submit" }];
@@ -17,8 +17,8 @@ import {
17
17
  quickActionBody,
18
18
  resolveQuickAction,
19
19
  } from "./config";
20
- import { DARK } from "./theme";
21
- import { themeForName } from "./theme-presets";
20
+ import { DARK } from "../appearance/theme";
21
+ import { themeForName } from "../appearance/theme-presets";
22
22
 
23
23
  describe("loadConfig", () => {
24
24
  test("review defaults use the bundled skill in an isolated worktree", () => {
@@ -13,9 +13,14 @@ import { MESSAGE_OUTCOMES, type MessageOutcome } from "@cueloop/schema";
13
13
  import { writeFileSync, mkdirSync } from "node:fs";
14
14
  import { dirname } from "node:path";
15
15
  import * as v from "valibot";
16
- import { DARK, type Theme } from "./theme";
17
- import { DEFAULT_THEME_NAME, isThemeName, themeForName, type ThemeName } from "./theme-presets";
18
- import type { LaunchLayout } from "./launch-layout";
16
+ import { DARK, type Theme } from "../appearance/theme";
17
+ import {
18
+ DEFAULT_THEME_NAME,
19
+ isThemeName,
20
+ themeForName,
21
+ type ThemeName,
22
+ } from "../appearance/theme-presets";
23
+ import type { LaunchLayout } from "../app/launch-layout";
19
24
 
20
25
  export interface KeymapConfig {
21
26
  [action: string]: string | string[];
@@ -17,8 +17,8 @@ import {
17
17
  THEME_NAMES,
18
18
  type Appearance,
19
19
  type ThemeName,
20
- } from "./theme-presets";
21
- import type { Theme } from "./theme";
20
+ } from "../appearance/theme-presets";
21
+ import type { Theme } from "../appearance/theme";
22
22
  import type { SettingsCategory } from "./components/SettingsDialog";
23
23
  import { QuickActionsEditor } from "./components/quick-actions-editor";
24
24
 
@@ -8,15 +8,15 @@
8
8
  import React, { useEffect, useMemo, useRef, useState } from "react";
9
9
  import { createCliRenderer, type ScrollBoxRenderable } from "@opentui/core";
10
10
  import { createRoot, useKeyboard } from "@opentui/react";
11
- import { DARK } from "../theme";
12
- import { ThemeProvider } from "./theme-context";
11
+ import { DARK } from "../appearance/theme";
12
+ import { ThemeProvider } from "../appearance/components/theme-context";
13
13
  import { buildStoryTree, loadStories, type LoadedStory } from "./story";
14
- import { PaneGrid } from "./PaneGrid";
15
- import { ShellHeader } from "./ShellHeader";
16
- import { AnsiScreen } from "./AnsiScreen";
17
- import { Tree } from "./primitives/Tree";
18
- import { NERD } from "./primitives/icons";
19
- import { flattenTree } from "./primitives/tree-model";
14
+ import { PaneGrid } from "../app/components/PaneGrid";
15
+ import { ShellHeader } from "../app/components/ShellHeader";
16
+ import { AnsiScreen } from "../terminal/components/AnsiScreen";
17
+ import { Tree } from "../ui/components/primitives/Tree";
18
+ import { NERD } from "../ui/components/primitives/icons";
19
+ import { flattenTree } from "../ui/components/primitives/tree-model";
20
20
 
21
21
  interface StoriesAppProps {
22
22
  stories: LoadedStory[];
@@ -10,8 +10,8 @@ import { describe, expect, test } from "bun:test";
10
10
  import { testRender } from "@opentui/react/test-utils";
11
11
  import { RGBA } from "@opentui/core";
12
12
  import { componentFilesMissingStories, loadStories } from "./story";
13
- import { AnsiScreen } from "./AnsiScreen";
14
- import { settle } from "../test-support";
13
+ import { AnsiScreen } from "../terminal/components/AnsiScreen";
14
+ import { settle } from "../testing/test-support";
15
15
 
16
16
  const stories = await loadStories();
17
17
 
@@ -1,8 +1,8 @@
1
1
  /** Shared fixture data for the stories catalog: one plan session, one diff. */
2
2
 
3
3
  import type { Annotation, Thread } from "@cueloop/schema";
4
- import { buildDisplay, marksByDisplay } from "../view-plan";
5
- import { diffRows } from "../view-diff";
4
+ import { buildDisplay, marksByDisplay } from "../markdown/view-plan";
5
+ import { diffRows } from "../diff/view-diff";
6
6
 
7
7
  export const FIXTURE_PLAN = `# Migration Plan
8
8
 
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import { buildStoryTree, type LoadedStory, type StorySection } from "./story";
3
- import type { TreeNode } from "./primitives/tree-model";
3
+ import type { TreeNode } from "../ui/components/primitives/tree-model";
4
4
 
5
5
  /** A story object whose render is never invoked in these structural tests. */
6
6
  const STUB = { render: () => null };
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import type React from "react";
10
- import type { TreeNode } from "./primitives/tree-model";
10
+ import type { TreeNode } from "../ui/components/primitives/tree-model";
11
11
 
12
12
  export interface StoryMeta {
13
13
  /** Catalog path, e.g. "primitives/Card". */
@@ -80,7 +80,7 @@ async function collectStories(
80
80
  export async function loadStories(): Promise<LoadedStory[]> {
81
81
  const loaded: LoadedStory[] = [];
82
82
 
83
- await collectStories(import.meta.dir, "**/*.stories.tsx", "App", loaded);
83
+ await collectStories(`${import.meta.dir}/..`, "**/*.stories.tsx", "App", loaded);
84
84
  await collectStories(GATEWAY_SRC_DIR, "**/*.stories.ts", "SSH", loaded);
85
85
 
86
86
  return loaded;
@@ -142,8 +142,8 @@ export function buildStoryTree(stories: LoadedStory[]): TreeNode[] {
142
142
 
143
143
  /** Component files that must carry stories: every .tsx that is not a story/test/prototype. */
144
144
  export function componentFilesMissingStories(): string[] {
145
- const componentGlob = new Bun.Glob("**/*.tsx");
146
- const files = [...componentGlob.scanSync({ cwd: import.meta.dir })];
145
+ const componentGlob = new Bun.Glob("**/components/**/*.tsx");
146
+ const files = [...componentGlob.scanSync({ cwd: `${import.meta.dir}/..` })];
147
147
  const missing: string[] = [];
148
148
 
149
149
  for (const file of files) {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { Story, StoryMeta } from "./story";
2
+ import type { Story, StoryMeta } from "../../stories/story";
3
3
  import { AnsiScreen } from "./AnsiScreen";
4
4
 
5
5
  export const meta: StoryMeta = { title: "Primitives/AnsiScreen" };
@@ -1,9 +1,9 @@
1
1
  /** Paints a raw ANSI screen (cursor-positioned text) as a terminal would, for previewing SSH surfaces. */
2
2
 
3
3
  import React from "react";
4
- import type { Theme } from "../theme";
4
+ import type { Theme } from "../../appearance/theme";
5
5
  import { ansiScreenToLines } from "../ansi-screen";
6
- import { useComponentTheme } from "./theme-context";
6
+ import { useComponentTheme } from "../../appearance/components/theme-context";
7
7
 
8
8
  export interface AnsiScreenProps {
9
9
  ansi: string;
@@ -3,7 +3,7 @@
3
3
  import { describe, expect, test } from "bun:test";
4
4
  import React from "react";
5
5
  import { testRender } from "@opentui/react/test-utils";
6
- import { waitForText } from "../test-support";
6
+ import { waitForText } from "../../testing/test-support";
7
7
  import {
8
8
  embeddedTerminalAvailable,
9
9
  registerTerminalPane,
@@ -55,7 +55,7 @@ type CvtLib = ReturnType<typeof dlopen<typeof CVT_SYMBOLS>>["symbols"];
55
55
  function nativeLibraryPath(): string | null {
56
56
  const suffix = process.platform === "darwin" ? "dylib" : "so";
57
57
  const dir = `${process.platform}-${process.arch}`;
58
- const path = join(import.meta.dir, "..", "native", dir, `libcueloopvt.${suffix}`);
58
+ const path = join(import.meta.dir, "..", "..", "native", dir, `libcueloopvt.${suffix}`);
59
59
 
60
60
  return existsSync(path) ? path : null;
61
61
  }
@@ -69,7 +69,7 @@ type PtyLib = ReturnType<typeof dlopen<typeof PTY_SYMBOLS>>["symbols"];
69
69
  function nativeLibraryPath(): string | null {
70
70
  const suffix = process.platform === "darwin" ? "dylib" : "so";
71
71
  const dir = `${process.platform}-${process.arch}`;
72
- const path = join(import.meta.dir, "..", "native", dir, `libcuelooppty.${suffix}`);
72
+ const path = join(import.meta.dir, "..", "..", "native", dir, `libcuelooppty.${suffix}`);
73
73
 
74
74
  return existsSync(path) ? path : null;
75
75
  }
@@ -7,7 +7,7 @@ import type { KeyEvent, MouseEvent } from "@opentui/core";
7
7
  import type { TestRendererSetup } from "@opentui/core/testing";
8
8
  import { useKeyboard } from "@opentui/react";
9
9
  import { testRender } from "@opentui/react/test-utils";
10
- import { loadConfig } from "./config";
10
+ import { loadConfig } from "../settings/config";
11
11
  import {
12
12
  clickText,
13
13
  dragText,
@@ -10,7 +10,7 @@ import { join } from "node:path";
10
10
  import { cloneElement, isValidElement, type ReactNode } from "react";
11
11
  import type { TestRendererOptions, TestRendererSetup } from "@opentui/core/testing";
12
12
  import { testRender } from "@opentui/react/test-utils";
13
- import type { AppProps } from "./App";
13
+ import type { AppProps } from "../app/App";
14
14
 
15
15
  /**
16
16
  * A probe for the App's ready signal in an in-process suite: pass `onReady`
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
3
- import type { Story, StoryMeta } from "./story";
2
+ import { DARK } from "../../appearance/theme";
3
+ import type { Story, StoryMeta } from "../../stories/story";
4
4
  import { ThreadFooter } from "./ThreadFooter";
5
5
 
6
6
  export const meta: StoryMeta = { title: "Chrome/ThreadFooter" };
@@ -5,8 +5,8 @@ import { test, expect } from "bun:test";
5
5
  import React from "react";
6
6
  import { testRender } from "@opentui/react/test-utils";
7
7
  import { ThreadFooter } from "./ThreadFooter";
8
- import { settle } from "../test-support";
9
- import { DARK } from "../theme";
8
+ import { settle } from "../../testing/test-support";
9
+ import { DARK } from "../../appearance/theme";
10
10
 
11
11
  test("a long branch truncates on one line and keeps the send control in place", async () => {
12
12
  const setup = await testRender(
@@ -4,10 +4,10 @@
4
4
 
5
5
  import React, { useRef } from "react";
6
6
  import type { BoxRenderable } from "@opentui/core";
7
- import { DARK, type Theme } from "../theme";
8
- import { useFrameMeasure } from "../use-frame-measure";
9
- import { truncateTitle } from "./truncate-title";
10
- import { NERD } from "./primitives/icons";
7
+ import { DARK, type Theme } from "../../appearance/theme";
8
+ import { useFrameMeasure } from "../../ui/use-frame-measure";
9
+ import { truncateTitle } from "../../ui/components/truncate-title";
10
+ import { NERD } from "../../ui/components/primitives/icons";
11
11
 
12
12
  export interface ThreadFooterProps {
13
13
  repo: string;
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import { DARK } from "../theme";
3
- import type { Story, StoryMeta } from "./story";
2
+ import { DARK } from "../../appearance/theme";
3
+ import type { Story, StoryMeta } from "../../stories/story";
4
4
  import { ThreadTree } from "./ThreadTree";
5
5
  import { groupInbox } from "./thread-tree";
6
- import { fixtureDiffSession, fixturePlanSession } from "./story-fixtures";
6
+ import { fixtureDiffSession, fixturePlanSession } from "../../stories/story-fixtures";
7
7
 
8
8
  export const meta: StoryMeta = { title: "Surfaces/ThreadTree" };
9
9
 
@@ -9,14 +9,14 @@
9
9
 
10
10
  import React, { useEffect, useRef, useState } from "react";
11
11
  import type { BoxRenderable } from "@opentui/core";
12
- import type { Theme } from "../theme";
13
- import { useComponentTheme } from "./theme-context";
14
- import { useFrameMeasure } from "../use-frame-measure";
15
- import { useRootOverlay } from "./RootOverlay";
16
- import { useMenuControl } from "./menu-control";
17
- import { IconButton } from "./primitives/IconButton";
18
- import { NERD } from "./primitives/icons";
19
- import { truncateTitle } from "./truncate-title";
12
+ import type { Theme } from "../../appearance/theme";
13
+ import { useComponentTheme } from "../../appearance/components/theme-context";
14
+ import { useFrameMeasure } from "../../ui/use-frame-measure";
15
+ import { useRootOverlay } from "../../ui/components/RootOverlay";
16
+ import { useMenuControl } from "../../ui/components/menu-control";
17
+ import { IconButton } from "../../ui/components/primitives/IconButton";
18
+ import { NERD } from "../../ui/components/primitives/icons";
19
+ import { truncateTitle } from "../../ui/components/truncate-title";
20
20
  import { threadTitle, type InboxRow } from "./thread-tree";
21
21
 
22
22
  export interface ThreadTreeProps {