@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
@@ -0,0 +1,293 @@
1
+ 'use strict';
2
+ // Definitions for the RET-008 retrieval-load comparison.
3
+ //
4
+ // Pure definitions only: a fixed small corpus, fixed semantic queries and
5
+ // the human-labelled relevant documents for each query. Nothing here talks to
6
+ // a model, a vector store or the network, so the same file backs both the
7
+ // explicit probe (real embedding model) and the offline regression (stub
8
+ // embedder, contract only).
9
+ //
10
+ // The corpus is written in Chinese on purpose: the offline model that the
11
+ // product actually uses for this lane is Xenova/bge-small-zh-v1.5, a Chinese
12
+ // model, and the semantic questions are phrased the way a user would ask
13
+ // them rather than by copying sentences out of the documents.
14
+ //
15
+ // Ground truth is human-labelled: `relevant` lists the documents that really
16
+ // answer the question. A document that merely shares a word with the
17
+ // question is deliberately NOT in the list.
18
+ const fs = require('node:fs');
19
+ const path = require('node:path');
20
+
21
+ // Fixed corpus: id -> { file, content }. The file name is the join key used
22
+ // to map a search result back to a corpus id.
23
+ const CORPUS = [
24
+ {
25
+ id: 'quota-sampling',
26
+ file: 'quota-sampling.md',
27
+ content: [
28
+ '# 配额采样',
29
+ '',
30
+ '配额采样必须串行执行。同一个订阅的并发采样请求会互相抢占剩余额度,',
31
+ '导致返回的可用额度不准确。串行执行让每一轮采样都拿到稳定的结果。',
32
+ '采样脚本在每轮结束后等待一个退避间隔,再开始下一轮。',
33
+ ].join('\n'),
34
+ },
35
+ {
36
+ id: 'index-rebuild',
37
+ file: 'index-rebuild.md',
38
+ content: [
39
+ '# 向量索引重建',
40
+ '',
41
+ '切换索引根目录之后必须重建向量索引,否则检索会继续命中旧目录里的文档。',
42
+ '重建过程使用与在线检索完全相同的嵌入模型和向量维度,',
43
+ '保证重建前后的相似度分数可以直接比较。',
44
+ '重建是幂等操作,内容没有变化的文档会被哈希检查跳过。',
45
+ ].join('\n'),
46
+ },
47
+ {
48
+ id: 'hook-install',
49
+ file: 'hook-install.md',
50
+ content: [
51
+ '# 提交钩子安装',
52
+ '',
53
+ '安装钩子会在目标仓库的 Git 钩子目录写入一个受管理的 post-commit 脚本。',
54
+ '脚本带有可识别的标记行,升级时会覆盖旧版本而不是追加。',
55
+ '提交完成后钩子会把提交边界事件追加到事件桥接的日志里。',
56
+ ].join('\n'),
57
+ },
58
+ {
59
+ id: 'bridge-journal',
60
+ file: 'bridge-journal.md',
61
+ content: [
62
+ '# 事件桥接日志',
63
+ '',
64
+ '事件桥接把提交边界写成追加式的日志事件,每个事件带有单调递增的序号。',
65
+ '消费端按照序号游标读取事件,因此重复消费不会产生重复的副作用。',
66
+ '桥接服务是一个独立进程,钩子通过 HTTP 把事件投递给它。',
67
+ ].join('\n'),
68
+ },
69
+ {
70
+ id: 'promotion-rule',
71
+ file: 'promotion-rule.md',
72
+ content: [
73
+ '# 知识晋升规则',
74
+ '',
75
+ '一次提交经过分析之后,只有满足校验清单的结果才能晋升为知识文档。',
76
+ '校验清单要求结果里同时出现提交哈希、补丁哈希、会话哈希和检索哈希的引用。',
77
+ '缺少任何一项引用都会被拒绝,晋升失败不会写入知识目录。',
78
+ ].join('\n'),
79
+ },
80
+ {
81
+ id: 'retrieval-citation',
82
+ file: 'retrieval-citation.md',
83
+ content: [
84
+ '# 检索引用与提交',
85
+ '',
86
+ '检索命中的知识条目会带上产生它的那次提交的完整哈希。',
87
+ '引用里的哈希指向知识文档本身,而不是某个临时目录中的文件名。',
88
+ '只有正文和引用同时命中时,这条知识才算是被检索链路真正采用了。',
89
+ ].join('\n'),
90
+ },
91
+ {
92
+ id: 'embed-model',
93
+ file: 'embed-model.md',
94
+ content: [
95
+ '# 本地嵌入模型',
96
+ '',
97
+ '本地嵌入模型是一个中文向量模型,输出的向量维度是 512。',
98
+ '模型权重缓存在离线目录里,运行时不会联网下载。',
99
+ '建立索引用段落嵌入,查询用查询嵌入,两者的向量维度必须一致。',
100
+ ].join('\n'),
101
+ },
102
+ {
103
+ id: 'session-memory',
104
+ file: 'session-memory.md',
105
+ content: [
106
+ '# 会话记忆',
107
+ '',
108
+ '会话记忆按会话编号保存在独立的数据目录下,每个会话一个文件。',
109
+ '记忆文件里记录的是上一轮对话的结论,而不是原始的提问。',
110
+ '删除记忆只会清理这个数据目录,不会影响知识库里的内容。',
111
+ ].join('\n'),
112
+ },
113
+ {
114
+ id: 'profile-credential',
115
+ file: 'profile-credential.md',
116
+ content: [
117
+ '# 订阅凭据',
118
+ '',
119
+ '订阅密钥保存在本机的凭据文件里,配置文件只保存对凭据的引用名称。',
120
+ '读取订阅时密钥只在内存里存在,不会被打印或者写进日志。',
121
+ '切换订阅不会触发任何额度查询,额度状态不参与调度判断。',
122
+ ].join('\n'),
123
+ },
124
+ {
125
+ id: 'isolated-port',
126
+ file: 'isolated-port.md',
127
+ content: [
128
+ '# 端口隔离',
129
+ '',
130
+ '测试期间所有的服务都绑定在独立的临时端口上,避免碰到正在运行的实例。',
131
+ '通知请求会被引导到一个隔离的接收端,真实的站点端口不会被访问。',
132
+ '每个用例使用独立的数据目录和独立的用户主目录。',
133
+ ].join('\n'),
134
+ },
135
+ {
136
+ id: 'ledger-binding',
137
+ file: 'ledger-binding.md',
138
+ content: [
139
+ '# 用例绑定表',
140
+ '',
141
+ '绑定表把每个用例映射到它所验证的模块和接口。',
142
+ '绑定表是共享的资产,单条用例只允许提供自己的定义片段。',
143
+ '绑定片段必须是纯定义,不能包含执行逻辑。',
144
+ ].join('\n'),
145
+ },
146
+ {
147
+ id: 'archive-policy',
148
+ file: 'archive-policy.md',
149
+ content: [
150
+ '# 归档策略',
151
+ '',
152
+ '归档只针对明确标记为归档的会话,普通会话永远不会被自动归档或者删除。',
153
+ '归档之后仍然保留原始文件,只是从活跃列表里移走。',
154
+ '恢复归档会把会话放回活跃列表,并保留原来的会话编号。',
155
+ ].join('\n'),
156
+ },
157
+ ];
158
+
159
+ // Fixed semantic queries with human-labelled relevant documents.
160
+ const QUERIES = [
161
+ {
162
+ id: 'q-quota-serial',
163
+ query: '为什么额度采样不能并发执行',
164
+ relevant: ['quota-sampling'],
165
+ note: '直接问配额采样的执行方式',
166
+ },
167
+ {
168
+ id: 'q-index-rebuild',
169
+ query: '换了索引目录以后向量索引要做什么',
170
+ relevant: ['index-rebuild'],
171
+ note: '问切换索引根之后必须做的事',
172
+ },
173
+ {
174
+ id: 'q-hook-trigger',
175
+ query: '提交代码之后是谁把变更交给分析流程',
176
+ relevant: ['hook-install', 'bridge-journal'],
177
+ note: '钩子与桥接两篇都参与这条链路',
178
+ },
179
+ {
180
+ id: 'q-promotion-accept',
181
+ query: '分析结果要满足什么条件才能写进知识库',
182
+ relevant: ['promotion-rule'],
183
+ note: '问晋升的校验条件',
184
+ },
185
+ {
186
+ id: 'q-citation-sha',
187
+ query: '检索出来的知识怎么追溯到是哪次提交写的',
188
+ relevant: ['retrieval-citation'],
189
+ note: '问引用与提交的关系',
190
+ },
191
+ {
192
+ id: 'q-model-cache',
193
+ query: '离线的中文向量模型放在什么地方 维度是多少',
194
+ relevant: ['embed-model'],
195
+ note: '问模型缓存位置与维度',
196
+ },
197
+ {
198
+ id: 'q-memory-dir',
199
+ query: '上一轮对话的结论存在哪个目录里',
200
+ relevant: ['session-memory'],
201
+ note: '问会话记忆的存储位置',
202
+ },
203
+ {
204
+ id: 'q-credential-secret',
205
+ query: '订阅密钥是从哪个文件读出来的',
206
+ relevant: ['profile-credential'],
207
+ note: '问凭据来源,注意 archive-policy 里有"文件"但不相关',
208
+ },
209
+ {
210
+ id: 'q-port-isolation',
211
+ query: '测试的时候怎么保证不碰到正在跑的那个服务',
212
+ relevant: ['isolated-port'],
213
+ note: '问测试期的端口隔离',
214
+ },
215
+ {
216
+ id: 'q-binding-fragment',
217
+ query: '一条用例怎么声明自己验证了哪个模块',
218
+ relevant: ['ledger-binding'],
219
+ note: '问绑定片段的产出方式',
220
+ },
221
+ ];
222
+
223
+ // Materialises the corpus into `targetDir` (flat, one file per document) and
224
+ // returns the mapping used to translate a search result back to a corpus id.
225
+ function materialiseCorpus(targetDir) {
226
+ fs.mkdirSync(targetDir, { recursive: true });
227
+ const byFile = new Map();
228
+ for (const doc of CORPUS) {
229
+ fs.writeFileSync(path.join(targetDir, doc.file), doc.content, 'utf8');
230
+ byFile.set(doc.file, doc.id);
231
+ }
232
+ return {
233
+ dir: targetDir,
234
+ fileCount: CORPUS.length,
235
+ byFile,
236
+ idForFile(file) {
237
+ const base = path.basename(String(file || ''));
238
+ return byFile.get(base) || null;
239
+ },
240
+ };
241
+ }
242
+
243
+ // Ranking metrics over the fixed ground truth.
244
+ // - recallAt1 / recallAt5: share of relevant documents found in the top-k.
245
+ // - mrr: mean reciprocal rank of the first relevant document.
246
+ // - retrievedDocIds: the ordered, de-duplicated document ids of one query.
247
+ function evaluateRanking(rankedDocIds, relevant) {
248
+ const relevantSet = new Set(relevant);
249
+ const hits = [];
250
+ for (let index = 0; index < rankedDocIds.length; index += 1) {
251
+ if (relevantSet.has(rankedDocIds[index])) hits.push(index + 1);
252
+ }
253
+ const firstHit = hits.length ? hits[0] : null;
254
+ const inTop = count => hits.filter(rank => rank <= count).length;
255
+ return {
256
+ relevant: [...relevant],
257
+ retrievedDocIds: [...rankedDocIds],
258
+ firstRelevantRank: firstHit,
259
+ reciprocalRank: firstHit ? 1 / firstHit : 0,
260
+ hits,
261
+ recallAt1: relevant.length ? inTop(1) / relevant.length : 0,
262
+ recallAt5: relevant.length ? inTop(5) / relevant.length : 0,
263
+ hit: hits.length > 0,
264
+ };
265
+ }
266
+
267
+ function percentile(values, fraction) {
268
+ const sorted = [...values].filter(value => Number.isFinite(value)).sort((a, b) => a - b);
269
+ if (!sorted.length) return null;
270
+ const position = Math.min(sorted.length - 1, Math.max(0, Math.ceil(fraction * sorted.length) - 1));
271
+ return sorted[position];
272
+ }
273
+
274
+ function summariseLatency(values) {
275
+ const finite = values.filter(value => Number.isFinite(value));
276
+ return {
277
+ count: finite.length,
278
+ min: finite.length ? Math.min(...finite) : null,
279
+ p50: percentile(finite, 0.5),
280
+ p95: percentile(finite, 0.95),
281
+ max: finite.length ? Math.max(...finite) : null,
282
+ mean: finite.length ? finite.reduce((sum, value) => sum + value, 0) / finite.length : null,
283
+ };
284
+ }
285
+
286
+ module.exports = {
287
+ CORPUS,
288
+ QUERIES,
289
+ materialiseCorpus,
290
+ evaluateRanking,
291
+ summariseLatency,
292
+ percentile,
293
+ };
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+ // The "next session" client for RET-007. This is a FRESH process that plays
3
+ // the role of the next conversation: it only speaks HTTP to the knowledge
4
+ // engine, exactly like a real session client does. It asserts nothing — the
5
+ // raw responses are written to the output file so the probe evaluates them
6
+ // as evidence.
7
+ //
8
+ // Usage:
9
+ // node parallel-retrieval-followup-next-session.js \
10
+ // --engine-url http://127.0.0.1:<port> --project-id <id> \
11
+ // --context-query <q> --ask-query <q> --control-query <q> \
12
+ // --session-id <id> --out <file.json>
13
+ const fs = require('node:fs');
14
+ const path = require('node:path');
15
+
16
+ const args = process.argv.slice(2);
17
+ function arg(name, fallback = '') {
18
+ const index = args.indexOf(name);
19
+ return index >= 0 ? (args[index + 1] || fallback) : fallback;
20
+ }
21
+
22
+ async function call(engineUrl, route, body) {
23
+ const response = await fetch(`${engineUrl}${route}`, {
24
+ method: 'POST',
25
+ headers: { 'Content-Type': 'application/json' },
26
+ body: JSON.stringify(body),
27
+ signal: AbortSignal.timeout(30000),
28
+ });
29
+ return { status: response.status, ok: response.ok, body: await response.json().catch(() => null) };
30
+ }
31
+
32
+ (async () => {
33
+ const engineUrl = arg('--engine-url');
34
+ const projectId = arg('--project-id');
35
+ const sessionId = arg('--session-id', 'ret007-next-session');
36
+ const outFile = path.resolve(arg('--out'));
37
+ if (!engineUrl || !projectId || !outFile) {
38
+ console.error('missing --engine-url/--project-id/--out');
39
+ process.exit(2);
40
+ }
41
+ const queries = {
42
+ context: arg('--context-query'),
43
+ ask: arg('--ask-query'),
44
+ control: arg('--control-query'),
45
+ };
46
+ const result = {
47
+ client: 'parallel-retrieval-followup-next-session',
48
+ pid: process.pid,
49
+ startedAt: new Date().toISOString(),
50
+ engineUrl,
51
+ projectId,
52
+ sessionId,
53
+ queries,
54
+ };
55
+ if (queries.context) {
56
+ result.context = await call(engineUrl, '/api/context', { query: queries.context, projectId, client: 'workbench', sessionId });
57
+ }
58
+ if (queries.ask) {
59
+ result.ask = await call(engineUrl, '/api/ask', { query: queries.ask, projectId, limit: 5 });
60
+ }
61
+ if (queries.control) {
62
+ result.control = await call(engineUrl, '/api/ask', { query: queries.control, projectId, limit: 5 });
63
+ }
64
+ result.finishedAt = new Date().toISOString();
65
+ fs.mkdirSync(path.dirname(outFile), { recursive: true });
66
+ fs.writeFileSync(outFile, JSON.stringify(result, null, 2), 'utf8');
67
+ const anyOk = [result.context, result.ask].some(call => call && call.ok);
68
+ console.log(JSON.stringify({ ok: anyOk, context: result.context && result.context.status, ask: result.ask && result.ask.status, control: result.control && result.control.status, out: outFile }));
69
+ process.exitCode = anyOk ? 0 : 1;
70
+ })().catch(error => { console.error(error); process.exit(1); });