Snapshot taken before fast-forwarding feature/rag to origin and merging main. Bundles in-flight work so the merge has a clean tree: Frontend - PDF preview panel (preview-panel, preview-pdf-view, preview-text-view, preview-unavailable) with lazy-rendered page thumbnail rail - Resizable preview slot via useResizablePanelWidth hook (drag handle, localStorage persistence, viewport clamping) - Neutral scrollbar + Source Excerpt card restyle (no brand-coloured rail) - Preview-store + chat-adapter / rag-api / kb-detail wiring - Frontend test harness (vitest.config, setupTests, biome update) and the paired __tests__ suites for preview, sources, document-row, chat-adapter, rag-api, knowledge-bases-tab, search-knowledge-base-tool-ui Backend - RAG locator + authorization modules with chunking / retrieval / tool / vector_store / studio_db updates - Paired test_rag_* suites (authorization, locators, locator_backfill, locator_migration, preview_routes, preview_target_locators, source_identity) Other - tests/fixtures/rag-preview for preview route fixtures (sample.pdf, sample.txt, make_fixture_pdf.py) - .gitignore + package(-lock).json adjustments for the new test runner Will be squashed/reworked via interactive rebase after main is merged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
150 lines
3.3 KiB
JSON
150 lines
3.3 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
"files": {
|
|
"ignore": [
|
|
"dist",
|
|
"node_modules",
|
|
"test",
|
|
"test/**",
|
|
"**/._*",
|
|
"._*",
|
|
"**/.DS_Store",
|
|
"tsconfig*.json"
|
|
]
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2
|
|
},
|
|
"organizeImports": {
|
|
"enabled": true
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"a11y": { "all": true },
|
|
"complexity": { "all": true },
|
|
"correctness": { "all": true, "useImportExtensions": "off" },
|
|
"performance": { "all": true },
|
|
"security": { "all": true },
|
|
"style": {
|
|
"all": true,
|
|
"useNamingConvention": { "options": { "strictCase": false } }
|
|
},
|
|
"suspicious": { "all": true, "noReactSpecificProps": "off" }
|
|
}
|
|
},
|
|
"overrides": [
|
|
{
|
|
"include": ["vite.config.ts", "vitest.config.ts", "eslint.config.js"],
|
|
"linter": {
|
|
"rules": {
|
|
"correctness": { "noNodejsModules": "off" },
|
|
"style": { "noDefaultExport": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/assistant-ui/reasoning.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useNamingConvention": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/assistant-ui/attachment.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useNamingConvention": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/assistant-ui/tool-fallback.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useNamingConvention": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/component-example.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "noNamespaceImport": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/config/env.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useNamingConvention": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/layout/index.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"performance": { "noBarrelFile": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/features/**/index.ts"],
|
|
"linter": {
|
|
"rules": {
|
|
"performance": { "noBarrelFile": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/features/chat/thread-sidebar.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"a11y": { "useSemanticElements": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/features/chat/runtime-provider.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useNamingConvention": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/assistant-ui/thread.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useNamingConvention": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/features/onboarding/components/steps/summary-step.tsx"],
|
|
"linter": {
|
|
"rules": {
|
|
"style": { "useExplicitLengthCheck": "off" }
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"include": ["src/components/ui/**"],
|
|
"linter": {
|
|
"enabled": false
|
|
},
|
|
"formatter": {
|
|
"enabled": false
|
|
},
|
|
"organizeImports": {
|
|
"enabled": false
|
|
}
|
|
}
|
|
]
|
|
}
|