sync: Phase 3 Agent Features from private repo

Features synced:
- LucideIconPicker component (115 icons for dimension customization)
- Dimension editing modal (descriptions + icons)
- Compound filters (per-column AND filters)
- Improved dimension assignment with keyword tagging
- queryDimensions and getDimension agent tools

New files:
- src/components/common/LucideIconPicker.tsx
- src/tools/database/queryDimensions.ts
- src/tools/database/getDimension.ts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
“BeeRad”
2025-12-25 10:05:02 +11:00
co-authored by Claude Opus 4.5
parent 57a20899a5
commit c9d85998c1
8 changed files with 1630 additions and 174 deletions
+9 -4
View File
@@ -66,15 +66,20 @@ export async function POST(request: NextRequest) {
.filter(Boolean)
.slice(0, 5);
// Auto-assign locked dimensions for all new nodes
const autoAssignedDimensions = await DimensionService.assignLockedDimensions({
// Auto-assign locked dimensions + keyword dimensions for all new nodes
const { locked, keywords } = await DimensionService.assignDimensions({
title: body.title,
content: rawContent || undefined,
link: body.link
});
// Combine provided and auto-assigned dimensions, remove duplicates
const finalDimensions = [...new Set([...trimmedProvidedDimensions, ...autoAssignedDimensions])]
// Ensure keyword dimensions exist in the database (create if new)
for (const keyword of keywords) {
await DimensionService.ensureKeywordDimension(keyword);
}
// Combine provided, locked, and keyword dimensions, remove duplicates
const finalDimensions = [...new Set([...trimmedProvidedDimensions, ...locked, ...keywords])]
.slice(0, 5); // Ensure we don't exceed 5 total dimensions
const rawChunk = typeof body.chunk === 'string' ? body.chunk : null;
let chunkToStore = rawChunk;