@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,36 @@
1
+ /**
2
+ * The rows each section draws. A row two sections name is drawn in the
3
+ * first; a row no section names goes to the first section without `ids`, or
4
+ * nowhere when every section names its own — so a host filter hides rows by
5
+ * naming fewer. Ids the room does not hold are skipped.
6
+ */
7
+ export function arrangeSections(sections, rowsInRoomOrder, idOf) {
8
+ const byId = new Map(rowsInRoomOrder.map((row) => [idOf(row), row]));
9
+ const rank = new Map(rowsInRoomOrder.map((row, at) => [idOf(row), at]));
10
+ const named = new Set(sections.flatMap((section) => section.ids ?? []));
11
+ const drawn = new Set();
12
+ let restTaken = false;
13
+ return sections.map((section, index) => {
14
+ let rows;
15
+ let order;
16
+ if (section.ids === undefined) {
17
+ order = "room";
18
+ rows = restTaken ? [] : rowsInRoomOrder.filter((row) => !named.has(idOf(row)));
19
+ restTaken = true;
20
+ }
21
+ else {
22
+ order = section.order ?? "host";
23
+ const ids = [...new Set(section.ids)].filter((id) => byId.has(id) && !drawn.has(id));
24
+ if (order === "room")
25
+ ids.sort((left, right) => rank.get(left) - rank.get(right));
26
+ rows = ids.map((id) => byId.get(id));
27
+ }
28
+ for (const row of rows)
29
+ drawn.add(idOf(row));
30
+ return { section, index, rows, order };
31
+ });
32
+ }
33
+ /** How many rows a folded section says it holds: the host's figure, or its rows. */
34
+ export function foldCount(arranged) {
35
+ return arranged.section.fold?.count ?? arranged.rows.length;
36
+ }
@@ -0,0 +1,5 @@
1
+ import type { SessionRow } from "@vibefield/rosetta-protocol";
2
+ /** Recorded conversation time; metadata/file timestamps are never a fallback. */
3
+ export declare function sessionLastActive(session: SessionRow): number | null;
4
+ /** Newest known conversation first, then a stable id; unknowns go last. */
5
+ export declare function compareSessionActivity(left: SessionRow, right: SessionRow): number;
@@ -0,0 +1,15 @@
1
+ /** Recorded conversation time; metadata/file timestamps are never a fallback. */
2
+ export function sessionLastActive(session) {
3
+ const at = session.activity?.last_at;
4
+ return typeof at === "number" && Number.isFinite(at) ? at : null;
5
+ }
6
+ /** Newest known conversation first, then a stable id; unknowns go last. */
7
+ export function compareSessionActivity(left, right) {
8
+ const a = sessionLastActive(left);
9
+ const b = sessionLastActive(right);
10
+ if (a === null && b !== null)
11
+ return 1;
12
+ if (b === null && a !== null)
13
+ return -1;
14
+ return (a !== null && b !== null ? b - a : 0) || left.id.localeCompare(right.id);
15
+ }
@@ -0,0 +1,15 @@
1
+ import type { SessionClient, SessionPort } from "../ports.js";
2
+ export interface SessionLease {
3
+ /** The client, once the port has answered; null while it opens. */
4
+ readonly client: SessionClient | null;
5
+ /** Settles with the client, or rejects with the port's refusal. */
6
+ readonly ready: Promise<SessionClient>;
7
+ /** Give the session back. Idempotent; the last holder's release closes it. */
8
+ release(): void;
9
+ }
10
+ export interface SessionLeases {
11
+ acquire(sessionId: string): SessionLease;
12
+ /** One read through a session's client, held only for the read. */
13
+ run<T>(sessionId: string, read: (client: SessionClient) => Promise<T>): Promise<T>;
14
+ }
15
+ export declare function createSessionLeases(port: SessionPort): SessionLeases;
@@ -0,0 +1,61 @@
1
+ function isPromiseLike(value) {
2
+ return typeof value?.then === "function";
3
+ }
4
+ export function createSessionLeases(port) {
5
+ const open = new Map();
6
+ function openSession(sessionId) {
7
+ let answered;
8
+ try {
9
+ answered = port.open(sessionId);
10
+ }
11
+ catch (error) {
12
+ answered = Promise.reject(error);
13
+ }
14
+ if (!isPromiseLike(answered)) {
15
+ return { holders: 0, client: answered, ready: Promise.resolve(answered) };
16
+ }
17
+ const session = { holders: 0, client: null, ready: Promise.resolve(answered) };
18
+ session.ready.then((client) => {
19
+ session.client = client;
20
+ },
21
+ // A refusal is the reader's to see through `ready`; nothing to keep here.
22
+ () => { });
23
+ return session;
24
+ }
25
+ function acquire(sessionId) {
26
+ let session = open.get(sessionId);
27
+ if (session === undefined) {
28
+ session = openSession(sessionId);
29
+ open.set(sessionId, session);
30
+ }
31
+ session.holders += 1;
32
+ const held = session;
33
+ let released = false;
34
+ return {
35
+ get client() {
36
+ return held.client;
37
+ },
38
+ ready: held.ready,
39
+ release() {
40
+ if (released)
41
+ return;
42
+ released = true;
43
+ held.holders -= 1;
44
+ if (held.holders === 0 && open.get(sessionId) === held) {
45
+ open.delete(sessionId);
46
+ port.close(sessionId);
47
+ }
48
+ },
49
+ };
50
+ }
51
+ async function run(sessionId, read) {
52
+ const lease = acquire(sessionId);
53
+ try {
54
+ return await read(lease.client ?? (await lease.ready));
55
+ }
56
+ finally {
57
+ lease.release();
58
+ }
59
+ }
60
+ return { acquire, run };
61
+ }
@@ -0,0 +1,42 @@
1
+ import type { CompactNumberParts } from "./format.js";
2
+ /** The wire's spend columns, flattened beside every aggregate `tokens`. */
3
+ export interface SpendFields {
4
+ readonly cost_micro_usd: number | null;
5
+ readonly billed_micro_usd: number | null;
6
+ readonly unpriced_tokens: number;
7
+ readonly unrecorded_output: number;
8
+ readonly reported_cost_adjustment_micro_usd?: number;
9
+ }
10
+ export interface Spend {
11
+ /** Estimated micro-USD, including reported adjustments; null when unpriced. */
12
+ readonly costMicroUsd: number | null;
13
+ /** Provider-billed micro-USD where the agent records one; null otherwise. */
14
+ readonly billedMicroUsd: number | null;
15
+ /** Tokens the price catalog could not price. */
16
+ readonly unpricedTokens: number;
17
+ /** Usage records whose prompt was recorded but whose output never was
18
+ * (a streamed reply that never got its final usage record): the priced
19
+ * figure is a lower bound. */
20
+ readonly unrecordedOutput: number;
21
+ /** Additional estimate recovered from cumulative agent totals. */
22
+ readonly reportedCostAdjustmentMicroUsd: number;
23
+ }
24
+ export declare const NO_SPEND: Spend;
25
+ export declare function spendOf(fields: SpendFields): Spend;
26
+ export declare function addSpend(left: Spend, right: Spend): Spend;
27
+ export declare function sumSpend(rows: Iterable<SpendFields>): Spend;
28
+ /** `complete`: every token priced and every output recorded. `partial`: some
29
+ * usage unpriced or some output unrecorded, so the figure is a lower bound.
30
+ * `unavailable`: tokens, none priced. `none`: no usage. */
31
+ export type Coverage = "complete" | "partial" | "unavailable" | "none";
32
+ export declare function coverage(spend: Spend): Coverage;
33
+ /** Shared compact scale, with currency-specific cents for smaller amounts. */
34
+ export declare function fmtUsd(microUsd: number): CompactNumberParts;
35
+ export declare function usdText(microUsd: number): string;
36
+ /** A long form for titles and accessible labels: `$1,234.56`. */
37
+ export declare function usdExact(microUsd: number): string;
38
+ /** The compact figure with its coverage marker: `$53.5K`, `$53.5K+` when some
39
+ * usage is unpriced (a lower bound), `unpriced` when none was priced. */
40
+ export declare function spendText(spend: Spend): string | null;
41
+ /** One sentence for a title or accessible label. */
42
+ export declare function spendDescription(spend: Spend, tokenText: (tokens: number) => string): string;
@@ -0,0 +1,112 @@
1
+ // Estimated spend (docs/ARCHITECTURE.md §4.1.3): recorded requests at the
2
+ // model creator's API list price, supplemented by higher reported session
3
+ // totals. A provider-billed amount is a separate, secondary figure; usage the
4
+ // price catalog cannot price is counted and shown, never read as $0.
5
+ import { fmtCompactNumber } from "./format.js";
6
+ export const NO_SPEND = {
7
+ costMicroUsd: null,
8
+ billedMicroUsd: null,
9
+ unpricedTokens: 0,
10
+ unrecordedOutput: 0,
11
+ reportedCostAdjustmentMicroUsd: 0,
12
+ };
13
+ export function spendOf(fields) {
14
+ return {
15
+ costMicroUsd: fields.cost_micro_usd,
16
+ billedMicroUsd: fields.billed_micro_usd,
17
+ unpricedTokens: fields.unpriced_tokens,
18
+ unrecordedOutput: fields.unrecorded_output,
19
+ reportedCostAdjustmentMicroUsd: fields.reported_cost_adjustment_micro_usd ?? 0,
20
+ };
21
+ }
22
+ function addNullable(left, right) {
23
+ if (left === null)
24
+ return right;
25
+ if (right === null)
26
+ return left;
27
+ return left + right;
28
+ }
29
+ export function addSpend(left, right) {
30
+ return {
31
+ costMicroUsd: addNullable(left.costMicroUsd, right.costMicroUsd),
32
+ billedMicroUsd: addNullable(left.billedMicroUsd, right.billedMicroUsd),
33
+ unpricedTokens: left.unpricedTokens + right.unpricedTokens,
34
+ unrecordedOutput: left.unrecordedOutput + right.unrecordedOutput,
35
+ reportedCostAdjustmentMicroUsd: left.reportedCostAdjustmentMicroUsd + right.reportedCostAdjustmentMicroUsd,
36
+ };
37
+ }
38
+ export function sumSpend(rows) {
39
+ let total = NO_SPEND;
40
+ for (const row of rows)
41
+ total = addSpend(total, spendOf(row));
42
+ return total;
43
+ }
44
+ export function coverage(spend) {
45
+ if (spend.costMicroUsd === null)
46
+ return spend.unpricedTokens > 0 ? "unavailable" : "none";
47
+ return spend.unpricedTokens > 0 || spend.unrecordedOutput > 0 ? "partial" : "complete";
48
+ }
49
+ /** Shared compact scale, with currency-specific cents for smaller amounts. */
50
+ export function fmtUsd(microUsd) {
51
+ const usd = microUsd / 1e6;
52
+ if (usd >= 999.5) {
53
+ const figure = fmtCompactNumber(usd);
54
+ return { n: `$${figure.n}`, u: figure.u };
55
+ }
56
+ if (usd >= 100)
57
+ return { n: `$${usd.toFixed(0)}`, u: "" };
58
+ if (usd >= 0.01 || usd === 0)
59
+ return { n: `$${usd.toFixed(2)}`, u: "" };
60
+ return { n: "<$0.01", u: "" };
61
+ }
62
+ export function usdText(microUsd) {
63
+ const figure = fmtUsd(microUsd);
64
+ return figure.n + figure.u;
65
+ }
66
+ /** A long form for titles and accessible labels: `$1,234.56`. */
67
+ export function usdExact(microUsd) {
68
+ return (microUsd / 1e6).toLocaleString(undefined, {
69
+ style: "currency",
70
+ currency: "USD",
71
+ minimumFractionDigits: 2,
72
+ maximumFractionDigits: microUsd < 10_000 ? 4 : 2,
73
+ });
74
+ }
75
+ /** The compact figure with its coverage marker: `$53.5K`, `$53.5K+` when some
76
+ * usage is unpriced (a lower bound), `unpriced` when none was priced. */
77
+ export function spendText(spend) {
78
+ switch (coverage(spend)) {
79
+ case "none":
80
+ return null;
81
+ case "unavailable":
82
+ return "unpriced";
83
+ case "partial":
84
+ return `${usdText(spend.costMicroUsd ?? 0)}+`;
85
+ case "complete":
86
+ return usdText(spend.costMicroUsd ?? 0);
87
+ }
88
+ }
89
+ /** One sentence for a title or accessible label. */
90
+ export function spendDescription(spend, tokenText) {
91
+ const parts = [];
92
+ if (spend.costMicroUsd !== null) {
93
+ if (spend.reportedCostAdjustmentMicroUsd > 0) {
94
+ parts.push(`${usdExact(spend.costMicroUsd)} estimated cost`);
95
+ parts.push(`${usdExact(spend.costMicroUsd - spend.reportedCostAdjustmentMicroUsd)} from recorded requests at API list prices`);
96
+ parts.push(`${usdExact(spend.reportedCostAdjustmentMicroUsd)} added from agent-reported session totals`);
97
+ }
98
+ else {
99
+ parts.push(`${usdExact(spend.costMicroUsd)} at API list prices`);
100
+ }
101
+ }
102
+ if (spend.unpricedTokens > 0) {
103
+ parts.push(`${tokenText(spend.unpricedTokens)} tokens ${spend.costMicroUsd === null ? "" : "more "}with no list price`);
104
+ }
105
+ if (spend.unrecordedOutput > 0) {
106
+ parts.push(`${spend.unrecordedOutput.toLocaleString()} ${spend.unrecordedOutput === 1 ? "reply" : "replies"} with unrecorded output`);
107
+ }
108
+ if (spend.billedMicroUsd !== null) {
109
+ parts.push(`${usdExact(spend.billedMicroUsd)} billed by the provider`);
110
+ }
111
+ return parts.length === 0 ? "No usage read from this agent's records" : parts.join(" · ");
112
+ }
@@ -0,0 +1,9 @@
1
+ import type { KeyValueStore } from "./room-storage.js";
2
+ export declare function tintOf(seq: number): string;
3
+ /** One room's dealer: its stored numbers, dealt once each. */
4
+ export interface TintDealer {
5
+ /** Deal (or recall) the stored sequence number for a project id. */
6
+ projectSeq(projectId: string): number;
7
+ projectTint(projectId: string): string;
8
+ }
9
+ export declare function createTintDealer(store: KeyValueStore | null): TintDealer;
@@ -0,0 +1,53 @@
1
+ // PROJECT IDENTITY — the colour is DEALT, not derived (design record §3).
2
+ // A project's hue is assigned the first time this room sees it, from the
3
+ // golden-ratio sequence over a 333° wheel (a 27° band around --vf-select is
4
+ // withheld), and the dealt number is stored so the colour never moves when
5
+ // projects are added, deleted, or renamed. The store is the room's storage:
6
+ // the design record prices this honestly — the colour is a property of when
7
+ // the room first saw the project, so it does not travel between machines
8
+ // until the number does.
9
+ const TINT_H0 = 258;
10
+ const TINT_SKIP_AT = 238;
11
+ const TINT_SKIP_W = 27;
12
+ const TINT_SPAN = 360 - TINT_SKIP_W;
13
+ const PHI = 0.6180339887498949;
14
+ /** Under the room's storage prefix, versioned: the dealt numbers by project. */
15
+ const STORE_KEY = "tintSeq.v1";
16
+ function tintHue(seq) {
17
+ const pos = (TINT_H0 + seq * PHI * TINT_SPAN) % TINT_SPAN;
18
+ return pos < TINT_SKIP_AT ? pos : pos + TINT_SKIP_W;
19
+ }
20
+ export function tintOf(seq) {
21
+ return `oklch(var(--tint-l) var(--tint-c) ${tintHue(seq).toFixed(1)})`;
22
+ }
23
+ export function createTintDealer(store) {
24
+ let seqs = null;
25
+ function load() {
26
+ try {
27
+ const raw = store?.getItem(STORE_KEY) ?? null;
28
+ if (raw)
29
+ return JSON.parse(raw);
30
+ }
31
+ catch {
32
+ // a blocked or corrupt store deals fresh numbers this run
33
+ }
34
+ return {};
35
+ }
36
+ function projectSeq(projectId) {
37
+ if (seqs === null)
38
+ seqs = load();
39
+ if (projectId in seqs)
40
+ return seqs[projectId];
41
+ const used = Object.values(seqs);
42
+ const next = used.length === 0 ? 0 : Math.max(...used) + 1;
43
+ seqs[projectId] = next;
44
+ try {
45
+ store?.setItem(STORE_KEY, JSON.stringify(seqs));
46
+ }
47
+ catch {
48
+ // storage refused; the deal holds for this run
49
+ }
50
+ return next;
51
+ }
52
+ return { projectSeq, projectTint: (projectId) => tintOf(projectSeq(projectId)) };
53
+ }
@@ -0,0 +1,97 @@
1
+ import type { ParticipantColor, ResponseRuntime, SessionRow, TimelineEntry } from "@vibefield/rosetta-protocol";
2
+ import type { LedgerLine } from "./ledger.js";
3
+ export type RuntimeProfileBasis = "observed" | "varies" | "configured" | "unknown";
4
+ export interface RuntimeProfile {
5
+ readonly basis: RuntimeProfileBasis;
6
+ readonly label: string;
7
+ readonly model: string | null;
8
+ readonly effort: string | null;
9
+ readonly profileCount: number;
10
+ }
11
+ export type TeamMemberOperation = "start" | "known" | "add" | "resume";
12
+ export interface TeamMemberPresentation {
13
+ readonly row: TimelineEntry;
14
+ readonly session: SessionRow | null;
15
+ readonly operation: TeamMemberOperation;
16
+ readonly team: string;
17
+ readonly name: string;
18
+ readonly color: ParticipantColor | null;
19
+ readonly objective: string;
20
+ readonly configuredModel: string | null;
21
+ readonly runtime: RuntimeProfile;
22
+ }
23
+ export interface TeamParticipantPresentation {
24
+ readonly color: ParticipantColor | null;
25
+ readonly runtime: RuntimeProfile;
26
+ readonly sessionId: string | null;
27
+ }
28
+ export interface WorkerThreadLinks {
29
+ /** The one durable disclosure that owns each ordinary worker document. */
30
+ readonly anchorRowByChild: ReadonlyMap<string, string>;
31
+ /** Children mounted below their earliest proven invocation. */
32
+ readonly childrenByRow: ReadonlyMap<string, readonly SessionRow[]>;
33
+ /** Later delegate/resume lines which navigate back to that disclosure. */
34
+ readonly referencedChildIdsByRow: ReadonlyMap<string, readonly string[]>;
35
+ }
36
+ /** Workflow workers belong to the workflow hierarchy even when pagination
37
+ * leaves their owning workflow row outside the loaded parent page. The title
38
+ * fallback keeps projections made before `workflow_run_id` was retained from
39
+ * leaking hundreds of legacy workflow workers into the parent timeline. */
40
+ export declare function isWorkflowOwnedSession(session: SessionRow): boolean;
41
+ /** Only genuinely standalone workers may use the timestamp-based fallback.
42
+ * Workflow workers wait for their owning run and mount under their exact
43
+ * phase/worker row through `workerThreadLinks`. */
44
+ export declare function standaloneWorkerSessions(children: readonly SessionRow[], links: WorkerThreadLinks, indexedWorkflowChildren?: ReadonlySet<string>): readonly SessionRow[];
45
+ export interface TeamReportWork {
46
+ readonly rows: readonly TimelineEntry[];
47
+ readonly actionCount: number;
48
+ readonly startedAt: number | null;
49
+ readonly endedAt: number | null;
50
+ }
51
+ export interface TeamChronology {
52
+ readonly rows: readonly TimelineEntry[];
53
+ /** Every suppressed transport copy points at the one rendered delivery. */
54
+ readonly duplicateRepresentatives: ReadonlyMap<string, string>;
55
+ }
56
+ export type CollaborationTimeBasis = "authored" | "observed_arrival" | "unknown";
57
+ export interface CollaborationStamp {
58
+ readonly at: number | null;
59
+ readonly basis: CollaborationTimeBasis;
60
+ }
61
+ /** Response evidence wins over configuration. Split rows in one response are
62
+ * first joined by response id, then distinct model/effort pairs are counted. */
63
+ export declare function runtimeProfile(rows: readonly TimelineEntry[], configuredModel: string | null, responseRuntimes?: readonly ResponseRuntime[]): RuntimeProfile;
64
+ /** Direct child sessions that native evidence identifies as team members. */
65
+ export declare function teamSessionIds(parentSessionId: string, directChildren: readonly SessionRow[], parentRows: readonly TimelineEntry[]): readonly string[];
66
+ /** Roster facts and the start/add/resume operation for every proven team
67
+ * delegate row. The first observed member starts the team; subsequent rows add
68
+ * members unless the native request says resume. */
69
+ export declare function teamMemberPresentations(rows: readonly TimelineEntry[], sessions: ReadonlyMap<string, SessionRow>, rowsBySession: ReadonlyMap<string, readonly TimelineEntry[]>, responseRuntimesBySession?: ReadonlyMap<string, readonly ResponseRuntime[]>, historyComplete?: boolean): ReadonlyMap<string, TeamMemberPresentation>;
70
+ /** Resolve message senders back to roster facts. Names are native addresses;
71
+ * no timestamp or prose matching participates in this join. */
72
+ export declare function teamParticipants(members: ReadonlyMap<string, TeamMemberPresentation>, knownSessions?: readonly SessionRow[], rowsBySession?: ReadonlyMap<string, readonly TimelineEntry[]>, responseRuntimesBySession?: ReadonlyMap<string, readonly ResponseRuntime[]>): ReadonlyMap<string, TeamParticipantPresentation>;
73
+ /** Native authored time is the shared-chronology stamp when present. The
74
+ * containing row time is an explicitly labelled observed-delivery fallback. */
75
+ export declare function collaborationStamp(row: TimelineEntry): CollaborationStamp;
76
+ /** Add only delivered boundary events from team-member transcripts to the
77
+ * parent's chronology. The member's initial coordinator assignment stays
78
+ * private; later coordinator follow-ups are addressable team conversation and
79
+ * do interleave. A delivery id is the only cross-session dedupe key we trust;
80
+ * similar prose is never silently collapsed. Parent row order remains
81
+ * canonical, while child events enter the gap selected by native authored
82
+ * time, or their explicitly labelled observed-arrival fallback. */
83
+ export declare function teamChronology(parentRows: readonly TimelineEntry[], rowsBySession: ReadonlyMap<string, readonly TimelineEntry[]>, coverage?: {
84
+ readonly hasEarlier: boolean;
85
+ readonly ready: boolean;
86
+ }): TeamChronology;
87
+ export declare function interleaveTeamCollaboration(parentRows: readonly TimelineEntry[], rowsBySession: ReadonlyMap<string, readonly TimelineEntry[]>): readonly TimelineEntry[];
88
+ export declare function participantPresentation(participants: ReadonlyMap<string, TeamParticipantPresentation>, sender: string | null, team?: string | null): TeamParticipantPresentation | null;
89
+ /** Give an ordinary Agent worker exactly one subthread. The earliest proven
90
+ * invocation owns it; subsequent delegate/resume rows are links back to that
91
+ * same disclosure. Team children are excluded because their delivered speech
92
+ * belongs to the shared parent chronology instead. */
93
+ export declare function workerThreadLinks(lines: readonly LedgerLine[], parentSessionId: string, sessions: ReadonlyMap<string, SessionRow>, excludedSessionIds: ReadonlySet<string>): WorkerThreadLinks;
94
+ /** Recover report work only when canonical evidence names the exact source
95
+ * session and inclusive timeline bounds. A shared task id alone is not a
96
+ * safe range: teammates can overlap work on the same task. */
97
+ export declare function taskBoundedReportWork(reportRow: TimelineEntry, sourceRows: readonly TimelineEntry[]): TeamReportWork | null;