@sanqianx/project-knowledge 5.0.24 → 5.0.25

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 (401) hide show
  1. package/.agents/plugins/marketplace.json +20 -20
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/CHANGELOG.md +1361 -1353
  4. package/LICENSE +201 -201
  5. package/NOTICE +5 -5
  6. package/README.md +349 -349
  7. package/_modules/knowledge-engine/package.json +1 -1
  8. package/_modules/knowledge-engine/src/coordinator.js +48 -3
  9. package/_modules/knowledge-engine/src/runtime/automation-config.js +140 -140
  10. package/_modules/knowledge-engine/src/runtime/commit-conversation-binder.js +238 -238
  11. package/_modules/knowledge-engine/src/runtime/commit-processing-ledger.js +26 -26
  12. package/_modules/knowledge-engine/src/runtime/commit-prompt.js +193 -193
  13. package/_modules/knowledge-engine/src/runtime/commit-reconciler.js +394 -394
  14. package/_modules/knowledge-engine/src/runtime/contracts.js +282 -282
  15. package/_modules/knowledge-engine/src/runtime/conversation-store.js +389 -389
  16. package/_modules/knowledge-engine/src/runtime/evidence-bundle.js +228 -228
  17. package/_modules/knowledge-engine/src/runtime/git-runner.js +62 -62
  18. package/_modules/knowledge-engine/src/runtime/knowledge-promotion.js +505 -505
  19. package/_modules/knowledge-engine/src/runtime/knowledge-retrieval-service.js +400 -400
  20. package/_modules/knowledge-engine/src/runtime/markdown-knowledge-indexer.js +171 -171
  21. package/_modules/knowledge-engine/src/runtime/scanner.js +298 -298
  22. package/_modules/knowledge-engine/ui/app.js +23 -2
  23. package/_site/README.md +30 -30
  24. package/_site/_test/agent-capture-mcp-ui-test.js +68 -68
  25. package/_site/_test/agent-capture-ui-test.js +101 -101
  26. package/_site/_test/ai-profile-resolver-test.js +137 -137
  27. package/_site/_test/ai-profile-test.js +75 -75
  28. package/_site/_test/ai-vendor-presets-test.js +91 -91
  29. package/_site/_test/automatic-context-test.js +70 -70
  30. package/_site/_test/automation-queue-test.js +14 -14
  31. package/_site/_test/automation-ui-test.js +40 -40
  32. package/_site/_test/background-task-registry-test.js +43 -43
  33. package/_site/_test/baseline-schema-test.js +91 -91
  34. package/_site/_test/bin-cli-test.js +230 -230
  35. package/_site/_test/bridge-adapter-test.js +95 -95
  36. package/_site/_test/bridge-consumer-service-test.js +310 -310
  37. package/_site/_test/candidate-bin-content-test.js +35 -35
  38. package/_site/_test/candidate-product-assets-test.js +13 -13
  39. package/_site/_test/candidate-release-contract-test.js +14 -14
  40. package/_site/_test/capture-hook-dedup-test.js +158 -158
  41. package/_site/_test/cdp-browser-failure-test.js +103 -103
  42. package/_site/_test/chat-claudecodeui-match-test.js +92 -92
  43. package/_site/_test/claude-executable-discovery-test.js +90 -90
  44. package/_site/_test/claude-session-lifecycle-sweep-test.js +252 -252
  45. package/_site/_test/claude-workbench-test.js +174 -174
  46. package/_site/_test/cli-instance-management-test.js +62 -62
  47. package/_site/_test/client-capture-restart-e2e-test.js +189 -189
  48. package/_site/_test/codex-conversation-projection-test.js +60 -60
  49. package/_site/_test/codex-marketplace-scoped-path-test.js +186 -186
  50. package/_site/_test/codex-notify-capture-e2e-test.js +101 -101
  51. package/_site/_test/codex-notify-fanout-test.js +141 -134
  52. package/_site/_test/codex-notify-upgrade-test.js +253 -253
  53. package/_site/_test/commit-boundary-freeze-test.js +147 -147
  54. package/_site/_test/commit-conversation-binding-test.js +99 -99
  55. package/_site/_test/commit-evidence-test.js +110 -110
  56. package/_site/_test/configuration-generation-test.js +22 -22
  57. package/_site/_test/context-pack-test.js +200 -200
  58. package/_site/_test/conversation-api-test.js +119 -119
  59. package/_site/_test/conversation-origin-test.js +15 -15
  60. package/_site/_test/conversation-store-test.js +138 -138
  61. package/_site/_test/cross-repo-isolation-e2e-test.js +187 -187
  62. package/_site/_test/desktop-browser-compat-test.js +28 -28
  63. package/_site/_test/desktop-hook-runtime-regression-test.js +204 -204
  64. package/_site/_test/embedding-config-test.js +32 -32
  65. package/_site/_test/explicit-commit-processor-test.js +37 -37
  66. package/_site/_test/fixtures/fake-browser-exit.js +10 -10
  67. package/_site/_test/fixtures/fake-browser-hang.js +10 -10
  68. package/_site/_test/fixtures/integration-busy-worker.cjs +6 -6
  69. package/_site/_test/fixtures/make-git-repos.js +92 -92
  70. package/_site/_test/fixtures/retrieval-gold-queries.json +32 -32
  71. package/_site/_test/folder-picker-output-test.js +19 -19
  72. package/_site/_test/fresh-hook-reimport-test.js +53 -53
  73. package/_site/_test/fresh-product-data-test.js +56 -56
  74. package/_site/_test/full-integration-e2e-test.js +167 -167
  75. package/_site/_test/git-path-compatibility-test.js +80 -80
  76. package/_site/_test/git-validation-test.js +81 -81
  77. package/_site/_test/glm-ui-refresh-review-test.js +313 -404
  78. package/_site/_test/harness-isolation-test.js +138 -0
  79. package/_site/_test/helpers/cdp-browser.js +383 -0
  80. package/_site/_test/helpers/cdp-network-capture.js +66 -0
  81. package/_site/_test/helpers/find-chrome.js +34 -0
  82. package/_site/_test/helpers/free-port.js +8 -0
  83. package/_site/_test/helpers/logging-ui-fixture.js +131 -0
  84. package/_site/_test/helpers/module-fixture.js +282 -0
  85. package/_site/_test/helpers/parallel-engine-advanced-engine-child.js +45 -0
  86. package/_site/_test/helpers/parallel-engine-advanced-fault-writer.js +171 -0
  87. package/_site/_test/helpers/parallel-engine-advanced-harness.js +245 -0
  88. package/_site/_test/helpers/parallel-engine-advanced-standin-analyzer.js +80 -0
  89. package/_site/_test/helpers/parallel-engine-advanced-ui-host.js +177 -0
  90. package/_site/_test/helpers/parallel-engine-final-harness.js +314 -0
  91. package/_site/_test/helpers/parallel-engine-final-standin-analyzer.js +159 -0
  92. package/_site/_test/helpers/parallel-knowledge-fixture.js +255 -0
  93. package/_site/_test/helpers/parallel-logging-acceptance-fixture.js +111 -0
  94. package/_site/_test/helpers/parallel-logging-acceptance-proxy.js +106 -0
  95. package/_site/_test/helpers/parallel-logging-fix-r2-proxy.js +205 -0
  96. package/_site/_test/helpers/parallel-logging-integration-5025-env.js +432 -0
  97. package/_site/_test/helpers/parallel-memory-analyzer.js +81 -0
  98. package/_site/_test/helpers/parallel-memory-event-bridge.js +128 -0
  99. package/_site/_test/helpers/parallel-memory-shell.js +470 -0
  100. package/_site/_test/helpers/parallel-nav-isolation-env.js +389 -0
  101. package/_site/_test/helpers/parallel-nav-module-ui.js +186 -0
  102. package/_site/_test/helpers/parallel-nav-proxy.js +148 -0
  103. package/_site/_test/helpers/parallel-nav-shell.js +361 -0
  104. package/_site/_test/helpers/parallel-qa-engine-endpoint-guard.js +206 -0
  105. package/_site/_test/helpers/parallel-qa-engine-endpoint-isolate.js +257 -0
  106. package/_site/_test/helpers/parallel-retrieval-followup-corpus.js +293 -0
  107. package/_site/_test/helpers/parallel-retrieval-followup-next-session.js +70 -0
  108. package/_site/_test/helpers/parallel-retrieval-followup-r2-shell.js +737 -0
  109. package/_site/_test/helpers/parallel-retrieval-followup-r2-wb-host.js +82 -0
  110. package/_site/_test/helpers/parallel-retrieval-followup-shell.js +279 -0
  111. package/_site/_test/helpers/parallel-workbench-fixture.js +371 -0
  112. package/_site/_test/helpers/parallel-workbench-host.js +80 -0
  113. package/_site/_test/helpers/parallel-workbench-integration-5025-fixture.js +408 -0
  114. package/_site/_test/helpers/parallel-workbench-integration-5025-harness.js +593 -0
  115. package/_site/_test/helpers/parallel-workbench-integration-5025-host.js +70 -0
  116. package/_site/_test/helpers/parallel-workbench-integration-5025-launcher.js +240 -0
  117. package/_site/_test/helpers/parallel-workbench-integration-5025-runtime-harness.js +630 -0
  118. package/_site/_test/helpers/parallel-workbench-source-map.js +196 -0
  119. package/_site/_test/helpers/spawn-server.js +106 -0
  120. package/_site/_test/helpers/version-visibility-fixture.js +251 -0
  121. package/_site/_test/hook-runtime-endpoint-test.js +88 -88
  122. package/_site/_test/hook-status-repair-api-test.js +152 -152
  123. package/_site/_test/hook-trigger-test.js +85 -85
  124. package/_site/_test/hook-worktree-test.js +42 -42
  125. package/_site/_test/import-preflight-api-test.js +234 -234
  126. package/_site/_test/index-builder-test.js +41 -41
  127. package/_site/_test/index-error-display-contract-test.js +10 -10
  128. package/_site/_test/index-writer-concurrency-test.js +135 -135
  129. package/_site/_test/integration-adapters-test.js +262 -262
  130. package/_site/_test/integration-auto-repair-test.js +113 -113
  131. package/_site/_test/integration-capture-setup-test.js +118 -118
  132. package/_site/_test/integration-intent-test.js +81 -81
  133. package/_site/_test/integration-runtime-binding-a2-test.js +566 -566
  134. package/_site/_test/integration-runtime-binding-a3-test.js +227 -227
  135. package/_site/_test/integration-runtime-binding-test.js +473 -473
  136. package/_site/_test/integration-status-scan-test.js +29 -29
  137. package/_site/_test/integration-surface-coverage-test.js +164 -164
  138. package/_site/_test/kb-framework-test.js +57 -57
  139. package/_site/_test/kbpath-follow-test.js +63 -63
  140. package/_site/_test/knowledge-db-test.js +144 -144
  141. package/_site/_test/knowledge-engine-client-test.js +120 -109
  142. package/_site/_test/knowledge-language-control-test.js +170 -170
  143. package/_site/_test/knowledge-maintenance-test.js +40 -40
  144. package/_site/_test/knowledge-promotion-recovery-test.js +260 -260
  145. package/_site/_test/knowledge-query-test.js +54 -54
  146. package/_site/_test/knowledge-retrieval-service-test.js +77 -77
  147. package/_site/_test/knowledge-scopes-test.js +37 -37
  148. package/_site/_test/knowledge-storage-location-test.js +28 -28
  149. package/_site/_test/knowledge-storage-startup-test.js +52 -52
  150. package/_site/_test/knowledge-store-logs-supervision-test.js +89 -89
  151. package/_site/_test/launcher-readiness-test.js +80 -80
  152. package/_site/_test/legacy-claude-session-alias-test.js +106 -106
  153. package/_site/_test/legacy-routes-removed-test.js +47 -47
  154. package/_site/_test/legacy-workbench-exclusion-test.js +92 -92
  155. package/_site/_test/live-gateway-test.js +48 -48
  156. package/_site/_test/local-marketplace-test.js +16 -16
  157. package/_site/_test/log-redaction-test.js +58 -58
  158. package/_site/_test/logging-api-test.js +89 -89
  159. package/_site/_test/logging-sse-no-gap-test.js +88 -88
  160. package/_site/_test/logging-ui-test.js +107 -107
  161. package/_site/_test/markdown-delta-overlay-test.js +85 -85
  162. package/_site/_test/markdown-maintenance-api-test.js +75 -75
  163. package/_site/_test/markdown-maintenance-test.js +11 -11
  164. package/_site/_test/mcp-server-test.js +149 -149
  165. package/_site/_test/model-context-windows-test.js +89 -89
  166. package/_site/_test/module-agent-start-proxy-test.js +65 -65
  167. package/_site/_test/module-artifact-integrity-test.js +27 -27
  168. package/_site/_test/module-boundary-test.js +30 -30
  169. package/_site/_test/module-bridge-eventbridge-test.js +202 -202
  170. package/_site/_test/module-dynamic-port-test.js +118 -118
  171. package/_site/_test/module-index-proxy-test.js +33 -33
  172. package/_site/_test/module-model-configuration-test.js +44 -44
  173. package/_site/_test/module-process-lifecycle-test.js +35 -35
  174. package/_site/_test/module-stream-proxy-test.js +34 -34
  175. package/_site/_test/module-terminal-restart-test.js +63 -63
  176. package/_site/_test/module-wiring-unbind-race-test.js +59 -59
  177. package/_site/_test/native-context-integrations-test.js +86 -86
  178. package/_site/_test/non-release-ci-test.js +34 -34
  179. package/_site/_test/offline-boundary-isolation-test.js +32 -32
  180. package/_site/_test/orphaned-claim-recovery-test.js +80 -80
  181. package/_site/_test/package-boundary-test.js +43 -43
  182. package/_site/_test/package-startup-test.js +56 -56
  183. package/_site/_test/packaged-ui-smoke-test.js +88 -88
  184. package/_site/_test/parallel-ci-r9-posix-socket-budget-test.js +156 -0
  185. package/_site/_test/parallel-engine-advanced-eng005-test.js +136 -0
  186. package/_site/_test/parallel-engine-advanced-eng006-test.js +171 -0
  187. package/_site/_test/parallel-engine-advanced-eng007-reconcile-test.js +231 -0
  188. package/_site/_test/parallel-engine-advanced-eng009-test.js +208 -0
  189. package/_site/_test/parallel-engine-advanced-eng010-test.js +213 -0
  190. package/_site/_test/parallel-engine-advanced-eng011-ui-probe.js +459 -0
  191. package/_site/_test/parallel-engine-final-eng002-test.js +255 -0
  192. package/_site/_test/parallel-engine-final-eng007-test.js +269 -0
  193. package/_site/_test/parallel-engine-final-eng011-test.js +197 -0
  194. package/_site/_test/parallel-engine-final-eng012-test.js +354 -0
  195. package/_site/_test/parallel-knowledge-client-error-code-test.js +184 -0
  196. package/_site/_test/parallel-knowledge-engine-test.js +353 -0
  197. package/_site/_test/parallel-knowledge-retrieval-test.js +292 -0
  198. package/_site/_test/parallel-knowledge-vector-test.js +168 -0
  199. package/_site/_test/parallel-linux-ci-r7-log007-day-test.js +110 -0
  200. package/_site/_test/parallel-logging-acceptance-log003-test.js +224 -0
  201. package/_site/_test/parallel-logging-acceptance-log004-test.js +231 -0
  202. package/_site/_test/parallel-logging-acceptance-log005-test.js +208 -0
  203. package/_site/_test/parallel-logging-acceptance-log006-test.js +214 -0
  204. package/_site/_test/parallel-logging-acceptance-log007-test.js +223 -0
  205. package/_site/_test/parallel-logging-acceptance-log008-test.js +180 -0
  206. package/_site/_test/parallel-logging-fix-r2-crash-probe.js +271 -0
  207. package/_site/_test/parallel-logging-fix-r2-gap-test.js +294 -0
  208. package/_site/_test/parallel-logging-fix-r2-normalhook-test.js +330 -0
  209. package/_site/_test/parallel-logging-integration-5025-portability-test.js +554 -0
  210. package/_site/_test/parallel-memory-candidate-test.js +301 -0
  211. package/_site/_test/parallel-memory-manual-test.js +197 -0
  212. package/_site/_test/parallel-memory-scope-test.js +228 -0
  213. package/_site/_test/parallel-memory-source-test.js +227 -0
  214. package/_site/_test/parallel-memory-sync-test.js +238 -0
  215. package/_site/_test/parallel-memory-view-r8-reload-gate-test.js +123 -0
  216. package/_site/_test/parallel-nav-failure-test.js +119 -0
  217. package/_site/_test/parallel-nav-isolation-test.js +308 -0
  218. package/_site/_test/parallel-nav-isolation-vector-path-test.js +90 -0
  219. package/_site/_test/parallel-nav-offline-test.js +272 -0
  220. package/_site/_test/parallel-nav-operability-test.js +257 -0
  221. package/_site/_test/parallel-nav-switch-test.js +247 -0
  222. package/_site/_test/parallel-nav-theme-test.js +130 -0
  223. package/_site/_test/parallel-nav-viewport-test.js +310 -0
  224. package/_site/_test/parallel-qa-engine-endpoint-guard-test.js +273 -0
  225. package/_site/_test/parallel-retrieval-followup-citation-test.js +219 -0
  226. package/_site/_test/parallel-retrieval-followup-corpus-test.js +287 -0
  227. package/_site/_test/parallel-workbench-independent-host.js +262 -0
  228. package/_site/_test/parallel-workbench-integration-5025-abort-probe.js +340 -0
  229. package/_site/_test/parallel-workbench-integration-5025-drafts-probe.js +588 -0
  230. package/_site/_test/parallel-workbench-integration-5025-env-check.js +317 -0
  231. package/_site/_test/parallel-workbench-integration-5025-model-probe.js +342 -0
  232. package/_site/_test/parallel-workbench-integration-5025-ordering-probe.js +326 -0
  233. package/_site/_test/parallel-workbench-model-probe.js +336 -0
  234. package/_site/_test/parallel-workbench-offline-test.js +169 -0
  235. package/_site/_test/parallel-workbench-provenance-trace.js +134 -0
  236. package/_site/_test/parallel-workbench-source-match.js +206 -0
  237. package/_site/_test/parallel-workbench-standalone-turn.js +349 -0
  238. package/_site/_test/path-consistency-test.js +151 -151
  239. package/_site/_test/pending-sweep-test.js +9 -9
  240. package/_site/_test/post-commit-automation-test.js +87 -87
  241. package/_site/_test/pr-consumer-contract-test.js +55 -55
  242. package/_site/_test/product-brand-contract-test.js +25 -25
  243. package/_site/_test/product-diagnostics-ui-test.js +93 -93
  244. package/_site/_test/product-empty-state-test.js +148 -0
  245. package/_site/_test/product-import-ui-test.js +219 -104
  246. package/_site/_test/product-navigation-test.js +152 -0
  247. package/_site/_test/product-progress-status-test.js +84 -84
  248. package/_site/_test/project-delete-recovery-test.js +64 -64
  249. package/_site/_test/project-domain-create-test.js +91 -0
  250. package/_site/_test/project-domain-scope-retrieval-test.js +214 -0
  251. package/_site/_test/project-git-init-confirm-test.js +115 -0
  252. package/_site/_test/project-goal-editor-test.js +144 -144
  253. package/_site/_test/project-import-duplicate-alias-test.js +134 -0
  254. package/_site/_test/project-import-unicode-restart-test.js +140 -0
  255. package/_site/_test/project-lifecycle-transaction-test.js +106 -106
  256. package/_site/_test/project-module-partial-recovery-test.js +222 -0
  257. package/_site/_test/project-remove-running-guard-test.js +79 -79
  258. package/_site/_test/project-store-test.js +90 -90
  259. package/_site/_test/project-unbind-late-read-ui-test.js +250 -0
  260. package/_site/_test/project-unbind-writer-guard-test.js +231 -0
  261. package/_site/_test/prompt-settings-test.js +115 -115
  262. package/_site/_test/protected-architecture-gate-test.js +122 -122
  263. package/_site/_test/refactor-characterization-test.js +36 -36
  264. package/_site/_test/registry-events-test.js +38 -38
  265. package/_site/_test/release-version-sync-test.js +115 -115
  266. package/_site/_test/requirement-binding-test.js +113 -113
  267. package/_site/_test/requirement-recorder-test.js +173 -173
  268. package/_site/_test/run-all-tests.js +173 -161
  269. package/_site/_test/runtime-endpoint-test.js +64 -64
  270. package/_site/_test/scanner-test.js +83 -83
  271. package/_site/_test/server-security-test.js +96 -96
  272. package/_site/_test/sessions-stream-test.js +93 -93
  273. package/_site/_test/shared-contracts-test.js +58 -58
  274. package/_site/_test/shared-scope-root-binding-test.js +74 -67
  275. package/_site/_test/simple-import-test.js +98 -98
  276. package/_site/_test/startup-analysis-disabled-test.js +16 -16
  277. package/_site/_test/storage-foundation-test.js +78 -78
  278. package/_site/_test/structured-logger-test.js +101 -101
  279. package/_site/_test/t07b-cln-005-coverage-test.js +212 -0
  280. package/_site/_test/team-knowledge-store-sparse-checkout-test.js +196 -196
  281. package/_site/_test/team-knowledge-store-test.js +132 -132
  282. package/_site/_test/test-server-cleanup-test.js +35 -35
  283. package/_site/_test/test-server-module-isolation-test.js +37 -37
  284. package/_site/_test/tracking-start-test.js +144 -144
  285. package/_site/_test/vector-storage-root-test.js +75 -75
  286. package/_site/_test/version-visibility-browser-probe.js +249 -0
  287. package/_site/_test/version-visibility-test.js +92 -0
  288. package/_site/_test/workbench-context-receipts-test.js +22 -22
  289. package/_site/_test/workbench-permission-test.js +117 -117
  290. package/_site/_test/zcode-capture-integration-test.js +112 -112
  291. package/_site/lib/ai-profile-resolver.js +78 -78
  292. package/_site/lib/ai-vendor-presets.js +83 -83
  293. package/_site/lib/ai-workspace.js +104 -104
  294. package/_site/lib/atomic-file.js +204 -204
  295. package/_site/lib/automation-config.js +140 -140
  296. package/_site/lib/bridge-adapter.js +260 -260
  297. package/_site/lib/bridge-consumer-service.js +402 -402
  298. package/_site/lib/capture-hook-config.js +108 -108
  299. package/_site/lib/claude-cli-runner.js +1599 -1599
  300. package/_site/lib/cli-instances.js +43 -43
  301. package/_site/lib/codex-context-status.js +17 -17
  302. package/_site/lib/codex-notify-config.js +193 -193
  303. package/_site/lib/commit-conversation-binder.js +247 -247
  304. package/_site/lib/commit-processing-ledger.js +27 -27
  305. package/_site/lib/commit-prompt.js +202 -202
  306. package/_site/lib/commit-reconciler.js +444 -444
  307. package/_site/lib/context-pack-builder.js +299 -299
  308. package/_site/lib/contracts.js +291 -291
  309. package/_site/lib/conversation-exclusions.js +204 -204
  310. package/_site/lib/conversation-query-service.js +161 -161
  311. package/_site/lib/conversation-store.js +387 -387
  312. package/_site/lib/data-dir.js +13 -13
  313. package/_site/lib/embedding-service.js +85 -85
  314. package/_site/lib/engine-connection.js +93 -93
  315. package/_site/lib/engine-knowledge-client.js +76 -72
  316. package/_site/lib/evidence-bundle.js +228 -228
  317. package/_site/lib/folder-picker-output.js +24 -24
  318. package/_site/lib/git-path.js +14 -14
  319. package/_site/lib/git-runner.js +62 -62
  320. package/_site/lib/github-team-store.js +1175 -1175
  321. package/_site/lib/hook-manager.js +203 -203
  322. package/_site/lib/index-builder.js +157 -157
  323. package/_site/lib/index-service.js +173 -173
  324. package/_site/lib/integration-auto-repair.js +77 -77
  325. package/_site/lib/integration-installer.js +1240 -1240
  326. package/_site/lib/integration-intent.js +88 -88
  327. package/_site/lib/integration-status-scan.js +99 -99
  328. package/_site/lib/integration-status-worker.js +14 -14
  329. package/_site/lib/kb-framework.js +191 -191
  330. package/_site/lib/kb-validator.js +124 -124
  331. package/_site/lib/knowledge-db.js +363 -363
  332. package/_site/lib/knowledge-promotion.js +435 -435
  333. package/_site/lib/knowledge-retrieval-service.js +401 -401
  334. package/_site/lib/knowledge-schema.js +121 -121
  335. package/_site/lib/knowledge-tool-runtime.js +366 -366
  336. package/_site/lib/live-gateway.js +78 -78
  337. package/_site/lib/llm-client.js +173 -173
  338. package/_site/lib/markdown-knowledge-indexer.js +230 -230
  339. package/_site/lib/model-context-windows.js +82 -82
  340. package/_site/lib/module-bridge.js +874 -874
  341. package/_site/lib/module-port-resolver.js +57 -57
  342. package/_site/lib/post-commit-automation.js +141 -141
  343. package/_site/lib/product-data.js +35 -35
  344. package/_site/lib/project-lifecycle-service.js +554 -554
  345. package/_site/lib/project-registry-store.js +129 -129
  346. package/_site/lib/project-store.js +268 -268
  347. package/_site/lib/prompt-registry.js +148 -148
  348. package/_site/lib/public-version-info.js +37 -0
  349. package/_site/lib/registry-events.js +16 -16
  350. package/_site/lib/requirement-adapters.js +10 -10
  351. package/_site/lib/requirement-binder.js +112 -112
  352. package/_site/lib/requirement-recorder.js +278 -278
  353. package/_site/lib/runtime-control.js +89 -89
  354. package/_site/lib/runtime-endpoint.js +160 -160
  355. package/_site/lib/scanner.js +298 -298
  356. package/_site/lib/server-app.js +1672 -1664
  357. package/_site/lib/settings-store.js +153 -153
  358. package/_site/lib/storage-layout.js +166 -166
  359. package/_site/lib/structured-logger.js +574 -574
  360. package/_site/lib/zcode-context-integration.js +60 -60
  361. package/_site/scripts/codex-notify-fanout.cjs +95 -95
  362. package/_site/scripts/folder-picker.ps1 +156 -156
  363. package/_site/scripts/hook-trigger.js +158 -158
  364. package/_site/scripts/install-module-candidates.js +69 -69
  365. package/_site/scripts/pack-module-candidates.js +89 -89
  366. package/_site/scripts/sync-product-content.js +28 -28
  367. package/_site/scripts/sync-release-version.js +164 -164
  368. package/_site/scripts/vendor-modules.js +49 -49
  369. package/_site/scripts/verify-module-runtime.js +50 -50
  370. package/_site/scripts/verify-product-runtime.js +36 -36
  371. package/_site/scripts/verify-retrieval-gold.js +83 -83
  372. package/_site/server.js +15 -15
  373. package/_site/start.bat +26 -26
  374. package/_site/stop.bat +11 -11
  375. package/bin/project-knowledge-integrations.js +254 -254
  376. package/bin/project-knowledge-kb.js +67 -67
  377. package/bin/project-knowledge-mcp.js +201 -201
  378. package/bin/project-knowledge.js +269 -170
  379. package/claude-prompts.json +21 -21
  380. package/docs/README.zh-CN.md +207 -205
  381. package/docs/assets/architecture.svg +181 -181
  382. package/docs/assets/logo.svg +49 -49
  383. package/docs/fresh-v5-start.md +44 -44
  384. package/docs/leader-glm-workbench-playbook.md +122 -122
  385. package/docs/project-registry-schema.md +33 -33
  386. package/docs/release-5.0.16-acceptance.md +176 -176
  387. package/docs/release-5.0.17-acceptance.md +117 -117
  388. package/docs/release-5.0.19-acceptance.md +39 -39
  389. package/docs/team-knowledge-mode-a-plan.md +73 -73
  390. package/docs/testing-strategy.md +33 -33
  391. package/module-runtime-manifest.json +66 -63
  392. package/package.json +113 -110
  393. package/plugins/project-knowledge/.claude-plugin/plugin.json +1 -1
  394. package/plugins/project-knowledge/.codex-plugin/plugin.json +1 -1
  395. package/plugins/project-knowledge/.mcp.json +1 -1
  396. package/templates/change.md +30 -30
  397. package/templates/project-readme.md +52 -52
  398. package/ui/index.html +3 -2
  399. package/ui/version-info.css +44 -0
  400. package/ui/version-info.js +24 -0
  401. package/vendor-manifest.json +55 -55
