.gitignore | 3 + .pnpm-store/v11/index.db | Bin 0 -> 8192 bytes apps/desktop/src/electron/ElectronProtocol.test.ts | 1 + apps/desktop/src/electron/ElectronProtocol.ts | 4 +- apps/mobile/generated-uniwind-default-theme-variables.json | 32 +- apps/mobile/global.css | 36 +- apps/mobile/modules/t3-composer-editor/android/build.gradle | 1 + apps/mobile/modules/t3-composer-editor/android/src/main/java/expo/modules/t3composereditor/T3ComposerEditorModule.kt | 70 ++ apps/mobile/modules/t3-composer-editor/android/src/main/java/expo/modules/t3composereditor/T3ComposerEditorView.kt | 252 +++++-- apps/mobile/modules/t3-composer-editor/ios/T3ComposerEditorModule.swift | 45 ++ apps/mobile/modules/t3-composer-editor/ios/T3ComposerEditorView.swift | 245 +++++- apps/mobile/modules/t3-markdown-text/android/src/main/java/expo/modules/t3markdowntext/T3ContextChip.kt | 176 +++++ apps/mobile/modules/t3-markdown-text/android/src/main/java/expo/modules/t3markdowntext/T3MarkdownTextSelectionModule.kt | 202 ++++- apps/mobile/modules/t3-markdown-text/ios/T3ContextChip.h | 161 ++++ apps/mobile/modules/t3-markdown-text/ios/T3MarkdownText.mm | 170 ++++- apps/mobile/modules/t3-markdown-text/ios/T3MarkdownTextRun.h | 1 + apps/mobile/modules/t3-markdown-text/ios/T3MarkdownTextShadowNode.h | 2 + apps/mobile/modules/t3-markdown-text/ios/T3MarkdownTextShadowNode.mm | 29 +- apps/mobile/modules/t3-markdown-text/src/MarkdownTextPrimitive.tsx | 3 +- apps/mobile/modules/t3-markdown-text/src/NativeMarkdownSelectableText.tsx | 248 +++++-- apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.tsx | 70 +- apps/mobile/modules/t3-markdown-text/src/SelectableMarkdownText.types.ts | 3 + apps/mobile/modules/t3-markdown-text/src/T3MarkdownTextNativeComponent.ts | 1 + apps/mobile/modules/t3-markdown-text/src/T3MarkdownTextSelectionModule.ts | 19 +- apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts | 170 ++++- apps/mobile/modules/t3-native-controls/android/src/main/java/expo/modules/t3nativecontrols/T3NativeControlsModule.kt | 38 + apps/mobile/modules/t3-native-controls/ios/T3NativeControlsModule.swift | 7 + apps/mobile/modules/t3-native-controls/ios/T3NativeFilePresentation.swift | 34 +- apps/mobile/modules/t3-native-controls/ios/T3NativePresentation.swift | 58 +- apps/mobile/modules/t3-terminal/android/src/main/java/expo/modules/t3terminal/T3TerminalModule.kt | 5 +- apps/mobile/modules/t3-terminal/android/src/main/java/expo/modules/t3terminal/T3TerminalView.kt | 24 + apps/mobile/modules/t3-terminal/ios/T3TerminalModule.swift | 5 +- apps/mobile/modules/t3-terminal/ios/T3TerminalView.swift | 26 + apps/mobile/plugins/withIosSceneLifecycle.cjs | 26 +- apps/mobile/plugins/withIosSceneLifecycle.test.mjs | 58 ++ apps/mobile/src/Stack.tsx | 18 + apps/mobile/src/components/AudioFilePreview.tsx | 75 ++ apps/mobile/src/components/ComposerAttachmentStrip.tsx | 159 +++- apps/mobile/src/components/ComposerContextAttachment.tsx | 146 ++++ apps/mobile/src/components/ComposerContextSheet.tsx | 435 +++++++++++ apps/mobile/src/components/ComposerEditor.tsx | 238 +++++- apps/mobile/src/components/ContextSheetSize.ios.tsx | 17 + apps/mobile/src/components/ContextSheetSize.tsx | 4 + apps/mobile/src/components/CopyTextButton.tsx | 22 +- apps/mobile/src/components/FilePreview.ios.tsx | 12 +- apps/mobile/src/components/FilePreview.tsx | 59 +- apps/mobile/src/components/FilePreviewModal.tsx | 78 +- apps/mobile/src/features/files/AttachmentFileScreen.tsx | 417 +++++++++++ apps/mobile/src/features/files/FileMarkdownPreview.tsx | 15 +- apps/mobile/src/features/files/ThreadFilesRouteScreen.tsx | 102 ++- apps/mobile/src/features/files/filePath.test.ts | 18 + apps/mobile/src/features/files/filePath.ts | 23 +- apps/mobile/src/features/files/workspaceFileAssetUrl.ts | 46 +- apps/mobile/src/features/keyboard/hardwareKeyboardCommands.ts | 3 +- apps/mobile/src/features/review/ReviewCommentCard.tsx | 263 +++++++ apps/mobile/src/features/review/nativeReviewDiffAdapter.test.ts | 26 + apps/mobile/src/features/review/nativeReviewDiffAdapter.ts | 17 + apps/mobile/src/features/review/reviewCommentSelection.test.ts | 26 + apps/mobile/src/features/review/reviewCommentSelection.ts | 42 +- apps/mobile/src/features/review/shikiReviewHighlighter.test.ts | 25 + apps/mobile/src/features/terminal/NativeTerminalSurface.tsx | 4 + apps/mobile/src/features/terminal/TerminalContextSheet.tsx | 118 +++ apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx | 38 +- apps/mobile/src/features/terminal/nativeTerminalModule.ts | 2 + apps/mobile/src/features/threads/ComposerCommandPopover.tsx | 22 +- apps/mobile/src/features/threads/NewTaskDraftScreen.tsx | 161 +++- apps/mobile/src/features/threads/QuestionAttachments.tsx | 25 +- apps/mobile/src/features/threads/ThreadComposer.tsx | 92 ++- apps/mobile/src/features/threads/ThreadFeed.tsx | 541 +++++++------- apps/mobile/src/features/threads/ThreadRouteScreen.tsx | 11 +- apps/mobile/src/features/threads/new-task-flow-provider.tsx | 7 +- apps/mobile/src/features/threads/pending-thread-feed.test.ts | 26 +- apps/mobile/src/features/threads/pending-thread-feed.ts | 1 + apps/mobile/src/features/threads/use-composer-command-menu.test.ts | 7 + apps/mobile/src/features/threads/use-composer-command-menu.ts | 104 ++- apps/mobile/src/lib/attachmentDocument.ts | 203 +++++ apps/mobile/src/lib/attachmentDownload.test.ts | 32 + apps/mobile/src/lib/attachmentDownload.ts | 50 +- apps/mobile/src/lib/attachmentUpload.test.ts | 61 ++ apps/mobile/src/lib/attachmentUpload.ts | 56 +- apps/mobile/src/lib/composerContext.test.ts | 273 +++++++ apps/mobile/src/lib/composerContext.ts | 224 ++++++ apps/mobile/src/lib/composerContextClipboard.test.ts | 151 ++++ apps/mobile/src/lib/composerContextClipboard.ts | 203 +++++ apps/mobile/src/lib/composerImages.test.ts | 107 +++ apps/mobile/src/lib/composerImages.ts | 43 ++ apps/mobile/src/lib/mediaActions.ts | 4 +- apps/mobile/src/lib/mobileTheme.test.ts | 49 +- apps/mobile/src/lib/mobileTheme.ts | 18 + apps/mobile/src/lib/nativeMarkdownText.test.ts | 208 ++++++ apps/mobile/src/lib/projectThreadStartTurn.ts | 3 + apps/mobile/src/lib/videoPreviewSource.ts | 29 +- apps/mobile/src/native/T3ComposerEditor.ios.tsx | 61 +- apps/mobile/src/native/T3ComposerEditor.native.tsx | 65 +- apps/mobile/src/native/T3ComposerEditor.types.ts | 19 +- apps/mobile/src/state/pending-thread-creation.test.ts | 16 + apps/mobile/src/state/pending-thread-creation.ts | 1 + apps/mobile/src/state/pull-requests.ts | 16 + apps/mobile/src/state/queries.test.ts | 25 + apps/mobile/src/state/queries.ts | 76 ++ apps/mobile/src/state/recover-failed-thread-draft.ts | 6 +- apps/mobile/src/state/thread-outbox-model.ts | 3 + apps/mobile/src/state/thread-outbox.test.ts | 26 + apps/mobile/src/state/use-composer-drafts.test.ts | 333 +++++++++ apps/mobile/src/state/use-composer-drafts.ts | 301 +++++++- apps/mobile/src/state/use-thread-composer-state.ts | 50 +- apps/mobile/src/state/use-thread-outbox-drain.test.ts | 26 + apps/mobile/src/state/use-thread-outbox-drain.ts | 28 +- apps/server/src/assets/AssetAccess.test.ts | 124 ++++ apps/server/src/assets/AssetAccess.ts | 302 +++++--- apps/server/src/environment/ServerEnvironment.ts | 1 + apps/server/src/http.test.ts | 48 ++ apps/server/src/http.ts | 21 +- apps/server/src/orchestration/Layers/ProjectionPipeline.ts | 4 + apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.test.ts | 30 +- apps/server/src/orchestration/Layers/ProjectionSnapshotQuery.ts | 13 +- apps/server/src/orchestration/Layers/ProviderCommandReactor.test.ts | 46 ++ apps/server/src/orchestration/Layers/ProviderCommandReactor.ts | 6 +- apps/server/src/orchestration/Normalizer.attachments.test.ts | 83 ++- apps/server/src/orchestration/Normalizer.ts | 35 + apps/server/src/orchestration/decider.ts | 1 + apps/server/src/orchestration/messageContext.test.ts | 165 +++++ apps/server/src/orchestration/projector.ts | 2 + apps/server/src/persistence/Layers/ProjectionThreadMessages.test.ts | 48 ++ apps/server/src/persistence/Layers/ProjectionThreadMessages.ts | 27 +- apps/server/src/persistence/Migrations.ts | 2 + apps/server/src/persistence/Migrations/051_ProjectionThreadMessageContext.test.ts | 39 + apps/server/src/persistence/Migrations/051_ProjectionThreadMessageContext.ts | 16 + apps/server/src/persistence/Services/ProjectionThreadMessages.ts | 2 + apps/server/src/server.test.ts | 25 + apps/server/src/ws.ts | 8 + apps/web/src/assets/assetUrls.ts | 9 +- apps/web/src/components/ChatMarkdown.test.tsx | 68 ++ apps/web/src/components/ChatMarkdown.tsx | 69 +- apps/web/src/components/ChatView.logic.test.ts | 68 +- apps/web/src/components/ChatView.logic.ts | 48 +- apps/web/src/components/ChatView.tsx | 206 ++++-- apps/web/src/components/ComposerCitationNode.tsx | 4 +- apps/web/src/components/ComposerContextReferenceNode.test.ts | 92 +++ apps/web/src/components/ComposerContextReferenceNode.tsx | 133 ++++ apps/web/src/components/ComposerPromptEditor.serialization.test.tsx | 3 +- apps/web/src/components/ComposerPromptEditor.test.ts | 240 +++++- apps/web/src/components/ComposerPromptEditor.tsx | 464 ++++++------ apps/web/src/components/PullRequestContextDetails.tsx | 25 + apps/web/src/components/Sidebar.tsx | 7 +- apps/web/src/components/chat/AssistantCitationChip.tsx | 32 +- apps/web/src/components/chat/ChatComposer.tsx | 1276 ++++++++++++++++++++++++++------ apps/web/src/components/chat/ComposerCommandMenu.tsx | 22 +- apps/web/src/components/chat/ComposerPendingElementContexts.tsx | 95 --- apps/web/src/components/chat/ComposerPendingReviewComments.test.tsx | 30 - apps/web/src/components/chat/ComposerPendingReviewComments.tsx | 60 -- apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx | 18 +- apps/web/src/components/chat/ComposerPreviewAnnotationCards.test.tsx | 91 --- apps/web/src/components/chat/ComposerPreviewAnnotationCards.tsx | 183 ----- apps/web/src/components/chat/ExpandedImageDialog.tsx | 270 +++---- apps/web/src/components/chat/ExpandedImagePreview.test.ts | 66 +- apps/web/src/components/chat/ExpandedImagePreview.tsx | 38 +- apps/web/src/components/chat/FileTagChip.tsx | 5 +- apps/web/src/components/chat/MessageCopyButton.tsx | 4 + apps/web/src/components/chat/MessagesTimeline.test.tsx | 226 +++++- apps/web/src/components/chat/MessagesTimeline.tsx | 1035 ++++++++++++++++++-------- apps/web/src/components/chat/SkillInlineText.tsx | 8 +- apps/web/src/components/chat/TerminalContextInlineChip.tsx | 113 ++- apps/web/src/components/chat/composerAttachmentFiles.test.ts | 27 + apps/web/src/components/chat/composerAttachmentFiles.ts | 11 + apps/web/src/components/chat/composerContextUndo.test.ts | 139 ++++ apps/web/src/components/chat/composerContextUndo.ts | 65 ++ apps/web/src/components/chat/composerPromptHistory.test.ts | 150 ++-- apps/web/src/components/chat/composerPromptHistory.ts | 44 +- apps/web/src/components/chat/pendingDraftWork.test.ts | 67 ++ apps/web/src/components/chat/pendingDraftWork.ts | 32 + apps/web/src/components/chat/userMessageTerminalContexts.test.ts | 36 - apps/web/src/components/chat/userMessageTerminalContexts.ts | 58 -- apps/web/src/components/composerContextPresentation.test.ts | 81 ++ apps/web/src/components/composerContextPresentation.tsx | 464 ++++++++++++ apps/web/src/components/composerInlineChip.test.ts | 38 + apps/web/src/components/composerInlineChip.ts | 69 +- apps/web/src/components/composerInlineTokenPaste.ts | 95 ++- apps/web/src/components/contextChipParts.tsx | 299 ++++++++ apps/web/src/components/contextPresentationRegistry.test.ts | 59 ++ apps/web/src/components/contextPresentationRegistry.ts | 126 ++++ apps/web/src/components/files/AttachmentFilePreview.test.tsx | 133 ++++ apps/web/src/components/files/AttachmentFilePreview.tsx | 342 +++++++++ apps/web/src/components/files/AudioPreview.tsx | 19 + apps/web/src/components/files/BrowserDocumentFrame.tsx | 40 + apps/web/src/components/files/DelimitedTablePreview.tsx | 63 ++ apps/web/src/components/files/FilePreviewPanel.tsx | 415 +++++------ apps/web/src/components/files/ReadOnlySourcePreview.tsx | 51 ++ apps/web/src/components/files/fileSurfaceChrome.tsx | 160 ++++ apps/web/src/components/media/MediaVideoPlayer.tsx | 2 +- apps/web/src/components/pullRequest/PullRequestDetailPanel.tsx | 30 +- apps/web/src/components/pullRequest/pullRequestDetail.logic.test.ts | 83 +++ apps/web/src/components/pullRequest/pullRequestDetail.logic.ts | 46 ++ apps/web/src/components/settings/SettingsFontPreviews.tsx | 5 +- apps/web/src/components/ui/button.tsx | 8 +- apps/web/src/components/ui/dialog-styles.ts | 22 +- apps/web/src/components/ui/dialog.tsx | 31 +- apps/web/src/composer-editor-mentions.test.ts | 77 +- apps/web/src/composer-editor-mentions.ts | 120 +-- apps/web/src/composer-logic.test.ts | 148 +++- apps/web/src/composer-logic.ts | 48 +- apps/web/src/composerDraftStore.test.ts | 715 +++++++++++++++--- apps/web/src/composerDraftStore.ts | 637 ++++++++-------- apps/web/src/hooks/useCopyToClipboard.test.ts | 49 ++ apps/web/src/hooks/useCopyToClipboard.ts | 82 +- apps/web/src/lib/composerContextRecords.test.ts | 758 +++++++++++++++++++ apps/web/src/lib/composerContextRecords.ts | 505 +++++++++++++ apps/web/src/lib/composerContextReferences.test.ts | 77 ++ apps/web/src/lib/composerContextReferences.ts | 158 ++++ apps/web/src/lib/elementContext.test.ts | 176 +---- apps/web/src/lib/elementContext.ts | 199 +---- apps/web/src/lib/previewAnnotation.test.ts | 49 +- apps/web/src/lib/previewAnnotation.ts | 99 --- apps/web/src/lib/terminalContext.test.ts | 157 +--- apps/web/src/lib/terminalContext.ts | 286 +------ apps/web/src/markdown-clipboard.test.ts | 15 + apps/web/src/promptStashStore.test.ts | 29 + apps/web/src/promptStashStore.ts | 7 + apps/web/src/proposedPlan.test.ts | 10 + apps/web/src/reviewCommentContext.test.ts | 217 +----- apps/web/src/reviewCommentContext.ts | 180 +---- apps/web/src/types.ts | 21 +- docs/internals/composer-context-references.md | 206 ++++++ docs/internals/glossary.md | 11 + docs/internals/mobile-development.md | 6 + docs/user/composer.md | 58 +- packages/client-runtime/package.json | 4 + packages/client-runtime/src/filePreview.test.ts | 67 ++ packages/client-runtime/src/filePreview.ts | 44 ++ packages/client-runtime/src/state/threadReducer.test.ts | 43 ++ packages/client-runtime/src/state/threadReducer.ts | 6 +- packages/contracts/src/assets.ts | 12 +- packages/contracts/src/composerContext.test.ts | 256 +++++++ packages/contracts/src/composerContext.ts | 281 +++++++ packages/contracts/src/composerContextClipboard.ts | 27 + packages/contracts/src/environment.ts | 4 + packages/contracts/src/index.ts | 2 + packages/contracts/src/orchestration.ts | 7 + packages/shared/package.json | 28 + packages/shared/src/composerContextClipboard.test.ts | 133 ++++ packages/shared/src/composerContextClipboard.ts | 60 ++ packages/shared/src/composerContextLegacy.test.ts | 627 ++++++++++++++++ packages/shared/src/composerContextLegacy.ts | 445 +++++++++++ packages/shared/src/composerContextLegacySend.test.ts | 154 ++++ packages/shared/src/composerContextLegacySend.ts | 161 ++++ packages/shared/src/composerContextReferences.test.ts | 265 +++++++ packages/shared/src/composerContextReferences.ts | 291 ++++++++ packages/shared/src/composerInlineTokens.test.ts | 9 + packages/shared/src/composerPullRequestMatches.test.ts | 48 ++ packages/shared/src/composerPullRequestMatches.ts | 42 ++ packages/shared/src/composerTrigger.ts | 15 +- packages/shared/src/delimitedPreview.test.ts | 37 + packages/shared/src/delimitedPreview.ts | 54 ++ packages/shared/src/filePreview.test.ts | 43 ++ packages/shared/src/filePreview.ts | 97 ++- packages/shared/src/image.test.ts | 60 ++ packages/shared/src/image.ts | 48 ++ packages/shared/src/video.test.ts | 5 + packages/shared/src/video.ts | 5 + vite.config.ts | 2 + 260 files changed, 21441 insertions(+), 4843 deletions(-)