From 00483064e2a170bfef1e553c9f1bc42544d3de70 Mon Sep 17 00:00:00 2001 From: Lan_zhijiang Date: Wed, 19 Aug 2026 11:20:30 +0800 Subject: [PATCH 1/7] feat(info-base): implement graph navigation experience - Add bounded graph retrieval, recall routing, previews, and entity inspectors - Rework graph presentation and remove low-value unit-test infrastructure --- .changeset/graph-navigation-retrieval.md | 7 + .github/workflows/ci.yml | 9 - AGENTS.md | 4 +- apps/client-web/package.json | 15 +- apps/client-web/src/App.vue | 2 + .../BlockInspectorPopup.vue | 2 +- .../info-base/BlockNode/BlockNode.scss | 79 +- .../info-base/BlockNode/BlockNode.ts | 5 +- .../info-base/BlockNode/BlockNode.vue | 38 +- .../CommunityNavigator.scss | 39 - .../CommunityNavigator/CommunityNavigator.vue | 55 -- .../LayoutSelector/LayoutSelector.scss | 16 - .../LayoutSelector/LayoutSelector.vue | 97 --- .../PreviewRenderer/PreviewRenderer.ts | 3 + .../PreviewRenderer/PreviewRenderer.vue | 13 + .../info-base/RelationEdge/RelationEdge.scss | 78 +- .../info-base/RelationEdge/RelationEdge.ts | 7 +- .../info-base/RelationEdge/RelationEdge.vue | 27 +- .../RelationInspectorPopup.ts | 5 + .../RelationInspectorPopup.vue | 91 +++ .../SolvedContentPopup/SolvedContentPopup.vue | 2 +- .../info-base/resolvers/ContentPreview.vue | 77 ++ .../obsrv/LogEntry/LogEntry.spec.ts | 90 --- .../obsrv/LogsViewer/LogsViewer.spec.ts | 236 ------ .../src/components/recall/RecallSearch.vue | 196 +++++ .../src/components/recall/recall-search.ts | 11 + .../src/composables/layouts/index.ts | 4 - .../composables/layouts/useCircularLayout.ts | 80 -- .../src/composables/layouts/useDagreLayout.ts | 109 --- .../src/composables/layouts/useGridLayout.ts | 71 -- .../composables/layouts/useRadialLayout.ts | 202 ----- .../src/composables/use-either.spec.ts | 87 -- .../composables/useAllCommunitiesLayout.ts | 303 ------- .../src/composables/useCommunityDetection.ts | 132 --- .../src/composables/useForceLayout.ts | 194 ----- .../src/composables/useLayoutManager.ts | 157 ---- .../src/composables/useTopologyDetection.ts | 341 -------- apps/client-web/src/core.spec.ts | 14 - apps/client-web/src/core.ts | 10 + apps/client-web/src/router.ts | 66 +- .../src/views/info-base/graph/graph-model.ts | 56 ++ .../src/views/info-base/graph/graph.scss | 126 ++- .../src/views/info-base/graph/graph.vue | 651 ++++++++------- .../src/views/info-base/list/list.vue | 5 + apps/client-web/tests/setup.ts | 7 - apps/client-web/tsconfig.node.json | 1 - apps/client-web/vitest.config.ts | 70 -- .../useWebExtensionStorage.spec.ts | 48 -- apps/client-webext/package.json | 3 +- apps/client-webext/tests/setup.ts | 2 - apps/client-webext/vitest.config.ts | 19 - .../client-runtime-and-delegation.md | 4 + docs/30-unit-tdd/info-base.md | 31 + .../contentEmail/contentEmailPreview.vue | 49 ++ .../contentMailFactPreview.vue | 38 + .../contentMimePartPreview.vue | 30 + extensions/mail/src/resolver.ts | 10 +- .../contentTweet/contentTweetPreview.vue | 49 ++ extensions/twitter/src/resolver.ts | 2 + package.json | 10 +- packages/core/package.json | 4 - packages/core/src/auth/store.test.ts | 33 - packages/core/src/auth/store.ts | 6 +- packages/core/src/config/schema.test.ts | 45 -- .../src/database/runtime-contract.test.ts | 21 - packages/core/src/extension/host.test.ts | 362 --------- packages/core/src/extension/model.test.ts | 29 - .../src/extension/postgrest-state.test.ts | 121 --- packages/core/src/extension/registry.test.ts | 89 --- .../src/graph-navigation-retrieval/index.ts | 1 + .../src/graph-navigation-retrieval/main.ts | 385 +++++++++ packages/core/src/index.ts | 17 +- packages/core/src/info-base/block.test.ts | 75 -- packages/core/src/info-base/block.ts | 24 + packages/core/src/info-base/relation.ts | 33 +- packages/core/src/info-base/resolvers/base.ts | 13 +- .../src/info-base/resolvers/contracts.test.ts | 79 -- .../resolvers/semantic-content.test.ts | 81 -- packages/core/src/info-base/router.ts | 16 +- .../core/src/info-base/storages/http.test.ts | 41 - .../src/info-base/storages/postgresql.test.ts | 71 -- .../core/src/lexical-retrieval/main.test.ts | 51 -- packages/core/src/peer/http.test.ts | 99 --- packages/core/src/peer/manager.test.ts | 121 --- .../core/src/semantic-retrieval/main.test.ts | 43 - .../core/src/sink/graph/community-types.ts | 25 - .../core/src/sink/graph/distance-matrix.ts | 154 ---- packages/core/src/sink/graph/graph-types.ts | 120 --- packages/core/src/sink/graph/index.ts | 6 - packages/core/src/sink/graph/layout-types.ts | 160 ---- packages/core/src/sink/graph/mds.ts | 113 --- .../core/src/sink/graph/topology-types.ts | 59 -- packages/core/src/sink/index.ts | 1 - packages/core/vitest.config.ts | 11 - pnpm-lock.yaml | 752 ------------------ scripts/check-local-runtime-contract.mjs | 6 +- scripts/core-release-lib.test.mjs | 114 --- scripts/database-provider.test.mjs | 178 ----- scripts/database-runtime-external.test.mjs | 128 --- scripts/database-runtime-peer.test.mjs | 75 -- .../native-extension-distribution.test.mjs | 315 -------- scripts/ui-source.test.mjs | 108 --- scripts/vitest.config.ts | 11 - vitest.config.ts | 18 - 104 files changed, 1866 insertions(+), 6533 deletions(-) create mode 100644 .changeset/graph-navigation-retrieval.md delete mode 100644 apps/client-web/src/components/info-base/CommunityNavigator/CommunityNavigator.scss delete mode 100644 apps/client-web/src/components/info-base/CommunityNavigator/CommunityNavigator.vue delete mode 100644 apps/client-web/src/components/info-base/LayoutSelector/LayoutSelector.scss delete mode 100644 apps/client-web/src/components/info-base/LayoutSelector/LayoutSelector.vue create mode 100644 apps/client-web/src/components/info-base/PreviewRenderer/PreviewRenderer.ts create mode 100644 apps/client-web/src/components/info-base/PreviewRenderer/PreviewRenderer.vue create mode 100644 apps/client-web/src/components/info-base/RelationInspectorPopup/RelationInspectorPopup.ts create mode 100644 apps/client-web/src/components/info-base/RelationInspectorPopup/RelationInspectorPopup.vue create mode 100644 apps/client-web/src/components/info-base/resolvers/ContentPreview.vue delete mode 100644 apps/client-web/src/components/obsrv/LogEntry/LogEntry.spec.ts delete mode 100644 apps/client-web/src/components/obsrv/LogsViewer/LogsViewer.spec.ts create mode 100644 apps/client-web/src/components/recall/RecallSearch.vue create mode 100644 apps/client-web/src/components/recall/recall-search.ts delete mode 100644 apps/client-web/src/composables/layouts/index.ts delete mode 100644 apps/client-web/src/composables/layouts/useCircularLayout.ts delete mode 100644 apps/client-web/src/composables/layouts/useDagreLayout.ts delete mode 100644 apps/client-web/src/composables/layouts/useGridLayout.ts delete mode 100644 apps/client-web/src/composables/layouts/useRadialLayout.ts delete mode 100644 apps/client-web/src/composables/use-either.spec.ts delete mode 100644 apps/client-web/src/composables/useAllCommunitiesLayout.ts delete mode 100644 apps/client-web/src/composables/useCommunityDetection.ts delete mode 100644 apps/client-web/src/composables/useForceLayout.ts delete mode 100644 apps/client-web/src/composables/useLayoutManager.ts delete mode 100644 apps/client-web/src/composables/useTopologyDetection.ts delete mode 100644 apps/client-web/src/core.spec.ts create mode 100644 apps/client-web/src/views/info-base/graph/graph-model.ts delete mode 100644 apps/client-web/tests/setup.ts delete mode 100644 apps/client-web/vitest.config.ts delete mode 100644 apps/client-webext/composables/useWebExtensionStorage.spec.ts delete mode 100644 apps/client-webext/tests/setup.ts delete mode 100644 apps/client-webext/vitest.config.ts create mode 100644 extensions/mail/src/components/contentEmail/contentEmailPreview.vue create mode 100644 extensions/mail/src/components/contentMailFact/contentMailFactPreview.vue create mode 100644 extensions/mail/src/components/contentMimePart/contentMimePartPreview.vue create mode 100644 extensions/twitter/src/components/contentTweet/contentTweetPreview.vue delete mode 100644 packages/core/src/auth/store.test.ts delete mode 100644 packages/core/src/config/schema.test.ts delete mode 100644 packages/core/src/database/runtime-contract.test.ts delete mode 100644 packages/core/src/extension/host.test.ts delete mode 100644 packages/core/src/extension/model.test.ts delete mode 100644 packages/core/src/extension/postgrest-state.test.ts delete mode 100644 packages/core/src/extension/registry.test.ts create mode 100644 packages/core/src/graph-navigation-retrieval/index.ts create mode 100644 packages/core/src/graph-navigation-retrieval/main.ts delete mode 100644 packages/core/src/info-base/block.test.ts delete mode 100644 packages/core/src/info-base/resolvers/contracts.test.ts delete mode 100644 packages/core/src/info-base/resolvers/semantic-content.test.ts delete mode 100644 packages/core/src/info-base/storages/http.test.ts delete mode 100644 packages/core/src/info-base/storages/postgresql.test.ts delete mode 100644 packages/core/src/lexical-retrieval/main.test.ts delete mode 100644 packages/core/src/peer/http.test.ts delete mode 100644 packages/core/src/peer/manager.test.ts delete mode 100644 packages/core/src/semantic-retrieval/main.test.ts delete mode 100644 packages/core/src/sink/graph/community-types.ts delete mode 100644 packages/core/src/sink/graph/distance-matrix.ts delete mode 100644 packages/core/src/sink/graph/graph-types.ts delete mode 100644 packages/core/src/sink/graph/index.ts delete mode 100644 packages/core/src/sink/graph/layout-types.ts delete mode 100644 packages/core/src/sink/graph/mds.ts delete mode 100644 packages/core/src/sink/graph/topology-types.ts delete mode 100644 packages/core/src/sink/index.ts delete mode 100644 packages/core/vitest.config.ts delete mode 100644 scripts/core-release-lib.test.mjs delete mode 100644 scripts/database-provider.test.mjs delete mode 100644 scripts/database-runtime-external.test.mjs delete mode 100644 scripts/database-runtime-peer.test.mjs delete mode 100644 scripts/native-extension-distribution.test.mjs delete mode 100644 scripts/ui-source.test.mjs delete mode 100644 scripts/vitest.config.ts delete mode 100644 vitest.config.ts diff --git a/.changeset/graph-navigation-retrieval.md b/.changeset/graph-navigation-retrieval.md new file mode 100644 index 0000000..de0dfff --- /dev/null +++ b/.changeset/graph-navigation-retrieval.md @@ -0,0 +1,7 @@ +--- +'@inkcre/core': minor +'@inkcre/ext-mail': minor +'@inkcre/ext-twitter': minor +--- + +Add peer-local graph-navigation retrieval and the required Resolver preview presentation contract. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a78369..3df851d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -204,15 +204,6 @@ jobs: --core-package packages/core/package.json --artifact-directory extensions/twitter/dist/client-web - - name: Upload unit-test evidence on failure - if: failure() - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: workspace-failure-evidence - path: test-results/vitest - if-no-files-found: ignore - retention-days: 7 - toolchain-shadow: name: Type-aware and TypeScript 7 shadow runs-on: ubuntu-latest diff --git a/AGENTS.md b/AGENTS.md index be1fd1a..b5df922 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,7 +18,7 @@ Reason in English. Communicate with humans in Chinese. - Run `svc status . --json`, then use `svc lookup --keyword` and `svc lookup --path` only for guidance required by the current pressure. - Read the active Task Packet, relevant durable owner, and nearest local `AGENTS.md` before editing. -- Resolve one semantic owner before adding durable material. Prefer code, types, tests, configuration, and CI for mechanically enforceable truth. +- Resolve one semantic owner before adding durable material. Prefer code, types, configuration, and CI for mechanically enforceable truth. - Before a reference-sensitive, logic-altering, or non-obviously-local durable mutation, state the target, objective `From -> To`, operation, blast radius, invariants, verification, and uncertainty. - Search before creating a type, utility, document, or abstraction. - Keep Task Packets compact and disposable. Add supporting entries only when a distinct owner and coordination pressure exist. @@ -31,6 +31,8 @@ Reason in English. Communicate with humans in Chinese. - Develop: `pnpm dev`, `pnpm dev:all`, or an explicit source lane documented in `docs/40-deployment/development-runtime.md`. - Required verification: `pnpm check`; required production outputs: `pnpm build`. - Shadow verification: `pnpm lint:type-aware` and `pnpm type-check:ts7`. +- Follow the organization-wide [Verification and Test Policy](https://github.com/InKCre/.github/blob/main/TESTING.md). + The admitted Playwright E2E suites do not authorize new automation by analogy. - Follow `.agents/prompts/code-for-human.md` for source changes. - Require explicit Human authorization before modifying source code and before commit, push, or external publication. Task Packet maintenance is exempt from the source gate. diff --git a/apps/client-web/package.json b/apps/client-web/package.json index 614bd90..6b75b2e 100644 --- a/apps/client-web/package.json +++ b/apps/client-web/package.json @@ -8,8 +8,7 @@ "build": "run-p type-check \"build-only {@}\" --", "preview": "vite preview", "build-only": "vite build", - "type-check": "vue-tsc --build", - "test": "pnpm --dir ../.. exec vitest --project client-web" + "type-check": "vue-tsc --build" }, "dependencies": { "@codemirror/autocomplete": "^6.20.0", @@ -23,19 +22,10 @@ "@module-federation/runtime": "^0.21.4", "@supabase/postgrest-js": "^2.84.0", "@vue-flow/background": "^1.3.2", - "@vue-flow/controls": "^1.1.3", "@vue-flow/core": "^1.48.1", - "@vue-flow/minimap": "^1.5.4", "@vueuse/core": "^14.0.0", - "d3-force": "^3.0.0", - "dagre": "^0.8.5", "dayjs": "^1.11.19", - "graphology": "^0.26.0", - "graphology-communities-louvain": "^2.0.2", - "graphology-dag": "^0.4.1", - "graphology-shortest-path": "^2.1.0", "jose": "^6.1.2", - "ml-matrix": "^6.12.1", "pinia": "^3.0.3", "vscode-json-languageservice": "^5.6.4", "vscode-languageserver-textdocument": "^1.0.12", @@ -51,12 +41,9 @@ "@module-federation/enhanced": "^0.22.0", "@module-federation/vite": "^1.1.0", "@tsconfig/node22": "^22.0.2", - "@types/d3-force": "^3.0.10", - "@types/dagre": "^0.7.53", "@types/node": "^22.16.5", "@vitejs/plugin-vue": "^6.0.1", "@vitejs/plugin-vue-jsx": "^5.1.2", - "@vue/test-utils": "^2.4.6", "@vue/tsconfig": "^0.7.0", "get-port": "^7.1.0", "npm-run-all2": "^8.0.4", diff --git a/apps/client-web/src/App.vue b/apps/client-web/src/App.vue index 6ce1849..d58aa6c 100644 --- a/apps/client-web/src/App.vue +++ b/apps/client-web/src/App.vue @@ -6,6 +6,7 @@ import router from './router' import { createInkRouterAdapter } from './router' import { INK_ROUTER_KEY } from '@inkcre/ui-web' import { useRoute } from 'vue-router' +import RecallSearch from './components/recall/RecallSearch.vue' provide(INK_ROUTER_KEY, createInkRouterAdapter(router, useRoute())) @@ -25,6 +26,7 @@ const sidebarExpanded = ref(false) + diff --git a/apps/client-web/src/components/info-base/BlockInspectorPopup/BlockInspectorPopup.vue b/apps/client-web/src/components/info-base/BlockInspectorPopup/BlockInspectorPopup.vue index fdbce2c..c0899c2 100644 --- a/apps/client-web/src/components/info-base/BlockInspectorPopup/BlockInspectorPopup.vue +++ b/apps/client-web/src/components/info-base/BlockInspectorPopup/BlockInspectorPopup.vue @@ -78,7 +78,7 @@ async function ruminate(): Promise {