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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admission Events — PEAT-B2
|
|
3
|
+
*
|
|
4
|
+
* Structured event types for the pain evidence admission pipeline.
|
|
5
|
+
* These events make admission decisions observable without exposing raw data.
|
|
6
|
+
*
|
|
7
|
+
* Privacy boundary: events MUST NOT contain raw prompt, raw chat, raw trajectory,
|
|
8
|
+
* full local paths, file contents, env vars, tokens, or API keys.
|
|
9
|
+
*
|
|
10
|
+
* ERR checklist:
|
|
11
|
+
* - ERR-002: Every event has reason + nextAction.
|
|
12
|
+
* - ERR-009: Malformed input events include validation error details.
|
|
13
|
+
*/
|
|
14
|
+
import type { TriggerOutcome, TriggerDecision } from './trigger-controller.js';
|
|
15
|
+
import type { SourceKind, TriageDecision } from './types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Base fields shared by all admission events.
|
|
18
|
+
*/
|
|
19
|
+
interface AdmissionEventBase {
|
|
20
|
+
/** Unique event ID */
|
|
21
|
+
readonly eventId: string;
|
|
22
|
+
/** ISO timestamp */
|
|
23
|
+
readonly timestamp: string;
|
|
24
|
+
/** Source kind that was evaluated */
|
|
25
|
+
readonly sourceKind: SourceKind;
|
|
26
|
+
/** Workspace reference (directory name only, no full path) */
|
|
27
|
+
readonly workspaceRef: string;
|
|
28
|
+
/** Session ID (may be truncated for privacy) */
|
|
29
|
+
readonly sessionId?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Emitted when the admission controller makes a decision.
|
|
33
|
+
* This is the primary observability event for the admission pipeline.
|
|
34
|
+
*/
|
|
35
|
+
export interface AdmissionDecisionEvent extends AdmissionEventBase {
|
|
36
|
+
readonly eventType: 'admission_decision';
|
|
37
|
+
readonly triageDecision: TriageDecision;
|
|
38
|
+
readonly triggerOutcome: TriggerOutcome;
|
|
39
|
+
readonly reason: string;
|
|
40
|
+
readonly nextAction: string;
|
|
41
|
+
readonly shouldCreateDiagnosticTask: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Emitted when a diagnostic task is created as a result of admission.
|
|
45
|
+
*/
|
|
46
|
+
export interface DiagnosisTaskCreatedEvent extends AdmissionEventBase {
|
|
47
|
+
readonly eventType: 'diagnosis_task_created';
|
|
48
|
+
readonly painId: string;
|
|
49
|
+
readonly taskId: string;
|
|
50
|
+
readonly triggerOutcome: TriggerOutcome;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Emitted when evidence is recorded without triggering diagnosis.
|
|
54
|
+
*/
|
|
55
|
+
export interface EvidenceOnlyRecordedEvent extends AdmissionEventBase {
|
|
56
|
+
readonly eventType: 'evidence_only_recorded';
|
|
57
|
+
readonly triageDecision: TriageDecision;
|
|
58
|
+
readonly reason: string;
|
|
59
|
+
readonly nextAction: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Emitted when a signal is skipped or refused.
|
|
63
|
+
*/
|
|
64
|
+
export interface SkippedRefusedEvent extends AdmissionEventBase {
|
|
65
|
+
readonly eventType: 'skipped_refused';
|
|
66
|
+
readonly triggerOutcome: TriggerOutcome;
|
|
67
|
+
readonly reason: string;
|
|
68
|
+
readonly nextAction: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Union of all admission event types.
|
|
72
|
+
*/
|
|
73
|
+
export type AdmissionEvent = AdmissionDecisionEvent | DiagnosisTaskCreatedEvent | EvidenceOnlyRecordedEvent | SkippedRefusedEvent;
|
|
74
|
+
/**
|
|
75
|
+
* Create an AdmissionDecisionEvent from a TriggerDecision.
|
|
76
|
+
*
|
|
77
|
+
* This is the canonical way to produce an admission event.
|
|
78
|
+
* The event contains no raw sensitive data — only structured metadata.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createAdmissionDecisionEvent(decision: TriggerDecision, options: {
|
|
81
|
+
workspaceRef: string;
|
|
82
|
+
sessionId?: string;
|
|
83
|
+
}): AdmissionDecisionEvent;
|
|
84
|
+
/**
|
|
85
|
+
* Create a DiagnosisTaskCreatedEvent.
|
|
86
|
+
*/
|
|
87
|
+
export declare function createDiagnosisTaskCreatedEvent(opts: {
|
|
88
|
+
painId: string;
|
|
89
|
+
taskId: string;
|
|
90
|
+
decision: TriggerDecision;
|
|
91
|
+
workspaceRef: string;
|
|
92
|
+
sessionId?: string;
|
|
93
|
+
}): DiagnosisTaskCreatedEvent;
|
|
94
|
+
/**
|
|
95
|
+
* Create an EvidenceOnlyRecordedEvent.
|
|
96
|
+
*/
|
|
97
|
+
export declare function createEvidenceOnlyRecordedEvent(decision: TriggerDecision, options: {
|
|
98
|
+
workspaceRef: string;
|
|
99
|
+
sessionId?: string;
|
|
100
|
+
}): EvidenceOnlyRecordedEvent;
|
|
101
|
+
/**
|
|
102
|
+
* Create a SkippedRefusedEvent.
|
|
103
|
+
*/
|
|
104
|
+
export declare function createSkippedRefusedEvent(decision: TriggerDecision, options: {
|
|
105
|
+
workspaceRef: string;
|
|
106
|
+
sessionId?: string;
|
|
107
|
+
}): SkippedRefusedEvent;
|
|
108
|
+
/**
|
|
109
|
+
* Serialize an admission event to a JSONL-safe string.
|
|
110
|
+
*
|
|
111
|
+
* Privacy boundary: only structured fields are included.
|
|
112
|
+
* No raw prompt/chat/trajectory/file content/token/path secrets.
|
|
113
|
+
*/
|
|
114
|
+
export declare function serializeAdmissionEvent(event: AdmissionEvent): string;
|
|
115
|
+
/**
|
|
116
|
+
* Validate that an admission event does not contain raw sensitive data.
|
|
117
|
+
*
|
|
118
|
+
* Returns true if the event passes privacy checks.
|
|
119
|
+
* This is a defense-in-depth check for tests and auditing.
|
|
120
|
+
*/
|
|
121
|
+
export declare function validateEventPrivacy(event: AdmissionEvent): {
|
|
122
|
+
valid: boolean;
|
|
123
|
+
violations: string[];
|
|
124
|
+
};
|
|
125
|
+
export {};
|
|
126
|
+
//# sourceMappingURL=admission-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission-events.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/admission-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admission Events — PEAT-B2
|
|
3
|
+
*
|
|
4
|
+
* Structured event types for the pain evidence admission pipeline.
|
|
5
|
+
* These events make admission decisions observable without exposing raw data.
|
|
6
|
+
*
|
|
7
|
+
* Privacy boundary: events MUST NOT contain raw prompt, raw chat, raw trajectory,
|
|
8
|
+
* full local paths, file contents, env vars, tokens, or API keys.
|
|
9
|
+
*
|
|
10
|
+
* ERR checklist:
|
|
11
|
+
* - ERR-002: Every event has reason + nextAction.
|
|
12
|
+
* - ERR-009: Malformed input events include validation error details.
|
|
13
|
+
*/
|
|
14
|
+
// ── Event Factory Functions ─────────────────────────────────────────────────
|
|
15
|
+
let eventCounter = 0;
|
|
16
|
+
function nextEventId() {
|
|
17
|
+
return `adm_${Date.now()}_${++eventCounter}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create an AdmissionDecisionEvent from a TriggerDecision.
|
|
21
|
+
*
|
|
22
|
+
* This is the canonical way to produce an admission event.
|
|
23
|
+
* The event contains no raw sensitive data — only structured metadata.
|
|
24
|
+
*/
|
|
25
|
+
export function createAdmissionDecisionEvent(decision, options) {
|
|
26
|
+
return {
|
|
27
|
+
eventType: 'admission_decision',
|
|
28
|
+
eventId: nextEventId(),
|
|
29
|
+
timestamp: decision.decidedAt,
|
|
30
|
+
sourceKind: decision.sourceKind,
|
|
31
|
+
workspaceRef: options.workspaceRef,
|
|
32
|
+
sessionId: options.sessionId,
|
|
33
|
+
triageDecision: decision.triageDecision,
|
|
34
|
+
triggerOutcome: decision.outcome,
|
|
35
|
+
reason: decision.reason,
|
|
36
|
+
nextAction: decision.nextAction,
|
|
37
|
+
shouldCreateDiagnosticTask: decision.shouldCreateDiagnosticTask,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a DiagnosisTaskCreatedEvent.
|
|
42
|
+
*/
|
|
43
|
+
export function createDiagnosisTaskCreatedEvent(opts) {
|
|
44
|
+
return {
|
|
45
|
+
eventType: 'diagnosis_task_created',
|
|
46
|
+
eventId: nextEventId(),
|
|
47
|
+
timestamp: new Date().toISOString(),
|
|
48
|
+
sourceKind: opts.decision.sourceKind,
|
|
49
|
+
workspaceRef: opts.workspaceRef,
|
|
50
|
+
sessionId: opts.sessionId,
|
|
51
|
+
painId: opts.painId,
|
|
52
|
+
taskId: opts.taskId,
|
|
53
|
+
triggerOutcome: opts.decision.outcome,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create an EvidenceOnlyRecordedEvent.
|
|
58
|
+
*/
|
|
59
|
+
export function createEvidenceOnlyRecordedEvent(decision, options) {
|
|
60
|
+
return {
|
|
61
|
+
eventType: 'evidence_only_recorded',
|
|
62
|
+
eventId: nextEventId(),
|
|
63
|
+
timestamp: decision.decidedAt,
|
|
64
|
+
sourceKind: decision.sourceKind,
|
|
65
|
+
workspaceRef: options.workspaceRef,
|
|
66
|
+
sessionId: options.sessionId,
|
|
67
|
+
triageDecision: decision.triageDecision,
|
|
68
|
+
reason: decision.reason,
|
|
69
|
+
nextAction: decision.nextAction,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create a SkippedRefusedEvent.
|
|
74
|
+
*/
|
|
75
|
+
export function createSkippedRefusedEvent(decision, options) {
|
|
76
|
+
return {
|
|
77
|
+
eventType: 'skipped_refused',
|
|
78
|
+
eventId: nextEventId(),
|
|
79
|
+
timestamp: decision.decidedAt,
|
|
80
|
+
sourceKind: decision.sourceKind,
|
|
81
|
+
workspaceRef: options.workspaceRef,
|
|
82
|
+
sessionId: options.sessionId,
|
|
83
|
+
triggerOutcome: decision.outcome,
|
|
84
|
+
reason: decision.reason,
|
|
85
|
+
nextAction: decision.nextAction,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// ── Event Serialization ─────────────────────────────────────────────────────
|
|
89
|
+
/**
|
|
90
|
+
* Serialize an admission event to a JSONL-safe string.
|
|
91
|
+
*
|
|
92
|
+
* Privacy boundary: only structured fields are included.
|
|
93
|
+
* No raw prompt/chat/trajectory/file content/token/path secrets.
|
|
94
|
+
*/
|
|
95
|
+
export function serializeAdmissionEvent(event) {
|
|
96
|
+
// Explicit field selection prevents accidental raw data leakage
|
|
97
|
+
const safe = {
|
|
98
|
+
eventType: event.eventType,
|
|
99
|
+
eventId: event.eventId,
|
|
100
|
+
timestamp: event.timestamp,
|
|
101
|
+
sourceKind: event.sourceKind,
|
|
102
|
+
workspaceRef: event.workspaceRef,
|
|
103
|
+
sessionId: event.sessionId,
|
|
104
|
+
};
|
|
105
|
+
if (event.eventType === 'admission_decision') {
|
|
106
|
+
safe.triageDecision = event.triageDecision;
|
|
107
|
+
safe.triggerOutcome = event.triggerOutcome;
|
|
108
|
+
safe.reason = event.reason;
|
|
109
|
+
safe.nextAction = event.nextAction;
|
|
110
|
+
safe.shouldCreateDiagnosticTask = event.shouldCreateDiagnosticTask;
|
|
111
|
+
}
|
|
112
|
+
else if (event.eventType === 'diagnosis_task_created') {
|
|
113
|
+
safe.painId = event.painId;
|
|
114
|
+
safe.taskId = event.taskId;
|
|
115
|
+
safe.triggerOutcome = event.triggerOutcome;
|
|
116
|
+
}
|
|
117
|
+
else if (event.eventType === 'evidence_only_recorded') {
|
|
118
|
+
safe.triageDecision = event.triageDecision;
|
|
119
|
+
safe.reason = event.reason;
|
|
120
|
+
safe.nextAction = event.nextAction;
|
|
121
|
+
}
|
|
122
|
+
else if (event.eventType === 'skipped_refused') {
|
|
123
|
+
safe.triggerOutcome = event.triggerOutcome;
|
|
124
|
+
safe.reason = event.reason;
|
|
125
|
+
safe.nextAction = event.nextAction;
|
|
126
|
+
}
|
|
127
|
+
return JSON.stringify(safe);
|
|
128
|
+
}
|
|
129
|
+
// ── Validation ──────────────────────────────────────────────────────────────
|
|
130
|
+
/**
|
|
131
|
+
* Validate that an admission event does not contain raw sensitive data.
|
|
132
|
+
*
|
|
133
|
+
* Returns true if the event passes privacy checks.
|
|
134
|
+
* This is a defense-in-depth check for tests and auditing.
|
|
135
|
+
*/
|
|
136
|
+
export function validateEventPrivacy(event) {
|
|
137
|
+
const violations = [];
|
|
138
|
+
const serialized = JSON.stringify(event);
|
|
139
|
+
// Check for common sensitive patterns
|
|
140
|
+
if (/sk-[a-zA-Z0-9]{20,}/.test(serialized)) {
|
|
141
|
+
violations.push('potential_api_key_detected');
|
|
142
|
+
}
|
|
143
|
+
// Check for absolute paths in JSON-serialized form.
|
|
144
|
+
// JSON.stringify('C:\\Users\\admin') produces "C:\\\\Users\\\\admin" in the JSON string.
|
|
145
|
+
// At runtime, serialized.includes('Users\\') checks for Users followed by one backslash.
|
|
146
|
+
const hasWindowsPath = serialized.includes('Users\\') ||
|
|
147
|
+
/[A-Z]:\\[Uu]sers/.test(serialized);
|
|
148
|
+
if (hasWindowsPath) {
|
|
149
|
+
violations.push('absolute_windows_path_detected');
|
|
150
|
+
}
|
|
151
|
+
if (/\/home\/[a-z]/.test(serialized)) {
|
|
152
|
+
violations.push('absolute_unix_path_detected');
|
|
153
|
+
}
|
|
154
|
+
if (/"prompt"\s*:\s*"/.test(serialized) && serialized.length > 2000) {
|
|
155
|
+
violations.push('potential_raw_prompt_in_event');
|
|
156
|
+
}
|
|
157
|
+
return { valid: violations.length === 0, violations };
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=admission-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission-events.js","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/admission-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence Triage — PEAT-B1 → B2
|
|
3
|
+
*
|
|
4
|
+
* Public API for pre-diagnosis evidence triage and trigger control.
|
|
5
|
+
* Pure types and policy — no I/O, no plugin imports.
|
|
6
|
+
*/
|
|
7
|
+
export type { SourceKind, TriageDecision, TriageResult, TriageInput, } from './types.js';
|
|
8
|
+
export { isSourceKind } from './types.js';
|
|
9
|
+
export type { SourceDescriptor } from './source-descriptors.js';
|
|
10
|
+
export { SOURCE_DESCRIPTORS, getSourceDescriptor } from './source-descriptors.js';
|
|
11
|
+
export { evaluateTriage } from './triage-policy.js';
|
|
12
|
+
export type { TriggerOutcome, TriggerDecision, TriggerControllerInput, } from './trigger-controller.js';
|
|
13
|
+
export { evaluateTriggerController, shouldCreateTask, isAdmittedOutcome, isSkippedOutcome, } from './trigger-controller.js';
|
|
14
|
+
export type { AdmissionDecisionEvent, DiagnosisTaskCreatedEvent, EvidenceOnlyRecordedEvent, SkippedRefusedEvent, AdmissionEvent, } from './admission-events.js';
|
|
15
|
+
export { createAdmissionDecisionEvent, createDiagnosisTaskCreatedEvent, createEvidenceOnlyRecordedEvent, createSkippedRefusedEvent, serializeAdmissionEvent, validateEventPrivacy, } from './admission-events.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence Triage — PEAT-B1 → B2
|
|
3
|
+
*
|
|
4
|
+
* Public API for pre-diagnosis evidence triage and trigger control.
|
|
5
|
+
* Pure types and policy — no I/O, no plugin imports.
|
|
6
|
+
*/
|
|
7
|
+
export { isSourceKind } from './types.js';
|
|
8
|
+
export { SOURCE_DESCRIPTORS, getSourceDescriptor } from './source-descriptors.js';
|
|
9
|
+
// Triage policy
|
|
10
|
+
export { evaluateTriage } from './triage-policy.js';
|
|
11
|
+
export { evaluateTriggerController, shouldCreateTask, isAdmittedOutcome, isSkippedOutcome, } from './trigger-controller.js';
|
|
12
|
+
export { createAdmissionDecisionEvent, createDiagnosisTaskCreatedEvent, createEvidenceOnlyRecordedEvent, createSkippedRefusedEvent, serializeAdmissionEvent, validateEventPrivacy, } from './admission-events.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAElF,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Descriptors — PEAT-B1
|
|
3
|
+
*
|
|
4
|
+
* Declarative policy mapping from SourceKind to default TriageDecision.
|
|
5
|
+
* This is pure data — no I/O, no plugin imports.
|
|
6
|
+
*
|
|
7
|
+
* Each descriptor defines:
|
|
8
|
+
* - kind: the SourceKind it describes
|
|
9
|
+
* - defaultDecision: the default triage decision
|
|
10
|
+
* - reason: why this default was chosen
|
|
11
|
+
* - nextAction: what should happen when this decision is applied
|
|
12
|
+
* - canUpgrade: whether the plugin adapter may upgrade the decision
|
|
13
|
+
* (e.g., rulehost_block can be upgraded to 'admit' for unsafe actions)
|
|
14
|
+
*
|
|
15
|
+
* ERR checklist:
|
|
16
|
+
* - ERR-002: Every descriptor carries reason + nextAction.
|
|
17
|
+
* - ERR-005: Descriptors are data, not assumptions about callers.
|
|
18
|
+
*/
|
|
19
|
+
import type { SourceKind, TriageDecision } from './types.js';
|
|
20
|
+
export interface SourceDescriptor {
|
|
21
|
+
readonly kind: SourceKind;
|
|
22
|
+
readonly defaultDecision: TriageDecision;
|
|
23
|
+
readonly reason: string;
|
|
24
|
+
readonly nextAction: string;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the plugin adapter may upgrade this decision.
|
|
27
|
+
* When true, the adapter can override defaultDecision based on context
|
|
28
|
+
* (e.g., isUnsafeHighConfidence for rulehost_block).
|
|
29
|
+
*/
|
|
30
|
+
readonly canUpgrade: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Source kind descriptors. Order does not matter — lookup is by kind.
|
|
34
|
+
*
|
|
35
|
+
* Design rationale per PRODUCT_IDENTITY.md and ADR-0014:
|
|
36
|
+
* - PD owns owner-relevant behavior evidence, not tool repair.
|
|
37
|
+
* - Manual/owner-reported pain has highest confidence.
|
|
38
|
+
* - Tool failures are infrastructure noise (OpenClaw's job, not PD's).
|
|
39
|
+
* - Empathy-inferred frustration must never silently create diagnosis.
|
|
40
|
+
* - GFI alone cannot trigger diagnosis (it's a session health metric).
|
|
41
|
+
*/
|
|
42
|
+
export declare const SOURCE_DESCRIPTORS: ReadonlyMap<SourceKind, SourceDescriptor>;
|
|
43
|
+
/**
|
|
44
|
+
* Get the source descriptor for a given kind.
|
|
45
|
+
* Returns undefined if the kind is not registered (caller should treat as 'unknown').
|
|
46
|
+
*/
|
|
47
|
+
export declare function getSourceDescriptor(kind: SourceKind): SourceDescriptor | undefined;
|
|
48
|
+
//# sourceMappingURL=source-descriptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-descriptors.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/source-descriptors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAID;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,UAAU,EAAE,gBAAgB,CA4FvE,CAAC;AAIH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAElF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Descriptors — PEAT-B1
|
|
3
|
+
*
|
|
4
|
+
* Declarative policy mapping from SourceKind to default TriageDecision.
|
|
5
|
+
* This is pure data — no I/O, no plugin imports.
|
|
6
|
+
*
|
|
7
|
+
* Each descriptor defines:
|
|
8
|
+
* - kind: the SourceKind it describes
|
|
9
|
+
* - defaultDecision: the default triage decision
|
|
10
|
+
* - reason: why this default was chosen
|
|
11
|
+
* - nextAction: what should happen when this decision is applied
|
|
12
|
+
* - canUpgrade: whether the plugin adapter may upgrade the decision
|
|
13
|
+
* (e.g., rulehost_block can be upgraded to 'admit' for unsafe actions)
|
|
14
|
+
*
|
|
15
|
+
* ERR checklist:
|
|
16
|
+
* - ERR-002: Every descriptor carries reason + nextAction.
|
|
17
|
+
* - ERR-005: Descriptors are data, not assumptions about callers.
|
|
18
|
+
*/
|
|
19
|
+
// ── Descriptor Registry ─────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* Source kind descriptors. Order does not matter — lookup is by kind.
|
|
22
|
+
*
|
|
23
|
+
* Design rationale per PRODUCT_IDENTITY.md and ADR-0014:
|
|
24
|
+
* - PD owns owner-relevant behavior evidence, not tool repair.
|
|
25
|
+
* - Manual/owner-reported pain has highest confidence.
|
|
26
|
+
* - Tool failures are infrastructure noise (OpenClaw's job, not PD's).
|
|
27
|
+
* - Empathy-inferred frustration must never silently create diagnosis.
|
|
28
|
+
* - GFI alone cannot trigger diagnosis (it's a session health metric).
|
|
29
|
+
*/
|
|
30
|
+
export const SOURCE_DESCRIPTORS = new Map([
|
|
31
|
+
['owner_reported', {
|
|
32
|
+
kind: 'owner_reported',
|
|
33
|
+
defaultDecision: 'admit',
|
|
34
|
+
reason: 'Owner explicitly reported pain. Highest confidence signal.',
|
|
35
|
+
nextAction: 'none',
|
|
36
|
+
canUpgrade: false,
|
|
37
|
+
}],
|
|
38
|
+
['agent_on_owner_request', {
|
|
39
|
+
kind: 'agent_on_owner_request',
|
|
40
|
+
defaultDecision: 'admit',
|
|
41
|
+
reason: 'Agent recorded pain at owner request. Owner intent preserved.',
|
|
42
|
+
nextAction: 'none',
|
|
43
|
+
canUpgrade: false,
|
|
44
|
+
}],
|
|
45
|
+
['tool_failure', {
|
|
46
|
+
kind: 'tool_failure',
|
|
47
|
+
defaultDecision: 'evidence_only',
|
|
48
|
+
reason: 'Tool failure is infrastructure noise. PD does not own tool repair (ADR-0014).',
|
|
49
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
50
|
+
canUpgrade: false,
|
|
51
|
+
}],
|
|
52
|
+
['dispatch_error', {
|
|
53
|
+
kind: 'dispatch_error',
|
|
54
|
+
defaultDecision: 'evidence_only',
|
|
55
|
+
reason: 'Dispatch/subagent routing error. Not a behavior pattern.',
|
|
56
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
57
|
+
canUpgrade: false,
|
|
58
|
+
}],
|
|
59
|
+
['provider_failure', {
|
|
60
|
+
kind: 'provider_failure',
|
|
61
|
+
defaultDecision: 'health_only',
|
|
62
|
+
reason: 'LLM provider failure. Infrastructure health signal, not owner-relevant behavior.',
|
|
63
|
+
nextAction: 'record_in_health_telemetry',
|
|
64
|
+
canUpgrade: false,
|
|
65
|
+
}],
|
|
66
|
+
['rate_limit', {
|
|
67
|
+
kind: 'rate_limit',
|
|
68
|
+
defaultDecision: 'health_only',
|
|
69
|
+
reason: 'LLM provider rate limit. Infrastructure health signal, not owner-relevant behavior.',
|
|
70
|
+
nextAction: 'record_in_health_telemetry',
|
|
71
|
+
canUpgrade: false,
|
|
72
|
+
}],
|
|
73
|
+
['rulehost_block', {
|
|
74
|
+
kind: 'rulehost_block',
|
|
75
|
+
defaultDecision: 'evidence_only',
|
|
76
|
+
reason: 'RuleHost block is near-miss evidence. Default evidence-only.',
|
|
77
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
78
|
+
canUpgrade: true, // adapter can upgrade to 'admit' for high-confidence unsafe actions
|
|
79
|
+
}],
|
|
80
|
+
['empathy_inferred', {
|
|
81
|
+
kind: 'empathy_inferred',
|
|
82
|
+
defaultDecision: 'owner_confirm',
|
|
83
|
+
reason: 'Empathy-inferred frustration. Never silently creates diagnosis (PRODUCT_IDENTITY: owner-governed).',
|
|
84
|
+
nextAction: 'request_owner_confirmation_before_diagnosis',
|
|
85
|
+
canUpgrade: false,
|
|
86
|
+
}],
|
|
87
|
+
['semantic', {
|
|
88
|
+
kind: 'semantic',
|
|
89
|
+
defaultDecision: 'evidence_only',
|
|
90
|
+
reason: 'Keyword/detection match. Not explicit owner pain. Needs accumulation.',
|
|
91
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
92
|
+
canUpgrade: false,
|
|
93
|
+
}],
|
|
94
|
+
['llm_paralysis', {
|
|
95
|
+
kind: 'llm_paralysis',
|
|
96
|
+
defaultDecision: 'evidence_only',
|
|
97
|
+
reason: 'Session health signal. GFI alone cannot create diagnosis.',
|
|
98
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
99
|
+
canUpgrade: false,
|
|
100
|
+
}],
|
|
101
|
+
['subagent_error', {
|
|
102
|
+
kind: 'subagent_error',
|
|
103
|
+
defaultDecision: 'evidence_only',
|
|
104
|
+
reason: 'Subagent workflow failure. Not a behavior pattern by itself.',
|
|
105
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
106
|
+
canUpgrade: false,
|
|
107
|
+
}],
|
|
108
|
+
['gfi_threshold', {
|
|
109
|
+
kind: 'gfi_threshold',
|
|
110
|
+
defaultDecision: 'evidence_only',
|
|
111
|
+
reason: 'Accumulated GFI. GFI alone cannot create diagnosis per acceptance criteria.',
|
|
112
|
+
nextAction: 'store_as_evidence_for_later_correlation',
|
|
113
|
+
canUpgrade: false,
|
|
114
|
+
}],
|
|
115
|
+
['unknown', {
|
|
116
|
+
kind: 'unknown',
|
|
117
|
+
defaultDecision: 'evidence_only',
|
|
118
|
+
reason: 'Unclassified source. Conservative default.',
|
|
119
|
+
nextAction: 'classify_source_kind_and_store_as_evidence',
|
|
120
|
+
canUpgrade: false,
|
|
121
|
+
}],
|
|
122
|
+
]);
|
|
123
|
+
// ── Lookup ───────────────────────────────────────────────────────────────────
|
|
124
|
+
/**
|
|
125
|
+
* Get the source descriptor for a given kind.
|
|
126
|
+
* Returns undefined if the kind is not registered (caller should treat as 'unknown').
|
|
127
|
+
*/
|
|
128
|
+
export function getSourceDescriptor(kind) {
|
|
129
|
+
return SOURCE_DESCRIPTORS.get(kind);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=source-descriptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-descriptors.js","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/source-descriptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triage Policy — PEAT-B1
|
|
3
|
+
*
|
|
4
|
+
* Pure policy evaluation for pre-diagnosis evidence triage.
|
|
5
|
+
* No I/O, no plugin imports, no side effects.
|
|
6
|
+
*
|
|
7
|
+
* This module evaluates a TriageInput against source descriptors
|
|
8
|
+
* and returns a TriageResult. The plugin adapter calls this function
|
|
9
|
+
* and uses the result to decide whether to proceed to diagnosis.
|
|
10
|
+
*
|
|
11
|
+
* ERR checklist:
|
|
12
|
+
* - ERR-001: No `as` casts. Input validated with runtime guards.
|
|
13
|
+
* - ERR-002: Every result carries structured reason + nextAction.
|
|
14
|
+
* - ERR-005: Input is unknown, validated field-by-field.
|
|
15
|
+
*/
|
|
16
|
+
import type { TriageInput, TriageResult } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Evaluate triage policy for incoming evidence.
|
|
19
|
+
*
|
|
20
|
+
* This is the pure policy function. It does not:
|
|
21
|
+
* - Call PainDiagnosticGate
|
|
22
|
+
* - Write to event log or trajectory
|
|
23
|
+
* - Create diagnostic tasks
|
|
24
|
+
* - Import anything from the plugin layer
|
|
25
|
+
*
|
|
26
|
+
* It only reads source descriptors and applies policy rules.
|
|
27
|
+
*
|
|
28
|
+
* @param input - Triage input with source kind and context
|
|
29
|
+
* @returns Structured triage result with decision, reason, and nextAction
|
|
30
|
+
*/
|
|
31
|
+
export declare function evaluateTriage(input: TriageInput): TriageResult;
|
|
32
|
+
//# sourceMappingURL=triage-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-policy.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/evidence-triage/triage-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAA8B,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuCxF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAmC/D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triage Policy — PEAT-B1
|
|
3
|
+
*
|
|
4
|
+
* Pure policy evaluation for pre-diagnosis evidence triage.
|
|
5
|
+
* No I/O, no plugin imports, no side effects.
|
|
6
|
+
*
|
|
7
|
+
* This module evaluates a TriageInput against source descriptors
|
|
8
|
+
* and returns a TriageResult. The plugin adapter calls this function
|
|
9
|
+
* and uses the result to decide whether to proceed to diagnosis.
|
|
10
|
+
*
|
|
11
|
+
* ERR checklist:
|
|
12
|
+
* - ERR-001: No `as` casts. Input validated with runtime guards.
|
|
13
|
+
* - ERR-002: Every result carries structured reason + nextAction.
|
|
14
|
+
* - ERR-005: Input is unknown, validated field-by-field.
|
|
15
|
+
*/
|
|
16
|
+
import { isSourceKind } from './types.js';
|
|
17
|
+
import { getSourceDescriptor } from './source-descriptors.js';
|
|
18
|
+
// ── Upgrade Rules ───────────────────────────────────────────────────────────
|
|
19
|
+
/**
|
|
20
|
+
* Apply upgrade rules for upgradable source kinds.
|
|
21
|
+
*
|
|
22
|
+
* Currently only 'rulehost_block' can be upgraded:
|
|
23
|
+
* - If isUnsafeHighConfidence is true, upgrade from 'evidence_only' to 'admit'
|
|
24
|
+
*
|
|
25
|
+
* This is the ONLY place where context-dependent upgrades happen in core.
|
|
26
|
+
* The plugin adapter sets isUnsafeHighConfidence based on hook context.
|
|
27
|
+
*/
|
|
28
|
+
function applyUpgradeRules(input, defaultDecision) {
|
|
29
|
+
if (input.sourceKind === 'rulehost_block' && input.isUnsafeHighConfidence === true) {
|
|
30
|
+
return 'admit';
|
|
31
|
+
}
|
|
32
|
+
return defaultDecision;
|
|
33
|
+
}
|
|
34
|
+
function getUpgradeReason(sourceKind, decision, input) {
|
|
35
|
+
if (sourceKind === 'rulehost_block' && decision === 'admit') {
|
|
36
|
+
return `RuleHost blocked a high-confidence unsafe action (score=${input.score}). Upgrading to direct diagnosis.`;
|
|
37
|
+
}
|
|
38
|
+
// Should not reach here — fallback
|
|
39
|
+
return `Upgraded decision for ${sourceKind}: ${decision}`;
|
|
40
|
+
}
|
|
41
|
+
function getUpgradeNextAction(sourceKind, decision) {
|
|
42
|
+
if (sourceKind === 'rulehost_block' && decision === 'admit') {
|
|
43
|
+
return 'none';
|
|
44
|
+
}
|
|
45
|
+
return 'none';
|
|
46
|
+
}
|
|
47
|
+
// ── Evaluation ──────────────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Evaluate triage policy for incoming evidence.
|
|
50
|
+
*
|
|
51
|
+
* This is the pure policy function. It does not:
|
|
52
|
+
* - Call PainDiagnosticGate
|
|
53
|
+
* - Write to event log or trajectory
|
|
54
|
+
* - Create diagnostic tasks
|
|
55
|
+
* - Import anything from the plugin layer
|
|
56
|
+
*
|
|
57
|
+
* It only reads source descriptors and applies policy rules.
|
|
58
|
+
*
|
|
59
|
+
* @param input - Triage input with source kind and context
|
|
60
|
+
* @returns Structured triage result with decision, reason, and nextAction
|
|
61
|
+
*/
|
|
62
|
+
export function evaluateTriage(input) {
|
|
63
|
+
// ERR-001: validate sourceKind with runtime guard
|
|
64
|
+
const sourceKind = isSourceKind(input.sourceKind) ? input.sourceKind : 'unknown';
|
|
65
|
+
// Look up descriptor
|
|
66
|
+
const descriptor = getSourceDescriptor(sourceKind);
|
|
67
|
+
if (!descriptor) {
|
|
68
|
+
// Fallback for unregistered kinds (should not happen with 'unknown' in registry)
|
|
69
|
+
return {
|
|
70
|
+
decision: 'evidence_only',
|
|
71
|
+
sourceKind: 'unknown',
|
|
72
|
+
reason: `Source kind '${sourceKind}' not found in descriptor registry. Conservative default.`,
|
|
73
|
+
nextAction: 'classify_source_kind_and_store_as_evidence',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// Apply upgrade rules for upgradable kinds
|
|
77
|
+
if (descriptor.canUpgrade) {
|
|
78
|
+
const upgraded = applyUpgradeRules(input, descriptor.defaultDecision);
|
|
79
|
+
if (upgraded !== descriptor.defaultDecision) {
|
|
80
|
+
return {
|
|
81
|
+
decision: upgraded,
|
|
82
|
+
sourceKind,
|
|
83
|
+
reason: getUpgradeReason(sourceKind, upgraded, input),
|
|
84
|
+
nextAction: getUpgradeNextAction(sourceKind, upgraded),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
decision: descriptor.defaultDecision,
|
|
90
|
+
sourceKind,
|
|
91
|
+
reason: descriptor.reason,
|
|
92
|
+
nextAction: descriptor.nextAction,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=triage-policy.js.map
|