feat: normalize and filter chat attachments
Attachment pickers now share an allowlist for supported file types Local attachments are normalized to consistent MIME types before upload VS Code file picker now respects extension filters and larger files are allowed
This commit is contained in:
@@ -4,7 +4,7 @@ import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import { execGit } from './bridge-git-process-runtime';
|
||||
|
||||
const MAX_FILE_ATTACH_SIZE_BYTES = 10 * 1024 * 1024;
|
||||
const MAX_FILE_ATTACH_SIZE_BYTES = 20 * 1024 * 1024;
|
||||
|
||||
const createGitCheckIgnoreTimeoutMs = () => {
|
||||
const raw = Number(process.env.OPENCHAMBER_GIT_CHECK_IGNORE_TIMEOUT_MS);
|
||||
@@ -99,7 +99,7 @@ export const readUriAsAttachment = async (
|
||||
|
||||
const size = stat.size ?? 0;
|
||||
if (size > MAX_FILE_ATTACH_SIZE_BYTES) {
|
||||
return { skipped: { name, reason: 'File exceeds 10MB limit' } };
|
||||
return { skipped: { name, reason: 'File exceeds 20MB limit' } };
|
||||
}
|
||||
|
||||
const bytes = await vscode.workspace.fs.readFile(uri);
|
||||
|
||||
@@ -481,7 +481,11 @@ export async function handleFsBridgeMessage(
|
||||
}
|
||||
|
||||
case 'api:files/pick': {
|
||||
const allowMany = (payload as { allowMany?: boolean })?.allowMany !== false;
|
||||
const options = payload as { allowMany?: boolean; extensions?: unknown };
|
||||
const allowMany = options?.allowMany !== false;
|
||||
const extensions = Array.isArray(options?.extensions)
|
||||
? options.extensions.filter((extension): extension is string => typeof extension === 'string' && extension.length > 0)
|
||||
: [];
|
||||
const defaultUri = vscode.workspace.workspaceFolders?.[0]?.uri;
|
||||
|
||||
const picks = await vscode.window.showOpenDialog({
|
||||
@@ -490,6 +494,7 @@ export async function handleFsBridgeMessage(
|
||||
canSelectMany: allowMany,
|
||||
defaultUri,
|
||||
openLabel: 'Attach',
|
||||
filters: extensions.length > 0 ? { Files: extensions } : undefined,
|
||||
});
|
||||
|
||||
if (!picks || picks.length === 0) {
|
||||
|
||||
Reference in New Issue
Block a user