@sanqianx/project-knowledge 5.0.19 → 5.0.20

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.
Files changed (200) hide show
  1. package/.agents/plugins/marketplace.json +3 -3
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/CHANGELOG.md +5 -0
  4. package/LICENSE +201 -201
  5. package/NOTICE +5 -5
  6. package/README.md +349 -349
  7. package/_modules/knowledge-engine/README.md +4 -0
  8. package/_modules/knowledge-engine/src/analysis-failures.js +39 -0
  9. package/_modules/knowledge-engine/src/analysis-worker.js +6 -2
  10. package/_modules/knowledge-engine/src/coordinator.js +7 -0
  11. package/_modules/knowledge-engine/src/headless-analyzer.js +2 -1
  12. package/_modules/knowledge-engine/src/server.js +1 -1
  13. package/_site/_test/agent-capture-mcp-ui-test.js +67 -67
  14. package/_site/_test/ai-profile-test.js +75 -75
  15. package/_site/_test/ai-vendor-presets-test.js +91 -91
  16. package/_site/_test/automatic-context-test.js +70 -70
  17. package/_site/_test/bin-cli-test.js +230 -230
  18. package/_site/_test/bridge-adapter-test.js +95 -95
  19. package/_site/_test/bridge-consumer-service-test.js +310 -310
  20. package/_site/_test/candidate-bin-content-test.js +35 -35
  21. package/_site/_test/candidate-product-assets-test.js +13 -13
  22. package/_site/_test/candidate-release-contract-test.js +14 -14
  23. package/_site/_test/capture-hook-dedup-test.js +158 -158
  24. package/_site/_test/claude-executable-discovery-test.js +28 -28
  25. package/_site/_test/claude-session-lifecycle-sweep-test.js +252 -252
  26. package/_site/_test/cli-instance-management-test.js +62 -62
  27. package/_site/_test/client-capture-restart-e2e-test.js +189 -189
  28. package/_site/_test/codex-conversation-projection-test.js +60 -60
  29. package/_site/_test/codex-marketplace-scoped-path-test.js +186 -186
  30. package/_site/_test/codex-notify-capture-e2e-test.js +101 -101
  31. package/_site/_test/codex-notify-fanout-test.js +134 -134
  32. package/_site/_test/codex-notify-upgrade-test.js +253 -253
  33. package/_site/_test/commit-boundary-freeze-test.js +147 -147
  34. package/_site/_test/commit-conversation-binding-test.js +4 -4
  35. package/_site/_test/configuration-generation-test.js +22 -22
  36. package/_site/_test/context-pack-test.js +200 -200
  37. package/_site/_test/conversation-api-test.js +10 -10
  38. package/_site/_test/conversation-origin-test.js +15 -15
  39. package/_site/_test/cross-repo-isolation-e2e-test.js +187 -187
  40. package/_site/_test/embedding-config-test.js +32 -32
  41. package/_site/_test/fixtures/fake-browser-exit.js +10 -10
  42. package/_site/_test/fixtures/fake-browser-hang.js +10 -10
  43. package/_site/_test/fixtures/integration-busy-worker.cjs +6 -6
  44. package/_site/_test/fixtures/make-git-repos.js +92 -92
  45. package/_site/_test/fixtures/retrieval-gold-queries.json +32 -32
  46. package/_site/_test/fresh-hook-reimport-test.js +53 -53
  47. package/_site/_test/fresh-product-data-test.js +56 -56
  48. package/_site/_test/git-path-compatibility-test.js +80 -80
  49. package/_site/_test/git-validation-test.js +81 -81
  50. package/_site/_test/hook-worktree-test.js +42 -42
  51. package/_site/_test/index-builder-test.js +41 -41
  52. package/_site/_test/index-error-display-contract-test.js +10 -10
  53. package/_site/_test/integration-adapters-test.js +67 -67
  54. package/_site/_test/integration-capture-setup-test.js +118 -118
  55. package/_site/_test/integration-runtime-binding-a2-test.js +566 -566
  56. package/_site/_test/integration-runtime-binding-a3-test.js +227 -227
  57. package/_site/_test/integration-runtime-binding-test.js +473 -473
  58. package/_site/_test/integration-status-scan-test.js +29 -29
  59. package/_site/_test/kb-framework-test.js +57 -57
  60. package/_site/_test/kbpath-follow-test.js +63 -63
  61. package/_site/_test/knowledge-db-test.js +144 -144
  62. package/_site/_test/knowledge-engine-client-test.js +109 -109
  63. package/_site/_test/knowledge-maintenance-test.js +40 -40
  64. package/_site/_test/knowledge-panel-ui-contract-test.js +112 -0
  65. package/_site/_test/knowledge-scopes-test.js +37 -37
  66. package/_site/_test/knowledge-storage-location-test.js +28 -28
  67. package/_site/_test/launcher-readiness-test.js +80 -80
  68. package/_site/_test/legacy-claude-session-alias-test.js +106 -106
  69. package/_site/_test/legacy-routes-removed-test.js +47 -47
  70. package/_site/_test/legacy-workbench-exclusion-test.js +92 -92
  71. package/_site/_test/live-gateway-test.js +48 -48
  72. package/_site/_test/local-marketplace-test.js +16 -16
  73. package/_site/_test/log-redaction-test.js +58 -58
  74. package/_site/_test/markdown-maintenance-test.js +11 -11
  75. package/_site/_test/model-context-windows-test.js +89 -89
  76. package/_site/_test/module-agent-start-proxy-test.js +65 -65
  77. package/_site/_test/module-artifact-integrity-test.js +27 -27
  78. package/_site/_test/module-boundary-test.js +30 -30
  79. package/_site/_test/module-bridge-eventbridge-test.js +202 -202
  80. package/_site/_test/module-dynamic-port-test.js +118 -118
  81. package/_site/_test/module-index-proxy-test.js +33 -33
  82. package/_site/_test/module-model-configuration-test.js +44 -44
  83. package/_site/_test/module-process-lifecycle-test.js +35 -35
  84. package/_site/_test/module-stream-proxy-test.js +34 -34
  85. package/_site/_test/module-terminal-restart-test.js +63 -63
  86. package/_site/_test/module-wiring-unbind-race-test.js +59 -59
  87. package/_site/_test/native-context-integrations-test.js +86 -86
  88. package/_site/_test/orphaned-claim-recovery-test.js +80 -80
  89. package/_site/_test/package-boundary-test.js +43 -42
  90. package/_site/_test/package-startup-test.js +56 -56
  91. package/_site/_test/packaged-ui-smoke-test.js +88 -88
  92. package/_site/_test/pr-consumer-contract-test.js +55 -55
  93. package/_site/_test/product-brand-contract-test.js +25 -25
  94. package/_site/_test/product-diagnostics-ui-test.js +93 -93
  95. package/_site/_test/product-import-ui-test.js +104 -104
  96. package/_site/_test/product-progress-status-test.js +12 -1
  97. package/_site/_test/project-remove-running-guard-test.js +79 -79
  98. package/_site/_test/project-store-test.js +90 -90
  99. package/_site/_test/registry-events-test.js +38 -38
  100. package/_site/_test/release-version-sync-test.js +115 -115
  101. package/_site/_test/requirement-binding-test.js +113 -113
  102. package/_site/_test/runtime-endpoint-test.js +64 -64
  103. package/_site/_test/scanner-test.js +83 -83
  104. package/_site/_test/server-security-test.js +96 -96
  105. package/_site/_test/sessions-stream-test.js +93 -93
  106. package/_site/_test/shared-scope-root-binding-test.js +67 -67
  107. package/_site/_test/simple-import-test.js +98 -98
  108. package/_site/_test/startup-analysis-disabled-test.js +6 -6
  109. package/_site/_test/team-knowledge-store-sparse-checkout-test.js +196 -196
  110. package/_site/_test/team-knowledge-store-test.js +132 -132
  111. package/_site/_test/test-server-cleanup-test.js +35 -35
  112. package/_site/_test/test-server-module-isolation-test.js +37 -37
  113. package/_site/_test/tracking-start-test.js +35 -35
  114. package/_site/_test/workbench-context-receipts-test.js +22 -22
  115. package/_site/_test/workspace-ui-contract-test.js +31 -31
  116. package/_site/_test/zcode-capture-integration-test.js +108 -108
  117. package/_site/lib/ai-vendor-presets.js +83 -83
  118. package/_site/lib/ai-workspace.js +3 -3
  119. package/_site/lib/atomic-file.js +204 -204
  120. package/_site/lib/bridge-adapter.js +260 -260
  121. package/_site/lib/capture-hook-config.js +108 -108
  122. package/_site/lib/claude-cli-runner.js +89 -89
  123. package/_site/lib/cli-instances.js +43 -43
  124. package/_site/lib/codex-context-status.js +17 -17
  125. package/_site/lib/codex-notify-config.js +193 -193
  126. package/_site/lib/commit-conversation-binder.js +12 -12
  127. package/_site/lib/commit-reconciler.js +38 -38
  128. package/_site/lib/context-pack-builder.js +299 -299
  129. package/_site/lib/conversation-exclusions.js +204 -204
  130. package/_site/lib/conversation-query-service.js +17 -17
  131. package/_site/lib/data-dir.js +13 -13
  132. package/_site/lib/embedding-service.js +85 -85
  133. package/_site/lib/engine-connection.js +93 -93
  134. package/_site/lib/engine-knowledge-client.js +72 -72
  135. package/_site/lib/folder-picker-output.js +3 -3
  136. package/_site/lib/git-path.js +14 -14
  137. package/_site/lib/github-team-store.js +3 -3
  138. package/_site/lib/index-builder.js +157 -157
  139. package/_site/lib/integration-status-scan.js +99 -99
  140. package/_site/lib/integration-status-worker.js +14 -14
  141. package/_site/lib/kb-framework.js +15 -15
  142. package/_site/lib/knowledge-db.js +363 -363
  143. package/_site/lib/knowledge-schema.js +121 -121
  144. package/_site/lib/live-gateway.js +78 -78
  145. package/_site/lib/llm-client.js +12 -12
  146. package/_site/lib/model-context-windows.js +82 -82
  147. package/_site/lib/module-bridge.js +874 -874
  148. package/_site/lib/module-port-resolver.js +57 -57
  149. package/_site/lib/post-commit-automation.js +54 -54
  150. package/_site/lib/product-data.js +35 -35
  151. package/_site/lib/project-lifecycle-service.js +14 -14
  152. package/_site/lib/project-registry-store.js +129 -129
  153. package/_site/lib/prompt-registry.js +148 -148
  154. package/_site/lib/registry-events.js +16 -16
  155. package/_site/lib/requirement-adapters.js +10 -10
  156. package/_site/lib/requirement-binder.js +112 -112
  157. package/_site/lib/runtime-control.js +89 -89
  158. package/_site/lib/runtime-endpoint.js +5 -5
  159. package/_site/lib/zcode-context-integration.js +60 -60
  160. package/_site/scripts/codex-notify-fanout.cjs +95 -95
  161. package/_site/scripts/install-module-candidates.js +69 -69
  162. package/_site/scripts/pack-module-candidates.js +89 -89
  163. package/_site/scripts/sync-product-content.js +28 -28
  164. package/_site/scripts/sync-release-version.js +164 -164
  165. package/_site/scripts/vendor-modules.js +49 -49
  166. package/_site/scripts/verify-module-runtime.js +50 -50
  167. package/_site/scripts/verify-product-runtime.js +36 -36
  168. package/_site/scripts/verify-retrieval-gold.js +83 -83
  169. package/_site/server.js +15 -15
  170. package/_site/start.bat +26 -26
  171. package/_site/stop.bat +11 -11
  172. package/bin/project-knowledge-integrations.js +254 -254
  173. package/bin/project-knowledge-kb.js +67 -67
  174. package/bin/project-knowledge-mcp.js +8 -8
  175. package/bin/project-knowledge.js +170 -170
  176. package/claude-prompts.json +21 -21
  177. package/docs/README.zh-CN.md +205 -205
  178. package/docs/assets/architecture.svg +181 -181
  179. package/docs/assets/logo.svg +49 -49
  180. package/docs/fresh-v5-start.md +42 -42
  181. package/docs/leader-glm-workbench-playbook.md +122 -122
  182. package/docs/project-registry-schema.md +11 -11
  183. package/docs/release-5.0.16-acceptance.md +176 -176
  184. package/docs/release-5.0.17-acceptance.md +117 -117
  185. package/docs/release-5.0.19-acceptance.md +39 -25
  186. package/docs/team-knowledge-mode-a-plan.md +73 -73
  187. package/module-runtime-manifest.json +53 -33
  188. package/package.json +3 -2
  189. package/plugins/project-knowledge/.claude-plugin/plugin.json +1 -1
  190. package/plugins/project-knowledge/.codex-plugin/plugin.json +1 -1
  191. package/plugins/project-knowledge/.mcp.json +1 -1
  192. package/plugins/project-knowledge/opencode/project-knowledge.md +3 -3
  193. package/plugins/project-knowledge/skills/project-knowledge/SKILL.md +28 -28
  194. package/templates/change.md +30 -30
  195. package/templates/project-readme.md +18 -18
  196. package/ui/index.html +1 -1
  197. package/ui/knowledge-panel.html +118 -0
  198. package/ui/product.css +8 -0
  199. package/ui/product.js +146 -4
  200. package/vendor-manifest.json +55 -54
