@vibefield/rosetta-room 0.0.0-stage → 0.1.0
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.
- package/README.md +247 -2
- package/dist/HistoryRoom.d.ts +98 -0
- package/dist/HistoryRoom.js +440 -0
- package/dist/TranscriptReader.d.ts +22 -0
- package/dist/TranscriptReader.js +72 -0
- package/dist/components/ColdStart.d.ts +4 -0
- package/dist/components/ColdStart.js +5 -0
- package/dist/components/FilterChips.d.ts +4 -0
- package/dist/components/FilterChips.js +5 -0
- package/dist/components/HostAct.d.ts +9 -0
- package/dist/components/HostAct.js +16 -0
- package/dist/components/HostMenu.d.ts +41 -0
- package/dist/components/HostMenu.js +216 -0
- package/dist/components/IngestStatus.d.ts +4 -0
- package/dist/components/IngestStatus.js +20 -0
- package/dist/components/ListActivityNotice.d.ts +5 -0
- package/dist/components/ListActivityNotice.js +4 -0
- package/dist/components/ListSections.d.ts +20 -0
- package/dist/components/ListSections.js +39 -0
- package/dist/components/RenameHeading.d.ts +9 -0
- package/dist/components/RenameHeading.js +75 -0
- package/dist/components/SearchStrip.d.ts +5 -0
- package/dist/components/SearchStrip.js +8 -0
- package/dist/components/SummaryMetrics.d.ts +13 -0
- package/dist/components/SummaryMetrics.js +9 -0
- package/dist/components/SummaryPanels.d.ts +35 -0
- package/dist/components/SummaryPanels.js +117 -0
- package/dist/components/Transcript.d.ts +46 -0
- package/dist/components/Transcript.js +358 -0
- package/dist/components/charts/ActivityChartDetail.d.ts +13 -0
- package/dist/components/charts/ActivityChartDetail.js +78 -0
- package/dist/components/charts/CalendarHeatmap.d.ts +16 -0
- package/dist/components/charts/CalendarHeatmap.js +55 -0
- package/dist/components/charts/DayActivityChart.d.ts +8 -0
- package/dist/components/charts/DayActivityChart.js +71 -0
- package/dist/components/charts/ModelsChartDetail.d.ts +7 -0
- package/dist/components/charts/ModelsChartDetail.js +19 -0
- package/dist/components/charts/ProjectChartDialog.d.ts +19 -0
- package/dist/components/charts/ProjectChartDialog.js +39 -0
- package/dist/components/charts/Streamgraph.d.ts +16 -0
- package/dist/components/charts/Streamgraph.js +94 -0
- package/dist/components/charts/Treemap.d.ts +26 -0
- package/dist/components/charts/Treemap.js +81 -0
- package/dist/components/charts/index.d.ts +9 -0
- package/dist/components/charts/index.js +4 -0
- package/dist/components/charts/streamgraph-layout.d.ts +23 -0
- package/dist/components/charts/streamgraph-layout.js +114 -0
- package/dist/components/charts/treemap-layout.d.ts +32 -0
- package/dist/components/charts/treemap-layout.js +140 -0
- package/dist/components/charts/types.d.ts +65 -0
- package/dist/components/charts/types.js +8 -0
- package/dist/components/file-viewer/FileViewerBrowsers.d.ts +10 -0
- package/dist/components/file-viewer/FileViewerBrowsers.js +65 -0
- package/dist/components/file-viewer/FileViewerDialog.d.ts +33 -0
- package/dist/components/file-viewer/FileViewerDialog.js +82 -0
- package/dist/components/file-viewer/FileViewerHeader.d.ts +26 -0
- package/dist/components/file-viewer/FileViewerHeader.js +17 -0
- package/dist/components/file-viewer/ImageGalleryDialog.d.ts +14 -0
- package/dist/components/file-viewer/ImageGalleryDialog.js +98 -0
- package/dist/components/file-viewer/diff/index.d.ts +2 -0
- package/dist/components/file-viewer/diff/index.js +2 -0
- package/dist/components/file-viewer/diff/parse.d.ts +2 -0
- package/dist/components/file-viewer/diff/parse.js +164 -0
- package/dist/components/file-viewer/diff/types.d.ts +44 -0
- package/dist/components/file-viewer/diff/types.js +7 -0
- package/dist/components/file-viewer/gallery-source.d.ts +11 -0
- package/dist/components/file-viewer/gallery-source.js +75 -0
- package/dist/components/file-viewer/image-resource.d.ts +19 -0
- package/dist/components/file-viewer/image-resource.js +60 -0
- package/dist/components/file-viewer/index.d.ts +5 -0
- package/dist/components/file-viewer/index.js +8 -0
- package/dist/components/file-viewer/markdown/blocks.d.ts +2 -0
- package/dist/components/file-viewer/markdown/blocks.js +277 -0
- package/dist/components/file-viewer/markdown/index.d.ts +4 -0
- package/dist/components/file-viewer/markdown/index.js +35 -0
- package/dist/components/file-viewer/markdown/inline.d.ts +10 -0
- package/dist/components/file-viewer/markdown/inline.js +178 -0
- package/dist/components/file-viewer/markdown/render.d.ts +9 -0
- package/dist/components/file-viewer/markdown/render.js +78 -0
- package/dist/components/file-viewer/markdown/types.d.ts +57 -0
- package/dist/components/file-viewer/markdown/types.js +11 -0
- package/dist/components/file-viewer/minimap/CodeMinimap.d.ts +10 -0
- package/dist/components/file-viewer/minimap/CodeMinimap.js +296 -0
- package/dist/components/file-viewer/minimap/layout.d.ts +60 -0
- package/dist/components/file-viewer/minimap/layout.js +117 -0
- package/dist/components/file-viewer/minimap/palette.d.ts +2 -0
- package/dist/components/file-viewer/minimap/palette.js +73 -0
- package/dist/components/file-viewer/minimap/raster.d.ts +19 -0
- package/dist/components/file-viewer/minimap/raster.js +122 -0
- package/dist/components/file-viewer/registry.d.ts +25 -0
- package/dist/components/file-viewer/registry.js +182 -0
- package/dist/components/file-viewer/syntax/grammars.d.ts +16 -0
- package/dist/components/file-viewer/syntax/grammars.js +221 -0
- package/dist/components/file-viewer/syntax/index.d.ts +8 -0
- package/dist/components/file-viewer/syntax/index.js +9 -0
- package/dist/components/file-viewer/syntax/languages.d.ts +14 -0
- package/dist/components/file-viewer/syntax/languages.js +115 -0
- package/dist/components/file-viewer/syntax/tokenize-config.d.ts +2 -0
- package/dist/components/file-viewer/syntax/tokenize-config.js +132 -0
- package/dist/components/file-viewer/syntax/tokenize-css.d.ts +2 -0
- package/dist/components/file-viewer/syntax/tokenize-css.js +169 -0
- package/dist/components/file-viewer/syntax/tokenize-markup.d.ts +2 -0
- package/dist/components/file-viewer/syntax/tokenize-markup.js +124 -0
- package/dist/components/file-viewer/syntax/tokenize.d.ts +9 -0
- package/dist/components/file-viewer/syntax/tokenize.js +289 -0
- package/dist/components/file-viewer/syntax/types.d.ts +74 -0
- package/dist/components/file-viewer/syntax/types.js +13 -0
- package/dist/components/file-viewer/types.d.ts +111 -0
- package/dist/components/file-viewer/types.js +8 -0
- package/dist/components/file-viewer/use-file-content.d.ts +26 -0
- package/dist/components/file-viewer/use-file-content.js +144 -0
- package/dist/components/file-viewer/views/BinaryView.d.ts +2 -0
- package/dist/components/file-viewer/views/BinaryView.js +34 -0
- package/dist/components/file-viewer/views/CodeView.d.ts +2 -0
- package/dist/components/file-viewer/views/CodeView.js +46 -0
- package/dist/components/file-viewer/views/DiffBody.d.ts +7 -0
- package/dist/components/file-viewer/views/DiffBody.js +77 -0
- package/dist/components/file-viewer/views/DiffView.d.ts +2 -0
- package/dist/components/file-viewer/views/DiffView.js +11 -0
- package/dist/components/file-viewer/views/ImageView.d.ts +9 -0
- package/dist/components/file-viewer/views/ImageView.js +28 -0
- package/dist/components/file-viewer/views/MarkdownView.d.ts +9 -0
- package/dist/components/file-viewer/views/MarkdownView.js +20 -0
- package/dist/components/file-viewer/views/SvgView.d.ts +9 -0
- package/dist/components/file-viewer/views/SvgView.js +10 -0
- package/dist/components/git/ChangeTree.d.ts +20 -0
- package/dist/components/git/ChangeTree.js +35 -0
- package/dist/components/git/CommitViewer.d.ts +12 -0
- package/dist/components/git/CommitViewer.js +85 -0
- package/dist/components/git/GitChanges.d.ts +17 -0
- package/dist/components/git/GitChanges.js +70 -0
- package/dist/components/git/GitHistory.d.ts +9 -0
- package/dist/components/git/GitHistory.js +58 -0
- package/dist/components/git/co-author.d.ts +14 -0
- package/dist/components/git/co-author.js +55 -0
- package/dist/components/git/git-file-source.d.ts +18 -0
- package/dist/components/git/git-file-source.js +53 -0
- package/dist/components/git/git-host.d.ts +24 -0
- package/dist/components/git/git-host.js +130 -0
- package/dist/components/git/index.d.ts +10 -0
- package/dist/components/git/index.js +12 -0
- package/dist/components/git/path-tree.d.ts +23 -0
- package/dist/components/git/path-tree.js +73 -0
- package/dist/components/git/session-files.d.ts +9 -0
- package/dist/components/git/session-files.js +50 -0
- package/dist/components/git/types.d.ts +92 -0
- package/dist/components/git/types.js +9 -0
- package/dist/components/projects/ProjectActivitySparkline.d.ts +6 -0
- package/dist/components/projects/ProjectActivitySparkline.js +12 -0
- package/dist/components/projects/ProjectList.d.ts +25 -0
- package/dist/components/projects/ProjectList.js +43 -0
- package/dist/components/projects/ProjectListItem.d.ts +19 -0
- package/dist/components/projects/ProjectListItem.js +78 -0
- package/dist/components/projects/ProjectsColumn.d.ts +19 -0
- package/dist/components/projects/ProjectsColumn.js +36 -0
- package/dist/components/projects/index.d.ts +8 -0
- package/dist/components/projects/index.js +4 -0
- package/dist/components/search/MatchStepper.d.ts +9 -0
- package/dist/components/search/MatchStepper.js +14 -0
- package/dist/components/search/SearchLauncher.d.ts +12 -0
- package/dist/components/search/SearchLauncher.js +13 -0
- package/dist/components/search/SearchSheet.d.ts +29 -0
- package/dist/components/search/SearchSheet.js +230 -0
- package/dist/components/search/index.d.ts +8 -0
- package/dist/components/search/index.js +4 -0
- package/dist/components/search/shortcut.d.ts +25 -0
- package/dist/components/search/shortcut.js +32 -0
- package/dist/components/sessions/SessionList.d.ts +24 -0
- package/dist/components/sessions/SessionList.js +76 -0
- package/dist/components/sessions/SessionListItem.d.ts +13 -0
- package/dist/components/sessions/SessionListItem.js +58 -0
- package/dist/components/sessions/SessionsColumn.d.ts +26 -0
- package/dist/components/sessions/SessionsColumn.js +32 -0
- package/dist/components/sessions/index.d.ts +9 -0
- package/dist/components/sessions/index.js +4 -0
- package/dist/components/sessions/session-display.d.ts +8 -0
- package/dist/components/sessions/session-display.js +18 -0
- package/dist/components/sessions/types.d.ts +7 -0
- package/dist/components/sessions/types.js +1 -0
- package/dist/components/transcript/Activity.d.ts +45 -0
- package/dist/components/transcript/Activity.js +75 -0
- package/dist/components/transcript/Anchor.d.ts +8 -0
- package/dist/components/transcript/Anchor.js +23 -0
- package/dist/components/transcript/Attachments.d.ts +21 -0
- package/dist/components/transcript/Attachments.js +138 -0
- package/dist/components/transcript/AuthoredMessage.d.ts +19 -0
- package/dist/components/transcript/AuthoredMessage.js +17 -0
- package/dist/components/transcript/Compaction.d.ts +9 -0
- package/dist/components/transcript/Compaction.js +50 -0
- package/dist/components/transcript/DayPill.d.ts +38 -0
- package/dist/components/transcript/DayPill.js +68 -0
- package/dist/components/transcript/Document.d.ts +32 -0
- package/dist/components/transcript/Document.js +503 -0
- package/dist/components/transcript/Favicon.d.ts +32 -0
- package/dist/components/transcript/Favicon.js +71 -0
- package/dist/components/transcript/HeadOfDocument.d.ts +19 -0
- package/dist/components/transcript/HeadOfDocument.js +44 -0
- package/dist/components/transcript/Ledger.d.ts +53 -0
- package/dist/components/transcript/Ledger.js +182 -0
- package/dist/components/transcript/LineDetail.d.ts +24 -0
- package/dist/components/transcript/LineDetail.js +81 -0
- package/dist/components/transcript/Marker.d.ts +33 -0
- package/dist/components/transcript/Marker.js +21 -0
- package/dist/components/transcript/MessagePreview.d.ts +12 -0
- package/dist/components/transcript/MessagePreview.js +58 -0
- package/dist/components/transcript/Prompt.d.ts +20 -0
- package/dist/components/transcript/Prompt.js +55 -0
- package/dist/components/transcript/Prose.d.ts +19 -0
- package/dist/components/transcript/Prose.js +109 -0
- package/dist/components/transcript/ReceiptPill.d.ts +10 -0
- package/dist/components/transcript/ReceiptPill.js +10 -0
- package/dist/components/transcript/ResponseHead.d.ts +9 -0
- package/dist/components/transcript/ResponseHead.js +36 -0
- package/dist/components/transcript/Subthread.d.ts +19 -0
- package/dist/components/transcript/Subthread.js +96 -0
- package/dist/components/transcript/Team.d.ts +53 -0
- package/dist/components/transcript/Team.js +185 -0
- package/dist/components/transcript/Thinking.d.ts +24 -0
- package/dist/components/transcript/Thinking.js +50 -0
- package/dist/components/transcript/TimelineMeta.d.ts +9 -0
- package/dist/components/transcript/TimelineMeta.js +161 -0
- package/dist/components/transcript/TranscriptLoading.d.ts +10 -0
- package/dist/components/transcript/TranscriptLoading.js +10 -0
- package/dist/components/transcript/WebDetail.d.ts +8 -0
- package/dist/components/transcript/WebDetail.js +29 -0
- package/dist/components/transcript/Workflow.d.ts +12 -0
- package/dist/components/transcript/Workflow.js +208 -0
- package/dist/components/transcript/activity-plan.d.ts +84 -0
- package/dist/components/transcript/activity-plan.js +209 -0
- package/dist/components/transcript/attachment-file-source.d.ts +23 -0
- package/dist/components/transcript/attachment-file-source.js +103 -0
- package/dist/components/transcript/attachment-gallery.d.ts +12 -0
- package/dist/components/transcript/attachment-gallery.js +33 -0
- package/dist/components/transcript/detail-parts.d.ts +50 -0
- package/dist/components/transcript/detail-parts.js +295 -0
- package/dist/components/transcript/disclosure-state.d.ts +6 -0
- package/dist/components/transcript/disclosure-state.js +32 -0
- package/dist/components/transcript/disclosure-store.d.ts +8 -0
- package/dist/components/transcript/disclosure-store.js +31 -0
- package/dist/components/transcript/document-model.d.ts +15 -0
- package/dist/components/transcript/document-model.js +104 -0
- package/dist/components/transcript/document-plan.d.ts +28 -0
- package/dist/components/transcript/document-plan.js +145 -0
- package/dist/components/transcript/fold-preference.d.ts +17 -0
- package/dist/components/transcript/fold-preference.js +63 -0
- package/dist/components/transcript/glyphs.d.ts +15 -0
- package/dist/components/transcript/glyphs.js +47 -0
- package/dist/components/transcript/index.d.ts +23 -0
- package/dist/components/transcript/index.js +22 -0
- package/dist/components/transcript/message-file-source.d.ts +15 -0
- package/dist/components/transcript/message-file-source.js +31 -0
- package/dist/components/transcript/message-preview.d.ts +9 -0
- package/dist/components/transcript/message-preview.js +46 -0
- package/dist/components/transcript/read-file-source.d.ts +7 -0
- package/dist/components/transcript/read-file-source.js +34 -0
- package/dist/components/transcript/reader-context.d.ts +13 -0
- package/dist/components/transcript/reader-context.js +55 -0
- package/dist/components/transcript/reading-identity.d.ts +2 -0
- package/dist/components/transcript/reading-identity.js +52 -0
- package/dist/components/transcript/scroll-to-row.d.ts +2 -0
- package/dist/components/transcript/scroll-to-row.js +13 -0
- package/dist/components/transcript/thread-index.d.ts +14 -0
- package/dist/components/transcript/thread-index.js +40 -0
- package/dist/components/transcript/thread-navigation.d.ts +5 -0
- package/dist/components/transcript/thread-navigation.js +3 -0
- package/dist/components/transcript/timeline-meta-file-source.d.ts +6 -0
- package/dist/components/transcript/timeline-meta-file-source.js +55 -0
- package/dist/components/transcript/timeline-meta-state.d.ts +12 -0
- package/dist/components/transcript/timeline-meta-state.js +24 -0
- package/dist/components/ui/ColumnHeading.d.ts +27 -0
- package/dist/components/ui/ColumnHeading.js +7 -0
- package/dist/components/ui/ConfirmDialog.d.ts +14 -0
- package/dist/components/ui/ConfirmDialog.js +22 -0
- package/dist/components/ui/DialogShell.d.ts +18 -0
- package/dist/components/ui/DialogShell.js +40 -0
- package/dist/components/ui/EmptyState.d.ts +10 -0
- package/dist/components/ui/EmptyState.js +6 -0
- package/dist/components/ui/ListSummaryHeader.d.ts +9 -0
- package/dist/components/ui/ListSummaryHeader.js +6 -0
- package/dist/components/ui/ListToolbar.d.ts +6 -0
- package/dist/components/ui/ListToolbar.js +5 -0
- package/dist/components/ui/ResultGroupHeader.d.ts +9 -0
- package/dist/components/ui/ResultGroupHeader.js +5 -0
- package/dist/components/ui/SegmentedControl.d.ts +16 -0
- package/dist/components/ui/SegmentedControl.js +9 -0
- package/dist/components/ui/SummaryMetric.d.ts +13 -0
- package/dist/components/ui/SummaryMetric.js +10 -0
- package/dist/components/ui/Veil.d.ts +7 -0
- package/dist/components/ui/Veil.js +5 -0
- package/dist/components/ui/index.d.ts +20 -0
- package/dist/components/ui/index.js +10 -0
- package/dist/components/worktree/WorktreeColumn.d.ts +22 -0
- package/dist/components/worktree/WorktreeColumn.js +170 -0
- package/dist/components/worktree/WorktreeFileTree.d.ts +19 -0
- package/dist/components/worktree/WorktreeFileTree.js +60 -0
- package/dist/components/worktree/WorktreeHeader.d.ts +32 -0
- package/dist/components/worktree/WorktreeHeader.js +81 -0
- package/dist/components/worktree/WorktreeList.d.ts +8 -0
- package/dist/components/worktree/WorktreeList.js +12 -0
- package/dist/components/worktree/index.d.ts +12 -0
- package/dist/components/worktree/index.js +7 -0
- package/dist/components/worktree/types.d.ts +17 -0
- package/dist/components/worktree/types.js +3 -0
- package/dist/components/worktree/use-worktree-guest.d.ts +21 -0
- package/dist/components/worktree/use-worktree-guest.js +92 -0
- package/dist/components/worktree/worktree-file-commands.d.ts +19 -0
- package/dist/components/worktree/worktree-file-commands.js +112 -0
- package/dist/components/worktree/worktree-file-source.d.ts +15 -0
- package/dist/components/worktree/worktree-file-source.js +75 -0
- package/dist/components/worktree/worktree-host.d.ts +31 -0
- package/dist/components/worktree/worktree-host.js +242 -0
- package/dist/fixtures/index.d.ts +24 -0
- package/dist/fixtures/index.js +292 -0
- package/dist/host-inputs.d.ts +231 -0
- package/dist/host-inputs.js +35 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +14 -0
- package/dist/lib/activity-details.d.ts +23 -0
- package/dist/lib/activity-details.js +78 -0
- package/dist/lib/activity-order.d.ts +32 -0
- package/dist/lib/activity-order.js +86 -0
- package/dist/lib/agent-paths.d.ts +6 -0
- package/dist/lib/agent-paths.js +19 -0
- package/dist/lib/agents.d.ts +15 -0
- package/dist/lib/agents.js +60 -0
- package/dist/lib/catalog-status.d.ts +3 -0
- package/dist/lib/catalog-status.js +10 -0
- package/dist/lib/chart-data.d.ts +14 -0
- package/dist/lib/chart-data.js +151 -0
- package/dist/lib/day-activity.d.ts +21 -0
- package/dist/lib/day-activity.js +56 -0
- package/dist/lib/format.d.ts +24 -0
- package/dist/lib/format.js +116 -0
- package/dist/lib/hooks.d.ts +118 -0
- package/dist/lib/hooks.js +608 -0
- package/dist/lib/icons.d.ts +21 -0
- package/dist/lib/icons.js +49 -0
- package/dist/lib/image-media.d.ts +6 -0
- package/dist/lib/image-media.js +30 -0
- package/dist/lib/ingest-activity.d.ts +50 -0
- package/dist/lib/ingest-activity.js +151 -0
- package/dist/lib/ingest.d.ts +25 -0
- package/dist/lib/ingest.js +70 -0
- package/dist/lib/model-labels.d.ts +5 -0
- package/dist/lib/model-labels.js +28 -0
- package/dist/lib/model.d.ts +73 -0
- package/dist/lib/model.js +141 -0
- package/dist/lib/motion.d.ts +13 -0
- package/dist/lib/motion.js +80 -0
- package/dist/lib/room-storage.d.ts +13 -0
- package/dist/lib/room-storage.js +40 -0
- package/dist/lib/search-results.d.ts +27 -0
- package/dist/lib/search-results.js +83 -0
- package/dist/lib/search-sheet.d.ts +119 -0
- package/dist/lib/search-sheet.js +282 -0
- package/dist/lib/sections.d.ts +19 -0
- package/dist/lib/sections.js +36 -0
- package/dist/lib/session-activity.d.ts +5 -0
- package/dist/lib/session-activity.js +15 -0
- package/dist/lib/session-leases.d.ts +15 -0
- package/dist/lib/session-leases.js +61 -0
- package/dist/lib/spend.d.ts +42 -0
- package/dist/lib/spend.js +112 -0
- package/dist/lib/tint.d.ts +9 -0
- package/dist/lib/tint.js +53 -0
- package/dist/lib/transcript/collaboration.d.ts +97 -0
- package/dist/lib/transcript/collaboration.js +423 -0
- package/dist/lib/transcript/families.d.ts +212 -0
- package/dist/lib/transcript/families.js +906 -0
- package/dist/lib/transcript/favicons.d.ts +54 -0
- package/dist/lib/transcript/favicons.js +183 -0
- package/dist/lib/transcript/head-of-document.d.ts +27 -0
- package/dist/lib/transcript/head-of-document.js +274 -0
- package/dist/lib/transcript/head-state.d.ts +182 -0
- package/dist/lib/transcript/head-state.js +305 -0
- package/dist/lib/transcript/history-window.d.ts +13 -0
- package/dist/lib/transcript/history-window.js +52 -0
- package/dist/lib/transcript/images.d.ts +8 -0
- package/dist/lib/transcript/images.js +60 -0
- package/dist/lib/transcript/index.d.ts +15 -0
- package/dist/lib/transcript/index.js +8 -0
- package/dist/lib/transcript/ledger.d.ts +143 -0
- package/dist/lib/transcript/ledger.js +513 -0
- package/dist/lib/transcript/protocol.d.ts +23 -0
- package/dist/lib/transcript/protocol.js +1 -0
- package/dist/lib/transcript/sittings.d.ts +75 -0
- package/dist/lib/transcript/sittings.js +147 -0
- package/dist/lib/transcript/tail-scroll.d.ts +36 -0
- package/dist/lib/transcript/tail-scroll.js +167 -0
- package/dist/lib/transcript/tail-state.d.ts +17 -0
- package/dist/lib/transcript/tail-state.js +30 -0
- package/dist/lib/transcript/turns.d.ts +192 -0
- package/dist/lib/transcript/turns.js +576 -0
- package/dist/lib/transcript/use-transcript-opening.d.ts +12 -0
- package/dist/lib/transcript/use-transcript-opening.js +31 -0
- package/dist/lib/transcript/use-transcript-tail.d.ts +25 -0
- package/dist/lib/transcript/use-transcript-tail.js +158 -0
- package/dist/lib/transcript/vocabulary.d.ts +119 -0
- package/dist/lib/transcript/vocabulary.js +293 -0
- package/dist/lib/transcript/web-address.d.ts +6 -0
- package/dist/lib/transcript/web-address.js +18 -0
- package/dist/lib/transcript/workflow.d.ts +31 -0
- package/dist/lib/transcript/workflow.js +133 -0
- package/dist/lib/use-activity-order.d.ts +2 -0
- package/dist/lib/use-activity-order.js +23 -0
- package/dist/lib/use-day-usage.d.ts +8 -0
- package/dist/lib/use-day-usage.js +31 -0
- package/dist/lib/use-deferred-list-order.d.ts +26 -0
- package/dist/lib/use-deferred-list-order.js +142 -0
- package/dist/lib/use-ingest-activity.d.ts +2 -0
- package/dist/lib/use-ingest-activity.js +49 -0
- package/dist/lib/use-list-motion.d.ts +4 -0
- package/dist/lib/use-list-motion.js +67 -0
- package/dist/ports.d.ts +222 -0
- package/dist/ports.js +3 -0
- package/dist/room-context.d.ts +60 -0
- package/dist/room-context.js +87 -0
- package/dist/styles/activity-chart.css +127 -0
- package/dist/styles/attachments.css +29 -0
- package/dist/styles/favicon.css +73 -0
- package/dist/styles/history-room.css +18 -0
- package/dist/styles/host-inputs.css +250 -0
- package/dist/styles/image-gallery.css +30 -0
- package/dist/styles/ingest.css +51 -0
- package/dist/styles/message-preview.css +34 -0
- package/dist/styles/models-chart.css +66 -0
- package/dist/styles/project-chart.css +19 -0
- package/dist/styles/reader.css +33 -0
- package/dist/styles/room.css +1411 -0
- package/dist/styles/search.css +252 -0
- package/dist/styles/transcript-activity.css +70 -0
- package/dist/styles/transcript-head.css +220 -0
- package/dist/styles/transcript-loading.css +57 -0
- package/dist/styles/transcript.css +1226 -0
- package/package.json +61 -4
package/README.md
CHANGED
|
@@ -1,3 +1,248 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @vibefield/rosetta-room
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
rosetta's History room as a package: the projects, sessions and worktree
|
|
4
|
+
columns, the summary panels and charts, and the transcript with its folds,
|
|
5
|
+
behind injected ports. The room dials nothing. A host hands it a catalog, a
|
|
6
|
+
way to open one session's body, an asset source and, on a desktop, a host
|
|
7
|
+
port; each host writes its own adapters. rosetta's own app
|
|
8
|
+
(`clients/app/renderer/src/host`) is the reference host.
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install @vibefield/rosetta-room react@19 react-dom@19
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
import { HistoryRoom } from "@vibefield/rosetta-room";
|
|
16
|
+
import "@vibefield/rosetta-room/styles/room.css"; // after the host's --vf-* tokens
|
|
17
|
+
|
|
18
|
+
<HistoryRoom catalog={catalog} sessions={sessions} assets={assets} host={host} />;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`@vibefield/rosetta-room/fixtures` renders the room with no daemon at all:
|
|
22
|
+
`<HistoryRoom {...createDemoPorts()} />` (six projects, eleven sessions, a year
|
|
23
|
+
of figures, two transcripts with images and web lines, all relative to now).
|
|
24
|
+
|
|
25
|
+
## The ports (`src/ports.ts`)
|
|
26
|
+
|
|
27
|
+
| Port | What the room asks | rosetta's app answers with |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `CatalogPort` | `subscribeMeta` (runtimes, projects, every session row, live: one snapshot then mutations) · `status` → `CatalogStatus` · `projectStats(projectId, window)` → `ProjectStats` (per-day heat and per-session facts) · `usage` · `dayUsage` · `search(CatalogSearch)` · optional `onConnectionChange`, `unavailable` (the host's own words for why the index cannot answer), `boost` and `projectStatsBatch` (every listed project's figures in one ask; present, the room asks it once per refresh instead of `projectStats` per project) | its client's REST and `/ws/meta` (`catalogOver`) |
|
|
30
|
+
| `SessionPort` | `open(sessionId)` → a `SessionClient` bound to that session (its live subscription, child threads and team members each open their own; entries, report work, commands, plans, file targets, stored members), or a promise of one; `close(sessionId)` | the one client for every session; close is nothing |
|
|
31
|
+
| `AssetSource` | `imageAssetUrl(asset, variant)` → a URL, null, or a promise of either · `attachmentAssetUrl(asset)` → the attachment's address, for identity and can-open only | the daemon's own URLs |
|
|
32
|
+
| `HostPort` (optional) | `homeDir` · `platform` · `openInBrowser(name, bytes, browserId?)` · optional `browsers()` · `favicon(site)` · optional `worktree: { open, gitFacts, fileAction, ports }` | the Electron bridge (`hostPortOver`) |
|
|
33
|
+
|
|
34
|
+
- **The room opens a session at most once at a time and follows every `open`
|
|
35
|
+
with exactly one `close`**, when nothing in it reads that session any more.
|
|
36
|
+
A host that mints a credential per open mints one per session the reader is
|
|
37
|
+
looking at.
|
|
38
|
+
- **A `RosettaClient` is a `SessionClient`** (checked at compile time). A host
|
|
39
|
+
whose daemon wants a per-session credential hands a client that carries it.
|
|
40
|
+
- **An `<img src>` cannot carry a credential.** A host whose daemon wants one
|
|
41
|
+
fetches the bytes through a session's client and answers an object URL — a
|
|
42
|
+
promise while it fetches — and bounds and revokes what it made. The room asks
|
|
43
|
+
on every mount and every retry, so an evicted URL is asked for again, never
|
|
44
|
+
reused, and a source must not keep a failure. A null answer draws the
|
|
45
|
+
image's "could not load" face with Retry.
|
|
46
|
+
- **`boost` is optional** because a grant never opens a write: only a host
|
|
47
|
+
holding the daemon's bearer offers it. Without it the index keeps its order.
|
|
48
|
+
- **`browsers()`** returns installed browser ids, names and icon URLs. HTML
|
|
49
|
+
and SVG viewers show one launch icon per browser, refreshing when opened or
|
|
50
|
+
the window regains focus. The host owns executable discovery and launch;
|
|
51
|
+
the room sends back only an id and the exact displayed bytes. Hosts without
|
|
52
|
+
discovery retain their existing default-browser action.
|
|
53
|
+
- **Without a host** the room states what a browser tab is: no worktree guest,
|
|
54
|
+
a globe for every site icon, no "open in browser". With a host but no
|
|
55
|
+
`worktree`, the guest stays closed.
|
|
56
|
+
- **`worktree.ports`** is the engine's event stream: a generation starting or
|
|
57
|
+
failing, then its two transferred `MessagePort`s (tree and git). A host
|
|
58
|
+
replays what arrived before the room listened; the room is the sole
|
|
59
|
+
consumer.
|
|
60
|
+
|
|
61
|
+
## What a host decides (`HistoryRoomProps`)
|
|
62
|
+
|
|
63
|
+
Its host inputs (below), and: `surface` (`"paper"`, the default, paints the room's own ground and plate;
|
|
64
|
+
`"host"` paints neither and turns the paper fades into frost over whatever the
|
|
65
|
+
host paints) · `portalContainer` (where the dialogs and the search sheet
|
|
66
|
+
portal; their sizes are percentages of what holds them) · `edgeInset`,
|
|
67
|
+
`scrollFoot`, `floatingFoot` · `onSelect` (the selected session's id, native id,
|
|
68
|
+
folder and the host's key when it gave one, on mount and on every change) · `storagePrefix` and `storage` ·
|
|
69
|
+
`initialSummaryTab` · `unavailable` and `consent` (the host's words and its
|
|
70
|
+
consent screen) · `emptyPrompt` (the empty transcript's sentence in the host's
|
|
71
|
+
words; absent, the room's own, below) · `search` (the room's own strip and
|
|
72
|
+
sheet, with the host owning the open state; absent, neither is drawn). The ref
|
|
73
|
+
handle offers `openAt({ sessionId, timelineId? })` and `stepMatch(delta)`.
|
|
74
|
+
|
|
75
|
+
**The search keys are the host's (RO-14).** The room binds no key of its own.
|
|
76
|
+
The host's window opens the sheet and walks the matches: rosetta's app binds
|
|
77
|
+
⌘K (Ctrl K off a Mac) and `/` to the sheet, and ⌘G and ⌘⇧G to the matches. So
|
|
78
|
+
the host binds, and the room prints only the keys the host says it binds:
|
|
79
|
+
|
|
80
|
+
| The host passes | The launcher prints | The empty transcript says |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `search`, no `shortcut` | the room's own label, ⌘K (Ctrl K off a Mac) | "Pick a session — or press ⌘K to search, which is the front door." |
|
|
83
|
+
| `search.shortcut: { label }` | `label`, as given | the same sentence with `label` |
|
|
84
|
+
| `search.shortcut: null` (it binds no key) | no legend | "Pick a session." |
|
|
85
|
+
| no `search` | no launcher | "Pick a session." |
|
|
86
|
+
| `emptyPrompt`, beside any row above | as that row says | the host's sentence |
|
|
87
|
+
|
|
88
|
+
`emptyPrompt` is a prop of the room, not of `search`, so a host that draws no
|
|
89
|
+
room search (VibeField, whose search is its own Peek) can still name its own
|
|
90
|
+
key there. A host that passes `search` binds ⌘G and ⌘⇧G (Ctrl G and Ctrl Shift
|
|
91
|
+
G off a Mac) to the handle's `stepMatch(1)` and `stepMatch(-1)`, because the
|
|
92
|
+
match stepper the sheet leaves in the transcript's head names those keys.
|
|
93
|
+
|
|
94
|
+
## What a host may add (`RoomHostInputs`)
|
|
95
|
+
|
|
96
|
+
Beyond its ports, a host may hand the room its own colours, marks, sections,
|
|
97
|
+
acts, folders and filters (`src/host-inputs.ts`). The room DRAWS them in its
|
|
98
|
+
own vocabulary and never interprets them: a host key rides back out
|
|
99
|
+
untouched, a host mark is drawn where it is put, a host act is pressed. Every
|
|
100
|
+
one is optional, and with none of them the room is exactly what rosetta's app
|
|
101
|
+
shows — the reference host passes none. Ids are the room's own
|
|
102
|
+
(`ProjectRow.id`, `SessionRow.id`), as the host's catalog handed them in.
|
|
103
|
+
The callbacks are called while the room renders, so a host keeps them cheap.
|
|
104
|
+
|
|
105
|
+
- **`projectTint(projectId)`** — the project's colour, any CSS colour. Absent,
|
|
106
|
+
or null for a project: the room's own dealt tint, which is then the only
|
|
107
|
+
one the room stores.
|
|
108
|
+
- **`projectRow(projectId)`** → `{ marks?, line?, live? }` — a ledger row's
|
|
109
|
+
decorations: marks drawn at the start of its path line, a second line
|
|
110
|
+
under the path, and a live count (above zero, the time slot says "n live"
|
|
111
|
+
in the live ink). None is interactive: the row is one button.
|
|
112
|
+
- **`projectSections`** (①) and **`sessionSections(projectId)`** (②) →
|
|
113
|
+
`RoomSection[]` — the list in sections, drawn in the order given. A section
|
|
114
|
+
names its rows (`ids`, in the host's order, or `order: "room"` for the
|
|
115
|
+
room's), or names none and takes every row no other section names, in the
|
|
116
|
+
room's order (② with its day heads). A row named twice is drawn in the
|
|
117
|
+
first; when every section names its rows, the rest are not drawn, which is
|
|
118
|
+
how a host filters. `title` draws a head in the list's own break; `fold`
|
|
119
|
+
draws a foot section as one line (its words, its count, its act, such as
|
|
120
|
+
"Show older") that opens in place, and opens by itself when it holds the
|
|
121
|
+
selected row. ②'s head counts what its sections draw.
|
|
122
|
+
- **`sessionRow(session)`** → `{ hostKey?, id?, idTitle?, act?, reason? }` — a
|
|
123
|
+
session row's id slot drawn by the host (its mark and the folder, in the
|
|
124
|
+
id's face), its act (`RoomAct`: Resume, Jump to) or the reason where the
|
|
125
|
+
act would be, before the row's time; and the host's own key, which rides
|
|
126
|
+
the selection back out as `RoomSelection.hostKey`, untouched. A row with an
|
|
127
|
+
act is a box under one covering button (the selection, named as the row
|
|
128
|
+
always was) with the act above it, because a button cannot hold another;
|
|
129
|
+
pressing the act (or opening its rows) leaves the selection.
|
|
130
|
+
- **`projectActs(projectId, { folder })`** → `RoomAct[]` — ②'s head acts,
|
|
131
|
+
drawn as the head's own icon buttons after the room's (one may be
|
|
132
|
+
`primary`, on the go fill); `folder` is the folder ③ shows, by the host's
|
|
133
|
+
key (`folders`, below). **`projectCard(projectId)`** — a card under ②'s
|
|
134
|
+
head, above its list. **`sessionActs(session)`** → `{ acts?, reason? }` —
|
|
135
|
+
④'s head, for the session it names: acts as pills before the activity act,
|
|
136
|
+
or the reason as a caption after the range.
|
|
137
|
+
- An act with a `menu` (`RoomMenu`: groups of rows, each with a mark, words,
|
|
138
|
+
a second line, an aside, a check, a step in) opens the room's popover rows
|
|
139
|
+
from it. They are drawn above the columns, in the room's root, anchored to
|
|
140
|
+
their control, flipped above it when there is more room there, and held
|
|
141
|
+
inside the room's box (no column clips them). Opened by a key they land on
|
|
142
|
+
the checked row, which wears the ring; opened by a pointer they take focus
|
|
143
|
+
with no ring until a key walks them. The arrow keys walk them, a choice or a
|
|
144
|
+
press outside or Escape closes them; past `filterAfter` rows a filter heads
|
|
145
|
+
them. They listen only while open (and to the window's resize and scroll,
|
|
146
|
+
to stay on their control).
|
|
147
|
+
- **`folders(projectId)`** → `RoomFolders` — ③'s head becomes a dropdown of
|
|
148
|
+
the host's folders, by group, each keyed by the host (two machines spell a
|
|
149
|
+
path alike, so the check goes by key, never by path), with its mark in
|
|
150
|
+
front of the name. ③ shows the reader's pick while the session stays, else
|
|
151
|
+
the folder `of(session)` names for the selected session, else `initial`
|
|
152
|
+
(the usual place), else the folder at the room's own root — and tells the
|
|
153
|
+
host which through `onShow(key)`; `projectActs` hears it as `folder`. A
|
|
154
|
+
folder with `elsewhere` is never opened: ③ draws the host's honest state
|
|
155
|
+
in its place. `caption` replaces git's caption while it is shown.
|
|
156
|
+
`WorktreeList` is untouched. A folder's `act` (H4: "Not part of this
|
|
157
|
+
project") sits beside its row in the list, pressed, never a menu; → from
|
|
158
|
+
the row reaches it, ← comes back, and the list closes after it.
|
|
159
|
+
- **`projectRow(projectId).act`** (H4) — an act at a ledger row's end,
|
|
160
|
+
before its time (pin, hide), or its rows. The row becomes the same box as
|
|
161
|
+
a session row with an act: one covering button (the selection), the act
|
|
162
|
+
above it.
|
|
163
|
+
- **`projectRename(projectId)`** → `{ onRename(name), label? }` (H4) — ②'s
|
|
164
|
+
head name is the control: pressed, it becomes a field holding the name.
|
|
165
|
+
Enter commits the trimmed, changed, non-empty name; Escape or leaving the
|
|
166
|
+
field cancels. A rejected `onRename` keeps the field open and says why
|
|
167
|
+
under it ("Could not rename — <the error's words>"). The head names the
|
|
168
|
+
project as the host's catalog last said, until it says otherwise.
|
|
169
|
+
- **`projectFilters`** (①) and **`sessionFilters(projectId)`** (②) →
|
|
170
|
+
`RoomFilter[]` — chips drawn as buttons in the room's chip pill, leading
|
|
171
|
+
the list's bar (① before the rank switch; ② gets a bar only when a project
|
|
172
|
+
has chips), each opening its `RoomMenu`. The host filters, through the
|
|
173
|
+
list's sections, and says what is chosen with the chip's words, `set` and
|
|
174
|
+
a checked row. The room's own search sheet keeps its native selects.
|
|
175
|
+
- **`repositoryUrl(projectId)`** — the address ②'s repository act opens.
|
|
176
|
+
Undefined: the room's own reading of `git_repo`; null: no act.
|
|
177
|
+
|
|
178
|
+
## The reader (`TranscriptReader`)
|
|
179
|
+
|
|
180
|
+
One session's transcript, read-only, at a line: what a host shows before it
|
|
181
|
+
opens the room there (VibeField's Peek). It takes the room's ports and an
|
|
182
|
+
address, and draws the room's own document with nothing around it.
|
|
183
|
+
|
|
184
|
+
```tsx
|
|
185
|
+
<TranscriptReader {...ports} at={{ sessionId, timelineId, query }} />
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
- **It lands at `timelineId` and keeps the line marked**, and marks the words
|
|
189
|
+
of `query` in the prose (each word, or a phrase in quotes as one). The
|
|
190
|
+
address is read by value: a new session or line lands again, a re-render
|
|
191
|
+
with the same one does not.
|
|
192
|
+
- **It is read-only.** No head band and no acts — no session-work launchers,
|
|
193
|
+
no day menu, no "Latest" pill, no dialog (a long message shows in full) —
|
|
194
|
+
no thread navigation, no key bound, and nothing written back to a room. A
|
|
195
|
+
delegated thread is read inside its root, as the room opens it.
|
|
196
|
+
- **It asks only what reading needs:** one `subscribeMeta` while mounted, and
|
|
197
|
+
one `open`/`close` of the session it shows. No status, figures or search.
|
|
198
|
+
- **The mark's look is the host's.** Three tokens on any element around the
|
|
199
|
+
reader: `--ah-match` (the wash under a matched word), `--ah-match-weight`,
|
|
200
|
+
and `--ah-match-line` (the matched line's edge, a prompt panel's ring).
|
|
201
|
+
Unset, they are the room's own neutral match — the sheet's
|
|
202
|
+
`--vf-fill-hover` wash at 500, a `--vf-text-tertiary` edge — and never the
|
|
203
|
+
select hue the room's landing ring wears for a moment.
|
|
204
|
+
|
|
205
|
+
## What the package never does
|
|
206
|
+
|
|
207
|
+
- **No fetch and no socket.** Every byte arrives through a port.
|
|
208
|
+
- **No storage outside the prefix.** Four names — `search.recent`,
|
|
209
|
+
`tintSeq.v1`, `siteIcons.v1`, `transcript.fold.v2` — under `storagePrefix`
|
|
210
|
+
(default `ah.`) in the host's `storage` (default `localStorage`; `null` keeps
|
|
211
|
+
nothing).
|
|
212
|
+
- **No window globals.** It reads and writes no custom property of `window`
|
|
213
|
+
and installs no message or key listener on the host's behalf. It reads
|
|
214
|
+
`matchMedia` and `devicePixelRatio`, listens to `focus` and
|
|
215
|
+
`visibilitychange` to refresh its clock, listens while one of its own
|
|
216
|
+
popovers is open, and re-measures its minimap on `resize`. External links
|
|
217
|
+
leave through the browser's own `target="_blank"` and `window.open`, which
|
|
218
|
+
the host's shell governs.
|
|
219
|
+
- **No page styles.** Every rule is scoped to the room's root (`.ah-frame`)
|
|
220
|
+
and to the layers it portals (`.ah-layer`), at the specificity it had; the
|
|
221
|
+
page's resets and a global reduced-motion floor are the host's.
|
|
222
|
+
|
|
223
|
+
## Styles and tokens
|
|
224
|
+
|
|
225
|
+
The room reads the VibeField design kit's `--vf-*` tokens (the host defines
|
|
226
|
+
them) and brings its own: `--ah-*` (`--ah-plate`, `--ah-scroll-foot`,
|
|
227
|
+
`--ah-floating-foot`, `--ah-inset-*`, and the reader's match look
|
|
228
|
+
`--ah-match`, `--ah-match-weight`, `--ah-match-line`, read with neutral
|
|
229
|
+
fallbacks so a host sets them on any element around the room), `--tr-*`, and
|
|
230
|
+
the project tint band `--tint-l`/`--tint-c`. What a host adds is styled in
|
|
231
|
+
`styles/host-inputs.css`, whose every rule matches only an element drawn for
|
|
232
|
+
a host input. The root carries `data-ah-surface`, and
|
|
233
|
+
`data-ah-overlay` while one of its dialogs or the sheet is open, so a host can
|
|
234
|
+
stop its own chrome (a drag region, say) under it.
|
|
235
|
+
|
|
236
|
+
## Building against it
|
|
237
|
+
|
|
238
|
+
The npm package ships ESM JavaScript, TypeScript declarations, and its stylesheets.
|
|
239
|
+
Its three exports are the room, fixtures, and `styles/room.css`. React and React DOM
|
|
240
|
+
are peers at `>=19 <20`; the host supplies one copy of each. Mille and Mille UI are
|
|
241
|
+
registry dependencies, so installing Rosetta needs no sibling checkout.
|
|
242
|
+
|
|
243
|
+
For development, run `npm ci` at the repository root, then `npm run build:packages`.
|
|
244
|
+
`npm run typecheck -w @vibefield/rosetta-room` checks the room under `strict`,
|
|
245
|
+
`exactOptionalPropertyTypes`, `noUncheckedIndexedAccess`, and `verbatimModuleSyntax`.
|
|
246
|
+
The workspace app aliases the room's source for live development and deduplicates
|
|
247
|
+
React. `npm run check:packages` verifies the packed exports, declarations, and CSS
|
|
248
|
+
in an independent consumer before release.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import type { RoomPorts } from "./ports.js";
|
|
3
|
+
import type { RoomHostInputs } from "./host-inputs.js";
|
|
4
|
+
import type { KeyValueStore } from "./lib/room-storage.js";
|
|
5
|
+
import type { SummaryTab } from "./room-context.js";
|
|
6
|
+
import type { SearchShortcut } from "./components/search/index.js";
|
|
7
|
+
/** The room's own search: the strip's launcher and the sheet it opens. A host
|
|
8
|
+
* that offers search its own way (VibeField's Peek) leaves this out, and the
|
|
9
|
+
* room then draws neither. */
|
|
10
|
+
export interface HistoryRoomSearch {
|
|
11
|
+
/** Whether the sheet is open. The host owns it, so its own keys can open it. */
|
|
12
|
+
readonly open: boolean;
|
|
13
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
14
|
+
/** The query the room opens with (rosetta's app reads `?q=`). */
|
|
15
|
+
readonly initialQuery?: string | undefined;
|
|
16
|
+
/** Drawn at the strip's end, after the launcher. */
|
|
17
|
+
readonly accessory?: ReactNode;
|
|
18
|
+
/** The key the host binds to open the sheet, as the room prints it (the
|
|
19
|
+
* room binds none itself — `open` is the host's). Absent: the room's own
|
|
20
|
+
* label for ⌘K (Ctrl K off a Mac), the key rosetta's app binds. A label:
|
|
21
|
+
* that label, printed as given. null: the host binds no key, so the
|
|
22
|
+
* launcher prints no legend and the empty transcript names none. */
|
|
23
|
+
readonly shortcut?: SearchShortcut;
|
|
24
|
+
}
|
|
25
|
+
export interface HistoryRoomProps extends RoomPorts, RoomHostInputs {
|
|
26
|
+
/** Who paints beneath the room. `paper` (the default): the room paints its
|
|
27
|
+
* own ground and plate, as rosetta's app shows it. `host`: the host paints
|
|
28
|
+
* its own surface beneath; the room paints neither, and its fades become
|
|
29
|
+
* frost over whatever the host painted. */
|
|
30
|
+
readonly surface?: "paper" | "host" | undefined;
|
|
31
|
+
/** Where the room's dialogs and its sheet are portalled (the host's frame,
|
|
32
|
+
* so its overlays anchor there); the document's body when absent. */
|
|
33
|
+
readonly portalContainer?: HTMLElement | null | undefined;
|
|
34
|
+
/** Every name the room keeps in storage goes under this prefix: recent
|
|
35
|
+
* searches, dealt project tints, the site-icon setting, the fold. Default
|
|
36
|
+
* `ah.`, which is where rosetta's app has always kept them. */
|
|
37
|
+
readonly storagePrefix?: string | undefined;
|
|
38
|
+
/** The store those names live in: the browser's localStorage when absent;
|
|
39
|
+
* null keeps nothing across runs. */
|
|
40
|
+
readonly storage?: KeyValueStore | null | undefined;
|
|
41
|
+
readonly search?: HistoryRoomSearch | undefined;
|
|
42
|
+
/** The chart the project panel opens on. */
|
|
43
|
+
readonly initialSummaryTab?: SummaryTab | undefined;
|
|
44
|
+
/** The host's words under "rosettad is not answering" when the catalog
|
|
45
|
+
* itself has none — rosetta's app says where it looked and how to start one. */
|
|
46
|
+
readonly unavailable?: ReactNode;
|
|
47
|
+
/** What the room shows while the index waits for consent to read anything.
|
|
48
|
+
* Absent: the room says it is waiting. */
|
|
49
|
+
readonly consent?: ReactNode;
|
|
50
|
+
/** The empty transcript's sentence, in the host's words (a host whose own
|
|
51
|
+
* search has its own key names it here). Absent: the room's own sentence,
|
|
52
|
+
* which names a key only when the launcher prints one — "Pick a session."
|
|
53
|
+
* with no `search` or with `search.shortcut` null. */
|
|
54
|
+
readonly emptyPrompt?: ReactNode;
|
|
55
|
+
/** The selected session, or null — on mount and on every change. */
|
|
56
|
+
readonly onSelect?: ((selection: RoomSelection | null) => void) | undefined;
|
|
57
|
+
/** Edges kept clear inside the room's frame for the host's chrome. */
|
|
58
|
+
readonly edgeInset?: RoomInset | undefined;
|
|
59
|
+
/** Scrollable space after every list's last row (`--ah-scroll-foot`), and
|
|
60
|
+
* where floating controls rest (`--ah-floating-foot`): CSS lengths. */
|
|
61
|
+
readonly scrollFoot?: string | undefined;
|
|
62
|
+
readonly floatingFoot?: string | undefined;
|
|
63
|
+
}
|
|
64
|
+
/** The session the reader has selected, as a host acts on it (Resume). */
|
|
65
|
+
export interface RoomSelection {
|
|
66
|
+
readonly sessionId: string;
|
|
67
|
+
/** The agent's own id for the conversation: what a host resumes by. */
|
|
68
|
+
readonly nativeSessionId: string;
|
|
69
|
+
/** Where the session ran; null when the index does not know. */
|
|
70
|
+
readonly folder: string | null;
|
|
71
|
+
/** The host's own key for the session (`RoomSessionRow.hostKey`), passed
|
|
72
|
+
* through untouched. Absent when the host gives none. */
|
|
73
|
+
readonly hostKey?: string | undefined;
|
|
74
|
+
}
|
|
75
|
+
/** A place in the record: a session, and optionally one of its messages. */
|
|
76
|
+
export interface RoomTarget {
|
|
77
|
+
readonly sessionId: string;
|
|
78
|
+
readonly timelineId?: string | null | undefined;
|
|
79
|
+
}
|
|
80
|
+
/** The room's edges kept clear for the host's own chrome, in pixels. */
|
|
81
|
+
export type RoomInset = number | {
|
|
82
|
+
readonly top?: number | undefined;
|
|
83
|
+
readonly right?: number | undefined;
|
|
84
|
+
readonly bottom?: number | undefined;
|
|
85
|
+
readonly left?: number | undefined;
|
|
86
|
+
};
|
|
87
|
+
/** What a host may ask of a mounted room. */
|
|
88
|
+
export interface HistoryRoomHandle {
|
|
89
|
+
/** Walk the landed session's search matches. False when there is nothing to
|
|
90
|
+
* walk, so the host's key can fall through. */
|
|
91
|
+
stepMatch(delta: 1 | -1): boolean;
|
|
92
|
+
/** Open a session — its thread, in its project — and land on one of its
|
|
93
|
+
* messages when given. A session the index has not delivered yet is opened
|
|
94
|
+
* when it arrives; one it does not have is said so in a receipt. */
|
|
95
|
+
openAt(target: RoomTarget): void;
|
|
96
|
+
}
|
|
97
|
+
/** The room. A host hands it its ports; everything inside reads them from context. */
|
|
98
|
+
export declare const HistoryRoom: import("react").ForwardRefExoticComponent<HistoryRoomProps & import("react").RefAttributes<HistoryRoomHandle>>;
|