create-principles-disciple 1.100.0 → 1.102.0
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/console/dist/server/index.js +9 -0
- package/console/dist/server/models/ActivationsConsoleModel.d.ts +37 -1
- package/console/dist/server/models/ActivationsConsoleModel.js +114 -13
- package/console/dist/server/routes/onboarding.d.ts +34 -0
- package/console/dist/server/routes/onboarding.js +324 -0
- package/console/dist/ui/App.js +74 -15
- package/console/dist/ui/api.d.ts +17 -1
- package/console/dist/ui/api.js +6 -1
- package/console/dist/ui/components/onboarding/CircuitDiagram.d.ts +8 -0
- package/console/dist/ui/components/onboarding/CircuitDiagram.js +18 -0
- package/console/dist/ui/components/onboarding/DemoResultView.d.ts +22 -0
- package/console/dist/ui/components/onboarding/DemoResultView.js +15 -0
- package/console/dist/ui/i18n/en.json +127 -0
- package/console/dist/ui/i18n/zh-CN.json +127 -0
- package/console/dist/ui/pages/activation/ActivationValidators.js +1 -1
- package/console/dist/ui/pages/control-center/AgentCard.js +10 -3
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +1 -1
- package/console/dist/ui/pages/settings/SettingsPage.js +64 -5
- package/console/dist/ui/pages/signal-keywords/KeywordEditDialog.d.ts +12 -0
- package/console/dist/ui/pages/signal-keywords/KeywordEditDialog.js +41 -0
- package/console/dist/ui/pages/signal-keywords/KeywordListSection.d.ts +10 -0
- package/console/dist/ui/pages/signal-keywords/KeywordListSection.js +39 -0
- package/console/dist/ui/pages/signal-keywords/PendingTermsSection.d.ts +14 -0
- package/console/dist/ui/pages/signal-keywords/PendingTermsSection.js +35 -0
- package/console/dist/ui/pages/signal-keywords/SignalKeywordsPage.d.ts +1 -0
- package/console/dist/ui/pages/signal-keywords/SignalKeywordsPage.js +49 -0
- package/console/dist/ui/pages/welcome/WelcomePage.d.ts +5 -0
- package/console/dist/ui/pages/welcome/WelcomePage.js +185 -0
- package/console/dist/ui/utils/__tests__/onboarding-state.test.d.ts +1 -0
- package/console/dist/ui/utils/__tests__/onboarding-state.test.js +72 -0
- package/console/dist/ui/utils/agent-metadata.d.ts +13 -0
- package/console/dist/ui/utils/agent-metadata.js +26 -0
- package/console/dist/ui/utils/onboarding-state.d.ts +25 -0
- package/console/dist/ui/utils/onboarding-state.js +77 -0
- package/console/dist/ui/utils/signal-keywords-api.d.ts +68 -0
- package/console/dist/ui/utils/signal-keywords-api.js +121 -0
- package/console/dist/ui/utils/signal-keywords-types.d.ts +57 -0
- package/console/dist/ui/utils/signal-keywords-types.js +10 -0
- package/console/dist/ui/utils/signal-keywords-validators.d.ts +20 -0
- package/console/dist/ui/utils/signal-keywords-validators.js +114 -0
- package/console/dist/web/assets/app.css +401 -0
- package/console/dist/web/assets/app.js +6904 -1835
- package/core/dist/index.d.ts +2 -0
- package/core/dist/index.d.ts.map +1 -1
- package/core/dist/index.js +1 -0
- package/core/dist/index.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/admission-gate.test.js +63 -1
- package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +21 -5
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/chain-integrity-attack.test.js +17 -0
- package/core/dist/runtime-v2/__tests__/chain-integrity-attack.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js +12 -0
- package/core/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +28 -0
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-chain-integrity-read-model.test.js +168 -1
- package/core/dist/runtime-v2/__tests__/internalization-chain-integrity-read-model.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +8 -0
- package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +53 -0
- package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/helpers.d.ts +21 -0
- package/core/dist/runtime-v2/activation/__tests__/helpers.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/helpers.js +132 -0
- package/core/dist/runtime-v2/activation/__tests__/helpers.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +2 -117
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/activation-dispatcher.js +18 -2
- package/core/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
- package/core/dist/runtime-v2/activation/index.d.ts +1 -1
- package/core/dist/runtime-v2/activation/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/index.js +1 -1
- package/core/dist/runtime-v2/activation/index.js.map +1 -1
- package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +253 -6
- package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts +12 -0
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js +96 -2
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
- package/core/dist/runtime-v2/admission-gate.d.ts +27 -0
- package/core/dist/runtime-v2/admission-gate.d.ts.map +1 -1
- package/core/dist/runtime-v2/admission-gate.js +55 -0
- package/core/dist/runtime-v2/admission-gate.js.map +1 -1
- package/core/dist/runtime-v2/cli/diagnose.d.ts +4 -0
- package/core/dist/runtime-v2/cli/diagnose.d.ts.map +1 -1
- package/core/dist/runtime-v2/cli/diagnose.js +25 -0
- package/core/dist/runtime-v2/cli/diagnose.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/internal-agent-names.test.d.ts +2 -0
- package/core/dist/runtime-v2/config/__tests__/internal-agent-names.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/config/__tests__/internal-agent-names.test.js +15 -0
- package/core/dist/runtime-v2/config/__tests__/internal-agent-names.test.js.map +1 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +7 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +28 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +1 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +1 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
- package/core/dist/runtime-v2/config/index.d.ts +5 -3
- package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/index.js +8 -2
- package/core/dist/runtime-v2/config/index.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts +2 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js +12 -0
- package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-effective.js +25 -1
- package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-feature-flags.js +6 -1
- package/core/dist/runtime-v2/config/pd-config-feature-flags.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-redaction.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-redaction.js +9 -0
- package/core/dist/runtime-v2/config/pd-config-redaction.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts +110 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.js +7 -0
- package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-validate.js +114 -1
- package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-profile-constants.d.ts +27 -0
- package/core/dist/runtime-v2/config/pd-profile-constants.d.ts.map +1 -0
- package/core/dist/runtime-v2/config/pd-profile-constants.js +145 -0
- package/core/dist/runtime-v2/config/pd-profile-constants.js.map +1 -0
- package/core/dist/runtime-v2/config/pd-validate-profile.d.ts +28 -0
- package/core/dist/runtime-v2/config/pd-validate-profile.d.ts.map +1 -0
- package/core/dist/runtime-v2/config/pd-validate-profile.js +482 -0
- package/core/dist/runtime-v2/config/pd-validate-profile.js.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +26 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/plugin-surface-registry.test.js +12 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/plugin-surface-registry.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +8 -0
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js +8 -2
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +6 -4
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +5 -3
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js +25 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +139 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +20 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +7 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js +21 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.js +23 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-output.d.ts +7 -0
- package/core/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-output.js +22 -1
- package/core/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js +2 -0
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-runner.js +13 -0
- package/core/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.js +4 -1
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +7 -1
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-router-runner.js +4 -1
- package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js +7 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/index.d.ts +1 -1
- package/core/dist/runtime-v2/internalization/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/index.js +1 -1
- package/core/dist/runtime-v2/internalization/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-task-guards.d.ts +7 -0
- package/core/dist/runtime-v2/internalization/internalization-task-guards.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-task-guards.js +8 -0
- package/core/dist/runtime-v2/internalization/internalization-task-guards.js.map +1 -1
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js +57 -1
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js.map +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.js +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnose.test.js +91 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnose.test.js.map +1 -1
- package/core/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.d.ts +2 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.js +39 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/keyword-stage.test.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.d.ts +2 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.js +34 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/llm-stage.test.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.d.ts +2 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.js +222 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/signal-collector.test.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/types.test.d.ts +2 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/types.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/types.test.js +35 -0
- package/core/dist/runtime-v2/signal-collector/__tests__/types.test.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/index.d.ts +5 -0
- package/core/dist/runtime-v2/signal-collector/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/index.js +5 -0
- package/core/dist/runtime-v2/signal-collector/index.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/keyword-stage.d.ts +20 -0
- package/core/dist/runtime-v2/signal-collector/keyword-stage.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/keyword-stage.js +61 -0
- package/core/dist/runtime-v2/signal-collector/keyword-stage.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/llm-stage.d.ts +16 -0
- package/core/dist/runtime-v2/signal-collector/llm-stage.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/llm-stage.js +34 -0
- package/core/dist/runtime-v2/signal-collector/llm-stage.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/signal-collector.d.ts +16 -0
- package/core/dist/runtime-v2/signal-collector/signal-collector.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/signal-collector.js +71 -0
- package/core/dist/runtime-v2/signal-collector/signal-collector.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/types.d.ts +61 -0
- package/core/dist/runtime-v2/signal-collector/types.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/types.js +45 -0
- package/core/dist/runtime-v2/signal-collector/types.js.map +1 -0
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js +19 -0
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js.map +1 -1
- package/core/dist/runtime-v2/store/schema-conformance.test.js +73 -0
- package/core/dist/runtime-v2/store/schema-conformance.test.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js +41 -7
- package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js +22 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/core/dist/runtime-v2/types/event-types.d.ts +40 -3
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +9 -0
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/dist/runtime-v2/types/index.d.ts +2 -2
- package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/index.js +1 -1
- package/core/dist/runtime-v2/types/index.js.map +1 -1
- package/core/dist/workflow-funnel-loader.js +1 -1
- package/core/dist/workflow-funnel-loader.js.map +1 -1
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +6 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/installer.d.ts +3 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +167 -1
- package/dist/installer.js.map +1 -1
- package/dist/mvp-config.d.ts +8 -0
- package/dist/mvp-config.d.ts.map +1 -1
- package/dist/mvp-config.js +12 -2
- package/dist/mvp-config.js.map +1 -1
- package/package.json +1 -1
- package/pd-cli/dist/commands/candidate.d.ts.map +1 -1
- package/pd-cli/dist/commands/candidate.js +89 -7
- package/pd-cli/dist/commands/candidate.js.map +1 -1
- package/pd-cli/dist/commands/pain-retry.d.ts +3 -0
- package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-retry.js +39 -14
- package/pd-cli/dist/commands/pain-retry.js.map +1 -1
- package/pd-cli/dist/commands/runtime-activation.d.ts +4 -0
- package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-activation.js +244 -10
- package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
- package/pd-cli/dist/index.js +7 -84
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/dist/services/rulehost-pipeline-runner.js +1 -1
- package/pd-cli/dist/services/rulehost-pipeline-runner.js.map +1 -1
- package/pd-cli/package.json +1 -1
- package/plugin/dist/commands/context.js +17 -11
- package/plugin/dist/commands/samples.js +25 -0
- package/plugin/dist/core/event-log.d.ts +11 -1
- package/plugin/dist/core/event-log.js +13 -0
- package/plugin/dist/core/init.js +3 -4
- package/plugin/dist/core/rule-host.d.ts +68 -0
- package/plugin/dist/core/rule-host.js +167 -28
- package/plugin/dist/core/signal-collector-host.d.ts +105 -0
- package/plugin/dist/core/signal-collector-host.js +337 -0
- package/plugin/dist/hooks/prompt.d.ts +3 -2
- package/plugin/dist/hooks/prompt.js +47 -571
- package/plugin/dist/types/event-types.d.ts +1 -1
- package/plugin/dist/types.d.ts +5 -25
- package/plugin/dist/types.js +4 -9
- package/plugin/dist/utils/hashing.js +1 -1
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SignalCollectorHost — plugin I/O 外壳 (design spec §4.2)
|
|
3
|
+
*
|
|
4
|
+
* 把 core 的纯逻辑 (collectSync / mapLlmResultToOutput) 接进 openclaw 运行时。
|
|
5
|
+
*
|
|
6
|
+
* 同步路径 (prompt.ts before_prompt_build 钩子调用,绝不阻塞):
|
|
7
|
+
* - trigger 门控 (仅 user)
|
|
8
|
+
* - Stage1 关键词快扫 (零成本)
|
|
9
|
+
* - 写 user_turns (复用 recordUserTurn)
|
|
10
|
+
* - 高精度短语命中 (high) → 直接走 STRONG 分流 (同步,纯内存)
|
|
11
|
+
* - 普通歧义词 / 未命中 → 入队异步 LLM 确认 (不阻塞)
|
|
12
|
+
*
|
|
13
|
+
* 异步路径 (fire-and-forget):
|
|
14
|
+
* - Stage2 LLM 确认 (后台,不阻塞 prompt hook)
|
|
15
|
+
* - LLM 不可用 → 降级:丢弃 ambiguous 候选 (不触发 STRONG,避免误判泛滥)
|
|
16
|
+
* - 按 strength 分流:STRONG → emitPainDetectedEvent (修断裂 ③);WEAK → trackFriction 累积 GFI
|
|
17
|
+
*
|
|
18
|
+
* 降级不静默 (rc-9):所有降级路径走 SystemLogger。
|
|
19
|
+
*/
|
|
20
|
+
import { collectSync, mapLlmResultToOutput, buildLlmPrompt, parseLlmClassification, PiAiRuntimeAdapter, } from '@principles/core/runtime-v2';
|
|
21
|
+
import { createHash } from 'node:crypto';
|
|
22
|
+
import { emitPainDetectedEvent } from '../hooks/pain.js';
|
|
23
|
+
import { trackFriction } from './session-tracker.js';
|
|
24
|
+
import { SystemLogger } from './system-logger.js';
|
|
25
|
+
import { createTraceId } from './evolution-logger.js';
|
|
26
|
+
import { resolveObserverConfig } from './pd-config-loader.js';
|
|
27
|
+
// ── 默认配置 / 内置 seed 词库 ─────────────────────────────────────────────────
|
|
28
|
+
//
|
|
29
|
+
// 注意:完整的 <stateDir>/signal_keywords.json 加载 + 旧词库合并迁移 (spec §5.1)
|
|
30
|
+
// 属于另一项工作,这里先用内置 seed 保证 host 可独立工作。host 接口预留了
|
|
31
|
+
// keywordStore / config 的注入点,plugin 层接入真实文件 store 时无需改逻辑。
|
|
32
|
+
export const DEFAULT_SIGNAL_CONFIG = {
|
|
33
|
+
enableLlmStage: true,
|
|
34
|
+
llmTimeoutMs: 30_000,
|
|
35
|
+
promptTemplate: '',
|
|
36
|
+
strongPainScore: 70,
|
|
37
|
+
strongRateLimitPerHour: 5,
|
|
38
|
+
};
|
|
39
|
+
export function buildDefaultKeywordStore() {
|
|
40
|
+
const terms = {
|
|
41
|
+
// 高精度纠正短语 (命中即判 STRONG,不走 LLM)
|
|
42
|
+
'这是错的': { term: '这是错的', category: 'correction', weight: 0.9, precision: 'high', source: 'seed' },
|
|
43
|
+
'不要自作主张': { term: '不要自作主张', category: 'correction', weight: 0.9, precision: 'high', source: 'seed' },
|
|
44
|
+
'不应该这么做': { term: '不应该这么做', category: 'correction', weight: 0.9, precision: 'high', source: 'seed' },
|
|
45
|
+
// 普通歧义词 (仅作 evidence 候选,强制过 Stage2 LLM 二次确认)
|
|
46
|
+
'不对': { term: '不对', category: 'correction', weight: 0.5, precision: 'ambiguous', source: 'seed' },
|
|
47
|
+
'错了': { term: '错了', category: 'correction', weight: 0.5, precision: 'ambiguous', source: 'seed' },
|
|
48
|
+
'搞什么': { term: '搞什么', category: 'empathy', weight: 0.5, precision: 'ambiguous', source: 'seed' },
|
|
49
|
+
};
|
|
50
|
+
return { version: 1, terms };
|
|
51
|
+
}
|
|
52
|
+
const ONE_HOUR_MS = 60 * 60 * 1000;
|
|
53
|
+
export class SignalCollectorHost {
|
|
54
|
+
wctx;
|
|
55
|
+
store;
|
|
56
|
+
config;
|
|
57
|
+
llmClassifier;
|
|
58
|
+
/** rate limit 状态:sessionId → STRONG 计数桶 */
|
|
59
|
+
rateLimit = new Map();
|
|
60
|
+
constructor(wctx, options = {}) {
|
|
61
|
+
this.wctx = wctx;
|
|
62
|
+
this.store = options.keywordStore ?? buildDefaultKeywordStore();
|
|
63
|
+
this.config = options.config ?? DEFAULT_SIGNAL_CONFIG;
|
|
64
|
+
this.llmClassifier = options.llmClassifier ?? null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* ★ 同步路径 (prompt.ts before_prompt_build 钩子里调用,绝不能阻塞)。
|
|
68
|
+
*
|
|
69
|
+
* 只做:trigger 门控 + Stage1 关键词快扫 + 写 user_turns。
|
|
70
|
+
* 高精度短语命中 (high) → 直接走 STRONG 分流 (同步,纯内存)。
|
|
71
|
+
* 普通歧义词 / 未命中 → 入队异步 LLM 确认 (不阻塞)。
|
|
72
|
+
*/
|
|
73
|
+
/**
|
|
74
|
+
* 可选入参:lineage 字段(由调用方算好传入,host 不感知 trajectory 结构)。
|
|
75
|
+
* referencesAssistantTurnId 让诊断 evidence 能 JOIN 到前置 assistant turn。
|
|
76
|
+
*/
|
|
77
|
+
detectSync(userMessage, sessionId, trigger, options) {
|
|
78
|
+
// 1. trigger 门控 (保留现有 trigger 门控,仅处理真实用户消息)
|
|
79
|
+
if (trigger !== 'user') {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// 2. Stage1 关键词快扫 (同步,零成本)。detectedAt 由 plugin 层注入(core 不取时间,CodeRabbit #11)
|
|
83
|
+
const detectedAt = new Date().toISOString();
|
|
84
|
+
const output = collectSync(userMessage, sessionId, this.store, this.config, detectedAt);
|
|
85
|
+
// 3. 写 user_turns (复用 recordUserTurn)
|
|
86
|
+
// correctionDetected 含义扩展:isSignal && strength=STRONG (spec §5.2)
|
|
87
|
+
const turnInput = {
|
|
88
|
+
sessionId,
|
|
89
|
+
// turnIndex 由调用方传入(基于 event.messages 的真实计数);未传则用时间戳递增避免冲突。
|
|
90
|
+
turnIndex: options?.turnIndex ?? Date.now(),
|
|
91
|
+
rawText: userMessage,
|
|
92
|
+
correctionDetected: output.isSignal && output.strength === 'STRONG',
|
|
93
|
+
correctionCue: output.matchedTerms.length > 0 ? output.matchedTerms.join(', ') : null,
|
|
94
|
+
referencesAssistantTurnId: options?.referencesAssistantTurnId ?? null,
|
|
95
|
+
};
|
|
96
|
+
try {
|
|
97
|
+
this.wctx.trajectory?.recordUserTurn?.(turnInput);
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_TRAJECTORY_FAIL', `recordUserTurn threw: ${String(e)}`);
|
|
101
|
+
}
|
|
102
|
+
// 4. 高精度短语命中 (high, STRONG) → 直接走 STRONG 分流 (同步)
|
|
103
|
+
if (output.isSignal && output.strength === 'STRONG' && output.matchedPrecision === 'high') {
|
|
104
|
+
this.routeStrong(output, sessionId);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// 5. 普通歧义词 / 未命中 → 入队异步 LLM 确认 (不阻塞 prompt hook)
|
|
108
|
+
if (output.needsLlmConfirmation) {
|
|
109
|
+
const pending = {
|
|
110
|
+
output,
|
|
111
|
+
sessionId,
|
|
112
|
+
text: userMessage,
|
|
113
|
+
traceId: createTraceId(),
|
|
114
|
+
};
|
|
115
|
+
// fire-and-forget,失败不影响用户消息处理 (spec §4.2)
|
|
116
|
+
void this.detectAsyncAndRoute(pending);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* ★ 异步路径 (fire-and-forget)。
|
|
121
|
+
*
|
|
122
|
+
* 1. Stage2 LLM 确认 (后台,不阻塞用户)
|
|
123
|
+
* 2. LLM 不可用 → 降级:empathy ambiguous 候选作为 WEAK 信号路由(保留旧版 GFI 累积);
|
|
124
|
+
* correction ambiguous / 未命中候选丢弃(不触发 STRONG,避免误判泛滥)
|
|
125
|
+
* 3. 按 strength 分流:STRONG → emitPainDetectedEvent;WEAK → trackFriction 累积 GFI;none → 仅记录
|
|
126
|
+
*/
|
|
127
|
+
async detectAsyncAndRoute(pending) {
|
|
128
|
+
// 1. Stage2 LLM 确认
|
|
129
|
+
let confirmed;
|
|
130
|
+
if (this.llmClassifier && this.config.enableLlmStage) {
|
|
131
|
+
let llmResult = null;
|
|
132
|
+
try {
|
|
133
|
+
llmResult = await this.llmClassifier(pending.text, this.config.promptTemplate);
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_LLM_PARSE_FAIL', `LLM classifier threw: ${String(e)}`);
|
|
137
|
+
}
|
|
138
|
+
const llmDetectedAt = new Date().toISOString();
|
|
139
|
+
if (llmResult) {
|
|
140
|
+
confirmed = mapLlmResultToOutput(llmResult, pending.text, pending.sessionId, this.config, llmDetectedAt);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// LLM 返回非法结果 → 当 none 处理 (rc-1),降级不静默
|
|
144
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_LLM_PARSE_FAIL', 'LLM returned invalid result, treating as none');
|
|
145
|
+
confirmed = mapLlmResultToOutput({ is_feedback: false, type: 'none', confidence: 1, reason: 'LLM parse failed' }, pending.text, pending.sessionId, this.config, llmDetectedAt);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// LLM 不可用 → 降级:empathy ambiguous 候选作为 WEAK 信号路由(累积 GFI,不触发 STRONG)。
|
|
150
|
+
// 保留旧版 empathy keyword matcher 的 GFI 累积行为,避免 LLM 未配置(默认)时
|
|
151
|
+
// empathy 检测完全失效。correction ambiguous 候选仍然丢弃(旧版 correction cue
|
|
152
|
+
// 不触发 trackFriction,仅 recordUserTurn,已在 detectSync 中完成)。
|
|
153
|
+
if (pending.output.matchedPrecision === 'ambiguous' && pending.output.matchedTerms.length > 0) {
|
|
154
|
+
const hasEmpathyMatch = pending.output.matchedTerms.some((term) => this.store.terms[term]?.category === 'empathy');
|
|
155
|
+
if (hasEmpathyMatch) {
|
|
156
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_LLM_DEGRADED_WEAK', 'LLM unavailable, routing empathy ambiguous as WEAK (GFI accumulation, no STRONG trigger)');
|
|
157
|
+
const degradedOutput = {
|
|
158
|
+
...pending.output,
|
|
159
|
+
isSignal: true,
|
|
160
|
+
type: 'empathy',
|
|
161
|
+
strength: 'WEAK',
|
|
162
|
+
detectionSource: 'keyword',
|
|
163
|
+
needsLlmConfirmation: false,
|
|
164
|
+
};
|
|
165
|
+
this.routeWeak(degradedOutput, pending.sessionId);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_LLM_DEGRADED', 'LLM unavailable, dropping candidate (no STRONG trigger)');
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// 3. 按 strength 分流
|
|
173
|
+
if (confirmed.isSignal && confirmed.strength === 'STRONG') {
|
|
174
|
+
this.routeStrong(confirmed, pending.sessionId);
|
|
175
|
+
}
|
|
176
|
+
else if (confirmed.isSignal && confirmed.strength === 'WEAK') {
|
|
177
|
+
this.routeWeak(confirmed, pending.sessionId);
|
|
178
|
+
}
|
|
179
|
+
// none → 仅记录,无副作用
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* STRONG 分流 → emitPainDetectedEvent (修断裂 ③)。
|
|
183
|
+
* 带 STRONG rate limit 门控 (spec §7.2):单 session 每小时上限 strongRateLimitPerHour。
|
|
184
|
+
*/
|
|
185
|
+
routeStrong(output, sessionId) {
|
|
186
|
+
if (!this.tryConsumeRateLimit(sessionId)) {
|
|
187
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_STRONG_RATE_LIMITED', 'STRONG signal suppressed by rate limit'); // 不记录 sessionId(隐私,CodeRabbit #2)
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const reason = output.llmReason
|
|
191
|
+
|| (output.matchedTerms.length > 0
|
|
192
|
+
? `User correction detected: ${output.matchedTerms.join(', ')}`
|
|
193
|
+
: 'User correction detected');
|
|
194
|
+
// emitPainDetectedEvent 是 async,但同步路径不能 await (会阻塞 prompt hook)。
|
|
195
|
+
// 这里 fire-and-forget,失败 catch (不 throw,不阻断用户消息处理)。
|
|
196
|
+
void emitPainDetectedEvent(this.wctx, {
|
|
197
|
+
ts: new Date().toISOString(),
|
|
198
|
+
type: 'pain_detected',
|
|
199
|
+
data: {
|
|
200
|
+
painId: `correction_${createTraceId()}`, // 唯一 ID,避免同毫秒碰撞(CodeRabbit #3)
|
|
201
|
+
painType: 'user_frustration',
|
|
202
|
+
source: 'user_correction', // Layer 2 强信号 (spec §6.1)
|
|
203
|
+
reason,
|
|
204
|
+
score: this.config.strongPainScore, // STRONG_PAIN_SCORE 默认 70
|
|
205
|
+
sessionId,
|
|
206
|
+
agentId: 'main',
|
|
207
|
+
provenance: 'openclaw_context_bound',
|
|
208
|
+
evidence: [
|
|
209
|
+
{ sourceRef: 'signal_collector', note: output.evidence.excerpt },
|
|
210
|
+
],
|
|
211
|
+
},
|
|
212
|
+
}, { recordObservability: true }).catch((e) => {
|
|
213
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_EMIT_FAIL', `emitPainDetectedEvent failed: ${String(e)}`);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* WEAK 分流 → trackFriction 累积 GFI + 写 evidence (维持现状,spec §3.2)。
|
|
218
|
+
*
|
|
219
|
+
* WEAK 是 Layer 3 弱信号,用较小的摩擦分(20)累积,过 highGfi 阈值(70)才触发诊断。
|
|
220
|
+
* 不用 strongPainScore(70),因为 WEAK 单条不该直接顶满 GFI。
|
|
221
|
+
*/
|
|
222
|
+
routeWeak(output, sessionId) {
|
|
223
|
+
try {
|
|
224
|
+
const hash = createHash('sha256')
|
|
225
|
+
.update(`${output.evidence.detectedAt}:${sessionId}`)
|
|
226
|
+
.digest('hex')
|
|
227
|
+
.slice(0, 32);
|
|
228
|
+
trackFriction(sessionId, 20, hash, this.wctx.workspaceDir, {
|
|
229
|
+
source: 'user_empathy',
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
SystemLogger.log(this.wctx.workspaceDir, 'SIGNAL_TRACK_FRICTION_FAIL', `trackFriction threw: ${String(e)}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* STRONG rate limit 门控:成功消耗一个名额返回 true;超限返回 false。
|
|
238
|
+
* 窗口满一小时自动重置。
|
|
239
|
+
*/
|
|
240
|
+
tryConsumeRateLimit(sessionId) {
|
|
241
|
+
const limit = this.config.strongRateLimitPerHour;
|
|
242
|
+
const now = Date.now();
|
|
243
|
+
let bucket = this.rateLimit.get(sessionId);
|
|
244
|
+
if (!bucket || now - bucket.windowStart >= ONE_HOUR_MS) {
|
|
245
|
+
bucket = { count: 0, windowStart: now };
|
|
246
|
+
this.rateLimit.set(sessionId, bucket);
|
|
247
|
+
}
|
|
248
|
+
if (bucket.count >= limit) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
bucket.count += 1;
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* 从 .pd/config.yaml 的 signalCollector runtimeProfile 构造 SignalLlmClassifier。
|
|
257
|
+
* 完成配置单轨化(spec §3.3 决策3):统一走 .pd/config.yaml,移除 empathy 的 workflows.yaml 双轨。
|
|
258
|
+
*
|
|
259
|
+
* 返回 null 的情况(走纯关键词降级,rc-9 不静默):
|
|
260
|
+
* - feature flag signal_collector 关闭
|
|
261
|
+
* - runtimeProfile 未配置 / apiKeyEnv 缺失
|
|
262
|
+
* - profile 是 openclaw 类型(observer 不支持)
|
|
263
|
+
*
|
|
264
|
+
* 这是 Task 11 的最后一块:让本地 LLM(LMStudio)真正参与检测。
|
|
265
|
+
*/
|
|
266
|
+
export function createSignalLlmClassifierFromConfig(wctx, logger) {
|
|
267
|
+
try {
|
|
268
|
+
const cfg = resolveObserverConfig(wctx.workspaceDir, 'signal_collector', 'signalCollector', logger);
|
|
269
|
+
if (!cfg.enabled) {
|
|
270
|
+
logger?.debug?.(`[PD:Signal] LLM classifier disabled: ${cfg.reason}`);
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
if (cfg.readiness !== 'not_ready' && cfg.readiness !== 'ready') {
|
|
274
|
+
// needs_setup / disabled / config_malformed → 降级
|
|
275
|
+
logger?.debug?.(`[PD:Signal] LLM classifier not ready (${cfg.readiness}): ${cfg.reason}. ${cfg.nextAction}`);
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
if (!cfg.provider || !cfg.model || !cfg.apiKeyEnv) {
|
|
279
|
+
logger?.debug?.(`[PD:Signal] LLM classifier missing provider/model/apiKeyEnv`);
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
const adapter = new PiAiRuntimeAdapter({
|
|
283
|
+
provider: cfg.provider,
|
|
284
|
+
model: cfg.model,
|
|
285
|
+
apiKeyEnv: cfg.apiKeyEnv,
|
|
286
|
+
timeoutMs: cfg.timeoutMs ?? 30_000,
|
|
287
|
+
baseUrl: cfg.baseUrl ?? undefined,
|
|
288
|
+
workspace: wctx.workspaceDir,
|
|
289
|
+
});
|
|
290
|
+
// 包装成 SignalLlmClassifier:内部调 startRun/pollRun/fetchOutput + buildLlmPrompt + parseLlmClassification
|
|
291
|
+
const classifier = async (text, _promptTemplate) => {
|
|
292
|
+
void _promptTemplate; // 用 core 的 buildLlmPrompt(标准化的),不用外部传入
|
|
293
|
+
const prompt = buildLlmPrompt(text);
|
|
294
|
+
try {
|
|
295
|
+
const handle = await adapter.startRun({
|
|
296
|
+
agentSpec: { agentId: 'signal-collector', schemaVersion: '1' },
|
|
297
|
+
inputPayload: { prompt },
|
|
298
|
+
contextItems: [],
|
|
299
|
+
timeoutMs: cfg.timeoutMs ?? 30_000,
|
|
300
|
+
});
|
|
301
|
+
let status = await adapter.pollRun(handle.runId);
|
|
302
|
+
const deadline = Date.now() + (cfg.timeoutMs ?? 30_000);
|
|
303
|
+
while (status.status === 'running' && Date.now() < deadline) {
|
|
304
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
305
|
+
status = await adapter.pollRun(handle.runId);
|
|
306
|
+
}
|
|
307
|
+
if (status.status !== 'succeeded') {
|
|
308
|
+
SystemLogger.log(wctx.workspaceDir, 'SIGNAL_LLM_TIMEOUT', JSON.stringify({ status: status.status }));
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
const output = await adapter.fetchOutput(handle.runId);
|
|
312
|
+
const payload = output?.payload;
|
|
313
|
+
let rawOutput = '';
|
|
314
|
+
if (typeof payload === 'string') {
|
|
315
|
+
rawOutput = payload;
|
|
316
|
+
}
|
|
317
|
+
else if (typeof payload === 'object' && payload !== null && Object.hasOwn(payload, 'output')) {
|
|
318
|
+
const maybeOutput = payload.output;
|
|
319
|
+
if (typeof maybeOutput === 'string') {
|
|
320
|
+
rawOutput = maybeOutput;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
const parsed = parseLlmClassification(rawOutput);
|
|
324
|
+
return parsed.valid ? parsed.value : null;
|
|
325
|
+
}
|
|
326
|
+
catch (e) {
|
|
327
|
+
SystemLogger.log(wctx.workspaceDir, 'SIGNAL_LLM_FAILED', String(e).slice(0, 200));
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
return classifier;
|
|
332
|
+
}
|
|
333
|
+
catch (e) {
|
|
334
|
+
logger?.warn?.(`[PD:Signal] createSignalLlmClassifierFromConfig failed: ${String(e)}`);
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
@@ -11,8 +11,9 @@ export declare function resetPromptStateForTest(workspaceDir?: string): void;
|
|
|
11
11
|
* Constructs the system prompt injected into LLM context for Principles Disciple
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
14
|
-
* Loads context injection config from .
|
|
15
|
-
*
|
|
14
|
+
* Loads context injection config from .pd/config.yaml via loadPdConfigForPlugin.
|
|
15
|
+
* The resolved config is computed by the core config layer (pd-config-effective.ts),
|
|
16
|
+
* which merges user partial input with DEFAULT_CONTEXT_INJECTION defaults.
|
|
16
17
|
* @internal Used by evolution engine for context settings
|
|
17
18
|
*/
|
|
18
19
|
export declare function loadContextInjectionConfig(workspaceDir: string): ContextInjectionConfig;
|