@joekytc/dsh-swarm 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/client/BoardCard.tsx +24 -2
- package/client/ConfigSection.tsx +71 -0
- package/client/ConfigSelect.tsx +69 -0
- package/client/KanbanBoard.tsx +3 -0
- package/client/KanbanTab.tsx +4 -3
- package/client/TaskDrawer.tsx +2 -26
- package/client/WorkflowRail.tsx +3 -1
- package/client/config-store.ts +51 -0
- package/client/config.css +110 -0
- package/client/index.ts +39 -4
- package/client/kanban.css +19 -2
- package/client/session-bridge.ts +39 -0
- package/client/timeline-model.ts +10 -1
- package/client/workflow-model.ts +3 -1
- package/lib/client.js +358 -53
- package/lib/config.d.ts +8 -1
- package/lib/config.js +6 -1
- package/lib/dispatcher/agent-runner.d.ts +28 -6
- package/lib/dispatcher/agent-runner.js +175 -62
- package/lib/dispatcher/chain-auditor.js +4 -1
- package/lib/dispatcher/dispatcher.d.ts +62 -3
- package/lib/dispatcher/dispatcher.js +243 -20
- package/lib/dispatcher/session-events.d.ts +11 -15
- package/lib/dispatcher/session-events.js +17 -5
- package/lib/dispatcher/v-orchestrator.d.ts +42 -9
- package/lib/dispatcher/v-orchestrator.js +236 -28
- package/lib/domain/config-override.d.ts +38 -0
- package/lib/domain/config-override.js +101 -0
- package/lib/domain/delivery-contract.d.ts +3 -2
- package/lib/domain/delivery-contract.js +28 -16
- package/lib/domain/gate-policy.d.ts +26 -0
- package/lib/domain/gate-policy.js +44 -0
- package/lib/domain/kanban-service.d.ts +16 -3
- package/lib/domain/kanban-service.js +41 -6
- package/lib/domain/permissions.js +1 -1
- package/lib/domain/planning-checklist.d.ts +5 -0
- package/lib/domain/planning-checklist.js +80 -6
- package/lib/domain/projection.js +2 -1
- package/lib/domain/review-evidence.js +1 -1
- package/lib/domain/state-machine.js +2 -1
- package/lib/domain/types.d.ts +2 -2
- package/lib/index.js +19 -21
- package/lib/roles/clean-fs-tools.d.ts +22 -0
- package/lib/roles/clean-fs-tools.js +118 -0
- package/lib/roles/skill-installer.d.ts +6 -0
- package/lib/roles/skill-installer.js +32 -0
- package/lib/roles/toolsets.d.ts +13 -1
- package/lib/roles/toolsets.js +163 -31
- package/lib/roles/wiki-worker.d.ts +1 -0
- package/lib/roles/wiki-worker.js +10 -2
- package/lib/routes/kanban-http.d.ts +5 -2
- package/lib/routes/kanban-http.js +36 -3
- package/lib/routes/planning-driver.d.ts +3 -1
- package/lib/routes/planning-driver.js +10 -6
- package/lib/routes/prefix-router.d.ts +16 -0
- package/lib/routes/prefix-router.js +37 -2
- package/lib/services/config-provider.d.ts +42 -0
- package/lib/services/config-provider.js +94 -0
- package/lib/services/gate-runner.d.ts +24 -0
- package/lib/services/gate-runner.js +87 -0
- package/lib/services/kanban-provider.d.ts +5 -1
- package/lib/services/kanban-provider.js +40 -2
- package/lib/services/llm-catalog.d.ts +35 -0
- package/lib/services/llm-catalog.js +19 -0
- package/lib/tools/kanban-tools.js +1 -0
- package/lib/tools/main-session-tools.d.ts +17 -2
- package/lib/tools/main-session-tools.js +88 -21
- package/lib/tools/planning-tools.d.ts +4 -0
- package/lib/tools/planning-tools.js +39 -12
- package/lib/tools/prefetch-tools.js +1 -0
- package/lib/tools/spec-card-tools.js +1 -0
- package/lib/tools/wiki-tools.js +5 -4
- package/lib/wiki/kb-linkage.d.ts +9 -2
- package/lib/wiki/kb-linkage.js +3 -3
- package/lib/wiki/local-kb-client.d.ts +14 -0
- package/lib/wiki/local-kb-client.js +101 -0
- package/lib/wiki/local-kb.d.ts +6 -0
- package/lib/wiki/local-kb.js +25 -0
- package/lib/wiki/memory-recall.d.ts +14 -6
- package/lib/wiki/memory-recall.js +17 -13
- package/lib/wiki/page-path.d.ts +9 -3
- package/lib/wiki/page-path.js +29 -11
- package/lib/wiki/wiki-vault-client.d.ts +3 -3
- package/lib/wiki/wiki-vault-client.js +6 -6
- package/package.json +16 -11
- package/personas/kanban-d/preset.yml +1 -1
- package/personas/kanban-dt/agent.cordis.yml +2 -2
- package/personas/kanban-dt/preset.yml +1 -1
- package/personas/kanban-p/agent.cordis.yml +16 -0
- package/personas/kanban-p/preset.yml +1 -1
- package/personas/kanban-pt/agent.cordis.yml +38 -8
- package/personas/kanban-pt/preset.yml +1 -1
- package/personas/kanban-w/agent.cordis.yml +35 -16
- package/personas/kanban-w/preset.yml +1 -1
- package/personas/persona-dt.md +1 -1
- package/personas/persona-p.md +4 -1
- package/personas/persona-pt.md +13 -6
- package/personas/persona-w.md +11 -9
- package/skills/grill-me/SKILL.md +71 -0
- package/skills/llm-wiki-skill/.mise.toml +2 -0
- package/skills/llm-wiki-skill/.nvmrc +1 -0
- package/skills/llm-wiki-skill/AGENTS.md +173 -0
- package/skills/llm-wiki-skill/CHANGELOG.md +548 -0
- package/skills/llm-wiki-skill/CLAUDE.md +152 -0
- package/skills/llm-wiki-skill/HERMES.md +44 -0
- package/skills/llm-wiki-skill/README.en.md +261 -0
- package/skills/llm-wiki-skill/README.md +291 -0
- package/skills/llm-wiki-skill/SKILL.md +1133 -0
- package/skills/llm-wiki-skill/assets/graph-demo.gif +0 -0
- package/skills/llm-wiki-skill/assets/graph-preview.png +0 -0
- package/skills/llm-wiki-skill/deps/LICENSE-d3.txt +13 -0
- package/skills/llm-wiki-skill/deps/LICENSE-marked.txt +44 -0
- package/skills/llm-wiki-skill/deps/LICENSE-purify.txt +568 -0
- package/skills/llm-wiki-skill/deps/LICENSE-roughjs.txt +21 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/SKILL.md +261 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/references/config/first-time-setup.md +106 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/cdp.ts +179 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/constants.ts +13 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/defuddle-converter.ts +58 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/html-to-markdown.ts +135 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/legacy-converter.ts +629 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/main.ts +314 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/markdown-conversion-shared.ts +305 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/media-localizer.ts +317 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/package.json +14 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/paths.ts +29 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/package.json +9 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/src/index.test.ts +307 -0
- package/skills/llm-wiki-skill/deps/baoyu-url-to-markdown/scripts/vendor/baoyu-chrome-cdp/src/index.ts +523 -0
- package/skills/llm-wiki-skill/deps/d3.min.js +2 -0
- package/skills/llm-wiki-skill/deps/marked.min.js +6 -0
- package/skills/llm-wiki-skill/deps/purify.min.js +3 -0
- package/skills/llm-wiki-skill/deps/rough.min.js +7 -0
- package/skills/llm-wiki-skill/deps/youtube-transcript/SKILL.md +47 -0
- package/skills/llm-wiki-skill/deps/youtube-transcript/scripts/get_transcript.py +72 -0
- package/skills/llm-wiki-skill/designs/graph-edge-legibility/graph-edge-treatments.html +480 -0
- package/skills/llm-wiki-skill/docs/design/oriental-atlas/DESIGN.md +183 -0
- package/skills/llm-wiki-skill/docs/design/oriental-atlas/README.md +10 -0
- package/skills/llm-wiki-skill/docs/design/oriental-atlas/design-brief.md +170 -0
- package/skills/llm-wiki-skill/docs/design/oriental-atlas/oriental-editorial-atlas.html +1908 -0
- package/skills/llm-wiki-skill/docs/design/oriental-atlas/reviews/result-review.md +68 -0
- package/skills/llm-wiki-skill/docs/graph/2026-06-16-interaction-risk-audit.md +88 -0
- package/skills/llm-wiki-skill/docs/graph/2026-06-16-interaction-test-coverage-map.md +212 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-18-phase-0-2-baseline.md +86 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-18-phase-1-3-dom-svg-large-baseline.md +85 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-18-phase-1-4-disposable-validation-gate.md +97 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-18-phase-2-4-global-renderer-trial-matrix.md +168 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-19-phase-6-1-sigma-graphology-trial.md +71 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-19-phase-6-2-vis-network-trial.md +78 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-19-phase-6-3-aggregation-fallback-trial.md +72 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-19-phase-6-4-global-renderer-route-decision.md +94 -0
- package/skills/llm-wiki-skill/docs/graph/performance/2026-06-19-sigma-global-production-integration-result.md +102 -0
- package/skills/llm-wiki-skill/docs/graph/performance/artifacts/2026-06-18-phase-0-2/stage-4.5-offline-dense-wheel.json +9 -0
- package/skills/llm-wiki-skill/docs/graph/performance/artifacts/2026-06-18-phase-0-2/stage-4.5-offline-dense-wheel.png +0 -0
- package/skills/llm-wiki-skill/docs/graph/performance/artifacts/2026-06-18-phase-0-2/stage-4.5-offline-navigation.png +0 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-15-omp-tool-status-events-design.md +174 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-16-graph-interaction-geometry-design.md +832 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-16-graph-six-layer-architecture-design.md +577 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-17-static-renderer-coordination-split-design.md +172 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-18-large-graph-global-community-design.md +909 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-19-sigma-global-graph-renderer-design.md +360 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-20-paper-ui-port-design.md +162 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-20-paper-ui-v2-shell-alignment-design.md +384 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-21-graph-experience-completion-design.md +534 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-22-chat-auto-scroll-design.md +185 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-22-graph-community-node-visual-design.md +266 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-25-sigma-overlay-refactor-perf-design.md +170 -0
- package/skills/llm-wiki-skill/docs/spark/2026-06-26-global-sigma-community-spotlight-design.md +393 -0
- package/skills/llm-wiki-skill/docs/spark/mockups/2026-06-18-large-graph-global-community-flow.html +746 -0
- package/skills/llm-wiki-skill/install.ps1 +87 -0
- package/skills/llm-wiki-skill/install.sh +722 -0
- package/skills/llm-wiki-skill/package-lock.json +11171 -0
- package/skills/llm-wiki-skill/package.json +24 -0
- package/skills/llm-wiki-skill/packages/graph-engine/package.json +37 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/anim/.gitkeep +1 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/anim/index.ts +179 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/architecture.ts +79 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/diff.ts +121 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/facade.ts +1406 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/graph-node.ts +37 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/index.ts +25 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/layout/edge-geometry.ts +17 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/layout/index.ts +16 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/layout/spatial-index.ts +509 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/atlas.ts +18 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/index.ts +10 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/labels.ts +11 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/layout.ts +81 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/learning.ts +8 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/legacy-helpers.ts +1379 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/queue.ts +7 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/storage.ts +4 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/model/visibility.ts +9 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/.gitkeep +1 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/adapter.ts +443 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/aggregation-containers.ts +64 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/community-cloud-geometry.ts +178 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/community-wash.ts +238 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/community-washes.ts +19 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/compat-contract.ts +14 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/controller.ts +705 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/controls.ts +288 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/dom-svg-renderer.ts +180 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/edges.ts +51 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/geometry.ts +380 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/gestures.ts +673 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/graph-renderer-root.ts +387 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/hit-testing.ts +56 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/host-dom.ts +14 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/hover-card.ts +37 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/index.ts +213 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/keyboard.ts +48 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/legend.ts +25 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/minimap.ts +45 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/model.ts +1339 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/node-drag-lifecycle.ts +94 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/nodes.ts +103 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/offline-reader.ts +209 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/overlays-presenter.ts +192 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/overlays.ts +73 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/pin-position.ts +51 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/preview.ts +65 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/relation-focus.ts +91 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/render-context.ts +85 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/render-pipeline.ts +871 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/render-styles.ts +1405 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/renderer-surface.ts +75 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/search.ts +57 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/sigma-coordinates.ts +44 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/sigma-global-drag.ts +246 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/sigma-global-renderer.ts +1425 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/sigma-overlay-svg.ts +121 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/simulation-bridge.ts +59 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/state.ts +262 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/toolbar.ts +40 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/render/viewport.ts +336 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/select/.gitkeep +1 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/select/index.ts +189 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/sim/index.ts +372 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/sim/pins.ts +84 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/summary/index.ts +447 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/themes/.gitkeep +1 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/themes/index.ts +8 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/themes/tokens.ts +117 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/types/d3-quadtree.d.ts +22 -0
- package/skills/llm-wiki-skill/packages/graph-engine/src/types.ts +531 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/aggregation-fallback-trial-adapter.test.ts +115 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/aggregation-fallback-trial-adapter.ts +222 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/anim.test.ts +121 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/architecture.test.ts +63 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/community-cloud-geometry.test.ts +86 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/community-wash.test.ts +97 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/diff.test.ts +133 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/facade.test.ts +1369 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/geometry.test.ts +147 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/gestures.test.ts +768 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/graph-layout.test.ts +110 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/helpers.test.ts +287 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/interaction-contract.test.ts +106 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/keyboard.test.ts +59 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/large-fixtures.test.ts +47 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/large-graph-fixtures.ts +420 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/learning.test.ts +259 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/node-drag-lifecycle.test.ts +166 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/overlays.test.ts +115 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/preview.test.ts +56 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/queue.test.ts +114 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/relation-focus.test.ts +115 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/render-model.test.ts +1030 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/renderer-adapter-contract.test.ts +271 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/renderer-boundary.test.ts +618 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/renderer-lifecycle.test.ts +1711 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/route-continuity.test.ts +284 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/runtime-state.test.ts +281 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/search-and-legend.test.ts +124 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/select.test.ts +168 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/sigma-coordinates.test.ts +50 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/sigma-global-renderer.test.ts +2210 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/sigma-trial-adapter.test.ts +82 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/sigma-trial-adapter.ts +271 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/sim.test.ts +207 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/simulation-bridge.test.ts +96 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/spatial-index.test.ts +222 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/state.test.ts +189 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/summary-contract.test.ts +422 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/themes.test.ts +62 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/toolbar.test.ts +64 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/viewport.test.ts +213 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/vis-network-trial-adapter.test.ts +82 -0
- package/skills/llm-wiki-skill/packages/graph-engine/test/vis-network-trial-adapter.ts +186 -0
- package/skills/llm-wiki-skill/packages/graph-engine/tsconfig.json +17 -0
- package/skills/llm-wiki-skill/packages/graph-engine/vite.config.ts +15 -0
- package/skills/llm-wiki-skill/platforms/claude/CLAUDE.md +37 -0
- package/skills/llm-wiki-skill/platforms/claude/companions/llm-wiki-upgrade/SKILL.md +95 -0
- package/skills/llm-wiki-skill/platforms/codex/AGENTS.md +23 -0
- package/skills/llm-wiki-skill/platforms/hermes/README.md +31 -0
- package/skills/llm-wiki-skill/platforms/openclaw/README.md +31 -0
- package/skills/llm-wiki-skill/scripts/adapter-state.sh +424 -0
- package/skills/llm-wiki-skill/scripts/build-graph-data.sh +395 -0
- package/skills/llm-wiki-skill/scripts/build-graph-html.sh +459 -0
- package/skills/llm-wiki-skill/scripts/cache.sh +352 -0
- package/skills/llm-wiki-skill/scripts/create-source-page.sh +100 -0
- package/skills/llm-wiki-skill/scripts/delete-helper.sh +68 -0
- package/skills/llm-wiki-skill/scripts/graph-analysis.js +732 -0
- package/skills/llm-wiki-skill/scripts/hook-session-start.sh +46 -0
- package/skills/llm-wiki-skill/scripts/init-wiki.sh +95 -0
- package/skills/llm-wiki-skill/scripts/lib/source-signal-eligibility.js +158 -0
- package/skills/llm-wiki-skill/scripts/lint-fix.sh +114 -0
- package/skills/llm-wiki-skill/scripts/lint-runner.sh +217 -0
- package/skills/llm-wiki-skill/scripts/runtime-context.sh +77 -0
- package/skills/llm-wiki-skill/scripts/shared-config.sh +83 -0
- package/skills/llm-wiki-skill/scripts/source-record-contract.tsv +10 -0
- package/skills/llm-wiki-skill/scripts/source-registry.sh +349 -0
- package/skills/llm-wiki-skill/scripts/source-registry.tsv +10 -0
- package/skills/llm-wiki-skill/scripts/source-signal-coverage.js +83 -0
- package/skills/llm-wiki-skill/scripts/validate-step1.sh +144 -0
- package/skills/llm-wiki-skill/scripts/wiki-compat.sh +267 -0
- package/skills/llm-wiki-skill/setup.sh +8 -0
- package/skills/llm-wiki-skill/templates/entity-template.md +30 -0
- package/skills/llm-wiki-skill/templates/graph-styles/wash/footer.html +27 -0
- package/skills/llm-wiki-skill/templates/graph-styles/wash/graph-wash-helpers.js +1326 -0
- package/skills/llm-wiki-skill/templates/graph-styles/wash/graph-wash.js +1009 -0
- package/skills/llm-wiki-skill/templates/graph-styles/wash/header.html +2002 -0
- package/skills/llm-wiki-skill/templates/index-en-template.md +51 -0
- package/skills/llm-wiki-skill/templates/index-template.md +51 -0
- package/skills/llm-wiki-skill/templates/log-en-template.md +11 -0
- package/skills/llm-wiki-skill/templates/log-template.md +11 -0
- package/skills/llm-wiki-skill/templates/overview-en-template.md +41 -0
- package/skills/llm-wiki-skill/templates/overview-template.md +41 -0
- package/skills/llm-wiki-skill/templates/purpose-en-template.md +16 -0
- package/skills/llm-wiki-skill/templates/purpose-template.md +16 -0
- package/skills/llm-wiki-skill/templates/query-template.md +19 -0
- package/skills/llm-wiki-skill/templates/schema-template.md +185 -0
- package/skills/llm-wiki-skill/templates/source-template.md +51 -0
- package/skills/llm-wiki-skill/templates/synthesis-template.md +25 -0
- package/skills/llm-wiki-skill/templates/topic-template.md +35 -0
- package/skills/llm-wiki-skill/tests/adapter-state.sh +338 -0
- package/skills/llm-wiki-skill/tests/browser/graph-aggregation-fallback-trial.ts +737 -0
- package/skills/llm-wiki-skill/tests/browser/graph-community-node-map.mjs +255 -0
- package/skills/llm-wiki-skill/tests/browser/graph-community-wash-interactions.mjs +170 -0
- package/skills/llm-wiki-skill/tests/browser/graph-default-behavior.mjs +630 -0
- package/skills/llm-wiki-skill/tests/browser/graph-density-preview.mjs +53 -0
- package/skills/llm-wiki-skill/tests/browser/graph-html-insights.mjs +41 -0
- package/skills/llm-wiki-skill/tests/browser/graph-large-performance.ts +689 -0
- package/skills/llm-wiki-skill/tests/browser/graph-node-slim.mjs +75 -0
- package/skills/llm-wiki-skill/tests/browser/graph-offline-phase-6.mjs +660 -0
- package/skills/llm-wiki-skill/tests/browser/graph-renderer-trial-shared.ts +291 -0
- package/skills/llm-wiki-skill/tests/browser/graph-sigma-global-production.ts +1437 -0
- package/skills/llm-wiki-skill/tests/browser/graph-sigma-graphology-trial.ts +949 -0
- package/skills/llm-wiki-skill/tests/browser/graph-stage-4-5.mjs +815 -0
- package/skills/llm-wiki-skill/tests/browser/graph-vis-network-trial.ts +762 -0
- package/skills/llm-wiki-skill/tests/browser/graph-workbench-interactions.mjs +730 -0
- package/skills/llm-wiki-skill/tests/browser/validate-graph-trial-result.mjs +149 -0
- package/skills/llm-wiki-skill/tests/expected/graph-data-empty.json +60 -0
- package/skills/llm-wiki-skill/tests/expected/graph-data-sample.json +396 -0
- package/skills/llm-wiki-skill/tests/expected/graph-interactive-basic.html +1736 -0
- package/skills/llm-wiki-skill/tests/expected/lint-output.txt +44 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/index.md +1 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/entities/Alpha.md +10 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/entities/Beta.md +7 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/entities/Delta.md +8 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/entities/Gamma.md +8 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/queries/20260422-abc.md +10 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/synthesis/Crystal.md +8 -0
- package/skills/llm-wiki-skill/tests/fixtures/coverage-sample-wiki/wiki/topics/Overview.md +9 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-empty-wiki/wiki/entities/.gitkeep +0 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/purpose.md +3 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/entities/Attention.md +7 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/entities/Decoder.md +7 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/entities/Encoder.md +7 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/entities/GPT.md +7 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/entities/Transformer.md +13 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/sources/paper.md +9 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/topics/arch.md +12 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-data-sample-wiki/wiki/topics/finetune.md +9 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-interactive-basic/wiki/graph-data.json +40 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-interactive-dense/wiki/graph-data.json +3965 -0
- package/skills/llm-wiki-skill/tests/fixtures/graph-interactive-multicomm/wiki/graph-data.json +212 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/index.md +14 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/entities/C++.md +6 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/entities/Lonely.md +4 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/entities/Other.md +8 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/entities/Real.md +7 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/sources/2026-01-01-test-source.md +15 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/sources/2026-02-01-inline-img.md +12 -0
- package/skills/llm-wiki-skill/tests/fixtures/lint-sample-wiki/wiki/topics/AIbasic.md +3 -0
- package/skills/llm-wiki-skill/tests/graph-aggregation-fallback-trial.regression-1.sh +46 -0
- package/skills/llm-wiki-skill/tests/graph-analysis-helper.regression-1.sh +237 -0
- package/skills/llm-wiki-skill/tests/graph-browser-large-performance.regression-1.sh +39 -0
- package/skills/llm-wiki-skill/tests/graph-browser-stage-4-5.regression-1.sh +163 -0
- package/skills/llm-wiki-skill/tests/graph-build-failures.regression-1.sh +91 -0
- package/skills/llm-wiki-skill/tests/graph-community-node-map.regression-1.sh +107 -0
- package/skills/llm-wiki-skill/tests/graph-community-wash-interactions.regression-1.sh +35 -0
- package/skills/llm-wiki-skill/tests/graph-data-confidence-merge.regression-1.sh +309 -0
- package/skills/llm-wiki-skill/tests/graph-data-source-paths.regression-1.sh +49 -0
- package/skills/llm-wiki-skill/tests/graph-default-behavior.regression-1.sh +35 -0
- package/skills/llm-wiki-skill/tests/graph-html-a11y.regression-1.sh +50 -0
- package/skills/llm-wiki-skill/tests/graph-html-brand-link.regression-1.sh +47 -0
- package/skills/llm-wiki-skill/tests/graph-html-density.regression-1.sh +228 -0
- package/skills/llm-wiki-skill/tests/graph-html-drawer-neighbors.regression-1.sh +47 -0
- package/skills/llm-wiki-skill/tests/graph-html-insights.regression-1.sh +80 -0
- package/skills/llm-wiki-skill/tests/graph-html-long-label.regression-1.sh +92 -0
- package/skills/llm-wiki-skill/tests/graph-html-minimap.regression-1.sh +51 -0
- package/skills/llm-wiki-skill/tests/graph-html-mobile.regression-1.sh +48 -0
- package/skills/llm-wiki-skill/tests/graph-html-oriental-atlas-contract.regression-1.sh +94 -0
- package/skills/llm-wiki-skill/tests/graph-html-oriental-design-contract.regression-1.sh +82 -0
- package/skills/llm-wiki-skill/tests/graph-html-search.regression-1.sh +52 -0
- package/skills/llm-wiki-skill/tests/graph-html-styles.regression-1.sh +66 -0
- package/skills/llm-wiki-skill/tests/graph-html-toolbar.regression-1.sh +62 -0
- package/skills/llm-wiki-skill/tests/graph-offline-phase-6.regression-1.sh +51 -0
- package/skills/llm-wiki-skill/tests/graph-sigma-global-production.regression-1.sh +64 -0
- package/skills/llm-wiki-skill/tests/graph-sigma-graphology-trial.regression-1.sh +46 -0
- package/skills/llm-wiki-skill/tests/graph-vis-network-trial.regression-1.sh +46 -0
- package/skills/llm-wiki-skill/tests/graph-workbench-interactions.regression-1.sh +151 -0
- package/skills/llm-wiki-skill/tests/js/graph-wash-bootstrap.test.js +110 -0
- package/skills/llm-wiki-skill/tests/js/graph-wash-helpers.test.js +296 -0
- package/skills/llm-wiki-skill/tests/js/graph-wash-learning.test.js +260 -0
- package/skills/llm-wiki-skill/tests/js/graph-wash-queue.test.js +115 -0
- package/skills/llm-wiki-skill/tests/js/graph-wash-runtime-state.test.js +282 -0
- package/skills/llm-wiki-skill/tests/js/source-signal-coverage.test.js +48 -0
- package/skills/llm-wiki-skill/tests/js/source-signal-eligibility.test.js +202 -0
- package/skills/llm-wiki-skill/tests/lib/graph-html-engine-helpers.sh +110 -0
- package/skills/llm-wiki-skill/tests/lint-output.regression-1.sh +32 -0
- package/skills/llm-wiki-skill/tests/regression.sh +1754 -0
- package/skills/llm-wiki-skill/workbench/AGENTS.md +110 -0
- package/skills/llm-wiki-skill/workbench/CLAUDE.md +55 -0
- package/skills/llm-wiki-skill/workbench/LICENSE +21 -0
- package/skills/llm-wiki-skill/workbench/PRODUCT.md +1353 -0
- package/skills/llm-wiki-skill/workbench/README.md +30 -0
- package/skills/llm-wiki-skill/workbench/docs/current-kb-retrieval-design.md +587 -0
- package/skills/llm-wiki-skill/workbench/docs/graph-evolution-1-design.md +210 -0
- package/skills/llm-wiki-skill/workbench/docs/stage-2-design.md +1139 -0
- package/skills/llm-wiki-skill/workbench/docs/stage-3-design.md +1269 -0
- package/skills/llm-wiki-skill/workbench/docs/stage-3.5-design.md +1164 -0
- package/skills/llm-wiki-skill/workbench/docs/stage-4-design.md +504 -0
- package/skills/llm-wiki-skill/workbench/docs/stage-4.5-design.md +195 -0
- package/skills/llm-wiki-skill/workbench/docs/superpowers/specs/2026-05-28-resizable-preview-layout-design.md +165 -0
- package/skills/llm-wiki-skill/workbench/docs/superpowers/specs/2026-05-28-settings-panel-scroll-fix.md +50 -0
- package/skills/llm-wiki-skill/workbench/server/package.json +31 -0
- package/skills/llm-wiki-skill/workbench/server/src/agent.ts +457 -0
- package/skills/llm-wiki-skill/workbench/server/src/artifacts.ts +248 -0
- package/skills/llm-wiki-skill/workbench/server/src/auth.ts +164 -0
- package/skills/llm-wiki-skill/workbench/server/src/config.ts +130 -0
- package/skills/llm-wiki-skill/workbench/server/src/conversations.test.ts +159 -0
- package/skills/llm-wiki-skill/workbench/server/src/conversations.ts +270 -0
- package/skills/llm-wiki-skill/workbench/server/src/digest/batch.ts +189 -0
- package/skills/llm-wiki-skill/workbench/server/src/digest/concurrency.test.ts +36 -0
- package/skills/llm-wiki-skill/workbench/server/src/digest/concurrency.ts +31 -0
- package/skills/llm-wiki-skill/workbench/server/src/digest/subagent.ts +91 -0
- package/skills/llm-wiki-skill/workbench/server/src/extensions/artifacts.ts +81 -0
- package/skills/llm-wiki-skill/workbench/server/src/extensions/knowledge-base.ts +263 -0
- package/skills/llm-wiki-skill/workbench/server/src/extensions/new-wiki.ts +42 -0
- package/skills/llm-wiki-skill/workbench/server/src/extensions/synthesis.ts +172 -0
- package/skills/llm-wiki-skill/workbench/server/src/graph-watcher.test.ts +196 -0
- package/skills/llm-wiki-skill/workbench/server/src/graph.test.ts +113 -0
- package/skills/llm-wiki-skill/workbench/server/src/graph.ts +351 -0
- package/skills/llm-wiki-skill/workbench/server/src/index.ts +1148 -0
- package/skills/llm-wiki-skill/workbench/server/src/knowledge-bases.test.ts +30 -0
- package/skills/llm-wiki-skill/workbench/server/src/knowledge-bases.ts +321 -0
- package/skills/llm-wiki-skill/workbench/server/src/pages.test.ts +41 -0
- package/skills/llm-wiki-skill/workbench/server/src/pages.ts +160 -0
- package/skills/llm-wiki-skill/workbench/server/src/retrieval.test.ts +151 -0
- package/skills/llm-wiki-skill/workbench/server/src/retrieval.ts +427 -0
- package/skills/llm-wiki-skill/workbench/server/src/tool-status-events.test.ts +363 -0
- package/skills/llm-wiki-skill/workbench/server/src/tool-status-events.ts +616 -0
- package/skills/llm-wiki-skill/workbench/server/src/wiki-init.test.ts +19 -0
- package/skills/llm-wiki-skill/workbench/server/src/wiki-init.ts +188 -0
- package/skills/llm-wiki-skill/workbench/server/tsconfig.json +10 -0
- package/skills/llm-wiki-skill/workbench/tsconfig.json +20 -0
- package/skills/llm-wiki-skill/workbench/web/README.md +73 -0
- package/skills/llm-wiki-skill/workbench/web/components.json +21 -0
- package/skills/llm-wiki-skill/workbench/web/eslint.config.js +22 -0
- package/skills/llm-wiki-skill/workbench/web/index.html +16 -0
- package/skills/llm-wiki-skill/workbench/web/package.json +54 -0
- package/skills/llm-wiki-skill/workbench/web/src/App.tsx +1195 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/AddExternalDialog.tsx +375 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/AppearancePanel.tsx +158 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ArtifactView.tsx +15 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/BatchDigestPanel.tsx +117 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ChatPanel.tsx +890 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/CommandMenu.tsx +75 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ExportButtons.tsx +58 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/GraphPanel.tsx +800 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/GraphReader.tsx +52 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/GraphSelection.tsx +100 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/GraphSummaryDrawer.tsx +269 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/MainViewTabs.tsx +69 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/MarkdownView.tsx +106 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/NewWikiDialog.tsx +103 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/RefMenu.tsx +44 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/RightDrawer.tsx +298 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/SearchPanel.tsx +165 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/SettingsPanel.tsx +320 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/Sidebar.tsx +354 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ToolHistorySummary.tsx +111 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ToolStatusRunway.tsx +70 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/TopBar.tsx +348 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/renderers/DownloadOnlyRenderer.tsx +88 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/renderers/HtmlRenderer.tsx +92 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ui/button.tsx +52 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ui/command.tsx +50 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ui/dialog.tsx +156 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ui/input.tsx +21 -0
- package/skills/llm-wiki-skill/workbench/web/src/components/ui/tooltip.tsx +57 -0
- package/skills/llm-wiki-skill/workbench/web/src/index.css +4204 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/api.ts +648 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/appearance.ts +114 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/drawer-layout.ts +41 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/drawer-state.ts +168 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/graph-reader.ts +25 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/graph-selection-drawer.ts +35 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/graph-selection.ts +96 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/graph-summary-actions.ts +184 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/legacy-tool-status.ts +113 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/model-roles.ts +20 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/search-filter.ts +104 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/sse.ts +72 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/tool-status-format.ts +170 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/tool-status-model.ts +392 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/utils.ts +10 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/view-status.ts +16 -0
- package/skills/llm-wiki-skill/workbench/web/src/lib/wiki-links.ts +32 -0
- package/skills/llm-wiki-skill/workbench/web/src/main.tsx +10 -0
- package/skills/llm-wiki-skill/workbench/web/test/api.test.ts +61 -0
- package/skills/llm-wiki-skill/workbench/web/test/app-shell-drawer-layout.test.tsx +48 -0
- package/skills/llm-wiki-skill/workbench/web/test/appearance-panel.test.tsx +121 -0
- package/skills/llm-wiki-skill/workbench/web/test/appearance.test.ts +262 -0
- package/skills/llm-wiki-skill/workbench/web/test/chat-host-source.test.tsx +22 -0
- package/skills/llm-wiki-skill/workbench/web/test/chat-panel-auto-scroll.test.tsx +311 -0
- package/skills/llm-wiki-skill/workbench/web/test/chat-panel-bubbles.test.tsx +48 -0
- package/skills/llm-wiki-skill/workbench/web/test/chat-panel-composer.test.tsx +86 -0
- package/skills/llm-wiki-skill/workbench/web/test/chat-panel-tool-status.test.tsx +26 -0
- package/skills/llm-wiki-skill/workbench/web/test/export-batch-paper.test.tsx +101 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-drawer-state.test.ts +257 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-panel-paper.test.tsx +200 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-reader-request.test.ts +32 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-reader.test.ts +62 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-selection-drawer.test.ts +56 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-selection.test.ts +83 -0
- package/skills/llm-wiki-skill/workbench/web/test/graph-summary-actions.test.ts +188 -0
- package/skills/llm-wiki-skill/workbench/web/test/main-view-tabs.test.tsx +34 -0
- package/skills/llm-wiki-skill/workbench/web/test/markdown-view.test.tsx +34 -0
- package/skills/llm-wiki-skill/workbench/web/test/popup-menus.test.tsx +85 -0
- package/skills/llm-wiki-skill/workbench/web/test/render.test.tsx +30 -0
- package/skills/llm-wiki-skill/workbench/web/test/render.tsx +38 -0
- package/skills/llm-wiki-skill/workbench/web/test/right-drawer-graph-summary.test.tsx +287 -0
- package/skills/llm-wiki-skill/workbench/web/test/right-drawer-interactions.test.tsx +182 -0
- package/skills/llm-wiki-skill/workbench/web/test/search-filter.test.ts +65 -0
- package/skills/llm-wiki-skill/workbench/web/test/search-panel.test.tsx +155 -0
- package/skills/llm-wiki-skill/workbench/web/test/setup-dom.ts +66 -0
- package/skills/llm-wiki-skill/workbench/web/test/sidebar-v2-source.test.ts +17 -0
- package/skills/llm-wiki-skill/workbench/web/test/sidebar.test.tsx +110 -0
- package/skills/llm-wiki-skill/workbench/web/test/tool-history-summary.test.tsx +150 -0
- package/skills/llm-wiki-skill/workbench/web/test/tool-status-format.test.ts +107 -0
- package/skills/llm-wiki-skill/workbench/web/test/tool-status-model.test.ts +324 -0
- package/skills/llm-wiki-skill/workbench/web/test/tool-status-runway.test.ts +159 -0
- package/skills/llm-wiki-skill/workbench/web/test/topbar.test.tsx +248 -0
- package/skills/llm-wiki-skill/workbench/web/test/visual/paper-ui.ts +898 -0
- package/skills/llm-wiki-skill/workbench/web/test/wiki-links.test.ts +23 -0
- package/skills/llm-wiki-skill/workbench/web/test-results/paper-ui/actual/.gitkeep +1 -0
- package/skills/llm-wiki-skill/workbench/web/test-results/paper-ui/baseline/.gitkeep +1 -0
- package/skills/llm-wiki-skill/workbench/web/tsconfig.app.json +30 -0
- package/skills/llm-wiki-skill/workbench/web/tsconfig.json +7 -0
- package/skills/llm-wiki-skill/workbench/web/tsconfig.node.json +24 -0
- package/skills/llm-wiki-skill/workbench/web/vite.config.ts +28 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# 阶段 4.5 设计文档:图谱可用性收尾
|
|
2
|
+
|
|
3
|
+
> 状态:**设计完成,待作者审定后实施**
|
|
4
|
+
> 日期:2026-06-13
|
|
5
|
+
> 来源:阶段四交付后作者实测反馈 + 验收发现(离线 HTML 功能减配裁决),经 2026-06-13 三轮设计讨论沉淀。
|
|
6
|
+
> 与 [stage-4-design.md](stage-4-design.md) 的关系:本文档修订其 D6(选区动作映射)并补全其遗漏(画布导航);冲突处以本文档为准。
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## §0 背景:五个实测问题 + 一个验收裁决
|
|
11
|
+
|
|
12
|
+
阶段四验收通过后,作者实际使用暴露以下问题(按根因分类):
|
|
13
|
+
|
|
14
|
+
| # | 问题 | 根因 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| 1 | 画布不能缩放、不能平移 | **plan 盲区**:视口数学(`zoomAtlasViewport` 等)Phase 1 已搬进引擎,但渲染器从未接交互——有发动机没装油门 |
|
|
17
|
+
| 2 | 点击节点弹出选区悬浮窗,看不懂、有废话信息(单节点显示"1页/0链接/1社区/0孤立")、动作错位(单节点出现"探索潜在联系")、悬浮窗还遮住所选节点 | **设计盲区**:stage-4 D6 动作映射表没有"单节点"行,单节点内部链接恒为 0 被误判进"无链接多选"剧本;且点击语义被"提问"独占,**阅读路径消失** |
|
|
18
|
+
| 3 | Shift 多选按了没反应 | 代码存在(`static-renderer.ts:581` 监听 shiftKey),疑似失效待排查;且**零可发现性**——界面无任何提示 |
|
|
19
|
+
| 4 | 无图谱内搜索、社区颜色无图例、无聚焦入口 | 阶段四验收裁决项:离线 HTML 功能减配,作者选定"补核心、缓其余" |
|
|
20
|
+
| 5 | 节点默认卡片三行(类型文字/标题/权重数字)过胖 | 密度策略已接线(大库自动降级),但"卡片档"本身信息冗余:类型已由左边条颜色编码,文字行重复;权重数字对用户无含义 |
|
|
21
|
+
|
|
22
|
+
**验收裁决**(作者拍板):搜索 + 社区聚焦补回;**学习系统三件套(学习队列、"从这里开始"学习路径、札记笔记)不做**,等真实使用后在工作台语境重新设计,不照搬旧版。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## §1 核心决策(D4.5-1 ~ D4.5-9)
|
|
27
|
+
|
|
28
|
+
### D4.5-1 画布导航(P0,最高优先级)——丝滑规格
|
|
29
|
+
|
|
30
|
+
> 作者用旧版(发布版 Skill)生成真实库图谱实测"缩放不够丝滑"。诊断:旧版方向正确(指数缩放/指针锚点/单层 transform 都有),病根在四个工程细节——无帧合并(触控板每秒上百事件逐个触发完整渲染)、高频路径混入重活(SVG 边层属性重算+小地图重绘)、不区分鼠标/触控板 delta、内容层未提升 GPU 合成。本节规格以"丝滑"为验收目标,不止"有"。
|
|
31
|
+
|
|
32
|
+
**交互行为**:
|
|
33
|
+
- 滚轮缩放,**以鼠标指针位置为缩放中心**;ctrl+wheel(浏览器捏合约定)同路支持
|
|
34
|
+
- 空白处拖拽 = 平移画布(节点上拖拽 = 移动节点,按事件目标区分,互不冲突)
|
|
35
|
+
- 双击空白处 = 回到全图(fit);小地图与视口实时联动(接视口矩形)
|
|
36
|
+
- 缩放范围夹紧:fit 的 0.5× ~ 4×
|
|
37
|
+
|
|
38
|
+
**丝滑六条(实现规格,❗ 逐条进验收)**:
|
|
39
|
+
1. **单层合成变换**:节点/边/团块挂同一内容层,缩放平移只改该层一条 CSS transform(translate+scale),节点 DOM 与样式零触碰;层声明 `will-change: transform` 提升 GPU 合成层——帧成本与节点数无关
|
|
40
|
+
2. **rAF 帧合并**:wheel/pointermove 只更新目标视口数值,写 DOM 仅发生在 requestAnimationFrame 回调,每帧至多一次
|
|
41
|
+
3. **设备归一化**:按 `deltaMode` 区分鼠标(行)与触控板(像素),各自缩放系数;指数缩放 `s' = s·exp(-Δ·k)` 保持手感线性
|
|
42
|
+
4. **跟手零动画,跳转才有动画**:滚轮/拖拽逐帧直接应用,**禁止加过渡**(wheel 上加缓动 = 橡皮筋延迟感的来源);双击回全图 / 图例飞行 / 搜索命中飞行用 ~200ms ease-out
|
|
43
|
+
5. **语义缩放**:密度档位与缩放联动——节点屏幕投影小于阈值自动降为紧凑标签/圆点,放大长回卡片,档位切换 ~150ms 交叉淡入;现有密度策略从"按节点总数定档"升级为"按屏幕有效密度定档"
|
|
44
|
+
6. **高频期降载**:缩放/平移进行中暂停团块重晕染与小地图精绘(沿用"拖动中团块淡化"惯例),交互停止 ~150ms 后恢复精绘
|
|
45
|
+
|
|
46
|
+
**其余约束**:
|
|
47
|
+
- **引擎层实现**,工作台与离线 HTML 同享;作者手中旧版生成的 HTML 不修,4.5 完成后重新生成即得新版
|
|
48
|
+
- ❗ 与钉扎无冲突:钉扎存**模型坐标**,视口只是观察矩阵,两者正交——实现时不得把视口偏移混进节点坐标
|
|
49
|
+
- 不做:惯性滚动(基础做对优先)
|
|
50
|
+
|
|
51
|
+
### D4.5-2 点击语义重构:"点击即阅读,选区即升级"
|
|
52
|
+
|
|
53
|
+
**选区悬浮窗取消。** 右抽屉统一承载,一个容器两种状态:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
单击节点 → 右抽屉【阅读态】(页面正文),节点在图上高亮,无浮窗
|
|
57
|
+
Shift+点第二节点 → 抽屉切【选区态】(结构事实 + 动作)
|
|
58
|
+
点社区团块/图例 → 直接进入【选区态】(整簇)
|
|
59
|
+
阅读态点"+邻居" → 升级为【选区态】(该节点+一跳邻居)
|
|
60
|
+
Esc / 关闭抽屉 → 清空选区,回到纯画布
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
理由:用户点一个节点,心里的问题是"这是什么"(阅读),不是"你想执行什么操作"(提问)。提问是阅读后的升级动作,不是点击的默认答案。抽屉不遮画布(解决悬浮窗盖住所选节点)、复用工作台既有抽屉基建与用户心智(引用预览/产物预览同款容器)、宽度可拖与移动端全屏适配都是现成的。
|
|
64
|
+
|
|
65
|
+
### D4.5-3 抽屉【阅读态】蓝图(瘦身定稿)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
┌──────────────────────────────┐
|
|
69
|
+
│ Pi Agent SDK │ ← 标题
|
|
70
|
+
│ 来源 · 2026-06-10 · 查看原文 │ ← 元信息一行:类型中文 · 更新日期 ·(仅 source 页)原文链接
|
|
71
|
+
│ [ 问这一页 ] [ + 邻居 ] │ ← 动作条,仅此两个;孤岛节点额外显示 [ 帮它链入知识库 ]
|
|
72
|
+
├──────────────────────────────┤
|
|
73
|
+
│ 正文 markdown │ ← wikilink 可点:抽屉内换页 + 图谱 focusNode 联动高亮
|
|
74
|
+
│ (置信度标注随正文自然呈现) │
|
|
75
|
+
└──────────────────────────────┘
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**去除清单**(对照旧版札记栏,逐项有理由):
|
|
79
|
+
|
|
80
|
+
| 旧版元素 | 处置 | 理由 |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| 学习队列 / "从这里开始" / 札记笔记 | 去(作者拍板) | 学习系统三件套整体不做 |
|
|
83
|
+
| "摘要"区块 | **迁移至 hover 预览卡**(见 D4.5-7) | 摘要的价值在"读前决策"(图上扫视时判断要不要点开),不在"阅读中"(正文第一段就在眼前)。旧版的别扭是住错了房间,不是摘要无价值——抽屉内不设摘要区,摘要搬到悬停预览 |
|
|
84
|
+
| 置信度独立列表 | 去区块 | 置信度标注本就写在页面正文里,渲染时自然呈现;单独列表是又一个派生重复区。**不是砍特色,是去重复** |
|
|
85
|
+
| 相邻节点列表 | 去 | 关系归图谱管:正文 wikilink 可点 + "+邻居"一键扩选区 + 左边整张图就是关系视图 |
|
|
86
|
+
| "查看来源"大按钮 | 收纳 | 溯源保留(数据可信的根基),收成元信息行小链接 |
|
|
87
|
+
| `kind · sourcePath` 技术化 meta | 改写 | 类型改中文(实体/主题/来源),完整文件路径藏进"查看原文",补更新日期 |
|
|
88
|
+
|
|
89
|
+
设计原则一句话:**抽屉负责内容,图谱负责关系,凡从正文派生的信息不重复展示。**
|
|
90
|
+
|
|
91
|
+
- 不做抽屉内浏览历史栈(wikilink 点击直接换内容,避免抽屉变浏览器)。
|
|
92
|
+
- 离线 HTML 内置 reader 同步微调 meta 行(中文类型 + 日期),保持两端一致;离线 reader 其余结构已是瘦身版,不动。
|
|
93
|
+
|
|
94
|
+
### D4.5-4 选区态修订 + 动作映射表完整版(修订 stage-4 D6)
|
|
95
|
+
|
|
96
|
+
| 选区类型 | 统计卡显示 | 动作 |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| **单节点(新增行)** | **不显示统计卡** | 总结这一页 / 它和谁有关 / 在对话中引用 |
|
|
99
|
+
| 单节点且为孤岛 | 不显示 | 上述 + 帮它链入知识库 |
|
|
100
|
+
| 单社区 | N 页 · M 条内链 | 总结这一簇 / 找知识缺口 / 生成主题页 |
|
|
101
|
+
| 两社区 | 两簇间 K 条链接 | 为什么(没)联系 / 找潜在桥梁 / 对比这两块 |
|
|
102
|
+
| ≥2 节点多选,互有内链 | N 页 · M 条内链 | 总结这一组 / 探索它们的关系 |
|
|
103
|
+
| ≥2 节点多选,零内链 | N 页 · 无相互链接 | 探索潜在联系 / 对比异同 |
|
|
104
|
+
|
|
105
|
+
修订要点:
|
|
106
|
+
|
|
107
|
+
1. ❗ **修复 unlinked 误触发**:单节点选区不得落入"零内链多选"剧本(这就是"探索潜在联系"出现在单节点上的 bug 根源)
|
|
108
|
+
2. 统计卡仅在 ≥2 节点时显示;"孤立"计数仅在 >0 时出现(不显示恒零项)
|
|
109
|
+
3. 自由输入框降权:占位文案改"补充说明(可选)",视觉弱化,动作按钮是主路径
|
|
110
|
+
4. **可发现性**:选区态首行常驻浅字提示 "Shift+点击 增删节点"
|
|
111
|
+
5. Shift 失效排查:实施第一步先在真实浏览器复现作者"按了没反应"的场景,修复后补回归断言(具体原因实施时查明并记录)
|
|
112
|
+
|
|
113
|
+
### D4.5-5 图谱搜索(两端)
|
|
114
|
+
|
|
115
|
+
- `Cmd/Ctrl + F`(图谱视图聚焦时)浮出搜索框;输入即时:命中节点高亮、其余淡化;`Enter` 视口飞向下一个命中(依赖 D4.5-1 先行);`Esc` 退出恢复
|
|
116
|
+
- 复用引擎既有 helper(`buildSearchIndex` / `applySearchToNodeIds` / `buildSearchHaystack`——6.2 的测试至今保护着它们)
|
|
117
|
+
- ❗ 测试反转说明:`tests/graph-html-search.regression-1.sh` 在阶段四被改写为断言"旧搜索 UI 不存在",本阶段需再次改写为断言**新搜索 UI 存在**——这是预期内的轮回,不是反复
|
|
118
|
+
|
|
119
|
+
### D4.5-6 社区聚焦列表(兼图例,两端)
|
|
120
|
+
|
|
121
|
+
- 画布左上角小图例:每社区一行 = 色块 + 社区名 + 页数
|
|
122
|
+
- 一物三用:解释团块颜色含义(当前用户全靠猜)/ hover 高亮整簇 / 点击 = 选中该社区(接 D4.5-4 选区态)+ 视口飞至该簇
|
|
123
|
+
- 折叠为小图标可收起,状态存本机(浏览状态不入库文件,沿用 stage-4 D9 原则)
|
|
124
|
+
|
|
125
|
+
### D4.5-7 节点默认态瘦身 + hover 预览卡(配套设计)
|
|
126
|
+
|
|
127
|
+
- 默认态:**一行标题 + 类型色条**(左边条颜色已编码类型——ENTITY 红、SOURCE 绿等——文字行直接删)
|
|
128
|
+
- 权重数字(`priority/weight`)从默认态移除,hover/选中展开完整卡片时显示
|
|
129
|
+
- **hover 预览卡**(瘦身的另一半:瘦下去的信息从悬停里长回来):悬停节点浮出小卡——标题 + 类型中文 + **摘要两三行**。摘要来源:❗ graph-data 节点**无 summary 字段**(已查证,字段仅 content/label/type/community/source_path),从 `content` 现场提取首个有效正文段落截断,复用引擎已有正文清洗函数(`stripAtlasMarkdown`,A 级搬运已在 model 模块);content 为空则只显示标题+类型。预览卡是只读浮层,不可交互、跟随移开即逝、有 ~300ms 延迟防误触
|
|
130
|
+
- hover/选中态(节点本体):展开为现有完整卡片
|
|
131
|
+
- 密度策略保持不动(大库自动降级到紧凑标签/圆点的逻辑已在),本条只是把"卡片档"瘦一号;**点状/紧凑档的节点同样有 hover 预览卡**(大库下预览卡价值更高)
|
|
132
|
+
- 验收用 `graph-interactive-dense` fixture 确认密度降级路径不受影响
|
|
133
|
+
- 两端同享(离线 HTML 白拿预览卡);AI 生成真摘要(消化时写入页面元数据、管线优先读取)是内容质量升级,**本阶段不做**,记入 D4.5-9
|
|
134
|
+
|
|
135
|
+
### D4.5-8 工作台抽屉阅读态的数据来源
|
|
136
|
+
|
|
137
|
+
复用阶段二引用预览的页面读取 API(`/api/refs` 体系),不新增后端端点。GraphPanel 因 d5a83f8 后体量偏大,允许拆分子组件文件(GraphReader / GraphSelection),属于本阶段直接产生的合理拆分,不算顺手重构。
|
|
138
|
+
|
|
139
|
+
### D4.5-9 明确不做
|
|
140
|
+
|
|
141
|
+
| 不做 | 原因 |
|
|
142
|
+
|---|---|
|
|
143
|
+
| 学习队列 / 学习路径 / 札记笔记 | 作者拍板:等真实使用后按工作台语境重新设计,不照搬旧版 |
|
|
144
|
+
| 抽屉内浏览历史栈(前进/后退) | 抽屉不是浏览器;wikilink 直接换页够用 |
|
|
145
|
+
| 缩放惯性 / 动画曲线调优 | 先把基础导航做对 |
|
|
146
|
+
| AI 生成真摘要(消化时写入页面元数据) | 内容管线改动,不混进 UI 收尾;hover 预览卡先用正文首段,管线升级后自动变好 |
|
|
147
|
+
| 移动端触控全套手势 | 桌面优先;wheel 事件天然覆盖触控板,触屏完整支持留 Tauri 阶段 |
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## §2 实施面
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
packages/graph-engine/
|
|
155
|
+
├── render/ 视口交互接线(wheel/drag/dblclick + 小地图联动)、节点默认态瘦身、
|
|
156
|
+
│ 搜索 UI、社区图例、离线 reader meta 微调
|
|
157
|
+
├── select/ 动作映射表修订(单节点行 + unlinked 修复 + 统计卡条件)
|
|
158
|
+
└── index.ts 视口控制 API 暴露(fitView / focusNode 带飞行)
|
|
159
|
+
|
|
160
|
+
workbench/web/
|
|
161
|
+
├── GraphPanel 拆分:GraphReader(阅读态)+ GraphSelection(选区态),悬浮窗删除
|
|
162
|
+
└── 右抽屉接线:阅读态复用引用预览的 markdown 渲染与页面读取
|
|
163
|
+
|
|
164
|
+
tests/
|
|
165
|
+
├── 引擎单测:映射表六行剧本、视口数学接线、瘦身 DOM、搜索高亮
|
|
166
|
+
└── 回归:graph-html-search 反转为"新搜索 UI 存在";图例/导航钩子断言
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
后端:**零改动**。离线 HTML:引擎升级自动获得导航/搜索/图例(两端红利)。
|
|
170
|
+
|
|
171
|
+
## §3 验收剧本(给实施 plan 引用)
|
|
172
|
+
|
|
173
|
+
1. **导航**:滚轮以指针为中心缩放;空白拖拽平移;双击空白回全图(带缓动);小地图框联动;**离线 HTML 双击打开后同样全部可用**。**丝滑判据**:①缩放平移期间 DOM 断言节点元素的内联样式不变化(只有内容层 transform 变);②对 dense fixture(200+ 节点)连续滚轮 3 秒,帧率不低于 50fps(Playwright trace 或性能面板取证,环境不支持则标 manual);③触控板与鼠标滚轮各自体感正常(manual);④zoom out 节点自动降档、zoom in 长回卡片,切换无闪跳
|
|
174
|
+
2. **点击**:单击节点 → 右抽屉阅读态(标题/元信息/双动作/正文),无悬浮窗;抽屉内**不存在**队列/摘要/置信度列表/邻居区块;正文 wikilink 点击换页且图上高亮跟随
|
|
175
|
+
3. **选区**:Shift+点第二节点 → 抽屉切选区态且首行有 Shift 提示;单节点无统计卡、动作为单节点剧本、**"探索潜在联系"不出现**;点社区 → 统计与动作正确;孤岛单节点出现"帮它链入知识库"
|
|
176
|
+
4. **搜索**:Cmd+F → 输入 → 命中高亮其余淡化 → Enter 飞向命中 → Esc 恢复;离线 HTML 同样可用
|
|
177
|
+
5. **图例**:左上角社区列表与团块颜色一致;点击 → 选中整簇 + 视口飞至
|
|
178
|
+
6. **节点**:默认一行 + 色条;hover 节点本体展开完整卡,同时浮出预览卡(标题/类型中文/正文首段摘要 2-3 行);content 为空的节点预览卡无摘要不报错;dense fixture 下密度降级正常且点状档同样有预览卡
|
|
179
|
+
7. **主题**:以上全部在山水 / 墨夜两主题下正常
|
|
180
|
+
8. **自动化**:主仓库 JS 测试 / regression / typecheck / 引擎测试 / 双产物构建全绿
|
|
181
|
+
|
|
182
|
+
## §4 风险
|
|
183
|
+
|
|
184
|
+
| 风险 | 对策 |
|
|
185
|
+
|---|---|
|
|
186
|
+
| 视口变换混进节点坐标,破坏钉扎 | D4.5-1 已写死"模型坐标与观察矩阵正交";引擎单测断言:缩放平移后钉位模型坐标不变 |
|
|
187
|
+
| Shift 失效根因未知 | 实施第一步真实浏览器复现,根因记录进 progress decision_log |
|
|
188
|
+
| graph-html-search 测试二次反转引起困惑 | D4.5-5 已注明轮回原因,commit message 同步说明 |
|
|
189
|
+
| GraphPanel 拆分引入回归 | 拆分是纯移动 + 接线,现有 web 测试(selection prompt / api / wiki-link)必须保持绿 |
|
|
190
|
+
|
|
191
|
+
## Changelog
|
|
192
|
+
|
|
193
|
+
- 2026-06-13 v3(导航丝滑规格):作者用旧版生成真实库图谱实测"缩放不丝滑"——D4.5-1 从"有缩放"升级为"丝滑规格":诊断旧版四病根(无 rAF 帧合并 / 高频路径混重活 / 设备 delta 不区分 / 无 GPU 合成层),定丝滑六条(单层合成变换、帧合并、设备归一化、跟手零动画+跳转缓动、语义缩放、高频降载),验收剧本第 1 条补丝滑判据(含 dense fixture 50fps 基准)。
|
|
194
|
+
- 2026-06-13 v2(摘要处置修订):作者反馈摘要应保留——修正 v1 把"摘要"与"摘要区"混为一谈的判断。摘要的价值在读前决策(图上扫视),不在阅读中(正文在眼前):抽屉内仍无摘要区,摘要迁移至 **hover 预览卡**(D4.5-7,与节点瘦身配套:瘦下去的信息从悬停长回来)。已查证 graph-data 无 summary 字段,预览卡从 content 现场提取首段(复用 stripAtlasMarkdown),零数据层改动;AI 真摘要管线列入明确不做(留内容质量升级阶段)。验收剧本第 6 条同步。
|
|
195
|
+
- 2026-06-13 v1:首版。来源:作者实测五问题 + 阶段四验收裁决;含 D4.5-1~9、动作映射表完整版(修订 stage-4 D6)、抽屉瘦身去留表、实施面与验收剧本。
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# 可拖动预览区与侧栏折叠设计
|
|
2
|
+
|
|
3
|
+
状态:已实现并验证
|
|
4
|
+
|
|
5
|
+
创建日期:2026-05-28
|
|
6
|
+
|
|
7
|
+
实现日期:2026-05-28
|
|
8
|
+
|
|
9
|
+
## 背景
|
|
10
|
+
|
|
11
|
+
当前界面是左侧知识库导航、中间对话、右侧预览的三段式布局。左侧栏固定 270px,右侧预览打开后固定 420px。这个设计稳定,但在直接预览 HTML/PDF/页面产物时,右侧区域偏窄,用户常常需要全屏才能看清内容;全屏又会完全遮住对话上下文。
|
|
12
|
+
|
|
13
|
+
本设计补强现有产品方向:对话仍是主屏,右侧预览仍是辅助面板,但允许用户在“边聊边看”和“重点看预览”之间快速调整空间。
|
|
14
|
+
|
|
15
|
+
## 目标
|
|
16
|
+
|
|
17
|
+
- 右侧预览区可以通过鼠标拖动左边缘变宽或变窄。
|
|
18
|
+
- 左侧知识库栏可以折叠成窄图标栏,释放更多横向空间。
|
|
19
|
+
- 窄图标栏的每个按钮都有悬停文字提示。
|
|
20
|
+
- 用户调整后的侧栏状态和预览宽度会被记住。
|
|
21
|
+
- 保留现有全屏预览按钮,作为只看产物的极端模式。
|
|
22
|
+
|
|
23
|
+
## 不做什么
|
|
24
|
+
|
|
25
|
+
- 不把三栏全部做成自由拖动。左侧栏是导航区,折叠已经能解决占空间问题。
|
|
26
|
+
- 不新增 npm 依赖。
|
|
27
|
+
- 不改变知识库、对话、产物的数据结构。
|
|
28
|
+
- 不改变右侧预览的内容渲染方式。
|
|
29
|
+
|
|
30
|
+
## 方案选择
|
|
31
|
+
|
|
32
|
+
采用“右侧预览可拖动 + 左侧栏折叠为窄图标栏”。
|
|
33
|
+
|
|
34
|
+
对比过三个方向:
|
|
35
|
+
|
|
36
|
+
- 只让右侧预览可拖动:最稳,改动集中,但左侧仍占固定空间。
|
|
37
|
+
- 三栏都可拖动:自由度最高,但容易拖乱界面,状态和边界复杂度更高。
|
|
38
|
+
- 预设宽度 + 全屏:简单,但不如拖动自然。
|
|
39
|
+
|
|
40
|
+
最终方案在第一个方向上补上左侧栏折叠,既保留清晰心智,又能明显释放预览空间。
|
|
41
|
+
|
|
42
|
+
## 交互设计
|
|
43
|
+
|
|
44
|
+
### 左侧栏
|
|
45
|
+
|
|
46
|
+
完整侧栏保持当前结构:顶部品牌和操作按钮,下面是知识库与对话列表,底部是新建和添加入口。
|
|
47
|
+
|
|
48
|
+
新增一个“切换侧栏”按钮,放在侧栏顶部,与刷新、设置同级。点击后侧栏在两种状态间切换:
|
|
49
|
+
|
|
50
|
+
- 完整侧栏:显示知识库、对话、按钮文字。
|
|
51
|
+
- 窄图标栏:只显示核心图标,不显示长文字。
|
|
52
|
+
|
|
53
|
+
窄图标栏至少包含:
|
|
54
|
+
|
|
55
|
+
- 展开侧栏
|
|
56
|
+
- 当前知识库入口
|
|
57
|
+
- 新建知识库
|
|
58
|
+
- 添加现有库
|
|
59
|
+
- 设置
|
|
60
|
+
|
|
61
|
+
所有图标按钮都需要悬停提示,例如“展开侧栏”“当前知识库”“新建知识库”“添加现有库”“设置”。
|
|
62
|
+
|
|
63
|
+
折叠状态不应该让用户迷路:窄栏始终保留展开按钮,且当前知识库入口要能表达“当前仍在某个库里”。
|
|
64
|
+
|
|
65
|
+
### 右侧预览
|
|
66
|
+
|
|
67
|
+
右侧预览打开时,在它的左边缘显示一条细拖动把手。
|
|
68
|
+
|
|
69
|
+
交互规则:
|
|
70
|
+
|
|
71
|
+
- 按住把手向左拖,预览区变宽。
|
|
72
|
+
- 按住把手向右拖,预览区变窄。
|
|
73
|
+
- 双击把手,恢复默认宽度。
|
|
74
|
+
- 关闭预览区后释放空间。
|
|
75
|
+
- 再次打开预览区时使用上次宽度。
|
|
76
|
+
- 全屏按钮保留,进入全屏后不显示拖动把手。
|
|
77
|
+
|
|
78
|
+
### 宽度边界
|
|
79
|
+
|
|
80
|
+
右侧预览宽度需要限制在合理范围内:
|
|
81
|
+
|
|
82
|
+
- 默认宽度:420px。
|
|
83
|
+
- 最小宽度:360px,保证预览和标签仍可用。
|
|
84
|
+
- 最大宽度:视口宽度的 70%,但必须给中间对话保留至少 420px。
|
|
85
|
+
|
|
86
|
+
当窗口太窄时,优先保证对话区可用;移动端沿用现有逻辑,右侧预览占满屏幕,不启用拖动。
|
|
87
|
+
|
|
88
|
+
### 状态记忆
|
|
89
|
+
|
|
90
|
+
使用本地浏览器存储记住:
|
|
91
|
+
|
|
92
|
+
- 侧栏是否折叠。
|
|
93
|
+
- 右侧预览宽度。
|
|
94
|
+
|
|
95
|
+
刷新页面后恢复上次状态。异常值需要自动回到默认值,避免用户因为窗口变化进入不可用布局。
|
|
96
|
+
|
|
97
|
+
## 页面结构
|
|
98
|
+
|
|
99
|
+
整体仍是三段式:
|
|
100
|
+
|
|
101
|
+
- 左:导航区,完整侧栏或窄图标栏。
|
|
102
|
+
- 中:对话区,占用剩余空间。
|
|
103
|
+
- 右:预览区,打开时显示,宽度可调整。
|
|
104
|
+
|
|
105
|
+
中间对话区不设置固定宽度,而是随左右两侧变化自动伸缩。这样右侧拉宽时,对话区自然变窄;右侧收窄或关闭时,对话区自然变宽。
|
|
106
|
+
|
|
107
|
+
## 实现边界
|
|
108
|
+
|
|
109
|
+
预计改动集中在:
|
|
110
|
+
|
|
111
|
+
- `web/src/App.tsx`:保存侧栏状态、预览宽度,并传给组件。
|
|
112
|
+
- `web/src/components/Sidebar.tsx`:支持完整侧栏和窄图标栏两种形态。
|
|
113
|
+
- `web/src/components/RightDrawer.tsx`:增加拖动把手和宽度回调。
|
|
114
|
+
- `web/src/index.css`:增加折叠侧栏、拖动把手、宽度状态的样式。
|
|
115
|
+
|
|
116
|
+
不需要改后端。
|
|
117
|
+
|
|
118
|
+
## 可访问性与细节
|
|
119
|
+
|
|
120
|
+
- 侧栏切换按钮需要有明确的 `aria-label`。
|
|
121
|
+
- 拖动把手需要可聚焦,并提供键盘兜底:左右方向键调整宽度,Home 或双击恢复默认宽度。
|
|
122
|
+
- 拖动中避免选中文本。
|
|
123
|
+
- 拖动中给把手明确的 hover/active 状态。
|
|
124
|
+
- 窄图标栏的提示文案使用现有 tooltip 样式。
|
|
125
|
+
|
|
126
|
+
## 验收标准
|
|
127
|
+
|
|
128
|
+
1. 点击侧栏切换按钮,侧栏能在完整侧栏和窄图标栏之间切换。
|
|
129
|
+
2. 窄图标栏按钮悬停时都有清楚提示。
|
|
130
|
+
3. 打开右侧预览后,拖动左边缘能改变宽度。
|
|
131
|
+
4. 双击拖动把手能恢复默认预览宽度。
|
|
132
|
+
5. 预览区拉宽时,中间对话不会被挤到无法使用。
|
|
133
|
+
6. 刷新页面后,侧栏折叠状态和预览宽度仍保持。
|
|
134
|
+
7. 移动端或窄屏下不启用拖动,预览继续按现有方式占满屏幕。
|
|
135
|
+
|
|
136
|
+
## 验证计划
|
|
137
|
+
|
|
138
|
+
- 运行前端检查。
|
|
139
|
+
- 启动应用。
|
|
140
|
+
- 打开已有 HTML 产物预览。
|
|
141
|
+
- 手动切换侧栏折叠状态。
|
|
142
|
+
- 手动拖动右侧预览宽度并双击恢复。
|
|
143
|
+
- 刷新页面确认状态保持。
|
|
144
|
+
- 缩小窗口确认不会出现不可用布局。
|
|
145
|
+
|
|
146
|
+
## 实施结果
|
|
147
|
+
|
|
148
|
+
已按本文档方案实现:
|
|
149
|
+
|
|
150
|
+
- 左侧栏支持完整侧栏与窄图标栏切换。
|
|
151
|
+
- 窄图标栏保留展开、当前知识库、刷新、新建、添加、设置入口。
|
|
152
|
+
- 窄图标栏按钮均有悬停提示。
|
|
153
|
+
- 右侧预览支持拖动左边缘调整宽度。
|
|
154
|
+
- 双击拖动边缘恢复默认宽度。
|
|
155
|
+
- 侧栏折叠状态和预览宽度会在本地保留。
|
|
156
|
+
- 移动端沿用全屏预览,不显示拖动边缘。
|
|
157
|
+
|
|
158
|
+
验证结果:
|
|
159
|
+
|
|
160
|
+
- `npm run typecheck` 通过。
|
|
161
|
+
- 受控浏览器验证默认预览宽度为 420px。
|
|
162
|
+
- 受控浏览器验证拖动后预览区可变宽,并保持对话区可用。
|
|
163
|
+
- 受控浏览器验证双击拖动边缘可恢复默认宽度。
|
|
164
|
+
- 受控浏览器验证侧栏可折叠为 52px 窄图标栏,刷新后仍保持。
|
|
165
|
+
- 受控浏览器验证移动端预览占满屏幕,拖动边缘隐藏。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 设置面板滚动修复
|
|
2
|
+
|
|
3
|
+
状态:已实现并验证
|
|
4
|
+
|
|
5
|
+
创建日期:2026-05-28
|
|
6
|
+
|
|
7
|
+
实现日期:2026-05-28
|
|
8
|
+
|
|
9
|
+
## 背景
|
|
10
|
+
|
|
11
|
+
设置面板已经承载认证状态、API key、环境变量、模型角色和 Skill 加载。内容高度超过部分屏幕时,弹窗本身没有限制高度,内容区也没有独立滚动,导致底部设置不可见。
|
|
12
|
+
|
|
13
|
+
## 目标
|
|
14
|
+
|
|
15
|
+
- 设置面板在普通桌面窗口和较矮窗口里都能看完整内容。
|
|
16
|
+
- 标题和关闭按钮始终保留在弹窗顶部。
|
|
17
|
+
- 设置项在弹窗内部滚动,不影响背后的工作台布局。
|
|
18
|
+
- 不改变设置项的数据逻辑,不新增依赖。
|
|
19
|
+
|
|
20
|
+
## 方案
|
|
21
|
+
|
|
22
|
+
采用“弹窗外框限高 + 内容区内部滚动”:
|
|
23
|
+
|
|
24
|
+
- 弹窗最高不超过屏幕高度,并保留上下边距。
|
|
25
|
+
- 弹窗分成顶部标题区和内容区。
|
|
26
|
+
- 内容区独立滚动,确保底部 Skill 加载设置可达。
|
|
27
|
+
|
|
28
|
+
暂不改成独立设置页,也暂不拆分设置标签。当前设置仍是辅助操作,用弹窗更符合工作台心智;等设置项继续增多后,再考虑拆成“认证 / 模型 / Skill”等页签。
|
|
29
|
+
|
|
30
|
+
## 验收标准
|
|
31
|
+
|
|
32
|
+
1. 打开设置后,底部 Skill 加载区可见或可通过滚动到达。
|
|
33
|
+
2. 设置内容滚动时,标题和关闭按钮仍在顶部。
|
|
34
|
+
3. 不影响 API key 输入、模型角色选择和 Skill 开关。
|
|
35
|
+
4. 前端检查和构建通过。
|
|
36
|
+
|
|
37
|
+
## 实施结果
|
|
38
|
+
|
|
39
|
+
已按本文方案实现:
|
|
40
|
+
|
|
41
|
+
- 设置弹窗增加屏幕高度上限。
|
|
42
|
+
- 弹窗内部采用标题区 + 可滚动内容区。
|
|
43
|
+
- 内容区增加最小高度保护,避免矮窗口下滚动区域被撑开。
|
|
44
|
+
|
|
45
|
+
验证结果:
|
|
46
|
+
|
|
47
|
+
- `npm run typecheck` 通过。
|
|
48
|
+
- `npm run build --workspace=@llm-wiki-agent/web` 通过。
|
|
49
|
+
- `npm run lint --workspace=@llm-wiki-agent/web` 通过。
|
|
50
|
+
- Chrome 中打开设置面板,确认底部 Skill 加载区可见,窗口不再遮挡底部内容。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@llm-wiki-agent/server",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "llm-wiki-agent 后端:Hono + pi-coding-agent SDK",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"prebuild": "npm run build -w @llm-wiki/graph-engine",
|
|
11
|
+
"dev": "tsx watch src/index.ts",
|
|
12
|
+
"build": "tsc -p tsconfig.json",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"pretypecheck": "npm run build -w @llm-wiki/graph-engine",
|
|
15
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@earendil-works/pi-agent-core": "^0.79.4",
|
|
19
|
+
"@earendil-works/pi-ai": "^0.79.4",
|
|
20
|
+
"@earendil-works/pi-coding-agent": "^0.79.4",
|
|
21
|
+
"@hono/node-server": "^1.13.0",
|
|
22
|
+
"@llm-wiki/graph-engine": "0.0.0",
|
|
23
|
+
"hono": "^4.6.0",
|
|
24
|
+
"typebox": "^1.1.38"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^22.0.0",
|
|
28
|
+
"tsx": "^4.19.0",
|
|
29
|
+
"typescript": "^5.6.0"
|
|
30
|
+
}
|
|
31
|
+
}
|