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
|
@@ -78,8 +78,12 @@ export class WorkflowStore {
|
|
|
78
78
|
this.db.exec('ALTER TABLE subagent_workflows ADD COLUMN duration_ms INTEGER');
|
|
79
79
|
console.info(`[PD:WorkflowStore] Schema migration v${fromVersion} → v${toVersion}: added duration_ms column`);
|
|
80
80
|
}
|
|
81
|
-
catch {
|
|
82
|
-
void 0
|
|
81
|
+
catch (err) {
|
|
82
|
+
// rc-9: surface failure reason instead of silent void 0
|
|
83
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
84
|
+
if (!message.includes('duplicate column name')) {
|
|
85
|
+
console.info(`[PD:WorkflowStore] Schema migration v${fromVersion} → v${toVersion} failed: ${message}`);
|
|
86
|
+
}
|
|
83
87
|
}
|
|
84
88
|
}
|
|
85
89
|
}
|
|
@@ -207,3 +211,88 @@ export class WorkflowStore {
|
|
|
207
211
|
return rows.map(r => r.duration_ms);
|
|
208
212
|
}
|
|
209
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Initialize subagent_workflows.db schema at the given workspace directory.
|
|
216
|
+
*
|
|
217
|
+
* Opens the DB in write mode, applies the full schema (tables + indexes + migrations),
|
|
218
|
+
* then closes the DB. Used by `pd runtime init` for unified DB initialization.
|
|
219
|
+
*
|
|
220
|
+
* Idempotent: safe to call on an existing DB; all CREATE statements use IF NOT EXISTS.
|
|
221
|
+
*
|
|
222
|
+
* @returns list of created/verified table names and any warnings
|
|
223
|
+
*/
|
|
224
|
+
export function initWorkflowSchema(workspaceDir) {
|
|
225
|
+
const resolvedDir = path.resolve(workspaceDir);
|
|
226
|
+
const stateDir = path.join(resolvedDir, '.state');
|
|
227
|
+
const dbPath = path.join(stateDir, 'subagent_workflows.db');
|
|
228
|
+
const warnings = [];
|
|
229
|
+
const tables = ['schema_version', 'subagent_workflows', 'subagent_workflow_events'];
|
|
230
|
+
fs.mkdirSync(stateDir, { recursive: true });
|
|
231
|
+
const db = new Database(dbPath);
|
|
232
|
+
try {
|
|
233
|
+
db.pragma('journal_mode = WAL');
|
|
234
|
+
db.pragma('foreign_keys = ON');
|
|
235
|
+
db.pragma('synchronous = NORMAL');
|
|
236
|
+
db.pragma(`busy_timeout = ${DEFAULT_BUSY_TIMEOUT_MS}`);
|
|
237
|
+
db.exec(`
|
|
238
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
239
|
+
version INTEGER NOT NULL
|
|
240
|
+
);
|
|
241
|
+
CREATE TABLE IF NOT EXISTS subagent_workflows (
|
|
242
|
+
workflow_id TEXT PRIMARY KEY,
|
|
243
|
+
workflow_type TEXT NOT NULL,
|
|
244
|
+
transport TEXT NOT NULL,
|
|
245
|
+
parent_session_id TEXT NOT NULL,
|
|
246
|
+
child_session_key TEXT NOT NULL,
|
|
247
|
+
run_id TEXT,
|
|
248
|
+
state TEXT NOT NULL DEFAULT 'pending',
|
|
249
|
+
cleanup_state TEXT NOT NULL DEFAULT 'none',
|
|
250
|
+
created_at INTEGER NOT NULL,
|
|
251
|
+
updated_at INTEGER NOT NULL,
|
|
252
|
+
last_observed_at INTEGER,
|
|
253
|
+
duration_ms INTEGER,
|
|
254
|
+
metadata_json TEXT NOT NULL DEFAULT '{}'
|
|
255
|
+
);
|
|
256
|
+
CREATE TABLE IF NOT EXISTS subagent_workflow_events (
|
|
257
|
+
workflow_id TEXT NOT NULL,
|
|
258
|
+
event_type TEXT NOT NULL,
|
|
259
|
+
from_state TEXT,
|
|
260
|
+
to_state TEXT NOT NULL,
|
|
261
|
+
reason TEXT NOT NULL,
|
|
262
|
+
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
263
|
+
created_at INTEGER NOT NULL,
|
|
264
|
+
FOREIGN KEY (workflow_id) REFERENCES subagent_workflows(workflow_id) ON DELETE CASCADE
|
|
265
|
+
);
|
|
266
|
+
CREATE INDEX IF NOT EXISTS idx_workflows_parent_session ON subagent_workflows(parent_session_id);
|
|
267
|
+
CREATE INDEX IF NOT EXISTS idx_workflows_child_session ON subagent_workflows(child_session_key);
|
|
268
|
+
CREATE INDEX IF NOT EXISTS idx_workflows_state ON subagent_workflows(state);
|
|
269
|
+
CREATE INDEX IF NOT EXISTS idx_workflows_type ON subagent_workflows(workflow_type);
|
|
270
|
+
CREATE INDEX IF NOT EXISTS idx_events_workflow ON subagent_workflow_events(workflow_id);
|
|
271
|
+
`);
|
|
272
|
+
// Run migrations to bring schema up to SCHEMA_VERSION
|
|
273
|
+
const row = db.prepare('SELECT version FROM schema_version LIMIT 1').get();
|
|
274
|
+
const currentVersion = row?.version ?? 0;
|
|
275
|
+
if (currentVersion === 0) {
|
|
276
|
+
db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(SCHEMA_VERSION);
|
|
277
|
+
}
|
|
278
|
+
else if (currentVersion < SCHEMA_VERSION) {
|
|
279
|
+
// Inline migration logic (mirrors WorkflowStore.runMigrations)
|
|
280
|
+
if (currentVersion < 2 && SCHEMA_VERSION >= 2) {
|
|
281
|
+
try {
|
|
282
|
+
db.exec('ALTER TABLE subagent_workflows ADD COLUMN duration_ms INTEGER');
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
286
|
+
if (!message.includes('duplicate column name')) {
|
|
287
|
+
warnings.push(`migration v${currentVersion}→v${SCHEMA_VERSION} duration_ms failed: ${message}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
db.prepare('UPDATE schema_version SET version = ?').run(SCHEMA_VERSION);
|
|
292
|
+
}
|
|
293
|
+
return { tables, warnings };
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
db.close();
|
|
297
|
+
}
|
|
298
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { EventType, EventCategory, EventLogEntry, ToolCallEventData, PainSignalEventData,
|
|
1
|
+
export type { EventType, EventCategory, EventLogEntry, ToolCallEventData, PainSignalEventData, RulePromotionEventData, HookExecutionEventData, GateBlockEventData, GateBypassEventData, PlanApprovalEventData, EvolutionTaskEventData, EmpathyRollbackEventData, HeartbeatDiagnosisEventData, DiagnosisTaskEventData, DiagnosticianReportEventData, PrincipleCandidateEventData, RuleEnforcedEventData, RuleHostEvaluatedEventData, RuleHostBlockedEventData, RuleHostRequireApprovalEventData, RuleHostAutoCorrectProposedEventData, RuleHostAutoCorrectAppliedEventData, RuntimeV2PromptActivationsInjectedEventData, RuleHostUnhealthyEventData, ToolCallStats, ErrorStats, EmpathyEventStats, GfiStats, EvolutionStats as EventEvolutionStats, HookStats, DailyStats, } from '@principles/core/runtime-v2';
|
|
2
2
|
export { createEmptyDailyStats, } from '@principles/core/runtime-v2';
|
package/plugin/package.json
CHANGED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
"version": "1.74.1",
|
|
4
4
|
"description": "Native OpenClaw plugin for Principles Disciple",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./dist/
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
7
8
|
"exports": {
|
|
8
|
-
".":
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
9
13
|
},
|
|
10
14
|
"repository": {
|
|
11
15
|
"type": "git",
|
|
@@ -47,7 +51,6 @@
|
|
|
47
51
|
"lint": "eslint \"src/**/*.ts\"",
|
|
48
52
|
"bootstrap-rules": "node scripts/bootstrap-rules.mjs",
|
|
49
53
|
"compile-principles": "node scripts/compile-principles.mjs",
|
|
50
|
-
"validate-live-path": "tsx scripts/validate-live-path.ts",
|
|
51
54
|
"sync-plugin": "node scripts/sync-plugin.mjs"
|
|
52
55
|
},
|
|
53
56
|
"devDependencies": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* PD Pipeline — End-to-End Acceptance Test
|
|
5
5
|
*
|
|
6
|
-
* Verifies that all components of the
|
|
6
|
+
* Verifies that all components of the PD reflection pipeline
|
|
7
7
|
* work correctly in a real environment (not unit tests).
|
|
8
8
|
*
|
|
9
9
|
* Usage:
|
|
@@ -71,7 +71,7 @@ function main() {
|
|
|
71
71
|
process.exit(1);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
console.log('\n🧪
|
|
74
|
+
console.log('\n🧪 PD Pipeline Acceptance Test');
|
|
75
75
|
console.log('═'.repeat(55));
|
|
76
76
|
console.log(`Workspace: ${workspaceDir}`);
|
|
77
77
|
console.log(`Database: ${dbPath}\n`);
|
|
@@ -871,9 +871,9 @@ function copyDir(src, dest) {
|
|
|
871
871
|
}
|
|
872
872
|
|
|
873
873
|
/**
|
|
874
|
-
* Inject local workspace packages (monorepo) into node_modules
|
|
875
|
-
* @principles/core
|
|
876
|
-
*
|
|
874
|
+
* Inject local workspace packages (monorepo) into node_modules after npm install.
|
|
875
|
+
* @principles/core from the local monorepo is authoritative because the
|
|
876
|
+
* npm-published package line lacks exports required by the current pd-cli.
|
|
877
877
|
*/
|
|
878
878
|
function injectLocalWorkspacePackages() {
|
|
879
879
|
const monorepoModules = join(SOURCE_DIR, '..', '..', 'node_modules', '@principles', 'core');
|
|
@@ -885,24 +885,25 @@ function injectLocalWorkspacePackages() {
|
|
|
885
885
|
}
|
|
886
886
|
|
|
887
887
|
console.log(' 📦 Injecting local workspace packages (@principles/core)...');
|
|
888
|
+
|
|
889
|
+
// Remove the target FIRST, because cp -rL on Windows copies the source
|
|
890
|
+
// directory INTO the existing target, creating a nested core/core/ that
|
|
891
|
+
// leaves the original npm-version package.json untouched. We must start
|
|
892
|
+
// with a clean slate so the local version is authoritative.
|
|
893
|
+
if (existsSync(targetModules)) {
|
|
894
|
+
rmSync(targetModules, { recursive: true, force: true });
|
|
895
|
+
}
|
|
896
|
+
|
|
888
897
|
mkdirSync(dirname(targetModules), { recursive: true });
|
|
889
|
-
//
|
|
890
|
-
|
|
898
|
+
// Use copyDir (Node-based, no cp -rL semantics trap) for reliable
|
|
899
|
+
// cross-platform overwrite. cpSync creates symlinks on Windows for
|
|
900
|
+
// symlinked dirs — copyDir dereferences by reading file contents.
|
|
891
901
|
try {
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
} catch {
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
copyDir(monorepoModules, targetModules);
|
|
898
|
-
injected = true;
|
|
899
|
-
} catch (copyErr) {
|
|
900
|
-
console.warn(' ⚠️ Failed to inject @principles/core from monorepo: ' + copyErr.message);
|
|
901
|
-
console.warn(' ⚠️ npm install --production may fail if @principles/core is not published');
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
if (injected && !existsSync(targetModules)) {
|
|
905
|
-
console.warn(' ⚠️ Injection reported success but target not found: ' + targetModules);
|
|
902
|
+
copyDir(monorepoModules, targetModules);
|
|
903
|
+
console.log(' ✅ @principles/core local build injected');
|
|
904
|
+
} catch (copyErr) {
|
|
905
|
+
console.warn(' ⚠️ Failed to inject @principles/core from monorepo: ' + copyErr.message);
|
|
906
|
+
console.warn(' ⚠️ npm version remains in place — pd-cli may fail if exports differ');
|
|
906
907
|
}
|
|
907
908
|
}
|
|
908
909
|
|
|
@@ -1082,7 +1083,7 @@ function restartGatewayWindows() {
|
|
|
1082
1083
|
execSync(`wmic process where "ProcessId=${pidTrim}" call terminate`, { stdio: 'ignore' });
|
|
1083
1084
|
} catch { /* ignore individual failures */ }
|
|
1084
1085
|
}
|
|
1085
|
-
execSync('timeout /t 3 /nobreak
|
|
1086
|
+
execSync('timeout /t 3 /nobreak', { shell: true, stdio: 'ignore' });
|
|
1086
1087
|
}
|
|
1087
1088
|
} catch { /* no existing processes */ }
|
|
1088
1089
|
|
|
@@ -1146,7 +1147,7 @@ function restartGatewayWindows() {
|
|
|
1146
1147
|
}
|
|
1147
1148
|
} catch { /* port not listening yet */ }
|
|
1148
1149
|
try {
|
|
1149
|
-
execSync('timeout /t 1 /nobreak
|
|
1150
|
+
execSync('timeout /t 1 /nobreak', { shell: true, stdio: 'ignore' });
|
|
1150
1151
|
} catch { /* ignore */ }
|
|
1151
1152
|
}
|
|
1152
1153
|
|
|
@@ -1309,8 +1310,18 @@ function main() {
|
|
|
1309
1310
|
syncFilteredManifest(args.lang);
|
|
1310
1311
|
syncPdCli();
|
|
1311
1312
|
|
|
1312
|
-
injectLocalWorkspacePackages
|
|
1313
|
+
// IMPORTANT: npm install must run FIRST, then injectLocalWorkspacePackages
|
|
1314
|
+
// overwrites @principles/core with the local monorepo version.
|
|
1315
|
+
//
|
|
1316
|
+
// Why: @principles/core on npm (v1.164.0-1.174.0, from a different publish
|
|
1317
|
+
// line) is semantically "^1.74.1"-compatible but its exports field does NOT
|
|
1318
|
+
// include ./principle-tree-ledger that pd-cli/health.js requires. The npm
|
|
1319
|
+
// registry version must never be used — only the local monorepo build has
|
|
1320
|
+
// the correct exports. Injecting BEFORE npm install is useless because npm
|
|
1321
|
+
// overwrites the injected copy. The authoritative source is always the
|
|
1322
|
+
// local monorepo, applied AFTER npm install.
|
|
1313
1323
|
installTargetDependencies();
|
|
1324
|
+
injectLocalWorkspacePackages();
|
|
1314
1325
|
verifyInjectedWorkspaceDeps();
|
|
1315
1326
|
verifyPdCliShim();
|
|
1316
1327
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pd-cli-operator
|
|
3
|
-
description: Use this skill when operating the Principles Disciple `pd` CLI: probing runtime health, manually recording pain, inspecting tasks/runs/candidates/artifacts, intaking candidates, viewing flow policy, or
|
|
3
|
+
description: Use this skill when operating the Principles Disciple `pd` CLI: probing runtime health, manually recording pain, inspecting tasks/runs/candidates/artifacts, intaking candidates, viewing flow policy, or tracing pain-to-ledger chains. It routes CLI commands safely and forbids direct `.state/.pain_flag` writes.
|
|
4
4
|
disable-model-invocation: false
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -36,6 +36,25 @@ Flow policy:
|
|
|
36
36
|
pd runtime flow show --workspace "<workspace>" --json
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
## Trace Pain-To-Ledger Chain (PRI-455 promoted)
|
|
40
|
+
|
|
41
|
+
Trace the full evidence chain from pain signal to principle ledger:
|
|
42
|
+
```bash
|
|
43
|
+
pd trace show --pain-id "<painId>" --workspace "<workspace>" --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Activation Management (PRI-455 promoted)
|
|
47
|
+
|
|
48
|
+
List active activations:
|
|
49
|
+
```bash
|
|
50
|
+
pd activation list --workspace "<workspace>" --json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Deactivate (rollback) an activation:
|
|
54
|
+
```bash
|
|
55
|
+
pd activation deactivate --activation-id "<activationId>" --workspace "<workspace>" --json
|
|
56
|
+
```
|
|
57
|
+
|
|
39
58
|
## Inspect Runtime V2 Objects
|
|
40
59
|
|
|
41
60
|
Tasks and runs:
|
|
@@ -55,13 +74,3 @@ Manual intake:
|
|
|
55
74
|
```bash
|
|
56
75
|
pd candidate intake --candidate-id "<candidateId>" --workspace "<workspace>" --json
|
|
57
76
|
```
|
|
58
|
-
|
|
59
|
-
## Legacy Admin
|
|
60
|
-
|
|
61
|
-
Only when explicitly cleaning old state:
|
|
62
|
-
```bash
|
|
63
|
-
pd legacy cleanup --workspace "<workspace>" --dry-run
|
|
64
|
-
pd legacy cleanup --workspace "<workspace>" --apply
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Never use legacy cleanup as a diagnosis trigger.
|
|
@@ -38,6 +38,16 @@ Flow policy:
|
|
|
38
38
|
pd runtime flow show --workspace "<workspace>" --json
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
Trace pain-to-ledger chain (PRI-455 promoted):
|
|
42
|
+
```bash
|
|
43
|
+
pd trace show --pain-id "<painId>" --workspace "<workspace>" --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Activation status (PRI-455 promoted):
|
|
47
|
+
```bash
|
|
48
|
+
pd activation list --workspace "<workspace>" --json
|
|
49
|
+
```
|
|
50
|
+
|
|
41
51
|
Candidates:
|
|
42
52
|
```bash
|
|
43
53
|
pd candidate list --workspace "<workspace>" --json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pd-cli-operator
|
|
3
|
-
description: 操作 Principles Disciple `pd` CLI 时使用:运行时健康检查、手动记录痛苦、查看 task/run/candidate/artifact、intake candidate、查看 flow policy
|
|
3
|
+
description: 操作 Principles Disciple `pd` CLI 时使用:运行时健康检查、手动记录痛苦、查看 task/run/candidate/artifact、intake candidate、查看 flow policy、追踪痛苦到原则的证据链。本技能提供安全 CLI 路由,并禁止直接写 `.state/.pain_flag`。
|
|
4
4
|
disable-model-invocation: false
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -36,6 +36,25 @@ pd runtime probe --runtime pi-ai --workspace "<workspace>" --json
|
|
|
36
36
|
pd runtime flow show --workspace "<workspace>" --json
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
## 追踪痛苦到原则链(PRI-455 提升)
|
|
40
|
+
|
|
41
|
+
追踪从痛苦信号到原则账本的完整证据链:
|
|
42
|
+
```bash
|
|
43
|
+
pd trace show --pain-id "<painId>" --workspace "<workspace>" --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 激活管理(PRI-455 提升)
|
|
47
|
+
|
|
48
|
+
列出当前激活:
|
|
49
|
+
```bash
|
|
50
|
+
pd activation list --workspace "<workspace>" --json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
停用(回滚)激活:
|
|
54
|
+
```bash
|
|
55
|
+
pd activation deactivate --activation-id "<activationId>" --workspace "<workspace>" --json
|
|
56
|
+
```
|
|
57
|
+
|
|
39
58
|
## 查看 Runtime V2 对象
|
|
40
59
|
|
|
41
60
|
Tasks 和 runs:
|
|
@@ -55,13 +74,3 @@ pd artifact show --artifact-id "<artifactId>" --workspace "<workspace>" --json
|
|
|
55
74
|
```bash
|
|
56
75
|
pd candidate intake --candidate-id "<candidateId>" --workspace "<workspace>" --json
|
|
57
76
|
```
|
|
58
|
-
|
|
59
|
-
## Legacy 管理
|
|
60
|
-
|
|
61
|
-
只有在明确清理旧状态时使用:
|
|
62
|
-
```bash
|
|
63
|
-
pd legacy cleanup --workspace "<workspace>" --dry-run
|
|
64
|
-
pd legacy cleanup --workspace "<workspace>" --apply
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
不要把 legacy cleanup 当作诊断触发入口。
|
|
@@ -38,6 +38,16 @@ pd runtime probe --runtime pi-ai --workspace "<workspace>" --json
|
|
|
38
38
|
pd runtime flow show --workspace "<workspace>" --json
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
追踪痛苦到原则链(PRI-455 提升):
|
|
42
|
+
```bash
|
|
43
|
+
pd trace show --pain-id "<painId>" --workspace "<workspace>" --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
激活状态(PRI-455 提升):
|
|
47
|
+
```bash
|
|
48
|
+
pd activation list --workspace "<workspace>" --json
|
|
49
|
+
```
|
|
50
|
+
|
|
41
51
|
候选原则:
|
|
42
52
|
```bash
|
|
43
53
|
pd candidate list --workspace "<workspace>" --json
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { EffectiveFeatureFlags } from '@principles/core/runtime-v2';
|
|
2
|
-
export interface FeatureFlagLoadResult {
|
|
3
|
-
ok: true;
|
|
4
|
-
flags: EffectiveFeatureFlags;
|
|
5
|
-
}
|
|
6
|
-
export interface FeatureFlagLoadError {
|
|
7
|
-
ok: false;
|
|
8
|
-
reason: string;
|
|
9
|
-
nextAction: string;
|
|
10
|
-
}
|
|
11
|
-
export type LoadFeatureFlagsResult = FeatureFlagLoadResult | FeatureFlagLoadError;
|
|
12
|
-
/**
|
|
13
|
-
* Load effective feature flags for the given workspace.
|
|
14
|
-
*
|
|
15
|
-
* Returns ok:false with reason+nextAction on failure (fail-closed).
|
|
16
|
-
* Does NOT throw — callers must check .ok.
|
|
17
|
-
*/
|
|
18
|
-
export declare function loadWorkspaceFeatureFlags(workspaceDir: string): LoadFeatureFlagsResult;
|
|
19
|
-
/**
|
|
20
|
-
* Build the minimal featureFlags object expected by handleFeedbackReportsRoute.
|
|
21
|
-
* Fail-closed: if loading fails, returns feedback_channel enabled=false.
|
|
22
|
-
*/
|
|
23
|
-
export declare function buildFeedbackChannelFlags(loadResult: LoadFeatureFlagsResult): Record<string, {
|
|
24
|
-
enabled: boolean;
|
|
25
|
-
}>;
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Feature flag loader for pd-console server.
|
|
3
|
-
*
|
|
4
|
-
* Reads <workspaceDir>/.pd/feature-flags.yaml and merges with
|
|
5
|
-
* core defaults via computeEffectiveFlags.
|
|
6
|
-
*
|
|
7
|
-
* Fail-closed: if loading fails, the returned result indicates failure
|
|
8
|
-
* so callers can deny write paths that depend on feature flags.
|
|
9
|
-
*/
|
|
10
|
-
import * as fs from 'fs';
|
|
11
|
-
import * as path from 'path';
|
|
12
|
-
import * as yaml from 'js-yaml';
|
|
13
|
-
import { computeEffectiveFlags, DEFAULT_FEATURE_FLAGS, } from '@principles/core/runtime-v2';
|
|
14
|
-
const FEATURE_FLAGS_CONFIG_FILENAME = 'feature-flags.yaml';
|
|
15
|
-
const FEATURE_FLAGS_CONFIG_DIR = '.pd';
|
|
16
|
-
const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
17
|
-
function isRecord(value) {
|
|
18
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
19
|
-
}
|
|
20
|
-
function readConfigFile(configPath) {
|
|
21
|
-
try {
|
|
22
|
-
return { ok: true, content: fs.readFileSync(configPath, 'utf8') };
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
return {
|
|
26
|
-
ok: false,
|
|
27
|
-
reason: `Failed to read feature flags config: ${err instanceof Error ? err.message : String(err)}`,
|
|
28
|
-
nextAction: 'Verify file permissions on .pd/feature-flags.yaml and retry',
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function parseYaml(content) {
|
|
33
|
-
try {
|
|
34
|
-
return { ok: true, value: yaml.load(content, { schema: yaml.JSON_SCHEMA }) };
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return {
|
|
38
|
-
ok: false,
|
|
39
|
-
reason: 'feature-flags.yaml: YAML parse error',
|
|
40
|
-
nextAction: 'Fix YAML syntax in .pd/feature-flags.yaml or delete the file to use defaults',
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Load effective feature flags for the given workspace.
|
|
46
|
-
*
|
|
47
|
-
* Returns ok:false with reason+nextAction on failure (fail-closed).
|
|
48
|
-
* Does NOT throw — callers must check .ok.
|
|
49
|
-
*/
|
|
50
|
-
export function loadWorkspaceFeatureFlags(workspaceDir) {
|
|
51
|
-
const configPath = path.join(workspaceDir, FEATURE_FLAGS_CONFIG_DIR, FEATURE_FLAGS_CONFIG_FILENAME);
|
|
52
|
-
if (!fs.existsSync(configPath)) {
|
|
53
|
-
// No config file — use defaults (feedback_channel enabled by default)
|
|
54
|
-
return {
|
|
55
|
-
ok: true,
|
|
56
|
-
flags: computeEffectiveFlags({}, DEFAULT_FEATURE_FLAGS, configPath),
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
const readResult = readConfigFile(configPath);
|
|
60
|
-
if (!readResult.ok) {
|
|
61
|
-
return readResult;
|
|
62
|
-
}
|
|
63
|
-
const parseResult = parseYaml(readResult.content);
|
|
64
|
-
if (!parseResult.ok) {
|
|
65
|
-
return parseResult;
|
|
66
|
-
}
|
|
67
|
-
if (!isRecord(parseResult.value)) {
|
|
68
|
-
return {
|
|
69
|
-
ok: false,
|
|
70
|
-
reason: 'feature-flags.yaml: expected a YAML mapping, got ' + (Array.isArray(parseResult.value) ? 'array' : typeof parseResult.value),
|
|
71
|
-
nextAction: 'Replace .pd/feature-flags.yaml content with a valid YAML mapping or delete it',
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
const safeRecord = Object.create(null);
|
|
75
|
-
for (const key of Object.keys(parseResult.value)) {
|
|
76
|
-
if (DANGEROUS_KEYS.has(key)) {
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
if (Object.hasOwn(parseResult.value, key)) {
|
|
80
|
-
safeRecord[key] = parseResult.value[key];
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return {
|
|
84
|
-
ok: true,
|
|
85
|
-
flags: computeEffectiveFlags(safeRecord, DEFAULT_FEATURE_FLAGS, configPath),
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Build the minimal featureFlags object expected by handleFeedbackReportsRoute.
|
|
90
|
-
* Fail-closed: if loading fails, returns feedback_channel enabled=false.
|
|
91
|
-
*/
|
|
92
|
-
export function buildFeedbackChannelFlags(loadResult) {
|
|
93
|
-
if (!loadResult.ok) {
|
|
94
|
-
// Fail closed — disable feedback_channel when flags cannot be loaded
|
|
95
|
-
return { feedback_channel: { enabled: false } };
|
|
96
|
-
}
|
|
97
|
-
const feedbackDef = loadResult.flags.flags.feedback_channel;
|
|
98
|
-
return {
|
|
99
|
-
feedback_channel: { enabled: feedbackDef?.enabled ?? false },
|
|
100
|
-
};
|
|
101
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd central sync command implementation.
|
|
3
|
-
*
|
|
4
|
-
* Usage: pd central sync
|
|
5
|
-
*
|
|
6
|
-
* Triggers a sync cycle via CentralDatabase.syncAll() and reports
|
|
7
|
-
* per-workspace sync results with exit code 0 on success, non-zero on failure.
|
|
8
|
-
*/
|
|
9
|
-
export declare function handleCentralSync(): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=central-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"central-sync.d.ts","sourceRoot":"","sources":["../../src/commands/central-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBvD"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pd central sync command implementation.
|
|
3
|
-
*
|
|
4
|
-
* Usage: pd central sync
|
|
5
|
-
*
|
|
6
|
-
* Triggers a sync cycle via CentralDatabase.syncAll() and reports
|
|
7
|
-
* per-workspace sync results with exit code 0 on success, non-zero on failure.
|
|
8
|
-
*/
|
|
9
|
-
async function loadCentralDatabase() {
|
|
10
|
-
const importModule = Function('specifier', 'return import(specifier)');
|
|
11
|
-
return importModule('../../../openclaw-plugin/src/service/central-database.js');
|
|
12
|
-
}
|
|
13
|
-
export async function handleCentralSync() {
|
|
14
|
-
try {
|
|
15
|
-
const { CentralDatabase } = await loadCentralDatabase();
|
|
16
|
-
const centralDb = new CentralDatabase();
|
|
17
|
-
const results = centralDb.syncAll();
|
|
18
|
-
const totalRecords = Array.from(results.values()).reduce((sum, count) => sum + count, 0);
|
|
19
|
-
const workspaceCount = results.size;
|
|
20
|
-
console.log(`Sync complete — ${totalRecords} records across ${workspaceCount} workspace(s).`);
|
|
21
|
-
for (const [workspaceName, count] of results.entries()) {
|
|
22
|
-
console.log(` ${workspaceName}: ${count} records`);
|
|
23
|
-
}
|
|
24
|
-
centralDb.dispose();
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
28
|
-
console.error(`Error: Sync failed — ${message}`);
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=central-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"central-sync.js","sourceRoot":"","sources":["../../src/commands/central-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,KAAK,UAAU,mBAAmB;IAIhC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAKnE,CAAC;IACH,OAAO,YAAY,CAAC,0DAA0D,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QACzF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,mBAAmB,cAAc,gBAAgB,CAAC,CAAC;QAE9F,KAAK,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,aAAa,KAAK,KAAK,UAAU,CAAC,CAAC;QACtD,CAAC;QAED,SAAS,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { EffectiveFeatureFlags } from '@principles/core/runtime-v2';
|
|
2
|
-
export declare const FEATURE_FLAGS_CONFIG_FILENAME = "feature-flags.yaml";
|
|
3
|
-
export declare const FEATURE_FLAGS_CONFIG_DIR = ".pd";
|
|
4
|
-
export declare function getFeatureFlagsConfigPath(workspaceDir: string): string;
|
|
5
|
-
export declare function loadEffectiveFeatureFlags(workspaceDir: string): EffectiveFeatureFlags;
|
|
6
|
-
//# sourceMappingURL=feature-flag-loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag-loader.d.ts","sourceRoot":"","sources":["../../src/services/feature-flag-loader.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;AAClE,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAQ9C,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAkDrF"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import * as yaml from 'js-yaml';
|
|
4
|
-
import { computeEffectiveFlags, DEFAULT_FEATURE_FLAGS, } from '@principles/core/runtime-v2';
|
|
5
|
-
export const FEATURE_FLAGS_CONFIG_FILENAME = 'feature-flags.yaml';
|
|
6
|
-
export const FEATURE_FLAGS_CONFIG_DIR = '.pd';
|
|
7
|
-
const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
8
|
-
function isRecord(value) {
|
|
9
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
10
|
-
}
|
|
11
|
-
export function getFeatureFlagsConfigPath(workspaceDir) {
|
|
12
|
-
return path.join(workspaceDir, FEATURE_FLAGS_CONFIG_DIR, FEATURE_FLAGS_CONFIG_FILENAME);
|
|
13
|
-
}
|
|
14
|
-
export function loadEffectiveFeatureFlags(workspaceDir) {
|
|
15
|
-
const configPath = getFeatureFlagsConfigPath(workspaceDir);
|
|
16
|
-
if (!fs.existsSync(configPath)) {
|
|
17
|
-
return computeEffectiveFlags({}, DEFAULT_FEATURE_FLAGS, configPath);
|
|
18
|
-
}
|
|
19
|
-
const raw = fs.readFileSync(configPath, 'utf8');
|
|
20
|
-
let parsed;
|
|
21
|
-
try {
|
|
22
|
-
parsed = yaml.load(raw, { schema: yaml.JSON_SCHEMA });
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return {
|
|
26
|
-
...computeEffectiveFlags({}, DEFAULT_FEATURE_FLAGS, configPath),
|
|
27
|
-
warnings: ['feature-flags.yaml: YAML parse error, using defaults'],
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
if (parsed === null || parsed === undefined || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
31
|
-
return {
|
|
32
|
-
...computeEffectiveFlags({}, DEFAULT_FEATURE_FLAGS, configPath),
|
|
33
|
-
warnings: ['feature-flags.yaml: expected a mapping, using defaults'],
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
const parsedRecord = Object.create(null);
|
|
37
|
-
const warnings = [];
|
|
38
|
-
for (const key of Object.keys(parsed)) {
|
|
39
|
-
if (DANGEROUS_KEYS.has(key)) {
|
|
40
|
-
warnings.push(`feature-flags.yaml: dangerous key '${key}' rejected`);
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
if (Object.hasOwn(parsed, key) && isRecord(parsed)) {
|
|
44
|
-
parsedRecord[key] = parsed[key];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
const result = computeEffectiveFlags(parsedRecord, DEFAULT_FEATURE_FLAGS, configPath);
|
|
48
|
-
if (warnings.length > 0) {
|
|
49
|
-
result.warnings = [...warnings, ...result.warnings];
|
|
50
|
-
}
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=feature-flag-loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flag-loader.js","sourceRoot":"","sources":["../../src/services/feature-flag-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,CAAC,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAClE,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAE1E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,YAAoB;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,EAAE,6BAA6B,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,YAAoB;IAC5D,MAAM,UAAU,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC,EAAE,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAGhD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,GAAG,qBAAqB,CAAC,EAAE,EAAE,qBAAqB,EAAE,UAAU,CAAC;YAC/D,QAAQ,EAAE,CAAC,sDAAsD,CAAC;SACnE,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnG,OAAO;YACL,GAAG,qBAAqB,CAAC,EAAE,EAAE,qBAAqB,EAAE,UAAU,CAAC;YAC/D,QAAQ,EAAE,CAAC,wDAAwD,CAAC;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAA4B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,sCAAsC,GAAG,YAAY,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAClC,YAAY,EACZ,qBAAqB,EACrB,UAAU,CACX,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|