Adds the `docling-agent` reasoning-trace viewer as a Studio tunnel, per `docs/design/reasoning-trace.md`. Users pick an analyzed document, import a RAGResult JSON, and the iterations are overlaid on the document graph. Graph source is decoupled from Neo4j: a new pure builder (`infra/docling_graph.build_graph_payload`) reads `document_json` from SQLite and emits the same Cytoscape-shaped payload that `fetch_graph` returns from Neo4j. Neo4j stays exclusive to the Maintain ingestion pipeline. Shared DoclingDocument helpers live in `infra/docling_tree.py` so TreeWriter and the builder can't drift on label taxonomy or tree walks. Also removes the Cytoscape minimap (cytoscape-navigator) from GraphView: second render instance hurt perf on large documents for no UX win. Backend - new `GET /api/documents/:id/reasoning-graph` (SQLite-only) - new `infra/docling_tree.py`, `infra/docling_graph.py` - `analysis_repo.find_latest_completed_by_document` - tests: `test_docling_graph.py` (builder), `test_graph_api.py` (endpoint) Frontend - `features/reasoning/` — store, overlay, types, panel, import dialog, workspace, doc picker - new `ReasoningPage` + `/reasoning` and `/reasoning/:docId` routes - `GraphView` gains a `fetcher` prop so reasoning can inject the SQLite-backed fetcher while Maintain keeps using the Neo4j one - drops minimap (nav container, dep, CSS) - legend filters + section parenting extracted for reuse - i18n base strings (FR + EN)
44 lines
1.1 KiB
JSON
44 lines
1.1 KiB
JSON
{
|
|
"name": "docling-studio",
|
|
"version": "0.4.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vue-tsc --noEmit && vite build",
|
|
"type-check": "vue-tsc --noEmit",
|
|
"preview": "vite preview",
|
|
"test": "vitest --watch",
|
|
"test:run": "vitest run",
|
|
"lint": "eslint src/",
|
|
"lint:fix": "eslint src/ --fix",
|
|
"format": "prettier --write src/",
|
|
"format:check": "prettier --check src/"
|
|
},
|
|
"dependencies": {
|
|
"cytoscape": "^3.30.0",
|
|
"cytoscape-dagre": "^2.5.0",
|
|
"cytoscape-expand-collapse": "^4.1.1",
|
|
"dompurify": "^3.3.3",
|
|
"marked": "^17.0.4",
|
|
"pinia": "^2.3.0",
|
|
"vue": "^3.4.0",
|
|
"vue-router": "^4.6.4"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.0.0",
|
|
"@types/cytoscape": "^3.21.4",
|
|
"@types/cytoscape-dagre": "^2.3.3",
|
|
"@types/dompurify": "^3.2.0",
|
|
"@vitejs/plugin-vue": "^6.0.5",
|
|
"@vitest/mocker": "^4.1.2",
|
|
"eslint": "^9.0.0",
|
|
"eslint-plugin-vue": "^9.32.0",
|
|
"prettier": "^3.4.0",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "^8.57.1",
|
|
"vite": "^6.4.1",
|
|
"vitest": "^4.1.2",
|
|
"vue-tsc": "^2.2.12"
|
|
}
|
|
}
|