apps/server/src/auth/RpcAuthorization.ts | 1 + apps/server/src/observability/RpcInstrumentation.ts | 1 + apps/server/src/workspace/WorkspaceFileSystem.test.ts | 92 +++++++ apps/server/src/workspace/WorkspaceFileSystem.ts | 57 +++- apps/server/src/workspace/fileHeaderMimeType.test.ts | 30 +++ apps/server/src/workspace/fileHeaderMimeType.ts | 22 ++ apps/server/src/ws.ts | 1 + apps/web/src/components/ChatMarkdown.assets.test.tsx | 1 + apps/web/src/components/ChatMarkdown.permissions.test.tsx | 1 + apps/web/src/components/ChatMarkdown.test.tsx | 1 + apps/web/src/components/ChatMarkdown.tsx | 22 +- apps/web/src/components/ChatView.tsx | 12 +- apps/web/src/components/ComposerPromptEditorTiptap.tsx | 11 +- apps/web/src/components/chat/ChatComposer.tsx | 11 +- apps/web/src/components/chat/FileTagChip.tsx | 13 +- apps/web/src/components/chat/MessagesTimeline.tsx | 17 +- apps/web/src/components/chat/PierreEntryIcon.tsx | 5 +- apps/web/src/components/chat/WorkspaceEntryIcon.tsx | 41 +++ apps/web/src/components/composerContextPresentation.tsx | 1 + apps/web/src/hooks/FileMetadataThreadProvider.tsx | 64 +++++ apps/web/src/hooks/useFileMetadata.ts | 34 +++ apps/web/src/pierre-icons.test.ts | 16 ++ apps/web/src/pierre-icons.ts | 16 +- packages/client-runtime/src/state/fileMetadata.test.ts | 458 ++++++++++++++++++++++++++++++++ packages/client-runtime/src/state/fileMetadata.ts | 338 +++++++++++++++++++++++ packages/client-runtime/src/state/projectCommands.test.ts | 174 +++++++++++- packages/client-runtime/src/state/projectCommands.ts | 62 ++++- packages/client-runtime/src/state/runtime.ts | 3 +- packages/contracts/src/filesystem.test.ts | 12 +- packages/contracts/src/filesystem.ts | 27 +- packages/contracts/src/rpc.ts | 10 + packages/shared/src/filePreview.ts | 21 ++ packages/shared/src/path.test.ts | 13 + packages/shared/src/path.ts | 10 + 34 files changed, 1565 insertions(+), 33 deletions(-)