@vibefield/rosetta-room 0.0.0-stage → 0.1.1

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 (435) hide show
  1. package/README.md +247 -2
  2. package/dist/HistoryRoom.d.ts +98 -0
  3. package/dist/HistoryRoom.js +440 -0
  4. package/dist/TranscriptReader.d.ts +22 -0
  5. package/dist/TranscriptReader.js +72 -0
  6. package/dist/components/ColdStart.d.ts +4 -0
  7. package/dist/components/ColdStart.js +5 -0
  8. package/dist/components/FilterChips.d.ts +4 -0
  9. package/dist/components/FilterChips.js +5 -0
  10. package/dist/components/HostAct.d.ts +9 -0
  11. package/dist/components/HostAct.js +16 -0
  12. package/dist/components/HostMenu.d.ts +41 -0
  13. package/dist/components/HostMenu.js +216 -0
  14. package/dist/components/IngestStatus.d.ts +4 -0
  15. package/dist/components/IngestStatus.js +20 -0
  16. package/dist/components/ListActivityNotice.d.ts +5 -0
  17. package/dist/components/ListActivityNotice.js +4 -0
  18. package/dist/components/ListSections.d.ts +20 -0
  19. package/dist/components/ListSections.js +39 -0
  20. package/dist/components/RenameHeading.d.ts +9 -0
  21. package/dist/components/RenameHeading.js +75 -0
  22. package/dist/components/SearchStrip.d.ts +5 -0
  23. package/dist/components/SearchStrip.js +8 -0
  24. package/dist/components/SummaryMetrics.d.ts +13 -0
  25. package/dist/components/SummaryMetrics.js +9 -0
  26. package/dist/components/SummaryPanels.d.ts +35 -0
  27. package/dist/components/SummaryPanels.js +117 -0
  28. package/dist/components/Transcript.d.ts +46 -0
  29. package/dist/components/Transcript.js +358 -0
  30. package/dist/components/charts/ActivityChartDetail.d.ts +13 -0
  31. package/dist/components/charts/ActivityChartDetail.js +78 -0
  32. package/dist/components/charts/CalendarHeatmap.d.ts +16 -0
  33. package/dist/components/charts/CalendarHeatmap.js +55 -0
  34. package/dist/components/charts/DayActivityChart.d.ts +8 -0
  35. package/dist/components/charts/DayActivityChart.js +71 -0
  36. package/dist/components/charts/ModelsChartDetail.d.ts +7 -0
  37. package/dist/components/charts/ModelsChartDetail.js +19 -0
  38. package/dist/components/charts/ProjectChartDialog.d.ts +19 -0
  39. package/dist/components/charts/ProjectChartDialog.js +39 -0
  40. package/dist/components/charts/Streamgraph.d.ts +16 -0
  41. package/dist/components/charts/Streamgraph.js +94 -0
  42. package/dist/components/charts/Treemap.d.ts +26 -0
  43. package/dist/components/charts/Treemap.js +81 -0
  44. package/dist/components/charts/index.d.ts +9 -0
  45. package/dist/components/charts/index.js +4 -0
  46. package/dist/components/charts/streamgraph-layout.d.ts +23 -0
  47. package/dist/components/charts/streamgraph-layout.js +114 -0
  48. package/dist/components/charts/treemap-layout.d.ts +32 -0
  49. package/dist/components/charts/treemap-layout.js +140 -0
  50. package/dist/components/charts/types.d.ts +65 -0
  51. package/dist/components/charts/types.js +8 -0
  52. package/dist/components/file-viewer/FileViewerBrowsers.d.ts +10 -0
  53. package/dist/components/file-viewer/FileViewerBrowsers.js +65 -0
  54. package/dist/components/file-viewer/FileViewerDialog.d.ts +33 -0
  55. package/dist/components/file-viewer/FileViewerDialog.js +82 -0
  56. package/dist/components/file-viewer/FileViewerHeader.d.ts +26 -0
  57. package/dist/components/file-viewer/FileViewerHeader.js +17 -0
  58. package/dist/components/file-viewer/ImageGalleryDialog.d.ts +14 -0
  59. package/dist/components/file-viewer/ImageGalleryDialog.js +98 -0
  60. package/dist/components/file-viewer/diff/index.d.ts +2 -0
  61. package/dist/components/file-viewer/diff/index.js +2 -0
  62. package/dist/components/file-viewer/diff/parse.d.ts +2 -0
  63. package/dist/components/file-viewer/diff/parse.js +164 -0
  64. package/dist/components/file-viewer/diff/types.d.ts +44 -0
  65. package/dist/components/file-viewer/diff/types.js +7 -0
  66. package/dist/components/file-viewer/gallery-source.d.ts +11 -0
  67. package/dist/components/file-viewer/gallery-source.js +75 -0
  68. package/dist/components/file-viewer/image-resource.d.ts +19 -0
  69. package/dist/components/file-viewer/image-resource.js +60 -0
  70. package/dist/components/file-viewer/index.d.ts +5 -0
  71. package/dist/components/file-viewer/index.js +8 -0
  72. package/dist/components/file-viewer/markdown/blocks.d.ts +2 -0
  73. package/dist/components/file-viewer/markdown/blocks.js +277 -0
  74. package/dist/components/file-viewer/markdown/index.d.ts +4 -0
  75. package/dist/components/file-viewer/markdown/index.js +35 -0
  76. package/dist/components/file-viewer/markdown/inline.d.ts +10 -0
  77. package/dist/components/file-viewer/markdown/inline.js +178 -0
  78. package/dist/components/file-viewer/markdown/render.d.ts +9 -0
  79. package/dist/components/file-viewer/markdown/render.js +78 -0
  80. package/dist/components/file-viewer/markdown/types.d.ts +57 -0
  81. package/dist/components/file-viewer/markdown/types.js +11 -0
  82. package/dist/components/file-viewer/minimap/CodeMinimap.d.ts +10 -0
  83. package/dist/components/file-viewer/minimap/CodeMinimap.js +296 -0
  84. package/dist/components/file-viewer/minimap/layout.d.ts +60 -0
  85. package/dist/components/file-viewer/minimap/layout.js +117 -0
  86. package/dist/components/file-viewer/minimap/palette.d.ts +2 -0
  87. package/dist/components/file-viewer/minimap/palette.js +73 -0
  88. package/dist/components/file-viewer/minimap/raster.d.ts +19 -0
  89. package/dist/components/file-viewer/minimap/raster.js +122 -0
  90. package/dist/components/file-viewer/registry.d.ts +25 -0
  91. package/dist/components/file-viewer/registry.js +182 -0
  92. package/dist/components/file-viewer/syntax/grammars.d.ts +16 -0
  93. package/dist/components/file-viewer/syntax/grammars.js +221 -0
  94. package/dist/components/file-viewer/syntax/index.d.ts +8 -0
  95. package/dist/components/file-viewer/syntax/index.js +9 -0
  96. package/dist/components/file-viewer/syntax/languages.d.ts +14 -0
  97. package/dist/components/file-viewer/syntax/languages.js +115 -0
  98. package/dist/components/file-viewer/syntax/tokenize-config.d.ts +2 -0
  99. package/dist/components/file-viewer/syntax/tokenize-config.js +132 -0
  100. package/dist/components/file-viewer/syntax/tokenize-css.d.ts +2 -0
  101. package/dist/components/file-viewer/syntax/tokenize-css.js +169 -0
  102. package/dist/components/file-viewer/syntax/tokenize-markup.d.ts +2 -0
  103. package/dist/components/file-viewer/syntax/tokenize-markup.js +124 -0
  104. package/dist/components/file-viewer/syntax/tokenize.d.ts +9 -0
  105. package/dist/components/file-viewer/syntax/tokenize.js +289 -0
  106. package/dist/components/file-viewer/syntax/types.d.ts +74 -0
  107. package/dist/components/file-viewer/syntax/types.js +13 -0
  108. package/dist/components/file-viewer/types.d.ts +111 -0
  109. package/dist/components/file-viewer/types.js +8 -0
  110. package/dist/components/file-viewer/use-file-content.d.ts +26 -0
  111. package/dist/components/file-viewer/use-file-content.js +144 -0
  112. package/dist/components/file-viewer/views/BinaryView.d.ts +2 -0
  113. package/dist/components/file-viewer/views/BinaryView.js +34 -0
  114. package/dist/components/file-viewer/views/CodeView.d.ts +2 -0
  115. package/dist/components/file-viewer/views/CodeView.js +46 -0
  116. package/dist/components/file-viewer/views/DiffBody.d.ts +7 -0
  117. package/dist/components/file-viewer/views/DiffBody.js +77 -0
  118. package/dist/components/file-viewer/views/DiffView.d.ts +2 -0
  119. package/dist/components/file-viewer/views/DiffView.js +11 -0
  120. package/dist/components/file-viewer/views/ImageView.d.ts +9 -0
  121. package/dist/components/file-viewer/views/ImageView.js +28 -0
  122. package/dist/components/file-viewer/views/MarkdownView.d.ts +9 -0
  123. package/dist/components/file-viewer/views/MarkdownView.js +20 -0
  124. package/dist/components/file-viewer/views/SvgView.d.ts +9 -0
  125. package/dist/components/file-viewer/views/SvgView.js +10 -0
  126. package/dist/components/git/ChangeTree.d.ts +20 -0
  127. package/dist/components/git/ChangeTree.js +35 -0
  128. package/dist/components/git/CommitViewer.d.ts +12 -0
  129. package/dist/components/git/CommitViewer.js +85 -0
  130. package/dist/components/git/GitChanges.d.ts +17 -0
  131. package/dist/components/git/GitChanges.js +70 -0
  132. package/dist/components/git/GitHistory.d.ts +9 -0
  133. package/dist/components/git/GitHistory.js +58 -0
  134. package/dist/components/git/co-author.d.ts +14 -0
  135. package/dist/components/git/co-author.js +55 -0
  136. package/dist/components/git/git-file-source.d.ts +18 -0
  137. package/dist/components/git/git-file-source.js +53 -0
  138. package/dist/components/git/git-host.d.ts +24 -0
  139. package/dist/components/git/git-host.js +130 -0
  140. package/dist/components/git/index.d.ts +10 -0
  141. package/dist/components/git/index.js +12 -0
  142. package/dist/components/git/path-tree.d.ts +23 -0
  143. package/dist/components/git/path-tree.js +73 -0
  144. package/dist/components/git/session-files.d.ts +9 -0
  145. package/dist/components/git/session-files.js +50 -0
  146. package/dist/components/git/types.d.ts +92 -0
  147. package/dist/components/git/types.js +9 -0
  148. package/dist/components/projects/ProjectActivitySparkline.d.ts +6 -0
  149. package/dist/components/projects/ProjectActivitySparkline.js +12 -0
  150. package/dist/components/projects/ProjectList.d.ts +25 -0
  151. package/dist/components/projects/ProjectList.js +43 -0
  152. package/dist/components/projects/ProjectListItem.d.ts +19 -0
  153. package/dist/components/projects/ProjectListItem.js +78 -0
  154. package/dist/components/projects/ProjectsColumn.d.ts +19 -0
  155. package/dist/components/projects/ProjectsColumn.js +36 -0
  156. package/dist/components/projects/index.d.ts +8 -0
  157. package/dist/components/projects/index.js +4 -0
  158. package/dist/components/search/MatchStepper.d.ts +9 -0
  159. package/dist/components/search/MatchStepper.js +14 -0
  160. package/dist/components/search/SearchLauncher.d.ts +12 -0
  161. package/dist/components/search/SearchLauncher.js +13 -0
  162. package/dist/components/search/SearchSheet.d.ts +29 -0
  163. package/dist/components/search/SearchSheet.js +230 -0
  164. package/dist/components/search/index.d.ts +8 -0
  165. package/dist/components/search/index.js +4 -0
  166. package/dist/components/search/shortcut.d.ts +25 -0
  167. package/dist/components/search/shortcut.js +32 -0
  168. package/dist/components/sessions/SessionList.d.ts +24 -0
  169. package/dist/components/sessions/SessionList.js +76 -0
  170. package/dist/components/sessions/SessionListItem.d.ts +13 -0
  171. package/dist/components/sessions/SessionListItem.js +58 -0
  172. package/dist/components/sessions/SessionsColumn.d.ts +26 -0
  173. package/dist/components/sessions/SessionsColumn.js +32 -0
  174. package/dist/components/sessions/index.d.ts +9 -0
  175. package/dist/components/sessions/index.js +4 -0
  176. package/dist/components/sessions/session-display.d.ts +8 -0
  177. package/dist/components/sessions/session-display.js +18 -0
  178. package/dist/components/sessions/types.d.ts +7 -0
  179. package/dist/components/sessions/types.js +1 -0
  180. package/dist/components/transcript/Activity.d.ts +45 -0
  181. package/dist/components/transcript/Activity.js +75 -0
  182. package/dist/components/transcript/Anchor.d.ts +8 -0
  183. package/dist/components/transcript/Anchor.js +23 -0
  184. package/dist/components/transcript/Attachments.d.ts +21 -0
  185. package/dist/components/transcript/Attachments.js +138 -0
  186. package/dist/components/transcript/AuthoredMessage.d.ts +19 -0
  187. package/dist/components/transcript/AuthoredMessage.js +17 -0
  188. package/dist/components/transcript/Compaction.d.ts +9 -0
  189. package/dist/components/transcript/Compaction.js +50 -0
  190. package/dist/components/transcript/DayPill.d.ts +38 -0
  191. package/dist/components/transcript/DayPill.js +68 -0
  192. package/dist/components/transcript/Document.d.ts +32 -0
  193. package/dist/components/transcript/Document.js +503 -0
  194. package/dist/components/transcript/Favicon.d.ts +32 -0
  195. package/dist/components/transcript/Favicon.js +71 -0
  196. package/dist/components/transcript/HeadOfDocument.d.ts +19 -0
  197. package/dist/components/transcript/HeadOfDocument.js +44 -0
  198. package/dist/components/transcript/Ledger.d.ts +53 -0
  199. package/dist/components/transcript/Ledger.js +182 -0
  200. package/dist/components/transcript/LineDetail.d.ts +24 -0
  201. package/dist/components/transcript/LineDetail.js +81 -0
  202. package/dist/components/transcript/Marker.d.ts +33 -0
  203. package/dist/components/transcript/Marker.js +21 -0
  204. package/dist/components/transcript/MessagePreview.d.ts +12 -0
  205. package/dist/components/transcript/MessagePreview.js +58 -0
  206. package/dist/components/transcript/Prompt.d.ts +20 -0
  207. package/dist/components/transcript/Prompt.js +55 -0
  208. package/dist/components/transcript/Prose.d.ts +19 -0
  209. package/dist/components/transcript/Prose.js +109 -0
  210. package/dist/components/transcript/ReceiptPill.d.ts +10 -0
  211. package/dist/components/transcript/ReceiptPill.js +10 -0
  212. package/dist/components/transcript/ResponseHead.d.ts +9 -0
  213. package/dist/components/transcript/ResponseHead.js +36 -0
  214. package/dist/components/transcript/Subthread.d.ts +19 -0
  215. package/dist/components/transcript/Subthread.js +96 -0
  216. package/dist/components/transcript/Team.d.ts +53 -0
  217. package/dist/components/transcript/Team.js +185 -0
  218. package/dist/components/transcript/Thinking.d.ts +24 -0
  219. package/dist/components/transcript/Thinking.js +50 -0
  220. package/dist/components/transcript/TimelineMeta.d.ts +9 -0
  221. package/dist/components/transcript/TimelineMeta.js +161 -0
  222. package/dist/components/transcript/TranscriptLoading.d.ts +10 -0
  223. package/dist/components/transcript/TranscriptLoading.js +10 -0
  224. package/dist/components/transcript/WebDetail.d.ts +8 -0
  225. package/dist/components/transcript/WebDetail.js +29 -0
  226. package/dist/components/transcript/Workflow.d.ts +12 -0
  227. package/dist/components/transcript/Workflow.js +208 -0
  228. package/dist/components/transcript/activity-plan.d.ts +84 -0
  229. package/dist/components/transcript/activity-plan.js +209 -0
  230. package/dist/components/transcript/attachment-file-source.d.ts +23 -0
  231. package/dist/components/transcript/attachment-file-source.js +103 -0
  232. package/dist/components/transcript/attachment-gallery.d.ts +12 -0
  233. package/dist/components/transcript/attachment-gallery.js +33 -0
  234. package/dist/components/transcript/detail-parts.d.ts +50 -0
  235. package/dist/components/transcript/detail-parts.js +295 -0
  236. package/dist/components/transcript/disclosure-state.d.ts +6 -0
  237. package/dist/components/transcript/disclosure-state.js +32 -0
  238. package/dist/components/transcript/disclosure-store.d.ts +8 -0
  239. package/dist/components/transcript/disclosure-store.js +31 -0
  240. package/dist/components/transcript/document-model.d.ts +15 -0
  241. package/dist/components/transcript/document-model.js +104 -0
  242. package/dist/components/transcript/document-plan.d.ts +28 -0
  243. package/dist/components/transcript/document-plan.js +145 -0
  244. package/dist/components/transcript/fold-preference.d.ts +17 -0
  245. package/dist/components/transcript/fold-preference.js +63 -0
  246. package/dist/components/transcript/glyphs.d.ts +15 -0
  247. package/dist/components/transcript/glyphs.js +47 -0
  248. package/dist/components/transcript/index.d.ts +23 -0
  249. package/dist/components/transcript/index.js +22 -0
  250. package/dist/components/transcript/message-file-source.d.ts +15 -0
  251. package/dist/components/transcript/message-file-source.js +31 -0
  252. package/dist/components/transcript/message-preview.d.ts +9 -0
  253. package/dist/components/transcript/message-preview.js +46 -0
  254. package/dist/components/transcript/read-file-source.d.ts +7 -0
  255. package/dist/components/transcript/read-file-source.js +34 -0
  256. package/dist/components/transcript/reader-context.d.ts +13 -0
  257. package/dist/components/transcript/reader-context.js +55 -0
  258. package/dist/components/transcript/reading-identity.d.ts +2 -0
  259. package/dist/components/transcript/reading-identity.js +52 -0
  260. package/dist/components/transcript/scroll-to-row.d.ts +2 -0
  261. package/dist/components/transcript/scroll-to-row.js +13 -0
  262. package/dist/components/transcript/thread-index.d.ts +14 -0
  263. package/dist/components/transcript/thread-index.js +40 -0
  264. package/dist/components/transcript/thread-navigation.d.ts +5 -0
  265. package/dist/components/transcript/thread-navigation.js +3 -0
  266. package/dist/components/transcript/timeline-meta-file-source.d.ts +6 -0
  267. package/dist/components/transcript/timeline-meta-file-source.js +55 -0
  268. package/dist/components/transcript/timeline-meta-state.d.ts +12 -0
  269. package/dist/components/transcript/timeline-meta-state.js +24 -0
  270. package/dist/components/ui/ColumnHeading.d.ts +27 -0
  271. package/dist/components/ui/ColumnHeading.js +7 -0
  272. package/dist/components/ui/ConfirmDialog.d.ts +14 -0
  273. package/dist/components/ui/ConfirmDialog.js +22 -0
  274. package/dist/components/ui/DialogShell.d.ts +18 -0
  275. package/dist/components/ui/DialogShell.js +40 -0
  276. package/dist/components/ui/EmptyState.d.ts +10 -0
  277. package/dist/components/ui/EmptyState.js +6 -0
  278. package/dist/components/ui/ListSummaryHeader.d.ts +9 -0
  279. package/dist/components/ui/ListSummaryHeader.js +6 -0
  280. package/dist/components/ui/ListToolbar.d.ts +6 -0
  281. package/dist/components/ui/ListToolbar.js +5 -0
  282. package/dist/components/ui/ResultGroupHeader.d.ts +9 -0
  283. package/dist/components/ui/ResultGroupHeader.js +5 -0
  284. package/dist/components/ui/SegmentedControl.d.ts +16 -0
  285. package/dist/components/ui/SegmentedControl.js +9 -0
  286. package/dist/components/ui/SummaryMetric.d.ts +13 -0
  287. package/dist/components/ui/SummaryMetric.js +10 -0
  288. package/dist/components/ui/Veil.d.ts +7 -0
  289. package/dist/components/ui/Veil.js +5 -0
  290. package/dist/components/ui/index.d.ts +20 -0
  291. package/dist/components/ui/index.js +10 -0
  292. package/dist/components/worktree/WorktreeColumn.d.ts +22 -0
  293. package/dist/components/worktree/WorktreeColumn.js +170 -0
  294. package/dist/components/worktree/WorktreeFileTree.d.ts +19 -0
  295. package/dist/components/worktree/WorktreeFileTree.js +60 -0
  296. package/dist/components/worktree/WorktreeHeader.d.ts +32 -0
  297. package/dist/components/worktree/WorktreeHeader.js +81 -0
  298. package/dist/components/worktree/WorktreeList.d.ts +8 -0
  299. package/dist/components/worktree/WorktreeList.js +12 -0
  300. package/dist/components/worktree/index.d.ts +12 -0
  301. package/dist/components/worktree/index.js +7 -0
  302. package/dist/components/worktree/types.d.ts +17 -0
  303. package/dist/components/worktree/types.js +3 -0
  304. package/dist/components/worktree/use-worktree-guest.d.ts +21 -0
  305. package/dist/components/worktree/use-worktree-guest.js +92 -0
  306. package/dist/components/worktree/worktree-file-commands.d.ts +19 -0
  307. package/dist/components/worktree/worktree-file-commands.js +112 -0
  308. package/dist/components/worktree/worktree-file-source.d.ts +15 -0
  309. package/dist/components/worktree/worktree-file-source.js +75 -0
  310. package/dist/components/worktree/worktree-host.d.ts +31 -0
  311. package/dist/components/worktree/worktree-host.js +242 -0
  312. package/dist/fixtures/index.d.ts +24 -0
  313. package/dist/fixtures/index.js +292 -0
  314. package/dist/host-inputs.d.ts +231 -0
  315. package/dist/host-inputs.js +35 -0
  316. package/dist/index.d.ts +18 -0
  317. package/dist/index.js +14 -0
  318. package/dist/lib/activity-details.d.ts +23 -0
  319. package/dist/lib/activity-details.js +78 -0
  320. package/dist/lib/activity-order.d.ts +32 -0
  321. package/dist/lib/activity-order.js +86 -0
  322. package/dist/lib/agent-paths.d.ts +6 -0
  323. package/dist/lib/agent-paths.js +19 -0
  324. package/dist/lib/agents.d.ts +15 -0
  325. package/dist/lib/agents.js +60 -0
  326. package/dist/lib/catalog-status.d.ts +3 -0
  327. package/dist/lib/catalog-status.js +10 -0
  328. package/dist/lib/chart-data.d.ts +14 -0
  329. package/dist/lib/chart-data.js +151 -0
  330. package/dist/lib/day-activity.d.ts +21 -0
  331. package/dist/lib/day-activity.js +56 -0
  332. package/dist/lib/format.d.ts +24 -0
  333. package/dist/lib/format.js +116 -0
  334. package/dist/lib/hooks.d.ts +118 -0
  335. package/dist/lib/hooks.js +608 -0
  336. package/dist/lib/icons.d.ts +21 -0
  337. package/dist/lib/icons.js +49 -0
  338. package/dist/lib/image-media.d.ts +6 -0
  339. package/dist/lib/image-media.js +30 -0
  340. package/dist/lib/ingest-activity.d.ts +50 -0
  341. package/dist/lib/ingest-activity.js +151 -0
  342. package/dist/lib/ingest.d.ts +25 -0
  343. package/dist/lib/ingest.js +70 -0
  344. package/dist/lib/model-labels.d.ts +5 -0
  345. package/dist/lib/model-labels.js +28 -0
  346. package/dist/lib/model.d.ts +73 -0
  347. package/dist/lib/model.js +141 -0
  348. package/dist/lib/motion.d.ts +13 -0
  349. package/dist/lib/motion.js +80 -0
  350. package/dist/lib/room-storage.d.ts +13 -0
  351. package/dist/lib/room-storage.js +40 -0
  352. package/dist/lib/search-results.d.ts +27 -0
  353. package/dist/lib/search-results.js +83 -0
  354. package/dist/lib/search-sheet.d.ts +119 -0
  355. package/dist/lib/search-sheet.js +282 -0
  356. package/dist/lib/sections.d.ts +19 -0
  357. package/dist/lib/sections.js +36 -0
  358. package/dist/lib/session-activity.d.ts +5 -0
  359. package/dist/lib/session-activity.js +15 -0
  360. package/dist/lib/session-leases.d.ts +15 -0
  361. package/dist/lib/session-leases.js +61 -0
  362. package/dist/lib/spend.d.ts +42 -0
  363. package/dist/lib/spend.js +112 -0
  364. package/dist/lib/tint.d.ts +9 -0
  365. package/dist/lib/tint.js +53 -0
  366. package/dist/lib/transcript/collaboration.d.ts +97 -0
  367. package/dist/lib/transcript/collaboration.js +423 -0
  368. package/dist/lib/transcript/families.d.ts +212 -0
  369. package/dist/lib/transcript/families.js +906 -0
  370. package/dist/lib/transcript/favicons.d.ts +54 -0
  371. package/dist/lib/transcript/favicons.js +183 -0
  372. package/dist/lib/transcript/head-of-document.d.ts +27 -0
  373. package/dist/lib/transcript/head-of-document.js +274 -0
  374. package/dist/lib/transcript/head-state.d.ts +182 -0
  375. package/dist/lib/transcript/head-state.js +305 -0
  376. package/dist/lib/transcript/history-window.d.ts +13 -0
  377. package/dist/lib/transcript/history-window.js +52 -0
  378. package/dist/lib/transcript/images.d.ts +8 -0
  379. package/dist/lib/transcript/images.js +60 -0
  380. package/dist/lib/transcript/index.d.ts +15 -0
  381. package/dist/lib/transcript/index.js +8 -0
  382. package/dist/lib/transcript/ledger.d.ts +143 -0
  383. package/dist/lib/transcript/ledger.js +513 -0
  384. package/dist/lib/transcript/protocol.d.ts +23 -0
  385. package/dist/lib/transcript/protocol.js +1 -0
  386. package/dist/lib/transcript/sittings.d.ts +75 -0
  387. package/dist/lib/transcript/sittings.js +147 -0
  388. package/dist/lib/transcript/tail-scroll.d.ts +36 -0
  389. package/dist/lib/transcript/tail-scroll.js +167 -0
  390. package/dist/lib/transcript/tail-state.d.ts +17 -0
  391. package/dist/lib/transcript/tail-state.js +30 -0
  392. package/dist/lib/transcript/turns.d.ts +192 -0
  393. package/dist/lib/transcript/turns.js +576 -0
  394. package/dist/lib/transcript/use-transcript-opening.d.ts +12 -0
  395. package/dist/lib/transcript/use-transcript-opening.js +31 -0
  396. package/dist/lib/transcript/use-transcript-tail.d.ts +25 -0
  397. package/dist/lib/transcript/use-transcript-tail.js +158 -0
  398. package/dist/lib/transcript/vocabulary.d.ts +119 -0
  399. package/dist/lib/transcript/vocabulary.js +293 -0
  400. package/dist/lib/transcript/web-address.d.ts +6 -0
  401. package/dist/lib/transcript/web-address.js +18 -0
  402. package/dist/lib/transcript/workflow.d.ts +31 -0
  403. package/dist/lib/transcript/workflow.js +133 -0
  404. package/dist/lib/use-activity-order.d.ts +2 -0
  405. package/dist/lib/use-activity-order.js +23 -0
  406. package/dist/lib/use-day-usage.d.ts +8 -0
  407. package/dist/lib/use-day-usage.js +31 -0
  408. package/dist/lib/use-deferred-list-order.d.ts +26 -0
  409. package/dist/lib/use-deferred-list-order.js +142 -0
  410. package/dist/lib/use-ingest-activity.d.ts +2 -0
  411. package/dist/lib/use-ingest-activity.js +49 -0
  412. package/dist/lib/use-list-motion.d.ts +4 -0
  413. package/dist/lib/use-list-motion.js +67 -0
  414. package/dist/ports.d.ts +222 -0
  415. package/dist/ports.js +3 -0
  416. package/dist/room-context.d.ts +60 -0
  417. package/dist/room-context.js +87 -0
  418. package/dist/styles/activity-chart.css +127 -0
  419. package/dist/styles/attachments.css +29 -0
  420. package/dist/styles/favicon.css +73 -0
  421. package/dist/styles/history-room.css +18 -0
  422. package/dist/styles/host-inputs.css +250 -0
  423. package/dist/styles/image-gallery.css +30 -0
  424. package/dist/styles/ingest.css +51 -0
  425. package/dist/styles/message-preview.css +34 -0
  426. package/dist/styles/models-chart.css +66 -0
  427. package/dist/styles/project-chart.css +19 -0
  428. package/dist/styles/reader.css +33 -0
  429. package/dist/styles/room.css +1411 -0
  430. package/dist/styles/search.css +252 -0
  431. package/dist/styles/transcript-activity.css +70 -0
  432. package/dist/styles/transcript-head.css +220 -0
  433. package/dist/styles/transcript-loading.css +57 -0
  434. package/dist/styles/transcript.css +1226 -0
  435. package/package.json +61 -4
