create-principles-disciple 1.82.0 → 1.83.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 +135 -0
- package/console/dist/server/config/pd-config-store.js +660 -0
- package/console/dist/server/index.js +40 -389
- package/console/dist/server/models/ActivationsConsoleModel.d.ts +33 -0
- package/console/dist/server/models/ActivationsConsoleModel.js +112 -0
- package/console/dist/server/models/ApprovalsConsoleModel.d.ts +5 -0
- package/console/dist/server/models/ApprovalsConsoleModel.js +14 -0
- package/console/dist/server/models/ApprovalsGroupedConsoleModel.d.ts +25 -0
- package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +126 -0
- package/console/dist/server/models/ConsoleLifecycleDatasource.d.ts +13 -0
- package/console/dist/server/models/ConsoleLifecycleDatasource.js +73 -0
- package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +58 -0
- package/console/dist/server/models/EvidenceChainConsoleModel.js +493 -0
- package/console/dist/server/models/GovernanceConsoleModel.d.ts +74 -0
- package/console/dist/server/models/GovernanceConsoleModel.js +246 -0
- package/console/dist/server/models/HealthCheckModel.d.ts +0 -4
- package/console/dist/server/models/HealthCheckModel.js +49 -80
- package/console/dist/server/models/LifecycleConsoleModel.d.ts +19 -0
- package/console/dist/server/models/LifecycleConsoleModel.js +55 -0
- package/console/dist/server/models/PrincipleClassifier.d.ts +41 -0
- package/console/dist/server/models/PrincipleClassifier.js +100 -0
- package/console/dist/server/models/PrinciplesConsoleModel.d.ts +12 -1
- package/console/dist/server/models/PrinciplesConsoleModel.js +53 -6
- package/console/dist/server/models/WorkspaceService.d.ts +2 -1
- package/console/dist/server/models/WorkspaceService.js +51 -23
- package/console/dist/server/routes/activations.d.ts +3 -0
- package/console/dist/server/routes/activations.js +111 -0
- package/console/dist/server/routes/approvals-grouped.d.ts +3 -0
- package/console/dist/server/routes/approvals-grouped.js +32 -0
- package/console/dist/server/routes/approvals.js +28 -4
- package/console/dist/server/routes/config.d.ts +27 -0
- package/console/dist/server/routes/config.js +213 -0
- package/console/dist/server/routes/evidence-chain.d.ts +9 -0
- package/console/dist/server/routes/evidence-chain.js +32 -0
- package/console/dist/server/routes/governance.d.ts +3 -0
- package/console/dist/server/routes/governance.js +32 -0
- package/console/dist/server/routes/{evolution.d.ts → lifecycle.d.ts} +2 -2
- package/console/dist/server/routes/lifecycle.js +48 -0
- package/console/dist/server/routes/principles.js +74 -1
- package/console/dist/server/routes/workspaces.js +8 -1
- package/console/dist/server/utils/response.d.ts +1 -1
- package/console/dist/server/utils/response.js +6 -2
- package/console/dist/types.d.ts +1 -0
- package/console/dist/ui/App.js +116 -40
- package/console/dist/ui/api.d.ts +88 -501
- package/console/dist/ui/api.js +139 -162
- package/console/dist/ui/components/approval-card.js +1 -1
- package/console/dist/ui/components/approval-detail-dialog.js +1 -1
- package/console/dist/ui/components/auth/login-form.d.ts +3 -0
- package/console/dist/ui/components/auth/login-form.js +36 -0
- package/console/dist/ui/components/auth/splash-screen.d.ts +8 -0
- package/console/dist/ui/components/auth/splash-screen.js +22 -0
- package/console/dist/ui/components/layout/app-sidebar.d.ts +1 -0
- package/console/dist/ui/components/layout/app-sidebar.js +56 -0
- package/console/dist/ui/components/layout/page-shell.d.ts +11 -0
- package/console/dist/ui/components/layout/page-shell.js +10 -0
- package/console/dist/ui/components/layout/section-title.d.ts +10 -0
- package/console/dist/ui/components/layout/section-title.js +9 -0
- package/console/dist/ui/components/theme-provider.d.ts +1 -1
- package/console/dist/ui/components/theme-provider.js +13 -8
- package/console/dist/ui/components/theme-toggle.js +2 -21
- package/console/dist/ui/components/ui/badge.d.ts +1 -1
- package/console/dist/ui/components/ui/badge.js +7 -5
- package/console/dist/ui/components/ui/button.d.ts +2 -2
- package/console/dist/ui/components/ui/button.js +12 -11
- package/console/dist/ui/components/ui/card.js +6 -6
- package/console/dist/ui/components/ui/sheet.d.ts +1 -1
- package/console/dist/ui/i18n/en.json +401 -343
- package/console/dist/ui/i18n/index.js +2 -2
- package/console/dist/ui/i18n/zh-CN.json +406 -348
- package/console/dist/ui/main.d.ts +1 -1
- package/console/dist/ui/main.js +1 -0
- package/console/dist/ui/pages/activation/ActivationPage.d.ts +1 -0
- package/console/dist/ui/pages/activation/ActivationPage.js +150 -0
- package/console/dist/ui/pages/activation/ActivationValidators.d.ts +20 -0
- package/console/dist/ui/pages/activation/ActivationValidators.js +156 -0
- package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +1 -0
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +447 -0
- package/console/dist/ui/pages/debt/DebtPage.d.ts +1 -0
- package/console/dist/ui/pages/debt/DebtPage.js +5 -0
- package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +1 -0
- package/console/dist/ui/pages/design-system/DesignSystemPage.js +30 -0
- package/console/dist/ui/pages/focus/FocusPage.d.ts +1 -0
- package/console/dist/ui/pages/focus/FocusPage.js +265 -0
- package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +59 -0
- package/console/dist/ui/pages/pain/PainEvidenceValidators.js +125 -0
- package/console/dist/ui/pages/pain/PainPage.js +136 -0
- package/console/dist/ui/pages/principles/PrincipleDetailPage.js +264 -0
- package/console/dist/ui/pages/principles/PrinciplesPage.js +244 -0
- package/console/dist/ui/pages/report-problem/ReportProblemPage.js +245 -0
- package/console/dist/ui/pages/settings/SettingsPage.d.ts +4 -0
- package/console/dist/ui/pages/settings/SettingsPage.js +202 -0
- package/console/dist/ui/pages/settings/UpdatePage.d.ts +5 -0
- package/console/dist/ui/pages/settings/UpdatePage.js +168 -0
- package/console/dist/ui/utils/control-center-helpers.d.ts +58 -0
- package/console/dist/ui/utils/control-center-helpers.js +152 -0
- package/console/dist/ui/utils/validators.d.ts +350 -0
- package/console/dist/ui/utils/validators.js +995 -0
- package/console/dist/web/assets/app.css +672 -902
- package/console/dist/web/assets/app.js +6404 -15347
- package/console/dist/web/assets/jetbrains-mono-cyrillic-400-normal-C5JECUCT.woff2 +0 -0
- package/console/dist/web/assets/jetbrains-mono-cyrillic-400-normal-FGCZYWMY.woff +0 -0
- package/console/dist/web/assets/jetbrains-mono-cyrillic-ext-400-normal-C7IFWGF6.woff2 +0 -0
- package/console/dist/web/assets/jetbrains-mono-cyrillic-ext-400-normal-PWXUA557.woff +0 -0
- package/console/dist/web/assets/jetbrains-mono-greek-400-normal-JJNQZMPZ.woff +0 -0
- package/console/dist/web/assets/jetbrains-mono-greek-400-normal-O7JTTR3P.woff2 +0 -0
- package/console/dist/web/assets/jetbrains-mono-latin-400-normal-3OOWLGQ2.woff2 +0 -0
- package/console/dist/web/assets/jetbrains-mono-latin-400-normal-WDD34GPP.woff +0 -0
- package/console/dist/web/assets/jetbrains-mono-latin-ext-400-normal-55RNMRQS.woff +0 -0
- package/console/dist/web/assets/jetbrains-mono-latin-ext-400-normal-JVR3IR4Z.woff2 +0 -0
- package/console/dist/web/assets/jetbrains-mono-vietnamese-400-normal-7ULXAK72.woff +0 -0
- package/console/dist/web/assets/jetbrains-mono-vietnamese-400-normal-KU7YLUPA.woff2 +0 -0
- package/console/package.json +2 -1
- package/core/dist/runtime-v2/__tests__/admission-gate.test.js +49 -0
- package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +16 -1
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.d.ts +21 -0
- package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +354 -0
- package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/language-directive.test.d.ts +12 -0
- package/core/dist/runtime-v2/__tests__/language-directive.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/language-directive.test.js +162 -0
- package/core/dist/runtime-v2/__tests__/language-directive.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +23 -1
- package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +48 -3
- package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +13 -1
- package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.d.ts +12 -0
- package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js +194 -0
- package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/runtime-config-boundary.test.js +5 -3
- package/core/dist/runtime-v2/__tests__/runtime-config-boundary.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +1 -0
- package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js +54 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/memory-activation-state-store.test.js +15 -2
- package/core/dist/runtime-v2/activation/__tests__/memory-activation-state-store.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +10 -0
- package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +17 -2
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +36 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.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 +1 -1
- package/core/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
- package/core/dist/runtime-v2/activation/activation-types.d.ts +10 -0
- package/core/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/activation-types.js.map +1 -1
- package/core/dist/runtime-v2/activation/approval-queue.d.ts +6 -0
- package/core/dist/runtime-v2/activation/approval-queue.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/approval-queue.js +3 -0
- package/core/dist/runtime-v2/activation/approval-queue.js.map +1 -1
- package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts +2 -0
- package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/memory-activation-state-store.js +17 -1
- package/core/dist/runtime-v2/activation/memory-activation-state-store.js.map +1 -1
- package/core/dist/runtime-v2/activation/memory-approval-store.d.ts +6 -0
- package/core/dist/runtime-v2/activation/memory-approval-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/memory-approval-store.js +16 -0
- package/core/dist/runtime-v2/activation/memory-approval-store.js.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js +1 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts +2 -0
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js +34 -6
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.js.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts +6 -0
- package/core/dist/runtime-v2/activation/sqlite-approval-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-approval-store.js +10 -0
- package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js +51 -1
- package/core/dist/runtime-v2/adapter/__tests__/json-extractor.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter.test.js +145 -0
- package/core/dist/runtime-v2/adapter/__tests__/openclaw-cli-runtime-adapter.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/json-extractor.d.ts +13 -0
- package/core/dist/runtime-v2/adapter/json-extractor.d.ts.map +1 -1
- package/core/dist/runtime-v2/adapter/json-extractor.js +103 -0
- package/core/dist/runtime-v2/adapter/json-extractor.js.map +1 -1
- package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts +4 -2
- package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.d.ts.map +1 -1
- package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js +57 -5
- package/core/dist/runtime-v2/adapter/openclaw-cli-runtime-adapter.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.d.ts +18 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js +633 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-agent-binding.test.js.map +1 -0
- package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +92 -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 +3 -1
- package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/index.js +1 -0
- package/core/dist/runtime-v2/config/index.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts +93 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.js +184 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -0
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js +2 -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 +3 -0
- package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts +8 -0
- package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +13 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +97 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +3 -2
- package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/diagnostician-prompt-builder.js +6 -4
- package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/evidence-sanitizer.d.ts +57 -0
- package/core/dist/runtime-v2/evidence-sanitizer.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-sanitizer.js +213 -0
- package/core/dist/runtime-v2/evidence-sanitizer.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.d.ts +7 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.js +170 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/admission-events.test.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.d.ts +18 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.js +277 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/source-descriptors.test.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.d.ts +13 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js +264 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.d.ts +16 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.js +316 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/trigger-controller.test.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts +126 -0
- package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/admission-events.js +159 -0
- package/core/dist/runtime-v2/evidence-triage/admission-events.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/index.d.ts +16 -0
- package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/index.js +13 -0
- package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +48 -0
- package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +131 -0
- package/core/dist/runtime-v2/evidence-triage/source-descriptors.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts +32 -0
- package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/triage-policy.js +95 -0
- package/core/dist/runtime-v2/evidence-triage/triage-policy.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/trigger-controller.d.ts +116 -0
- package/core/dist/runtime-v2/evidence-triage/trigger-controller.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/trigger-controller.js +218 -0
- package/core/dist/runtime-v2/evidence-triage/trigger-controller.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/types.d.ts +65 -0
- package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/types.js +38 -0
- package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +10 -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 +1 -0
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +8 -1
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +7 -1
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.d.ts +12 -0
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js +83 -0
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +10 -0
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js +13 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-runner.d.ts +3 -0
- package/core/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-runner.js +2 -0
- package/core/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js +1 -1
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js.map +1 -1
- package/core/dist/runtime-v2/language-directive.d.ts +80 -0
- package/core/dist/runtime-v2/language-directive.d.ts.map +1 -0
- package/core/dist/runtime-v2/language-directive.js +108 -0
- package/core/dist/runtime-v2/language-directive.js.map +1 -0
- package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.js +24 -11
- package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +16 -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 +97 -6
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
- package/core/dist/runtime-v2/pain-to-principle-service.d.ts +7 -0
- package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-to-principle-service.js +2 -0
- package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.d.ts.map +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.js +14 -0
- package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +40 -0
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +1 -1
- package/core/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/runner/base-peer-runner.js +1 -0
- package/core/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +10 -0
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +1 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.js +1 -0
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.js.map +1 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner.js +28 -4
- package/core/dist/runtime-v2/runner/diagnostician-runner.js.map +1 -1
- package/core/dist/runtime-v2/runner/peer-runner-types.d.ts +9 -0
- package/core/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.integration.test.js +34 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.integration.test.js.map +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.js +1 -0
- package/core/dist/runtime-v2/store/runtime-state-manager.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 +9 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/core/dist/runtime-v2/store/task/sqlite-task-store.js +1 -1
- package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
- package/core/dist/runtime-v2/task-status.d.ts +4 -4
- package/core/dist/runtime-v2/task-status.d.ts.map +1 -1
- package/core/dist/runtime-v2/task-status.js +2 -2
- package/core/dist/runtime-v2/task-status.js.map +1 -1
- package/core/package.json +1 -1
- package/package.json +2 -2
- package/pd-cli/dist/commands/console.d.ts +2 -0
- package/pd-cli/dist/commands/console.d.ts.map +1 -1
- package/pd-cli/dist/commands/console.js +6 -1
- package/pd-cli/dist/commands/console.js.map +1 -1
- package/pd-cli/dist/commands/diagnose.d.ts.map +1 -1
- package/pd-cli/dist/commands/diagnose.js +18 -1
- package/pd-cli/dist/commands/diagnose.js.map +1 -1
- package/pd-cli/dist/commands/pain-evidence.d.ts +41 -0
- package/pd-cli/dist/commands/pain-evidence.d.ts.map +1 -0
- package/pd-cli/dist/commands/pain-evidence.js +177 -0
- package/pd-cli/dist/commands/pain-evidence.js.map +1 -0
- package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-record.js +24 -9
- package/pd-cli/dist/commands/pain-record.js.map +1 -1
- package/pd-cli/dist/commands/pain-retry.d.ts +19 -0
- package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -0
- package/pd-cli/dist/commands/pain-retry.js +485 -0
- package/pd-cli/dist/commands/pain-retry.js.map +1 -0
- package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-run-once.js +59 -9
- package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
- package/pd-cli/dist/commands/runtime-uat.d.ts +1 -0
- package/pd-cli/dist/commands/runtime-uat.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-uat.guard.test.d.ts +2 -0
- package/pd-cli/dist/commands/runtime-uat.guard.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/runtime-uat.guard.test.js +155 -0
- package/pd-cli/dist/commands/runtime-uat.guard.test.js.map +1 -0
- package/pd-cli/dist/commands/runtime-uat.js +29 -3
- package/pd-cli/dist/commands/runtime-uat.js.map +1 -1
- package/pd-cli/dist/config-reader.d.ts +25 -0
- package/pd-cli/dist/config-reader.d.ts.map +1 -0
- package/pd-cli/dist/config-reader.js +109 -0
- package/pd-cli/dist/config-reader.js.map +1 -0
- package/pd-cli/dist/index.js +40 -5
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/dist/services/console-launcher.d.ts.map +1 -1
- package/pd-cli/dist/services/console-launcher.js +29 -15
- package/pd-cli/dist/services/console-launcher.js.map +1 -1
- package/pd-cli/dist/services/demo-story-a-runner.d.ts.map +1 -1
- package/pd-cli/dist/services/demo-story-a-runner.js +1 -0
- package/pd-cli/dist/services/demo-story-a-runner.js.map +1 -1
- package/pd-cli/dist/utils/production-workspace-guard.d.ts +77 -0
- package/pd-cli/dist/utils/production-workspace-guard.d.ts.map +1 -0
- package/pd-cli/dist/utils/production-workspace-guard.js +170 -0
- package/pd-cli/dist/utils/production-workspace-guard.js.map +1 -0
- package/pd-cli/dist/utils/production-workspace-guard.test.d.ts +2 -0
- package/pd-cli/dist/utils/production-workspace-guard.test.d.ts.map +1 -0
- package/pd-cli/dist/utils/production-workspace-guard.test.js +95 -0
- package/pd-cli/dist/utils/production-workspace-guard.test.js.map +1 -0
- package/pd-cli/package.json +1 -1
- package/plugin/dist/commands/pain.js +27 -2
- package/plugin/dist/core/pain-diagnostic-gate.d.ts +6 -0
- package/plugin/dist/core/pain-diagnostic-gate.js +9 -0
- package/plugin/dist/hooks/after-tool-call-helpers.d.ts +90 -0
- package/plugin/dist/hooks/after-tool-call-helpers.js +486 -0
- package/plugin/dist/hooks/after-tool-call-types.d.ts +92 -0
- package/plugin/dist/hooks/after-tool-call-types.js +13 -0
- package/plugin/dist/hooks/gate-block-helper.js +73 -29
- package/plugin/dist/hooks/llm.js +49 -29
- package/plugin/dist/hooks/message-sanitize.d.ts +21 -0
- package/plugin/dist/hooks/message-sanitize.js +30 -0
- package/plugin/dist/hooks/pain.d.ts +26 -3
- package/plugin/dist/hooks/pain.js +165 -425
- package/plugin/dist/hooks/prompt.js +3 -2
- package/plugin/dist/hooks/trajectory-evidence.d.ts +11 -0
- package/plugin/dist/hooks/trajectory-evidence.js +65 -0
- package/plugin/dist/hooks/triage-adapter.d.ts +82 -0
- package/plugin/dist/hooks/triage-adapter.js +121 -0
- package/console/dist/server/models/EventLogReadModel.d.ts +0 -33
- package/console/dist/server/models/EventLogReadModel.js +0 -218
- package/console/dist/server/models/EvolutionConsoleModel.d.ts +0 -79
- package/console/dist/server/models/EvolutionConsoleModel.js +0 -179
- package/console/dist/server/models/FeedbackConsoleModel.d.ts +0 -38
- package/console/dist/server/models/FeedbackConsoleModel.js +0 -129
- package/console/dist/server/models/GateConsoleModel.d.ts +0 -50
- package/console/dist/server/models/GateConsoleModel.js +0 -151
- package/console/dist/server/models/OverviewConsoleModel.d.ts +0 -22
- package/console/dist/server/models/OverviewConsoleModel.js +0 -202
- package/console/dist/server/models/PipelineStatsModel.d.ts +0 -35
- package/console/dist/server/models/PipelineStatsModel.js +0 -129
- package/console/dist/server/models/SampleConsoleModel.d.ts +0 -21
- package/console/dist/server/models/SampleConsoleModel.js +0 -188
- package/console/dist/server/models/ThinkingModelsConsoleModel.d.ts +0 -22
- package/console/dist/server/models/ThinkingModelsConsoleModel.js +0 -75
- package/console/dist/server/routes/agents.d.ts +0 -3
- package/console/dist/server/routes/agents.js +0 -442
- package/console/dist/server/routes/central.d.ts +0 -5
- package/console/dist/server/routes/central.js +0 -31
- package/console/dist/server/routes/events.d.ts +0 -10
- package/console/dist/server/routes/events.js +0 -99
- package/console/dist/server/routes/evolution.js +0 -73
- package/console/dist/server/routes/feedback.d.ts +0 -3
- package/console/dist/server/routes/feedback.js +0 -65
- package/console/dist/server/routes/gates.d.ts +0 -3
- package/console/dist/server/routes/gates.js +0 -52
- package/console/dist/server/routes/overview.d.ts +0 -3
- package/console/dist/server/routes/overview.js +0 -49
- package/console/dist/server/routes/pipeline.d.ts +0 -3
- package/console/dist/server/routes/pipeline.js +0 -33
- package/console/dist/server/routes/samples.d.ts +0 -3
- package/console/dist/server/routes/samples.js +0 -101
- package/console/dist/server/routes/thinking-models.d.ts +0 -3
- package/console/dist/server/routes/thinking-models.js +0 -54
- package/console/dist/ui/components/app-sidebar.d.ts +0 -7
- package/console/dist/ui/components/app-sidebar.js +0 -75
- package/console/dist/ui/components/compare-view.d.ts +0 -7
- package/console/dist/ui/components/compare-view.js +0 -32
- package/console/dist/ui/components/data-freshness-indicator.d.ts +0 -10
- package/console/dist/ui/components/data-freshness-indicator.js +0 -63
- package/console/dist/ui/components/health-diagnostic-card.d.ts +0 -15
- package/console/dist/ui/components/health-diagnostic-card.js +0 -42
- package/console/dist/ui/components/page-header.d.ts +0 -10
- package/console/dist/ui/components/page-header.js +0 -37
- package/console/dist/ui/hooks/useAutoRefresh.d.ts +0 -13
- package/console/dist/ui/hooks/useAutoRefresh.js +0 -64
- package/console/dist/ui/hooks/useBookmarks.d.ts +0 -6
- package/console/dist/ui/hooks/useBookmarks.js +0 -43
- package/console/dist/ui/hooks/useDebounce.d.ts +0 -2
- package/console/dist/ui/hooks/useDebounce.js +0 -32
- package/console/dist/ui/hooks/useKeyboardNavigation.d.ts +0 -14
- package/console/dist/ui/hooks/useKeyboardNavigation.js +0 -75
- package/console/dist/ui/pages/AgentsPage.d.ts +0 -1
- package/console/dist/ui/pages/AgentsPage.js +0 -167
- package/console/dist/ui/pages/ApprovalsPage.d.ts +0 -1
- package/console/dist/ui/pages/ApprovalsPage.js +0 -123
- package/console/dist/ui/pages/CentralPage.d.ts +0 -1
- package/console/dist/ui/pages/CentralPage.js +0 -57
- package/console/dist/ui/pages/DataFlowPage.d.ts +0 -1
- package/console/dist/ui/pages/DataFlowPage.js +0 -158
- package/console/dist/ui/pages/EventLogPage.d.ts +0 -1
- package/console/dist/ui/pages/EventLogPage.js +0 -176
- package/console/dist/ui/pages/EvolutionPage.d.ts +0 -1
- package/console/dist/ui/pages/EvolutionPage.js +0 -118
- package/console/dist/ui/pages/FeedbackPage.d.ts +0 -1
- package/console/dist/ui/pages/FeedbackPage.js +0 -46
- package/console/dist/ui/pages/GatesPage.d.ts +0 -1
- package/console/dist/ui/pages/GatesPage.js +0 -31
- package/console/dist/ui/pages/LoginPage.d.ts +0 -5
- package/console/dist/ui/pages/LoginPage.js +0 -39
- package/console/dist/ui/pages/OverviewPage.d.ts +0 -1
- package/console/dist/ui/pages/OverviewPage.js +0 -50
- package/console/dist/ui/pages/PainPage.js +0 -50
- package/console/dist/ui/pages/PrincipleDetailPage.js +0 -145
- package/console/dist/ui/pages/PrinciplesPage.js +0 -322
- package/console/dist/ui/pages/ReportProblemPage.js +0 -186
- package/console/dist/ui/pages/SamplesPage.d.ts +0 -1
- package/console/dist/ui/pages/SamplesPage.js +0 -105
- package/console/dist/ui/pages/SettingsPage.d.ts +0 -1
- package/console/dist/ui/pages/SettingsPage.js +0 -86
- package/console/dist/ui/pages/TasksPage.d.ts +0 -1
- package/console/dist/ui/pages/TasksPage.js +0 -373
- package/console/dist/ui/pages/ThinkingModelsPage.d.ts +0 -1
- package/console/dist/ui/pages/ThinkingModelsPage.js +0 -32
- package/console/dist/ui/pages/UpdatePage.d.ts +0 -1
- package/console/dist/ui/pages/UpdatePage.js +0 -142
- /package/console/dist/ui/pages/{PainPage.d.ts → pain/PainPage.d.ts} +0 -0
- /package/console/dist/ui/pages/{PrincipleDetailPage.d.ts → principles/PrincipleDetailPage.d.ts} +0 -0
- /package/console/dist/ui/pages/{PrinciplesPage.d.ts → principles/PrinciplesPage.d.ts} +0 -0
- /package/console/dist/ui/pages/{ReportProblemPage.d.ts → report-problem/ReportProblemPage.d.ts} +0 -0
|
@@ -2,31 +2,26 @@ import * as http from 'http';
|
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
|
-
import { RuntimeStateManager, CandidateIntakeService, PrincipleTreeLedgerAdapter, PainChainReadModel, PruningReadModel, OperatorHealthReadModel,
|
|
5
|
+
import { RuntimeStateManager, CandidateIntakeService, PrincipleTreeLedgerAdapter, PainChainReadModel, PruningReadModel, OperatorHealthReadModel, } from '@principles/core/runtime-v2';
|
|
6
6
|
import { AuthConfig } from './config/AuthConfig.js';
|
|
7
7
|
import { WorkspaceConfigStore } from './config/WorkspaceConfigStore.js';
|
|
8
8
|
import { WorkspaceService } from './models/WorkspaceService.js';
|
|
9
|
-
import { handleOverviewRoute, disposeOverviewModels } from './routes/overview.js';
|
|
10
|
-
import { handleGatesRoute, disposeGateModels } from './routes/gates.js';
|
|
11
|
-
import { handleFeedbackRoute, disposeFeedbackModels } from './routes/feedback.js';
|
|
12
9
|
import { handleFeedbackReportsRoute, disposeFeedbackReportModels } from './routes/feedback-reports.js';
|
|
13
10
|
import { loadWorkspaceFeatureFlags, buildFeedbackChannelFlags, } from './config/feature-flags.js';
|
|
14
|
-
import { handleSamplesRoute, disposeSampleModels } from './routes/samples.js';
|
|
15
11
|
import { handleApprovalsRoute, disposeApprovalsModels } from './routes/approvals.js';
|
|
16
|
-
import { handleEvolutionRoute, disposeEvolutionModels } from './routes/evolution.js';
|
|
17
|
-
import { handleThinkingModelsRoute, disposeThinkingModels } from './routes/thinking-models.js';
|
|
18
12
|
import { handleHealthRoute, disposeHealthModels } from './routes/health.js';
|
|
19
|
-
import { handlePipelineRoute, disposePipelineModels } from './routes/pipeline.js';
|
|
20
|
-
import { handleEventsRoute, disposeEventsModels } from './routes/events.js';
|
|
21
13
|
import { handlePrinciplesRoute, disposePrinciplesModels } from './routes/principles.js';
|
|
14
|
+
import { handleLifecycleRoute, disposeLifecycleModels } from './routes/lifecycle.js';
|
|
15
|
+
import { handleActivationsRoute, disposeActivationsModels } from './routes/activations.js';
|
|
16
|
+
import { handleApprovalsGroupedRoute, disposeApprovalsGroupedModels } from './routes/approvals-grouped.js';
|
|
17
|
+
import { handleGovernanceRoute, disposeGovernanceModels } from './routes/governance.js';
|
|
18
|
+
import { handleEvidenceChainRoute, disposeEvidenceChainModels } from './routes/evidence-chain.js';
|
|
22
19
|
import { createWorkspacesRoutes } from './routes/workspaces.js';
|
|
23
|
-
import { createCentralRoutes } from './routes/central.js';
|
|
24
|
-
import { handleAgentsRoute, disposeAgentModels } from './routes/agents.js';
|
|
25
20
|
import { handleUpdateRoute } from './routes/update.js';
|
|
26
21
|
import { handleUpdateHistoryRoute } from './routes/update-history.js';
|
|
27
22
|
import { handleStateRoute } from './routes/state.js';
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
23
|
+
import { handleConfigRoute } from './routes/config.js';
|
|
24
|
+
import { sendJson, sendNotFound, sendUnauthorized } from './utils/response.js';
|
|
30
25
|
const __filename = fileURLToPath(import.meta.url);
|
|
31
26
|
const __dirname = path.dirname(__filename);
|
|
32
27
|
// WEB_ROOT calculation: server is at PKG_ROOT/dist/server/index.js
|
|
@@ -223,19 +218,15 @@ async function initServices(workspaceDir, authConfig) {
|
|
|
223
218
|
};
|
|
224
219
|
}
|
|
225
220
|
async function closeServices(services) {
|
|
226
|
-
disposeOverviewModels();
|
|
227
|
-
disposeGateModels();
|
|
228
|
-
disposeFeedbackModels();
|
|
229
221
|
disposeFeedbackReportModels();
|
|
230
|
-
disposeSampleModels();
|
|
231
222
|
disposeApprovalsModels();
|
|
232
|
-
|
|
233
|
-
disposeThinkingModels();
|
|
223
|
+
disposeApprovalsGroupedModels();
|
|
234
224
|
disposeHealthModels();
|
|
235
|
-
disposePipelineModels();
|
|
236
|
-
disposeEventsModels();
|
|
237
225
|
disposePrinciplesModels();
|
|
238
|
-
|
|
226
|
+
disposeLifecycleModels();
|
|
227
|
+
disposeActivationsModels();
|
|
228
|
+
disposeGovernanceModels();
|
|
229
|
+
disposeEvidenceChainModels();
|
|
239
230
|
services.workspaceService.dispose();
|
|
240
231
|
try {
|
|
241
232
|
await services.healthReadModel.close();
|
|
@@ -259,7 +250,6 @@ async function closeServices(services) {
|
|
|
259
250
|
// ── Route handler ───────────────────────────────────────────────────────────
|
|
260
251
|
function handleRequest(services) {
|
|
261
252
|
const { handleWorkspacesRoute } = createWorkspacesRoutes(services.configStore, services.workspaceService);
|
|
262
|
-
const { handleCentralRoute } = createCentralRoutes(services.workspaceService);
|
|
263
253
|
return (req, res) => {
|
|
264
254
|
const urlPath = req.url?.split('?')[0] ?? '/';
|
|
265
255
|
// GET /
|
|
@@ -289,35 +279,16 @@ function handleRequest(services) {
|
|
|
289
279
|
sendUnauthorized(res);
|
|
290
280
|
return;
|
|
291
281
|
}
|
|
292
|
-
// ──
|
|
293
|
-
// GET /api/
|
|
294
|
-
if (urlPath === '/api/overview' || urlPath.startsWith('/api/overview/')) {
|
|
295
|
-
const subPath = urlPath.slice('/api/overview'.length);
|
|
296
|
-
asyncHandler(() => handleOverviewRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
// GET /api/gate/stats, /api/gate/blocks
|
|
300
|
-
if (urlPath === '/api/gate' || urlPath.startsWith('/api/gate/')) {
|
|
301
|
-
const subPath = urlPath.slice('/api/gate'.length);
|
|
302
|
-
asyncHandler(() => handleGatesRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
303
|
-
return;
|
|
304
|
-
}
|
|
305
|
-
// GET/POST /api/feedback/reports, /api/feedback/reports/:id — local MVP seed feedback drafts (PRI-285)
|
|
282
|
+
// ── API routes ──────────────────────────────────────────────────
|
|
283
|
+
// GET/POST /api/feedback/reports, /api/feedback/reports/:id
|
|
306
284
|
if (urlPath === '/api/feedback/reports' || urlPath.startsWith('/api/feedback/reports/')) {
|
|
307
285
|
const subPath = urlPath.slice('/api/feedback/reports'.length);
|
|
308
286
|
asyncHandler(() => handleFeedbackReportsRoute(req, res, { workspaceDir: services.workspaceDir, subPath, featureFlags: services.feedbackFlags }))(req, res);
|
|
309
287
|
return;
|
|
310
288
|
}
|
|
311
|
-
// GET /api/
|
|
312
|
-
if (urlPath === '/api/
|
|
313
|
-
|
|
314
|
-
asyncHandler(() => handleFeedbackRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
// GET /api/samples, /api/samples/:id, /api/samples/:id/review
|
|
318
|
-
if (urlPath === '/api/samples' || urlPath.startsWith('/api/samples/')) {
|
|
319
|
-
const subPath = urlPath.slice('/api/samples'.length);
|
|
320
|
-
asyncHandler(() => handleSamplesRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
289
|
+
// GET /api/v1/approvals/grouped (MUST be before approvals catch-all)
|
|
290
|
+
if (urlPath === '/api/v1/approvals/grouped') {
|
|
291
|
+
asyncHandler(() => handleApprovalsGroupedRoute(req, res, services.workspaceDir))(req, res);
|
|
321
292
|
return;
|
|
322
293
|
}
|
|
323
294
|
// GET /api/v1/approvals, /api/v1/approvals/:id, POST /api/v1/approvals/:id/approve, /api/v1/approvals/:id/reject
|
|
@@ -326,42 +297,18 @@ function handleRequest(services) {
|
|
|
326
297
|
asyncHandler(() => handleApprovalsRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
327
298
|
return;
|
|
328
299
|
}
|
|
329
|
-
// GET /api/evolution/stats, /api/evolution/tasks, /api/evolution/principles, /api/evolution/queue
|
|
330
|
-
if (urlPath === '/api/evolution' || urlPath.startsWith('/api/evolution/')) {
|
|
331
|
-
const subPath = urlPath.slice('/api/evolution'.length);
|
|
332
|
-
asyncHandler(() => handleEvolutionRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
300
|
// GET /api/principles, /api/principles/:id
|
|
336
301
|
if (urlPath === '/api/principles' || urlPath.startsWith('/api/principles/')) {
|
|
337
302
|
const subPath = urlPath.slice('/api/principles'.length);
|
|
338
303
|
asyncHandler(() => handlePrinciplesRoute({ req, res, workspaceDir: services.workspaceDir, subPath }))(req, res);
|
|
339
304
|
return;
|
|
340
305
|
}
|
|
341
|
-
// GET /api/thinking-models, /api/thinking-models/:id
|
|
342
|
-
if (urlPath === '/api/thinking-models' || urlPath.startsWith('/api/thinking-models/')) {
|
|
343
|
-
const subPath = urlPath.slice('/api/thinking-models'.length);
|
|
344
|
-
asyncHandler(() => handleThinkingModelsRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
345
|
-
return;
|
|
346
|
-
}
|
|
347
306
|
// Workspace management routes
|
|
348
307
|
if (urlPath === '/api/workspaces' || urlPath.startsWith('/api/workspaces/')) {
|
|
349
308
|
const subPath = urlPath.slice('/api/workspaces'.length);
|
|
350
309
|
asyncHandler(() => handleWorkspacesRoute(req, res, subPath))(req, res);
|
|
351
310
|
return;
|
|
352
311
|
}
|
|
353
|
-
// Central overview routes
|
|
354
|
-
if (urlPath === '/api/central' || urlPath.startsWith('/api/central/')) {
|
|
355
|
-
const subPath = urlPath.slice('/api/central'.length);
|
|
356
|
-
asyncHandler(() => handleCentralRoute(req, res, subPath))(req, res);
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
// Agent status routes
|
|
360
|
-
if (urlPath === '/api/agents' || urlPath.startsWith('/api/agents/')) {
|
|
361
|
-
const subPath = urlPath.slice('/api/agents'.length);
|
|
362
|
-
asyncHandler(() => handleAgentsRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
365
312
|
// GET /api/update/history (MUST be before update catch-all)
|
|
366
313
|
if (urlPath === '/api/update/history') {
|
|
367
314
|
asyncHandler(() => handleUpdateHistoryRoute(req, res, services.workspaceDir, ''))(req, res);
|
|
@@ -379,334 +326,38 @@ function handleRequest(services) {
|
|
|
379
326
|
asyncHandler(() => handleStateRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
380
327
|
return;
|
|
381
328
|
}
|
|
382
|
-
//
|
|
383
|
-
//
|
|
384
|
-
if (urlPath === '/api/
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
}
|
|
388
|
-
// GET /api/pipeline
|
|
389
|
-
if (urlPath === '/api/pipeline') {
|
|
390
|
-
asyncHandler(() => handlePipelineRoute(req, res, services.workspaceDir))(req, res);
|
|
391
|
-
return;
|
|
392
|
-
}
|
|
393
|
-
// GET /api/events
|
|
394
|
-
if (urlPath === '/api/events' || urlPath.startsWith('/api/events/')) {
|
|
395
|
-
const subPath = urlPath.slice('/api/events'.length);
|
|
396
|
-
asyncHandler(() => handleEventsRoute({ req, res, workspaceDir: services.workspaceDir, subPath }))(req, res);
|
|
329
|
+
// Config API routes: /api/v1/config/summary, /api/v1/config/catalog,
|
|
330
|
+
// /api/v1/config/agents/:name/binding, /api/v1/config/readiness/:name
|
|
331
|
+
if (urlPath === '/api/v1/config' || urlPath.startsWith('/api/v1/config/')) {
|
|
332
|
+
const subPath = urlPath.slice('/api/v1/config'.length);
|
|
333
|
+
asyncHandler(() => handleConfigRoute(req, res, { workspaceDir: services.workspaceDir, subPath }))(req, res);
|
|
397
334
|
return;
|
|
398
335
|
}
|
|
399
|
-
// GET /api/
|
|
400
|
-
if (urlPath
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
return;
|
|
404
|
-
}
|
|
405
|
-
asyncHandler(async (_req, response) => {
|
|
406
|
-
const snapshot = await services.healthReadModel.getSnapshot();
|
|
407
|
-
const pruningSummary = services.pruningReadModel.getHealthSummary();
|
|
408
|
-
const { byStatus } = pruningSummary;
|
|
409
|
-
const principleActive = (byStatus.active ?? 0) + (byStatus.candidate ?? 0);
|
|
410
|
-
const principlePending = (byStatus.probation ?? 0) + (byStatus.deprecated ?? 0);
|
|
411
|
-
const status = snapshot.overallStatus === 'healthy' ? 'healthy'
|
|
412
|
-
: snapshot.overallStatus === 'degraded' ? 'attention'
|
|
413
|
-
: 'problem';
|
|
414
|
-
const result = {
|
|
415
|
-
status,
|
|
416
|
-
principleTotal: pruningSummary.totalPrinciples,
|
|
417
|
-
principleActive,
|
|
418
|
-
principlePending,
|
|
419
|
-
weeklyChange: 0,
|
|
420
|
-
};
|
|
421
|
-
sendSuccess(response, result);
|
|
422
|
-
})(req, res);
|
|
336
|
+
// CR8: GET /api/v1/lifecycle/principles/:principleId
|
|
337
|
+
if (urlPath.startsWith('/api/v1/lifecycle')) {
|
|
338
|
+
const subPath = urlPath.slice('/api/v1/lifecycle'.length);
|
|
339
|
+
asyncHandler(() => handleLifecycleRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
423
340
|
return;
|
|
424
341
|
}
|
|
425
|
-
// GET /api/
|
|
426
|
-
if (urlPath === '/api/
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
asyncHandler(async (_req, response) => {
|
|
432
|
-
const pruningSignals = services.pruningReadModel.getPrincipleSignals();
|
|
433
|
-
const diagnosticianTasks = await services.stateManager.listTasks({ taskKind: 'diagnostician', limit: 50 });
|
|
434
|
-
const needsConfirmation = [];
|
|
435
|
-
const candidateBatches = await Promise.all(diagnosticianTasks.map((t) => services.stateManager.getCandidatesByTaskId(t.taskId)));
|
|
436
|
-
for (let ci = 0; ci < candidateBatches.length; ci++) {
|
|
437
|
-
const candidates = candidateBatches[ci];
|
|
438
|
-
const parentTask = diagnosticianTasks[ci];
|
|
439
|
-
for (const c of candidates) {
|
|
440
|
-
if (c.status !== 'pending')
|
|
441
|
-
continue;
|
|
442
|
-
const severity = parseSeverityFromDiagnostic(parentTask.diagnosticJson);
|
|
443
|
-
const recommendationKind = parseRecommendationKind(c.sourceRecommendationJson);
|
|
444
|
-
needsConfirmation.push({
|
|
445
|
-
id: c.candidateId,
|
|
446
|
-
title: c.title,
|
|
447
|
-
sourceSummary: c.description,
|
|
448
|
-
priority: 'needs_confirmation',
|
|
449
|
-
kind: 'approval',
|
|
450
|
-
createdAt: c.createdAt,
|
|
451
|
-
confidence: c.confidence ?? undefined,
|
|
452
|
-
severity,
|
|
453
|
-
recommendationKind,
|
|
454
|
-
});
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
const suggestedAttention = pruningSignals
|
|
458
|
-
.filter((s) => s.riskLevel === 'watch' || s.riskLevel === 'review')
|
|
459
|
-
.map((s) => ({
|
|
460
|
-
id: s.principleId,
|
|
461
|
-
title: `Principle "${s.principleId}" needs attention`,
|
|
462
|
-
sourceSummary: s.reasons.join('; '),
|
|
463
|
-
priority: 'suggested_attention',
|
|
464
|
-
kind: 'cleanup',
|
|
465
|
-
createdAt: s.createdAt,
|
|
466
|
-
lastTriggeredAt: s.updatedAt,
|
|
467
|
-
triggerCount: s.derivedPainCount,
|
|
468
|
-
}));
|
|
469
|
-
const recentTasks = await services.stateManager.listTasks({ status: 'succeeded', limit: 5 });
|
|
470
|
-
const recentActivity = recentTasks.map((t) => {
|
|
471
|
-
const reasonSummary = parseReasonSummaryFromDiagnostic(t.diagnosticJson);
|
|
472
|
-
const severity = parseSeverityFromDiagnostic(t.diagnosticJson);
|
|
473
|
-
const { attemptCount } = t;
|
|
474
|
-
const { maxAttempts } = t;
|
|
475
|
-
const kindLabels = {
|
|
476
|
-
diagnostician: '诊断分析',
|
|
477
|
-
principle_candidate_intake: '原则候选录入',
|
|
478
|
-
dreamer: '深度反思',
|
|
479
|
-
keyword_optimization: '关键词优化',
|
|
480
|
-
};
|
|
481
|
-
return {
|
|
482
|
-
id: t.taskId,
|
|
483
|
-
title: reasonSummary || kindLabels[t.taskKind] || t.taskKind,
|
|
484
|
-
sourceSummary: reasonSummary ? `来源: ${t.taskKind}` : '',
|
|
485
|
-
priority: 'recent_activity',
|
|
486
|
-
kind: 'completed',
|
|
487
|
-
createdAt: t.createdAt,
|
|
488
|
-
status: t.status,
|
|
489
|
-
severity,
|
|
490
|
-
attemptCount,
|
|
491
|
-
maxAttempts,
|
|
492
|
-
};
|
|
493
|
-
});
|
|
494
|
-
sendSuccess(response, { needsConfirmation, suggestedAttention, recentActivity });
|
|
495
|
-
})(req, res);
|
|
342
|
+
// CR8: GET /api/v1/activations
|
|
343
|
+
if (urlPath === '/api/v1/activations' || urlPath.startsWith('/api/v1/activations/')) {
|
|
344
|
+
const subPath = urlPath.slice('/api/v1/activations'.length);
|
|
345
|
+
asyncHandler(() => handleActivationsRoute(req, res, services.workspaceDir, subPath))(req, res);
|
|
496
346
|
return;
|
|
497
347
|
}
|
|
498
|
-
// GET /api/
|
|
499
|
-
if (urlPath
|
|
500
|
-
|
|
501
|
-
sendJson(res, 405, { success: false, error: 'Method not allowed' });
|
|
502
|
-
return;
|
|
503
|
-
}
|
|
504
|
-
const parts = urlPath.split('/');
|
|
505
|
-
const [, , , id] = parts;
|
|
506
|
-
if (!id) {
|
|
507
|
-
sendError(res, 400, 'missing_id', 'Missing task ID');
|
|
508
|
-
return;
|
|
509
|
-
}
|
|
510
|
-
asyncHandler(async (_req, response) => {
|
|
511
|
-
const candidate = await services.stateManager.getCandidate(id);
|
|
512
|
-
if (candidate) {
|
|
513
|
-
const trace = await services.painChainReadModel.traceByPainId(candidate.taskId.replace('diagnosis_', ''));
|
|
514
|
-
const evidence = [];
|
|
515
|
-
if (trace.runId) {
|
|
516
|
-
evidence.push({ timestamp: trace.checkedAt, operation: 'run', problem: trace.missingLinks.join('; ') || 'run completed' });
|
|
517
|
-
}
|
|
518
|
-
for (const cid of trace.candidateIds) {
|
|
519
|
-
evidence.push({ timestamp: trace.checkedAt, operation: 'candidate_generated', problem: `candidate: ${cid}` });
|
|
520
|
-
}
|
|
521
|
-
for (const lid of trace.ledgerEntryIds) {
|
|
522
|
-
evidence.push({ timestamp: trace.checkedAt, operation: 'ledger_written', problem: `principle: ${lid}` });
|
|
523
|
-
}
|
|
524
|
-
let diagnosis = undefined;
|
|
525
|
-
let inputInfo = undefined;
|
|
526
|
-
const artifact = await services.stateManager.getArtifact(candidate.artifactId);
|
|
527
|
-
if (artifact && artifact.artifactKind === 'diagnostician_output') {
|
|
528
|
-
diagnosis = parseDiagnosticianOutput(artifact.contentJson);
|
|
529
|
-
}
|
|
530
|
-
const parentTask = await services.stateManager.getTask(candidate.taskId);
|
|
531
|
-
if (parentTask?.diagnosticJson) {
|
|
532
|
-
inputInfo = parseDiagnosticInput(parentTask.diagnosticJson);
|
|
533
|
-
}
|
|
534
|
-
const result = {
|
|
535
|
-
taskId: id,
|
|
536
|
-
summary: candidate.title,
|
|
537
|
-
why: candidate.description,
|
|
538
|
-
whatHappensIf: `If declined, this candidate will expire. Status: ${candidate.status}.`,
|
|
539
|
-
evidence,
|
|
540
|
-
diagnosis,
|
|
541
|
-
input: inputInfo,
|
|
542
|
-
};
|
|
543
|
-
sendSuccess(response, result);
|
|
544
|
-
return;
|
|
545
|
-
}
|
|
546
|
-
const signals = services.pruningReadModel.getPrincipleSignals();
|
|
547
|
-
const signal = signals.find((s) => s.principleId === id);
|
|
548
|
-
if (signal) {
|
|
549
|
-
const result = {
|
|
550
|
-
taskId: id,
|
|
551
|
-
summary: `Principle lifecycle signal for "${signal.principleId}"`,
|
|
552
|
-
why: signal.reasons.join('; '),
|
|
553
|
-
whatHappensIf: `Risk level: ${signal.riskLevel}. Age: ${signal.ageDays} days.`,
|
|
554
|
-
evidence: signal.reasons.map((reason) => ({ timestamp: signal.updatedAt, operation: 'pruning_signal', problem: reason })),
|
|
555
|
-
};
|
|
556
|
-
sendSuccess(response, result);
|
|
557
|
-
return;
|
|
558
|
-
}
|
|
559
|
-
const task = await services.stateManager.getTask(id);
|
|
560
|
-
if (task) {
|
|
561
|
-
let diagnosis = undefined;
|
|
562
|
-
let inputInfo = undefined;
|
|
563
|
-
if (task.diagnosticJson) {
|
|
564
|
-
inputInfo = parseDiagnosticInput(task.diagnosticJson);
|
|
565
|
-
}
|
|
566
|
-
const taskCandidates = await services.stateManager.getCandidatesByTaskId(id);
|
|
567
|
-
if (taskCandidates.length > 0) {
|
|
568
|
-
const [firstCandidate] = taskCandidates;
|
|
569
|
-
const artifact = await services.stateManager.getArtifact(firstCandidate.artifactId);
|
|
570
|
-
if (artifact && artifact.artifactKind === 'diagnostician_output') {
|
|
571
|
-
diagnosis = parseDiagnosticianOutput(artifact.contentJson);
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
const result = {
|
|
575
|
-
taskId: id,
|
|
576
|
-
summary: inputInfo?.reasonSummary ?? `${task.taskKind} (${task.status})`,
|
|
577
|
-
why: diagnosis?.rootCause ?? '',
|
|
578
|
-
whatHappensIf: `Status: ${task.status}. Attempt: ${task.attemptCount}/${task.maxAttempts}.`,
|
|
579
|
-
evidence: [],
|
|
580
|
-
diagnosis,
|
|
581
|
-
input: inputInfo,
|
|
582
|
-
};
|
|
583
|
-
sendSuccess(response, result);
|
|
584
|
-
return;
|
|
585
|
-
}
|
|
586
|
-
sendNotFound(response, 'Task or principle not found');
|
|
587
|
-
})(req, res);
|
|
348
|
+
// CR8: GET /api/v1/governance/queue
|
|
349
|
+
if (urlPath === '/api/v1/governance/queue') {
|
|
350
|
+
asyncHandler(() => handleGovernanceRoute(req, res, services.workspaceDir))(req, res);
|
|
588
351
|
return;
|
|
589
352
|
}
|
|
590
|
-
// GET /api/
|
|
591
|
-
if (urlPath === '/api/
|
|
592
|
-
|
|
593
|
-
sendJson(res, 405, { success: false, error: 'Method not allowed' });
|
|
594
|
-
return;
|
|
595
|
-
}
|
|
596
|
-
asyncHandler(async (_req, response) => {
|
|
597
|
-
const [recentTasks, pruningReviews] = await Promise.all([
|
|
598
|
-
services.stateManager.listTasks({ limit: 20 }),
|
|
599
|
-
Promise.resolve(listPruningReviews(services.workspaceDir)),
|
|
600
|
-
]);
|
|
601
|
-
const events = [];
|
|
602
|
-
for (const t of recentTasks) {
|
|
603
|
-
const eventType = t.status === 'failed' ? 'error' : t.status === 'succeeded' ? 'learned' : 'approved';
|
|
604
|
-
events.push({ id: t.taskId, type: eventType, description: `${t.taskKind} (${t.status})`, timestamp: t.updatedAt });
|
|
605
|
-
}
|
|
606
|
-
for (const r of pruningReviews) {
|
|
607
|
-
const eventType = r.decision === 'keep' ? 'approved' : r.decision === 'archive-candidate' ? 'error' : 'learned';
|
|
608
|
-
events.push({ id: r.reviewId, type: eventType, description: `Pruning review: ${r.decision} for ${r.principleId}`, timestamp: r.reviewedAt });
|
|
609
|
-
}
|
|
610
|
-
events.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
|
|
611
|
-
sendSuccess(response, events);
|
|
612
|
-
})(req, res);
|
|
353
|
+
// PRI-331: GET /api/v1/evidence-chain
|
|
354
|
+
if (urlPath === '/api/v1/evidence-chain') {
|
|
355
|
+
asyncHandler(() => handleEvidenceChainRoute(req, res, services.workspaceDir))(req, res);
|
|
613
356
|
return;
|
|
614
357
|
}
|
|
615
|
-
//
|
|
616
|
-
if (urlPath
|
|
617
|
-
|
|
618
|
-
sendJson(res, 405, { success: false, error: 'Method not allowed' });
|
|
619
|
-
return;
|
|
620
|
-
}
|
|
621
|
-
const parts = urlPath.split('/');
|
|
622
|
-
const [, , , id] = parts;
|
|
623
|
-
if (!id) {
|
|
624
|
-
sendError(res, 400, 'missing_id', 'Missing task ID');
|
|
625
|
-
return;
|
|
626
|
-
}
|
|
627
|
-
asyncHandler(async (_req, response) => {
|
|
628
|
-
const candidate = await services.stateManager.getCandidate(id);
|
|
629
|
-
if (!candidate) {
|
|
630
|
-
sendNotFound(response, 'Candidate not found');
|
|
631
|
-
return;
|
|
632
|
-
}
|
|
633
|
-
const transitioned = await services.stateManager.transitionCandidateStatus(id, 'pending', 'consumed');
|
|
634
|
-
if (!transitioned) {
|
|
635
|
-
const current = await services.stateManager.getCandidate(id);
|
|
636
|
-
sendError(res, 409, 'conflict', `Candidate is not pending (status: ${current?.status ?? 'unknown'})`);
|
|
637
|
-
return;
|
|
638
|
-
}
|
|
639
|
-
try {
|
|
640
|
-
const entry = await services.candidateIntakeService.intake(id);
|
|
641
|
-
sendSuccess(response, { principleId: entry.id });
|
|
642
|
-
}
|
|
643
|
-
catch (intakeErr) {
|
|
644
|
-
await services.stateManager.updateCandidateStatus(id, { status: 'pending' });
|
|
645
|
-
throw intakeErr;
|
|
646
|
-
}
|
|
647
|
-
})(req, res);
|
|
648
|
-
return;
|
|
649
|
-
}
|
|
650
|
-
// POST /api/tasks/:id/reject
|
|
651
|
-
if (urlPath.startsWith('/api/tasks/') && urlPath.endsWith('/reject')) {
|
|
652
|
-
if (req.method !== 'POST') {
|
|
653
|
-
sendJson(res, 405, { success: false, error: 'Method not allowed' });
|
|
654
|
-
return;
|
|
655
|
-
}
|
|
656
|
-
const parts = urlPath.split('/');
|
|
657
|
-
const [, , , id] = parts;
|
|
658
|
-
if (!id) {
|
|
659
|
-
sendError(res, 400, 'missing_id', 'Missing task ID');
|
|
660
|
-
return;
|
|
661
|
-
}
|
|
662
|
-
asyncHandler(async (_req, response) => {
|
|
663
|
-
const candidate = await services.stateManager.getCandidate(id);
|
|
664
|
-
if (!candidate) {
|
|
665
|
-
sendNotFound(response, 'Candidate not found');
|
|
666
|
-
return;
|
|
667
|
-
}
|
|
668
|
-
const transitioned = await services.stateManager.transitionCandidateStatus(id, 'pending', 'expired');
|
|
669
|
-
if (!transitioned) {
|
|
670
|
-
const current = await services.stateManager.getCandidate(id);
|
|
671
|
-
sendError(res, 409, 'conflict', `Candidate is not pending (status: ${current?.status ?? 'unknown'})`);
|
|
672
|
-
return;
|
|
673
|
-
}
|
|
674
|
-
sendSuccess(response, { success: true });
|
|
675
|
-
})(req, res);
|
|
676
|
-
return;
|
|
677
|
-
}
|
|
678
|
-
// POST /api/tasks/:id/cleanup
|
|
679
|
-
if (urlPath.startsWith('/api/tasks/') && urlPath.endsWith('/cleanup')) {
|
|
680
|
-
if (req.method !== 'POST') {
|
|
681
|
-
sendJson(res, 405, { success: false, error: 'Method not allowed' });
|
|
682
|
-
return;
|
|
683
|
-
}
|
|
684
|
-
const parts = urlPath.split('/');
|
|
685
|
-
const [, , , id] = parts;
|
|
686
|
-
if (!id) {
|
|
687
|
-
sendError(res, 400, 'missing_id', 'Missing principle ID');
|
|
688
|
-
return;
|
|
689
|
-
}
|
|
690
|
-
asyncHandler(async (_req, response) => {
|
|
691
|
-
const signals = services.pruningReadModel.getPrincipleSignals();
|
|
692
|
-
const signal = signals.find((s) => s.principleId === id);
|
|
693
|
-
if (!signal) {
|
|
694
|
-
sendNotFound(response, 'Principle not found in review signals');
|
|
695
|
-
return;
|
|
696
|
-
}
|
|
697
|
-
appendPruningReview(services.workspaceDir, {
|
|
698
|
-
principleId: id,
|
|
699
|
-
decision: 'archive-candidate',
|
|
700
|
-
note: 'Archived via PD Console',
|
|
701
|
-
reviewer: 'operator',
|
|
702
|
-
});
|
|
703
|
-
const archived = await services.stateManager.archivePrinciple(id);
|
|
704
|
-
if (!archived) {
|
|
705
|
-
sendNotFound(response, 'Principle not found in ledger');
|
|
706
|
-
return;
|
|
707
|
-
}
|
|
708
|
-
sendSuccess(response, { success: true });
|
|
709
|
-
})(req, res);
|
|
358
|
+
// GET /api/health
|
|
359
|
+
if (urlPath === '/api/health') {
|
|
360
|
+
asyncHandler(() => handleHealthRoute(req, res, services.workspaceDir))(req, res);
|
|
710
361
|
return;
|
|
711
362
|
}
|
|
712
363
|
// 404 fallback for API routes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface ActivationRecord {
|
|
2
|
+
id: string;
|
|
3
|
+
artifactId: string;
|
|
4
|
+
principleId: string;
|
|
5
|
+
channel: string;
|
|
6
|
+
action: string;
|
|
7
|
+
targetRef: string;
|
|
8
|
+
activatedAt: string | null;
|
|
9
|
+
status: 'active' | 'inactive';
|
|
10
|
+
}
|
|
11
|
+
export interface ActivationsResponse {
|
|
12
|
+
activations: ActivationRecord[];
|
|
13
|
+
generatedAt: string;
|
|
14
|
+
/** Present when data is degraded/missing rather than genuinely empty */
|
|
15
|
+
note?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class ActivationsConsoleModel {
|
|
18
|
+
private readConnection;
|
|
19
|
+
private writeConnection;
|
|
20
|
+
private readonly workspaceDir;
|
|
21
|
+
constructor(workspaceDir: string);
|
|
22
|
+
private getReadConnection;
|
|
23
|
+
private getWriteConnection;
|
|
24
|
+
getActivations(): Promise<ActivationsResponse>;
|
|
25
|
+
deactivateActivation(activationId: string): Promise<{
|
|
26
|
+
ok: true;
|
|
27
|
+
} | {
|
|
28
|
+
ok: false;
|
|
29
|
+
reason: string;
|
|
30
|
+
nextAction: string;
|
|
31
|
+
}>;
|
|
32
|
+
dispose(): void;
|
|
33
|
+
}
|