create-principles-disciple 1.93.0 → 1.95.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/WorkspaceConfigStore.js +2 -1
- package/console/dist/server/config/pd-config-store.d.ts +40 -1
- package/console/dist/server/config/pd-config-store.js +170 -1
- package/console/dist/server/index.js +28 -10
- package/console/dist/server/models/ApprovalsConsoleModel.js +4 -12
- package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +0 -2
- package/console/dist/server/models/EvidenceChainConsoleModel.js +36 -2
- package/console/dist/server/models/HealthCheckModel.js +5 -3
- package/console/dist/server/models/IntentDecisionModel.d.ts +66 -0
- package/console/dist/server/models/IntentDecisionModel.js +207 -0
- package/console/dist/server/models/IntentPageModel.d.ts +18 -0
- package/console/dist/server/models/IntentPageModel.js +90 -0
- package/console/dist/server/models/PrinciplesConsoleModel.d.ts +2 -0
- package/console/dist/server/models/PrinciplesConsoleModel.js +37 -1
- package/console/dist/server/models/WorkspaceService.d.ts +0 -28
- package/console/dist/server/models/WorkspaceService.js +0 -115
- package/console/dist/server/routes/config.js +55 -1
- package/console/dist/server/routes/feedback-reports.js +1 -1
- package/console/dist/server/routes/intent-decisions.d.ts +33 -0
- package/console/dist/server/routes/intent-decisions.js +499 -0
- package/console/dist/server/routes/intent.d.ts +3 -0
- package/console/dist/server/routes/intent.js +35 -0
- package/console/dist/server/routes/principles.js +67 -1
- package/console/dist/server/routes/update.d.ts +0 -1
- package/console/dist/server/routes/update.js +14 -11
- package/console/dist/ui/App.js +2 -7
- package/console/dist/ui/api.d.ts +44 -18
- package/console/dist/ui/api.js +44 -5
- package/console/dist/ui/components/layout/app-sidebar.js +2 -1
- package/console/dist/ui/components/ui/badge.d.ts +1 -1
- package/console/dist/ui/components/ui/button.d.ts +1 -1
- package/console/dist/ui/components/ui/shiny-text.d.ts +28 -0
- package/console/dist/ui/components/ui/shiny-text.js +46 -0
- package/console/dist/ui/i18n/en.json +167 -3
- package/console/dist/ui/i18n/zh-CN.json +167 -3
- package/console/dist/ui/pages/activation/ActivationPage.js +2 -1
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +28 -2
- package/console/dist/ui/pages/control-center/EmpathyObserverCostHint.d.ts +28 -0
- package/console/dist/ui/pages/control-center/EmpathyObserverCostHint.js +38 -0
- package/console/dist/ui/pages/debt/DebtPage.js +219 -2
- package/console/dist/ui/pages/focus/FocusPage.js +2 -1
- package/console/dist/ui/pages/intent/IntentPage.d.ts +1 -0
- package/console/dist/ui/pages/intent/IntentPage.js +147 -0
- package/console/dist/ui/pages/pain/PainPage.js +234 -4
- package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +75 -0
- package/console/dist/ui/pages/pain/pain-card-helpers.js +78 -0
- package/console/dist/ui/pages/principles/PrinciplesPage.js +2 -1
- package/console/dist/ui/utils/validators.d.ts +163 -0
- package/console/dist/ui/utils/validators.js +433 -0
- package/console/dist/web/assets/app.css +138 -0
- package/console/dist/web/assets/app.js +3124 -1288
- package/console/package.json +3 -0
- package/core/dist/index.d.ts +2 -2
- package/core/dist/index.d.ts.map +1 -1
- package/core/dist/index.js +1 -1
- package/core/dist/index.js.map +1 -1
- package/core/dist/principle-tree-ledger.d.ts +55 -4
- package/core/dist/principle-tree-ledger.d.ts.map +1 -1
- package/core/dist/principle-tree-ledger.js +472 -13
- package/core/dist/principle-tree-ledger.js.map +1 -1
- package/core/dist/prompt-builder/__tests__/model-config.test.d.ts +2 -0
- package/core/dist/prompt-builder/__tests__/model-config.test.d.ts.map +1 -0
- package/core/dist/prompt-builder/__tests__/model-config.test.js +158 -0
- package/core/dist/prompt-builder/__tests__/model-config.test.js.map +1 -0
- package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js +58 -0
- package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js.map +1 -1
- package/core/dist/prompt-builder/__tests__/xml-escape.test.d.ts +2 -0
- package/core/dist/prompt-builder/__tests__/xml-escape.test.d.ts.map +1 -0
- package/core/dist/prompt-builder/__tests__/xml-escape.test.js +42 -0
- package/core/dist/prompt-builder/__tests__/xml-escape.test.js.map +1 -0
- package/core/dist/prompt-builder/empathy-keyword-matching.d.ts.map +1 -1
- package/core/dist/prompt-builder/empathy-keyword-matching.js +9 -6
- package/core/dist/prompt-builder/empathy-keyword-matching.js.map +1 -1
- package/core/dist/prompt-builder/index.d.ts +3 -0
- package/core/dist/prompt-builder/index.d.ts.map +1 -1
- package/core/dist/prompt-builder/index.js +2 -0
- package/core/dist/prompt-builder/index.js.map +1 -1
- package/core/dist/prompt-builder/model-config.d.ts +42 -0
- package/core/dist/prompt-builder/model-config.d.ts.map +1 -0
- package/core/dist/prompt-builder/model-config.js +84 -0
- package/core/dist/prompt-builder/model-config.js.map +1 -0
- package/core/dist/prompt-builder/size-guard.d.ts +1 -0
- package/core/dist/prompt-builder/size-guard.d.ts.map +1 -1
- package/core/dist/prompt-builder/size-guard.js +21 -0
- package/core/dist/prompt-builder/size-guard.js.map +1 -1
- package/core/dist/prompt-builder/types.d.ts +2 -0
- package/core/dist/prompt-builder/types.d.ts.map +1 -1
- package/core/dist/prompt-builder/xml-escape.d.ts +12 -0
- package/core/dist/prompt-builder/xml-escape.d.ts.map +1 -0
- package/core/dist/prompt-builder/xml-escape.js +19 -0
- package/core/dist/prompt-builder/xml-escape.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +205 -48
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.js +284 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-intent-tension.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js +500 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-result-shaping.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +7 -5
- package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pi-artifact-store.test.js +11 -0
- package/core/dist/runtime-v2/__tests__/pi-artifact-store.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +15 -2
- package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/schema-float-precision.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/schema-float-precision.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/schema-float-precision.test.js +290 -0
- package/core/dist/runtime-v2/__tests__/schema-float-precision.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.js +158 -0
- package/core/dist/runtime-v2/__tests__/schema-orphan-detection.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +15 -1
- package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts +2 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js +62 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store-fk.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +12 -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-fk.test.d.ts +2 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js +56 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store-fk.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js +8 -0
- package/core/dist/runtime-v2/activation/__tests__/sqlite-approval-store.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +20 -0
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -1
- 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 +6 -0
- 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.map +1 -1
- package/core/dist/runtime-v2/activation/sqlite-approval-store.js +86 -32
- package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
- package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js +65 -1
- package/core/dist/runtime-v2/activation/writers/__tests__/rule-host-writer.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js +33 -11
- package/core/dist/runtime-v2/activation/writers/rule-host-writer.js.map +1 -1
- package/core/dist/runtime-v2/bridge-result-shaper.d.ts +53 -0
- package/core/dist/runtime-v2/bridge-result-shaper.d.ts.map +1 -0
- package/core/dist/runtime-v2/bridge-result-shaper.js +117 -0
- package/core/dist/runtime-v2/bridge-result-shaper.js.map +1 -0
- package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.d.ts +13 -0
- package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.js +111 -0
- package/core/dist/runtime-v2/detection/__tests__/detection-funnel-policy.test.js.map +1 -0
- package/core/dist/runtime-v2/detection/detection-funnel-policy.d.ts +103 -0
- package/core/dist/runtime-v2/detection/detection-funnel-policy.d.ts.map +1 -0
- package/core/dist/runtime-v2/detection/detection-funnel-policy.js +135 -0
- package/core/dist/runtime-v2/detection/detection-funnel-policy.js.map +1 -0
- package/core/dist/runtime-v2/detection/index.d.ts +10 -0
- package/core/dist/runtime-v2/detection/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/detection/index.js +9 -0
- package/core/dist/runtime-v2/detection/index.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +134 -15
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts +18 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js +251 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/intent-tension-schema.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +73 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -1
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +98 -0
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js +131 -0
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -1
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +8 -0
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +66 -3
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/diagnostician-output.d.ts +23 -0
- package/core/dist/runtime-v2/diagnostician-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/diagnostician-output.js +16 -0
- package/core/dist/runtime-v2/diagnostician-output.js.map +1 -1
- package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +32 -0
- package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.d.ts +12 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js +181 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/observation-resolver.test.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js +104 -1
- package/core/dist/runtime-v2/evidence-triage/__tests__/triage-policy.test.js.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/index.d.ts +3 -0
- package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/index.js +3 -0
- package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +128 -0
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.js +203 -0
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -0
- package/core/dist/runtime-v2/evidence-triage/source-descriptors.d.ts +1 -1
- package/core/dist/runtime-v2/evidence-triage/source-descriptors.js +1 -1
- package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts +4 -0
- package/core/dist/runtime-v2/evidence-triage/triage-policy.d.ts.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/triage-policy.js +66 -9
- package/core/dist/runtime-v2/evidence-triage/triage-policy.js.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/types.d.ts +14 -0
- package/core/dist/runtime-v2/evidence-triage/types.d.ts.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/types.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +56 -4
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.d.ts +2 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.js +30 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/intent-engineering-flag.test.js.map +1 -0
- 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 +11 -2
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js +0 -9
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
- package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.d.ts +15 -0
- package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.js +450 -0
- package/core/dist/runtime-v2/feedback/__tests__/redact-sensitive.test.js.map +1 -0
- package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.d.ts +13 -0
- package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.js +243 -0
- package/core/dist/runtime-v2/feedback/__tests__/render-github-url.test.js.map +1 -0
- package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.d.ts +12 -0
- package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.js +172 -0
- package/core/dist/runtime-v2/feedback/__tests__/safe-stringify.test.js.map +1 -0
- package/core/dist/runtime-v2/index.d.ts +15 -6
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +15 -4
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.d.ts +2 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js +185 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-decision-record.test.js.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.d.ts +2 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js +91 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-doc.test.js.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts +2 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js +168 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-friction-block.test.js.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts +2 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js +121 -0
- package/core/dist/runtime-v2/intent/__tests__/intent-patch-proposal.test.js.map +1 -0
- package/core/dist/runtime-v2/intent/index.d.ts +6 -0
- package/core/dist/runtime-v2/intent/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/index.js +6 -0
- package/core/dist/runtime-v2/intent/index.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-decision-record.d.ts +125 -0
- package/core/dist/runtime-v2/intent/intent-decision-record.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-decision-record.js +21 -0
- package/core/dist/runtime-v2/intent/intent-decision-record.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc-reader-port.d.ts +95 -0
- package/core/dist/runtime-v2/intent/intent-doc-reader-port.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc-reader-port.js +43 -0
- package/core/dist/runtime-v2/intent/intent-doc-reader-port.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc.d.ts +19 -0
- package/core/dist/runtime-v2/intent/intent-doc.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-doc.js +70 -0
- package/core/dist/runtime-v2/intent/intent-doc.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-friction-block.d.ts +63 -0
- package/core/dist/runtime-v2/intent/intent-friction-block.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-friction-block.js +129 -0
- package/core/dist/runtime-v2/intent/intent-friction-block.js.map +1 -0
- package/core/dist/runtime-v2/intent/intent-patch-proposal.d.ts +42 -0
- package/core/dist/runtime-v2/intent/intent-patch-proposal.d.ts.map +1 -0
- package/core/dist/runtime-v2/intent/intent-patch-proposal.js +81 -0
- package/core/dist/runtime-v2/intent/intent-patch-proposal.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts +54 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js +219 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/intent-tension-cases.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js +306 -0
- package/core/dist/runtime-v2/internalization/__tests__/c2-live-runner-chain.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +360 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js +333 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-intent-tension.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js +113 -0
- package/core/dist/runtime-v2/internalization/__tests__/intent-tension-cases.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +13 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +42 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-router-runner.js +27 -0
- package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/index.d.ts +0 -16
- package/core/dist/runtime-v2/internalization/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/index.js +0 -8
- package/core/dist/runtime-v2/internalization/index.js.map +1 -1
- package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.d.ts +15 -0
- package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.js +179 -0
- package/core/dist/runtime-v2/pain-gate/__tests__/pain-diagnostic-gate-policy.test.js.map +1 -0
- package/core/dist/runtime-v2/pain-gate/index.d.ts +10 -0
- package/core/dist/runtime-v2/pain-gate/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/pain-gate/index.js +9 -0
- package/core/dist/runtime-v2/pain-gate/index.js.map +1 -0
- package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.d.ts +121 -0
- package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.d.ts.map +1 -0
- package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.js +157 -0
- package/core/dist/runtime-v2/pain-gate/pain-diagnostic-gate-policy.js.map +1 -0
- package/core/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-bridge.js +14 -88
- package/core/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.js +272 -61
- package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +12 -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 +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
- package/core/dist/runtime-v2/pain-to-principle-service.d.ts +6 -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/principle-tree/ledger-codec.js.map +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.js +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
- package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts +2 -0
- package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js +55 -0
- package/core/dist/runtime-v2/store/artifact/__tests__/sqlite-pi-artifact-store-fk.test.js.map +1 -0
- package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js +6 -0
- package/core/dist/runtime-v2/store/artifact/sqlite-pi-artifact-store.js.map +1 -1
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.d.ts +2 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js +272 -0
- package/core/dist/runtime-v2/store/intent/__tests__/sqlite-intent-decision-store.test.js.map +1 -0
- package/core/dist/runtime-v2/store/intent/index.d.ts +6 -0
- package/core/dist/runtime-v2/store/intent/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/intent/index.js +5 -0
- package/core/dist/runtime-v2/store/intent/index.js.map +1 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts +51 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js +306 -0
- package/core/dist/runtime-v2/store/intent/sqlite-intent-decision-store.js.map +1 -0
- package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js +14 -3
- package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts +2 -0
- package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js +72 -0
- package/core/dist/runtime-v2/store/sqlite-connection-schema-version.test.js.map +1 -0
- package/core/dist/runtime-v2/store/sqlite-connection.d.ts +27 -0
- package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js +124 -12
- package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/core/dist/runtime-v2/types/event-payload.d.ts +1 -20
- package/core/dist/runtime-v2/types/event-payload.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-payload.js +0 -12
- package/core/dist/runtime-v2/types/event-payload.js.map +1 -1
- package/core/dist/runtime-v2/types/event-types.d.ts +5 -61
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +2 -36
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +63 -0
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.js +234 -9
- package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -1
- package/core/dist/runtime-v2/types/index.d.ts +5 -5
- package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/index.js +7 -3
- package/core/dist/runtime-v2/types/index.js.map +1 -1
- package/core/dist/runtime-v2/types/ledger-store.d.ts +30 -30
- package/core/dist/runtime-v2/types/ledger-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/ledger-store.js +10 -5
- package/core/dist/runtime-v2/types/ledger-store.js.map +1 -1
- package/core/dist/runtime-v2/types/pain-signal.d.ts +2 -2
- package/core/dist/runtime-v2/types/pain-signal.js +2 -2
- package/core/dist/workflow-funnel-loader.d.ts +2 -2
- package/core/dist/workflow-funnel-loader.d.ts.map +1 -1
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +16 -0
- package/dist/installer.js.map +1 -1
- package/dist/mvp-config.d.ts +0 -10
- package/dist/mvp-config.d.ts.map +1 -1
- package/dist/mvp-config.js +0 -65
- package/dist/mvp-config.js.map +1 -1
- package/package.json +1 -1
- package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.d.ts +9 -0
- package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js +166 -0
- package/pd-cli/dist/commands/__tests__/intent-flag-wiring.test.js.map +1 -0
- package/pd-cli/dist/commands/intent.d.ts +59 -0
- package/pd-cli/dist/commands/intent.d.ts.map +1 -0
- package/pd-cli/dist/commands/intent.js +350 -0
- package/pd-cli/dist/commands/intent.js.map +1 -0
- package/pd-cli/dist/commands/mvp-smoke.js +1 -1
- package/pd-cli/dist/commands/mvp-smoke.js.map +1 -1
- package/pd-cli/dist/commands/rulecode.js +1 -1
- package/pd-cli/dist/commands/rulecode.js.map +1 -1
- package/pd-cli/dist/commands/runtime-canary.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-canary.js +10 -11
- package/pd-cli/dist/commands/runtime-canary.js.map +1 -1
- package/pd-cli/dist/commands/runtime-init.d.ts +43 -0
- package/pd-cli/dist/commands/runtime-init.d.ts.map +1 -0
- package/pd-cli/dist/commands/runtime-init.js +264 -0
- package/pd-cli/dist/commands/runtime-init.js.map +1 -0
- package/pd-cli/dist/commands/runtime-internalization-queue.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-queue.js +13 -16
- package/pd-cli/dist/commands/runtime-internalization-queue.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-run-once.js +3 -0
- package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js +61 -7
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js.map +1 -1
- package/pd-cli/dist/commands/runtime.js +1 -1
- package/pd-cli/dist/commands/runtime.js.map +1 -1
- package/pd-cli/dist/index.js +92 -34
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/dist/services/__tests__/rulehost-readiness.test.d.ts +2 -0
- package/pd-cli/dist/services/__tests__/rulehost-readiness.test.d.ts.map +1 -0
- package/pd-cli/dist/services/__tests__/rulehost-readiness.test.js +314 -0
- package/pd-cli/dist/services/__tests__/rulehost-readiness.test.js.map +1 -0
- package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js +20 -12
- package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.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 +6 -0
- package/pd-cli/dist/services/demo-story-a-runner.js.map +1 -1
- package/pd-cli/dist/services/rulehost-readiness.d.ts +62 -0
- package/pd-cli/dist/services/rulehost-readiness.d.ts.map +1 -0
- package/pd-cli/dist/services/rulehost-readiness.js +214 -0
- package/pd-cli/dist/services/rulehost-readiness.js.map +1 -0
- package/pd-cli/dist/services/runtime-adapter-resolver.d.ts +1 -1
- package/pd-cli/dist/services/runtime-adapter-resolver.js +3 -3
- package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -1
- package/pd-cli/package.json +1 -0
- package/plugin/dist/commands/evolution-status.js +0 -2
- package/plugin/dist/commands/pain.js +2 -0
- package/plugin/dist/core/control-ui-db.d.ts +11 -0
- package/plugin/dist/core/control-ui-db.js +40 -16
- package/plugin/dist/core/detection-funnel.d.ts +25 -11
- package/plugin/dist/core/detection-funnel.js +32 -80
- package/plugin/dist/core/event-log.d.ts +1 -3
- package/plugin/dist/core/event-log.js +5 -21
- package/plugin/dist/core/evolution-reducer.d.ts +0 -8
- package/plugin/dist/core/evolution-reducer.js +9 -19
- package/plugin/dist/core/intent-doc-reader-adapter.d.ts +28 -0
- package/plugin/dist/core/intent-doc-reader-adapter.js +56 -0
- package/plugin/dist/core/intent-doc-reader.d.ts +80 -0
- package/plugin/dist/core/intent-doc-reader.js +189 -0
- package/plugin/dist/core/pain-diagnostic-gate.d.ts +37 -28
- package/plugin/dist/core/pain-diagnostic-gate.js +53 -89
- package/plugin/dist/core/pain.d.ts +0 -63
- package/plugin/dist/core/pain.js +0 -167
- package/plugin/dist/core/paths.d.ts +0 -1
- package/plugin/dist/core/paths.js +2 -1
- package/plugin/dist/core/principle-tree-ledger.d.ts +27 -79
- package/plugin/dist/core/principle-tree-ledger.js +39 -524
- package/plugin/dist/core/reflection/reflection-context.d.ts +2 -2
- package/plugin/dist/core/schema/migrations/001-init-trajectory.js +3 -6
- package/plugin/dist/core/schema/schema-definitions.js +4 -9
- package/plugin/dist/core/trajectory.d.ts +16 -16
- package/plugin/dist/core/trajectory.js +338 -311
- package/plugin/dist/core/workspace-context.d.ts +2 -3
- package/plugin/dist/hooks/after-tool-call-helpers.d.ts +4 -1
- package/plugin/dist/hooks/after-tool-call-helpers.js +13 -17
- package/plugin/dist/hooks/gate-block-helper.js +57 -17
- package/plugin/dist/hooks/lifecycle.js +3 -6
- package/plugin/dist/hooks/llm.js +66 -26
- package/plugin/dist/hooks/pain.d.ts +3 -1
- package/plugin/dist/hooks/pain.js +124 -49
- package/plugin/dist/hooks/prompt-helpers.d.ts +105 -0
- package/plugin/dist/hooks/prompt-helpers.js +288 -0
- package/plugin/dist/hooks/prompt-types.d.ts +74 -0
- package/plugin/dist/hooks/prompt-types.js +12 -0
- package/plugin/dist/hooks/prompt.d.ts +7 -38
- package/plugin/dist/hooks/prompt.js +433 -338
- package/plugin/dist/hooks/raw-observation-adapter.d.ts +9 -50
- package/plugin/dist/hooks/raw-observation-adapter.js +9 -164
- package/plugin/dist/hooks/raw-observation-types.d.ts +6 -57
- package/plugin/dist/hooks/raw-observation-types.js +5 -9
- package/plugin/dist/hooks/triage-adapter.js +6 -26
- package/plugin/dist/hooks/trigger-cooldown-tracker.d.ts +12 -0
- package/plugin/dist/hooks/trigger-cooldown-tracker.js +25 -0
- package/plugin/dist/index.d.ts +3 -1
- package/plugin/dist/index.js +9 -5
- package/plugin/dist/service/evolution-worker.js +6 -64
- package/plugin/dist/service/runtime-summary-service.d.ts +0 -2
- package/plugin/dist/service/runtime-summary-service.js +1 -5
- package/plugin/dist/service/subagent-workflow/workflow-store.d.ts +14 -0
- package/plugin/dist/service/subagent-workflow/workflow-store.js +91 -2
- package/plugin/dist/types/event-types.d.ts +1 -1
- package/plugin/package.json +6 -3
- package/plugin/scripts/acceptance-test.mjs +3 -3
- package/plugin/scripts/sync-plugin.mjs +33 -22
- package/plugin/templates/langs/en/skills/pd-cli-operator/SKILL.md +20 -11
- package/plugin/templates/langs/en/skills/pd-runtime-v2/SKILL.md +10 -0
- package/plugin/templates/langs/zh/skills/pd-cli-operator/SKILL.md +20 -11
- package/plugin/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +10 -0
- package/console/dist/server/config/feature-flags.d.ts +0 -25
- package/console/dist/server/config/feature-flags.js +0 -101
- package/pd-cli/dist/commands/central-sync.d.ts +0 -10
- package/pd-cli/dist/commands/central-sync.d.ts.map +0 -1
- package/pd-cli/dist/commands/central-sync.js +0 -32
- package/pd-cli/dist/commands/central-sync.js.map +0 -1
- package/pd-cli/dist/services/feature-flag-loader.d.ts +0 -6
- package/pd-cli/dist/services/feature-flag-loader.d.ts.map +0 -1
- package/pd-cli/dist/services/feature-flag-loader.js +0 -53
- package/pd-cli/dist/services/feature-flag-loader.js.map +0 -1
- package/plugin/dist/core/observability.d.ts +0 -40
- package/plugin/dist/core/observability.js +0 -164
- package/plugin/dist/core/principle-tree-ledger-adapter.d.ts +0 -32
- package/plugin/dist/core/principle-tree-ledger-adapter.js +0 -125
- package/plugin/dist/hooks/subagent.d.ts +0 -9
- package/plugin/dist/hooks/subagent.js +0 -122
- package/plugin/dist/service/central-database.d.ts +0 -138
- package/plugin/dist/service/central-database.js +0 -731
- package/plugin/dist/service/central-sync-service.d.ts +0 -8
- package/plugin/dist/service/central-sync-service.js +0 -71
- package/plugin/scripts/validate-live-path.ts +0 -480
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export interface ObservabilityBaselines {
|
|
2
|
-
/** ISO 8601 timestamp when baselines were calculated */
|
|
3
|
-
calculatedAt: string;
|
|
4
|
-
/** Principle Stock: total count of principles in the ledger */
|
|
5
|
-
principleStock: number;
|
|
6
|
-
/** Total rules across all principles */
|
|
7
|
-
totalRules: number;
|
|
8
|
-
/** Total implementations across all rules */
|
|
9
|
-
totalImplementations: number;
|
|
10
|
-
/** Structure: average rules per principle (0 if no principles) */
|
|
11
|
-
avgRulesPerPrinciple: number;
|
|
12
|
-
/** Structure: average implementations per rule (0 if no rules) */
|
|
13
|
-
avgImplementationsPerRule: number;
|
|
14
|
-
/** Total pain events from trajectory DB (0 if DB unavailable) */
|
|
15
|
-
totalPainEvents: number;
|
|
16
|
-
/** Association Rate: principles / total pain events (0 if no pain events) */
|
|
17
|
-
associationRate: number;
|
|
18
|
-
/** Count of principles with internalizationStatus = 'internalized' */
|
|
19
|
-
internalizedCount: number;
|
|
20
|
-
/** Internalization Rate: internalized / total principles (0 if no principles) */
|
|
21
|
-
internalizationRate: number;
|
|
22
|
-
/** Distribution of principle statuses */
|
|
23
|
-
statusDistribution: Record<string, number>;
|
|
24
|
-
/** Distribution of principle priorities */
|
|
25
|
-
priorityDistribution: Record<string, number>;
|
|
26
|
-
/** Distribution of internalization statuses from training store */
|
|
27
|
-
internalizationDistribution: Record<string, number>;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Calculate observability baselines for the principle evolution system.
|
|
31
|
-
*
|
|
32
|
-
* Reads the principle ledger from stateDir, computes metrics across four
|
|
33
|
-
* dimensions (Stock, Structure, Association, Internalization), logs a summary
|
|
34
|
-
* via SystemLogger, and persists results to .state/baselines.json.
|
|
35
|
-
*
|
|
36
|
-
* @param stateDir - The .state directory containing the principle ledger
|
|
37
|
-
* @param workspaceDir - Optional workspace dir for SystemLogger routing
|
|
38
|
-
* @returns The computed baselines
|
|
39
|
-
*/
|
|
40
|
-
export declare function calculateBaselines(stateDir: string, workspaceDir?: string): ObservabilityBaselines;
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Observability Baselines for the Evolution SDK.
|
|
3
|
-
*
|
|
4
|
-
* Provides calculateBaselines() which measures the current state of the
|
|
5
|
-
* principle evolution system across four dimensions:
|
|
6
|
-
*
|
|
7
|
-
* 1. Principle Stock: total count of principles in the ledger
|
|
8
|
-
* 2. Structure: average sub-principles (rules) and implementations per principle
|
|
9
|
-
* 3. Association Rate: principles created / total pain events recorded
|
|
10
|
-
* 4. Internalization Rate: internalized principles / total principles
|
|
11
|
-
*
|
|
12
|
-
* Results are logged via SystemLogger and persisted to .state/baselines.json.
|
|
13
|
-
*/
|
|
14
|
-
import * as fs from 'fs';
|
|
15
|
-
import * as path from 'path';
|
|
16
|
-
import { loadLedger } from './principle-tree-ledger.js';
|
|
17
|
-
import { SystemLogger } from './system-logger.js';
|
|
18
|
-
import { atomicWriteFileSync } from '../utils/io.js';
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
// Constants
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
const BASELINES_FILE = 'baselines.json';
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
// Implementation
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
/**
|
|
27
|
-
* Calculate observability baselines for the principle evolution system.
|
|
28
|
-
*
|
|
29
|
-
* Reads the principle ledger from stateDir, computes metrics across four
|
|
30
|
-
* dimensions (Stock, Structure, Association, Internalization), logs a summary
|
|
31
|
-
* via SystemLogger, and persists results to .state/baselines.json.
|
|
32
|
-
*
|
|
33
|
-
* @param stateDir - The .state directory containing the principle ledger
|
|
34
|
-
* @param workspaceDir - Optional workspace dir for SystemLogger routing
|
|
35
|
-
* @returns The computed baselines
|
|
36
|
-
*/
|
|
37
|
-
export function calculateBaselines(stateDir, workspaceDir) {
|
|
38
|
-
const ledger = loadLedger(stateDir);
|
|
39
|
-
const { tree, trainingStore } = ledger;
|
|
40
|
-
const principles = Object.values(tree.principles);
|
|
41
|
-
const rules = Object.values(tree.rules);
|
|
42
|
-
const implementations = Object.values(tree.implementations);
|
|
43
|
-
const principleStock = principles.length;
|
|
44
|
-
const totalRules = rules.length;
|
|
45
|
-
const totalImplementations = implementations.length;
|
|
46
|
-
// Structure metrics
|
|
47
|
-
const avgRulesPerPrinciple = principleStock > 0
|
|
48
|
-
? totalRules / principleStock
|
|
49
|
-
: 0;
|
|
50
|
-
const avgImplementationsPerRule = totalRules > 0
|
|
51
|
-
? totalImplementations / totalRules
|
|
52
|
-
: 0;
|
|
53
|
-
// Count pain events from trajectory DB
|
|
54
|
-
const totalPainEvents = countPainEvents(stateDir);
|
|
55
|
-
// Association Rate: how many principles were created per pain event
|
|
56
|
-
const associationRate = totalPainEvents > 0
|
|
57
|
-
? principleStock / totalPainEvents
|
|
58
|
-
: 0;
|
|
59
|
-
// Internalization Rate from training store
|
|
60
|
-
// Filter to only entries whose principleId still exists in the ledger tree
|
|
61
|
-
// to avoid orphaned/deleted entries inflating the ratio
|
|
62
|
-
const trainingEntries = Object.values(trainingStore);
|
|
63
|
-
const activePrincipleIds = new Set(Object.keys(tree.principles));
|
|
64
|
-
const activeEntries = trainingEntries.filter((entry) => activePrincipleIds.has(entry.principleId));
|
|
65
|
-
const internalizedCount = activeEntries.filter((entry) => entry.internalizationStatus === 'internalized').length;
|
|
66
|
-
const internalizationRate = principleStock > 0
|
|
67
|
-
? internalizedCount / principleStock
|
|
68
|
-
: 0;
|
|
69
|
-
// Status distribution
|
|
70
|
-
const statusDistribution = {};
|
|
71
|
-
for (const p of principles) {
|
|
72
|
-
statusDistribution[p.status] = (statusDistribution[p.status] ?? 0) + 1;
|
|
73
|
-
}
|
|
74
|
-
// Priority distribution
|
|
75
|
-
const priorityDistribution = {};
|
|
76
|
-
for (const p of principles) {
|
|
77
|
-
priorityDistribution[p.priority] = (priorityDistribution[p.priority] ?? 0) + 1;
|
|
78
|
-
}
|
|
79
|
-
// Internalization status distribution from training store
|
|
80
|
-
const internalizationDistribution = {};
|
|
81
|
-
for (const entry of trainingEntries) {
|
|
82
|
-
internalizationDistribution[entry.internalizationStatus] =
|
|
83
|
-
(internalizationDistribution[entry.internalizationStatus] ?? 0) + 1;
|
|
84
|
-
}
|
|
85
|
-
const baselines = {
|
|
86
|
-
calculatedAt: new Date().toISOString(),
|
|
87
|
-
principleStock,
|
|
88
|
-
totalRules,
|
|
89
|
-
totalImplementations,
|
|
90
|
-
avgRulesPerPrinciple: roundTo3(avgRulesPerPrinciple),
|
|
91
|
-
avgImplementationsPerRule: roundTo3(avgImplementationsPerRule),
|
|
92
|
-
totalPainEvents,
|
|
93
|
-
associationRate: roundTo3(associationRate),
|
|
94
|
-
internalizedCount,
|
|
95
|
-
internalizationRate: roundTo3(internalizationRate),
|
|
96
|
-
statusDistribution,
|
|
97
|
-
priorityDistribution,
|
|
98
|
-
internalizationDistribution,
|
|
99
|
-
};
|
|
100
|
-
// Log summary
|
|
101
|
-
SystemLogger.log(workspaceDir, 'OBSERVABILITY_BASELINES', formatBaselineSummary(baselines));
|
|
102
|
-
// Persist to .state/baselines.json
|
|
103
|
-
persistBaselines(stateDir, baselines);
|
|
104
|
-
return baselines;
|
|
105
|
-
}
|
|
106
|
-
// ---------------------------------------------------------------------------
|
|
107
|
-
// Internal helpers
|
|
108
|
-
// ---------------------------------------------------------------------------
|
|
109
|
-
function roundTo3(n) {
|
|
110
|
-
return Math.round(n * 1000) / 1000;
|
|
111
|
-
}
|
|
112
|
-
function formatBaselineSummary(b) {
|
|
113
|
-
return [
|
|
114
|
-
`Principle Stock: ${b.principleStock}`,
|
|
115
|
-
`Structure: ${b.avgRulesPerPrinciple} rules/principle, ${b.avgImplementationsPerRule} impls/rule`,
|
|
116
|
-
`Association Rate: ${b.associationRate} (${b.principleStock} principles / ${b.totalPainEvents} pain events)`,
|
|
117
|
-
`Internalization Rate: ${b.internalizationRate} (${b.internalizedCount}/${b.principleStock})`,
|
|
118
|
-
].join(' | ');
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Count pain events from the trajectory SQLite database.
|
|
122
|
-
* Returns 0 if the database is unavailable or the table doesn't exist.
|
|
123
|
-
*/
|
|
124
|
-
function countPainEvents(stateDir) {
|
|
125
|
-
const dbPath = path.join(stateDir, 'trajectory.db');
|
|
126
|
-
if (!fs.existsSync(dbPath)) {
|
|
127
|
-
return 0;
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
// Use dynamic import for better-sqlite3 to avoid hard dependency
|
|
131
|
-
// at module load time. If not available, return 0.
|
|
132
|
-
const Database = require('better-sqlite3');
|
|
133
|
-
const db = new Database(dbPath, { readonly: true });
|
|
134
|
-
try {
|
|
135
|
-
const row = db.prepare('SELECT COUNT(*) as count FROM pain_events').get();
|
|
136
|
-
return row?.count ?? 0;
|
|
137
|
-
}
|
|
138
|
-
finally {
|
|
139
|
-
db.close();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
// better-sqlite3 not available, or table doesn't exist — log and return 0
|
|
144
|
-
SystemLogger.log(stateDir, 'OBSERVABILITY_SQL_ERROR', `countPainEvents failed: ${String(err)}`);
|
|
145
|
-
return 0;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Persist baselines to .state/baselines.json atomically.
|
|
150
|
-
*/
|
|
151
|
-
function persistBaselines(stateDir, baselines) {
|
|
152
|
-
try {
|
|
153
|
-
const filePath = path.join(stateDir, BASELINES_FILE);
|
|
154
|
-
const dir = path.dirname(filePath);
|
|
155
|
-
if (!fs.existsSync(dir)) {
|
|
156
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
157
|
-
}
|
|
158
|
-
atomicWriteFileSync(filePath, JSON.stringify(baselines, null, 2));
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
// Baselines persistence is best-effort — don't crash the caller
|
|
162
|
-
// (the SystemLogger call above already logged the values)
|
|
163
|
-
}
|
|
164
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { LedgerAdapter, LedgerPrincipleEntry } from '@principles/core/runtime-v2';
|
|
2
|
-
/**
|
|
3
|
-
* PrincipleTreeLedgerAdapter — bridges 11-field LedgerPrincipleEntry to 18+ field LedgerPrinciple.
|
|
4
|
-
*
|
|
5
|
-
* This adapter maintains an in-memory idempotency map. Create once and reuse
|
|
6
|
-
* across calls within the same process lifetime. Do not create a new instance
|
|
7
|
-
* per intake call.
|
|
8
|
-
*/
|
|
9
|
-
export declare class PrincipleTreeLedgerAdapter implements LedgerAdapter {
|
|
10
|
-
#private;
|
|
11
|
-
constructor(opts: {
|
|
12
|
-
stateDir: string;
|
|
13
|
-
});
|
|
14
|
-
/**
|
|
15
|
-
* Write a probation entry to the ledger.
|
|
16
|
-
*
|
|
17
|
-
* Idempotency: if the same candidateId was already written, returns the
|
|
18
|
-
* existing entry without writing again.
|
|
19
|
-
*
|
|
20
|
-
* @throws CandidateIntakeError with code LEDGER_WRITE_FAILED on write failure.
|
|
21
|
-
*/
|
|
22
|
-
writeProbationEntry(entry: LedgerPrincipleEntry): LedgerPrincipleEntry;
|
|
23
|
-
/**
|
|
24
|
-
* Check if a ledger entry already exists for a given candidate.
|
|
25
|
-
*
|
|
26
|
-
* Queries both the in-memory Map (fast path for same-process repeat calls)
|
|
27
|
-
* and the ledger file (for cross-process idempotency across CLI invocations).
|
|
28
|
-
*
|
|
29
|
-
* @returns The existing LedgerPrincipleEntry if found, null otherwise.
|
|
30
|
-
*/
|
|
31
|
-
existsForCandidate(candidateId: string): LedgerPrincipleEntry | null;
|
|
32
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { CandidateIntakeError, INTAKE_ERROR_CODES } from '@principles/core/runtime-v2';
|
|
2
|
-
import { addPrincipleToLedger, loadLedger } from './principle-tree-ledger.js';
|
|
3
|
-
const VALID_EVALUABILITIES = ['deterministic', 'weak_heuristic', 'manual_only'];
|
|
4
|
-
/**
|
|
5
|
-
* PrincipleTreeLedgerAdapter — bridges 11-field LedgerPrincipleEntry to 18+ field LedgerPrinciple.
|
|
6
|
-
*
|
|
7
|
-
* This adapter maintains an in-memory idempotency map. Create once and reuse
|
|
8
|
-
* across calls within the same process lifetime. Do not create a new instance
|
|
9
|
-
* per intake call.
|
|
10
|
-
*/
|
|
11
|
-
export class PrincipleTreeLedgerAdapter {
|
|
12
|
-
#stateDir;
|
|
13
|
-
#entryMap = new Map();
|
|
14
|
-
constructor(opts) {
|
|
15
|
-
this.#stateDir = opts.stateDir;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Write a probation entry to the ledger.
|
|
19
|
-
*
|
|
20
|
-
* Idempotency: if the same candidateId was already written, returns the
|
|
21
|
-
* existing entry without writing again.
|
|
22
|
-
*
|
|
23
|
-
* @throws CandidateIntakeError with code LEDGER_WRITE_FAILED on write failure.
|
|
24
|
-
*/
|
|
25
|
-
writeProbationEntry(entry) {
|
|
26
|
-
const candidateId = this.#extractCandidateId(entry.sourceRef);
|
|
27
|
-
const existing = this.#entryMap.get(candidateId);
|
|
28
|
-
if (existing)
|
|
29
|
-
return existing;
|
|
30
|
-
const ledgerPrinciple = this.#expandToLedgerPrinciple(entry, candidateId);
|
|
31
|
-
try {
|
|
32
|
-
addPrincipleToLedger(this.#stateDir, ledgerPrinciple);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
throw new CandidateIntakeError(INTAKE_ERROR_CODES.LEDGER_WRITE_FAILED, `Failed to write principle ${entry.id} to ledger: ${String(err)}`, { cause: err });
|
|
36
|
-
}
|
|
37
|
-
this.#entryMap.set(candidateId, entry);
|
|
38
|
-
return entry;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Check if a ledger entry already exists for a given candidate.
|
|
42
|
-
*
|
|
43
|
-
* Queries both the in-memory Map (fast path for same-process repeat calls)
|
|
44
|
-
* and the ledger file (for cross-process idempotency across CLI invocations).
|
|
45
|
-
*
|
|
46
|
-
* @returns The existing LedgerPrincipleEntry if found, null otherwise.
|
|
47
|
-
*/
|
|
48
|
-
existsForCandidate(candidateId) {
|
|
49
|
-
// Fast path: check in-memory Map (covers same-process repeat calls)
|
|
50
|
-
const cached = this.#entryMap.get(candidateId);
|
|
51
|
-
if (cached)
|
|
52
|
-
return cached;
|
|
53
|
-
// Cross-process path: check ledger file by derivedFromPainIds
|
|
54
|
-
const ledger = loadLedger(this.#stateDir);
|
|
55
|
-
const found = Object.values(ledger.tree.principles).find((p) => p.derivedFromPainIds.includes(candidateId));
|
|
56
|
-
if (!found)
|
|
57
|
-
return null;
|
|
58
|
-
// Reconstruct LedgerPrincipleEntry from LedgerPrinciple fields
|
|
59
|
-
// Note: sourceRef, artifactRef, taskRef are not stored in LedgerPrinciple,
|
|
60
|
-
// so we cannot fully reconstruct the original LedgerPrincipleEntry.
|
|
61
|
-
// Return minimal entry sufficient for idempotency signaling.
|
|
62
|
-
return {
|
|
63
|
-
id: found.id,
|
|
64
|
-
title: '',
|
|
65
|
-
status: 'probation',
|
|
66
|
-
sourceRef: `candidate://${candidateId}`,
|
|
67
|
-
artifactRef: '',
|
|
68
|
-
taskRef: '',
|
|
69
|
-
text: found.text,
|
|
70
|
-
triggerPattern: found.triggerPattern,
|
|
71
|
-
action: found.action,
|
|
72
|
-
evaluability: 'weak_heuristic',
|
|
73
|
-
createdAt: found.createdAt,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Extract candidateId from sourceRef by stripping the 'candidate://' prefix.
|
|
78
|
-
*
|
|
79
|
-
* @internal
|
|
80
|
-
*/
|
|
81
|
-
#extractCandidateId(sourceRef) {
|
|
82
|
-
if (sourceRef.startsWith('candidate://')) {
|
|
83
|
-
return sourceRef.slice('candidate://'.length);
|
|
84
|
-
}
|
|
85
|
-
return sourceRef;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Expand an 11-field LedgerPrincipleEntry to an 18+ field LedgerPrinciple.
|
|
89
|
-
*
|
|
90
|
-
* Applies the field expansion table from CONTEXT.md:
|
|
91
|
-
* - status: 'probation' → 'candidate'
|
|
92
|
-
* - triggerPattern/action: pass through (empty string if absent)
|
|
93
|
-
* - All defaults applied per CONTEXT.md expansion table
|
|
94
|
-
* - sourceRef/artifactRef/taskRef are NOT written to LedgerPrinciple (not stored)
|
|
95
|
-
* - title is NOT written to LedgerPrinciple — intentionally excluded; title
|
|
96
|
-
* is available in LedgerPrincipleEntry but LedgerPrinciple has no title field
|
|
97
|
-
*
|
|
98
|
-
* @internal
|
|
99
|
-
*/
|
|
100
|
-
#expandToLedgerPrinciple(entry, candidateId) {
|
|
101
|
-
if (!VALID_EVALUABILITIES.includes(entry.evaluability)) {
|
|
102
|
-
throw new CandidateIntakeError(INTAKE_ERROR_CODES.INPUT_INVALID, `Invalid evaluability value: ${entry.evaluability}. Must be one of: ${VALID_EVALUABILITIES.join(', ')}`);
|
|
103
|
-
}
|
|
104
|
-
const result = {
|
|
105
|
-
id: entry.id,
|
|
106
|
-
version: 1,
|
|
107
|
-
text: entry.text,
|
|
108
|
-
triggerPattern: entry.triggerPattern ?? '',
|
|
109
|
-
action: entry.action ?? '',
|
|
110
|
-
status: 'candidate',
|
|
111
|
-
evaluability: entry.evaluability,
|
|
112
|
-
priority: 'P1',
|
|
113
|
-
scope: 'general',
|
|
114
|
-
valueScore: 0,
|
|
115
|
-
adherenceRate: 0,
|
|
116
|
-
painPreventedCount: 0,
|
|
117
|
-
derivedFromPainIds: [candidateId],
|
|
118
|
-
ruleIds: [],
|
|
119
|
-
conflictsWithPrincipleIds: [],
|
|
120
|
-
createdAt: entry.createdAt,
|
|
121
|
-
updatedAt: entry.createdAt,
|
|
122
|
-
};
|
|
123
|
-
return result;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { PluginHookSubagentEndedEvent, PluginHookSubagentContext, OpenClawPluginApi } from '../openclaw-sdk.js';
|
|
2
|
-
type SubagentEndedHookContext = PluginHookSubagentContext & {
|
|
3
|
-
api?: OpenClawPluginApi;
|
|
4
|
-
workspaceDir?: string;
|
|
5
|
-
sessionId?: string;
|
|
6
|
-
agentId?: string;
|
|
7
|
-
};
|
|
8
|
-
export declare function handleSubagentEnded(event: PluginHookSubagentEndedEvent, ctx: SubagentEndedHookContext): Promise<void>;
|
|
9
|
-
export {};
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { WorkspaceContext } from '../core/workspace-context.js';
|
|
2
|
-
import { extractAgentIdFromSessionKey } from '../utils/session-key.js';
|
|
3
|
-
import { recordEvolutionSuccess } from '../core/evolution-engine.js';
|
|
4
|
-
import { WorkflowStore } from '../service/subagent-workflow/workflow-store.js';
|
|
5
|
-
/**
|
|
6
|
-
* Factory to create the appropriate WorkflowManager by workflow_type string.
|
|
7
|
-
* Used by the subagent_ended hook to dispatch lifecycle recovery to the right manager.
|
|
8
|
-
*/
|
|
9
|
-
function createWorkflowManagerForType(workflowType) {
|
|
10
|
-
switch (workflowType) {
|
|
11
|
-
default:
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
const HELPER_WORKFLOW_SESSION_PREFIX = 'agent:main:subagent:workflow-';
|
|
16
|
-
// Cleanup expired retry entries periodically
|
|
17
|
-
function emitSubagentPainEvent(wctx, payload, logger) {
|
|
18
|
-
try {
|
|
19
|
-
wctx.evolutionReducer.emitSync({
|
|
20
|
-
ts: new Date().toISOString(),
|
|
21
|
-
type: 'pain_detected',
|
|
22
|
-
data: {
|
|
23
|
-
painId: `pain_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`,
|
|
24
|
-
painType: 'subagent_error',
|
|
25
|
-
source: payload.source,
|
|
26
|
-
reason: payload.reason,
|
|
27
|
-
score: payload.score,
|
|
28
|
-
sessionId: payload.sessionId,
|
|
29
|
-
agentId: payload.agentId,
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
logger.warn(`[PD:Subagent] failed to emit evolution event: ${String(e)}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export async function handleSubagentEnded(event, ctx) {
|
|
38
|
-
const { outcome, targetSessionKey } = event;
|
|
39
|
-
const { workspaceDir } = ctx;
|
|
40
|
-
if (!workspaceDir)
|
|
41
|
-
return;
|
|
42
|
-
const wctx = WorkspaceContext.fromHookContext(ctx);
|
|
43
|
-
const logger = ctx.api?.logger ?? console;
|
|
44
|
-
// ── Helper Workflow Lifecycle Notification ──
|
|
45
|
-
// When a helper workflow's subagent ends, notify the workflow manager
|
|
46
|
-
// so that it can trigger fallback recovery (notifyWaitResult → finalizeOnce)
|
|
47
|
-
if (targetSessionKey?.startsWith(HELPER_WORKFLOW_SESSION_PREFIX)) {
|
|
48
|
-
try {
|
|
49
|
-
const store = new WorkflowStore({ workspaceDir });
|
|
50
|
-
const workflow = store.getWorkflowByChildSession(targetSessionKey);
|
|
51
|
-
if (workflow && workflow.state !== 'completed' && workflow.state !== 'terminal_error' && workflow.state !== 'expired') {
|
|
52
|
-
logger.info(`[PD:Subagent] Helper workflow lifecycle event: workflowId=${workflow.workflow_id}, workflowType=${workflow.workflow_type}, outcome=${outcome}`);
|
|
53
|
-
const mappedOutcome = outcome === 'deleted' ? 'deleted' :
|
|
54
|
-
outcome === 'killed' ? 'killed' :
|
|
55
|
-
outcome === 'reset' ? 'reset' :
|
|
56
|
-
outcome === 'error' ? 'error' :
|
|
57
|
-
outcome === 'timeout' ? 'timeout' : 'ok';
|
|
58
|
-
// Call notifyLifecycleEvent on the appropriate manager so it
|
|
59
|
-
// triggers notifyWaitResult → finalizeOnce / terminal transition.
|
|
60
|
-
const subagentRuntime = ctx.api?.runtime?.subagent;
|
|
61
|
-
if (subagentRuntime) {
|
|
62
|
-
const mgr = createWorkflowManagerForType(workflow.workflow_type);
|
|
63
|
-
if (mgr) {
|
|
64
|
-
await mgr.notifyLifecycleEvent(workflow.workflow_id, 'subagent_ended', { outcome: mappedOutcome });
|
|
65
|
-
mgr.dispose();
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
logger.warn(`[PD:Subagent] Unknown workflow type ${workflow.workflow_type} — falling back to store-only event`);
|
|
69
|
-
store.recordEvent(workflow.workflow_id, 'subagent_ended', workflow.state, workflow.state, `subagent ended with outcome: ${outcome}`, { outcome: mappedOutcome });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
logger.warn(`[PD:Subagent] Subagent runtime not available — cannot notify manager, falling back to store event`);
|
|
74
|
-
store.recordEvent(workflow.workflow_id, 'subagent_ended', workflow.state, workflow.state, `subagent ended with outcome: ${outcome}`, { outcome: mappedOutcome });
|
|
75
|
-
}
|
|
76
|
-
store.dispose();
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
store.dispose();
|
|
80
|
-
}
|
|
81
|
-
catch (e) {
|
|
82
|
-
logger.warn(`[PD:Subagent] Failed to notify helper workflow lifecycle: ${String(e)}`);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const { config } = wctx;
|
|
86
|
-
// ── Outcome-based EP and Pain Signal handling ──
|
|
87
|
-
// OpenClaw v2026.3.23 fixes: timeout may be false positive (fast-finishing workers)
|
|
88
|
-
// Only penalize actual errors, not timeout/killed/reset
|
|
89
|
-
if (outcome === 'error') {
|
|
90
|
-
// Only actual errors trigger penalty
|
|
91
|
-
const scoreSettings = config.get('scores');
|
|
92
|
-
const score = scoreSettings.subagent_error_penalty;
|
|
93
|
-
const reason = `Subagent session ${targetSessionKey} ended with error`;
|
|
94
|
-
// Emit pain via Runtime v2 chain (M8: no .pain_flag file)
|
|
95
|
-
emitSubagentPainEvent(wctx, {
|
|
96
|
-
source: `subagent_error`,
|
|
97
|
-
reason,
|
|
98
|
-
score,
|
|
99
|
-
sessionId: ctx.sessionId,
|
|
100
|
-
agentId: ctx.agentId || extractAgentIdFromSessionKey(targetSessionKey),
|
|
101
|
-
}, logger);
|
|
102
|
-
}
|
|
103
|
-
if (outcome === 'timeout') {
|
|
104
|
-
// OpenClaw v2026.3.23 fix: timeout may be false positive
|
|
105
|
-
// Fast-finishing workers are no longer incorrectly reported as timed out
|
|
106
|
-
// Do not penalize - the task may have actually succeeded
|
|
107
|
-
logger.warn(`[PD:Subagent] Session ${targetSessionKey} timed out - not penalizing (OpenClaw fix applied)`);
|
|
108
|
-
}
|
|
109
|
-
if (outcome === 'killed' || outcome === 'reset') {
|
|
110
|
-
// User-initiated termination or system reset - not an agent failure
|
|
111
|
-
logger.info(`[PD:Subagent] Session ${targetSessionKey} ended with ${outcome} - no penalty (user/system action)`);
|
|
112
|
-
}
|
|
113
|
-
if (outcome === 'ok' || outcome === 'deleted') {
|
|
114
|
-
recordEvolutionSuccess(workspaceDir, 'subagent', {
|
|
115
|
-
sessionId: ctx.sessionId,
|
|
116
|
-
reason: 'subagent_success',
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
// ── End of subagent_ended handling ──
|
|
120
|
-
// Note: Diagnostician runs via HEARTBEAT (main session LLM), not as a subagent.
|
|
121
|
-
// Principle creation happens in evolution-worker.ts marker detection path.
|
|
122
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
export interface WorkspaceInfo {
|
|
2
|
-
name: string;
|
|
3
|
-
path: string;
|
|
4
|
-
lastSync: string | null;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Central database that aggregates data from all agent workspaces.
|
|
8
|
-
* Stored in ~/.openclaw/.central/ (NOT in memory/ which is for embeddings)
|
|
9
|
-
*/
|
|
10
|
-
export declare class CentralDatabase {
|
|
11
|
-
private readonly dbPath;
|
|
12
|
-
private readonly db;
|
|
13
|
-
private readonly workspaces;
|
|
14
|
-
private _closed;
|
|
15
|
-
/** Whether this connection has been closed. Used by the singleton to auto-reopen. */
|
|
16
|
-
get isClosed(): boolean;
|
|
17
|
-
constructor(dbPath?: string);
|
|
18
|
-
dispose(): void;
|
|
19
|
-
private static tableExists;
|
|
20
|
-
private initSchema;
|
|
21
|
-
private discoverWorkspaces;
|
|
22
|
-
/**
|
|
23
|
-
* Sync data from a single workspace into the central database
|
|
24
|
-
*/
|
|
25
|
-
syncWorkspace(workspaceName: string): number;
|
|
26
|
-
syncEnabled(): Map<string, number>;
|
|
27
|
-
/**
|
|
28
|
-
* Sync all workspaces (legacy method - syncs all regardless of config)
|
|
29
|
-
*/
|
|
30
|
-
syncAll(): Map<string, number>;
|
|
31
|
-
private getEnabledWorkspaceFilter;
|
|
32
|
-
/**
|
|
33
|
-
* Get aggregated overview stats (only from enabled workspaces)
|
|
34
|
-
*/
|
|
35
|
-
getOverviewStats(): {
|
|
36
|
-
totalSessions: number;
|
|
37
|
-
totalToolCalls: number;
|
|
38
|
-
totalFailures: number;
|
|
39
|
-
totalPainEvents: number;
|
|
40
|
-
totalCorrections: number;
|
|
41
|
-
totalThinkingEvents: number;
|
|
42
|
-
totalSamples: number;
|
|
43
|
-
pendingSamples: number;
|
|
44
|
-
approvedSamples: number;
|
|
45
|
-
rejectedSamples: number;
|
|
46
|
-
workspaceCount: number;
|
|
47
|
-
enabledWorkspaceCount: number;
|
|
48
|
-
workspaceNames: string[];
|
|
49
|
-
enabledWorkspaceNames: string[];
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Get daily trend data
|
|
53
|
-
*/
|
|
54
|
-
getDailyTrend(days?: number): {
|
|
55
|
-
day: string;
|
|
56
|
-
toolCalls: number;
|
|
57
|
-
failures: number;
|
|
58
|
-
userCorrections: number;
|
|
59
|
-
thinkingTurns: number;
|
|
60
|
-
}[];
|
|
61
|
-
/**
|
|
62
|
-
* Get top regressions
|
|
63
|
-
*/
|
|
64
|
-
getTopRegressions(limit?: number): {
|
|
65
|
-
toolName: string;
|
|
66
|
-
errorType: string;
|
|
67
|
-
occurrences: number;
|
|
68
|
-
}[];
|
|
69
|
-
/**
|
|
70
|
-
* Get thinking model stats
|
|
71
|
-
*/
|
|
72
|
-
getThinkingModelStats(): {
|
|
73
|
-
totalModels: number;
|
|
74
|
-
activeModels: number;
|
|
75
|
-
models: {
|
|
76
|
-
modelId: string;
|
|
77
|
-
hits: number;
|
|
78
|
-
coverageRate: number;
|
|
79
|
-
}[];
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Get workspace list
|
|
83
|
-
*/
|
|
84
|
-
getWorkspaces(): WorkspaceInfo[];
|
|
85
|
-
getWorkspaceConfigs(): {
|
|
86
|
-
workspaceName: string;
|
|
87
|
-
enabled: boolean;
|
|
88
|
-
displayName: string | null;
|
|
89
|
-
syncEnabled: boolean;
|
|
90
|
-
}[];
|
|
91
|
-
updateWorkspaceConfig(workspaceName: string, updates: {
|
|
92
|
-
enabled?: boolean;
|
|
93
|
-
displayName?: string | null;
|
|
94
|
-
syncEnabled?: boolean;
|
|
95
|
-
}): void;
|
|
96
|
-
isWorkspaceEnabled(workspaceName: string): boolean;
|
|
97
|
-
getEnabledWorkspaces(): WorkspaceInfo[];
|
|
98
|
-
addCustomWorkspace(name: string, workspacePath: string): void;
|
|
99
|
-
removeWorkspace(workspaceName: string): void;
|
|
100
|
-
getGlobalConfig(key: string): string | null;
|
|
101
|
-
setGlobalConfig(key: string, value: string): void;
|
|
102
|
-
/**
|
|
103
|
-
* Clear all aggregated data (for testing/reset)
|
|
104
|
-
*/
|
|
105
|
-
clearAll(): void;
|
|
106
|
-
/**
|
|
107
|
-
* Get total task outcomes count across enabled workspaces (D-02)
|
|
108
|
-
*/
|
|
109
|
-
getTaskOutcomes(): number;
|
|
110
|
-
/**
|
|
111
|
-
* Get total principle events count across enabled workspaces (D-03)
|
|
112
|
-
*/
|
|
113
|
-
getPrincipleEventCount(): number;
|
|
114
|
-
/**
|
|
115
|
-
* Get sample counts grouped by review_status across enabled workspaces (D-06)
|
|
116
|
-
*/
|
|
117
|
-
getSampleCountersByStatus(): Record<string, number>;
|
|
118
|
-
/**
|
|
119
|
-
* Get top N most recent pending/approved samples across all enabled workspaces (D-04)
|
|
120
|
-
*/
|
|
121
|
-
getSamplePreview(limit?: number): {
|
|
122
|
-
sampleId: string;
|
|
123
|
-
sessionId: string;
|
|
124
|
-
workspace: string;
|
|
125
|
-
qualityScore: number;
|
|
126
|
-
reviewStatus: string;
|
|
127
|
-
createdAt: string;
|
|
128
|
-
}[];
|
|
129
|
-
/**
|
|
130
|
-
* Get the most recent lastSync timestamp across all workspaces (D-05)
|
|
131
|
-
*/
|
|
132
|
-
getMostRecentSync(): string | null;
|
|
133
|
-
}
|
|
134
|
-
export declare function getCentralDatabase(): CentralDatabase;
|
|
135
|
-
/**
|
|
136
|
-
* Reset the singleton instance. Used for testing.
|
|
137
|
-
*/
|
|
138
|
-
export declare function resetCentralDatabase(): void;
|