@@ -0,0 +1,250 @@
1
+ /* ═══════════════════════════════════════════════════════════════════════════
2
+ WHAT A HOST ADDS (`RoomHostInputs`). Every rule here dresses an element the
3
+ room draws only when its host hands it something — a mark, a section, an
4
+ act — so a room given nothing (rosetta's app) never matches one. The host's
5
+ own drawings sit inside in the room's faces: ink, sizes, the list's breaks.
6
+ ═══════════════════════════════════════════════════════════════════════ */
7
+
8
+ /* R2 — a project row's marks lead its path line; its second line sits under
9
+ it in the path's quiet ink; the accent spans the extra row. */
10
+ .ah-project-list-item__path[data-marks] { display: flex; align-items: center; gap: 5px; }
11
+ .ah-project-list-item__marks {
12
+ flex: none; display: inline-flex; align-items: center; gap: 3px;
13
+ color: var(--vf-text-tertiary); line-height: 0;
14
+ }
15
+ .ah-project-list-item__marks svg { width: 11px; height: 11px; }
16
+ .ah-project-list-item__line {
17
+ grid-column: 2; min-width: 0; margin-top: 2px;
18
+ color: var(--vf-text-tertiary); font-size: 10px; line-height: 1.4;
19
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
20
+ }
21
+ .ah-project-list-item[data-line] .ah-project-list-item__accent { grid-row: 1 / span 4; }
22
+
23
+ /* R3 — a section's head is the list's own break (`.ah-day`); a foot section
24
+ folds into one line of the same face, its act at the end. */
25
+ .ah-scroll > .ah-section:first-child { margin-top: 0; }
26
+ .ah-fold {
27
+ display: flex; align-items: center; gap: 6px; width: 100%;
28
+ margin-top: 6px; padding: 9px 10px; border: 0; border-radius: 10px;
29
+ background: transparent; color: var(--vf-text-faint); text-align: left;
30
+ transition: background-color 160ms ease, color 160ms ease;
31
+ }
32
+ .ah-fold:hover { background: var(--vf-fill); color: var(--vf-text-tertiary); }
33
+ .ah-fold:focus-visible { outline: 2px solid var(--vf-select); outline-offset: -2px; }
34
+ .ah-fold__label {
35
+ font-size: 9.5px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.08em;
36
+ }
37
+ .ah-fold__count { font-size: 9.5px; font-variant-numeric: tabular-nums; }
38
+ .ah-fold__act { margin-left: auto; color: var(--vf-text-secondary); font-size: 10.5px; }
39
+ .ah-fold:hover .ah-fold__act { color: var(--vf-text-primary); }
40
+
41
+ /* R4 — a session row's id slot holds the host's mark and folder in the id's
42
+ own face; its end holds the host's act (or the reason) before the time. */
43
+ .ah-session-list-item__native-id[data-host] { overflow: hidden; }
44
+ .ah-session-list-item__native-id[data-host] svg { flex: none; width: 11px; height: 11px; }
45
+ .ah-session-list-item__end { flex: none; display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
46
+ .ah-session-list-item__reason {
47
+ color: var(--vf-text-faint); font-size: 9.5px; white-space: nowrap;
48
+ }
49
+ /* With an act the row is a box: one button covers it (the selection), the
50
+ drawing passes the pointer through to it, and the act sits above. */
51
+ .ah-session-list-item[data-host-act] { position: relative; }
52
+ .ah-session-list-item[data-host-act] > :not(.ah-session-list-item__hit) { pointer-events: none; }
53
+ .ah-session-list-item__hit {
54
+ position: absolute; inset: 0; z-index: 0; padding: 0; border: 0; border-radius: inherit;
55
+ background: transparent; cursor: pointer;
56
+ }
57
+ .ah-session-list-item__hit:focus-visible { outline: 2px solid var(--vf-select); outline-offset: -2px; }
58
+ .ah-session-list-item[data-host-act] > :not(.ah-session-list-item__hit) { position: relative; z-index: 1; }
59
+ /* H4 — a ledger row with an act is the same box: one covering button, the
60
+ drawing passing the pointer to it, the act (and its rows) above. */
61
+ .ah-project-list-item[data-host-act] > :not(.ah-project-list-item__hit) { pointer-events: none; }
62
+ .ah-project-list-item > .ah-project-list-item__hit {
63
+ position: absolute; inset: 0; z-index: 0; padding: 0; border: 0; border-radius: inherit;
64
+ background: transparent; cursor: pointer;
65
+ }
66
+ .ah-project-list-item__hit:focus-visible { outline: 2px solid var(--vf-select); outline-offset: -2px; }
67
+ .ah-project-list-item__end { flex: none; display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
68
+ /* the act: quiet at rest, a 20px pill under the pointer */
69
+ .ah-hostact[data-place="row"] {
70
+ pointer-events: auto;
71
+ display: inline-flex; align-items: center; gap: 4px; height: 20px; margin: -3px 0; padding: 0 7px;
72
+ border: 0; border-radius: 999px; background: transparent;
73
+ color: var(--vf-text-tertiary); font-size: 10px; font-weight: 500; white-space: nowrap;
74
+ transition: background-color 140ms ease, color 140ms ease;
75
+ }
76
+ .ah-hostact[data-place="row"]:hover,
77
+ .ah-hostact[data-place="row"][aria-expanded="true"] { background: var(--vf-fill-hover); color: var(--vf-text-primary); }
78
+ .ah-hostact[data-place="row"]:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 1px; }
79
+ .ah-hostact[data-place="row"]:disabled { opacity: 0.5; cursor: default; }
80
+ .ah-hostact[data-place="row"] svg { flex: none; width: 12px; height: 12px; }
81
+
82
+ /* R5 — the heads. ②'s acts are the head's own icon buttons; its one primary
83
+ stands on the go fill (the confirm's). ④'s acts are pills, the stepper's
84
+ shape; a reason is the range's quiet caption. A card sits under ②'s head. */
85
+ .ah-iconbtn.ah-hostact[data-primary] { background: var(--vf-foreground); color: var(--vf-canvas-bg); }
86
+ .ah-iconbtn.ah-hostact[data-primary]:hover { background: var(--vf-foreground); color: var(--vf-canvas-bg); opacity: 0.9; }
87
+ .ah-iconbtn.ah-hostact[aria-expanded="true"]:not([data-primary]) { background: var(--vf-fill-hover); color: var(--vf-text-primary); }
88
+ .ah-iconbtn.ah-hostact:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 2px; }
89
+ .ah-iconbtn.ah-hostact:disabled { opacity: 0.45; cursor: default; }
90
+ .ah-hostact[data-place="pill"] {
91
+ display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 10px; flex: none;
92
+ border: 0; border-radius: 999px; background: var(--vf-fill);
93
+ color: var(--vf-text-secondary); font-size: 10.5px; font-weight: 500; white-space: nowrap;
94
+ transition: background-color 140ms ease, color 140ms ease;
95
+ }
96
+ .ah-hostact[data-place="pill"]:hover,
97
+ .ah-hostact[data-place="pill"][aria-expanded="true"] { background: var(--vf-fill-hover); color: var(--vf-text-primary); }
98
+ .ah-hostact[data-place="pill"]:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 2px; }
99
+ .ah-hostact[data-place="pill"]:disabled { opacity: 0.5; cursor: default; }
100
+ .ah-hostact[data-place="pill"] svg { flex: none; width: 12px; height: 12px; }
101
+ .ah-headreason { color: var(--vf-text-tertiary); }
102
+ .ah-hostcard { flex: none; margin: 10px 12px 2px; min-width: 0; }
103
+
104
+ /* The host's rows (`RoomMenu`): the room's popover, the session-work index's
105
+ material and rows, hung from the control that opens them. */
106
+ .ah-menuhost { position: relative; display: inline-flex; flex: none; min-width: 0; }
107
+ .ah-menu {
108
+ position: absolute; top: calc(100% + 6px); z-index: 30;
109
+ width: max-content; min-width: 220px; max-width: min(300px, calc(100vw - 32px));
110
+ overflow: hidden; border-radius: 12px; background: var(--vf-chrome-surface);
111
+ backdrop-filter: blur(24px);
112
+ box-shadow: var(--vf-shadow-island), 0 0 0 1px var(--vf-hairline-strong);
113
+ color: var(--vf-text-primary); text-align: left;
114
+ animation: tr-meta-in 180ms var(--vf-ease-pop);
115
+ }
116
+ /* Outside a room the rows hang from their control; inside one they are drawn
117
+ in the room's root, over every column, where the room places them. */
118
+ .ah-menu:not([data-layer])[data-align="start"] { left: 0; transform-origin: top left; }
119
+ .ah-menu:not([data-layer])[data-align="end"] { right: 0; transform-origin: top right; }
120
+ .ah-menu[data-layer] { top: 0; left: 0; z-index: 40; display: flex; flex-direction: column; }
121
+ .ah-menu[data-layer][data-align="start"] { transform-origin: top left; }
122
+ .ah-menu[data-layer][data-align="end"] { transform-origin: top right; }
123
+ .ah-menu[data-layer][data-side="above"][data-align="start"] { transform-origin: bottom left; }
124
+ .ah-menu[data-layer][data-side="above"][data-align="end"] { transform-origin: bottom right; }
125
+ .ah-menu[data-layer] .ah-menu__filter { flex: none; }
126
+ .ah-menu[data-layer] .ah-menu__list { flex: 0 1 auto; min-height: 0; }
127
+ .ah-menu__filter {
128
+ display: block; width: calc(100% - 14px); height: 28px; margin: 7px 7px 0; padding: 0 10px;
129
+ border: 0; border-radius: 8px; outline: none; background: var(--vf-fill);
130
+ color: var(--vf-text-primary); font-size: 11.5px;
131
+ }
132
+ .ah-menu__filter:focus-visible { box-shadow: inset 0 0 0 1.5px var(--vf-select); }
133
+ .ah-menu__list { max-height: min(360px, 60vh); overflow-y: auto; padding: 5px; scrollbar-width: thin; }
134
+ .ah-menu__list:focus { outline: none; }
135
+ .ah-menu__group + .ah-menu__group { margin-top: 4px; padding-top: 4px; border-top: 1px solid var(--vf-hairline); }
136
+ .ah-menu__title {
137
+ display: flex; align-items: center; gap: 6px; padding: 6px 8px 4px;
138
+ color: var(--vf-text-faint); font-size: 9.5px; font-weight: 500;
139
+ text-transform: uppercase; letter-spacing: 0.07em;
140
+ }
141
+ .ah-menu__title svg { width: 11px; height: 11px; }
142
+ .ah-menu__item {
143
+ display: flex; align-items: center; gap: 8px; width: 100%; min-height: 30px; padding: 5px 8px;
144
+ border: 0; border-radius: 7px; background: none; color: var(--vf-text-secondary);
145
+ font-size: 11.5px; text-align: left; transition: background-color 120ms ease;
146
+ }
147
+ .ah-menu__item[data-depth="1"] { padding-left: 26px; }
148
+ /* The ring is a key's, never a pointer's: a row a pointer opened onto is
149
+ focused without one. */
150
+ .ah-menu__item:focus, .ah-menu__act:focus { outline: none; }
151
+ .ah-menu__item:hover { background: var(--vf-fill); }
152
+ .ah-menu__item:focus-visible { background: var(--vf-fill); box-shadow: inset 0 0 0 1.5px var(--vf-select); }
153
+ .ah-menu__item:disabled { opacity: 0.55; cursor: default; }
154
+ .ah-menu__item:disabled:hover { background: none; }
155
+ .ah-menu__check { flex: none; display: inline-flex; width: 14px; height: 14px; color: var(--vf-text-primary); }
156
+ .ah-menu__check svg { width: 14px; height: 14px; }
157
+ .ah-menu__mark { flex: none; display: inline-flex; color: var(--vf-text-tertiary); }
158
+ .ah-menu__mark svg { width: 13px; height: 13px; }
159
+ .ah-menu__body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
160
+ .ah-menu__label {
161
+ color: var(--vf-text-primary); font-weight: 500;
162
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
163
+ }
164
+ .ah-menu__detail {
165
+ margin-top: 1px; color: var(--vf-text-tertiary); font-size: 10.5px;
166
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
167
+ }
168
+ .ah-menu__aside { flex: none; color: var(--vf-text-faint); font-size: 10px; font-variant-numeric: tabular-nums; }
169
+ /* A row with its own act (a folder's "Not part of this project"): the row
170
+ and its act side by side, the act quiet until the row is under the pointer. */
171
+ .ah-menu__row { display: flex; align-items: center; gap: 2px; }
172
+ .ah-menu__row > .ah-menu__item { flex: 1; min-width: 0; }
173
+ .ah-menu__act {
174
+ flex: none; display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 8px;
175
+ border: 0; border-radius: 7px; background: transparent;
176
+ color: var(--vf-text-faint); font-size: 10.5px; white-space: nowrap;
177
+ transition: background-color 120ms ease, color 120ms ease;
178
+ }
179
+ .ah-menu__row:hover > .ah-menu__act { color: var(--vf-text-tertiary); }
180
+ .ah-menu__act:hover { background: var(--vf-fill-hover); color: var(--vf-text-primary); }
181
+ .ah-menu__act:focus-visible { box-shadow: inset 0 0 0 1.5px var(--vf-select); color: var(--vf-text-primary); }
182
+ .ah-menu__act:disabled { opacity: 0.5; cursor: default; }
183
+ .ah-menu__act svg { width: 12px; height: 12px; }
184
+ .ah-menu__empty { margin: 0; padding: 18px 12px; color: var(--vf-text-faint); font-size: 11px; text-align: center; }
185
+
186
+ /* R6 — ③'s head as the folder list: the column head's marker, the folder's
187
+ mark and name (an id, in mono), the count, and a caret — one button. A
188
+ folder the host marks elsewhere puts the host's honest state where the
189
+ worktree would be. */
190
+ .ah-col > header > .ah-menuhost { flex: 0 1 auto; min-width: 0; }
191
+ .ah-folderpick {
192
+ display: flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%;
193
+ height: 30px; margin: 0 -6px; padding: 0 6px; border: 0; border-radius: 8px;
194
+ background: transparent; color: var(--vf-text-primary);
195
+ transition: background-color 140ms ease;
196
+ }
197
+ .ah-folderpick:hover, .ah-folderpick[aria-expanded="true"] { background: var(--vf-fill); }
198
+ .ah-folderpick:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 0; }
199
+ .ah-folderpick > i { flex: none; width: 3px; height: 14px; border-radius: 999px; background: var(--tint); }
200
+ .ah-folderpick__mark { flex: none; display: inline-flex; color: var(--vf-text-secondary); }
201
+ .ah-folderpick__mark svg { width: 12px; height: 12px; }
202
+ .ah-folderpick > strong {
203
+ min-width: 0; font-family: var(--vf-font-mono); font-size: 11px; font-weight: 500; letter-spacing: -0.01em;
204
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
205
+ }
206
+ .ah-folderpick > svg { flex: none; width: 11px; height: 11px; color: var(--vf-text-tertiary); }
207
+ .ah-elsewhere {
208
+ flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
209
+ gap: 6px; padding: 24px 20px; color: var(--vf-text-tertiary); font-size: 12px; line-height: 1.5; text-align: center;
210
+ }
211
+
212
+ /* R7 — a host's chips: the room's chip pill as a button that opens rows,
213
+ leading the list's bar (the rank switch keeps the end). */
214
+ .ah-chips { display: flex; align-items: center; gap: 6px; min-width: 0; }
215
+ .ah-chips > .ah-menuhost { flex: 0 1 auto; min-width: 0; }
216
+ .ah-chip { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; min-width: 0; }
217
+ .ah-chip[aria-expanded="true"] { background-color: var(--vf-fill-hover); color: var(--vf-text-primary); }
218
+ .ah-chip__label {
219
+ display: inline-flex; align-items: center; gap: 5px; min-width: 0;
220
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
221
+ }
222
+ .ah-chip__label svg { flex: none; width: 11px; height: 11px; }
223
+
224
+ /* H4 — ②'s name as its rename: the head's own name, a control on press; the
225
+ field takes the name's face; a refusal stands where the count was. */
226
+ .ah-colhead > .ah-rename {
227
+ min-width: 0; max-width: 100%; margin: 0 -4px; padding: 2px 4px; border: 0; border-radius: 6px;
228
+ background: transparent; color: var(--vf-text-primary); font-size: 11.5px; font-weight: 500;
229
+ text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: text;
230
+ }
231
+ .ah-colhead > .ah-rename:hover { background: var(--vf-fill); }
232
+ .ah-colhead > .ah-rename:focus { outline: none; }
233
+ .ah-colhead > .ah-rename:focus-visible { box-shadow: inset 0 0 0 1.5px var(--vf-select); }
234
+ .ah-rename__field {
235
+ flex: 1; min-width: 60px; height: 24px; margin: 0 -4px; padding: 0 6px;
236
+ border: 0; border-radius: 6px; outline: none;
237
+ background: var(--vf-fill); color: var(--vf-text-primary); font-size: 11.5px; font-weight: 500;
238
+ box-shadow: inset 0 0 0 1.5px var(--vf-select);
239
+ }
240
+ .ah-rename__field[aria-invalid="true"] { box-shadow: inset 0 0 0 1.5px var(--vf-red); }
241
+ .ah-rename__field[aria-busy="true"] { opacity: 0.6; }
242
+ /* editing, the head's name takes the band; a refusal hangs under it, whole,
243
+ over the panel beneath — the band has no room for a sentence beside six acts */
244
+ .ah-colhead[data-rename="editing"], .ah-colhead[data-rename="saving"] { position: relative; flex: 1; }
245
+ .ah-rename__failure {
246
+ position: absolute; top: calc(100% + 6px); left: 7px; z-index: 6;
247
+ width: max-content; max-width: 270px; padding: 6px 9px; border-radius: 8px;
248
+ background: var(--vf-chrome-solid); box-shadow: var(--vf-shadow-island), 0 0 0 1px var(--vf-hairline-strong);
249
+ color: var(--vf-red); font-size: 10.5px; line-height: 1.4; white-space: normal;
250
+ }
@@ -0,0 +1,30 @@
1
+ .ah-fileview__body[data-gallery] { position: relative; }
2
+ .ah-fileview__body[data-gallery] .ah-image__frame { padding-inline: 54px; }
3
+ .ah-image-gallery { flex: none; min-width: 0; padding: 10px 18px 14px; border-top: 1px solid var(--vf-hairline); }
4
+ .ah-image-gallery__caption { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; color: var(--vf-text-tertiary); font-size: 10px; font-variant-numeric: tabular-nums; }
5
+ .ah-image-gallery__rail { display: flex; gap: 8px; overflow-x: auto; overscroll-behavior-x: contain; padding: 4px; margin: -4px; scrollbar-width: thin; }
6
+ .ah-image-gallery__thumb { flex: none; width: 64px; height: 64px; padding: 3px; display: grid; place-items: center; border: 1px solid var(--vf-hairline); border-radius: 9px; background: var(--vf-fill); color: var(--vf-text-tertiary); cursor: pointer; }
7
+ .ah-image-gallery__thumb:first-child { margin-left: auto; }
8
+ .ah-image-gallery__thumb:last-child { margin-right: auto; }
9
+ .ah-image-gallery__thumb img { display: block; width: 100%; height: 100%; min-height: 0; object-fit: contain; border-radius: 5px; }
10
+ .ah-image-gallery__thumb:hover { background: var(--vf-fill-hover); }
11
+ .ah-image-gallery__thumb[aria-current] { border-color: var(--vf-select); box-shadow: 0 0 0 1px var(--vf-select); background: var(--vf-fill-hover); }
12
+ .ah-image-gallery__thumb:disabled { opacity: .45; border-style: dashed; cursor: default; }
13
+ .ah-image-gallery__step { position: absolute; top: calc(50% - 18px); display: grid; place-items: center; width: 36px; height: 36px; padding: 0 0 2px; border: 1px solid var(--vf-hairline-strong); border-radius: 50%; background: var(--vf-chrome-solid); color: var(--vf-text-secondary); box-shadow: var(--vf-shadow-island); font: 26px/1 var(--vf-font-sans); cursor: pointer; }
14
+ .ah-image-gallery__step--previous { left: 10px; }
15
+ .ah-image-gallery__step--next { right: 10px; }
16
+ .ah-image-gallery__step[aria-disabled="true"] { opacity: .3; cursor: default; box-shadow: none; }
17
+ .ah-image-gallery__step:not([aria-disabled="true"]):hover { background: var(--vf-fill-hover); }
18
+ .ah-image-gallery__thumb:focus-visible, .ah-image-gallery__step:focus-visible, .ah-fileview__retry:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 3px; }
19
+ .ah-fileview__retry { margin-top: 10px; padding: 6px 12px; border: 0; border-radius: 6px; background: var(--vf-fill); color: var(--vf-text-secondary); font: inherit; cursor: pointer; }
20
+ @media (max-width: 600px) {
21
+ .ah-image-gallery { padding: 8px 12px 10px; }
22
+ .ah-image-gallery__thumb { width: 52px; height: 52px; }
23
+ .ah-image-gallery__step { width: 30px; height: 30px; top: calc(50% - 15px); }
24
+ .ah-image-gallery__step--previous { left: 6px; }
25
+ .ah-image-gallery__step--next { right: 6px; }
26
+ .ah-fileview__body[data-gallery] .ah-image__frame { padding-inline: 42px; }
27
+ .ah-fileview:has(.ah-image-gallery) .ah-fileview__head { grid-template-columns: minmax(0, 1fr); gap: 8px; }
28
+ .ah-fileview:has(.ah-image-gallery) .ah-fileview__acts { grid-column: 1; grid-row: 2; justify-content: flex-end; }
29
+ .ah-fileview:has(.ah-image-gallery) .ah-fileview__path { grid-row: 3; }
30
+ }
@@ -0,0 +1,51 @@
1
+ /* Progress describes its named step and never covers available content. */
2
+ .ah-ingest-status {
3
+ flex: 0 0 auto; margin: 10px 10px 2px; padding: 13px 14px 8px; min-width: 0;
4
+ border: 1px solid var(--vf-hairline-strong); border-radius: 11px;
5
+ background: var(--vf-chrome-surface); color: var(--vf-text-primary);
6
+ font-size: 11px; text-align: left; font-variant-numeric: tabular-nums;
7
+ }
8
+ .ah-ingest-status__eyebrow { display: flex; justify-content: space-between; align-items: center; gap: 8px; color: var(--vf-text-secondary); font-size: 9px; font-weight: 600; letter-spacing: .045em; }
9
+ .ah-ingest-status h3 { margin: 7px 0 5px; font-size: 13px; line-height: 1.4; font-weight: 600; letter-spacing: -.015em; }
10
+ .ah-ingest-status .ah-ingest-status__detail { margin: 0 0 13px; color: var(--vf-text-secondary); font-size: 11px; line-height: 1.5; }
11
+ .ah-ingest-status__amount { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 7px; line-height: 1.4; }
12
+ .ah-ingest-status__amount b { font-size: 11px; font-weight: 500; }
13
+ .ah-ingest-meter { overflow: hidden; height: 4px; border-radius: 4px; background: var(--vf-hairline-strong); }
14
+ .ah-ingest-meter i { display: block; height: 100%; border-radius: inherit; background: var(--vf-select); transition: width 450ms linear; }
15
+ .ah-ingest-meter[data-indeterminate] i { width: 34%; animation: ah-ingest-travel 1.8s ease-in-out infinite; }
16
+ .ah-ingest-meter[data-paused] i { animation: none; transition: none; }
17
+ .ah-ingest-status__footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 3px 8px; color: var(--vf-text-secondary); margin: 8px 0 4px; font-size: 10px; line-height: 1.5; }
18
+ .ah-ingest-status__footer > span:last-child { white-space: nowrap; }
19
+ .ah-ingest-status__agents { border-top: 1px solid var(--vf-hairline); margin-top: 8px; }
20
+ .ah-ingest-status__agents summary { list-style: none; cursor: pointer; min-height: 30px; display: flex; align-items: center; justify-content: space-between; color: var(--vf-text-secondary); font-size: 10px; border-radius: 4px; }
21
+ .ah-ingest-status__agents summary::-webkit-details-marker { display: none; }
22
+ .ah-ingest-status__agents summary:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 2px; }
23
+ .ah-ingest-status__agents summary > span { font-size: 14px; transition: transform 160ms ease; }
24
+ .ah-ingest-status__agents[open] summary > span { transform: rotate(180deg); }
25
+ .ah-ingest-status__agents ul { max-height: 195px; overflow-y: auto; list-style: none; padding: 0 4px 2px 0; margin: 2px 0 0; scrollbar-width: thin; }
26
+ .ah-ingest-status__agents li { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 9px; padding: 7px 0; }
27
+ .ah-ingest-status__agents li > .ah-agent { margin-top: 2px; opacity: .8; }
28
+ .ah-ingest-status__agent-name { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
29
+ .ah-ingest-status__agent-name strong { font-size: 11px; font-weight: 500; }
30
+ .ah-ingest-status__agent-name > span { color: var(--vf-text-secondary); }
31
+ .ah-ingest-status__agent-caption { display: block; font-size: 10px; line-height: 1.5; color: var(--vf-text-secondary); margin: 2px 0 5px; }
32
+ .ah-ingest-status__agents .ah-ingest-meter { height: 3px; }
33
+ .ah-ingest-status[data-state="complete"] .ah-ingest-status__eyebrow { color: var(--vf-text-primary); }
34
+ .ah-ingest-status[data-state="complete"] .ah-ingest-meter i { background: var(--vf-green); }
35
+ .ah-ingest-status[data-state="disconnected"] .ah-ingest-meter i,
36
+ .ah-ingest-status[data-state="search_failed"] .ah-ingest-meter i { background: var(--vf-orange); }
37
+ .ah-cold-start { flex: 1; }
38
+ .ah-cold-start > .ah-ingest-status { width: min(100%, 340px); box-sizing: border-box; margin: 22px auto 0; padding: 18px 20px 10px; }
39
+ .ah-cold-start .ah-ingest-status h3 { font-size: 15px; }
40
+ .ah-project-list-item__progress { grid-column: 2; color: var(--vf-text-secondary); font-size: 10px; line-height: 1.4; margin-top: 5px; font-variant-numeric: tabular-nums; }
41
+ .ah-project-list-item[data-cooking] .ah-project-list-item__metrics { animation: none; }
42
+ .ah-project-list-item__metrics[data-cooking]::after { display: none; }
43
+ .ah-project-list-item[data-cooking]:not([data-fill]) .ah-project-list-item__accent { animation: none; opacity: .3; }
44
+ @keyframes ah-ingest-travel { 0% { transform: translateX(-110%); } 100% { transform: translateX(310%); } }
45
+ @media (prefers-reduced-motion: reduce) {
46
+ .ah-ingest-meter i, .ah-ingest-status__agents summary > span { animation: none; transition: none; }
47
+ .ah-ingest-meter[data-indeterminate] i { width: 100%; opacity: .35; animation: none; }
48
+ .ah-project-list-item__accent { animation: none !important; transition: none !important; }
49
+ }
50
+
51
+ .ah-ingest-note { flex: 0 0 auto; margin: 0; padding: 9px 14px; color: var(--vf-text-secondary); font-size: 11px; line-height: 1.5; }
@@ -0,0 +1,34 @@
1
+ /* Long messages fade into their reading action, on the prompt/reply material. */
2
+ .tr-message { position: relative; min-width: 0; }
3
+ .tr-message__viewport { max-height: 21.7em; overflow: clip; }
4
+ .tr-message__content { display: flow-root; }
5
+ .tr-message__content > :first-child { margin-top: 0; }
6
+ .tr-message__content > :last-child { margin-bottom: 0; }
7
+ .tr-message[data-omitted] .tr-message__viewport {
8
+ min-height: 5em;
9
+ mask-image: linear-gradient(to bottom, #000 35%, #0008 60%, transparent calc(100% - 32px));
10
+ }
11
+ .tr-message[data-omitted] .tr-message__viewport:focus-within { mask-image: none; }
12
+ .tr-message__footer {
13
+ position: absolute; inset: auto 0 0;
14
+ display: flex; align-items: center; justify-content: center;
15
+ min-height: 44px; pointer-events: none;
16
+ font-size: 12px; line-height: 1.5;
17
+ }
18
+ .tr-message__open {
19
+ display: inline-flex; align-items: center; justify-content: center;
20
+ max-width: 100%; padding: 7px 12px; pointer-events: auto;
21
+ border: 0; border-radius: 999px; background: none;
22
+ color: var(--vf-text-secondary); font: inherit; font-weight: 500;
23
+ cursor: pointer; transition: color 120ms ease, background-color 120ms ease;
24
+ }
25
+ .tr-message__open:hover {
26
+ color: var(--vf-text-primary); background: var(--vf-fill-hover);
27
+ }
28
+ .tr-message__open:focus-visible {
29
+ outline: 2px solid var(--vf-select); outline-offset: 2px;
30
+ color: var(--vf-text-primary);
31
+ }
32
+ @media (prefers-reduced-motion: reduce) {
33
+ .tr-message__open { transition: none; }
34
+ }
@@ -0,0 +1,66 @@
1
+ .ah-models {
2
+ flex: 1; min-height: 0; display: flex; flex-direction: column;
3
+ overflow: auto; padding: 24px 28px; color: var(--vf-text-primary);
4
+ }
5
+ .ah-models__loading { flex: 1; display: grid; place-items: center; margin: 0; color: var(--vf-text-tertiary); font-size: 12px; }
6
+ .ah-models .ah-chart-header { flex: none; flex-wrap: wrap; gap: 6px 16px; margin-bottom: 20px; }
7
+ .ah-models .ah-chart-header__title { color: var(--vf-text-secondary); font-size: 14px; }
8
+ .ah-models .ah-chart-header__note { color: var(--vf-text-tertiary); font-size: 11px; }
9
+ .ah-models .ah-streamgraph__plot { position: relative; margin: 12px 0 20px; }
10
+ .ah-models .ah-streamgraph__plot svg { overflow: visible; cursor: crosshair; }
11
+ .ah-models .ah-streamgraph__plot svg:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 6px; border-radius: 2px; }
12
+ .ah-models .ah-streamgraph__plot [data-streamgraph-layer] { opacity: .75; }
13
+ .dark .ah-models .ah-streamgraph__plot [data-streamgraph-layer] { opacity: 1; }
14
+ .ah-models .ah-streamgraph__glow { opacity: calc(.16 * var(--series-glow-strength, 1)); filter: blur(3px); pointer-events: none; }
15
+ .dark .ah-models .ah-streamgraph__glow { opacity: calc(.35 * var(--series-glow-strength, 1)); }
16
+ .ah-models .ah-streamgraph__outline { opacity: .7; pointer-events: none; }
17
+ .ah-models .ah-streamgraph__glow, .ah-models .ah-streamgraph__outline { stroke-linejoin: round; }
18
+ .ah-models .ah-streamgraph__axis { flex: none; height: 16px; margin-top: 0; font-size: 11px; color: var(--vf-text-tertiary); }
19
+ .ah-models .ah-streamgraph__legend {
20
+ flex: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(148px, 100%), 1fr));
21
+ gap: 8px 16px; max-height: 128px; overflow: auto; margin-top: 24px;
22
+ }
23
+ .ah-models .ah-streamgraph__legend > span { gap: 7px; min-width: 0; font-size: 11px; line-height: 16px; color: var(--vf-text-secondary); }
24
+ .ah-models .ah-streamgraph__legend:focus-visible { outline: 2px solid var(--vf-select); outline-offset: 4px; border-radius: 2px; }
25
+ .ah-streamgraph__legend em { font-style: normal; }
26
+ .ah-models .ah-streamgraph__legend em { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
27
+ .ah-models .ah-streamgraph__legend i { width: 8px; height: 8px; }
28
+ .ah-models .ah-streamgraph__legend b { flex: none; color: var(--vf-text-primary); }
29
+ .ah-models .ah-streamgraph__empty { height: 100%; display: grid; place-items: center; font-size: 12px; }
30
+ .ah-streamgraph__crosshair { stroke: var(--vf-text-secondary); stroke-width: 1; stroke-dasharray: 4 4; pointer-events: none; }
31
+ .ah-streamgraph__point {
32
+ position: absolute; width: 8px; height: 8px; box-sizing: border-box;
33
+ border: 2px solid var(--series-color); border-radius: 50%; background: var(--vf-chrome-solid);
34
+ box-shadow: 0 0 8px color-mix(in srgb, var(--series-color) 45%, transparent);
35
+ transform: translate(-50%, -50%); pointer-events: none;
36
+ }
37
+ .ah-streamgraph__readout {
38
+ --readout-width: min(244px, calc(100% - 16px));
39
+ position: absolute; z-index: 1; top: 8px; width: var(--readout-width); box-sizing: border-box;
40
+ display: flex; flex-direction: column;
41
+ left: clamp(8px, calc(var(--inspect-x) + 14px), calc(100% - var(--readout-width) - 8px));
42
+ padding: 12px; border: 1px solid var(--vf-hairline); border-radius: 10px;
43
+ max-height: calc(100% - 16px); overflow: hidden;
44
+ background: var(--vf-chrome-solid); box-shadow: var(--vf-shadow-island); pointer-events: auto;
45
+ }
46
+ .ah-streamgraph__readout[data-side="left"] {
47
+ left: clamp(8px, calc(var(--inspect-x) - var(--readout-width) - 14px), calc(100% - var(--readout-width) - 8px));
48
+ }
49
+ .ah-streamgraph__readout-head { flex: none; display: flex; flex-direction: column; gap: 5px; padding-bottom: 10px; border-bottom: 1px solid var(--vf-hairline); }
50
+ .ah-streamgraph__readout-head > strong { font-size: 12px; font-weight: 550; color: var(--vf-text-primary); }
51
+ .ah-streamgraph__readout-head > span { font-size: 11px; color: var(--vf-text-tertiary); }
52
+ .ah-streamgraph__readout-head b { margin-left: 3px; color: var(--vf-text-primary); font-weight: 550; }
53
+ .ah-streamgraph__readout-rows { min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 10px; padding-top: 12px; }
54
+ .ah-streamgraph__readout-rows > div { display: grid; grid-template-columns: minmax(0, 1fr) auto 40px; align-items: center; gap: 10px; font-size: 11px; }
55
+ .ah-streamgraph__readout-model { display: flex; align-items: center; gap: 6px; min-width: 0; overflow-wrap: anywhere; color: var(--vf-text-secondary); }
56
+ .ah-streamgraph__readout-model i { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--series-color); }
57
+ .ah-streamgraph__readout-rows b { color: var(--vf-text-primary); font-weight: 500; }
58
+ .ah-streamgraph__readout-rows small { text-align: right; font-size: 10px; color: var(--vf-text-tertiary); }
59
+ .ah-streamgraph__readout b, .ah-streamgraph__readout small { font-variant-numeric: tabular-nums; }
60
+ .ah-streamgraph__readout > p { flex: none; margin: 10px 0 0; font-size: 10px; color: var(--vf-text-tertiary); }
61
+ @media (max-width: 760px) {
62
+ .ah-models { padding: 18px; }
63
+ .ah-models .ah-chart-header { margin-bottom: 12px; }
64
+ .ah-models .ah-streamgraph__plot { margin: 8px 0 16px; }
65
+ .ah-models .ah-streamgraph__legend { margin-top: 18px; }
66
+ }
@@ -0,0 +1,19 @@
1
+ /* Equal side columns keep the tabs at the dialog's center, even for long names. */
2
+ .ah-fileview__head.ah-project-chart__head {
3
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
4
+ padding: 12px 16px 11px;
5
+ }
6
+ .ah-project-chart__head .ah-fileview__title { grid-column: 1; grid-row: 1; }
7
+ .ah-project-chart__head .ah-fileview__acts { grid-column: 3; grid-row: 1; justify-self: end; }
8
+ .ah-project-chart__tabs { grid-column: 2; grid-row: 1; justify-self: center; }
9
+ .ah-project-chart__tabs button { min-width: 76px; height: 26px; padding: 0 14px; font-size: 11px; }
10
+ .ah-project-chart__panel { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }
11
+ .ah-project-chart__panel[hidden] { display: none; }
12
+ @media (max-width: 400px) {
13
+ .ah-fileview__head.ah-project-chart__head { grid-template-columns: minmax(0, 1fr) auto; gap: 10px; }
14
+ .ah-project-chart__head .ah-fileview__acts { grid-column: 2; }
15
+ .ah-project-chart__tabs { grid-column: 1 / -1; grid-row: 2; }
16
+ }
17
+ @media (prefers-reduced-motion: reduce) {
18
+ .ah-project-chart__tabs button { transition: none; }
19
+ }
@@ -0,0 +1,33 @@
1
+ /* ═══════════════════════════════════════════════════════════════════════════
2
+ THE READER (PK3, `TranscriptReader`) — one session's document, read-only,
3
+ filling whatever holds it. It wears the room's root (`.ah-frame`) for its
4
+ tokens and resets, and the transcript column inside it is its only column.
5
+
6
+ Its landing stays marked, because there the mark is the point. The mark's
7
+ look is the host's: three tokens a host sets on any element around the
8
+ reader. Unset, they are the room's own neutral match — the sheet's word
9
+ wash and a quiet edge — and never the select hue the room's landing ring
10
+ wears, which says "here" for a moment rather than "this matched".
11
+ --ah-match the wash under a matched word
12
+ --ah-match-weight a matched word's weight
13
+ --ah-match-line the matched line's edge (a prompt panel's ring)
14
+ ═══════════════════════════════════════════════════════════════════════ */
15
+ .ah-frame.ah-reader { display: flex; flex-direction: column; }
16
+ .ah-reader > .ah-col { flex: 1; border-right: 0; }
17
+
18
+ .ah-reader mark.tr-match {
19
+ padding: 0 1px; margin: 0 -1px; border-radius: 3px;
20
+ background: var(--ah-match, var(--vf-fill-hover)); color: var(--vf-text-primary);
21
+ font-weight: var(--ah-match-weight, 500);
22
+ }
23
+
24
+ .ah-reader :is(.tr-line, .tr-seg, .tr-mark, .tr-summary, .tm-message, .tm-roster__row, .tm-lifecycle)[data-hit="true"] {
25
+ animation: none;
26
+ box-shadow: -10px 0 0 -7px var(--ah-match-line, var(--vf-text-tertiary));
27
+ }
28
+ .ah-reader .tr-prompt[data-hit="true"],
29
+ .ah-reader .tr-prompt-message.is-landed > .tr-prompt,
30
+ .ah-reader .tr-prompt-message.is-landed > .tr-attachments .tr-att__tile {
31
+ animation: none;
32
+ box-shadow: inset 0 0 0 1.5px var(--ah-match-line, var(--vf-text-tertiary));
33
+ }