create-principles-disciple 1.101.0 → 1.103.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/config/pd-config-store.d.ts +50 -1
- package/console/dist/server/config/pd-config-store.js +364 -1
- package/console/dist/server/index.js +9 -0
- package/console/dist/server/models/ActivationsConsoleModel.d.ts +44 -5
- package/console/dist/server/models/ActivationsConsoleModel.js +118 -16
- package/console/dist/server/routes/config.js +92 -2
- 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 +60 -3
- package/console/dist/ui/api.js +63 -2
- 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 +33 -0
- package/console/dist/ui/i18n/en.json +189 -1
- package/console/dist/ui/i18n/zh-CN.json +189 -1
- package/console/dist/ui/pages/activation/ActivationPage.js +11 -11
- package/console/dist/ui/pages/activation/ActivationValidators.js +15 -14
- package/console/dist/ui/pages/control-center/AgentCard.js +66 -10
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +3 -2
- package/console/dist/ui/pages/control-center/RuntimeProfileManager.d.ts +31 -0
- package/console/dist/ui/pages/control-center/RuntimeProfileManager.js +234 -0
- package/console/dist/ui/pages/debt/DebtPage.js +2 -2
- 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/ui/utils/validators.d.ts +26 -3
- package/console/dist/ui/utils/validators.js +23 -6
- package/console/dist/web/assets/app.css +442 -0
- package/console/dist/web/assets/app.js +7793 -1966
- 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__/architecture-regression.test.js +14 -2
- package/core/dist/runtime-v2/__tests__/architecture-regression.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__/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/__tests__/resolve-runtime-config-from-pd-config.test.js +8 -10
- package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.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 +240 -1
- 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 +81 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.d.ts +2 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.js +81 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-resolve-model-compat.test.js.map +1 -0
- package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +19 -0
- package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +8 -0
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +4 -1
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
- package/core/dist/runtime-v2/candidate-intake-service.d.ts.map +1 -1
- package/core/dist/runtime-v2/candidate-intake-service.js +92 -6
- package/core/dist/runtime-v2/candidate-intake-service.js.map +1 -1
- package/core/dist/runtime-v2/candidate-intake.d.ts +38 -0
- package/core/dist/runtime-v2/candidate-intake.d.ts.map +1 -1
- package/core/dist/runtime-v2/candidate-intake.js +48 -0
- package/core/dist/runtime-v2/candidate-intake.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 +33 -1
- 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 +10 -5
- 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 +54 -33
- 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-agent-binding.d.ts +2 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-agent-binding.js +3 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts +8 -3
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js +39 -3
- 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-redaction.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-redaction.js +14 -2
- package/core/dist/runtime-v2/config/pd-config-redaction.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts +116 -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 +125 -7
- 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/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/index.d.ts +7 -4
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +5 -2
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js +32 -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 +7 -6
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/internalization-task-guards.test.js +1 -53
- package/core/dist/runtime-v2/internalization/__tests__/internalization-task-guards.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.js +4 -4
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +5 -5
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-router-runner.js +4 -4
- 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 +0 -19
- package/core/dist/runtime-v2/internalization/internalization-task-guards.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-task-guards.js +1 -29
- package/core/dist/runtime-v2/internalization/internalization-task-guards.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +2 -0
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js +2 -0
- package/core/dist/runtime-v2/pain-signal-runtime-factory.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/schema-conformance.test.js +43 -0
- package/core/dist/runtime-v2/store/schema-conformance.test.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 +150 -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 +34 -12
- package/dist/mvp-config.js.map +1 -1
- package/package.json +1 -1
- package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js +2 -2
- package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js.map +1 -1
- package/pd-cli/dist/commands/demo-story-a.d.ts.map +1 -1
- package/pd-cli/dist/commands/demo-story-a.js +4 -2
- package/pd-cli/dist/commands/demo-story-a.js.map +1 -1
- package/pd-cli/dist/commands/proven-channel-baseline.d.ts.map +1 -1
- package/pd-cli/dist/commands/proven-channel-baseline.js +4 -2
- package/pd-cli/dist/commands/proven-channel-baseline.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 +187 -10
- package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
- package/pd-cli/dist/commands/runtime-canary.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-canary.js +4 -2
- package/pd-cli/dist/commands/runtime-canary.js.map +1 -1
- package/pd-cli/dist/commands/runtime-health-snapshot.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-health-snapshot.js +4 -2
- package/pd-cli/dist/commands/runtime-health-snapshot.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity.js +4 -2
- package/pd-cli/dist/commands/runtime-internalization-integrity.js.map +1 -1
- package/pd-cli/dist/index.js +5 -63
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/dist/services/config-doctor.d.ts.map +1 -1
- package/pd-cli/dist/services/config-doctor.js +9 -2
- package/pd-cli/dist/services/config-doctor.js.map +1 -1
- package/pd-cli/dist/services/runtime-adapter-resolver.d.ts.map +1 -1
- package/pd-cli/dist/services/runtime-adapter-resolver.js +1 -0
- package/pd-cli/dist/services/runtime-adapter-resolver.js.map +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 +50 -0
- package/plugin/dist/core/rule-host.js +116 -19
- 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/gate.js +1 -1
- package/plugin/dist/hooks/prompt.d.ts +3 -2
- package/plugin/dist/hooks/prompt.js +48 -586
- package/plugin/dist/service/evolution-dedup.d.ts +1 -1
- package/plugin/dist/service/evolution-worker.d.ts +7 -31
- package/plugin/dist/service/evolution-worker.js +17 -36
- package/plugin/dist/service/queue-io.js +14 -2
- package/plugin/dist/service/queue-migration.d.ts +27 -26
- package/plugin/dist/service/queue-migration.js +57 -0
- 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
- package/plugin/templates/langs/en/core/AGENTS.md +2 -2
- package/plugin/templates/langs/en/core/TOOLS.md +1 -1
- package/plugin/templates/langs/zh/core/AGENTS.md +2 -2
- package/plugin/templates/langs/zh/core/TOOLS.md +1 -1
- package/templates/langs/en/core/AGENTS.md +2 -2
- package/templates/langs/en/core/TOOLS.md +1 -1
- package/templates/langs/zh/core/AGENTS.md +2 -2
- package/templates/langs/zh/core/TOOLS.md +1 -1
- package/plugin/dist/constants/diagnostician.d.ts +0 -12
- package/plugin/dist/constants/diagnostician.js +0 -65
- package/plugin/dist/service/evolution-queue-migration.d.ts +0 -128
- package/plugin/dist/service/evolution-queue-migration.js +0 -53
- package/plugin/templates/langs/en/skills/pd-diagnostician/SKILL.md +0 -466
- package/plugin/templates/langs/zh/skills/pd-diagnostician/SKILL.md +0 -391
- package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +0 -287
package/console/dist/ui/App.js
CHANGED
|
@@ -8,7 +8,7 @@ import { AppSidebar } from "./components/layout/app-sidebar.js";
|
|
|
8
8
|
import { SplashScreen } from "./components/auth/splash-screen.js";
|
|
9
9
|
import { LoginForm } from "./components/auth/login-form.js";
|
|
10
10
|
import { ErrorBoundary } from "./components/error-boundary.js";
|
|
11
|
-
import { checkAuth } from "./api.js";
|
|
11
|
+
import { checkAuth, fetchConfigSummary, fetchWorkspaces } from "./api.js";
|
|
12
12
|
import { NotificationProvider } from "./components/notifications/NotificationProvider.js";
|
|
13
13
|
import { Toaster } from "./components/ui/sonner.js";
|
|
14
14
|
// New page imports (CR2 directory structure)
|
|
@@ -19,17 +19,27 @@ import { PrincipleDetailPage } from "./pages/principles/PrincipleDetailPage.js";
|
|
|
19
19
|
import { ActivationPage } from "./pages/activation/ActivationPage.js";
|
|
20
20
|
import { DebtPage } from "./pages/debt/DebtPage.js";
|
|
21
21
|
import { ControlCenterPage } from "./pages/control-center/ControlCenterPage.js";
|
|
22
|
+
import { SignalKeywordsPage } from "./pages/signal-keywords/SignalKeywordsPage.js";
|
|
22
23
|
import { SettingsPage } from "./pages/settings/SettingsPage.js";
|
|
23
24
|
import { UpdatePage } from "./pages/settings/UpdatePage.js";
|
|
24
25
|
import { ReportProblemPage } from "./pages/report-problem/ReportProblemPage.js";
|
|
25
26
|
import { IntentPage } from "./pages/intent/IntentPage.js";
|
|
26
27
|
import { DesignSystemPage } from "./pages/design-system/DesignSystemPage.js";
|
|
28
|
+
import { WelcomePage } from "./pages/welcome/WelcomePage.js";
|
|
29
|
+
import { getOnboardingState } from "./utils/onboarding-state.js";
|
|
27
30
|
// Vite replaces import.meta.env.DEV with a boolean literal at build time.
|
|
28
31
|
// The cast avoids TS2339 without needing a generated .d.ts file.
|
|
29
32
|
const IS_DEV = import.meta.env.DEV;
|
|
30
33
|
function AuthRoutes() {
|
|
31
34
|
const [authed, setAuthed] = useState(null);
|
|
32
35
|
const [showSplash, setShowSplash] = useState(true);
|
|
36
|
+
// Onboarding redirect needs workspaceId (for onboarding-state lookup) and
|
|
37
|
+
// feature flags (to gate the redirect). Both are fetched after auth.
|
|
38
|
+
const [currentWorkspaceId, setCurrentWorkspaceId] = useState("default");
|
|
39
|
+
const [featureFlags, setFeatureFlags] = useState(null);
|
|
40
|
+
// P2-C: tracks whether workspace fetch succeeded. If it failed, we skip
|
|
41
|
+
// the onboarding redirect so state isn't saved under a fake "default" key.
|
|
42
|
+
const [workspaceReady, setWorkspaceReady] = useState(false);
|
|
33
43
|
const navigate = useNavigate();
|
|
34
44
|
const verifyAuth = useCallback(async () => {
|
|
35
45
|
const valid = await checkAuth();
|
|
@@ -47,27 +57,76 @@ function AuthRoutes() {
|
|
|
47
57
|
// SplashScreen has its own 2200ms timer; we wait for it to call onComplete
|
|
48
58
|
// This effect only handles the case where auth resolves after splash is done
|
|
49
59
|
}, [authed, showSplash, navigate]);
|
|
60
|
+
// Fetch workspace list + feature flags after auth for onboarding redirect.
|
|
61
|
+
// P2-5: use Promise.all so both states update together — prevents the
|
|
62
|
+
// redirect effect from firing with the wrong workspaceId (race condition).
|
|
63
|
+
// rc-9: on fetch failure, set featureFlags to {} so the redirect effect
|
|
64
|
+
// fires (defaults to /focus — safe, no onboarding forced).
|
|
50
65
|
useEffect(() => {
|
|
51
|
-
if (authed
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
if (authed !== true)
|
|
67
|
+
return;
|
|
68
|
+
Promise.all([
|
|
69
|
+
fetchWorkspaces().catch(() => null),
|
|
70
|
+
fetchConfigSummary().catch(() => null),
|
|
71
|
+
]).then(([wsResult, cfgResult]) => {
|
|
72
|
+
// Update workspaceId first (if we have a real workspace)
|
|
73
|
+
if (wsResult &&
|
|
74
|
+
wsResult.success &&
|
|
75
|
+
Array.isArray(wsResult.data) &&
|
|
76
|
+
wsResult.data.length > 0) {
|
|
77
|
+
const firstWorkspace = wsResult.data[0];
|
|
78
|
+
if (firstWorkspace) {
|
|
79
|
+
setCurrentWorkspaceId(firstWorkspace.name);
|
|
80
|
+
// P2-C: only mark workspaceReady when we have a real workspace name.
|
|
81
|
+
setWorkspaceReady(true);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Then update featureFlags — the redirect effect waits for this.
|
|
85
|
+
// rc-9: on any failure, default to {} so redirect fires to /focus.
|
|
86
|
+
const flags = {};
|
|
87
|
+
if (cfgResult &&
|
|
88
|
+
cfgResult.success &&
|
|
89
|
+
cfgResult.data) {
|
|
90
|
+
const summary = cfgResult.data;
|
|
91
|
+
for (const f of summary.features) {
|
|
92
|
+
flags[f.id] = { enabled: f.enabled };
|
|
93
|
+
}
|
|
55
94
|
}
|
|
95
|
+
setFeatureFlags(flags);
|
|
96
|
+
});
|
|
97
|
+
}, [authed]);
|
|
98
|
+
// P1-4: After splash finishes, if user is not authenticated, go to login.
|
|
99
|
+
// (The authed === true case is handled by the redirect effect below.)
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (showSplash || authed !== false)
|
|
102
|
+
return;
|
|
103
|
+
navigate('/login', { replace: true });
|
|
104
|
+
}, [showSplash, authed, navigate]);
|
|
105
|
+
// First-visit redirect: check new_user_onboarding flag + onboarding state.
|
|
106
|
+
// P1-4: Only redirect AFTER splash is done AND featureFlags are loaded.
|
|
107
|
+
// This prevents the race where splash navigates to /focus before flags
|
|
108
|
+
// load, which would bypass the onboarding redirect entirely.
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (authed !== true || featureFlags === null || showSplash)
|
|
111
|
+
return;
|
|
112
|
+
const flagEnabled = featureFlags?.new_user_onboarding?.enabled === true;
|
|
113
|
+
// P2-C: if workspace fetch failed, don't force onboarding under "default" key.
|
|
114
|
+
if (flagEnabled && workspaceReady) {
|
|
115
|
+
const onboardingState = getOnboardingState(currentWorkspaceId);
|
|
116
|
+
navigate(onboardingState.completed ? '/focus' : '/welcome', { replace: true });
|
|
56
117
|
}
|
|
57
|
-
|
|
118
|
+
else {
|
|
119
|
+
navigate('/focus', { replace: true });
|
|
120
|
+
}
|
|
121
|
+
}, [authed, featureFlags, showSplash, currentWorkspaceId, workspaceReady, navigate]);
|
|
58
122
|
const handleAuthSuccess = useCallback(() => {
|
|
59
123
|
setAuthed(true);
|
|
60
|
-
|
|
61
|
-
|
|
124
|
+
// Post-auth redirect is handled by the authed + featureFlags effect above,
|
|
125
|
+
// which fires once feature flags have loaded.
|
|
126
|
+
}, []);
|
|
62
127
|
return (_jsxs(Routes, { children: [_jsx(Route, { path: "/splash", element: _jsx(SplashScreen, { onComplete: () => {
|
|
63
128
|
setShowSplash(false);
|
|
64
|
-
|
|
65
|
-
navigate("/focus", { replace: true });
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
navigate("/login", { replace: true });
|
|
69
|
-
}
|
|
70
|
-
} }) }), _jsx(Route, { path: "/login", element: _jsx(LoginForm, { onAuthSuccess: handleAuthSuccess }) }), _jsx(Route, { path: "/*", element: authed === null ? (_jsx("div", { className: "min-h-screen bg-paper flex items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center gap-4", children: [_jsx("div", { className: "w-8 h-8 border-2 border-gov border-t-transparent rounded-full animate-spin" }), _jsx("span", { className: "text-[12px] font-mono tracking-wider text-ink-3 uppercase", children: "Verifying Session..." })] }) })) : authed ? (_jsx(NotificationProvider, { children: _jsxs("div", { className: "min-h-screen bg-paper text-ink", children: [_jsx("a", { href: "#main-content", className: "sr-only focus:not-sr-only focus:absolute focus:z-50 focus:p-4 focus:bg-paper focus:text-ink", children: "Skip to main content" }), _jsx(AppSidebar, {}), _jsx("main", { id: "main-content", className: "ml-[256px] min-h-screen overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsxs(Routes, { children: [_jsx(Route, { path: "/", element: _jsx(Navigate, { to: "/focus", replace: true }) }), _jsx(Route, { path: "/focus", element: _jsx(FocusPage, {}) }), _jsx(Route, { path: "/pain", element: _jsx(PainPage, {}) }), _jsx(Route, { path: "/principles", element: _jsx(PrinciplesPage, {}) }), _jsx(Route, { path: "/principles/:id", element: _jsx(PrincipleDetailPage, {}) }), _jsx(Route, { path: "/activation", element: _jsx(ActivationPage, {}) }), _jsx(Route, { path: "/debt", element: _jsx(DebtPage, {}) }), _jsx(Route, { path: "/control-center", element: _jsx(ControlCenterPage, {}) }), _jsx(Route, { path: "/settings", element: _jsx(SettingsPage, {}) }), _jsx(Route, { path: "/update", element: _jsx(UpdatePage, {}) }), _jsx(Route, { path: "/report-problem", element: _jsx(ReportProblemPage, {}) }), _jsx(Route, { path: "/intent", element: _jsx(IntentPage, {}) }), IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(DesignSystemPage, {}) })), !IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(Navigate, { to: "/focus", replace: true }) }))] }) }) })] }) })) : (_jsx(Navigate, { to: "/login", replace: true })) })] }));
|
|
129
|
+
} }) }), _jsx(Route, { path: "/login", element: _jsx(LoginForm, { onAuthSuccess: handleAuthSuccess }) }), _jsx(Route, { path: "/*", element: authed === null ? (_jsx("div", { className: "min-h-screen bg-paper flex items-center justify-center", children: _jsxs("div", { className: "flex flex-col items-center gap-4", children: [_jsx("div", { className: "w-8 h-8 border-2 border-gov border-t-transparent rounded-full animate-spin" }), _jsx("span", { className: "text-[12px] font-mono tracking-wider text-ink-3 uppercase", children: "Verifying Session..." })] }) })) : authed ? (_jsx(NotificationProvider, { children: _jsxs("div", { className: "min-h-screen bg-paper text-ink", children: [_jsx("a", { href: "#main-content", className: "sr-only focus:not-sr-only focus:absolute focus:z-50 focus:p-4 focus:bg-paper focus:text-ink", children: "Skip to main content" }), _jsx(AppSidebar, {}), _jsx("main", { id: "main-content", className: "ml-[256px] min-h-screen overflow-y-auto", children: _jsx(ErrorBoundary, { children: _jsxs(Routes, { children: [_jsx(Route, { path: "/", element: _jsx(Navigate, { to: "/focus", replace: true }) }), _jsx(Route, { path: "/welcome", element: _jsx(WelcomePage, { workspaceId: currentWorkspaceId }) }), _jsx(Route, { path: "/focus", element: _jsx(FocusPage, {}) }), _jsx(Route, { path: "/pain", element: _jsx(PainPage, {}) }), _jsx(Route, { path: "/principles", element: _jsx(PrinciplesPage, {}) }), _jsx(Route, { path: "/principles/:id", element: _jsx(PrincipleDetailPage, {}) }), _jsx(Route, { path: "/activation", element: _jsx(ActivationPage, {}) }), _jsx(Route, { path: "/debt", element: _jsx(DebtPage, {}) }), _jsx(Route, { path: "/control-center", element: _jsx(ControlCenterPage, {}) }), _jsx(Route, { path: "/control-center/signal-keywords", element: _jsx(SignalKeywordsPage, {}) }), _jsx(Route, { path: "/settings", element: _jsx(SettingsPage, {}) }), _jsx(Route, { path: "/update", element: _jsx(UpdatePage, {}) }), _jsx(Route, { path: "/report-problem", element: _jsx(ReportProblemPage, {}) }), _jsx(Route, { path: "/intent", element: _jsx(IntentPage, {}) }), IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(DesignSystemPage, {}) })), !IS_DEV && (_jsx(Route, { path: "/design-system", element: _jsx(Navigate, { to: "/focus", replace: true }) }))] }) }) })] }) })) : (_jsx(Navigate, { to: "/login", replace: true })) })] }));
|
|
71
130
|
}
|
|
72
131
|
export function App() {
|
|
73
132
|
return (_jsx(ThemeProvider, { children: _jsxs(I18nextProvider, { i18n: i18n, children: [_jsx(HashRouter, { children: _jsx(AuthRoutes, {}) }), _jsx(Toaster, {})] }) }));
|
package/console/dist/ui/api.d.ts
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import type { ApiResponse } from "../types.js";
|
|
2
|
-
import
|
|
2
|
+
import { listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm } from "./utils/signal-keywords-api.js";
|
|
3
|
+
import type { FeedbackReportData, FeedbackDraftSummaryData, FeedbackDraftEnvelopeData, DeleteEnvelopeData, WorkspaceEntryData, RemovedEnvelopeData, SyncResultData, ConfigSummaryData, ConfigCatalogData, AgentBindingUpdateData, DefaultRuntimeUpdateData, RuntimeProfileMutationData, ReadinessCheckData, FeatureFlagUpdateData, OutputLanguageData, GovernanceQueueData, ActivationsData, DisableActivationData, LifecycleMetricsData, UpdateStatusData, UpdateHistoryData, ApplyUpdateResultData, RollbackResultData, ApprovalRecordData, PrinciplesListData, ApprovalsGroupedData, EvidenceChainData, TrajectoryData, IntentSummaryData, IntentDecisionRecordData, IntentDecisionResultData, IntentDecisionSummaryData, FollowUpResponseData, IntentInitResultData, IntentSaveResultData, IntentRawContentData, IntentVersionData } from "./utils/validators.js";
|
|
3
4
|
declare function getToken(): string | null;
|
|
4
5
|
declare function setToken(token: string): void;
|
|
5
6
|
declare function clearToken(): void;
|
|
7
|
+
/**
|
|
8
|
+
* Send an authenticated request to the Console API.
|
|
9
|
+
*
|
|
10
|
+
* Two overloads:
|
|
11
|
+
* 1. request(path, options?) → ApiResponse<unknown>
|
|
12
|
+
* For endpoints without a runtime validator (health checks, etc.).
|
|
13
|
+
* The caller receives unvalidated data and must not assume a specific shape.
|
|
14
|
+
*
|
|
15
|
+
* 2. request<T>(path, options, validate) → ApiResponse<T>
|
|
16
|
+
* For endpoints with a runtime validator. The validator is applied to the
|
|
17
|
+
* raw response; if validation fails, returns an error envelope instead.
|
|
18
|
+
*/
|
|
19
|
+
declare function request(path: string, options?: RequestInit): Promise<ApiResponse<unknown>>;
|
|
20
|
+
declare function request<T>(path: string, options: RequestInit | undefined, validate: (value: unknown) => T | null): Promise<ApiResponse<T>>;
|
|
6
21
|
declare function checkAuth(): Promise<boolean>;
|
|
7
22
|
declare function fetchWorkspaces(): Promise<ApiResponse<WorkspaceEntryData[]>>;
|
|
8
23
|
declare function addWorkspace(name: string, path: string): Promise<ApiResponse<WorkspaceEntryData>>;
|
|
@@ -26,6 +41,47 @@ declare function fetchConfigSummary(): Promise<ApiResponse<ConfigSummaryData>>;
|
|
|
26
41
|
declare function fetchConfigCatalog(): Promise<ApiResponse<ConfigCatalogData>>;
|
|
27
42
|
declare function updateAgentBinding(agentName: string, runtimeProfile: string, enabled: boolean): Promise<ApiResponse<AgentBindingUpdateData>>;
|
|
28
43
|
declare function updateDefaultRuntime(defaultRuntime: string): Promise<ApiResponse<DefaultRuntimeUpdateData>>;
|
|
44
|
+
/**
|
|
45
|
+
* Create a new runtime profile.
|
|
46
|
+
*
|
|
47
|
+
* Body shape: `{ id: string, profile: { type, provider?, model?, ... } }`.
|
|
48
|
+
* Server validates per-type requirements (pi-ai needs provider/model/apiKeyEnv)
|
|
49
|
+
* and returns 400 with a message on validation failure. The server response is
|
|
50
|
+
* `{ profileId, profile }`; we validate the contract fields and rely on the
|
|
51
|
+
* caller to re-fetch the catalog for display.
|
|
52
|
+
*
|
|
53
|
+
* rc-9: server-side validation errors surface as `result.error` (no silent
|
|
54
|
+
* fallback) — the request() helper extracts the message from the error envelope.
|
|
55
|
+
*/
|
|
56
|
+
declare function createRuntimeProfile(id: string, profile: Record<string, unknown>): Promise<ApiResponse<RuntimeProfileMutationData>>;
|
|
57
|
+
/**
|
|
58
|
+
* Update an existing runtime profile (partial patch).
|
|
59
|
+
*
|
|
60
|
+
* Body shape: a partial profile object (e.g. `{ model: 'new-model' }`).
|
|
61
|
+
* The server rejects type changes with 400; other fields are merged.
|
|
62
|
+
*/
|
|
63
|
+
declare function updateRuntimeProfile(profileId: string, patch: Record<string, unknown>): Promise<ApiResponse<RuntimeProfileMutationData>>;
|
|
64
|
+
/**
|
|
65
|
+
* Delete a runtime profile.
|
|
66
|
+
*
|
|
67
|
+
* The server rejects deletion with 400 when the profile is the defaultRuntime
|
|
68
|
+
* or is referenced by any agent (error message lists the agent names). The
|
|
69
|
+
* caller must surface this error to the user (rc-9: no silent fallback).
|
|
70
|
+
*/
|
|
71
|
+
declare function deleteRuntimeProfile(profileId: string): Promise<ApiResponse<RuntimeProfileMutationData>>;
|
|
72
|
+
/**
|
|
73
|
+
* Fetch dynamic readiness for a single agent (GET /api/v1/config/readiness/:name).
|
|
74
|
+
*
|
|
75
|
+
* The summary/catalog endpoints return a static, pessimistic readiness that
|
|
76
|
+
* doesn't probe the actual provider. This endpoint performs a live check
|
|
77
|
+
* (e.g. testing whether the API key env var is set and the provider responds).
|
|
78
|
+
*
|
|
79
|
+
* Used by AgentCard when L2 is expanded and the static readiness is 'unknown'
|
|
80
|
+
* — the pessimistic value is replaced with the live result. On failure the
|
|
81
|
+
* caller falls back to the static value (rc-9: the error is surfaced via the
|
|
82
|
+
* ApiResponse error envelope, not silently swallowed).
|
|
83
|
+
*/
|
|
84
|
+
declare function fetchAgentReadiness(agentName: string): Promise<ApiResponse<ReadinessCheckData>>;
|
|
29
85
|
declare function patchFeatureFlag(featureName: string, enabled: boolean): Promise<ApiResponse<FeatureFlagUpdateData>>;
|
|
30
86
|
declare function fetchOutputLanguage(): Promise<ApiResponse<OutputLanguageData>>;
|
|
31
87
|
declare function updateOutputLanguage(outputLanguage: string): Promise<ApiResponse<OutputLanguageData>>;
|
|
@@ -91,8 +147,9 @@ export interface FollowUpPayload {
|
|
|
91
147
|
candidateId?: string;
|
|
92
148
|
}
|
|
93
149
|
declare function dispatchFollowUp(decisionId: string, payload: FollowUpPayload): Promise<ApiResponse<FollowUpResponseData>>;
|
|
94
|
-
export { getToken, setToken, clearToken, checkAuth, approveApproval, rejectApproval, editApproval, fetchPrinciples, fetchPrincipleDetail, fetchPrincipleTrajectory, archivePrinciple, unarchivePrinciple, createFeedbackReport, listFeedbackReports, getFeedbackReport, deleteFeedbackReport, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
|
|
95
|
-
export type { FeedbackReportData, FeedbackDraftSummaryData, FeedbackDraftEnvelopeData, DeleteEnvelopeData, WorkspaceEntryData, RemovedEnvelopeData, SyncResultData, ConfigSummaryData, ConfigCatalogData, AgentBindingUpdateData, DefaultRuntimeUpdateData, FeatureFlagUpdateData, OutputLanguageData, GovernanceQueueData, ActivationsData, DisableActivationData, LifecycleMetricsData, UpdateStatusData, UpdateHistoryData, ApplyUpdateResultData, RollbackResultData, ApprovalRecordData, PrinciplesListData, ApprovalsGroupedData, EvidenceChainData, EvidenceChainRecordData, EvidenceChainStateData, TrajectoryData, TrajectoryStageData, IntentSummaryData, IntentSectionsData, IntentDocWarningData, IntentDecisionRecordData, IntentDecisionResultData, IntentDecisionSummaryData, FollowUpResponseData, LinkCandidateFollowUpData, GuideRulehostFollowUpData, GeneratePatchProposalFollowUpData, IntentVersionEntry, IntentVersionData, } from "./utils/validators.js";
|
|
150
|
+
export { request, listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm, getToken, setToken, clearToken, checkAuth, approveApproval, rejectApproval, editApproval, fetchPrinciples, fetchPrincipleDetail, fetchPrincipleTrajectory, archivePrinciple, unarchivePrinciple, createFeedbackReport, listFeedbackReports, getFeedbackReport, deleteFeedbackReport, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, createRuntimeProfile, updateRuntimeProfile, deleteRuntimeProfile, fetchAgentReadiness, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
|
|
151
|
+
export type { FeedbackReportData, FeedbackDraftSummaryData, FeedbackDraftEnvelopeData, DeleteEnvelopeData, WorkspaceEntryData, RemovedEnvelopeData, SyncResultData, ConfigSummaryData, ConfigCatalogData, AgentBindingUpdateData, DefaultRuntimeUpdateData, RuntimeProfileMutationData, ReadinessCheckData, FeatureFlagUpdateData, OutputLanguageData, GovernanceQueueData, ActivationsData, DisableActivationData, LifecycleMetricsData, UpdateStatusData, UpdateHistoryData, ApplyUpdateResultData, RollbackResultData, ApprovalRecordData, PrinciplesListData, ApprovalsGroupedData, EvidenceChainData, EvidenceChainRecordData, EvidenceChainStateData, TrajectoryData, TrajectoryStageData, IntentSummaryData, IntentSectionsData, IntentDocWarningData, IntentDecisionRecordData, IntentDecisionResultData, IntentDecisionSummaryData, FollowUpResponseData, LinkCandidateFollowUpData, GuideRulehostFollowUpData, GeneratePatchProposalFollowUpData, IntentVersionEntry, IntentVersionData, } from "./utils/validators.js";
|
|
152
|
+
export type { SignalKeyword, PendingSignalTerm } from "./utils/signal-keywords-types.js";
|
|
96
153
|
export type { ActivationRecordData as ActivationRecord } from "./utils/validators.js";
|
|
97
154
|
export type { ApprovalRecordData as ApprovalRecord } from "./utils/validators.js";
|
|
98
155
|
export type { WorkspaceEntryData as WorkspaceEntry } from "./utils/validators.js";
|
package/console/dist/ui/api.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm, } from "./utils/signal-keywords-api.js";
|
|
2
|
+
import { validateErrorResponse, validateHeaders, validateFeedbackReport, validateFeedbackDraftsList, validateFeedbackDraftEnvelope, validateDeleteEnvelope, validateWorkspaceEntry, validateWorkspaceList, validateRemovedEnvelope, validateSyncResult, validateConfigSummary, validateConfigCatalog, validateAgentBindingUpdate, validateDefaultRuntimeUpdate, validateRuntimeProfileMutation, validateReadinessCheck, validateFeatureFlagUpdate, validateOutputLanguage, validateGovernanceQueue, validateActivations, validateDisableActivation, validateLifecycleMetrics, validateUpdateStatus, validateUpdateHistory, validateApplyUpdateResult, validateRollbackResult, validateApprovalRecordDirect, validatePrinciplesList, validateApprovalsGrouped, validateEvidenceChain, validateTrajectoryData, validateIntentSummary, validateIntentDecisionList, validateIntentDecisionResult, validateIntentDecisionSummary, validateFollowUpResponse, validateIntentInitResult, validateIntentSaveResult, validateIntentRawContent, validateIntentVersions, } from "./utils/validators.js";
|
|
2
3
|
// ── Auth ──────────────────────────────────────────────────────────────────────
|
|
3
4
|
function getToken() {
|
|
4
5
|
return sessionStorage.getItem("pd_token");
|
|
@@ -194,6 +195,62 @@ async function updateDefaultRuntime(defaultRuntime) {
|
|
|
194
195
|
body: JSON.stringify({ defaultRuntime }),
|
|
195
196
|
}, validateDefaultRuntimeUpdate);
|
|
196
197
|
}
|
|
198
|
+
// ── Runtime Profile CRUD (POST/PATCH/DELETE /api/v1/config/profiles) ──────────
|
|
199
|
+
/**
|
|
200
|
+
* Create a new runtime profile.
|
|
201
|
+
*
|
|
202
|
+
* Body shape: `{ id: string, profile: { type, provider?, model?, ... } }`.
|
|
203
|
+
* Server validates per-type requirements (pi-ai needs provider/model/apiKeyEnv)
|
|
204
|
+
* and returns 400 with a message on validation failure. The server response is
|
|
205
|
+
* `{ profileId, profile }`; we validate the contract fields and rely on the
|
|
206
|
+
* caller to re-fetch the catalog for display.
|
|
207
|
+
*
|
|
208
|
+
* rc-9: server-side validation errors surface as `result.error` (no silent
|
|
209
|
+
* fallback) — the request() helper extracts the message from the error envelope.
|
|
210
|
+
*/
|
|
211
|
+
async function createRuntimeProfile(id, profile) {
|
|
212
|
+
return request('/api/v1/config/profiles', {
|
|
213
|
+
method: 'POST',
|
|
214
|
+
body: JSON.stringify({ id, profile }),
|
|
215
|
+
}, validateRuntimeProfileMutation);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Update an existing runtime profile (partial patch).
|
|
219
|
+
*
|
|
220
|
+
* Body shape: a partial profile object (e.g. `{ model: 'new-model' }`).
|
|
221
|
+
* The server rejects type changes with 400; other fields are merged.
|
|
222
|
+
*/
|
|
223
|
+
async function updateRuntimeProfile(profileId, patch) {
|
|
224
|
+
return request(`/api/v1/config/profiles/${encodeURIComponent(profileId)}`, {
|
|
225
|
+
method: 'PATCH',
|
|
226
|
+
body: JSON.stringify(patch),
|
|
227
|
+
}, validateRuntimeProfileMutation);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Delete a runtime profile.
|
|
231
|
+
*
|
|
232
|
+
* The server rejects deletion with 400 when the profile is the defaultRuntime
|
|
233
|
+
* or is referenced by any agent (error message lists the agent names). The
|
|
234
|
+
* caller must surface this error to the user (rc-9: no silent fallback).
|
|
235
|
+
*/
|
|
236
|
+
async function deleteRuntimeProfile(profileId) {
|
|
237
|
+
return request(`/api/v1/config/profiles/${encodeURIComponent(profileId)}`, { method: 'DELETE' }, validateRuntimeProfileMutation);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Fetch dynamic readiness for a single agent (GET /api/v1/config/readiness/:name).
|
|
241
|
+
*
|
|
242
|
+
* The summary/catalog endpoints return a static, pessimistic readiness that
|
|
243
|
+
* doesn't probe the actual provider. This endpoint performs a live check
|
|
244
|
+
* (e.g. testing whether the API key env var is set and the provider responds).
|
|
245
|
+
*
|
|
246
|
+
* Used by AgentCard when L2 is expanded and the static readiness is 'unknown'
|
|
247
|
+
* — the pessimistic value is replaced with the live result. On failure the
|
|
248
|
+
* caller falls back to the static value (rc-9: the error is surfaced via the
|
|
249
|
+
* ApiResponse error envelope, not silently swallowed).
|
|
250
|
+
*/
|
|
251
|
+
async function fetchAgentReadiness(agentName) {
|
|
252
|
+
return request(`/api/v1/config/readiness/${encodeURIComponent(agentName)}`, undefined, validateReadinessCheck);
|
|
253
|
+
}
|
|
197
254
|
// ── Feature Flag Toggle (spec 2026-06-27 §13.5) ─────────────────────────────
|
|
198
255
|
async function patchFeatureFlag(featureName, enabled) {
|
|
199
256
|
return request(`/api/v1/config/features/${encodeURIComponent(featureName)}`, {
|
|
@@ -308,4 +365,8 @@ async function dispatchFollowUp(decisionId, payload) {
|
|
|
308
365
|
}, validateFollowUpResponse);
|
|
309
366
|
}
|
|
310
367
|
// ── Exports ───────────────────────────────────────────────────────────────────
|
|
311
|
-
export {
|
|
368
|
+
export { request,
|
|
369
|
+
// signal-keywords (UI stubs, see signal-keywords-api.ts)
|
|
370
|
+
listActiveSignalKeywords, listPendingSignalTerms, fetchKeywordStore, fetchPendingTerms, updateKeywordStore, admitPendingTerm, rejectPendingTerm,
|
|
371
|
+
// auth
|
|
372
|
+
getToken, setToken, clearToken, checkAuth, approveApproval, rejectApproval, editApproval, fetchPrinciples, fetchPrincipleDetail, fetchPrincipleTrajectory, archivePrinciple, unarchivePrinciple, createFeedbackReport, listFeedbackReports, getFeedbackReport, deleteFeedbackReport, fetchConfigSummary, fetchConfigCatalog, updateAgentBinding, updateDefaultRuntime, createRuntimeProfile, updateRuntimeProfile, deleteRuntimeProfile, fetchAgentReadiness, patchFeatureFlag, fetchOutputLanguage, updateOutputLanguage, fetchWorkspaces, addWorkspace, removeWorkspace, syncWorkspace, fetchGovernanceQueue, fetchApprovalsGrouped, fetchAllActivations, disableActivation, fetchLifecycleMetrics, fetchUpdateStatus, fetchUpdateHistory, applyUpdate, rollbackUpdate, fetchEvidenceChain, fetchIntentSummary, fetchIntentContent, createIntentTemplate, saveIntentContent, fetchIntentVersions, recordIntentDecision, listIntentDecisionsByPainId, listIntentDecisionsByTaskId, fetchIntentDecisionSummary, dispatchFollowUp, };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface CircuitDiagramProps {
|
|
2
|
+
/** Highlight a specific node (evidence/principle/ownerGate/behavior) */
|
|
3
|
+
highlightNode?: 'evidence' | 'principle' | 'ownerGate' | 'behavior' | null;
|
|
4
|
+
/** Compact mode for smaller spaces */
|
|
5
|
+
compact?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function CircuitDiagram({ highlightNode, compact }: CircuitDiagramProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
const NODES = [
|
|
4
|
+
{ id: 'evidence', labelKey: 'pages.welcome.step1.circuitNodes.evidence', cx: 80, cy: 80 },
|
|
5
|
+
{ id: 'principle', labelKey: 'pages.welcome.step1.circuitNodes.principle', cx: 240, cy: 80 },
|
|
6
|
+
{ id: 'ownerGate', labelKey: 'pages.welcome.step1.circuitNodes.ownerGate', cx: 240, cy: 180 },
|
|
7
|
+
{ id: 'behavior', labelKey: 'pages.welcome.step1.circuitNodes.behavior', cx: 80, cy: 180 },
|
|
8
|
+
];
|
|
9
|
+
export function CircuitDiagram({ highlightNode = null, compact = false }) {
|
|
10
|
+
const { t } = useTranslation();
|
|
11
|
+
const size = compact ? 240 : 320;
|
|
12
|
+
const nodeRadius = compact ? 28 : 36;
|
|
13
|
+
return (_jsx("div", { className: "circuit-diagram", role: "img", "aria-label": t('pages.welcome.step1.circuitLabel'), children: _jsxs("svg", { width: size, height: size * 0.75, viewBox: "0 0 320 240", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("line", { x1: NODES[0].cx, y1: NODES[0].cy, x2: NODES[1].cx, y2: NODES[1].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("line", { x1: NODES[1].cx, y1: NODES[1].cy, x2: NODES[2].cx, y2: NODES[2].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("line", { x1: NODES[2].cx, y1: NODES[2].cy, x2: NODES[3].cx, y2: NODES[3].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("line", { x1: NODES[3].cx, y1: NODES[3].cy, x2: NODES[0].cx, y2: NODES[0].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("polygon", { points: `${NODES[1].cx - 8},${NODES[1].cy - 4} ${NODES[1].cx - 8},${NODES[1].cy + 4} ${NODES[1].cx},${NODES[1].cy}`, fill: "var(--color-gov)" }), _jsx("polygon", { points: `${NODES[2].cx + 4},${NODES[2].cy - 8} ${NODES[2].cx - 4},${NODES[2].cy - 8} ${NODES[2].cx},${NODES[2].cy}`, fill: "var(--color-gov)" }), _jsx("polygon", { points: `${NODES[3].cx + 8},${NODES[3].cy - 4} ${NODES[3].cx + 8},${NODES[3].cy + 4} ${NODES[3].cx},${NODES[3].cy}`, fill: "var(--color-gov)" }), _jsx("polygon", { points: `${NODES[0].cx - 4},${NODES[0].cy + 8} ${NODES[0].cx + 4},${NODES[0].cy + 8} ${NODES[0].cx},${NODES[0].cy}`, fill: "var(--color-gov)" }), NODES.map((node) => {
|
|
14
|
+
const isHighlighted = highlightNode === node.id;
|
|
15
|
+
const isOwnerGate = node.id === 'ownerGate';
|
|
16
|
+
return (_jsxs("g", { children: [_jsx("circle", { cx: node.cx, cy: node.cy, r: nodeRadius, fill: isHighlighted ? 'var(--color-gov)' : 'var(--color-surface)', stroke: isOwnerGate ? 'var(--color-gov)' : 'var(--color-border)', strokeWidth: isOwnerGate ? 2.5 : 1.5 }), _jsx("text", { x: node.cx, y: node.cy, textAnchor: "middle", dominantBaseline: "middle", fontSize: compact ? 9 : 11, fill: isHighlighted ? 'white' : 'var(--color-ink)', fontFamily: "var(--font-sans)", children: t(node.labelKey) })] }, node.id));
|
|
17
|
+
})] }) }));
|
|
18
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface DemoStage {
|
|
2
|
+
name: string;
|
|
3
|
+
status: 'passed' | 'failed' | 'degraded' | 'skipped';
|
|
4
|
+
reason?: string;
|
|
5
|
+
nextAction?: string;
|
|
6
|
+
evidenceRef?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DemoResultData {
|
|
9
|
+
status: string;
|
|
10
|
+
generatedAt?: string;
|
|
11
|
+
narrative?: string;
|
|
12
|
+
storyDescription?: string;
|
|
13
|
+
stages?: DemoStage[];
|
|
14
|
+
simulated?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface DemoResultViewProps {
|
|
17
|
+
result: DemoResultData | null;
|
|
18
|
+
loading: boolean;
|
|
19
|
+
error: string | null;
|
|
20
|
+
}
|
|
21
|
+
export declare function DemoResultView({ result, loading, error }: DemoResultViewProps): import("react/jsx-runtime").JSX.Element | null;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
/**
|
|
4
|
+
* Map backend demo stage identifiers (snake_case English, stable contract
|
|
5
|
+
* from demo-story-a-runner.ts) to localized labels. Falls back to the raw
|
|
6
|
+
* name if no mapping exists, so new stages still render (rc-9: no silent
|
|
7
|
+
* failure) but future stages should be added here.
|
|
8
|
+
*/
|
|
9
|
+
const STAGE_LABEL_KEYS = {
|
|
10
|
+
evidence_seed: 'pages.welcome.step2.stages.evidenceSeed',
|
|
11
|
+
principle_proposal: 'pages.welcome.step2.stages.principleProposal',
|
|
12
|
+
owner_review: 'pages.welcome.step2.stages.ownerReview',
|
|
13
|
+
activation: 'pages.welcome.step2.stages.activation',
|
|
14
|
+
follow_up_observation: 'pages.welcome.step2.stages.followUpObservation',
|
|
15
|
+
rollback_proof: 'pages.welcome.step2.stages.rollbackProof',
|
|
16
|
+
};
|
|
17
|
+
function localizeStageName(rawName, t) {
|
|
18
|
+
const key = STAGE_LABEL_KEYS[rawName];
|
|
19
|
+
return key ? t(key) : rawName;
|
|
20
|
+
}
|
|
21
|
+
export function DemoResultView({ result, loading, error }) {
|
|
22
|
+
const { t } = useTranslation();
|
|
23
|
+
if (loading) {
|
|
24
|
+
return (_jsx("div", { className: "demo-result-view demo-loading", role: "status", "aria-live": "polite", children: _jsx("span", { className: "demo-status-text", children: t('pages.welcome.step2.demoRunning') }) }));
|
|
25
|
+
}
|
|
26
|
+
if (error) {
|
|
27
|
+
return (_jsxs("div", { className: "demo-result-view demo-error", role: "alert", children: [_jsx("span", { className: "demo-status-text", children: t('pages.welcome.step2.demoFailed') }), _jsx("p", { className: "demo-error-detail", children: error })] }));
|
|
28
|
+
}
|
|
29
|
+
if (!result) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return (_jsxs("div", { className: "demo-result-view", role: "region", "aria-label": t('pages.welcome.step2.demoComplete'), children: [result.simulated && (_jsx("div", { className: "demo-simulated-banner", role: "note", children: t('pages.welcome.step2.demoSimulatedNote') })), result.stages && result.stages.length > 0 && (_jsx("ol", { className: "demo-stages", children: result.stages.map((stage, idx) => (_jsxs("li", { className: `demo-stage demo-stage-${stage.status}`, children: [_jsx("span", { className: "demo-stage-name", children: localizeStageName(stage.name, t) }), stage.reason && _jsx("span", { className: "demo-stage-detail", children: stage.reason })] }, idx))) })), _jsxs("div", { className: "demo-labels", children: [_jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.evidenceLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.candidateLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.ownerGateLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.activationLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.rollbackLabel') }) })] })] }));
|
|
33
|
+
}
|
|
@@ -697,8 +697,116 @@
|
|
|
697
697
|
},
|
|
698
698
|
"techDetail": "Technical Details",
|
|
699
699
|
"profileLabelShort": "Runtime",
|
|
700
|
+
"manageProfiles": "Manage Profiles",
|
|
701
|
+
"readinessChecking": "Checking readiness…",
|
|
700
702
|
"unknownAgentsWarning": "Detected {{count}} unrecognized agent(s): {{names}}. They are not shown in groups.",
|
|
701
|
-
"footerNote": "9 agents are distributed across the internalization pipeline and sidechain services. The Core Trio must be enabled together — otherwise PD cannot turn errors into principles."
|
|
703
|
+
"footerNote": "9 agents are distributed across the internalization pipeline and sidechain services. The Core Trio must be enabled together — otherwise PD cannot turn errors into principles.",
|
|
704
|
+
"profiles": {
|
|
705
|
+
"sectionTitle": "Runtime Profile Management",
|
|
706
|
+
"sectionDescription": "Create, edit, and delete runtime profiles. Profiles referenced by an agent or set as default cannot be deleted.",
|
|
707
|
+
"createButton": "Create Profile",
|
|
708
|
+
"editButton": "Edit",
|
|
709
|
+
"deleteButton": "Delete",
|
|
710
|
+
"cancelButton": "Cancel",
|
|
711
|
+
"saveButton": "Save",
|
|
712
|
+
"creating": "Creating…",
|
|
713
|
+
"saving": "Saving…",
|
|
714
|
+
"deleting": "Deleting…",
|
|
715
|
+
"empty": "No runtime profiles yet.",
|
|
716
|
+
"columnId": "ID",
|
|
717
|
+
"columnType": "Type",
|
|
718
|
+
"columnProvider": "Provider",
|
|
719
|
+
"columnModel": "Model",
|
|
720
|
+
"columnApiKeyEnv": "API Key Env Var",
|
|
721
|
+
"columnReadiness": "Readiness",
|
|
722
|
+
"columnActions": "Actions",
|
|
723
|
+
"formTitleCreate": "Create Runtime Profile",
|
|
724
|
+
"formTitleEdit": "Edit Profile: {{id}}",
|
|
725
|
+
"fieldId": "Profile ID",
|
|
726
|
+
"fieldIdHint": "Unique identifier, cannot be changed after creation (e.g. anthropic-cloud)",
|
|
727
|
+
"fieldIdPlaceholder": "my-profile",
|
|
728
|
+
"fieldType": "Type",
|
|
729
|
+
"fieldProvider": "Provider",
|
|
730
|
+
"fieldProviderPlaceholder": "anthropic",
|
|
731
|
+
"fieldModel": "Model",
|
|
732
|
+
"fieldModelPlaceholder": "claude-sonnet-4",
|
|
733
|
+
"fieldApiKeyEnv": "API Key Env Var Name",
|
|
734
|
+
"fieldApiKeyEnvHint": "Environment variable name, not the key value (e.g. ANTHROPIC_API_KEY)",
|
|
735
|
+
"fieldApiKeyEnvPlaceholder": "ANTHROPIC_API_KEY",
|
|
736
|
+
"fieldBaseUrl": "Base URL (optional)",
|
|
737
|
+
"fieldBaseUrlPlaceholder": "https://api.anthropic.com",
|
|
738
|
+
"fieldSource": "Source (optional)",
|
|
739
|
+
"fieldSourcePlaceholder": "default",
|
|
740
|
+
"typeOpenclaw": "openclaw",
|
|
741
|
+
"typePiAi": "pi-ai",
|
|
742
|
+
"validationIdRequired": "Profile ID is required",
|
|
743
|
+
"validationProviderRequired": "pi-ai profile requires provider",
|
|
744
|
+
"validationModelRequired": "pi-ai profile requires model",
|
|
745
|
+
"validationApiKeyEnvRequired": "pi-ai profile requires apiKeyEnv",
|
|
746
|
+
"deleteConfirmTitle": "Confirm Delete",
|
|
747
|
+
"deleteConfirmMessage": "Delete profile \"{{id}}\"? This action cannot be undone.",
|
|
748
|
+
"deleteConfirmAck": "Confirm Delete",
|
|
749
|
+
"deleteConfirmCancel": "Cancel",
|
|
750
|
+
"createSuccess": "Profile created",
|
|
751
|
+
"updateSuccess": "Profile updated",
|
|
752
|
+
"deleteSuccess": "Profile deleted",
|
|
753
|
+
"operationFailed": "Operation failed"
|
|
754
|
+
}
|
|
755
|
+
},
|
|
756
|
+
"signalKeywords": {
|
|
757
|
+
"title": "Signal Keywords",
|
|
758
|
+
"subtitle": "Manage signal keywords for agents — when the signal collector detects these keywords, it triggers deep analysis.",
|
|
759
|
+
"empty": "No signal keywords yet",
|
|
760
|
+
"loadError": "Failed to load signal keywords",
|
|
761
|
+
"saveError": "Failed to save",
|
|
762
|
+
"saving": "Saving…",
|
|
763
|
+
"searchPlaceholder": "Search keywords…",
|
|
764
|
+
"filterAll": "All",
|
|
765
|
+
"filterActive": "Active",
|
|
766
|
+
"filterArchived": "Archived",
|
|
767
|
+
"active": "Active",
|
|
768
|
+
"archived": "Archived",
|
|
769
|
+
"confirmDeleteTitle": "Confirm delete keyword",
|
|
770
|
+
"confirmDeleteMessage": "Are you sure you want to delete \"{{term}}\"? This action cannot be undone.",
|
|
771
|
+
"confirmDeleteAck": "Confirm delete",
|
|
772
|
+
"confirmDeleteCancel": "Cancel",
|
|
773
|
+
"deleteSuccess": "Deleted",
|
|
774
|
+
"archiveSuccess": "Archived",
|
|
775
|
+
"unarchiveSuccess": "Restored",
|
|
776
|
+
"phase2Tooltip": "This feature will be enabled in a future version",
|
|
777
|
+
"colTerm": "Term",
|
|
778
|
+
"colCategory": "Category",
|
|
779
|
+
"colPrecision": "Precision",
|
|
780
|
+
"colWeight": "Weight",
|
|
781
|
+
"colReason": "Reason",
|
|
782
|
+
"colActions": "Actions",
|
|
783
|
+
"categoryCorrection": "Correction",
|
|
784
|
+
"categoryEmpathy": "Empathy",
|
|
785
|
+
"precisionHigh": "High",
|
|
786
|
+
"precisionAmbiguous": "Ambiguous",
|
|
787
|
+
"nTerms": "{{count}} terms",
|
|
788
|
+
"selectedNOfTotal": "Selected {{selected}} of {{total}}",
|
|
789
|
+
"nTermsPendingReview": "{{count}} terms pending review",
|
|
790
|
+
"weightLabel": "Weight: {{percent}}%",
|
|
791
|
+
"addKeyword": "Add Keyword",
|
|
792
|
+
"addKeywordDialogTitle": "Add Signal Keyword",
|
|
793
|
+
"submitAdd": "Add",
|
|
794
|
+
"noSearchResults": "No matching keywords",
|
|
795
|
+
"pendingTerms": {
|
|
796
|
+
"title": "Pending Signal Terms",
|
|
797
|
+
"subtitle": "The signal collector suggests the following terms as potential keywords from unmatched messages. Review and confirm or ignore.",
|
|
798
|
+
"empty": "No pending signal terms",
|
|
799
|
+
"emptyDescription": "When the empathy observer detects recurring unmatched patterns, it will suggest new signal terms here.",
|
|
800
|
+
"confirm": "Confirm add",
|
|
801
|
+
"ignore": "Ignore",
|
|
802
|
+
"confirmBatch": "Confirm all",
|
|
803
|
+
"ignoreBatch": "Ignore all",
|
|
804
|
+
"sourceCount": "From {{count}} messages",
|
|
805
|
+
"confirmSuccess": "Confirmed",
|
|
806
|
+
"ignoreSuccess": "Ignored",
|
|
807
|
+
"batchConfirmSuccess": "Confirmed {{count}} terms",
|
|
808
|
+
"batchIgnoreSuccess": "Ignored {{count}} terms"
|
|
809
|
+
}
|
|
702
810
|
},
|
|
703
811
|
"login": {
|
|
704
812
|
"title": "Login",
|
|
@@ -942,6 +1050,69 @@
|
|
|
942
1050
|
"demoteTooltip": "Demote endpoint under development",
|
|
943
1051
|
"principleAriaLabel": "Debt Principle {{id}}",
|
|
944
1052
|
"listAriaLabel": "Debt principles list"
|
|
1053
|
+
},
|
|
1054
|
+
"welcome": {
|
|
1055
|
+
"title": "Welcome to Principles Disciple",
|
|
1056
|
+
"subtitle": "Turn your repeated corrections into reviewed, reversible principles.",
|
|
1057
|
+
"stateSaveError": "Couldn't save onboarding progress. Check browser storage permissions and retry.",
|
|
1058
|
+
"stepIndicator": "Step {{current}} of {{total}}",
|
|
1059
|
+
"step1": {
|
|
1060
|
+
"title": "What is PD?",
|
|
1061
|
+
"description": "An owner-governed behavior internalization system. PD turns behavioral evidence into reviewed, reversible principles that shape future agent behavior.",
|
|
1062
|
+
"circuitLabel": "Core governance loop",
|
|
1063
|
+
"circuitNodes": {
|
|
1064
|
+
"evidence": "Evidence",
|
|
1065
|
+
"principle": "Principle",
|
|
1066
|
+
"ownerGate": "Owner Gate",
|
|
1067
|
+
"behavior": "Behavior Change"
|
|
1068
|
+
},
|
|
1069
|
+
"startButton": "Start",
|
|
1070
|
+
"skipButton": "Skip onboarding"
|
|
1071
|
+
},
|
|
1072
|
+
"step2": {
|
|
1073
|
+
"title": "See the full governance loop in action",
|
|
1074
|
+
"description": "This is a controlled demo using simulated evidence. In real use, your agent produces evidence through the pd-pain-signal skill.",
|
|
1075
|
+
"runDemoButton": "Run demo",
|
|
1076
|
+
"demoRunning": "Running demo...",
|
|
1077
|
+
"demoComplete": "Demo complete",
|
|
1078
|
+
"demoFailed": "Demo failed",
|
|
1079
|
+
"demoSimulatedNote": "This evidence is simulated for demo purposes.",
|
|
1080
|
+
"nextButton": "Next",
|
|
1081
|
+
"evidenceLabel": "Evidence (simulated)",
|
|
1082
|
+
"candidateLabel": "Candidate Principle",
|
|
1083
|
+
"ownerGateLabel": "Owner Gate: Review and approve",
|
|
1084
|
+
"activationLabel": "Activation Result",
|
|
1085
|
+
"rollbackLabel": "Rollback path available",
|
|
1086
|
+
"stages": {
|
|
1087
|
+
"evidenceSeed": "Evidence (simulated)",
|
|
1088
|
+
"principleProposal": "Candidate principle",
|
|
1089
|
+
"ownerReview": "Owner review",
|
|
1090
|
+
"activation": "Activation result",
|
|
1091
|
+
"followUpObservation": "Follow-up observation",
|
|
1092
|
+
"rollbackProof": "Rollback path ready"
|
|
1093
|
+
}
|
|
1094
|
+
},
|
|
1095
|
+
"step3": {
|
|
1096
|
+
"title": "Ready to record real evidence",
|
|
1097
|
+
"description": "When your agent makes a mistake or you repeatedly correct it, tell the agent: 'Use pd-pain-signal to record this.'",
|
|
1098
|
+
"examplePrompt": "Example prompt to agent:",
|
|
1099
|
+
"examplePromptText": "I just corrected you on X. Use pd-pain-signal to record this as a pain signal.",
|
|
1100
|
+
"tryNowButton": "Try it now (2-hour window)",
|
|
1101
|
+
"goToFocusButton": "Got it, go to Focus",
|
|
1102
|
+
"skipButton": "Skip for now",
|
|
1103
|
+
"windowHint": "We'll check back in 2 hours. No pressure — you can always record evidence later.",
|
|
1104
|
+
"pollingActive": "Listening for evidence... We'll check every 30 seconds for 2 hours.",
|
|
1105
|
+
"stopPollingButton": "Stop and continue",
|
|
1106
|
+
"evidenceFound": "Evidence detected! You can now review it in the Focus page.",
|
|
1107
|
+
"timeoutHint": "No evidence detected in 2 hours. That's okay — you can record evidence anytime with pd-pain-signal.",
|
|
1108
|
+
"pollingError": "Couldn't check for evidence. The evidence service may be unavailable.",
|
|
1109
|
+
"retryButton": "Retry"
|
|
1110
|
+
},
|
|
1111
|
+
"progress": {
|
|
1112
|
+
"step1": "Welcome",
|
|
1113
|
+
"step2": "Demo",
|
|
1114
|
+
"step3": "Invite"
|
|
1115
|
+
}
|
|
945
1116
|
}
|
|
946
1117
|
},
|
|
947
1118
|
"components": {
|
|
@@ -1050,6 +1221,23 @@
|
|
|
1050
1221
|
"tooShort": "Reason must be at least 10 characters",
|
|
1051
1222
|
"cancel": "Cancel",
|
|
1052
1223
|
"submit": "Confirm Rejection"
|
|
1224
|
+
},
|
|
1225
|
+
"onboardingReset": {
|
|
1226
|
+
"title": "Onboarding",
|
|
1227
|
+
"resetButton": "Reset onboarding state",
|
|
1228
|
+
"resetConfirm": "This will restart the onboarding wizard on next login. Continue?",
|
|
1229
|
+
"resetSuccess": "Onboarding state reset. You'll see the welcome page on next visit.",
|
|
1230
|
+
"resetFailed": "Couldn't reset onboarding. Check browser storage permissions and retry."
|
|
1231
|
+
},
|
|
1232
|
+
"onboardingFlag": {
|
|
1233
|
+
"title": "Onboarding Feature",
|
|
1234
|
+
"label": "New user onboarding wizard",
|
|
1235
|
+
"description": "Show the welcome wizard on first visit. Disable for experienced users.",
|
|
1236
|
+
"toggleAriaLabel": "Toggle new user onboarding feature",
|
|
1237
|
+
"enabled": "Onboarding wizard enabled",
|
|
1238
|
+
"disabled": "Onboarding wizard disabled",
|
|
1239
|
+
"toggleFailed": "Failed to toggle onboarding feature",
|
|
1240
|
+
"loadFailed": "Failed to load onboarding flag state"
|
|
1053
1241
|
}
|
|
1054
1242
|
}
|
|
1055
1243
|
}
|