@@ -1,30 +1,36 @@
1
1
  {
2
2
  "schema": "project-knowledge/module-content/v1",
3
3
  "productFiles": {
4
- "ui/index.html": "737b8f5c745270797950c5975f458a13ffe1ea738f921e814bfbbe5e56813fed",
5
- "ui/product.js": "855f13e63664156e55b794b0c254f7aaa45681c0a031495da2aae820db635249",
4
+ "ui/index.html": "3d7ae2f0e514393a50e2643949e6836a3089b0d9a5dd00185db66b939a486600",
5
+ "ui/knowledge-panel.html": "13280b1e55545f09623daed7ae52a67b4c87d3ad0abaccf0bcee4d5ac5201626",
6
+ "ui/product.js": "00c0b0afbed8f835b29e42ffd049715b458d8b5e2eb11acea2aaac1de1ac44ad",
6
7
  "ui/live-client.js": "0d81fa894c629bb839e1931fc3c5ebad4d831aae8232d6ce8c0f542e9e3559e8",
7
- "ui/product.css": "4f300b08c086a939831d7ee69df01f23641457c0d606af29e9d4ce8a6d28bc9d",
8
+ "ui/product.css": "e7e7847ab538cc115e9a07ee159fbefc002cab4f2c3d827b59ce2c5dc8b0b75d",
8
9
  "ui/favicon.svg": "c48be946b224112ebb0238b44263f7a61bda31e531afa895c2e9801c0ff24f32",
9
10
  "plugins/project-knowledge/hooks/claude.json": "d61510327e3e1facbb4c645228e9f50cad05a88b33d80c4c22e5ba9f8b9f5359",
10
11
  "plugins/project-knowledge/hooks/codex.json": "216e03c07295606ef6ebb2c4f669ad0d790b5e7c4f3f34600488033db75e4239",
11
12
  "plugins/project-knowledge/scripts/context-hook.cjs": "da666153ad5723592cce42d25337ae649f7d93e43fab76b3c6d1263933de063f",
12
13
  "plugins/project-knowledge/scripts/mcp-launcher.cjs": "7c68830b5c73eb53ef030756a4de33987f7eab6b1a6cc15602835aac3f954893",
13
- "plugins/project-knowledge/.claude-plugin/plugin.json": "71a2693a98a05bef7290c4dcc8020745057b36045cfd93540dae70e4bde0a018",
14
- "plugins/project-knowledge/.codex-plugin/plugin.json": "b87bdcd44f5e3a5c7a5f44e4f4bc9c77dd28ee9080a0e54a7445316b1f0d534f",
15
- "plugins/project-knowledge/.mcp.json": "0714e6a89f92eaf93508e08ad1aa3917982bf3cfea3969aabef27cf518e0a795"
14
+ "plugins/project-knowledge/.claude-plugin/plugin.json": "fae2cd793dfbe5e44c8beeab0f4b98ffce57e4d115aeb74ee3ca40b23e96e2a1",
15
+ "plugins/project-knowledge/.codex-plugin/plugin.json": "e16ff1fcdce8d05fc439246a822cdb11e77fec7270426da4e9ae8ad986f0f67f",
16
+ "plugins/project-knowledge/.mcp.json": "3d4efe7153f24c2ea8d3b9549110fd414eaeba4d272be48c825a7a06287d6947"
16
17
  },
17
18
  "modules": {
18
19
  "terminal": {
19
20
  "name": "@sanqianx/claude-ai-workbench",
20
21
  "installName": "claude-ai-workbench",
21
- "version": "0.13.2-rc.21",
22
+ "version": "0.13.2",
22
23
  "files": {
23
24
  "LICENSE": "de260a483f1c8a229d61d833aaabad9f9a7438f3384c59abefa50182cb798199",
24
25
  "README.md": "aac0a5a6bc9b0ec860d5273530975c0f9e0993f05424517c8edb879d02aa0db7",
25
26
  "apps/agent-terminal/app.css": "1989662d054b31f6e3fcd16bb8eb6f842405660151551026ce95daf8927b626b",
26
- "apps/agent-terminal/app.js": "9808737ab42487da0a3c5cbdf305b3a1d76de28fc76c77d05fd962ae3d09d37a",
27
- "apps/agent-terminal/index.html": "5ba290f2277cb947a4599c1fdd95ccb44e3da700f077c24a7de30ffb0555de48",
27
+ "apps/agent-terminal/app.js": "b76831a762c2515b4e602c3a62729b81fb3ae01337857a5641822575eec7243f",
28
+ "apps/agent-terminal/index.html": "51ae269b10a4f4c8b83a4dbd7744cbef955b92d92658e0cf00bf54af06c08d20",
29
+ "apps/agent-terminal/panel-host-proof.html": "4f242e4c4980653dd59690ffc7eec25f41542a0601f8ba01d92dd4f0b31c5446",
30
+ "apps/agent-terminal/panel-proof-content.html": "df41d44495e1f697c75f28ec767238ffe00154589021c68b06a8880903002bae",
31
+ "apps/agent-terminal/right-dock-panel-registry.js": "07a4b6d31b1b2d678f92b6f0786cf49129708bd38ef4a15976d824150cbadec6",
32
+ "apps/agent-terminal/right-workspace-dock.css": "abd968a815c971f7a84f90fa712520589aa20e52900e34e723dfe3a763fe0b39",
33
+ "apps/agent-terminal/right-workspace-dock.js": "b1aac615dd123d9bfc957ddfc9cd5ad7bb1dd804cd3cd4f81eece2fb42f7371e",
28
34
  "apps/ai-profile-settings-host/index.html": "ab98983ac6038fe169efa7430668c3c82b454f23b9964a8adbd4d82cd05d69ef",
29
35
  "apps/ai-profile-settings-host/page.css": "fae27a697afaee7046c0e45f5c98070fd047c7d226b63e16a6bf3f2b7bb524ce",
30
36
  "apps/ai-profile-settings-host/page.js": "986c1f4c5ed9b93d8cbdd94e5b5a6af79203e1416ca7c16508630415a8bb682c",
@@ -35,29 +41,29 @@
35
41
  "apps/minimal-test-host/README.md": "8f47acf0c32ce57ba511757b783e63638959a90d6d126fd6bf5204e9c7bebc69",
36
42
  "docs/sdk/FILE_LAYOUT.md": "0b0c6bca066b09c605f84ac3f6c4fda0a409d0a9d65093f0760eae45a26ec30c",
37
43
  "docs/sdk/INTEGRATION.md": "aa8e6ef40af78562ad3dd73cbba1a840a6041ac7eab86b70f48e13ff9cc52663",
38
- "docs/sdk/openapi.yaml": "b10e656e7f412c17ef18e2281057a2ae94f328631e9a601bbf4b9d52f1692217",
44
+ "docs/sdk/openapi.yaml": "c61c3bbc4402ef429659bb39f553157faab8583a3379545b6d3b1da0c54b211f",
39
45
  "docs/sdk/README.md": "3d95a0d76cc48cff47779caef2ed0d1f5b76f3591216c6ebf7a06895b7c1a964",
40
- "docs/sdk/SESSION_EVENTS.md": "5e36797fbef7656b289df9369f498388b79efde31fc8b584cce871795885165f",
41
- "package.json": "046e2b34bddaebaaf4bcefaa1544724094dcc3112575d36d3c900075663fe37d",
42
- "packages/client/index.d.ts": "c1fdfa7c9165940381af14549a1f7f347d6912daf349d1adb5f9283b3148c9ed",
43
- "packages/client/index.js": "591dac2c6a8a31dd260f682313b31dc9ffa92eb27d67b058324f5c256c82e932",
44
- "packages/client/package.json": "5307c474e787070ae39aa61fa50fda32e38a2b6a2a4c2c96eaea39aeff3a99d0",
45
- "packages/client/README.md": "be2c174260104b850bd7b471fdec47038dbc7b883f7aae3f561cfdcd04e6fcc8",
46
- "packages/contracts/index.d.ts": "3940b3f40829084b777a505be88aac5b3151ad3740c54b9c0b8e1b278553c22a",
47
- "packages/contracts/index.js": "f671aee2b088999f5f1aa721b550bc64fb8ae86d765ef7730afada7a361a655b",
48
- "packages/contracts/package.json": "e1b2a1c225d9bca584f1c054b2db5caa9a719ee98f26a87110541b221ed9a1cb",
46
+ "docs/sdk/SESSION_EVENTS.md": "e9630f7c3b304b1f6b044eccf326841fb74ddcc0b3be6fed9fc6e7875f98932d",
47
+ "package.json": "14e34c2393468f7de829199fabeff883420f76e9336d97750e6f3f549c56ba6c",
48
+ "packages/client/index.d.ts": "707c53f687d70d8ae1231f286ab8bfac4f70e711f8c0270f7fe625f631e4b4b2",
49
+ "packages/client/index.js": "b6639296a9fea84f716c048d7d43c0ac02a75e0574cdea0f359bf7048007792e",
50
+ "packages/client/package.json": "e84ccb948550e7b61773e1512327f9b26a0d8944923ba8cf8c8a47c9dfabcf07",
51
+ "packages/client/README.md": "6cc6ccdd25e38c61292636c3986aedbbfa54c3669f0ee92cce397ee1d569aa5d",
52
+ "packages/contracts/index.d.ts": "03eb55f2c5efc635a03025cad1acb82436e0674be6fd69209632867ece1279b3",
53
+ "packages/contracts/index.js": "72f09140f96b9cf23225647cedd415215c1e2741f99330ef333d3e48543c6aa5",
54
+ "packages/contracts/package.json": "42733870cd86d29e483077ba1ec29474e49ac06ad83d6a89c0b426a14b30dd0c",
49
55
  "packages/contracts/README.md": "b1a0a90d07e7540503d4da45026f4135c83840a73005e4f07de8b13d5b077233",
50
56
  "packages/core/index.d.ts": "1387be7298aa2e76fca729275445de4bc813d749781f4a6ad13e07ff5567873e",
51
57
  "packages/core/index.js": "1e56043598cc26761569a8e3d1ae502447a512b59bbaaa26d30e0413e1523ae8",
52
- "packages/core/package.json": "a22268d79eea648d8a8249ef70563022c7b6b9d4297dab06df4393bc1cbe9787",
58
+ "packages/core/package.json": "6bcf362a6089200b1926ccff2c409acb8d888843849c52bfbf7abd3f67105053",
53
59
  "packages/core/README.md": "ba3d1bde0153afcd9bcb366803e4da3627815bd641eebf60c19a64ceda7d3005",
54
60
  "packages/server/bin/agent-terminal-server.js": "ba76c9f9ceb8ddb3736905d20afbba556370918f684181ad90610f227fd1a1eb",
55
- "packages/server/bin/claude-workbench-server.js": "aa0e3d0b58201b975afcc69e4bb5d04be5c9b3e08e7a6a2575cd95a70d476bc9",
61
+ "packages/server/bin/claude-workbench-server.js": "73fc7f1022b8cd5bbe8aed0eb105223e83627960e7208cffa6c29a2879932f38",
56
62
  "packages/server/bin/claude-workbench.js": "814623a85c0edb31ae1c39073fdfcda386d32460bedd2d3e2d26cb468a0f7b35",
57
- "packages/server/index.d.ts": "9b43affec378dc89b515d71414bc9f6fc26980ca7bf9b684becb96d93c70d11d",
58
- "packages/server/index.js": "f199573269eb3c56f5dbdd952fed265956ddbe3027399232829cc50099200ca0",
63
+ "packages/server/index.d.ts": "109357999c325742d459c292864e2fb846a654e4c22dbbbc317899038c94e26c",
64
+ "packages/server/index.js": "bfe6752c331108e05e6bb33ec6a27068e9880c1ff46dca2ec652c65b6e9645af",
59
65
  "packages/server/lib/agent-discovery.js": "d279ede551f307c7d92427d64062b502335af426a0ae7404fec555311a9b2b43",
60
- "packages/server/lib/agent-registry.js": "0e4a7fa4adc4ee9a1bb391663136e7d64ca94d60337fba152cd7851de3cc3661",
66
+ "packages/server/lib/agent-registry.js": "6b975c715cb9c98ab3a2b2c0a5e49a87d4f3fe3963fc9e627915342d2f306df8",
61
67
  "packages/server/lib/agent-spawn-env.js": "c6d372a533adb4dc4677b46b351ffdd9cc5229dddaaed092698d0926b8d35784",
62
68
  "packages/server/lib/attachment-store.js": "60455754d2c421233708d09610c2d899820dd8953388904395cd7ea080ac5e19",
63
69
  "packages/server/lib/bridges/app-server-bridge.js": "6a8a725ce9b8b1f6e75c126f068df1a05fe51b37e8543897380f12d60327e712",
@@ -65,28 +71,31 @@
65
71
  "packages/server/lib/capture-settings-store.js": "1a2c84c01c577d199f723c7be1409ca6d8e013e01c089a8ec260d70423608671",
66
72
  "packages/server/lib/claude-history-recovery.js": "0b888e57846d40753e75deafb6894459fd7a52ee2cc1286fd1b76480058387d7",
67
73
  "packages/server/lib/cli-session-recovery.js": "9bb267bd38783731f9af9730bc13ed5b24c0f8a796e44cdd730afb63408ed39e",
68
- "packages/server/lib/context-resolver.js": "c3e3a25de2a38b7b4d09f5ae384663fb671ac364af1fc884877c17f66e7fb1c2",
74
+ "packages/server/lib/context-resolver.js": "80a2e8ebf8c5f4de8d4d2476bec05d527aa185bfcea1975eab8b24ab3a4f1355",
69
75
  "packages/server/lib/conversation-capture.js": "a86e6254d4799d151c5c19328c7247a111736f4a27250e2baa46369aa5fad0bc",
76
+ "packages/server/lib/delegation-phase-store.js": "ce0a6028d31a81ad6ed243ebfb96e8b1f6d8d7dce88d7e0287cf0e278f8b22b3",
77
+ "packages/server/lib/delegation-store.js": "a84ec845eb11298250c81ea26ee88dac4091967b2fc45633ac72df8c2ba472c0",
70
78
  "packages/server/lib/diagnostics.js": "bc29ca5cb7759465e80256802fbf34cfd527bac95a57dd1e4384a7a7d239c36c",
71
79
  "packages/server/lib/drivers/cli-json-runner.js": "3802a9066bd78062c40441d43b23bf97333ec742f877c59f4426e4cb118e8e54",
72
80
  "packages/server/lib/drivers/codex-driver.js": "542be69cee306abbba72a9c3d02f98abaaafe0a74c616258ea2b84b2cf2e5935",
73
81
  "packages/server/lib/drivers/opencode-driver.js": "b7e0a338b32c2616fa3ce1fa438be5abc9794218eb1744b3a6eac877122a8c28",
74
82
  "packages/server/lib/drivers/zcode-driver.js": "b09246d6640d3986fc629f0861e4fc25c0ec8114109360f3cb3a8df9127182f9",
75
83
  "packages/server/lib/drivers/zcode-profile-runtime.js": "23881a8d447f0e4803ab0d8d8963dd665993243df0a30c405e2fbab53b647777",
76
- "packages/server/lib/event-stream.js": "1db039b1779c85262e4883b80201753a854e424783b4c43edbd1e2c6df862182",
84
+ "packages/server/lib/event-stream.js": "c0106bd87ed208261be495bc1aeaf4404d5dfc691a602ea5684dde973d8fd918",
77
85
  "packages/server/lib/folder-picker.js": "70f55df999262b90433f2b4251aa69dd70a23b55a84756b5f1d24dbeacfbda31",
78
- "packages/server/lib/http-handler.js": "4d8e0afbc53decc0b05578f380e8d7ca0f1bae6a83e00ada88a7827abe1e1f6e",
86
+ "packages/server/lib/http-handler.js": "cf2e614065a7a9ac25b6d85369a6f549016beb8f913142e2f74d1bee098a1b00",
79
87
  "packages/server/lib/json-file.js": "c1034f052e3882b62d501edcda18b76e7edd485a82f0dd009efd186d7a8d533a",
80
88
  "packages/server/lib/knowledge-context.js": "f51441942897ef437e21ca344053a657f1047d224d01b4c95c4ba4afd65e2bf7",
81
89
  "packages/server/lib/model-detection.js": "2091ad1c426a4a7b9c7bd803febb6b1c8a944afb357570c133c58a9436164663",
82
90
  "packages/server/lib/profile-store.js": "1120791dd2517bd249caec4c43f19df6509b07d49bbc79a3edb1197d99cdfefa",
83
91
  "packages/server/lib/project-store.js": "736a21596d695f32d60632686406ccd137388e479b7f02b2252d71a329b02083",
92
+ "packages/server/lib/runtime-loader.js": "ff549ef06d248bde63728aa050370a256f88cd3a83af451d5738077c5a796e1f",
84
93
  "packages/server/lib/session-archive-store.js": "1bf2756b2fb3920639b91c6e4c45836b917fe2999731b9d77ab67d9c502acc2d",
85
- "packages/server/lib/session-history.js": "84ced98a0b7a041a4dcf5e86383f6f0e3bf57bf2fbc82f6b700f0d8caf3a24a9",
94
+ "packages/server/lib/session-history.js": "b2ed7a6e1f4a0d96b62a8b4be8a0bc92bd7c261d621e7594acf11a39a2f1a096",
86
95
  "packages/server/lib/system-doctor.js": "af55a726220892ccb2d3d645ef1b2c2976c7712acbc3f6a3a32087d3979b89ab",
87
96
  "packages/server/lib/ui-preferences-store.js": "55b73c53c12d8f151468607f47c84facd5970604279effb7f0386f40e91dfbd7",
88
- "packages/server/lib/workbench-service.js": "099350078d9c11f7f97db5af72514f7906a834ba2b472077f33005e8f0d86a79",
89
- "packages/server/package.json": "3a3e9984e73e9e93515cd100a8cf3c7911c5dc8df5bc17283fb8742d4811a1b4",
97
+ "packages/server/lib/workbench-service.js": "dfa5123c05c15052d3359ad4b948f2accac31f9e3ad61861e7f41cbca2bafbff",
98
+ "packages/server/package.json": "816f813d60275414cbc11e95c7e490052272613005f8edfa9030f3dff093ff0d",
90
99
  "packages/server/README.md": "0d78908cd40a84cb96eca01a42ee1ad2d8abc9c05b1490f5ebe2cd30d7e84e1d",
91
100
  "packages/ui/ai-profile-settings.d.ts": "460c5d1d5ddf328dcd60a5f51485c3c700a4892922b68da4dc89424116a85dbf",
92
101
  "packages/ui/ai-profile-settings.js": "1d95d4e18f919149871a2c9a6746db9db0e1f3600bd18b4b6e8713220feb975c",
@@ -94,7 +103,7 @@
94
103
  "packages/ui/claude-terminal.js": "7a8e52a9296273c2aa30aac3cfbec2541bc5e0eb57fc44666e876f8253a481a3",
95
104
  "packages/ui/index.d.ts": "8f6c415651370d7d796de289e789eea40817ce00e56d8f7f9ca816a25c52771b",
96
105
  "packages/ui/index.js": "f981b039a935ab1e0af9dc876701b56d8eddb459c3b5178f384f6d7e47e249f0",
97
- "packages/ui/package.json": "a87fd215f68f1ab789433b977923e8520dcbac4ca3dec6fc3e47399d5028e841",
106
+ "packages/ui/package.json": "bdad9515ece2fe40b9c3dbeffb94d1d8bae33a79759b50a2b6be24902a834df8",
98
107
  "packages/ui/README.md": "f831eaa4d064931fd11466d7fcd91c5481e399d63b3f03583984c3ee8aecce83",
99
108
  "packages/ui/theme.css": "e300d5bfda335466a6fb33e4927ee5ecc738b4d07837a149aff4c4a0f3072631",
100
109
  "src/assets/claude-prompts.json": "78369214ea6f9725f36842ce299bcb61610870770df83f63cfa54f357c8964b9",
@@ -107,14 +116,25 @@
107
116
  "src/backend/lib/ai-vendor-presets.js": "298ead7ba72b1ae70ffaf13fac3dae774a8bf87ebc880b6306e29e796717cef0",
108
117
  "src/backend/lib/ai-workspace.js": "d0f5211df8c6f63e708ecd381f6e0702bede0307d8075fb8255cde8ebffb8eda",
109
118
  "src/backend/lib/automation-config.js": "62611e062b2673b89a58ea35596d3aae537a9187e2ea3514d9262f99020351cf",
110
- "src/backend/lib/claude-cli-runner.js": "da5c3a6dee9b9b46b80c2cc48521e577e934cb13e8f44d11cc1c6a473b14e5ab",
119
+ "src/backend/lib/claude-cli-runner.js": "cadd6b44003bf16553d9d665b5f02e1dfabfff793c70cf535bf44927886ad2b6",
111
120
  "src/backend/lib/data-dir.js": "4daa0b0a71c9f2a84f931330623c5f0adb7dbee2fdeb597a23b2edd213619cc5",
112
121
  "src/backend/lib/llm-client.js": "8c71857d072f03b53feda87751185b8bd0649e57e653c976d0f80cc3bd6e22c1",
113
122
  "src/backend/lib/model-context-windows.js": "4612975165ee3319aba51e46566c556e18a6cfd2e5e3efd1e64077905c363373",
123
+ "src/backend/lib/native-task-control.js": "0c7bf5dc6244d0c18bfd87d980389e3eef6b8f74be3527237a4b457e72eac414",
124
+ "src/backend/lib/native-task-history-index.js": "f7c6cb657c648f8aa675fd899af8c785273dea4ffad8fa8418b3f62ed0f67264",
125
+ "src/backend/lib/native-task-history-reader.js": "528cc7079f4101c8840a4a63d5bb01d4dcdb17a158d52a5ec0802726e9033a6d",
126
+ "src/backend/lib/native-task-messages.js": "3889fa735cf608895733a38aec4c796c3af58b446e8e825beb7b7c34efa9dcca",
127
+ "src/backend/lib/native-task-registry.js": "963350ebefe6a8338823ddad40b2a170fba0c1f55f42dd39ea9225f0b7e0268a",
128
+ "src/backend/lib/native-task-runtime.js": "fa15c25dfe347fb9b0a434801601ae1536ec8df01ed5318adb6610a980d4b7eb",
129
+ "src/backend/lib/native-task-trace.js": "d6d370d77e481811b37b0571332d89cb948df1ce3703f7e6e7f063732da581f1",
130
+ "src/backend/lib/native-task-transcript.js": "0f96e9715cb84244ffc41c86e115687230c9bf02ad902077ac138ac949726939",
114
131
  "src/backend/lib/prompt-registry.js": "88ca170f4ac04e47e7cf85816511797634cc39b97ecf095548ee0772799de5e9",
115
132
  "src/backend/lib/runtime-config.js": "050bbfadb7bfa0f47786beb6dfd80f240ed3e64f265d7457ba85f8c31f8e458f",
116
- "src/backend/lib/sdk-session-stream.js": "f00d185a374f978f2eed63990158a711ebd13a7bbb153119a47f3e0e68ab1e00",
133
+ "src/backend/lib/sdk-session-stream.js": "f1003b41819cf28c559afca009d199c86bf506f5178e7813ac329d7b8a2759a4",
117
134
  "src/backend/lib/sdk-turn-stream.js": "f18301b9a660aaac4b09613750bf5645d338aa83d2001cb113a281b7c68c3b8c",
135
+ "src/backend/lib/store-scope.js": "1acdd6ddb6038e654c5c6cd44d92817ba7c4a67aec023bc701ae0b49f20db746",
136
+ "src/backend/lib/task-identity.js": "4261cd9164ad044a08bd03ff109b4e2b770d017422a446ea173f6426c024355a",
137
+ "src/backend/lib/task-state-projection.js": "2f833ad4aa7676ac0fb1ab978bd999c6a87646af44ac8ec6450cc2d39de5affb",
118
138
  "src/index.js": "40801aa5fc71a239e057a735264134df8cbcb29db200322700427be9718a6312",
119
139
  "src/sdk-wave-a.ts": "5660f617af8d64696476315299332c0f45d88f47c83305e32c698092338d5b2b",
120
140
  "src/sdk-wave-b.ts": "de927fe52372e8454f66b764cb268d0b372d227702a1dfba60270e1bba156124",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanqianx/project-knowledge",
3
- "version": "5.0.19",
3
+ "version": "5.0.20",
4
4
  "description": "Knowledge base manager with Git integration, AI-driven analysis, and bilingual (zh-CN/en-US) knowledge output",
5
5
  "main": "_site/server.js",
6
6
  "scripts": {
@@ -26,6 +26,7 @@
26
26
  "files": [
27
27
  "_site/server.js",
28
28
  "ui/index.html",
29
+ "ui/knowledge-panel.html",
29
30
  "ui/product.css",
30
31
  "ui/product.js",
31
32
  "ui/live-client.js",
@@ -89,7 +90,7 @@
89
90
  "@sanqianx/vector-hub": "1.0.8-rc.8",
90
91
  "buffer": "^6.0.3",
91
92
  "cheerio": "^1.2.0",
92
- "claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2-rc.21",
93
+ "claude-ai-workbench": "npm:@sanqianx/claude-ai-workbench@0.13.2",
93
94
  "cross-spawn": "7.0.6",
94
95
  "dotenv": "^17.4.2",
95
96
  "gpt-tokenizer": "^3.4.0",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "project-knowledge",
4
4
  "hooks": "./hooks/claude.json",
5
- "version": "5.0.19",
5
+ "version": "5.0.20",
6
6
  "description": "Read durable project decisions and implementation history from Project Knowledge.",
7
7
  "author": {
8
8
  "name": "SanQianX",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-knowledge",
3
- "version": "5.0.19",
3
+ "version": "5.0.20",
4
4
  "description": "Read durable project decisions and implementation history from Project Knowledge.",
5
5
  "author": {
6
6
  "name": "SanQianX",
@@ -8,7 +8,7 @@
8
8
  "const fs=require('fs'),path=require('path'),os=require('os');const PKG='@sanqianx/project-knowledge',SC='project-knowledge/integration-runtime/v1';let f='';const root=process.env.CLAUDE_PLUGIN_ROOT||process.env.PLUGIN_ROOT;if(root){f=path.join(root,'scripts','mcp-launcher.cjs');if(!fs.existsSync(f))f=''}if(!f){const dd=process.env.KB_DATA_DIR||path.join(os.homedir(),'.project-knowledge-v5');try{const bp=path.join(dd,'integration-runtime.json');const st=fs.statSync(bp);if(st.isFile()&&st.size<=32768){const b=JSON.parse(fs.readFileSync(bp,'utf8'));if(b&&b.schema===SC&&b.packageName===PKG&&typeof b.packageRoot==='string'&&path.isAbsolute(b.packageRoot)){const c=path.join(b.packageRoot,'plugins','project-knowledge','scripts','mcp-launcher.cjs');const rr=fs.realpathSync(b.packageRoot),cr=fs.realpathSync(c);const rel=path.relative(rr,cr);if(rel&&rel!=='..'&&!rel.startsWith('..'+path.sep)&&!path.isAbsolute(rel)&&fs.statSync(cr).isFile())f=cr}}}catch(e){}}if(!f){console.error('[project-knowledge-mcp] 未能通过受信任插件根或已验证的安装绑定定位启动器,已停止;不访问网络,也不加载工作目录源码。');process.exit(127)}require(f);"
9
9
  ],
10
10
  "env": {
11
- "KB_PLUGIN_VERSION": "5.0.19"
11
+ "KB_PLUGIN_VERSION": "5.0.20"
12
12
  }
13
13
  }
14
14
  }
@@ -1,3 +1,3 @@
1
- # Project Knowledge
2
-
3
- For non-trivial work in a Git repository, load the `project-knowledge` Skill and resolve the current repository before relying on prior project decisions or implementation history. Treat knowledge search/get/history results as read-only, retrieve full entries only after focused search, and verify older knowledge against the current code. Automatic OpenCode capture is the primary conversation truth. Call `project_knowledge_record_requirement` only for an explicitly requested supplement or when automatic capture is known to be unavailable; it appends one user Prompt to the same ConversationStore and never starts analysis.
1
+ # Project Knowledge
2
+
3
+ For non-trivial work in a Git repository, load the `project-knowledge` Skill and resolve the current repository before relying on prior project decisions or implementation history. Treat knowledge search/get/history results as read-only, retrieve full entries only after focused search, and verify older knowledge against the current code. Automatic OpenCode capture is the primary conversation truth. Call `project_knowledge_record_requirement` only for an explicitly requested supplement or when automatic capture is known to be unavailable; it appends one user Prompt to the same ConversationStore and never starts analysis.
@@ -1,28 +1,28 @@
1
- ---
2
- name: project-knowledge
3
- description: Query durable Project Knowledge records for prior decisions, implementation history, known constraints, and related-project context. Use when starting non-trivial work in a registered repository, investigating why code was designed a certain way, checking whether a problem was solved before, or answering questions about earlier commits and project history.
4
- ---
5
-
6
- # Project Knowledge
7
-
8
- Use Project Knowledge as a read-only source of durable project context. Automatic client capture is the primary conversation truth. Its one write-capable tool only supplements that truth with an explicit user Prompt event and never starts knowledge analysis. Verify returned knowledge against the current source whenever the repository may have changed since the knowledge entry was produced.
9
-
10
- ## Workflow
11
-
12
- 1. Call `project_knowledge_resolve` with the current Git root before substantial implementation, diagnosis, or design work. Do not guess the project slug.
13
- 2. Call `project_knowledge_search` for focused matching records, or `project_knowledge_ask` when a compact cited synthesis is more useful.
14
- 3. Review titles and summaries before loading complete entries.
15
- 4. Call `project_knowledge_get` only for the most relevant entries. Call `project_knowledge_history` when sequence or recent change history matters.
16
- 5. Cite the returned project, entry, and commit information when it materially supports an answer or decision.
17
- 6. Call `project_knowledge_record_requirement` only when the user explicitly requests supplemental capture or automatic client capture is known to be unavailable. Supply the exact user request, resolved project, client, and stable session identifier; never record assistant output, system prompts, credentials, or tool transcripts.
18
-
19
- Client integrations may prefix MCP tool names with the server name. Match the tools by their final names: `project_knowledge_resolve`, `project_knowledge_record_requirement`, `project_knowledge_search`, `project_knowledge_ask`, `project_knowledge_get`, and `project_knowledge_history`.
20
-
21
- ## Boundaries
22
-
23
- - Treat knowledge search/get/history results as read-only. The explicit adapter may only append a user Prompt event to ConversationStore.
24
- - Do not write directly to the knowledge database or knowledge files.
25
- - Recording a requirement must not be used as a signal that analysis already ran or succeeded.
26
- - Do not substitute remembered conversation context for a knowledge lookup when prior project work is relevant.
27
- - Do not treat old knowledge as stronger evidence than current code, tests, or explicit user direction.
28
- - If the repository is not registered, continue using the source tree and tell the user that no matching Project Knowledge project was found.
1
+ ---
2
+ name: project-knowledge
3
+ description: Query durable Project Knowledge records for prior decisions, implementation history, known constraints, and related-project context. Use when starting non-trivial work in a registered repository, investigating why code was designed a certain way, checking whether a problem was solved before, or answering questions about earlier commits and project history.
4
+ ---
5
+
6
+ # Project Knowledge
7
+
8
+ Use Project Knowledge as a read-only source of durable project context. Automatic client capture is the primary conversation truth. Its one write-capable tool only supplements that truth with an explicit user Prompt event and never starts knowledge analysis. Verify returned knowledge against the current source whenever the repository may have changed since the knowledge entry was produced.
9
+
10
+ ## Workflow
11
+
12
+ 1. Call `project_knowledge_resolve` with the current Git root before substantial implementation, diagnosis, or design work. Do not guess the project slug.
13
+ 2. Call `project_knowledge_search` for focused matching records, or `project_knowledge_ask` when a compact cited synthesis is more useful.
14
+ 3. Review titles and summaries before loading complete entries.
15
+ 4. Call `project_knowledge_get` only for the most relevant entries. Call `project_knowledge_history` when sequence or recent change history matters.
16
+ 5. Cite the returned project, entry, and commit information when it materially supports an answer or decision.
17
+ 6. Call `project_knowledge_record_requirement` only when the user explicitly requests supplemental capture or automatic client capture is known to be unavailable. Supply the exact user request, resolved project, client, and stable session identifier; never record assistant output, system prompts, credentials, or tool transcripts.
18
+
19
+ Client integrations may prefix MCP tool names with the server name. Match the tools by their final names: `project_knowledge_resolve`, `project_knowledge_record_requirement`, `project_knowledge_search`, `project_knowledge_ask`, `project_knowledge_get`, and `project_knowledge_history`.
20
+
21
+ ## Boundaries
22
+
23
+ - Treat knowledge search/get/history results as read-only. The explicit adapter may only append a user Prompt event to ConversationStore.
24
+ - Do not write directly to the knowledge database or knowledge files.
25
+ - Recording a requirement must not be used as a signal that analysis already ran or succeeded.
26
+ - Do not substitute remembered conversation context for a knowledge lookup when prior project work is relevant.
27
+ - Do not treat old knowledge as stronger evidence than current code, tests, or explicit user direction.
28
+ - If the repository is not registered, continue using the source tree and tell the user that no matching Project Knowledge project was found.
@@ -1,30 +1,30 @@
1
- ---
2
- schema: minimal-kb/v1
3
- title: __SHORTCOMMIT__ __SUBJECT__
4
- change: __SHORTCOMMIT__
5
- commit: __COMMIT__
6
- classification: __CLASSIFICATION__
7
- tags: [__CLASSIFICATION__]
8
- affectedModules: []
9
- developmentIntent: __DEVELOPMENT_INTENT__
10
- updatedAt: __DATE__
11
- ---
12
-
13
- # __SHORTCOMMIT__ __SUBJECT__
14
-
15
- ## Development Intent
16
-
17
- __DEVELOPMENT_INTENT__
18
-
19
- ## Implementation Result
20
-
21
- - Classification: __CLASSIFICATION__
22
- - Goal impact: __GOAL_IMPACT__
23
-
24
- ## Evidence
25
-
26
- __EVIDENCE__
27
-
28
- ## Proposed Knowledge Updates
29
-
30
- __PROPOSED_OPERATIONS__
1
+ ---
2
+ schema: minimal-kb/v1
3
+ title: __SHORTCOMMIT__ __SUBJECT__
4
+ change: __SHORTCOMMIT__
5
+ commit: __COMMIT__
6
+ classification: __CLASSIFICATION__
7
+ tags: [__CLASSIFICATION__]
8
+ affectedModules: []
9
+ developmentIntent: __DEVELOPMENT_INTENT__
10
+ updatedAt: __DATE__
11
+ ---
12
+
13
+ # __SHORTCOMMIT__ __SUBJECT__
14
+
15
+ ## Development Intent
16
+
17
+ __DEVELOPMENT_INTENT__
18
+
19
+ ## Implementation Result
20
+
21
+ - Classification: __CLASSIFICATION__
22
+ - Goal impact: __GOAL_IMPACT__
23
+
24
+ ## Evidence
25
+
26
+ __EVIDENCE__
27
+
28
+ ## Proposed Knowledge Updates
29
+
30
+ __PROPOSED_OPERATIONS__
@@ -9,31 +9,31 @@ This knowledge base stores only useful, reviewed project memory. It is not a dum
9
9
 
10
10
  | Path | Purpose | Policy |
11
11
  |---|---|---|
12
- | `README.md` | Knowledge-base purpose and reading guidance | Updated only through verified promotion |
13
- | `GOAL.md` | Stable project goal, boundaries, and non-goals | Updated conservatively from committed evidence |
14
- | `ARCHITECTURE.md` | Current architecture and key decisions | Updated conservatively from committed evidence |
15
- | `modules/<module>.md` | Durable module facts tied to source paths, routes, symbols, and tests | Verified promotion only |
16
- | `changes/<change>.md` | Accepted change memory with intent, result, and evidence | Verified promotion only |
12
+ | `README.md` | Knowledge-base purpose and reading guidance | Updated only through verified promotion |
13
+ | `GOAL.md` | Stable project goal, boundaries, and non-goals | Updated conservatively from committed evidence |
14
+ | `ARCHITECTURE.md` | Current architecture and key decisions | Updated conservatively from committed evidence |
15
+ | `modules/<module>.md` | Durable module facts tied to source paths, routes, symbols, and tests | Verified promotion only |
16
+ | `changes/<change>.md` | Accepted change memory with intent, result, and evidence | Verified promotion only |
17
17
 
18
18
  AI run records, per-commit automation state, backups, and context packs live outside the knowledge base.
19
19
 
20
20
  ## Design Principles
21
21
 
22
22
  1. Keep the official KB small: store stable intent, architecture, module facts, and accepted change summaries.
23
- 2. Search first: use the read-only knowledge tools before opening detail files.
24
- 3. Read only relevant memory: choose module and change files by source paths, routes, symbols, and affected modules.
23
+ 2. Search first: use the read-only knowledge tools before opening detail files.
24
+ 3. Read only relevant memory: choose module and change files by source paths, routes, symbols, and affected modules.
25
25
  4. Store development intent, not raw prompts: summarize the user's request in `changes/<change>.md` under `## Development Intent`.
26
26
  5. Update `GOAL.md` and `ARCHITECTURE.md` only when committed evidence clearly changes their current facts.
27
27
 
28
- ## Reading Rule
28
+ ## Reading Rule
29
29
 
30
30
  When starting work on a feature or fix:
31
31
 
32
- 1. Resolve the current project and search its scoped knowledge.
33
- 2. Read `GOAL.md` when the task depends on product boundaries.
34
- 3. Open only relevant `modules/<module>.md` and `changes/<change>.md` files.
35
- 4. Verify retrieved facts against current source code.
36
- 5. Let post-commit reconciliation update knowledge from committed evidence; do not write the final KB directly.
32
+ 1. Resolve the current project and search its scoped knowledge.
33
+ 2. Read `GOAL.md` when the task depends on product boundaries.
34
+ 3. Open only relevant `modules/<module>.md` and `changes/<change>.md` files.
35
+ 4. Verify retrieved facts against current source code.
36
+ 5. Let post-commit reconciliation update knowledge from committed evidence; do not write the final KB directly.
37
37
 
38
38
  ## Change File Example
39
39
 
@@ -42,11 +42,11 @@ When starting work on a feature or fix:
42
42
  Add a branch-aware knowledge update flow so AI records the user's feature intent without storing raw prompts.
43
43
 
44
44
  ## Implementation Result
45
- - Added a frozen per-commit claim and exact Commit evidence.
46
- - Promoted validated Markdown before advancing state.
45
+ - Added a frozen per-commit claim and exact Commit evidence.
46
+ - Promoted validated Markdown before advancing state.
47
47
 
48
48
  ## Evidence
49
- - `_site/lib/commit-reconciler.js`
50
- - `_site/lib/knowledge-promotion.js`
51
- - `_site/lib/index-service.js`
49
+ - `_site/lib/commit-reconciler.js`
50
+ - `_site/lib/knowledge-promotion.js`
51
+ - `_site/lib/index-service.js`
52
52
  ```
package/ui/index.html CHANGED
@@ -23,7 +23,7 @@
23
23
  <header class="topbar"><div><small id="breadcrumb">我的智脑</small><h1 id="pageTitle">智脑首页</h1></div><div class="spacer"></div><select id="projectSelect" aria-label="当前项目" disabled><option value="">尚未导入项目</option></select><button id="themeToggle" class="icon-button" title="切换浅色或深色主题" aria-label="切换主题"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="4"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/></svg></button></header>
24
24
  <div class="content">
25
25
  <section class="view" id="view-home"><div class="welcome"><div><small>工作概览</small><h2 id="homeTitle">我的智脑</h2><p>保存项目事实,连接相关经验。你的长期偏好,只在确认后使用。</p></div><div class="actions"><button class="primary" data-go="work">开始工作</button><button data-action="import">导入项目</button></div></div><div id="homeContent"></div></section>
26
- <section class="view module-view" id="view-work"><div id="workEmpty" class="empty" hidden>导入项目后,就可以在这里开始工作。<button data-action="import">导入项目</button></div><div class="work-layout" id="workLayout"><div class="frame-container"><iframe id="workFrame" title="Agent 工作台" referrerpolicy="same-origin"></iframe></div><aside class="knowledge-context"><header><h2>本次知识引用</h2><small id="contextScope">任务发送前自动检索</small></header><div id="contextContent" class="empty small-empty">发送任务后显示实际检索到的项目事实、领域经验和已确认记忆。</div></aside></div></section>
26
+ <section class="view module-view" id="view-work"><div id="workEmpty" class="empty" hidden>导入项目后,就可以在这里开始工作。<button data-action="import">导入项目</button></div><div class="work-layout" id="workLayout"><div class="frame-container"><iframe id="workFrame" title="Agent 工作台" referrerpolicy="same-origin"></iframe></div><aside class="knowledge-context"><header><h2>本次知识引用</h2><small id="contextScope">任务发送前自动检索</small><small id="panelNotice" class="panel-notice" hidden></small></header><div id="contextContent" class="empty small-empty">发送任务后显示实际检索到的项目事实、领域经验和已确认记忆。</div></aside></div></section>
27
27
  <section class="view module-view" id="view-search"><div class="module-toolbar"><span>查找知识</span><div class="segmented" id="searchScope"><button data-scope="project">当前项目</button><button data-scope="domain">所属领域</button><button data-scope="brain">整个智脑</button></div></div><div id="searchEmpty" class="empty" hidden>尚未导入项目。<button data-action="import">导入项目</button></div><div class="frame-container"><iframe id="vectorFrame" title="知识检索" referrerpolicy="same-origin"></iframe></div></section>
28
28
  <section class="view" id="view-memory"><div class="section-heading"><div><h2>长期记忆</h2><p>手动添加约定,或审核 Agent 提取的候选;确认内容与适用范围后生效。</p></div><button id="addMemory" class="primary" disabled>添加记忆</button></div><div class="memory-toolbar"><div class="segmented" id="memoryTabs"><button data-memory-tab="confirmed">已确认</button><button data-memory-tab="candidate">候选箱 <span id="candidateCount"></span></button></div><div class="actions"><select id="memoryScopeFilter" aria-label="筛选记忆范围"><option value="">全部范围</option><option value="global">全局记忆</option><option value="domain">领域记忆</option><option value="project">项目记忆</option></select><select id="memoryTargetFilter" aria-label="筛选记忆目标" hidden></select></div></div><div id="memoryContent"></div></section>
29
29
  <section class="view" id="view-projects"><div class="section-heading"><div><h2>领域与项目</h2><p>统一管理归属,项目知识仍保存在原来的目录。</p></div><div class="actions"><button id="createDomain">创建领域</button><button class="primary" data-action="import">导入项目</button></div></div><div class="hierarchy"><div class="panel tree" id="projectTree"></div><div class="panel" id="projectDetail"></div></div></section>
@@ -0,0 +1,118 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="color-scheme" content="light dark">
7
+ <title>本次知识引用</title>
8
+ <style>
9
+ :root{color-scheme:light dark;font-family:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif}
10
+ body{margin:0;padding:16px 12px;background:#f7f7f5;color:#1f2328;font-size:13px;line-height:1.6}
11
+ h1{font-size:13px;margin:0 0 4px}
12
+ #panelStatus{margin:0 0 12px;color:#5a6069}
13
+ #panelProject{display:block;margin:0 0 12px;color:#5a6069;font-size:12px}
14
+ .reference{border:1px solid #e3e4e8;border-radius:8px;background:#fff;padding:10px 12px;margin:0 0 8px}
15
+ .reference h2{font-size:13px;margin:0 0 4px}
16
+ .reference small{display:block;color:#5a6069;overflow-wrap:anywhere}
17
+ .reference code{display:block;color:#5a6069;font-size:11px;margin-top:4px;overflow-wrap:anywhere}
18
+ .reference p{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
19
+ .kb-empty{color:#5a6069}
20
+ #panelMarker{display:block;margin-top:16px;color:#9aa0a8;font-size:11px;letter-spacing:.04em}
21
+ @media (prefers-color-scheme:dark){body{background:#14161a;color:#e6e8eb}.reference{background:#1c1f24;border-color:#2c3038}#panelStatus,#panelProject,.reference small,.reference code,.kb-empty{color:#9aa0a8}}
22
+ </style>
23
+ </head>
24
+ <body>
25
+ <h1 id="panelTitle">本次知识引用</h1>
26
+ <small id="panelProject"></small>
27
+ <p id="panelStatus">等待知识内容…</p>
28
+ <div id="panelReferences"><p class="kb-empty">面板就绪后显示实际检索到的项目事实、领域经验和已确认记忆。</p></div>
29
+ <footer id="panelMarker">KB-K1-KNOWLEDGE-PANEL-v1</footer>
30
+ <script>
31
+ (function () {
32
+ 'use strict';
33
+ // This page runs inside the Workbench right dock in a scripts-only sandbox
34
+ // (opaque origin). The ONLY inbound channel is kb:panel/content from the
35
+ // workbench parent window, matched by source identity - an origin string is
36
+ // meaningless for an opaque-origin frame. Everything renders through
37
+ // textContent/createElement; external strings stay inert text forever.
38
+ var STATUS_LABELS = {
39
+ ready: '已检索知识',
40
+ 'file-fallback': '索引暂不可用,已检索原文件',
41
+ unavailable: '知识服务不可用,未注入上下文',
42
+ unregistered: '项目尚未登记知识库',
43
+ disabled: '未启用知识连接',
44
+ 'not-retrieved': '任务发送前自动检索'
45
+ };
46
+ var titleNode = document.getElementById('panelTitle');
47
+ var projectNode = document.getElementById('panelProject');
48
+ var statusNode = document.getElementById('panelStatus');
49
+ var refsNode = document.getElementById('panelReferences');
50
+
51
+ function acknowledge(panelId, version, ok, error) {
52
+ try {
53
+ window.parent.postMessage({
54
+ type: 'kb:panel/content-ack',
55
+ panelId: String(panelId == null ? '' : panelId),
56
+ version: version === undefined ? null : version,
57
+ ok: ok === true,
58
+ error: error ? String(error).slice(0, 200) : null
59
+ }, '*');
60
+ } catch (failure) { /* a broken parent channel never breaks rendering */ }
61
+ }
62
+
63
+ function renderReference(entry) {
64
+ var item = document.createElement('article');
65
+ item.className = 'reference';
66
+ var heading = document.createElement('h2');
67
+ heading.textContent = String(entry.title || entry.entryId || '知识引用');
68
+ var source = document.createElement('small');
69
+ source.textContent = String(entry.source || '');
70
+ var entryId = document.createElement('code');
71
+ entryId.textContent = String(entry.entryId || '');
72
+ var text = document.createElement('p');
73
+ text.textContent = String(entry.text || '').slice(0, 800);
74
+ item.append(heading, source, text, entryId);
75
+ return item;
76
+ }
77
+
78
+ function render(data) {
79
+ var content = data.content;
80
+ if (content === null || typeof content !== 'object' || Array.isArray(content)) {
81
+ throw new Error('内容必须是普通对象');
82
+ }
83
+ titleNode.textContent = String(content.title || '本次知识引用');
84
+ projectNode.textContent = String(content.projectId || '');
85
+ statusNode.textContent = STATUS_LABELS[String(content.status || '')] || '本次任务上下文';
86
+ refsNode.replaceChildren();
87
+ var references = Array.isArray(content.references) ? content.references : [];
88
+ var rendered = 0;
89
+ for (var i = 0; i < references.length && rendered < 100; i += 1) {
90
+ var entry = references[i];
91
+ if (entry === null || typeof entry !== 'object') continue;
92
+ refsNode.append(renderReference(entry));
93
+ rendered += 1;
94
+ }
95
+ if (!rendered) {
96
+ var empty = document.createElement('p');
97
+ empty.className = 'kb-empty';
98
+ empty.textContent = content.status === 'ready' ? '本次任务未找到可引用的知识。' : '发送任务后显示实际检索到的项目事实、领域经验和已确认记忆。';
99
+ refsNode.append(empty);
100
+ }
101
+ }
102
+
103
+ window.addEventListener('message', function (event) {
104
+ if (event.source !== window.parent) return;
105
+ var data = event.data;
106
+ if (data === null || typeof data !== 'object' || data.type !== 'kb:panel/content') return;
107
+ try {
108
+ render(data);
109
+ acknowledge(data.panelId, data.version, true, null);
110
+ } catch (error) {
111
+ statusNode.textContent = '知识内容渲染失败,已通知工作台恢复固定知识栏。';
112
+ acknowledge(data.panelId, data.version, false, error && error.message ? error.message : 'render failed');
113
+ }
114
+ });
115
+ })();
116
+ </script>
117
+ </body>
118
+ </html>
package/ui/product.css CHANGED
@@ -11,3 +11,11 @@ html[data-theme=dark]{--page:#171a1f;--surface:#20252d;--surface2:#252b34;--surf
11
11
  .app{height:100%;display:grid;grid-template-columns:232px minmax(0,1fr)}.sidebar{display:flex;flex-direction:column;border-right:1px solid var(--line);background:var(--nav);min-height:0}.brand{display:flex;align-items:center;gap:8px;padding:24px 20px 16px}.brand-mark{width:32px;height:32px;display:block;flex:none;object-fit:contain}.brand strong{font-size:14px}.brand small{display:block}.brain-label{padding:0 20px 16px;color:var(--muted);overflow-wrap:anywhere}.sidebar nav{display:grid;gap:8px;padding:8px 12px}.sidebar nav button{justify-content:flex-start;min-height:40px;text-align:left;border-color:transparent;background:transparent;color:var(--muted)}.sidebar nav button.active{border-color:var(--line);background:var(--surface);color:var(--text)}.count{margin-left:auto;background:var(--surface3);padding:0 6px;border-radius:4px}.system-button{margin: auto 12px 16px;justify-content:flex-start;min-height:56px;background:transparent;border-color:transparent;padding:8px}.system-button>span:nth-child(2){flex:1;text-align:left}.system-button b,.system-button small{display:block;font-size:11px}.dot{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:none}.dot.up{background:var(--good)}.dot.issue{background:var(--bad)}main{min-width:0;min-height:0;display:flex;flex-direction:column}.topbar{height:72px;flex:none;display:flex;align-items:center;gap:16px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--line)}.spacer{flex:1}.topbar select{width:240px}.icon-button{padding:8px;min-width:34px}.content{position:relative;flex:1;min-height:0}.view{display:none;height:100%;overflow:auto;padding:32px}.view.active{display:block}.view.module-view{padding:0;overflow:hidden}.module-view.active{display:flex;flex-direction:column}.frame-container{position:relative;flex:1;min-width:0;min-height:0;overflow:hidden;background:var(--surface)}iframe{display:block;width:100%;height:100%;border:0;background:var(--surface)}.work-layout{display:grid;grid-template-columns:minmax(0,1fr) 288px;height:100%;min-height:0}.knowledge-context{background:var(--surface2);border-left:1px solid var(--line);overflow:auto;padding:24px 16px}.knowledge-context header{margin-bottom:24px}.knowledge-context h2{font-size:13px}.module-toolbar{flex:none;min-height:56px;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:8px 24px;border-bottom:1px solid var(--line);background:var(--surface)}.segmented{display:flex;gap:4px}.segmented button{background:transparent;border-color:transparent;color:var(--muted)}.segmented button.active{background:var(--surface);border-color:var(--line);color:var(--text)}
12
12
  .welcome{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:32px}.welcome h2{font-size:24px;margin-top:8px}.actions{display:flex;gap:8px;align-items:center}.grid2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);gap:24px}.stack{display:grid;gap:24px}.panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:24px;min-width:0}.panel h2{margin-bottom:16px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.section-heading p{font-size:12px}.row{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:0}.row>div{flex:1;min-width:0}.row b{font-weight:600}.row small{display:block;margin-top:4px;overflow-wrap:anywhere}.row time{color:var(--muted);font-size:11px;flex:none}.status{font-size:11px;border:1px solid var(--line);border-radius:4px;padding:2px 8px;white-space:nowrap;color:var(--muted)}.status.up{color:var(--good)}.status.issue{color:var(--bad);background:var(--bad-soft)}.empty{padding:64px 24px;text-align:center;color:var(--muted);background:var(--surface);border-radius:8px;line-height:1.9}.empty button{display:block;margin:16px auto 0}.small-empty{padding:16px 0;text-align:left;background:transparent;font-size:12px}.hierarchy{display:grid;grid-template-columns:296px minmax(0,1fr);gap:24px}.tree h3{margin:24px 0 8px;color:var(--muted);font-size:11px}.tree button{width:100%;justify-content:flex-start;text-align:left;background:transparent;border-color:transparent;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree button.active{background:var(--accent-soft);color:var(--accent)}.detail-path{padding:12px 16px;background:var(--surface2);border:1px solid var(--line);border-radius:8px;margin:8px 0 24px;font:12px/1.8 Consolas,"Microsoft YaHei",monospace;overflow-wrap:anywhere}.detail-label{color:var(--muted);font-size:11px}.memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:24px}.memory-card{padding:24px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.memory-card p{color:var(--text);margin:0 0 16px;white-space:pre-wrap}.memory-card .actions{margin-top:16px}.reference{display:block;text-align:left;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:16px 0}.reference b,.reference small{display:block;text-align:left}.reference p{font-size:12px;text-align:left}.activity-updates{flex:1;overflow:auto;padding:24px 32px}.run{margin-bottom:16px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.run summary{padding:16px 24px;cursor:pointer;display:flex;align-items:center;gap:16px}.run summary strong{flex:1}.run>div{padding:0 24px 24px}.run .error{color:var(--bad)}.operation{padding:8px 0;color:var(--muted)}
13
13
  .drawer-backdrop{position:fixed;inset:0;background:rgba(10,18,25,.25);z-index:20}.drawer{position:fixed;right:0;top:0;height:100%;width:448px;background:var(--surface);border-left:1px solid var(--line);z-index:21;display:flex;flex-direction:column}.drawer>header{height:72px;display:flex;align-items:center;justify-content:space-between;padding:24px;border-bottom:1px solid var(--line)}.drawer-content{overflow:auto;flex:1;padding:24px}.drawer section{padding-bottom:24px;margin-bottom:24px;border-bottom:1px solid var(--line)}.drawer select{width:100%;margin:16px 0}.drawer .actions{flex-wrap:wrap}.drawer section:last-child{border-bottom:0}.input-with-action{display:flex;gap:8px;margin-top:8px}.input-with-action input{flex:1}.input-with-action button{flex:none}.checkbox{display:flex;align-items:center;gap:8px}.checkbox input{width:auto;margin:0}dialog{width:560px;max-width:90vw;max-height:90vh;overflow:auto;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:24px}dialog::backdrop{background:rgba(10,18,25,.35)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.dialog-heading>button{border:0;background:transparent;font-size:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.feedback{padding:12px 16px;background:var(--surface2);border:1px solid var(--line);border-radius:8px;color:var(--muted);white-space:pre-wrap}.feedback.issue{color:var(--bad)}.reference-dialog{width:880px}.reference-dialog pre{margin-top:24px;max-height:60vh;overflow:auto}.engine-dialog{width:calc(100vw - 96px);height:calc(100vh - 96px);padding:0;overflow:hidden}.engine-dialog .dialog-heading{height:64px;padding:16px 24px;border-bottom:1px solid var(--line);margin:0}.engine-dialog iframe{height:calc(100% - 64px)}.toast{position:fixed;bottom:24px;right:24px;z-index:50;background:var(--surface);padding:12px 16px;border:1px solid var(--line);border-radius:8px;max-width:480px;color:var(--text)}
14
+ /* K1 knowledge panel: when the dock panel owns the content, the fixed column
15
+ folds via a grid-track animation - no extra toggle button is introduced. */
16
+ .work-layout{transition:grid-template-columns .2s ease}
17
+ .work-layout.kb-panel-collapsed{grid-template-columns:minmax(0,1fr) 0px}
18
+ .knowledge-context{min-width:0;transition:visibility .2s ease,padding .2s ease}
19
+ .work-layout.kb-panel-collapsed .knowledge-context{visibility:hidden;border-left-width:0;padding-left:0;padding-right:0}
20
+ .panel-notice{display:block;margin-top:4px;color:var(--bad,#b3261e)}
21
+ @media (prefers-reduced-motion: reduce){.work-layout,.knowledge-context{transition:none}}