@sanqianx/project-knowledge 5.0.24 → 5.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +20 -20
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +1361 -1353
- package/LICENSE +201 -201
- package/NOTICE +5 -5
- package/README.md +349 -349
- package/_modules/knowledge-engine/package.json +1 -1
- package/_modules/knowledge-engine/src/coordinator.js +48 -3
- package/_modules/knowledge-engine/src/runtime/automation-config.js +140 -140
- package/_modules/knowledge-engine/src/runtime/commit-conversation-binder.js +238 -238
- package/_modules/knowledge-engine/src/runtime/commit-processing-ledger.js +26 -26
- package/_modules/knowledge-engine/src/runtime/commit-prompt.js +193 -193
- package/_modules/knowledge-engine/src/runtime/commit-reconciler.js +394 -394
- package/_modules/knowledge-engine/src/runtime/contracts.js +282 -282
- package/_modules/knowledge-engine/src/runtime/conversation-store.js +389 -389
- package/_modules/knowledge-engine/src/runtime/evidence-bundle.js +228 -228
- package/_modules/knowledge-engine/src/runtime/git-runner.js +62 -62
- package/_modules/knowledge-engine/src/runtime/knowledge-promotion.js +505 -505
- package/_modules/knowledge-engine/src/runtime/knowledge-retrieval-service.js +400 -400
- package/_modules/knowledge-engine/src/runtime/markdown-knowledge-indexer.js +171 -171
- package/_modules/knowledge-engine/src/runtime/scanner.js +298 -298
- package/_modules/knowledge-engine/ui/app.js +23 -2
- package/_site/README.md +30 -30
- package/_site/_test/agent-capture-mcp-ui-test.js +68 -68
- package/_site/_test/agent-capture-ui-test.js +101 -101
- package/_site/_test/ai-profile-resolver-test.js +137 -137
- package/_site/_test/ai-profile-test.js +75 -75
- package/_site/_test/ai-vendor-presets-test.js +91 -91
- package/_site/_test/automatic-context-test.js +70 -70
- package/_site/_test/automation-queue-test.js +14 -14
- package/_site/_test/automation-ui-test.js +40 -40
- package/_site/_test/background-task-registry-test.js +43 -43
- package/_site/_test/baseline-schema-test.js +91 -91
- package/_site/_test/bin-cli-test.js +230 -230
- package/_site/_test/bridge-adapter-test.js +95 -95
- package/_site/_test/bridge-consumer-service-test.js +310 -310
- package/_site/_test/candidate-bin-content-test.js +35 -35
- package/_site/_test/candidate-product-assets-test.js +13 -13
- package/_site/_test/candidate-release-contract-test.js +14 -14
- package/_site/_test/capture-hook-dedup-test.js +158 -158
- package/_site/_test/cdp-browser-failure-test.js +103 -103
- package/_site/_test/chat-claudecodeui-match-test.js +92 -92
- package/_site/_test/claude-executable-discovery-test.js +90 -90
- package/_site/_test/claude-session-lifecycle-sweep-test.js +252 -252
- package/_site/_test/claude-workbench-test.js +174 -174
- package/_site/_test/cli-instance-management-test.js +62 -62
- package/_site/_test/client-capture-restart-e2e-test.js +189 -189
- package/_site/_test/codex-conversation-projection-test.js +60 -60
- package/_site/_test/codex-marketplace-scoped-path-test.js +186 -186
- package/_site/_test/codex-notify-capture-e2e-test.js +101 -101
- package/_site/_test/codex-notify-fanout-test.js +141 -134
- package/_site/_test/codex-notify-upgrade-test.js +253 -253
- package/_site/_test/commit-boundary-freeze-test.js +147 -147
- package/_site/_test/commit-conversation-binding-test.js +99 -99
- package/_site/_test/commit-evidence-test.js +110 -110
- package/_site/_test/configuration-generation-test.js +22 -22
- package/_site/_test/context-pack-test.js +200 -200
- package/_site/_test/conversation-api-test.js +119 -119
- package/_site/_test/conversation-origin-test.js +15 -15
- package/_site/_test/conversation-store-test.js +138 -138
- package/_site/_test/cross-repo-isolation-e2e-test.js +187 -187
- package/_site/_test/desktop-browser-compat-test.js +28 -28
- package/_site/_test/desktop-hook-runtime-regression-test.js +204 -204
- package/_site/_test/embedding-config-test.js +32 -32
- package/_site/_test/explicit-commit-processor-test.js +37 -37
- package/_site/_test/fixtures/fake-browser-exit.js +10 -10
- package/_site/_test/fixtures/fake-browser-hang.js +10 -10
- package/_site/_test/fixtures/integration-busy-worker.cjs +6 -6
- package/_site/_test/fixtures/make-git-repos.js +92 -92
- package/_site/_test/fixtures/retrieval-gold-queries.json +32 -32
- package/_site/_test/folder-picker-output-test.js +19 -19
- package/_site/_test/fresh-hook-reimport-test.js +53 -53
- package/_site/_test/fresh-product-data-test.js +56 -56
- package/_site/_test/full-integration-e2e-test.js +167 -167
- package/_site/_test/git-path-compatibility-test.js +80 -80
- package/_site/_test/git-validation-test.js +81 -81
- package/_site/_test/glm-ui-refresh-review-test.js +313 -404
- package/_site/_test/harness-isolation-test.js +138 -0
- package/_site/_test/helpers/cdp-browser.js +383 -0
- package/_site/_test/helpers/cdp-network-capture.js +66 -0
- package/_site/_test/helpers/find-chrome.js +34 -0
- package/_site/_test/helpers/free-port.js +8 -0
- package/_site/_test/helpers/logging-ui-fixture.js +131 -0
- package/_site/_test/helpers/module-fixture.js +282 -0
- package/_site/_test/helpers/parallel-engine-advanced-engine-child.js +45 -0
- package/_site/_test/helpers/parallel-engine-advanced-fault-writer.js +171 -0
- package/_site/_test/helpers/parallel-engine-advanced-harness.js +245 -0
- package/_site/_test/helpers/parallel-engine-advanced-standin-analyzer.js +80 -0
- package/_site/_test/helpers/parallel-engine-advanced-ui-host.js +177 -0
- package/_site/_test/helpers/parallel-engine-final-harness.js +314 -0
- package/_site/_test/helpers/parallel-engine-final-standin-analyzer.js +159 -0
- package/_site/_test/helpers/parallel-knowledge-fixture.js +255 -0
- package/_site/_test/helpers/parallel-logging-acceptance-fixture.js +111 -0
- package/_site/_test/helpers/parallel-logging-acceptance-proxy.js +106 -0
- package/_site/_test/helpers/parallel-logging-fix-r2-proxy.js +205 -0
- package/_site/_test/helpers/parallel-logging-integration-5025-env.js +432 -0
- package/_site/_test/helpers/parallel-memory-analyzer.js +81 -0
- package/_site/_test/helpers/parallel-memory-event-bridge.js +128 -0
- package/_site/_test/helpers/parallel-memory-shell.js +470 -0
- package/_site/_test/helpers/parallel-nav-isolation-env.js +389 -0
- package/_site/_test/helpers/parallel-nav-module-ui.js +186 -0
- package/_site/_test/helpers/parallel-nav-proxy.js +148 -0
- package/_site/_test/helpers/parallel-nav-shell.js +361 -0
- package/_site/_test/helpers/parallel-qa-engine-endpoint-guard.js +206 -0
- package/_site/_test/helpers/parallel-qa-engine-endpoint-isolate.js +257 -0
- package/_site/_test/helpers/parallel-retrieval-followup-corpus.js +293 -0
- package/_site/_test/helpers/parallel-retrieval-followup-next-session.js +70 -0
- package/_site/_test/helpers/parallel-retrieval-followup-r2-shell.js +737 -0
- package/_site/_test/helpers/parallel-retrieval-followup-r2-wb-host.js +82 -0
- package/_site/_test/helpers/parallel-retrieval-followup-shell.js +279 -0
- package/_site/_test/helpers/parallel-workbench-fixture.js +371 -0
- package/_site/_test/helpers/parallel-workbench-host.js +80 -0
- package/_site/_test/helpers/parallel-workbench-integration-5025-fixture.js +408 -0
- package/_site/_test/helpers/parallel-workbench-integration-5025-harness.js +593 -0
- package/_site/_test/helpers/parallel-workbench-integration-5025-host.js +70 -0
- package/_site/_test/helpers/parallel-workbench-integration-5025-launcher.js +240 -0
- package/_site/_test/helpers/parallel-workbench-integration-5025-runtime-harness.js +630 -0
- package/_site/_test/helpers/parallel-workbench-source-map.js +196 -0
- package/_site/_test/helpers/spawn-server.js +106 -0
- package/_site/_test/helpers/version-visibility-fixture.js +251 -0
- package/_site/_test/hook-runtime-endpoint-test.js +88 -88
- package/_site/_test/hook-status-repair-api-test.js +152 -152
- package/_site/_test/hook-trigger-test.js +85 -85
- package/_site/_test/hook-worktree-test.js +42 -42
- package/_site/_test/import-preflight-api-test.js +234 -234
- package/_site/_test/index-builder-test.js +41 -41
- package/_site/_test/index-error-display-contract-test.js +10 -10
- package/_site/_test/index-writer-concurrency-test.js +135 -135
- package/_site/_test/integration-adapters-test.js +262 -262
- package/_site/_test/integration-auto-repair-test.js +113 -113
- package/_site/_test/integration-capture-setup-test.js +118 -118
- package/_site/_test/integration-intent-test.js +81 -81
- package/_site/_test/integration-runtime-binding-a2-test.js +566 -566
- package/_site/_test/integration-runtime-binding-a3-test.js +227 -227
- package/_site/_test/integration-runtime-binding-test.js +473 -473
- package/_site/_test/integration-status-scan-test.js +29 -29
- package/_site/_test/integration-surface-coverage-test.js +164 -164
- package/_site/_test/kb-framework-test.js +57 -57
- package/_site/_test/kbpath-follow-test.js +63 -63
- package/_site/_test/knowledge-db-test.js +144 -144
- package/_site/_test/knowledge-engine-client-test.js +120 -109
- package/_site/_test/knowledge-language-control-test.js +170 -170
- package/_site/_test/knowledge-maintenance-test.js +40 -40
- package/_site/_test/knowledge-promotion-recovery-test.js +260 -260
- package/_site/_test/knowledge-query-test.js +54 -54
- package/_site/_test/knowledge-retrieval-service-test.js +77 -77
- package/_site/_test/knowledge-scopes-test.js +37 -37
- package/_site/_test/knowledge-storage-location-test.js +28 -28
- package/_site/_test/knowledge-storage-startup-test.js +52 -52
- package/_site/_test/knowledge-store-logs-supervision-test.js +89 -89
- package/_site/_test/launcher-readiness-test.js +80 -80
- package/_site/_test/legacy-claude-session-alias-test.js +106 -106
- package/_site/_test/legacy-routes-removed-test.js +47 -47
- package/_site/_test/legacy-workbench-exclusion-test.js +92 -92
- package/_site/_test/live-gateway-test.js +48 -48
- package/_site/_test/local-marketplace-test.js +16 -16
- package/_site/_test/log-redaction-test.js +58 -58
- package/_site/_test/logging-api-test.js +89 -89
- package/_site/_test/logging-sse-no-gap-test.js +88 -88
- package/_site/_test/logging-ui-test.js +107 -107
- package/_site/_test/markdown-delta-overlay-test.js +85 -85
- package/_site/_test/markdown-maintenance-api-test.js +75 -75
- package/_site/_test/markdown-maintenance-test.js +11 -11
- package/_site/_test/mcp-server-test.js +149 -149
- package/_site/_test/model-context-windows-test.js +89 -89
- package/_site/_test/module-agent-start-proxy-test.js +65 -65
- package/_site/_test/module-artifact-integrity-test.js +27 -27
- package/_site/_test/module-boundary-test.js +30 -30
- package/_site/_test/module-bridge-eventbridge-test.js +202 -202
- package/_site/_test/module-dynamic-port-test.js +118 -118
- package/_site/_test/module-index-proxy-test.js +33 -33
- package/_site/_test/module-model-configuration-test.js +44 -44
- package/_site/_test/module-process-lifecycle-test.js +35 -35
- package/_site/_test/module-stream-proxy-test.js +34 -34
- package/_site/_test/module-terminal-restart-test.js +63 -63
- package/_site/_test/module-wiring-unbind-race-test.js +59 -59
- package/_site/_test/native-context-integrations-test.js +86 -86
- package/_site/_test/non-release-ci-test.js +34 -34
- package/_site/_test/offline-boundary-isolation-test.js +32 -32
- package/_site/_test/orphaned-claim-recovery-test.js +80 -80
- package/_site/_test/package-boundary-test.js +43 -43
- package/_site/_test/package-startup-test.js +56 -56
- package/_site/_test/packaged-ui-smoke-test.js +88 -88
- package/_site/_test/parallel-ci-r9-posix-socket-budget-test.js +156 -0
- package/_site/_test/parallel-engine-advanced-eng005-test.js +136 -0
- package/_site/_test/parallel-engine-advanced-eng006-test.js +171 -0
- package/_site/_test/parallel-engine-advanced-eng007-reconcile-test.js +231 -0
- package/_site/_test/parallel-engine-advanced-eng009-test.js +208 -0
- package/_site/_test/parallel-engine-advanced-eng010-test.js +213 -0
- package/_site/_test/parallel-engine-advanced-eng011-ui-probe.js +459 -0
- package/_site/_test/parallel-engine-final-eng002-test.js +255 -0
- package/_site/_test/parallel-engine-final-eng007-test.js +269 -0
- package/_site/_test/parallel-engine-final-eng011-test.js +197 -0
- package/_site/_test/parallel-engine-final-eng012-test.js +354 -0
- package/_site/_test/parallel-knowledge-client-error-code-test.js +184 -0
- package/_site/_test/parallel-knowledge-engine-test.js +353 -0
- package/_site/_test/parallel-knowledge-retrieval-test.js +292 -0
- package/_site/_test/parallel-knowledge-vector-test.js +168 -0
- package/_site/_test/parallel-linux-ci-r7-log007-day-test.js +110 -0
- package/_site/_test/parallel-logging-acceptance-log003-test.js +224 -0
- package/_site/_test/parallel-logging-acceptance-log004-test.js +231 -0
- package/_site/_test/parallel-logging-acceptance-log005-test.js +208 -0
- package/_site/_test/parallel-logging-acceptance-log006-test.js +214 -0
- package/_site/_test/parallel-logging-acceptance-log007-test.js +223 -0
- package/_site/_test/parallel-logging-acceptance-log008-test.js +180 -0
- package/_site/_test/parallel-logging-fix-r2-crash-probe.js +271 -0
- package/_site/_test/parallel-logging-fix-r2-gap-test.js +294 -0
- package/_site/_test/parallel-logging-fix-r2-normalhook-test.js +330 -0
- package/_site/_test/parallel-logging-integration-5025-portability-test.js +554 -0
- package/_site/_test/parallel-memory-candidate-test.js +301 -0
- package/_site/_test/parallel-memory-manual-test.js +197 -0
- package/_site/_test/parallel-memory-scope-test.js +228 -0
- package/_site/_test/parallel-memory-source-test.js +227 -0
- package/_site/_test/parallel-memory-sync-test.js +238 -0
- package/_site/_test/parallel-memory-view-r8-reload-gate-test.js +123 -0
- package/_site/_test/parallel-nav-failure-test.js +119 -0
- package/_site/_test/parallel-nav-isolation-test.js +308 -0
- package/_site/_test/parallel-nav-isolation-vector-path-test.js +90 -0
- package/_site/_test/parallel-nav-offline-test.js +272 -0
- package/_site/_test/parallel-nav-operability-test.js +257 -0
- package/_site/_test/parallel-nav-switch-test.js +247 -0
- package/_site/_test/parallel-nav-theme-test.js +130 -0
- package/_site/_test/parallel-nav-viewport-test.js +310 -0
- package/_site/_test/parallel-qa-engine-endpoint-guard-test.js +273 -0
- package/_site/_test/parallel-retrieval-followup-citation-test.js +219 -0
- package/_site/_test/parallel-retrieval-followup-corpus-test.js +287 -0
- package/_site/_test/parallel-workbench-independent-host.js +262 -0
- package/_site/_test/parallel-workbench-integration-5025-abort-probe.js +340 -0
- package/_site/_test/parallel-workbench-integration-5025-drafts-probe.js +588 -0
- package/_site/_test/parallel-workbench-integration-5025-env-check.js +317 -0
- package/_site/_test/parallel-workbench-integration-5025-model-probe.js +342 -0
- package/_site/_test/parallel-workbench-integration-5025-ordering-probe.js +326 -0
- package/_site/_test/parallel-workbench-model-probe.js +336 -0
- package/_site/_test/parallel-workbench-offline-test.js +169 -0
- package/_site/_test/parallel-workbench-provenance-trace.js +134 -0
- package/_site/_test/parallel-workbench-source-match.js +206 -0
- package/_site/_test/parallel-workbench-standalone-turn.js +349 -0
- package/_site/_test/path-consistency-test.js +151 -151
- package/_site/_test/pending-sweep-test.js +9 -9
- package/_site/_test/post-commit-automation-test.js +87 -87
- package/_site/_test/pr-consumer-contract-test.js +55 -55
- package/_site/_test/product-brand-contract-test.js +25 -25
- package/_site/_test/product-diagnostics-ui-test.js +93 -93
- package/_site/_test/product-empty-state-test.js +148 -0
- package/_site/_test/product-import-ui-test.js +219 -104
- package/_site/_test/product-navigation-test.js +152 -0
- package/_site/_test/product-progress-status-test.js +84 -84
- package/_site/_test/project-delete-recovery-test.js +64 -64
- package/_site/_test/project-domain-create-test.js +91 -0
- package/_site/_test/project-domain-scope-retrieval-test.js +214 -0
- package/_site/_test/project-git-init-confirm-test.js +115 -0
- package/_site/_test/project-goal-editor-test.js +144 -144
- package/_site/_test/project-import-duplicate-alias-test.js +134 -0
- package/_site/_test/project-import-unicode-restart-test.js +140 -0
- package/_site/_test/project-lifecycle-transaction-test.js +106 -106
- package/_site/_test/project-module-partial-recovery-test.js +222 -0
- package/_site/_test/project-remove-running-guard-test.js +79 -79
- package/_site/_test/project-store-test.js +90 -90
- package/_site/_test/project-unbind-late-read-ui-test.js +250 -0
- package/_site/_test/project-unbind-writer-guard-test.js +231 -0
- package/_site/_test/prompt-settings-test.js +115 -115
- package/_site/_test/protected-architecture-gate-test.js +122 -122
- package/_site/_test/refactor-characterization-test.js +36 -36
- package/_site/_test/registry-events-test.js +38 -38
- package/_site/_test/release-version-sync-test.js +115 -115
- package/_site/_test/requirement-binding-test.js +113 -113
- package/_site/_test/requirement-recorder-test.js +173 -173
- package/_site/_test/run-all-tests.js +173 -161
- package/_site/_test/runtime-endpoint-test.js +64 -64
- package/_site/_test/scanner-test.js +83 -83
- package/_site/_test/server-security-test.js +96 -96
- package/_site/_test/sessions-stream-test.js +93 -93
- package/_site/_test/shared-contracts-test.js +58 -58
- package/_site/_test/shared-scope-root-binding-test.js +74 -67
- package/_site/_test/simple-import-test.js +98 -98
- package/_site/_test/startup-analysis-disabled-test.js +16 -16
- package/_site/_test/storage-foundation-test.js +78 -78
- package/_site/_test/structured-logger-test.js +101 -101
- package/_site/_test/t07b-cln-005-coverage-test.js +212 -0
- package/_site/_test/team-knowledge-store-sparse-checkout-test.js +196 -196
- package/_site/_test/team-knowledge-store-test.js +132 -132
- package/_site/_test/test-server-cleanup-test.js +35 -35
- package/_site/_test/test-server-module-isolation-test.js +37 -37
- package/_site/_test/tracking-start-test.js +144 -144
- package/_site/_test/vector-storage-root-test.js +75 -75
- package/_site/_test/version-visibility-browser-probe.js +249 -0
- package/_site/_test/version-visibility-test.js +92 -0
- package/_site/_test/workbench-context-receipts-test.js +22 -22
- package/_site/_test/workbench-permission-test.js +117 -117
- package/_site/_test/zcode-capture-integration-test.js +112 -112
- package/_site/lib/ai-profile-resolver.js +78 -78
- package/_site/lib/ai-vendor-presets.js +83 -83
- package/_site/lib/ai-workspace.js +104 -104
- package/_site/lib/atomic-file.js +204 -204
- package/_site/lib/automation-config.js +140 -140
- package/_site/lib/bridge-adapter.js +260 -260
- package/_site/lib/bridge-consumer-service.js +402 -402
- package/_site/lib/capture-hook-config.js +108 -108
- package/_site/lib/claude-cli-runner.js +1599 -1599
- package/_site/lib/cli-instances.js +43 -43
- package/_site/lib/codex-context-status.js +17 -17
- package/_site/lib/codex-notify-config.js +193 -193
- package/_site/lib/commit-conversation-binder.js +247 -247
- package/_site/lib/commit-processing-ledger.js +27 -27
- package/_site/lib/commit-prompt.js +202 -202
- package/_site/lib/commit-reconciler.js +444 -444
- package/_site/lib/context-pack-builder.js +299 -299
- package/_site/lib/contracts.js +291 -291
- package/_site/lib/conversation-exclusions.js +204 -204
- package/_site/lib/conversation-query-service.js +161 -161
- package/_site/lib/conversation-store.js +387 -387
- package/_site/lib/data-dir.js +13 -13
- package/_site/lib/embedding-service.js +85 -85
- package/_site/lib/engine-connection.js +93 -93
- package/_site/lib/engine-knowledge-client.js +76 -72
- package/_site/lib/evidence-bundle.js +228 -228
- package/_site/lib/folder-picker-output.js +24 -24
- package/_site/lib/git-path.js +14 -14
- package/_site/lib/git-runner.js +62 -62
- package/_site/lib/github-team-store.js +1175 -1175
- package/_site/lib/hook-manager.js +203 -203
- package/_site/lib/index-builder.js +157 -157
- package/_site/lib/index-service.js +173 -173
- package/_site/lib/integration-auto-repair.js +77 -77
- package/_site/lib/integration-installer.js +1240 -1240
- package/_site/lib/integration-intent.js +88 -88
- package/_site/lib/integration-status-scan.js +99 -99
- package/_site/lib/integration-status-worker.js +14 -14
- package/_site/lib/kb-framework.js +191 -191
- package/_site/lib/kb-validator.js +124 -124
- package/_site/lib/knowledge-db.js +363 -363
- package/_site/lib/knowledge-promotion.js +435 -435
- package/_site/lib/knowledge-retrieval-service.js +401 -401
- package/_site/lib/knowledge-schema.js +121 -121
- package/_site/lib/knowledge-tool-runtime.js +366 -366
- package/_site/lib/live-gateway.js +78 -78
- package/_site/lib/llm-client.js +173 -173
- package/_site/lib/markdown-knowledge-indexer.js +230 -230
- package/_site/lib/model-context-windows.js +82 -82
- package/_site/lib/module-bridge.js +874 -874
- package/_site/lib/module-port-resolver.js +57 -57
- package/_site/lib/post-commit-automation.js +141 -141
- package/_site/lib/product-data.js +35 -35
- package/_site/lib/project-lifecycle-service.js +554 -554
- package/_site/lib/project-registry-store.js +129 -129
- package/_site/lib/project-store.js +268 -268
- package/_site/lib/prompt-registry.js +148 -148
- package/_site/lib/public-version-info.js +37 -0
- package/_site/lib/registry-events.js +16 -16
- package/_site/lib/requirement-adapters.js +10 -10
- package/_site/lib/requirement-binder.js +112 -112
- package/_site/lib/requirement-recorder.js +278 -278
- package/_site/lib/runtime-control.js +89 -89
- package/_site/lib/runtime-endpoint.js +160 -160
- package/_site/lib/scanner.js +298 -298
- package/_site/lib/server-app.js +1672 -1664
- package/_site/lib/settings-store.js +153 -153
- package/_site/lib/storage-layout.js +166 -166
- package/_site/lib/structured-logger.js +574 -574
- package/_site/lib/zcode-context-integration.js +60 -60
- package/_site/scripts/codex-notify-fanout.cjs +95 -95
- package/_site/scripts/folder-picker.ps1 +156 -156
- package/_site/scripts/hook-trigger.js +158 -158
- package/_site/scripts/install-module-candidates.js +69 -69
- package/_site/scripts/pack-module-candidates.js +89 -89
- package/_site/scripts/sync-product-content.js +28 -28
- package/_site/scripts/sync-release-version.js +164 -164
- package/_site/scripts/vendor-modules.js +49 -49
- package/_site/scripts/verify-module-runtime.js +50 -50
- package/_site/scripts/verify-product-runtime.js +36 -36
- package/_site/scripts/verify-retrieval-gold.js +83 -83
- package/_site/server.js +15 -15
- package/_site/start.bat +26 -26
- package/_site/stop.bat +11 -11
- package/bin/project-knowledge-integrations.js +254 -254
- package/bin/project-knowledge-kb.js +67 -67
- package/bin/project-knowledge-mcp.js +201 -201
- package/bin/project-knowledge.js +269 -170
- package/claude-prompts.json +21 -21
- package/docs/README.zh-CN.md +207 -205
- package/docs/assets/architecture.svg +181 -181
- package/docs/assets/logo.svg +49 -49
- package/docs/fresh-v5-start.md +44 -44
- package/docs/leader-glm-workbench-playbook.md +122 -122
- package/docs/project-registry-schema.md +33 -33
- package/docs/release-5.0.16-acceptance.md +176 -176
- package/docs/release-5.0.17-acceptance.md +117 -117
- package/docs/release-5.0.19-acceptance.md +39 -39
- package/docs/team-knowledge-mode-a-plan.md +73 -73
- package/docs/testing-strategy.md +33 -33
- package/module-runtime-manifest.json +68 -65
- package/package.json +113 -110
- package/plugins/project-knowledge/.claude-plugin/plugin.json +1 -1
- package/plugins/project-knowledge/.codex-plugin/plugin.json +1 -1
- package/plugins/project-knowledge/.mcp.json +1 -1
- package/templates/change.md +30 -30
- package/templates/project-readme.md +52 -52
- package/ui/index.html +3 -2
- package/ui/version-info.css +44 -0
- package/ui/version-info.js +24 -0
- package/vendor-manifest.json +55 -55
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// P-WB-CANONICAL-R2 launcher — the single safe entry discipline for every
|
|
3
|
+
// integration-5025 probe (model / ordering / abort / drafts). The accepted
|
|
4
|
+
// canonical suite isolated only the CHILD processes; the probe driver itself
|
|
5
|
+
// still ran on the developer's environment, and the model probe built its
|
|
6
|
+
// child env from the pre-R5 fixture whose whitelist lacked APPDATA,
|
|
7
|
+
// LOCALAPPDATA and CODEX_HOME. This launcher closes that:
|
|
8
|
+
//
|
|
9
|
+
// boot(options) — called as the FIRST statement of a probe's main phase —
|
|
10
|
+
// 1. GATES FIRST, before any environment mutation: a paid entry refuses
|
|
11
|
+
// without PK_WB_ALLOW_PAID_TURNS=1; an entry that reads the original
|
|
12
|
+
// subscription profile refuses without an EXPLICIT
|
|
13
|
+
// PK_WB_REAL_PROFILE_DIR. By default nothing about the real profile is
|
|
14
|
+
// ever resolved, read or digested.
|
|
15
|
+
// 2. READ-ONLY DISCOVERY with the real environment (or the explicit
|
|
16
|
+
// captures a safe runner passed in): Chrome, the module root to host,
|
|
17
|
+
// the installed-product package, and — only when authorized — the real
|
|
18
|
+
// profile directory. Discovery happens BEFORE any isolation rewrite.
|
|
19
|
+
// 3. FULL DRIVER ISOLATION BY WHITELIST REBUILD (R3): this process's env is
|
|
20
|
+
// wiped and rebuilt from the fixture's explicit SYSTEM whitelist
|
|
21
|
+
// (case-insensitive), the documented PK_* contract variables, and the
|
|
22
|
+
// complete canonical isolation map (incl. APPDATA/LOCALAPPDATA/
|
|
23
|
+
// CODEX_HOME, PSModuleAnalysisCachePath, and the Chrome>=136 default-dir
|
|
24
|
+
// scaffold). Ambient provider credentials (OPENAI/MINIMAX/…),
|
|
25
|
+
// NODE_OPTIONS, proxy URLs and CLI injection vars are dropped by
|
|
26
|
+
// construction — never inherited by the driver or any descendant (host
|
|
27
|
+
// via hostEnv, Chrome by env inheritance, CLI runtimes and census
|
|
28
|
+
// helpers below the host).
|
|
29
|
+
// 4. CARRY-THROUGH: the pre-isolation captures are re-injected as
|
|
30
|
+
// explicit absolute overrides (PK_WB_MODULE_ROOT /
|
|
31
|
+
// PK_WB_INSTALLED_PRODUCT_MODULE / PK_WB_CHROME / and the authorized
|
|
32
|
+
// PK_WB_REAL_PROFILE_DIR), so nothing is ever re-discovered from the
|
|
33
|
+
// isolated environment. In particular the installed-product identity
|
|
34
|
+
// label keeps resolving to the AppData install captured BEFORE the
|
|
35
|
+
// switch — an isolated APPDATA can no longer mislabel an AppData-hosted
|
|
36
|
+
// module as "repository-pin".
|
|
37
|
+
//
|
|
38
|
+
// The real-profile digest helpers (in-memory SHA256 before/after comparison,
|
|
39
|
+
// digests never leave the process) live HERE, in the authorized layer — the
|
|
40
|
+
// canonical fixture itself stays free of any real-profile machinery.
|
|
41
|
+
const fs = require('node:fs');
|
|
42
|
+
const path = require('node:path');
|
|
43
|
+
const crypto = require('node:crypto');
|
|
44
|
+
const fixture = require('./parallel-workbench-integration-5025-fixture');
|
|
45
|
+
const sourceMap = require('./parallel-workbench-source-map');
|
|
46
|
+
const { findChromeDetailed } = require('./find-chrome');
|
|
47
|
+
|
|
48
|
+
function refuse(message) {
|
|
49
|
+
const error = new Error(message);
|
|
50
|
+
error.code = 'PK_WB_BOOT_REFUSED';
|
|
51
|
+
return error;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// --- pre-isolation, read-only discovery --------------------------------------
|
|
55
|
+
//
|
|
56
|
+
// Every resolver honours an explicit override first, so the SAME code path is
|
|
57
|
+
// safe both for a direct probe launch (real environment present) and for a
|
|
58
|
+
// runner that performed the discovery itself and passed only captures.
|
|
59
|
+
function resolveChromeOnce() {
|
|
60
|
+
const captured = String(process.env.PK_WB_CHROME || '').trim();
|
|
61
|
+
if (captured) return path.resolve(captured);
|
|
62
|
+
const detailed = findChromeDetailed();
|
|
63
|
+
return detailed && detailed.path ? detailed.path : null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function discoverWithRealEnvironment(options = {}) {
|
|
67
|
+
const explicitProfileDir = String(process.env.PK_WB_REAL_PROFILE_DIR || '').trim();
|
|
68
|
+
return {
|
|
69
|
+
chrome: options.chrome !== undefined ? options.chrome : resolveChromeOnce(),
|
|
70
|
+
moduleRoot: fixture.resolveHostModuleRoot(options.moduleRoot ? { moduleRoot: options.moduleRoot } : {}),
|
|
71
|
+
installedProductPackage: sourceMap.resolveInstalledProductPackage(),
|
|
72
|
+
// The real profile directory is only ever resolved from an EXPLICIT
|
|
73
|
+
// authorized path — never auto-discovered from the real home.
|
|
74
|
+
realProfileDir: explicitProfileDir ? path.resolve(explicitProfileDir) : null,
|
|
75
|
+
realHome: fixture.REAL_HOME,
|
|
76
|
+
realAppData: process.env.APPDATA || null,
|
|
77
|
+
discoveredAt: new Date().toISOString(),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// --- the boot discipline ------------------------------------------------------
|
|
82
|
+
//
|
|
83
|
+
// Returns { layout, envApplied, discovery }. Throws (code PK_WB_BOOT_REFUSED)
|
|
84
|
+
// for any unsafe launch; a probe exits non-zero on refusal without having
|
|
85
|
+
// touched anything.
|
|
86
|
+
|
|
87
|
+
// The documented contract variables that survive the driver env wipe: the
|
|
88
|
+
// operator's own explicit settings (timeouts, model selection, evidence target,
|
|
89
|
+
// acknowledgements), never ambient machine state.
|
|
90
|
+
const BOOT_PRESERVED_VARS = [
|
|
91
|
+
'PK_TEST_TEMP_ROOT',
|
|
92
|
+
'PK_WB_ALLOW_PAID_TURNS',
|
|
93
|
+
'PK_WB_EXPECTED_VERSION',
|
|
94
|
+
'PK_WB_MODEL_PROFILE',
|
|
95
|
+
'PK_WB_MODEL_ID',
|
|
96
|
+
'PK_WB_TURN_TIMEOUT_MS',
|
|
97
|
+
'PK_WB_INTEGRATION_5025_TIMEOUT_MS',
|
|
98
|
+
'PARALLEL_WORKBENCH_RUNTIME_EVIDENCE',
|
|
99
|
+
'PK_WB_SAFE_LAUNCH',
|
|
100
|
+
];
|
|
101
|
+
function boot(options = {}) {
|
|
102
|
+
const paid = options.paid === true;
|
|
103
|
+
const needsRealProfile = options.needsRealProfile === true;
|
|
104
|
+
if (paid && String(process.env.PK_WB_ALLOW_PAID_TURNS || '') !== '1') {
|
|
105
|
+
throw refuse('this entry spends real paid model turns; set PK_WB_ALLOW_PAID_TURNS=1 explicitly first (unsafe direct launch refused)');
|
|
106
|
+
}
|
|
107
|
+
if (needsRealProfile && !String(process.env.PK_WB_REAL_PROFILE_DIR || '').trim()) {
|
|
108
|
+
throw refuse('this entry reads the original subscription profile read-only behind the in-memory facade; that requires the paid acknowledgement AND an explicit PK_WB_REAL_PROFILE_DIR path — refusing to auto-discover or read the real profile by default');
|
|
109
|
+
}
|
|
110
|
+
if (paid && needsRealProfile && !fs.existsSync(String(process.env.PK_WB_REAL_PROFILE_DIR || ''))) {
|
|
111
|
+
throw refuse(`the authorized PK_WB_REAL_PROFILE_DIR does not exist: ${process.env.PK_WB_REAL_PROFILE_DIR}`);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const discovery = discoverWithRealEnvironment(options);
|
|
115
|
+
if (!discovery.moduleRoot) {
|
|
116
|
+
throw refuse('no claude-ai-workbench module copy was found to host (discovery ran before any isolation)');
|
|
117
|
+
}
|
|
118
|
+
if (options.requireChrome !== false && !discovery.chrome) {
|
|
119
|
+
throw refuse('no real Chrome was found (discovery ran before any isolation)');
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const layout = fixture.createIsolationLayout(options.prefix || 'parallel-wb-integration-5025');
|
|
123
|
+
const envApplied = fixture.isolationEnvMap(layout);
|
|
124
|
+
// FULL DRIVER ISOLATION BY WHITELIST REBUILD (R3), not blacklisting: this
|
|
125
|
+
// process's env is wiped and rebuilt from the fixture's explicit SYSTEM
|
|
126
|
+
// whitelist (case-insensitive), plus the documented PK_* contract variables
|
|
127
|
+
// the operator may have set, plus the complete isolation map. Provider
|
|
128
|
+
// credentials (OPENAI/MINIMAX/GOOGLE/AWS/ANTHROPIC…), NODE_OPTIONS, proxy
|
|
129
|
+
// URLs and CODEX/Claude CLI injection vars are dropped by construction. The
|
|
130
|
+
// credential an authorized paid entry needs is never inherited from ambient
|
|
131
|
+
// — only the server-side read-only in-memory facade over the explicit
|
|
132
|
+
// profile path constructs it, below the host.
|
|
133
|
+
const preserved = fixture.systemBaseEnv(process.env);
|
|
134
|
+
for (const key of BOOT_PRESERVED_VARS) {
|
|
135
|
+
if (process.env[key] !== undefined) preserved[key] = process.env[key];
|
|
136
|
+
}
|
|
137
|
+
for (const key of Object.keys(process.env)) delete process.env[key];
|
|
138
|
+
Object.assign(process.env, preserved, envApplied);
|
|
139
|
+
// Carry the pre-isolation captures through as explicit absolute overrides.
|
|
140
|
+
process.env.PK_WB_MODULE_ROOT = discovery.moduleRoot;
|
|
141
|
+
if (discovery.installedProductPackage) process.env.PK_WB_INSTALLED_PRODUCT_MODULE = discovery.installedProductPackage;
|
|
142
|
+
if (discovery.chrome) process.env.PK_WB_CHROME = discovery.chrome;
|
|
143
|
+
if (discovery.realProfileDir) process.env.PK_WB_REAL_PROFILE_DIR = discovery.realProfileDir;
|
|
144
|
+
return { layout, envApplied, discovery };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// --- the authorized real-profile digest layer --------------------------------
|
|
148
|
+
//
|
|
149
|
+
// Byte-level snapshot of a flat directory. The SHA256 digests stay in process
|
|
150
|
+
// memory: only counts and file NAMES ever leave compareDigests, so a digest of
|
|
151
|
+
// a credential file is never printed, logged or persisted. No file is ever
|
|
152
|
+
// copied, moved or written.
|
|
153
|
+
function digestDirectory(dir) {
|
|
154
|
+
if (!dir || !fs.existsSync(dir)) return null;
|
|
155
|
+
const entries = {};
|
|
156
|
+
for (const name of fs.readdirSync(dir)) {
|
|
157
|
+
try {
|
|
158
|
+
const file = path.join(dir, name);
|
|
159
|
+
if (!fs.statSync(file).isFile()) continue;
|
|
160
|
+
entries[name] = crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex');
|
|
161
|
+
} catch { entries[name] = null; }
|
|
162
|
+
}
|
|
163
|
+
return entries;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function compareDigests(before, after) {
|
|
167
|
+
const names = new Set([...Object.keys(before || {}), ...Object.keys(after || {})]);
|
|
168
|
+
const changed = [];
|
|
169
|
+
const added = [];
|
|
170
|
+
const removed = [];
|
|
171
|
+
const unreadable = [];
|
|
172
|
+
for (const name of names) {
|
|
173
|
+
const a = before ? before[name] : undefined;
|
|
174
|
+
const b = after ? after[name] : undefined;
|
|
175
|
+
if (a === undefined && b !== undefined) added.push(name);
|
|
176
|
+
else if (a !== undefined && b === undefined) removed.push(name);
|
|
177
|
+
else if (a === null || b === null) unreadable.push(name);
|
|
178
|
+
else if (a !== b) changed.push(name);
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
count: names.size,
|
|
182
|
+
byteIdentical: changed.length === 0 && added.length === 0 && removed.length === 0 && unreadable.length === 0,
|
|
183
|
+
changedFiles: changed,
|
|
184
|
+
addedFiles: added,
|
|
185
|
+
removedFiles: removed,
|
|
186
|
+
unreadableFiles: unreadable,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// --- the safe runner's child environment -------------------------------------
|
|
191
|
+
//
|
|
192
|
+
// The canonical runner must NOT hand a probe the developer's shell. It
|
|
193
|
+
// performs the discovery itself (real environment, read-only), then builds the
|
|
194
|
+
// child env from this whitelist: the Windows essentials a node child and its
|
|
195
|
+
// census helpers need (PATH for git/powershell, SystemRoot for crypto), the
|
|
196
|
+
// TEMP fallbacks the portable temp-root resolution may consult before boot
|
|
197
|
+
// replaces them, the documented PK_* contract variables, and the captured
|
|
198
|
+
// discovery results as explicit absolute overrides. Nothing else survives.
|
|
199
|
+
const RUNNER_ENV_PASSTHROUGH = [
|
|
200
|
+
'SystemRoot', 'SystemDrive', 'windir', 'ComSpec', 'PATHEXT',
|
|
201
|
+
'PROCESSOR_ARCHITECTURE', 'PROCESSOR_ARCHITECTURE_W6432', 'NUMBER_OF_PROCESSORS',
|
|
202
|
+
'PATH', 'TEMP', 'TMP', 'TMPDIR',
|
|
203
|
+
'PK_TEST_TEMP_ROOT',
|
|
204
|
+
'PK_WB_ALLOW_PAID_TURNS',
|
|
205
|
+
'PK_WB_EXPECTED_VERSION',
|
|
206
|
+
'PK_WB_MODEL_PROFILE',
|
|
207
|
+
'PK_WB_MODEL_ID',
|
|
208
|
+
'PK_WB_TURN_TIMEOUT_MS',
|
|
209
|
+
'PK_WB_INTEGRATION_5025_TIMEOUT_MS',
|
|
210
|
+
'PARALLEL_WORKBENCH_RUNTIME_EVIDENCE',
|
|
211
|
+
];
|
|
212
|
+
|
|
213
|
+
function buildRunnerChildEnv(sourceEnv, captures = {}) {
|
|
214
|
+
// Case-insensitive membership (Windows: Path/PATH, SystemRoot/SYSTEMROOT are
|
|
215
|
+
// the same variable; a case-variant credential or NODE_OPTIONS must NOT slip
|
|
216
|
+
// through an exact-case match).
|
|
217
|
+
const allow = new Set(RUNNER_ENV_PASSTHROUGH.map(name => name.toLowerCase()));
|
|
218
|
+
const env = {};
|
|
219
|
+
for (const [key, value] of Object.entries(sourceEnv)) {
|
|
220
|
+
if (value !== undefined && allow.has(key.toLowerCase())) env[key] = value;
|
|
221
|
+
}
|
|
222
|
+
// The runner's own read-only discovery, captured with the real environment.
|
|
223
|
+
if (captures.moduleRoot) env.PK_WB_MODULE_ROOT = captures.moduleRoot;
|
|
224
|
+
if (captures.installedProductPackage) env.PK_WB_INSTALLED_PRODUCT_MODULE = captures.installedProductPackage;
|
|
225
|
+
if (captures.chrome) env.PK_WB_CHROME = captures.chrome;
|
|
226
|
+
// The real profile directory is forwarded ONLY when the operator authorized
|
|
227
|
+
// it explicitly — the runner never invents one.
|
|
228
|
+
if (captures.realProfileDir) env.PK_WB_REAL_PROFILE_DIR = captures.realProfileDir;
|
|
229
|
+
env.PK_WB_SAFE_LAUNCH = '1';
|
|
230
|
+
return env;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
module.exports = {
|
|
234
|
+
boot,
|
|
235
|
+
discoverWithRealEnvironment,
|
|
236
|
+
digestDirectory,
|
|
237
|
+
compareDigests,
|
|
238
|
+
buildRunnerChildEnv,
|
|
239
|
+
RUNNER_ENV_PASSTHROUGH,
|
|
240
|
+
};
|