package/README.md CHANGED
@@ -1,349 +1,349 @@
1
- <p align="center">
2
- <img src="docs/assets/logo.svg" alt="project-knowledge" width="540">
3
- </p>
4
-
5
- <p align="center">
6
- <strong>Local, Git-triggered knowledge for software projects.</strong><br>
7
- Markdown is the source of truth; the local vector index is always derived and rebuildable.
8
- </p>
9
-
10
- ## Install
11
-
12
- ### npm
13
-
14
- Install the web product and start the local service:
15
-
16
- ```bash
17
- npm install -g @sanqianx/project-knowledge@latest
18
- project-knowledge-integrations install
19
- project-knowledge
20
- ```
21
-
22
- 1. `npm install -g @sanqianx/project-knowledge@latest` installs the shell,
23
- three pinned module dependencies and the bundled knowledge-engine.
24
- 2. `project-knowledge-integrations install` is the one-time Integration Setup.
25
- For every detected client (Claude Code / Codex / OpenCode) it installs two
26
- independent capabilities, reported separately:
27
- - **Knowledge Integration** — plugin / MCP / Skill so agents can query the
28
- knowledge base;
29
- - **Development Capture** — managed Bridge hooks / notify / plugin so the
30
- agent conversations in real Git workspaces are captured into each
31
- imported project's Development Conversation.
32
- It also registers the host-level `project-knowledge` Bridge consumer.
33
- ZCode is supported for Development Capture only; an unverified knowledge
34
- plugin is never reported as installed. Use `install --ide zcode --capture-only`
35
- or System Status → 外部 Agent 采集 in the web UI. Per-client repair/removal
36
- preserves unrelated hooks and existing records. Failures include an operation
37
- ID and persist to the local system diagnostic log.
38
- No client UI needs to be opened; third-party hooks and configs are
39
- preserved. Codex setup repairs this product's stale notify paths, keeps live
40
- desktop notification wrappers and existing compatible Radar notifications,
41
- and refuses to overwrite unknown third-party commands. Changed notify
42
- settings are backed up beside `config.toml` without copying other settings.
43
- 3. `project-knowledge` starts a fresh v5 local backend. Import projects again;
44
- older registries, knowledge, sessions and unfinished tasks are not migrated.
45
-
46
- Notes:
47
-
48
- - Restart already-running Claude Code sessions once after installing
49
- Development Capture — hooks load at session start. Only conversations after
50
- setup are captured; history is never backfilled.
51
- - To narrow the setup: `--ide claude`, `--capture-only`, `--knowledge-only`;
52
- to remove capture per client: `uninstall --capture-only`; to disable
53
- capture globally (including the Bridge consumer): `disable-capture`.
54
- - To repair Codex capture after an npm or Codex desktop upgrade, use System
55
- Status → 外部 Agent 采集 → 接入/修复, or
56
- `project-knowledge-integrations install --ide codex --capture-only`.
57
- Repeating setup does not add notification wrappers. Removing capture restores
58
- the preserved notification chain and leaves captured records on disk.
59
- - Capture repair replaces the known old standalone Bridge entry with the
60
- current product Bridge and keeps one capture hook per event. Claude Code
61
- and ZCode mixed-group third-party hooks and knowledge-context hooks remain
62
- intact. Duplicate or stale entries are reported as needing repair rather
63
- than healthy; existing journals are not moved or deleted.
64
-
65
- The local service listens on `127.0.0.1:5757` by default. The CLI can select a
66
- nearby free port and records the active loopback endpoint so managed Git Hooks
67
- do not depend on a hard-coded port.
68
-
69
- ```bash
70
- project-knowledge # start in the background and open the UI
71
- project-knowledge --fg # run in the foreground
72
- project-knowledge status # show the active local backend
73
- project-knowledge stop # stop the background backend
74
- project-knowledge status --all # list verified local instances and data directories
75
- project-knowledge stop --port 5804 # stop a specific verified instance
76
- project-knowledge --data "D:/data/knowledge" # select an independent data directory
77
- project-knowledge --port 9000
78
- project-knowledge --no-open
79
- ```
80
-
81
- Requires Node.js 22 or newer and Git on `PATH`.
82
-
83
- Commands such as `stop`, `STOP`, and `Stop` are equivalent. Unknown commands and
84
- invalid arguments fail without starting a service. Default start/status/stop are
85
- scoped to the selected data directory; stopping another directory requires an
86
- explicit port or `--data`. The CLI uses a local control channel, not a shared PID
87
- file or blind process termination. Stop succeeds only after the backend and its
88
- owned modules finish shutdown; independently started modules are preserved.
89
- An older or unverifiable instance is reported explicitly, never treated as safely
90
- stopped. Stop the previous running version before upgrading.
91
-
92
- ### Windows desktop
93
-
94
- Version 5.0.0 delivers the web product through npm. A new Windows installer
95
- and desktop auto-update are not part of this release.
96
-
97
- ## Runtime model
98
-
99
- The shell connects and projects; knowledge-engine owns the analysis pipeline:
100
-
101
- ```text
102
- Git Hook → event-bridge journal → durable engine claim → isolated Agent
103
- → staging validation → Markdown promotion → vector-hub → retrieval
104
- ```
105
-
106
- Import establishes a Git tracking baseline, installs and verifies the managed
107
- Hook, and creates project metadata. It does not run AI, infer requirements from
108
- the repository, or generate placeholder knowledge. For an empty repository,
109
- the first later Commit is eligible for analysis.
110
-
111
- The Hook writes commit evidence to the bridge journal and only notifies the
112
- local service. Notifications may be lost; journal consumption and Git startup
113
- reconciliation recover eligible commits. A Hook failure never blocks a commit.
114
- Import does not trigger a costly historical analysis.
115
-
116
- Within a project, Commits run oldest-first and stop at the first failure.
117
- Different projects may analyze concurrently (maximum two). Duplicate events
118
- do not re-analyze completed commits. Closing the browser does not stop work.
119
-
120
- ## Knowledge safety
121
-
122
- AI receives a frozen claim containing the Commit SHA, real patch evidence,
123
- bound requirement IDs, prompt hash, and fixed knowledge path. It can write only
124
- to an internal per-run staging directory. A manifest must validate before any
125
- file reaches the final project knowledge directory.
126
-
127
- Promotion uses verified hashes, backups, and a durable journal. Only after
128
- Markdown promotion succeeds does the analyzed-Commit pointer advance and mark
129
- the index dirty. Index failure never rolls back Markdown or reruns AI; it stays
130
- visible as dirty state and is retried.
131
-
132
- vector-hub owns the derived index; the shell no longer runs a second index
133
- writer. Failed indexing leaves promoted Markdown intact and repairable.
134
-
135
- Managed vectors follow the configured knowledge root at `<knowledge>/.indexes`.
136
- The system drawer displays the actual directory and pending wiring separately.
137
- Root changes leave project Markdown and old indexes untouched, drain existing
138
- index writes, switch subsequent writes, and rebuild registered knowledge with
139
- the configured embedding model. Credentials and small runtime metadata remain
140
- in the product data directory; no expensive historical Agent analysis is started.
141
-
142
- The application does not create, edit, refresh, or delete `CLAUDE.md`.
143
-
144
- ## Requirement capture
145
-
146
- ### Automatic development context
147
-
148
- Claude Code's bundled plugin has a synchronous `UserPromptSubmit` hook. It verifies the current local product instance and asks `/api/engine/context` for project/domain facts plus applicable confirmed project, domain and global memories before the model processes a normal request. No reminder to use MCP is required. The complete context is bounded to 8,000 characters; memories have an independent 3,000-character budget. MCP and the Skill remain available for deeper reads. Workbench uses the same engine endpoint and suppresses duplicate native injection.
149
-
150
- Knowledge Integration, Automatic Context and Development Capture are separate capabilities in System Status. An old or disabled plugin is not automatic-context readiness: npm upgrades do not silently upgrade third-party clients, and the existing integration repair action updates stale product plugins. Reopen external sessions after updating. The native-client candidate adds Codex plugin `UserPromptSubmit` and ZCode user-configuration process hooks. Codex requires native `/hooks` review and trust of the current definition; installation never writes trust or uses a bypass flag. Hook trust is read from the native app-server and checked for the selected repository. ZCode context and conversation capture are separate entries, preserving model and third-party configuration. OpenCode keeps its existing tool integration; automatic injection is not claimed for it.
151
-
152
- Context reading has a ten-second total client deadline and fails open with a visible warning. A vector failure is reported as file fallback, not vector success; an unknown project is ignored rather than borrowing a different project's context. `knowledge.context.prepared` and `agent.context.output` logs contain only metadata and citations, not the request or knowledge body. An output log does not itself prove model delivery; native-client acceptance must verify that separately. Internal analysis and Workbench-owned context suppress repeated client injection.
153
-
154
- Coding-agent integrations can append the user's real request before code is
155
- changed. Requirement capture writes bounded metadata to the selected project's
156
- `requirements.jsonl`; it does not start analysis or write knowledge.
157
-
158
- The MCP server exposes:
159
-
160
- - read-only `resolve`, `search`, `ask`, `get`, and `history` tools;
161
- - one write-only `record_requirement` metadata tool.
162
-
163
- ```bash
164
- npx @sanqianx/project-knowledge@latest install
165
- npx @sanqianx/project-knowledge@latest install --ide claude
166
- npx @sanqianx/project-knowledge@latest install --ide codex
167
- npx @sanqianx/project-knowledge@latest install --ide opencode
168
- ```
169
-
170
- Read-only CLI examples:
171
-
172
- ```bash
173
- project-knowledge-kb search --project <projectId> --query "refresh token policy" --json
174
- project-knowledge-kb ask --project <projectId> --query "what was decided about login?"
175
- project-knowledge-kb get --project <projectId> --entry modules/auth.md --json
176
- project-knowledge-kb history --project <projectId> --json
177
- ```
178
-
179
- Queries never create or rewrite configuration. If the internal index is
180
- unavailable, search falls back to current Markdown. Project, domain and brain
181
- scopes are nested; unconfirmed memory candidates are not task preferences.
182
-
183
- For engine-wired projects, the CLI and MCP delegate `search`, `ask`, `get` and
184
- `history` to the same engine used by the web UI, including commit provenance.
185
- They verify the running instance against the selected data directory; an
186
- unavailable or mismatched instance is an explicit failure, not a second local
187
- index with different facts. Only projects without engine wiring retain the
188
- local legacy read contract. Use `--scope domain` or `--scope brain` to broaden
189
- CLI searches; MCP accepts the equivalent `scope`. Shared-file reads accept
190
- `--space <spaceId>` (MCP: `space` or `spaceId`).
191
-
192
- ## Storage
193
-
194
- Version 5 is a fresh start, not a data upgrade. Stop the previous process,
195
- remove any old `KB_DATA_DIR` override, configure models and import projects into
196
- new empty knowledge directories. Old files remain untouched but are not read.
197
- See [fresh v5 setup](docs/fresh-v5-start.md). Queued tasks can be cancelled by
198
- unbinding; only an active knowledge/index writer blocks removal.
199
-
200
- Default internal data directory: `~/.project-knowledge-v5/`
201
-
202
- Override it with `KB_DATA_DIR`:
203
-
204
- ```powershell
205
- $env:KB_DATA_DIR = 'D:\data\project-knowledge'
206
- project-knowledge
207
- ```
208
-
209
- The user selects a global knowledge root before importing projects. That root
210
- chooses directories for future imports, new shared scopes, and derived vector
211
- indexes (`<knowledge root>/.indexes`). Each imported project stores an
212
- absolute, fixed `knowledgePath`; changing the global root does not move existing
213
- projects.
214
-
215
- Existing project and shared-knowledge directories do not move when the root
216
- changes. Brain/domain directory bindings are retained in the shell settings
217
- after the engine acknowledges them. Existing engine bindings are reused when
218
- first recording those fields. A failed registration is shown as pending, not
219
- healthy. Old index directories are retained; indexes rebuild at the new root.
220
- Settings, registration metadata, caches, runtime state, logs, and recovery
221
- assets remain in the internal data directory; vector payloads do not:
222
-
223
- ```text
224
- ~/.project-knowledge-v5/
225
- ├── settings.json
226
- ├── projects.json # minimal project ID/order index
227
- ├── projects/<projectId>/
228
- │ ├── config.json # fixed repoPath/knowledgePath
229
- │ ├── state.json # tracking, claim, index, Hook state
230
- │ └── requirements.jsonl # created only when used
231
- ├── knowledge-engine/ # durable claims, runs and cursors
232
- ├── cache/ # models, exports, context packs
233
- ├── runtime/ # claims, staging, journals, locks
234
- ├── logs/
235
- │ ├── app/
236
- │ ├── projects/<projectId>/
237
- │ └── hooks/
238
- └── recovery/ # migrations, promotion/index backups
239
-
240
- <selected knowledge root>/
241
- ├── .indexes/ # rebuildable vector payloads
242
- ├── _shared/<brain or domain ID>/ # fixed shared-knowledge bindings
243
- └── <project storage name>/
244
- ├── README.md # when produced by verified knowledge
245
- ├── GOAL.md
246
- ├── ARCHITECTURE.md
247
- ├── modules/*.md
248
- └── changes/*.md
249
- ```
250
-
251
- Team knowledge is an explicit exception: an import may bind an existing
252
- checked-out team-store subdirectory. Its final absolute path is still fixed in
253
- the project config, must remain inside the selected store, and is treated as
254
- externally owned when the project registration is deleted.
255
-
256
- ## Migration
257
-
258
- The versioned `layout-v2` migration discovers legacy assets without modifying
259
- them, creates a journal and centralized recovery backup, stages settings and
260
- per-project metadata, validates preserved paths/secrets/pointers and any legacy
261
- index, then activates files with the minimal registry last. The completion
262
- marker is written only after the new stores reopen successfully.
263
-
264
- Interrupted or failed migration keeps the legacy reader path available and
265
- leaves source knowledge, old logs, configuration files, and backups intact for
266
- retry or diagnosis.
267
-
268
- ## Product UI
269
-
270
- The six primary pages are Brain, Start work, Knowledge search, Long-term
271
- memory, Domains/projects and Activity. Start work embeds the real Workbench,
272
- not a second chat implementation. Import projects from Domains/projects;
273
- confirm both code and knowledge directories and retry only failed wiring.
274
-
275
- Domain knowledge and confirmed brain memories live alongside existing project
276
- knowledge. Adding a brain does not move project Markdown. Model credentials
277
- are owned by Workbench; maintenance has a persisted default independent of
278
- temporary chat selection. Runtime credentials never enter engine state.
279
-
280
- System status groups four-module health, configuration and diagnostics.
281
- Activity retains the structured-log capabilities:
282
-
283
- - trace/debug/info/warn/error/fatal filtering;
284
- - local-date, project, component, event, operation, Commit, and text filters;
285
- - newest-first cursor pagination, pause/auto-refresh, and filtered export;
286
- - operation-flow and structured error/stack details;
287
- - logger health/degraded state and Hook/index/project read-only status;
288
- - matching light/dark themes across the shell and native module frames.
289
-
290
- Logs use `log/v2` JSONL, daily files and bounded segments. Retention defaults to
291
- 365 days; `0` disables time-based deletion. Capacity cleanup is deterministic.
292
- Secrets are recursively redacted during write, query, error serialization, and
293
- export. The log root is fixed under the internal data directory.
294
-
295
- ## HTTP security
296
-
297
- The default loopback server accepts same-origin/loopback browser requests. It
298
- does not use wildcard CORS. Binding to a non-loopback address requires
299
- `KB_SITE_AUTH_TOKEN`, and requests must also pass Origin validation. Public AI
300
- profile responses expose only masked secret metadata; generic errors return an
301
- operation ID without a stack. There is no raw-file route.
302
-
303
- ## Repository layout
304
-
305
- ```text
306
- _site/server.js # thin executable entry
307
- _site/lib/server-app.js # HTTP/runtime composition
308
- _site/lib/storage-layout.js # canonical internal paths
309
- _site/lib/project-*-store.js # v2 registry/config/state stores
310
- _site/lib/project-lifecycle-service.js
311
- _site/lib/commit-reconciler.js
312
- _site/lib/knowledge-promotion.js
313
- _site/lib/index-service.js
314
- _site/lib/structured-logger.js
315
- _site/lib/knowledge-tool-runtime.js
316
- _site/scripts/hook-trigger.js
317
- ui/index.html # unified production web UI
318
- ui/product.js, ui/product.css # shell navigation and state projection
319
- _modules/knowledge-engine/ # verified dependency-free engine
320
- bin/project-knowledge*.js # CLI and MCP entry points
321
- desktop/ # Windows Electron package
322
- ```
323
-
324
- ## Testing
325
-
326
- ```bash
327
- npm ci
328
- npm test -- --no-report
329
- npm test --prefix desktop
330
- npm pack --dry-run --json
331
- ```
332
-
333
- The automated suite includes real Git Hooks, paths with spaces/non-ASCII text,
334
- online and offline Commit reconciliation, crash-lock recovery, atomic index
335
- replacement, migration fault injection, packaged-startup contracts, API
336
- security and log redaction/cursors. Product browser acceptance uses one
337
- 1920×1080 desktop viewport and controlled model/embedding doubles; real-model
338
- and real-index smoke tests are reported separately. No mobile matrix or new
339
- Windows installer is claimed. Full crash-stage combinations and the final
340
- switch of a user's existing data require separate acceptance.
341
-
342
- See the [Leader / GLM Workbench playbook](docs/leader-glm-workbench-playbook.md)
343
- for task dispatch and independent review, and the
344
- [5.0.16 acceptance record](docs/release-5.0.16-acceptance.md) for this round's
345
- actual results and remaining gates. These documents are not a release approval.
346
-
347
- ## License
348
-
349
- [Apache-2.0](LICENSE). See [NOTICE](NOTICE).
1
+ <p align="center">
2
+ <img src="docs/assets/logo.svg" alt="project-knowledge" width="540">
3
+ </p>
4
+
5
+ <p align="center">
6
+ <strong>Local, Git-triggered knowledge for software projects.</strong><br>
7
+ Markdown is the source of truth; the local vector index is always derived and rebuildable.
8
+ </p>
9
+
10
+ ## Install
11
+
12
+ ### npm
13
+
14
+ Install the web product and start the local service:
15
+
16
+ ```bash
17
+ npm install -g @sanqianx/project-knowledge@latest
18
+ project-knowledge-integrations install
19
+ project-knowledge
20
+ ```
21
+
22
+ 1. `npm install -g @sanqianx/project-knowledge@latest` installs the shell,
23
+ three pinned module dependencies and the bundled knowledge-engine.
24
+ 2. `project-knowledge-integrations install` is the one-time Integration Setup.
25
+ For every detected client (Claude Code / Codex / OpenCode) it installs two
26
+ independent capabilities, reported separately:
27
+ - **Knowledge Integration** — plugin / MCP / Skill so agents can query the
28
+ knowledge base;
29
+ - **Development Capture** — managed Bridge hooks / notify / plugin so the
30
+ agent conversations in real Git workspaces are captured into each
31
+ imported project's Development Conversation.
32
+ It also registers the host-level `project-knowledge` Bridge consumer.
33
+ ZCode is supported for Development Capture only; an unverified knowledge
34
+ plugin is never reported as installed. Use `install --ide zcode --capture-only`
35
+ or System Status → 外部 Agent 采集 in the web UI. Per-client repair/removal
36
+ preserves unrelated hooks and existing records. Failures include an operation
37
+ ID and persist to the local system diagnostic log.
38
+ No client UI needs to be opened; third-party hooks and configs are
39
+ preserved. Codex setup repairs this product's stale notify paths, keeps live
40
+ desktop notification wrappers and existing compatible Radar notifications,
41
+ and refuses to overwrite unknown third-party commands. Changed notify
42
+ settings are backed up beside `config.toml` without copying other settings.
43
+ 3. `project-knowledge` starts a fresh v5 local backend. Import projects again;
44
+ older registries, knowledge, sessions and unfinished tasks are not migrated.
45
+
46
+ Notes:
47
+
48
+ - Restart already-running Claude Code sessions once after installing
49
+ Development Capture — hooks load at session start. Only conversations after
50
+ setup are captured; history is never backfilled.
51
+ - To narrow the setup: `--ide claude`, `--capture-only`, `--knowledge-only`;
52
+ to remove capture per client: `uninstall --capture-only`; to disable
53
+ capture globally (including the Bridge consumer): `disable-capture`.
54
+ - To repair Codex capture after an npm or Codex desktop upgrade, use System
55
+ Status → 外部 Agent 采集 → 接入/修复, or
56
+ `project-knowledge-integrations install --ide codex --capture-only`.
57
+ Repeating setup does not add notification wrappers. Removing capture restores
58
+ the preserved notification chain and leaves captured records on disk.
59
+ - Capture repair replaces the known old standalone Bridge entry with the
60
+ current product Bridge and keeps one capture hook per event. Claude Code
61
+ and ZCode mixed-group third-party hooks and knowledge-context hooks remain
62
+ intact. Duplicate or stale entries are reported as needing repair rather
63
+ than healthy; existing journals are not moved or deleted.
64
+
65
+ The local service listens on `127.0.0.1:5757` by default. The CLI can select a
66
+ nearby free port and records the active loopback endpoint so managed Git Hooks
67
+ do not depend on a hard-coded port.
68
+
69
+ ```bash
70
+ project-knowledge # start in the background and open the UI
71
+ project-knowledge --fg # run in the foreground
72
+ project-knowledge status # show the active local backend
73
+ project-knowledge stop # stop the background backend
74
+ project-knowledge status --all # list verified local instances and data directories
75
+ project-knowledge stop --port 5804 # stop a specific verified instance
76
+ project-knowledge --data "D:/data/knowledge" # select an independent data directory
77
+ project-knowledge --port 9000
78
+ project-knowledge --no-open
79
+ ```
80
+
81
+ Requires Node.js 22 or newer and Git on `PATH`.
82
+
83
+ Commands such as `stop`, `STOP`, and `Stop` are equivalent. Unknown commands and
84
+ invalid arguments fail without starting a service. Default start/status/stop are
85
+ scoped to the selected data directory; stopping another directory requires an
86
+ explicit port or `--data`. The CLI uses a local control channel, not a shared PID
87
+ file or blind process termination. Stop succeeds only after the backend and its
88
+ owned modules finish shutdown; independently started modules are preserved.
89
+ An older or unverifiable instance is reported explicitly, never treated as safely
90
+ stopped. Stop the previous running version before upgrading.
91
+
92
+ ### Windows desktop
93
+
94
+ Version 5.0.0 delivers the web product through npm. A new Windows installer
95
+ and desktop auto-update are not part of this release.
96
+
97
+ ## Runtime model
98
+
99
+ The shell connects and projects; knowledge-engine owns the analysis pipeline:
100
+
101
+ ```text
102
+ Git Hook → event-bridge journal → durable engine claim → isolated Agent
103
+ → staging validation → Markdown promotion → vector-hub → retrieval
104
+ ```
105
+
106
+ Import establishes a Git tracking baseline, installs and verifies the managed
107
+ Hook, and creates project metadata. It does not run AI, infer requirements from
108
+ the repository, or generate placeholder knowledge. For an empty repository,
109
+ the first later Commit is eligible for analysis.
110
+
111
+ The Hook writes commit evidence to the bridge journal and only notifies the
112
+ local service. Notifications may be lost; journal consumption and Git startup
113
+ reconciliation recover eligible commits. A Hook failure never blocks a commit.
114
+ Import does not trigger a costly historical analysis.
115
+
116
+ Within a project, Commits run oldest-first and stop at the first failure.
117
+ Different projects may analyze concurrently (maximum two). Duplicate events
118
+ do not re-analyze completed commits. Closing the browser does not stop work.
119
+
120
+ ## Knowledge safety
121
+
122
+ AI receives a frozen claim containing the Commit SHA, real patch evidence,
123
+ bound requirement IDs, prompt hash, and fixed knowledge path. It can write only
124
+ to an internal per-run staging directory. A manifest must validate before any
125
+ file reaches the final project knowledge directory.
126
+
127
+ Promotion uses verified hashes, backups, and a durable journal. Only after
128
+ Markdown promotion succeeds does the analyzed-Commit pointer advance and mark
129
+ the index dirty. Index failure never rolls back Markdown or reruns AI; it stays
130
+ visible as dirty state and is retried.
131
+
132
+ vector-hub owns the derived index; the shell no longer runs a second index
133
+ writer. Failed indexing leaves promoted Markdown intact and repairable.
134
+
135
+ Managed vectors follow the configured knowledge root at `<knowledge>/.indexes`.
136
+ The system drawer displays the actual directory and pending wiring separately.
137
+ Root changes leave project Markdown and old indexes untouched, drain existing
138
+ index writes, switch subsequent writes, and rebuild registered knowledge with
139
+ the configured embedding model. Credentials and small runtime metadata remain
140
+ in the product data directory; no expensive historical Agent analysis is started.
141
+
142
+ The application does not create, edit, refresh, or delete `CLAUDE.md`.
143
+
144
+ ## Requirement capture
145
+
146
+ ### Automatic development context
147
+
148
+ Claude Code's bundled plugin has a synchronous `UserPromptSubmit` hook. It verifies the current local product instance and asks `/api/engine/context` for project/domain facts plus applicable confirmed project, domain and global memories before the model processes a normal request. No reminder to use MCP is required. The complete context is bounded to 8,000 characters; memories have an independent 3,000-character budget. MCP and the Skill remain available for deeper reads. Workbench uses the same engine endpoint and suppresses duplicate native injection.
149
+
150
+ Knowledge Integration, Automatic Context and Development Capture are separate capabilities in System Status. An old or disabled plugin is not automatic-context readiness: npm upgrades do not silently upgrade third-party clients, and the existing integration repair action updates stale product plugins. Reopen external sessions after updating. The native-client candidate adds Codex plugin `UserPromptSubmit` and ZCode user-configuration process hooks. Codex requires native `/hooks` review and trust of the current definition; installation never writes trust or uses a bypass flag. Hook trust is read from the native app-server and checked for the selected repository. ZCode context and conversation capture are separate entries, preserving model and third-party configuration. OpenCode keeps its existing tool integration; automatic injection is not claimed for it.
151
+
152
+ Context reading has a ten-second total client deadline and fails open with a visible warning. A vector failure is reported as file fallback, not vector success; an unknown project is ignored rather than borrowing a different project's context. `knowledge.context.prepared` and `agent.context.output` logs contain only metadata and citations, not the request or knowledge body. An output log does not itself prove model delivery; native-client acceptance must verify that separately. Internal analysis and Workbench-owned context suppress repeated client injection.
153
+
154
+ Coding-agent integrations can append the user's real request before code is
155
+ changed. Requirement capture writes bounded metadata to the selected project's
156
+ `requirements.jsonl`; it does not start analysis or write knowledge.
157
+
158
+ The MCP server exposes:
159
+
160
+ - read-only `resolve`, `search`, `ask`, `get`, and `history` tools;
161
+ - one write-only `record_requirement` metadata tool.
162
+
163
+ ```bash
164
+ npx @sanqianx/project-knowledge@latest install
165
+ npx @sanqianx/project-knowledge@latest install --ide claude
166
+ npx @sanqianx/project-knowledge@latest install --ide codex
167
+ npx @sanqianx/project-knowledge@latest install --ide opencode
168
+ ```
169
+
170
+ Read-only CLI examples:
171
+
172
+ ```bash
173
+ project-knowledge-kb search --project <projectId> --query "refresh token policy" --json
174
+ project-knowledge-kb ask --project <projectId> --query "what was decided about login?"
175
+ project-knowledge-kb get --project <projectId> --entry modules/auth.md --json
176
+ project-knowledge-kb history --project <projectId> --json
177
+ ```
178
+
179
+ Queries never create or rewrite configuration. If the internal index is
180
+ unavailable, search falls back to current Markdown. Project, domain and brain
181
+ scopes are nested; unconfirmed memory candidates are not task preferences.
182
+
183
+ For engine-wired projects, the CLI and MCP delegate `search`, `ask`, `get` and
184
+ `history` to the same engine used by the web UI, including commit provenance.
185
+ They verify the running instance against the selected data directory; an
186
+ unavailable or mismatched instance is an explicit failure, not a second local
187
+ index with different facts. Only projects without engine wiring retain the
188
+ local legacy read contract. Use `--scope domain` or `--scope brain` to broaden
189
+ CLI searches; MCP accepts the equivalent `scope`. Shared-file reads accept
190
+ `--space <spaceId>` (MCP: `space` or `spaceId`).
191
+
192
+ ## Storage
193
+
194
+ Version 5 is a fresh start, not a data upgrade. Stop the previous process,
195
+ remove any old `KB_DATA_DIR` override, configure models and import projects into
196
+ new empty knowledge directories. Old files remain untouched but are not read.
197
+ See [fresh v5 setup](docs/fresh-v5-start.md). Queued tasks can be cancelled by
198
+ unbinding; only an active knowledge/index writer blocks removal.
199
+
200
+ Default internal data directory: `~/.project-knowledge-v5/`
201
+
202
+ Override it with `KB_DATA_DIR`:
203
+
204
+ ```powershell
205
+ $env:KB_DATA_DIR = 'D:\data\project-knowledge'
206
+ project-knowledge
207
+ ```
208
+
209
+ The user selects a global knowledge root before importing projects. That root
210
+ chooses directories for future imports, new shared scopes, and derived vector
211
+ indexes (`<knowledge root>/.indexes`). Each imported project stores an
212
+ absolute, fixed `knowledgePath`; changing the global root does not move existing
213
+ projects.
214
+
215
+ Existing project and shared-knowledge directories do not move when the root
216
+ changes. Brain/domain directory bindings are retained in the shell settings
217
+ after the engine acknowledges them. Existing engine bindings are reused when
218
+ first recording those fields. A failed registration is shown as pending, not
219
+ healthy. Old index directories are retained; indexes rebuild at the new root.
220
+ Settings, registration metadata, caches, runtime state, logs, and recovery
221
+ assets remain in the internal data directory; vector payloads do not:
222
+
223
+ ```text
224
+ ~/.project-knowledge-v5/
225
+ ├── settings.json
226
+ ├── projects.json # minimal project ID/order index
227
+ ├── projects/<projectId>/
228
+ │ ├── config.json # fixed repoPath/knowledgePath
229
+ │ ├── state.json # tracking, claim, index, Hook state
230
+ │ └── requirements.jsonl # created only when used
231
+ ├── knowledge-engine/ # durable claims, runs and cursors
232
+ ├── cache/ # models, exports, context packs
233
+ ├── runtime/ # claims, staging, journals, locks
234
+ ├── logs/
235
+ │ ├── app/
236
+ │ ├── projects/<projectId>/
237
+ │ └── hooks/
238
+ └── recovery/ # migrations, promotion/index backups
239
+
240
+ <selected knowledge root>/
241
+ ├── .indexes/ # rebuildable vector payloads
242
+ ├── _shared/<brain or domain ID>/ # fixed shared-knowledge bindings
243
+ └── <project storage name>/
244
+ ├── README.md # when produced by verified knowledge
245
+ ├── GOAL.md
246
+ ├── ARCHITECTURE.md
247
+ ├── modules/*.md
248
+ └── changes/*.md
249
+ ```
250
+
251
+ Team knowledge is an explicit exception: an import may bind an existing
252
+ checked-out team-store subdirectory. Its final absolute path is still fixed in
253
+ the project config, must remain inside the selected store, and is treated as
254
+ externally owned when the project registration is deleted.
255
+
256
+ ## Migration
257
+
258
+ The versioned `layout-v2` migration discovers legacy assets without modifying
259
+ them, creates a journal and centralized recovery backup, stages settings and
260
+ per-project metadata, validates preserved paths/secrets/pointers and any legacy
261
+ index, then activates files with the minimal registry last. The completion
262
+ marker is written only after the new stores reopen successfully.
263
+
264
+ Interrupted or failed migration keeps the legacy reader path available and
265
+ leaves source knowledge, old logs, configuration files, and backups intact for
266
+ retry or diagnosis.
267
+
268
+ ## Product UI
269
+
270
+ The six primary pages are Brain, Start work, Knowledge search, Long-term
271
+ memory, Domains/projects and Activity. Start work embeds the real Workbench,
272
+ not a second chat implementation. Import projects from Domains/projects;
273
+ confirm both code and knowledge directories and retry only failed wiring.
274
+
275
+ Domain knowledge and confirmed brain memories live alongside existing project
276
+ knowledge. Adding a brain does not move project Markdown. Model credentials
277
+ are owned by Workbench; maintenance has a persisted default independent of
278
+ temporary chat selection. Runtime credentials never enter engine state.
279
+
280
+ System status groups four-module health, configuration and diagnostics.
281
+ Activity retains the structured-log capabilities:
282
+
283
+ - trace/debug/info/warn/error/fatal filtering;
284
+ - local-date, project, component, event, operation, Commit, and text filters;
285
+ - newest-first cursor pagination, pause/auto-refresh, and filtered export;
286
+ - operation-flow and structured error/stack details;
287
+ - logger health/degraded state and Hook/index/project read-only status;
288
+ - matching light/dark themes across the shell and native module frames.
289
+
290
+ Logs use `log/v2` JSONL, daily files and bounded segments. Retention defaults to
291
+ 365 days; `0` disables time-based deletion. Capacity cleanup is deterministic.
292
+ Secrets are recursively redacted during write, query, error serialization, and
293
+ export. The log root is fixed under the internal data directory.
294
+
295
+ ## HTTP security
296
+
297
+ The default loopback server accepts same-origin/loopback browser requests. It
298
+ does not use wildcard CORS. Binding to a non-loopback address requires
299
+ `KB_SITE_AUTH_TOKEN`, and requests must also pass Origin validation. Public AI
300
+ profile responses expose only masked secret metadata; generic errors return an
301
+ operation ID without a stack. There is no raw-file route.
302
+
303
+ ## Repository layout
304
+
305
+ ```text
306
+ _site/server.js # thin executable entry
307
+ _site/lib/server-app.js # HTTP/runtime composition
308
+ _site/lib/storage-layout.js # canonical internal paths
309
+ _site/lib/project-*-store.js # v2 registry/config/state stores
310
+ _site/lib/project-lifecycle-service.js
311
+ _site/lib/commit-reconciler.js
312
+ _site/lib/knowledge-promotion.js
313
+ _site/lib/index-service.js
314
+ _site/lib/structured-logger.js
315
+ _site/lib/knowledge-tool-runtime.js
316
+ _site/scripts/hook-trigger.js
317
+ ui/index.html # unified production web UI
318
+ ui/product.js, ui/product.css # shell navigation and state projection
319
+ _modules/knowledge-engine/ # verified dependency-free engine
320
+ bin/project-knowledge*.js # CLI and MCP entry points
321
+ desktop/ # Windows Electron package
322
+ ```
323
+
324
+ ## Testing
325
+
326
+ ```bash
327
+ npm ci
328
+ npm test -- --no-report
329
+ npm test --prefix desktop
330
+ npm pack --dry-run --json
331
+ ```
332
+
333
+ The automated suite includes real Git Hooks, paths with spaces/non-ASCII text,
334
+ online and offline Commit reconciliation, crash-lock recovery, atomic index
335
+ replacement, migration fault injection, packaged-startup contracts, API
336
+ security and log redaction/cursors. Product browser acceptance uses one
337
+ 1920×1080 desktop viewport and controlled model/embedding doubles; real-model
338
+ and real-index smoke tests are reported separately. No mobile matrix or new
339
+ Windows installer is claimed. Full crash-stage combinations and the final
340
+ switch of a user's existing data require separate acceptance.
341
+
342
+ See the [Leader / GLM Workbench playbook](docs/leader-glm-workbench-playbook.md)
343
+ for task dispatch and independent review, and the
344
+ [5.0.16 acceptance record](docs/release-5.0.16-acceptance.md) for this round's
345
+ actual results and remaining gates. These documents are not a release approval.
346
+
347
+ ## License
348
+
349
+ [Apache-2.0](LICENSE). See [NOTICE](NOTICE).