create-principles-disciple 1.86.0 → 1.87.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/index.js +6 -50
- package/console/dist/server/models/ActivationsConsoleModel.d.ts +0 -4
- package/console/dist/server/models/ActivationsConsoleModel.js +64 -72
- package/console/dist/server/models/ApprovalsConsoleModel.d.ts +33 -7
- package/console/dist/server/models/ApprovalsConsoleModel.js +203 -57
- package/console/dist/server/models/ApprovalsGroupedConsoleModel.d.ts +4 -2
- package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +179 -91
- package/console/dist/server/models/EvidenceChainConsoleModel.d.ts +4 -28
- package/console/dist/server/models/EvidenceChainConsoleModel.js +103 -298
- package/console/dist/server/models/GovernanceConsoleModel.d.ts +6 -4
- package/console/dist/server/models/GovernanceConsoleModel.js +269 -195
- package/console/dist/server/models/PrincipleClassifier.js +1 -1
- package/console/dist/server/models/PrincipleTrajectoryModel.d.ts +49 -0
- package/console/dist/server/models/PrincipleTrajectoryModel.js +485 -0
- package/console/dist/server/routes/approvals.js +65 -2
- package/console/dist/server/routes/principles.js +33 -0
- package/console/dist/server/routes/update.js +75 -26
- package/console/dist/ui/App.js +4 -2
- package/console/dist/ui/api.d.ts +6 -11
- package/console/dist/ui/api.js +19 -23
- package/console/dist/ui/components/focus/daily-thought-card.d.ts +1 -0
- package/console/dist/ui/components/focus/daily-thought-card.js +41 -0
- package/console/dist/ui/components/layout/app-sidebar.js +6 -4
- package/console/dist/ui/components/layout/page-loading.d.ts +13 -0
- package/console/dist/ui/components/layout/page-loading.js +14 -0
- package/console/dist/ui/components/layout/page-shell.d.ts +1 -0
- package/console/dist/ui/components/layout/page-shell.js +2 -1
- package/console/dist/ui/components/layout/section-title.js +1 -1
- package/console/dist/ui/components/notifications/NotificationProvider.d.ts +14 -0
- package/console/dist/ui/components/notifications/NotificationProvider.js +130 -0
- package/console/dist/ui/components/notifications/favicon-badge.d.ts +3 -0
- package/console/dist/ui/components/notifications/favicon-badge.js +68 -0
- package/console/dist/ui/components/notifications/notification-reducer.d.ts +9 -0
- package/console/dist/ui/components/notifications/notification-reducer.js +9 -0
- package/console/dist/ui/components/notifications/sound-storage.d.ts +3 -0
- package/console/dist/ui/components/notifications/sound-storage.js +37 -0
- package/console/dist/ui/components/notifications/useNotifications.d.ts +1 -0
- package/console/dist/ui/components/notifications/useNotifications.js +9 -0
- package/console/dist/ui/components/ui/badge.js +1 -1
- package/console/dist/ui/components/ui/button.d.ts +2 -2
- package/console/dist/ui/components/ui/button.js +1 -1
- package/console/dist/ui/components/ui/card.js +1 -1
- package/console/dist/ui/components/ui/input.js +1 -1
- package/console/dist/ui/components/ui/sheet.d.ts +1 -1
- package/console/dist/ui/data/daily-thoughts.d.ts +15 -0
- package/console/dist/ui/data/daily-thoughts.js +164 -0
- package/console/dist/ui/hooks/useNotificationSound.d.ts +12 -0
- package/console/dist/ui/hooks/useNotificationSound.js +74 -0
- package/console/dist/ui/i18n/en.json +94 -12
- package/console/dist/ui/i18n/zh-CN.json +94 -12
- package/console/dist/ui/pages/activation/ActivationPage.js +8 -15
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +11 -9
- package/console/dist/ui/pages/focus/FocusPage.d.ts +13 -0
- package/console/dist/ui/pages/focus/FocusPage.js +140 -19
- package/console/dist/ui/pages/pain/PainPage.js +71 -32
- package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +100 -0
- package/console/dist/ui/pages/pain/pain-card-helpers.js +103 -0
- package/console/dist/ui/pages/principles/PrincipleDetailPage.js +99 -20
- package/console/dist/ui/pages/principles/PrinciplesPage.js +8 -8
- package/console/dist/ui/pages/report-problem/ReportProblemPage.js +20 -18
- package/console/dist/ui/pages/settings/SettingsPage.js +9 -5
- package/console/dist/ui/pages/settings/UpdatePage.d.ts +0 -4
- package/console/dist/ui/pages/settings/UpdatePage.js +78 -75
- package/console/dist/ui/utils/control-center-helpers.d.ts +2 -0
- package/console/dist/ui/utils/enum-labels.d.ts +50 -0
- package/console/dist/ui/utils/enum-labels.js +164 -0
- package/console/dist/ui/utils/validators.d.ts +62 -6
- package/console/dist/ui/utils/validators.js +222 -22
- package/console/dist/web/assets/app.css +269 -122
- package/console/dist/web/assets/app.js +8134 -3177
- package/console/package.json +6 -3
- package/core/dist/evolution-store.js +0 -2
- package/core/dist/evolution-store.js.map +1 -1
- package/core/dist/index.d.ts +1 -10
- package/core/dist/index.d.ts.map +1 -1
- package/core/dist/index.js +1 -7
- package/core/dist/index.js.map +1 -1
- package/core/dist/io.d.ts +0 -1
- package/core/dist/io.d.ts.map +1 -1
- package/core/dist/io.js +0 -4
- package/core/dist/io.js.map +1 -1
- package/core/dist/principle-injector.d.ts +1 -1
- package/core/dist/principle-injector.d.ts.map +1 -1
- package/core/dist/prompt-builder/__tests__/prompt-builder-core.test.js.map +1 -1
- package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.d.ts +2 -0
- package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.d.ts.map +1 -0
- package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.js +531 -0
- package/core/dist/quality-scorecard/__tests__/quality-scorecard.test.js.map +1 -0
- package/core/dist/quality-scorecard/index.d.ts +11 -0
- package/core/dist/quality-scorecard/index.d.ts.map +1 -0
- package/core/dist/quality-scorecard/index.js +4 -0
- package/core/dist/quality-scorecard/index.js.map +1 -0
- package/core/dist/quality-scorecard/report-generator.d.ts +11 -0
- package/core/dist/quality-scorecard/report-generator.d.ts.map +1 -0
- package/core/dist/quality-scorecard/report-generator.js +204 -0
- package/core/dist/quality-scorecard/report-generator.js.map +1 -0
- package/core/dist/quality-scorecard/types.d.ts +106 -0
- package/core/dist/quality-scorecard/types.d.ts.map +1 -0
- package/core/dist/quality-scorecard/types.js +51 -0
- package/core/dist/quality-scorecard/types.js.map +1 -0
- package/core/dist/quality-scorecard/validation.d.ts +73 -0
- package/core/dist/quality-scorecard/validation.d.ts.map +1 -0
- package/core/dist/quality-scorecard/validation.js +251 -0
- package/core/dist/quality-scorecard/validation.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.d.ts +20 -0
- package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.js +223 -0
- package/core/dist/runtime-v2/__tests__/activation-types-helpers.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/admission-gate.test.js +56 -3
- package/core/dist/runtime-v2/__tests__/admission-gate.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/adversarial-loop.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/adversarial-loop.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/adversarial-loop.test.js +381 -0
- package/core/dist/runtime-v2/__tests__/adversarial-loop.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js +175 -83
- package/core/dist/runtime-v2/__tests__/architecture-regression.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js +40 -80
- package/core/dist/runtime-v2/__tests__/artificer-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js +126 -21
- package/core/dist/runtime-v2/__tests__/attack-e2e-pipeline-smoke.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.js +169 -0
- package/core/dist/runtime-v2/__tests__/build-golden-trace-from-artificer.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.js +200 -0
- package/core/dist/runtime-v2/__tests__/build-l2-principle-reader.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js +20 -3
- package/core/dist/runtime-v2/__tests__/chain-integrity-real-path.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/dreamer-output-validator.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/dreamer-runner-vslice.test.js +12 -0
- package/core/dist/runtime-v2/__tests__/dreamer-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/dreamer-runner.test.js +10 -5
- package/core/dist/runtime-v2/__tests__/dreamer-runner.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js +831 -0
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice-v2.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js +22 -0
- package/core/dist/runtime-v2/__tests__/evaluator-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.js +344 -0
- package/core/dist/runtime-v2/__tests__/evidence-chain-contract.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-guards.test.d.ts +18 -0
- package/core/dist/runtime-v2/__tests__/evidence-guards.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-guards.test.js +155 -0
- package/core/dist/runtime-v2/__tests__/evidence-guards.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js +4 -3
- package/core/dist/runtime-v2/__tests__/evidence-sanitizer.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/feedback/privacy-preview.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/feedback/render-github-url.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/feedback/render-markdown.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.d.ts.map +1 -1
- package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.js +3 -2
- package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.test.js +19 -29
- package/core/dist/runtime-v2/__tests__/fixtures/llm-e2e-config.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/full-chain-real-llm.test.js +2 -2
- package/core/dist/runtime-v2/__tests__/full-chain-real-llm.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js +372 -0
- package/core/dist/runtime-v2/__tests__/golden-path-diagnostician-e2e.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/intake-to-internalization-bridge.test.js +219 -2
- package/core/dist/runtime-v2/__tests__/intake-to-internalization-bridge.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-chain-integrity-read-model.test.js +96 -0
- package/core/dist/runtime-v2/__tests__/internalization-chain-integrity-read-model.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.js +226 -0
- package/core/dist/runtime-v2/__tests__/internalization-consumer-product-path.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.js +153 -0
- package/core/dist/runtime-v2/__tests__/internalization-failure-persistence.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/internalization-integrity-remediation.test.js +525 -5
- package/core/dist/runtime-v2/__tests__/internalization-integrity-remediation.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-orchestrator.test.js +1 -3
- package/core/dist/runtime-v2/__tests__/internalization-orchestrator.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-peer-runner-contracts.test.js +6 -0
- package/core/dist/runtime-v2/__tests__/internalization-peer-runner-contracts.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-queue-read-model.test.js +0 -1
- package/core/dist/runtime-v2/__tests__/internalization-queue-read-model.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/internalization-state-machine.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/mainline-contract.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/mainline-contract.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/mainline-contract.test.js +194 -0
- package/core/dist/runtime-v2/__tests__/mainline-contract.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/mainline-product-path.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/mainline-product-path.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/mainline-product-path.test.js +429 -0
- package/core/dist/runtime-v2/__tests__/mainline-product-path.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-chain-read-model.test.js +0 -1
- package/core/dist/runtime-v2/__tests__/pain-chain-read-model.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pain-evidence-contract.test.js +5 -2
- package/core/dist/runtime-v2/__tests__/pain-evidence-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js +10 -6
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-retried.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.js +211 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-short-circuit.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.js +182 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-bridge-workspace-dir.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js +53 -0
- package/core/dist/runtime-v2/__tests__/pain-signal-observability.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/philosopher-runner-vslice.test.js +4 -0
- package/core/dist/runtime-v2/__tests__/philosopher-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pitask-metadata.test.js +5 -1
- package/core/dist/runtime-v2/__tests__/pitask-metadata.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/principle-compiler-core.test.js +85 -7
- package/core/dist/runtime-v2/__tests__/principle-compiler-core.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js +14 -1
- package/core/dist/runtime-v2/__tests__/proven-channel-baseline.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/pruning-read-model.test.js +11 -6
- package/core/dist/runtime-v2/__tests__/pruning-read-model.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js +8 -0
- package/core/dist/runtime-v2/__tests__/rollout-reviewer-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/rulehost-oob-defense-simulation.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js +4 -0
- package/core/dist/runtime-v2/__tests__/scribe-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.js +168 -0
- package/core/dist/runtime-v2/__tests__/stalled-diagnostician-task.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/task-three-strikes.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/trace-refiner-agent.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/trainer-output-validator.test.js.map +1 -1
- package/core/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js +8 -0
- package/core/dist/runtime-v2/__tests__/trainer-runner-vslice.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js +7 -1
- package/core/dist/runtime-v2/activation/__tests__/activation-dispatcher.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.d.ts +21 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.js +363 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-completion-service.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts +15 -0
- package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js +339 -164
- package/core/dist/runtime-v2/activation/__tests__/approval-queue.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js +0 -1
- package/core/dist/runtime-v2/activation/__tests__/approval-store-extended.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.d.ts +20 -0
- package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.js +145 -0
- package/core/dist/runtime-v2/activation/__tests__/edit-then-approve.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts +21 -0
- package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js +468 -0
- package/core/dist/runtime-v2/activation/__tests__/low-risk-writers.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.d.ts +15 -0
- package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.js +272 -0
- package/core/dist/runtime-v2/activation/__tests__/production-gate-deps.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js +11 -0
- package/core/dist/runtime-v2/activation/__tests__/prompt-activation-reader-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js +54 -1
- package/core/dist/runtime-v2/activation/__tests__/sqlite-activation-state-store.test.js.map +1 -1
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.d.ts +35 -0
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js +511 -0
- package/core/dist/runtime-v2/activation/__tests__/story-a-acceptance.test.js.map +1 -0
- package/core/dist/runtime-v2/activation/activation-dispatcher.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/activation-dispatcher.js +87 -1
- package/core/dist/runtime-v2/activation/activation-dispatcher.js.map +1 -1
- package/core/dist/runtime-v2/activation/activation-types.d.ts +49 -2
- package/core/dist/runtime-v2/activation/activation-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/activation-types.js +6 -0
- package/core/dist/runtime-v2/activation/activation-types.js.map +1 -1
- package/core/dist/runtime-v2/activation/approval-completion-service.d.ts +50 -0
- package/core/dist/runtime-v2/activation/approval-completion-service.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/approval-completion-service.js +160 -0
- package/core/dist/runtime-v2/activation/approval-completion-service.js.map +1 -0
- package/core/dist/runtime-v2/activation/approval-queue.d.ts +7 -1
- package/core/dist/runtime-v2/activation/approval-queue.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/approval-queue.js +14 -0
- package/core/dist/runtime-v2/activation/approval-queue.js.map +1 -1
- package/core/dist/runtime-v2/activation/index.d.ts +5 -2
- package/core/dist/runtime-v2/activation/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/index.js +8 -1
- package/core/dist/runtime-v2/activation/index.js.map +1 -1
- package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts +2 -1
- package/core/dist/runtime-v2/activation/memory-activation-state-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/memory-activation-state-store.js +11 -2
- package/core/dist/runtime-v2/activation/memory-activation-state-store.js.map +1 -1
- package/core/dist/runtime-v2/activation/memory-approval-store.d.ts +2 -1
- package/core/dist/runtime-v2/activation/memory-approval-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/memory-approval-store.js +18 -0
- package/core/dist/runtime-v2/activation/memory-approval-store.js.map +1 -1
- package/core/dist/runtime-v2/activation/production-gate-deps.d.ts +32 -0
- package/core/dist/runtime-v2/activation/production-gate-deps.d.ts.map +1 -0
- package/core/dist/runtime-v2/activation/production-gate-deps.js +213 -0
- package/core/dist/runtime-v2/activation/production-gate-deps.js.map +1 -0
- package/core/dist/runtime-v2/activation/sqlite-activation-state-store.d.ts +2 -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 +21 -7
- 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 +2 -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 +24 -0
- package/core/dist/runtime-v2/activation/sqlite-approval-store.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.d.ts +2 -0
- package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.js +340 -0
- package/core/dist/runtime-v2/adapter/__tests__/artificer-l2-adapter.test.js.map +1 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.d.ts +2 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.js +420 -0
- package/core/dist/runtime-v2/adapter/__tests__/l2-agent-loop-adapter.test.js.map +1 -0
- package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js +283 -1
- package/core/dist/runtime-v2/adapter/__tests__/pi-ai-runtime-adapter.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.js +4 -4
- package/core/dist/runtime-v2/adapter/__tests__/schema-prompt-adapter.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/structured-output-repair.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js +221 -0
- package/core/dist/runtime-v2/adapter/__tests__/test-double-runtime-adapter.test.js.map +1 -1
- package/core/dist/runtime-v2/adapter/artificer-l2-adapter.d.ts +49 -0
- package/core/dist/runtime-v2/adapter/artificer-l2-adapter.d.ts.map +1 -0
- package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js +319 -0
- package/core/dist/runtime-v2/adapter/artificer-l2-adapter.js.map +1 -0
- package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts +78 -0
- package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.d.ts.map +1 -0
- package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js +478 -0
- package/core/dist/runtime-v2/adapter/l2-agent-loop-adapter.js.map +1 -0
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts +6 -0
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.d.ts.map +1 -1
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js +33 -9
- package/core/dist/runtime-v2/adapter/pi-ai-runtime-adapter.js.map +1 -1
- package/core/dist/runtime-v2/adapter/structured-output-repair.js +0 -1
- package/core/dist/runtime-v2/adapter/structured-output-repair.js.map +1 -1
- package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.d.ts +7 -0
- package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.d.ts.map +1 -1
- package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.js +40 -1
- package/core/dist/runtime-v2/adapter/test-double-runtime-adapter.js.map +1 -1
- package/core/dist/runtime-v2/admission-gate.d.ts +5 -1
- package/core/dist/runtime-v2/admission-gate.d.ts.map +1 -1
- package/core/dist/runtime-v2/admission-gate.js +12 -1
- package/core/dist/runtime-v2/admission-gate.js.map +1 -1
- package/core/dist/runtime-v2/adversarial-loop.d.ts +65 -0
- package/core/dist/runtime-v2/adversarial-loop.d.ts.map +1 -0
- package/core/dist/runtime-v2/adversarial-loop.js +181 -0
- package/core/dist/runtime-v2/adversarial-loop.js.map +1 -0
- package/core/dist/runtime-v2/agent-spec.d.ts +1 -1
- package/core/dist/runtime-v2/build-l2-principle-reader.d.ts +49 -0
- package/core/dist/runtime-v2/build-l2-principle-reader.d.ts.map +1 -0
- package/core/dist/runtime-v2/build-l2-principle-reader.js +70 -0
- package/core/dist/runtime-v2/build-l2-principle-reader.js.map +1 -0
- package/core/dist/runtime-v2/candidate-intake-service.js +0 -1
- package/core/dist/runtime-v2/candidate-intake-service.js.map +1 -1
- package/core/dist/runtime-v2/cli/diagnose.d.ts +8 -2
- package/core/dist/runtime-v2/cli/diagnose.d.ts.map +1 -1
- package/core/dist/runtime-v2/cli/diagnose.js +10 -0
- package/core/dist/runtime-v2/cli/diagnose.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js +46 -4
- package/core/dist/runtime-v2/config/__tests__/pd-config-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js +2 -2
- package/core/dist/runtime-v2/config/__tests__/pd-config-redaction-deep.test.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-validation-edge-cases.test.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts +1 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-agent-binding.js +3 -0
- package/core/dist/runtime-v2/config/pd-config-agent-binding.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js +8 -18
- package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-effective.js +16 -3
- package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-feature-flags.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-feature-flags.js +11 -2
- package/core/dist/runtime-v2/config/pd-config-feature-flags.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-redaction.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-redaction.js +9 -0
- package/core/dist/runtime-v2/config/pd-config-redaction.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts +11 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.js +5 -1
- package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-validate.js +12 -0
- package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
- package/core/dist/runtime-v2/context-payload.d.ts +4 -6
- package/core/dist/runtime-v2/context-payload.d.ts.map +1 -1
- package/core/dist/runtime-v2/context-payload.js +0 -2
- package/core/dist/runtime-v2/context-payload.js.map +1 -1
- package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.d.ts +5 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js +91 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-axiom-block.test.js.map +1 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.d.ts +2 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js +71 -0
- package/core/dist/runtime-v2/core-principles/__tests__/core-principle-registry.test.js.map +1 -0
- package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.d.ts +2 -0
- package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.js +78 -0
- package/core/dist/runtime-v2/core-principles/__tests__/strip-fabricated-ids.test.js.map +1 -0
- package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts +67 -0
- package/core/dist/runtime-v2/core-principles/core-axiom-block.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/core-axiom-block.js +76 -0
- package/core/dist/runtime-v2/core-principles/core-axiom-block.js.map +1 -0
- package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts +41 -0
- package/core/dist/runtime-v2/core-principles/core-principle-registry.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/core-principle-registry.js +112 -0
- package/core/dist/runtime-v2/core-principles/core-principle-registry.js.map +1 -0
- package/core/dist/runtime-v2/core-principles/index.d.ts +6 -0
- package/core/dist/runtime-v2/core-principles/index.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/index.js +4 -0
- package/core/dist/runtime-v2/core-principles/index.js.map +1 -0
- package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.d.ts +15 -0
- package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.d.ts.map +1 -0
- package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.js +28 -0
- package/core/dist/runtime-v2/core-principles/strip-fabricated-ids.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.d.ts +2 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.js +45 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-distiller-output.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.d.ts +2 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js +91 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/diag-rootcause-output.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.d.ts +2 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.js +39 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/distiller-prompt-builder.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.d.ts +2 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js +34 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/rootcause-prompt-builder.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.d.ts +2 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.js +57 -0
- package/core/dist/runtime-v2/diagnostician/__tests__/router-prompt-builder.test.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/diag-distiller-output.d.ts +80 -0
- package/core/dist/runtime-v2/diagnostician/diag-distiller-output.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/diag-distiller-output.js +103 -0
- package/core/dist/runtime-v2/diagnostician/diag-distiller-output.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts +117 -0
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js +182 -0
- package/core/dist/runtime-v2/diagnostician/diag-rootcause-output.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.d.ts +134 -0
- package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.js +149 -0
- package/core/dist/runtime-v2/diagnostician/distiller-prompt-builder.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts +96 -0
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js +212 -0
- package/core/dist/runtime-v2/diagnostician/rootcause-prompt-builder.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician/router-prompt-builder.d.ts +127 -0
- package/core/dist/runtime-v2/diagnostician/router-prompt-builder.d.ts.map +1 -0
- package/core/dist/runtime-v2/diagnostician/router-prompt-builder.js +131 -0
- package/core/dist/runtime-v2/diagnostician/router-prompt-builder.js.map +1 -0
- package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts +10 -50
- package/core/dist/runtime-v2/diagnostician-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/diagnostician-prompt-builder.js +0 -148
- package/core/dist/runtime-v2/diagnostician-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/evidence-guards.d.ts +31 -0
- package/core/dist/runtime-v2/evidence-guards.d.ts.map +1 -0
- package/core/dist/runtime-v2/evidence-guards.js +29 -0
- package/core/dist/runtime-v2/evidence-guards.js.map +1 -0
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js +106 -7
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/plugin-surface-registry.test.js +3 -3
- package/core/dist/runtime-v2/feature-flags/__tests__/plugin-surface-registry.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +39 -4
- 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 +27 -22
- package/core/dist/runtime-v2/feature-flags/plugin-surface-registry.js.map +1 -1
- package/core/dist/runtime-v2/feedback/redact-sensitive.js.map +1 -1
- package/core/dist/runtime-v2/feedback/safe-stringify.js.map +1 -1
- package/core/dist/runtime-v2/full-trace-contract.d.ts +3 -3
- package/core/dist/runtime-v2/golden-trace-replay-validator.d.ts +8 -0
- package/core/dist/runtime-v2/golden-trace-replay-validator.d.ts.map +1 -1
- package/core/dist/runtime-v2/golden-trace-replay-validator.js +3 -3
- package/core/dist/runtime-v2/golden-trace-replay-validator.js.map +1 -1
- package/core/dist/runtime-v2/golden-trace.d.ts +46 -1
- package/core/dist/runtime-v2/golden-trace.d.ts.map +1 -1
- package/core/dist/runtime-v2/golden-trace.js +70 -4
- package/core/dist/runtime-v2/golden-trace.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +62 -31
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +54 -18
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.d.ts +25 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.js +123 -0
- package/core/dist/runtime-v2/internalization/__tests__/__fixtures__/split-pipeline-mock-outputs.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.js +139 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-case.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.js +62 -0
- package/core/dist/runtime-v2/internalization/__tests__/adversarial-feedback.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js +24 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder-v2.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js +5 -4
- package/core/dist/runtime-v2/internalization/__tests__/artificer-prompt-builder.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js +248 -0
- package/core/dist/runtime-v2/internalization/__tests__/artificer-rule-output.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +803 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js +441 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-distiller-runner.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js +340 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-runner.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js +441 -0
- package/core/dist/runtime-v2/internalization/__tests__/diag-router-runner.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.js +209 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-output-v2.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.js +125 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-prompt-builder-v2.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.js +223 -0
- package/core/dist/runtime-v2/internalization/__tests__/internalization-consumer-decision.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js +4 -0
- package/core/dist/runtime-v2/internalization/__tests__/philosopher-runner-trust-boundary.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/refiner-sandbox-wrapper.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.js +270 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-code-dialect.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.js +180 -0
- package/core/dist/runtime-v2/internalization/__tests__/rule-host-input-builder.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js +224 -0
- package/core/dist/runtime-v2/internalization/__tests__/runnerkind-seam.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js +13 -8
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-builder.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js +4 -3
- package/core/dist/runtime-v2/internalization/__tests__/scribe-prompt-language.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js +227 -0
- package/core/dist/runtime-v2/internalization/__tests__/split-diagnostician-runner-retry.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/adversarial-case.d.ts +32 -0
- package/core/dist/runtime-v2/internalization/adversarial-case.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/adversarial-case.js +68 -0
- package/core/dist/runtime-v2/internalization/adversarial-case.js.map +1 -0
- package/core/dist/runtime-v2/internalization/adversarial-feedback.d.ts +23 -0
- package/core/dist/runtime-v2/internalization/adversarial-feedback.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/adversarial-feedback.js +20 -0
- package/core/dist/runtime-v2/internalization/adversarial-feedback.js.map +1 -0
- package/core/dist/runtime-v2/internalization/artificer-output.d.ts +54 -30
- package/core/dist/runtime-v2/internalization/artificer-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-output.js +144 -36
- package/core/dist/runtime-v2/internalization/artificer-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts +10 -2
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js +37 -20
- package/core/dist/runtime-v2/internalization/artificer-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-runner.d.ts +19 -9
- package/core/dist/runtime-v2/internalization/artificer-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/artificer-runner.js +21 -9
- package/core/dist/runtime-v2/internalization/artificer-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/correction-proposal.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/correction-proposal.js +27 -16
- package/core/dist/runtime-v2/internalization/correction-proposal.js.map +1 -1
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.d.ts +83 -0
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.js +274 -0
- package/core/dist/runtime-v2/internalization/diag-distiller-runner.js.map +1 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts +73 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js +229 -0
- package/core/dist/runtime-v2/internalization/diag-rootcause-runner.js.map +1 -0
- package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts +85 -0
- package/core/dist/runtime-v2/internalization/diag-router-runner.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/diag-router-runner.js +353 -0
- package/core/dist/runtime-v2/internalization/diag-router-runner.js.map +1 -0
- package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.d.ts +19 -1
- package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.js +48 -8
- package/core/dist/runtime-v2/internalization/dreamer-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/dreamer-runner.d.ts +7 -1
- package/core/dist/runtime-v2/internalization/dreamer-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/dreamer-runner.js +13 -3
- package/core/dist/runtime-v2/internalization/dreamer-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-output.d.ts +63 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-output.js +158 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts +8 -1
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.js +17 -4
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts +114 -4
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js +629 -7
- package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.d.ts +17 -0
- package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.js +451 -0
- package/core/dist/runtime-v2/internalization/golden-dogfood-fixtures.js.map +1 -0
- package/core/dist/runtime-v2/internalization/index.d.ts +21 -9
- package/core/dist/runtime-v2/internalization/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/index.js +16 -6
- package/core/dist/runtime-v2/internalization/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.d.ts +25 -0
- package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.js +67 -12
- package/core/dist/runtime-v2/internalization/intake-to-internalization-bridge.js.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-consumer-decision.d.ts +17 -0
- package/core/dist/runtime-v2/internalization/internalization-consumer-decision.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/internalization-consumer-decision.js +28 -0
- package/core/dist/runtime-v2/internalization/internalization-consumer-decision.js.map +1 -0
- package/core/dist/runtime-v2/internalization/internalization-job-graph.d.ts +14 -1
- package/core/dist/runtime-v2/internalization/internalization-job-graph.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-job-graph.js +22 -0
- package/core/dist/runtime-v2/internalization/internalization-job-graph.js.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts +9 -9
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.js +32 -9
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-state-machine.d.ts +2 -2
- package/core/dist/runtime-v2/internalization/internalization-state-machine.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-state-machine.js +35 -4
- package/core/dist/runtime-v2/internalization/internalization-state-machine.js.map +1 -1
- package/core/dist/runtime-v2/internalization/peer-runner-contracts.d.ts +31 -4
- package/core/dist/runtime-v2/internalization/peer-runner-contracts.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/peer-runner-contracts.js +42 -12
- package/core/dist/runtime-v2/internalization/peer-runner-contracts.js.map +1 -1
- package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.d.ts +20 -1
- package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.js +47 -6
- package/core/dist/runtime-v2/internalization/philosopher-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/philosopher-runner.d.ts +6 -1
- package/core/dist/runtime-v2/internalization/philosopher-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/philosopher-runner.js +10 -3
- package/core/dist/runtime-v2/internalization/philosopher-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts +9 -2
- package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/pitask-metadata.js +22 -11
- package/core/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
- package/core/dist/runtime-v2/internalization/prompt-serializer.d.ts +3 -0
- package/core/dist/runtime-v2/internalization/prompt-serializer.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/prompt-serializer.js +22 -0
- package/core/dist/runtime-v2/internalization/prompt-serializer.js.map +1 -0
- package/core/dist/runtime-v2/internalization/queue-actionability.d.ts +3 -3
- package/core/dist/runtime-v2/internalization/queue-actionability.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js +16 -1
- package/core/dist/runtime-v2/internalization/refiner-sandbox-wrapper.js.map +1 -1
- package/core/dist/runtime-v2/internalization/rollout-reviewer-prompt-builder.d.ts +1 -1
- package/core/dist/runtime-v2/internalization/rollout-reviewer-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/rollout-reviewer-prompt-builder.js +2 -2
- package/core/dist/runtime-v2/internalization/rule-code-validator.d.ts +29 -0
- package/core/dist/runtime-v2/internalization/rule-code-validator.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/rule-code-validator.js +87 -1
- package/core/dist/runtime-v2/internalization/rule-code-validator.js.map +1 -1
- package/core/dist/runtime-v2/internalization/rule-host-evaluator.d.ts +1 -0
- package/core/dist/runtime-v2/internalization/rule-host-evaluator.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/rule-host-evaluator.js +15 -1
- package/core/dist/runtime-v2/internalization/rule-host-evaluator.js.map +1 -1
- package/core/dist/runtime-v2/internalization/rule-host-input-builder.d.ts +62 -0
- package/core/dist/runtime-v2/internalization/rule-host-input-builder.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/rule-host-input-builder.js +182 -0
- package/core/dist/runtime-v2/internalization/rule-host-input-builder.js.map +1 -0
- package/core/dist/runtime-v2/internalization/rule-host-validator.d.ts +37 -0
- package/core/dist/runtime-v2/internalization/rule-host-validator.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/rule-host-validator.js +154 -0
- package/core/dist/runtime-v2/internalization/rule-host-validator.js.map +1 -0
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +20 -6
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js +31 -15
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-runner.d.ts +6 -1
- package/core/dist/runtime-v2/internalization/scribe-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-runner.js +10 -3
- package/core/dist/runtime-v2/internalization/scribe-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts +103 -0
- package/core/dist/runtime-v2/internalization/split-diagnostician-runner.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/split-diagnostician-runner.js +286 -0
- package/core/dist/runtime-v2/internalization/split-diagnostician-runner.js.map +1 -0
- package/core/dist/runtime-v2/internalization/template-generator.d.ts +7 -2
- package/core/dist/runtime-v2/internalization/template-generator.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/template-generator.js +10 -5
- package/core/dist/runtime-v2/internalization/template-generator.js.map +1 -1
- package/core/dist/runtime-v2/internalization/trainer-prompt-builder.d.ts +1 -1
- package/core/dist/runtime-v2/internalization/trainer-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/trainer-prompt-builder.js +2 -2
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.d.ts +5 -0
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js +48 -2
- package/core/dist/runtime-v2/internalization-chain-integrity-read-model.js.map +1 -1
- package/core/dist/runtime-v2/internalization-integrity-remediation.d.ts +67 -0
- package/core/dist/runtime-v2/internalization-integrity-remediation.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization-integrity-remediation.js +802 -0
- package/core/dist/runtime-v2/internalization-integrity-remediation.js.map +1 -1
- package/core/dist/runtime-v2/internalization-queue-read-model.d.ts +7 -7
- package/core/dist/runtime-v2/internalization-queue-read-model.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization-queue-read-model.js +4 -4
- package/core/dist/runtime-v2/internalization-queue-read-model.js.map +1 -1
- package/core/dist/runtime-v2/mainline-contract.d.ts +138 -0
- package/core/dist/runtime-v2/mainline-contract.d.ts.map +1 -0
- package/core/dist/runtime-v2/mainline-contract.js +224 -0
- package/core/dist/runtime-v2/mainline-contract.js.map +1 -0
- package/core/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js +29 -22
- package/core/dist/runtime-v2/observer/__tests__/empathy-observer.real-e2e.test.js.map +1 -1
- package/core/dist/runtime-v2/observer/agent-scheduler.js.map +1 -1
- package/core/dist/runtime-v2/observer/empathy-observer.js +1 -1
- package/core/dist/runtime-v2/observer/empathy-observer.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-bridge.d.ts +36 -4
- package/core/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-bridge.js +81 -37
- package/core/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.d.ts +4 -0
- package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.js +58 -8
- package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +20 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js +80 -23
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
- package/core/dist/runtime-v2/pain-to-principle-service.d.ts +5 -1
- package/core/dist/runtime-v2/pain-to-principle-service.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-to-principle-service.js +39 -0
- package/core/dist/runtime-v2/pain-to-principle-service.js.map +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.d.ts.map +1 -1
- package/core/dist/runtime-v2/proven-channel-baseline.js +14 -0
- package/core/dist/runtime-v2/proven-channel-baseline.js.map +1 -1
- package/core/dist/runtime-v2/recovery-sweep-service.d.ts +18 -0
- package/core/dist/runtime-v2/recovery-sweep-service.d.ts.map +1 -1
- package/core/dist/runtime-v2/recovery-sweep-service.js +46 -0
- package/core/dist/runtime-v2/recovery-sweep-service.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js +11 -2
- package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-trust-boundary.test.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnose.test.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/pain-signal-bridge-admission.test.js +6 -0
- package/core/dist/runtime-v2/runner/__tests__/pain-signal-bridge-admission.test.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/pain-signal-bridge.test.js.map +1 -1
- package/core/dist/runtime-v2/runner/base-peer-runner.d.ts +10 -3
- package/core/dist/runtime-v2/runner/base-peer-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/runner/base-peer-runner.js +58 -15
- package/core/dist/runtime-v2/runner/base-peer-runner.js.map +1 -1
- package/core/dist/runtime-v2/runner/peer-runner-types.d.ts +10 -3
- package/core/dist/runtime-v2/runner/peer-runner-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/runtime-protocol.d.ts +3 -3
- package/core/dist/runtime-v2/runtime-protocol.d.ts.map +1 -1
- package/core/dist/runtime-v2/runtime-protocol.js +1 -0
- package/core/dist/runtime-v2/runtime-protocol.js.map +1 -1
- package/core/dist/runtime-v2/runtime-selector.d.ts +3 -3
- package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.d.ts +26 -0
- package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.d.ts.map +1 -0
- package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.js +59 -0
- package/core/dist/runtime-v2/stalled-diagnostician-task-read-model.js.map +1 -0
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js +2 -2
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js.map +1 -1
- package/core/dist/runtime-v2/store/concurrent-lease.test.js +13 -13
- package/core/dist/runtime-v2/store/concurrent-lease.test.js.map +1 -1
- package/core/dist/runtime-v2/store/context/index.d.ts +1 -0
- package/core/dist/runtime-v2/store/context/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts +8 -0
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js +54 -3
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js.map +1 -1
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.test.js +373 -2
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.test.js.map +1 -1
- package/core/dist/runtime-v2/store/context/trajectory-turn-reader.d.ts +32 -0
- package/core/dist/runtime-v2/store/context/trajectory-turn-reader.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/context/trajectory-turn-reader.js +12 -0
- package/core/dist/runtime-v2/store/context/trajectory-turn-reader.js.map +1 -0
- package/core/dist/runtime-v2/store/event-emitter.js +0 -1
- package/core/dist/runtime-v2/store/event-emitter.js.map +1 -1
- package/core/dist/runtime-v2/store/history/sqlite-history-query.test.js +1 -1
- package/core/dist/runtime-v2/store/history/sqlite-history-query.test.js.map +1 -1
- package/core/dist/runtime-v2/store/idempotent-transitions.test.js +0 -5
- package/core/dist/runtime-v2/store/idempotent-transitions.test.js.map +1 -1
- package/core/dist/runtime-v2/store/lifecycle/lease-manager.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/lifecycle/lease-manager.js +5 -0
- package/core/dist/runtime-v2/store/lifecycle/lease-manager.js.map +1 -1
- package/core/dist/runtime-v2/store/lifecycle/lease-manager.test.js +0 -2
- package/core/dist/runtime-v2/store/lifecycle/lease-manager.test.js.map +1 -1
- package/core/dist/runtime-v2/store/lifecycle/recovery-sweep.test.js +0 -2
- package/core/dist/runtime-v2/store/lifecycle/recovery-sweep.test.js.map +1 -1
- package/core/dist/runtime-v2/store/run/memory-run-store.d.ts +2 -1
- package/core/dist/runtime-v2/store/run/memory-run-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/run/memory-run-store.js +5 -0
- package/core/dist/runtime-v2/store/run/memory-run-store.js.map +1 -1
- package/core/dist/runtime-v2/store/run/run-store.d.ts +27 -0
- package/core/dist/runtime-v2/store/run/run-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/run/sqlite-run-store.d.ts +26 -2
- package/core/dist/runtime-v2/store/run/sqlite-run-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/run/sqlite-run-store.js +134 -20
- package/core/dist/runtime-v2/store/run/sqlite-run-store.js.map +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.d.ts +2 -0
- package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.js +160 -0
- package/core/dist/runtime-v2/store/runtime-state-manager-malformed-run-tolerance.test.js.map +1 -0
- package/core/dist/runtime-v2/store/runtime-state-manager.d.ts +25 -3
- package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.js +55 -7
- package/core/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
- package/core/dist/runtime-v2/store/schema-conformance.test.js +0 -10
- package/core/dist/runtime-v2/store/schema-conformance.test.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js +2 -2
- package/core/dist/runtime-v2/store/sqlite-connection-pragma.test.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js +12 -0
- package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-run-store.test.js +172 -2
- package/core/dist/runtime-v2/store/sqlite-run-store.test.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-task-store.test.js +0 -2
- package/core/dist/runtime-v2/store/sqlite-task-store.test.js.map +1 -1
- package/core/dist/runtime-v2/store/trajectory/source-trace-locator.test.js +0 -1
- package/core/dist/runtime-v2/store/trajectory/source-trace-locator.test.js.map +1 -1
- package/core/dist/runtime-v2/store/trajectory/sqlite-trajectory-locator.test.js +1 -1
- package/core/dist/runtime-v2/store/trajectory/sqlite-trajectory-locator.test.js.map +1 -1
- package/core/dist/runtime-v2/store/workspace-isolation.test.js +0 -2
- package/core/dist/runtime-v2/store/workspace-isolation.test.js.map +1 -1
- package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.d.ts +2 -0
- package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.js +171 -0
- package/core/dist/runtime-v2/tools/__tests__/agent-tool-contract.test.js.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.d.ts +2 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js +322 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-l2-tool-contract.test.js.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.d.ts +2 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.js +149 -0
- package/core/dist/runtime-v2/tools/__tests__/artificer-output-typebox.test.js.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.d.ts +2 -0
- package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.js +109 -0
- package/core/dist/runtime-v2/tools/__tests__/dreamer-output-typebox.test.js.map +1 -0
- package/core/dist/runtime-v2/tools/agent-tool-contract.d.ts +76 -0
- package/core/dist/runtime-v2/tools/agent-tool-contract.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/agent-tool-contract.js +136 -0
- package/core/dist/runtime-v2/tools/agent-tool-contract.js.map +1 -0
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts +72 -0
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js +275 -0
- package/core/dist/runtime-v2/tools/artificer-l2-tool-contract.js.map +1 -0
- package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts +78 -0
- package/core/dist/runtime-v2/tools/artificer-output-typebox.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/artificer-output-typebox.js +70 -0
- package/core/dist/runtime-v2/tools/artificer-output-typebox.js.map +1 -0
- package/core/dist/runtime-v2/tools/dreamer-output-typebox.d.ts +63 -0
- package/core/dist/runtime-v2/tools/dreamer-output-typebox.d.ts.map +1 -0
- package/core/dist/runtime-v2/tools/dreamer-output-typebox.js +55 -0
- package/core/dist/runtime-v2/tools/dreamer-output-typebox.js.map +1 -0
- package/core/dist/runtime-v2/types/event-types.d.ts +32 -3
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +8 -0
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +213 -0
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -0
- package/core/dist/runtime-v2/types/evidence-chain-contract.js +1064 -0
- package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -0
- package/core/dist/runtime-v2/types/index.d.ts +4 -2
- package/core/dist/runtime-v2/types/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/index.js +2 -1
- package/core/dist/runtime-v2/types/index.js.map +1 -1
- package/core/dist/runtime-v2/types/principle-enums.d.ts +2 -2
- package/core/dist/runtime-v2/types/principle-enums.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/principle-enums.js +1 -0
- package/core/dist/runtime-v2/types/principle-enums.js.map +1 -1
- package/core/dist/runtime-v2/types/principle-schema.d.ts +1 -1
- package/core/dist/runtime-v2/types/principle-tree-store.d.ts +1 -1
- package/core/dist/runtime-v2/utils/cli-process-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/utils/cli-process-runner.js +5 -2
- package/core/dist/runtime-v2/utils/cli-process-runner.js.map +1 -1
- package/core/dist/runtime-v2/utils/cli-process-runner.test.js +7 -5
- package/core/dist/runtime-v2/utils/cli-process-runner.test.js.map +1 -1
- package/core/dist/telemetry-event.d.ts +3 -3
- package/core/dist/telemetry-event.d.ts.map +1 -1
- package/core/dist/telemetry-event.js +34 -1
- package/core/dist/telemetry-event.js.map +1 -1
- package/core/dist/trajectory-store.js +0 -2
- package/core/dist/trajectory-store.js.map +1 -1
- package/core/package.json +10 -1
- package/dist/installer.d.ts +11 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +47 -2
- package/dist/installer.js.map +1 -1
- package/dist/mvp-config.d.ts.map +1 -1
- package/dist/mvp-config.js +2 -0
- package/dist/mvp-config.js.map +1 -1
- package/package.json +3 -2
- package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.d.ts +18 -0
- package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.js +459 -0
- package/pd-cli/dist/commands/__tests__/legacy-cleanup.test.js.map +1 -0
- package/pd-cli/dist/commands/__tests__/mvp-smoke.test.d.ts +15 -0
- package/pd-cli/dist/commands/__tests__/mvp-smoke.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/mvp-smoke.test.js +262 -0
- package/pd-cli/dist/commands/__tests__/mvp-smoke.test.js.map +1 -0
- package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts +21 -0
- package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.js +179 -0
- package/pd-cli/dist/commands/__tests__/rulecode-flag-wiring.test.js.map +1 -0
- package/pd-cli/dist/commands/__tests__/rulecode-handler.test.d.ts +16 -0
- package/pd-cli/dist/commands/__tests__/rulecode-handler.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/rulecode-handler.test.js +285 -0
- package/pd-cli/dist/commands/__tests__/rulecode-handler.test.js.map +1 -0
- package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts +24 -0
- package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.js +223 -0
- package/pd-cli/dist/commands/__tests__/run-rulehost-flag-wiring.test.js.map +1 -0
- package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.d.ts +20 -0
- package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.d.ts.map +1 -0
- package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js +388 -0
- package/pd-cli/dist/commands/__tests__/runtime-probe-config.test.js.map +1 -0
- package/pd-cli/dist/commands/build-trajectory-evidence.d.ts +21 -0
- package/pd-cli/dist/commands/build-trajectory-evidence.d.ts.map +1 -0
- package/pd-cli/dist/commands/build-trajectory-evidence.js +161 -0
- package/pd-cli/dist/commands/build-trajectory-evidence.js.map +1 -0
- package/pd-cli/dist/commands/candidate.d.ts +24 -0
- package/pd-cli/dist/commands/candidate.d.ts.map +1 -1
- package/pd-cli/dist/commands/candidate.js +147 -75
- package/pd-cli/dist/commands/candidate.js.map +1 -1
- package/pd-cli/dist/commands/command-helpers.d.ts +19 -0
- package/pd-cli/dist/commands/command-helpers.d.ts.map +1 -0
- package/pd-cli/dist/commands/command-helpers.js +22 -0
- package/pd-cli/dist/commands/command-helpers.js.map +1 -0
- package/pd-cli/dist/commands/config-doctor.d.ts.map +1 -1
- package/pd-cli/dist/commands/config-doctor.js +4 -0
- package/pd-cli/dist/commands/config-doctor.js.map +1 -1
- package/pd-cli/dist/commands/diagnose.d.ts +1 -0
- package/pd-cli/dist/commands/diagnose.d.ts.map +1 -1
- package/pd-cli/dist/commands/diagnose.js +252 -149
- package/pd-cli/dist/commands/diagnose.js.map +1 -1
- package/pd-cli/dist/commands/evolution-tasks-show.js +0 -1
- package/pd-cli/dist/commands/evolution-tasks-show.js.map +1 -1
- package/pd-cli/dist/commands/legacy-cleanup.d.ts +72 -6
- package/pd-cli/dist/commands/legacy-cleanup.d.ts.map +1 -1
- package/pd-cli/dist/commands/legacy-cleanup.js +243 -23
- package/pd-cli/dist/commands/legacy-cleanup.js.map +1 -1
- package/pd-cli/dist/commands/mvp-smoke.d.ts +30 -0
- package/pd-cli/dist/commands/mvp-smoke.d.ts.map +1 -0
- package/pd-cli/dist/commands/mvp-smoke.js +139 -0
- package/pd-cli/dist/commands/mvp-smoke.js.map +1 -0
- package/pd-cli/dist/commands/pain-record.d.ts +2 -0
- package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-record.js +45 -7
- package/pd-cli/dist/commands/pain-record.js.map +1 -1
- package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-retry.js +46 -43
- package/pd-cli/dist/commands/pain-retry.js.map +1 -1
- package/pd-cli/dist/commands/quality-scorecard.d.ts +9 -0
- package/pd-cli/dist/commands/quality-scorecard.d.ts.map +1 -0
- package/pd-cli/dist/commands/quality-scorecard.js +241 -0
- package/pd-cli/dist/commands/quality-scorecard.js.map +1 -0
- package/pd-cli/dist/commands/rulecode.d.ts +85 -0
- package/pd-cli/dist/commands/rulecode.d.ts.map +1 -0
- package/pd-cli/dist/commands/rulecode.js +356 -0
- package/pd-cli/dist/commands/rulecode.js.map +1 -0
- package/pd-cli/dist/commands/runtime-activation.d.ts +37 -0
- package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-activation.js +416 -2
- package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
- package/pd-cli/dist/commands/runtime-features.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-features.js +2 -7
- package/pd-cli/dist/commands/runtime-features.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity-repair.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity-repair.js +25 -15
- package/pd-cli/dist/commands/runtime-internalization-integrity-repair.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity.js +42 -1
- package/pd-cli/dist/commands/runtime-internalization-integrity.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-queue.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-queue.js +35 -3
- 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 +316 -320
- package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts +23 -0
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.d.ts.map +1 -0
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js +361 -0
- package/pd-cli/dist/commands/runtime-internalization-run-rulehost.js.map +1 -0
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts +10 -0
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.d.ts.map +1 -0
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js +164 -0
- package/pd-cli/dist/commands/runtime-recovery-failed-tasks.js.map +1 -0
- package/pd-cli/dist/commands/runtime-recovery.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-recovery.js +9 -8
- package/pd-cli/dist/commands/runtime-recovery.js.map +1 -1
- package/pd-cli/dist/commands/runtime.d.ts +7 -1
- package/pd-cli/dist/commands/runtime.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime.js +223 -30
- package/pd-cli/dist/commands/runtime.js.map +1 -1
- package/pd-cli/dist/commands/samples-list.js +0 -1
- package/pd-cli/dist/commands/samples-list.js.map +1 -1
- package/pd-cli/dist/commands/task.d.ts +11 -0
- package/pd-cli/dist/commands/task.d.ts.map +1 -1
- package/pd-cli/dist/commands/task.js +148 -6
- package/pd-cli/dist/commands/task.js.map +1 -1
- package/pd-cli/dist/index.d.ts +1 -1
- package/pd-cli/dist/index.js +155 -70
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/dist/legacy/session-history-import.js +0 -19
- package/pd-cli/dist/legacy/session-history-import.js.map +1 -1
- package/pd-cli/dist/services/__tests__/cli-output.test.d.ts +18 -0
- package/pd-cli/dist/services/__tests__/cli-output.test.d.ts.map +1 -0
- package/pd-cli/dist/services/__tests__/cli-output.test.js +103 -0
- package/pd-cli/dist/services/__tests__/cli-output.test.js.map +1 -0
- package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.d.ts +18 -0
- package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.d.ts.map +1 -0
- package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js +651 -0
- package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js.map +1 -0
- package/pd-cli/dist/services/cli-output.d.ts +61 -0
- package/pd-cli/dist/services/cli-output.d.ts.map +1 -0
- package/pd-cli/dist/services/cli-output.js +72 -0
- package/pd-cli/dist/services/cli-output.js.map +1 -0
- package/pd-cli/dist/services/config-doctor.d.ts +2 -0
- package/pd-cli/dist/services/config-doctor.d.ts.map +1 -1
- package/pd-cli/dist/services/config-doctor.js +11 -8
- package/pd-cli/dist/services/config-doctor.js.map +1 -1
- package/pd-cli/dist/services/console-launcher.js +1 -1
- package/pd-cli/dist/services/console-launcher.js.map +1 -1
- package/pd-cli/dist/services/demo-rule-compiler.d.ts +24 -0
- package/pd-cli/dist/services/demo-rule-compiler.d.ts.map +1 -0
- package/pd-cli/dist/services/demo-rule-compiler.js +58 -0
- package/pd-cli/dist/services/demo-rule-compiler.js.map +1 -0
- package/pd-cli/dist/services/feature-flag-loader.js +0 -1
- package/pd-cli/dist/services/feature-flag-loader.js.map +1 -1
- package/pd-cli/dist/services/mainline-snapshot-assembler.d.ts +35 -0
- package/pd-cli/dist/services/mainline-snapshot-assembler.d.ts.map +1 -0
- package/pd-cli/dist/services/mainline-snapshot-assembler.js +428 -0
- package/pd-cli/dist/services/mainline-snapshot-assembler.js.map +1 -0
- package/pd-cli/dist/services/pain-flood-simulation-runner.d.ts.map +1 -1
- package/pd-cli/dist/services/pain-flood-simulation-runner.js +95 -10
- package/pd-cli/dist/services/pain-flood-simulation-runner.js.map +1 -1
- package/pd-cli/dist/services/pd-config-loader.d.ts +4 -0
- package/pd-cli/dist/services/pd-config-loader.d.ts.map +1 -1
- package/pd-cli/dist/services/pd-config-loader.js +12 -0
- package/pd-cli/dist/services/pd-config-loader.js.map +1 -1
- package/pd-cli/dist/services/quality-scorecard/data-extractor.d.ts +28 -0
- package/pd-cli/dist/services/quality-scorecard/data-extractor.d.ts.map +1 -0
- package/pd-cli/dist/services/quality-scorecard/data-extractor.js +118 -0
- package/pd-cli/dist/services/quality-scorecard/data-extractor.js.map +1 -0
- package/pd-cli/dist/services/quality-scorecard/local-evaluator.d.ts +18 -0
- package/pd-cli/dist/services/quality-scorecard/local-evaluator.d.ts.map +1 -0
- package/pd-cli/dist/services/quality-scorecard/local-evaluator.js +112 -0
- package/pd-cli/dist/services/quality-scorecard/local-evaluator.js.map +1 -0
- package/pd-cli/dist/services/quality-scorecard/strong-model-gate.d.ts +14 -0
- package/pd-cli/dist/services/quality-scorecard/strong-model-gate.d.ts.map +1 -0
- package/pd-cli/dist/services/quality-scorecard/strong-model-gate.js +128 -0
- package/pd-cli/dist/services/quality-scorecard/strong-model-gate.js.map +1 -0
- package/pd-cli/dist/services/resolve-runtime-from-pd-config.d.ts +70 -0
- package/pd-cli/dist/services/resolve-runtime-from-pd-config.d.ts.map +1 -0
- package/pd-cli/dist/services/resolve-runtime-from-pd-config.js +138 -0
- package/pd-cli/dist/services/resolve-runtime-from-pd-config.js.map +1 -0
- package/pd-cli/dist/services/rulehost-pipeline-runner.d.ts +132 -0
- package/pd-cli/dist/services/rulehost-pipeline-runner.d.ts.map +1 -0
- package/pd-cli/dist/services/rulehost-pipeline-runner.js +392 -0
- package/pd-cli/dist/services/rulehost-pipeline-runner.js.map +1 -0
- package/pd-cli/dist/services/runtime-adapter-resolver.d.ts +105 -0
- package/pd-cli/dist/services/runtime-adapter-resolver.d.ts.map +1 -0
- package/pd-cli/dist/services/runtime-adapter-resolver.js +188 -0
- package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -0
- package/pd-cli/dist/services/synthetic-baseline-runner.d.ts.map +1 -1
- package/pd-cli/dist/services/synthetic-baseline-runner.js +97 -6
- package/pd-cli/dist/services/synthetic-baseline-runner.js.map +1 -1
- package/pd-cli/dist/utils/production-workspace-guard.d.ts +0 -7
- package/pd-cli/dist/utils/production-workspace-guard.d.ts.map +1 -1
- package/pd-cli/dist/utils/production-workspace-guard.js +0 -11
- package/pd-cli/dist/utils/production-workspace-guard.js.map +1 -1
- package/pd-cli/dist/utils/production-workspace-guard.test.js +9 -2
- package/pd-cli/dist/utils/production-workspace-guard.test.js.map +1 -1
- package/pd-cli/package.json +3 -2
- package/plugin/dist/config/defaults/runtime.d.ts +0 -6
- package/plugin/dist/config/defaults/runtime.js +0 -7
- package/plugin/dist/core/code-implementation-storage.d.ts +0 -9
- package/plugin/dist/core/code-implementation-storage.js +0 -34
- package/plugin/dist/core/config-health.d.ts +27 -0
- package/plugin/dist/core/config-health.js +60 -0
- package/plugin/dist/core/event-log.d.ts +10 -1
- package/plugin/dist/core/event-log.js +11 -0
- package/plugin/dist/core/init.d.ts +1 -1
- package/plugin/dist/core/init.js +10 -14
- package/plugin/dist/core/paths.d.ts +0 -6
- package/plugin/dist/core/paths.js +0 -6
- package/plugin/dist/core/principle-compiler/code-validator.js +4 -1
- package/plugin/dist/core/principle-tree-ledger.d.ts +0 -4
- package/plugin/dist/core/principle-tree-ledger.js +0 -7
- package/plugin/dist/core/rule-host.d.ts +45 -15
- package/plugin/dist/core/rule-host.js +240 -81
- package/plugin/dist/core/rule-implementation-runtime.d.ts +13 -0
- package/plugin/dist/core/rule-implementation-runtime.js +91 -3
- package/plugin/dist/core/runtime-v2-prompt-activation-reader.js +2 -2
- package/plugin/dist/core/thinking-models.d.ts +3 -2
- package/plugin/dist/core/thinking-models.js +9 -29
- package/plugin/dist/core/trajectory-types.d.ts +4 -0
- package/plugin/dist/core/trajectory.js +55 -5
- package/plugin/dist/core/workspace-dir-validation.d.ts +2 -2
- package/plugin/dist/core/workspace-dir-validation.js +2 -2
- package/plugin/dist/hooks/after-tool-call-helpers.d.ts +8 -9
- package/plugin/dist/hooks/after-tool-call-helpers.js +89 -100
- package/plugin/dist/hooks/after-tool-call-types.d.ts +2 -8
- package/plugin/dist/hooks/gate.js +1 -1
- package/plugin/dist/hooks/llm.js +11 -2
- package/plugin/dist/hooks/pain.d.ts +0 -1
- package/plugin/dist/hooks/pain.js +3 -2
- package/plugin/dist/hooks/raw-observation-adapter.d.ts +57 -0
- package/plugin/dist/hooks/raw-observation-adapter.js +170 -0
- package/plugin/dist/hooks/raw-observation-types.d.ts +62 -0
- package/plugin/dist/hooks/raw-observation-types.js +15 -0
- package/plugin/dist/hooks/trajectory-collector.d.ts +17 -28
- package/plugin/dist/hooks/trajectory-collector.js +71 -104
- package/plugin/dist/hooks/trajectory-evidence.js +23 -0
- package/plugin/dist/hooks/triage-adapter.d.ts +7 -31
- package/plugin/dist/hooks/triage-adapter.js +32 -61
- package/plugin/dist/hooks/trigger-cooldown-tracker.d.ts +30 -0
- package/plugin/dist/hooks/trigger-cooldown-tracker.js +55 -0
- package/plugin/dist/index.d.ts +11 -0
- package/plugin/dist/index.js +73 -27
- package/plugin/dist/openclaw-sdk.d.ts +1 -0
- package/plugin/dist/service/evolution-worker.d.ts +1 -1
- package/plugin/dist/service/internalization-auto-consumer-service.d.ts +8 -0
- package/plugin/dist/service/internalization-auto-consumer-service.js +322 -0
- package/plugin/dist/types/event-types.d.ts +1 -1
- package/plugin/dist/utils/io.js +24 -3
- package/plugin/package.json +4 -3
- package/plugin/scripts/sync-plugin.mjs +43 -0
- package/plugin/templates/langs/en/principles/THINKING_OS.md +12 -0
- package/plugin/templates/langs/en/skills/pd-runtime-v2/SKILL.md +1 -1
- package/plugin/templates/langs/zh/principles/THINKING_OS.md +12 -0
- package/plugin/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +1 -1
- package/templates/langs/en/principles/THINKING_OS.md +12 -0
- package/templates/langs/zh/principles/THINKING_OS.md +12 -0
- package/console/dist/server/routes/state.d.ts +0 -11
- package/console/dist/server/routes/state.js +0 -97
- package/console/dist/ui/components/UpdateBanner.d.ts +0 -1
- package/console/dist/ui/components/UpdateBanner.js +0 -41
- package/console/dist/ui/components/UpdateProgressDialog.d.ts +0 -12
- package/console/dist/ui/components/UpdateProgressDialog.js +0 -28
- package/console/dist/ui/components/approval-card.d.ts +0 -8
- package/console/dist/ui/components/approval-card.js +0 -39
- package/console/dist/ui/components/approval-detail-dialog.d.ts +0 -9
- package/console/dist/ui/components/approval-detail-dialog.js +0 -20
- package/console/dist/ui/components/rejection-reason-dialog.d.ts +0 -6
- package/console/dist/ui/components/rejection-reason-dialog.js +0 -23
- package/core/dist/evolution-hook.d.ts +0 -70
- package/core/dist/evolution-hook.d.ts.map +0 -1
- package/core/dist/evolution-hook.js +0 -10
- package/core/dist/evolution-hook.js.map +0 -1
- package/core/dist/pain-flag-resolver.d.ts +0 -18
- package/core/dist/pain-flag-resolver.d.ts.map +0 -1
- package/core/dist/pain-flag-resolver.js +0 -21
- package/core/dist/pain-flag-resolver.js.map +0 -1
- package/core/dist/pain-recorder.d.ts +0 -38
- package/core/dist/pain-recorder.d.ts.map +0 -1
- package/core/dist/pain-recorder.js +0 -62
- package/core/dist/pain-recorder.js.map +0 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts +0 -2
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js +0 -170
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.integration.test.js.map +0 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts +0 -2
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js +0 -396
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-builder.test.js.map +0 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts +0 -13
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js +0 -97
- package/core/dist/runtime-v2/diagnostician/__tests__/diagnostician-prompt-language.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js +0 -378
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.integration.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js +0 -682
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-runner.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js +0 -286
- package/core/dist/runtime-v2/runner/__tests__/diagnostician-telemetry.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js +0 -320
- package/core/dist/runtime-v2/runner/__tests__/dual-track-e2e.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js +0 -261
- package/core/dist/runtime-v2/runner/__tests__/lease-expiration-recovery.integration.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js +0 -405
- package/core/dist/runtime-v2/runner/__tests__/m5-05-e2e.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js +0 -347
- package/core/dist/runtime-v2/runner/__tests__/m6-06-e2e.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js +0 -186
- package/core/dist/runtime-v2/runner/__tests__/m6-06-legacy.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js +0 -355
- package/core/dist/runtime-v2/runner/__tests__/m6-06-real-path.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js +0 -488
- package/core/dist/runtime-v2/runner/__tests__/m8-02-e2e.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js +0 -171
- package/core/dist/runtime-v2/runner/__tests__/m9-adapter-integration.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.js +0 -182
- package/core/dist/runtime-v2/runner/__tests__/m9-e2e.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js +0 -276
- package/core/dist/runtime-v2/runner/__tests__/max-attempts-exceeded.integration.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js +0 -272
- package/core/dist/runtime-v2/runner/__tests__/retry-wait-recovery.integration.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts +0 -2
- package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.js +0 -67
- package/core/dist/runtime-v2/runner/__tests__/start-run-input.test.js.map +0 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts +0 -47
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.js +0 -20
- package/core/dist/runtime-v2/runner/diagnostician-runner-options.js.map +0 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts +0 -87
- package/core/dist/runtime-v2/runner/diagnostician-runner.d.ts.map +0 -1
- package/core/dist/runtime-v2/runner/diagnostician-runner.js +0 -441
- package/core/dist/runtime-v2/runner/diagnostician-runner.js.map +0 -1
- package/core/dist/storage-adapter.d.ts +0 -59
- package/core/dist/storage-adapter.d.ts.map +0 -1
- package/core/dist/storage-adapter.js +0 -2
- package/core/dist/storage-adapter.js.map +0 -1
- package/core/dist/types/workspace-resolver.d.ts +0 -25
- package/core/dist/types/workspace-resolver.d.ts.map +0 -1
- package/core/dist/types/workspace-resolver.js +0 -10
- package/core/dist/types/workspace-resolver.js.map +0 -1
- package/core/dist/types.d.ts +0 -56
- package/core/dist/types.d.ts.map +0 -1
- package/core/dist/types.js +0 -16
- package/core/dist/types.js.map +0 -1
- package/pd-cli/dist/principle-tree-ledger-adapter.d.ts +0 -12
- package/pd-cli/dist/principle-tree-ledger-adapter.d.ts.map +0 -1
- package/pd-cli/dist/principle-tree-ledger-adapter.js +0 -12
- package/pd-cli/dist/principle-tree-ledger-adapter.js.map +0 -1
- package/plugin/dist/core/evolution-hook.d.ts +0 -54
- package/plugin/dist/core/evolution-hook.js +0 -9
- package/plugin/dist/core/file-storage-adapter.d.ts +0 -43
- package/plugin/dist/core/file-storage-adapter.js +0 -158
- package/plugin/dist/core/merge-gate-audit.d.ts +0 -21
- package/plugin/dist/core/merge-gate-audit.js +0 -241
- package/plugin/dist/core/pain-context-extractor.d.ts +0 -31
- package/plugin/dist/core/pain-context-extractor.js +0 -278
- package/plugin/dist/core/pain-lifecycle.d.ts +0 -15
- package/plugin/dist/core/pain-lifecycle.js +0 -37
- package/plugin/dist/core/pain-signal-adapter.d.ts +0 -37
- package/plugin/dist/core/pain-signal-adapter.js +0 -1
- package/plugin/dist/core/pain-signal.d.ts +0 -6
- package/plugin/dist/core/pain-signal.js +0 -3
- package/plugin/dist/core/principle-injector.d.ts +0 -55
- package/plugin/dist/core/principle-injector.js +0 -17
- package/plugin/dist/core/principle-tree-migration.d.ts +0 -35
- package/plugin/dist/core/principle-tree-migration.js +0 -137
- package/plugin/dist/core/storage-adapter.d.ts +0 -58
- package/plugin/dist/core/storage-adapter.js +0 -1
- package/plugin/dist/core/telemetry-event.d.ts +0 -66
- package/plugin/dist/core/telemetry-event.js +0 -86
- package/plugin/dist/core/training-program.d.ts +0 -233
- package/plugin/dist/core/training-program.js +0 -435
- package/plugin/dist/core/workspace-dir-service.d.ts +0 -33
- package/plugin/dist/core/workspace-dir-service.js +0 -71
- package/plugin/dist/hooks/lifecycle-routing.d.ts +0 -24
- package/plugin/dist/hooks/lifecycle-routing.js +0 -110
- package/plugin/dist/service/event-log-auditor.d.ts +0 -46
- package/plugin/dist/service/event-log-auditor.js +0 -236
- package/plugin/dist/service/evolution-queue-lock.d.ts +0 -18
- package/plugin/dist/service/evolution-queue-lock.js +0 -36
- package/plugin/dist/service/failure-classifier.d.ts +0 -46
- package/plugin/dist/service/failure-classifier.js +0 -57
- package/plugin/dist/service/internalization-trigger-adapter.d.ts +0 -51
- package/plugin/dist/service/internalization-trigger-adapter.js +0 -184
- package/plugin/dist/service/monitoring-query-service.d.ts +0 -21
- package/plugin/dist/service/monitoring-query-service.js +0 -45
- package/plugin/dist/service/subagent-workflow/index.d.ts +0 -3
- package/plugin/dist/service/subagent-workflow/index.js +0 -2
- package/plugin/dist/tools/critique-prompt.d.ts +0 -1
- package/plugin/dist/tools/critique-prompt.js +0 -1
- package/plugin/dist/tools/deep-reflect.d.ts +0 -1
- package/plugin/dist/tools/deep-reflect.js +0 -1
- package/plugin/dist/tools/model-index.d.ts +0 -1
- package/plugin/dist/tools/model-index.js +0 -1
- package/plugin/dist/types/event-payload.d.ts +0 -2
- package/plugin/dist/types/event-payload.js +0 -1
- package/plugin/dist/utils/glob-match.d.ts +0 -28
- package/plugin/dist/utils/glob-match.js +0 -49
- package/plugin/dist/utils/nlp.d.ts +0 -4
- package/plugin/dist/utils/nlp.js +0 -21
- package/plugin/dist/utils/plugin-logger.d.ts +0 -39
- package/plugin/dist/utils/plugin-logger.js +0 -70
- package/plugin/dist/utils/subagent-probe.d.ts +0 -35
- package/plugin/dist/utils/subagent-probe.js +0 -67
|
@@ -0,0 +1,1064 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvidenceChainContract — shared core contracts and assembly mapper for
|
|
3
|
+
* the Pain Evidence Chain (PRI-385).
|
|
4
|
+
*
|
|
5
|
+
* This file is purely logical (no fs, db, or network dependencies) and
|
|
6
|
+
* lives inside principles-core to be shared by Console read models,
|
|
7
|
+
* CLI commands, and test fixtures.
|
|
8
|
+
*/
|
|
9
|
+
import { Type } from '@sinclair/typebox';
|
|
10
|
+
export const EvidenceChainStateSchema = Type.Union([
|
|
11
|
+
Type.Literal('recorded-only'),
|
|
12
|
+
Type.Literal('evidence-only'),
|
|
13
|
+
Type.Literal('diagnosis-queued'),
|
|
14
|
+
Type.Literal('diagnosis-running'),
|
|
15
|
+
Type.Literal('diagnosis-succeeded'),
|
|
16
|
+
Type.Literal('diagnosis-failed'),
|
|
17
|
+
Type.Literal('diagnosis-retry-wait'),
|
|
18
|
+
Type.Literal('candidate-generated'),
|
|
19
|
+
Type.Literal('internalization-missing'),
|
|
20
|
+
Type.Literal('internalization-pending'),
|
|
21
|
+
Type.Literal('internalization-running'),
|
|
22
|
+
Type.Literal('internalization-failed'),
|
|
23
|
+
Type.Literal('internalization-succeeded'),
|
|
24
|
+
Type.Literal('owner-reviewable'),
|
|
25
|
+
Type.Literal('malformed'),
|
|
26
|
+
Type.Literal('degraded'),
|
|
27
|
+
]);
|
|
28
|
+
export const EvidenceChainRecordSchema = Type.Object({
|
|
29
|
+
id: Type.String(),
|
|
30
|
+
sourceKind: Type.String(),
|
|
31
|
+
observedAt: Type.String(),
|
|
32
|
+
state: EvidenceChainStateSchema,
|
|
33
|
+
summary: Type.String(),
|
|
34
|
+
admissionDecision: Type.Optional(Type.String()),
|
|
35
|
+
linkedPainId: Type.Optional(Type.String()),
|
|
36
|
+
linkedTaskId: Type.Optional(Type.String()),
|
|
37
|
+
linkedTaskStatus: Type.Optional(Type.String()),
|
|
38
|
+
linkedCandidateId: Type.Optional(Type.String()),
|
|
39
|
+
linkedPrincipleId: Type.Optional(Type.String()),
|
|
40
|
+
failureReason: Type.Optional(Type.String()),
|
|
41
|
+
degradedReason: Type.Optional(Type.String()),
|
|
42
|
+
nextAction: Type.Optional(Type.String()),
|
|
43
|
+
candidateTitle: Type.Optional(Type.String()),
|
|
44
|
+
candidateSummary: Type.Optional(Type.String()),
|
|
45
|
+
rootCauseSummary: Type.Optional(Type.String()),
|
|
46
|
+
confidence: Type.Optional(Type.Number()),
|
|
47
|
+
recommendationKind: Type.Optional(Type.String()),
|
|
48
|
+
internalizationTaskId: Type.Optional(Type.String()),
|
|
49
|
+
dreamerTaskStatus: Type.Optional(Type.String()),
|
|
50
|
+
canonicalPainId: Type.Optional(Type.String()),
|
|
51
|
+
runtimeTaskId: Type.Optional(Type.String()),
|
|
52
|
+
linkMode: Type.Optional(Type.Union([Type.Literal('canonical'), Type.Literal('legacy')])),
|
|
53
|
+
});
|
|
54
|
+
export const EvidenceChainResponseSchema = Type.Object({
|
|
55
|
+
records: Type.Array(EvidenceChainRecordSchema),
|
|
56
|
+
generatedAt: Type.String(),
|
|
57
|
+
degradedReason: Type.Optional(Type.String()),
|
|
58
|
+
nextAction: Type.Optional(Type.String()),
|
|
59
|
+
note: Type.Optional(Type.String()),
|
|
60
|
+
});
|
|
61
|
+
// ── Internal Helpers & Type Guards ───────────────────────────────────────────
|
|
62
|
+
function isRecord(value) {
|
|
63
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
64
|
+
}
|
|
65
|
+
function isString(value) {
|
|
66
|
+
return typeof value === 'string';
|
|
67
|
+
}
|
|
68
|
+
function getOwnValue(record, key) {
|
|
69
|
+
return Object.hasOwn(record, key) ? record[key] : undefined;
|
|
70
|
+
}
|
|
71
|
+
function readOwnString(record, key) {
|
|
72
|
+
const value = getOwnValue(record, key);
|
|
73
|
+
return isString(value) ? value : undefined;
|
|
74
|
+
}
|
|
75
|
+
function _readOwnStringArray(record, key) {
|
|
76
|
+
const value = getOwnValue(record, key);
|
|
77
|
+
if (!Array.isArray(value))
|
|
78
|
+
return [];
|
|
79
|
+
return value.filter(isString);
|
|
80
|
+
}
|
|
81
|
+
function coerceToString(value) {
|
|
82
|
+
if (typeof value === 'string')
|
|
83
|
+
return value;
|
|
84
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
85
|
+
return String(value);
|
|
86
|
+
return '';
|
|
87
|
+
}
|
|
88
|
+
// ── Mapping & State Resolution ────────────────────────────────────────────────
|
|
89
|
+
export function mapSourceKind(source) {
|
|
90
|
+
switch (source) {
|
|
91
|
+
case 'manual':
|
|
92
|
+
case 'owner_explicit_cli':
|
|
93
|
+
case 'owner_explicit_chat':
|
|
94
|
+
return 'manual';
|
|
95
|
+
case 'tool_call':
|
|
96
|
+
case 'hook':
|
|
97
|
+
return 'tool_call';
|
|
98
|
+
case 'rulehost':
|
|
99
|
+
case 'gate':
|
|
100
|
+
return 'rulehost';
|
|
101
|
+
case 'empathy':
|
|
102
|
+
case 'empathy_inferred':
|
|
103
|
+
return 'empathy_inferred';
|
|
104
|
+
case 'review':
|
|
105
|
+
case 'review_finding':
|
|
106
|
+
return 'review';
|
|
107
|
+
default:
|
|
108
|
+
return source || 'unknown';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export function inferAdmissionDecision(sourceKind) {
|
|
112
|
+
switch (sourceKind) {
|
|
113
|
+
case 'manual':
|
|
114
|
+
case 'review':
|
|
115
|
+
return 'store_signal';
|
|
116
|
+
case 'empathy_inferred':
|
|
117
|
+
return 'owner_confirmation_required';
|
|
118
|
+
default:
|
|
119
|
+
return 'evidence_only';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export function determineState(params) {
|
|
123
|
+
const { sourceKind, taskStatus, hasCandidate, dreamerStatus, ledgerPrincipleStatus } = params;
|
|
124
|
+
if (ledgerPrincipleStatus === 'active' || ledgerPrincipleStatus === 'probation') {
|
|
125
|
+
return 'internalization-succeeded';
|
|
126
|
+
}
|
|
127
|
+
if (ledgerPrincipleStatus === 'candidate') {
|
|
128
|
+
return 'owner-reviewable';
|
|
129
|
+
}
|
|
130
|
+
if (hasCandidate) {
|
|
131
|
+
if (!dreamerStatus) {
|
|
132
|
+
return 'internalization-missing';
|
|
133
|
+
}
|
|
134
|
+
switch (dreamerStatus) {
|
|
135
|
+
case 'pending':
|
|
136
|
+
case 'queued':
|
|
137
|
+
return 'internalization-pending';
|
|
138
|
+
case 'running':
|
|
139
|
+
return 'internalization-running';
|
|
140
|
+
case 'failed':
|
|
141
|
+
return 'internalization-failed';
|
|
142
|
+
case 'succeeded':
|
|
143
|
+
return 'internalization-succeeded';
|
|
144
|
+
default:
|
|
145
|
+
return 'candidate-generated';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (taskStatus) {
|
|
149
|
+
switch (taskStatus) {
|
|
150
|
+
case 'pending':
|
|
151
|
+
case 'queued':
|
|
152
|
+
return 'diagnosis-queued';
|
|
153
|
+
case 'running':
|
|
154
|
+
return 'diagnosis-running';
|
|
155
|
+
case 'succeeded':
|
|
156
|
+
return 'diagnosis-succeeded';
|
|
157
|
+
case 'failed':
|
|
158
|
+
case 'needs_human_review':
|
|
159
|
+
return 'diagnosis-failed';
|
|
160
|
+
case 'retry_wait':
|
|
161
|
+
return 'diagnosis-retry-wait';
|
|
162
|
+
default:
|
|
163
|
+
return 'diagnosis-queued';
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const admission = inferAdmissionDecision(sourceKind);
|
|
167
|
+
if (admission === 'evidence_only') {
|
|
168
|
+
// Observed evidence that has NOT entered the governance chain (tool_call / hook /
|
|
169
|
+
// rulehost observations). Kept distinct from `recorded-only` so owners do not
|
|
170
|
+
// mistake passive observations for active governance. (PRI-385 P1-2)
|
|
171
|
+
return 'evidence-only';
|
|
172
|
+
}
|
|
173
|
+
// store_signal (manual/review) and owner_confirmation_required (empathy_inferred)
|
|
174
|
+
// are owner-admitted signals awaiting the pipeline → active chain.
|
|
175
|
+
return 'recorded-only';
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Derive the raw painId accepted by `pd pain retry --pain-id` from a diagnostician
|
|
179
|
+
* task_id. Convention (PainToPrincipleService): `task_id = diagnosis_${painId}`, so the
|
|
180
|
+
* painId is `task_id` with a single leading `diagnosis_` stripped — and it must round-trip
|
|
181
|
+
* (`diagnosis_` + painId === original linkedTaskId).
|
|
182
|
+
*
|
|
183
|
+
* Only the canonical `diagnosis_<painId>` form is safe: sub-run ids like
|
|
184
|
+
* `diag_router-diagnosis_*` do NOT start with `diagnosis_`, so they fall through to the
|
|
185
|
+
* `pd diagnose run --task-id` fallback. The record display id (`pain_*` / `manual_*`) is
|
|
186
|
+
* intentionally NOT used here — it does not satisfy the `diagnosis_${painId}` convention.
|
|
187
|
+
* (ERR-008: lineage/painId must come from one consistent source = the real task_id.)
|
|
188
|
+
*/
|
|
189
|
+
function deriveRetryPainId(linkedTaskId) {
|
|
190
|
+
if (!linkedTaskId || !linkedTaskId.startsWith('diagnosis_'))
|
|
191
|
+
return undefined;
|
|
192
|
+
const painId = linkedTaskId.slice('diagnosis_'.length);
|
|
193
|
+
// Reject empty remainder or a remainder that still carries the prefix (ambiguous).
|
|
194
|
+
if (!painId || painId.startsWith('diagnosis_'))
|
|
195
|
+
return undefined;
|
|
196
|
+
return painId;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Build an executable recovery command for failed/retry-wait diagnosis.
|
|
200
|
+
*
|
|
201
|
+
* Priority (PRI-385 P1-1):
|
|
202
|
+
* 1. Safe raw painId → `pd pain retry --pain-id <painId> --workspace "<ws>" --runtime <kind>`
|
|
203
|
+
* 2. Any linkedTaskId → `pd diagnose run --task-id <linkedTaskId> --workspace "<ws>" --runtime <kind>`
|
|
204
|
+
* 3. Neither → returns undefined (caller emits a reason-style nextAction instead).
|
|
205
|
+
*
|
|
206
|
+
* `--workspace` is always explicit (per PRI-385 owner note: recovery commands must
|
|
207
|
+
* preserve workspace identity). `--runtime <kind>` is shown as a required placeholder
|
|
208
|
+
* because `pd pain retry` / `pd diagnose run` refuse without an explicit runtime.
|
|
209
|
+
*/
|
|
210
|
+
function buildRetryCommand(linkedTaskId, ws) {
|
|
211
|
+
const painId = deriveRetryPainId(linkedTaskId);
|
|
212
|
+
if (painId) {
|
|
213
|
+
return `pd pain retry --pain-id ${painId} --workspace "${ws}" --runtime <kind>`;
|
|
214
|
+
}
|
|
215
|
+
if (linkedTaskId) {
|
|
216
|
+
return `pd diagnose run --task-id ${linkedTaskId} --workspace "${ws}" --runtime <kind>`;
|
|
217
|
+
}
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
export function determineNextAction(ctx) {
|
|
221
|
+
const { state, workspaceDir: ws, linkedTaskId } = ctx;
|
|
222
|
+
switch (state) {
|
|
223
|
+
case 'diagnosis-retry-wait': {
|
|
224
|
+
const cmd = buildRetryCommand(linkedTaskId, ws);
|
|
225
|
+
return cmd
|
|
226
|
+
? `Diagnosis is waiting for automatic retry. Force retry: ${cmd}`
|
|
227
|
+
: 'Diagnosis is waiting for automatic retry, but no retryable task id is linked. Check Runtime V2 pipeline status.';
|
|
228
|
+
}
|
|
229
|
+
case 'diagnosis-failed': {
|
|
230
|
+
const cmd = buildRetryCommand(linkedTaskId, ws);
|
|
231
|
+
return cmd
|
|
232
|
+
? `Diagnosis failed. Retry: ${cmd}`
|
|
233
|
+
: 'Diagnosis failed, but no retryable task id is linked. Check the failure details and Runtime V2 pipeline status.';
|
|
234
|
+
}
|
|
235
|
+
case 'diagnosis-succeeded':
|
|
236
|
+
return 'Diagnosis completed. A principle candidate may be generated shortly.';
|
|
237
|
+
case 'candidate-generated':
|
|
238
|
+
case 'internalization-missing':
|
|
239
|
+
return `Candidate generated. Waiting for internalization pipeline. Run: pd runtime internalization run-once --workspace "${ws}"`;
|
|
240
|
+
case 'internalization-pending':
|
|
241
|
+
return 'Candidate generated. Internalization task is pending — wait for dreamer to complete.';
|
|
242
|
+
case 'internalization-running':
|
|
243
|
+
return 'Internalization in progress — dreamer task is running.';
|
|
244
|
+
case 'internalization-failed':
|
|
245
|
+
return `Internalization task failed. Check dreamer task error or run: pd runtime internalization run-once --workspace "${ws}" to retry.`;
|
|
246
|
+
case 'owner-reviewable':
|
|
247
|
+
return 'Principle candidate is ready for owner review.';
|
|
248
|
+
case 'internalization-succeeded':
|
|
249
|
+
return 'Internalization task completed. Check for owner-reviewable principle.';
|
|
250
|
+
default:
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
export function resolveSummary(fields) {
|
|
255
|
+
if (fields.candidateTitle)
|
|
256
|
+
return fields.candidateTitle;
|
|
257
|
+
if (fields.rootCauseSummary)
|
|
258
|
+
return fields.rootCauseSummary;
|
|
259
|
+
if (fields.painText)
|
|
260
|
+
return fields.painText;
|
|
261
|
+
if (fields.painReason)
|
|
262
|
+
return fields.painReason;
|
|
263
|
+
return fields.fallback;
|
|
264
|
+
}
|
|
265
|
+
export function normalizeDiagnosticianTaskId(taskId) {
|
|
266
|
+
if (!taskId) {
|
|
267
|
+
return {
|
|
268
|
+
success: false,
|
|
269
|
+
reason: 'Diagnostician task ID is empty or missing.',
|
|
270
|
+
nextAction: 'Verify that the principle candidates table contains valid task IDs.',
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
if (!taskId.includes('diagnosis_')) {
|
|
274
|
+
return { success: true, normalized: taskId };
|
|
275
|
+
}
|
|
276
|
+
if (taskId.startsWith('diagnosis_')) {
|
|
277
|
+
return { success: true, normalized: taskId };
|
|
278
|
+
}
|
|
279
|
+
const idx = taskId.indexOf('diagnosis_');
|
|
280
|
+
if (idx > 0 && taskId[idx - 1] === '-') {
|
|
281
|
+
const normalized = taskId.slice(idx);
|
|
282
|
+
return { success: true, normalized };
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
success: false,
|
|
286
|
+
reason: `Malformed diagnostician task ID: "${taskId}". Unable to normalize to canonical "diagnosis_*" format.`,
|
|
287
|
+
nextAction: 'Ensure task IDs follow the format "diagnosis_*" or "<stage>-diagnosis_*".',
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
export function crossReferenceByTimestamp(painEvents, taskMap, coveredPainIds) {
|
|
291
|
+
const CROSS_REF_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
|
|
292
|
+
const result = new Map();
|
|
293
|
+
const usedTaskIds = new Set();
|
|
294
|
+
const unmatchedEvents = painEvents.filter(e => !coveredPainIds.has(e.painId));
|
|
295
|
+
if (unmatchedEvents.length === 0)
|
|
296
|
+
return result;
|
|
297
|
+
const availableTasks = [];
|
|
298
|
+
for (const [key, entry] of taskMap.entries()) {
|
|
299
|
+
if (!coveredPainIds.has(key)) {
|
|
300
|
+
availableTasks.push([key, entry]);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
unmatchedEvents.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
304
|
+
for (const event of unmatchedEvents) {
|
|
305
|
+
const eventTime = new Date(event.createdAt).getTime();
|
|
306
|
+
if (Number.isNaN(eventTime))
|
|
307
|
+
continue;
|
|
308
|
+
let bestMatch = null;
|
|
309
|
+
let bestDelta = Infinity;
|
|
310
|
+
for (const [taskKey, taskEntry] of availableTasks) {
|
|
311
|
+
if (usedTaskIds.has(taskKey))
|
|
312
|
+
continue;
|
|
313
|
+
const taskTime = new Date(taskEntry.createdAt).getTime();
|
|
314
|
+
if (Number.isNaN(taskTime))
|
|
315
|
+
continue;
|
|
316
|
+
const delta = Math.abs(eventTime - taskTime);
|
|
317
|
+
if (delta <= CROSS_REF_WINDOW_MS && delta < bestDelta) {
|
|
318
|
+
bestDelta = delta;
|
|
319
|
+
bestMatch = [taskKey, taskEntry];
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (bestMatch) {
|
|
323
|
+
usedTaskIds.add(bestMatch[0]);
|
|
324
|
+
result.set(event.painId, bestMatch[1]);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return result;
|
|
328
|
+
}
|
|
329
|
+
// ── Deduplication Helper ───────────────────────────────────────────────────────
|
|
330
|
+
/**
|
|
331
|
+
* Normalize a summary string for dedupe matching.
|
|
332
|
+
*
|
|
333
|
+
* Pipeline (Unicode-aware, reviewer P1 round 3):
|
|
334
|
+
* 1. NFKC normalization — folds compatibility characters and fullwidth
|
|
335
|
+
* forms (e.g. "Agent" -> "Agent", "AGENT<U+3000>修改" -> "AGENT 修改")
|
|
336
|
+
* so visually identical text produced by different input methods
|
|
337
|
+
* collapses to the same canonical form.
|
|
338
|
+
* 2. Lowercase.
|
|
339
|
+
* 3. Strip every character that is NOT a Unicode letter (\p{L}), Unicode
|
|
340
|
+
* number (\p{N}), or whitespace. This is the critical fix: the previous
|
|
341
|
+
* pattern `[^\w\s]` only retained `[A-Za-z0-9_]`, which deleted CJK
|
|
342
|
+
* ideographs entirely — a Chinese pain summary like "Agent 未经批准修改了配置"
|
|
343
|
+
* was reduced to "agent", making every Chinese pain hash to the same key
|
|
344
|
+
* and silently breaking content-hash dedupe for non-ASCII owners.
|
|
345
|
+
* \p{L} keeps all letters across every script (Latin, CJK, Cyrillic,
|
|
346
|
+
* Arabic, ...); \p{N} keeps all digits; whitespace is preserved for the
|
|
347
|
+
* collapse step below.
|
|
348
|
+
* 4. Collapse runs of whitespace to a single space and trim.
|
|
349
|
+
*
|
|
350
|
+
* Examples:
|
|
351
|
+
* - "Agent modified config!" and "agent modified config" hash to the same key.
|
|
352
|
+
* - "Agent 未经批准修改了配置!" and "agent 未经批准修改了配置" hash to the same key.
|
|
353
|
+
* - "Agent<U+3000>修改" and "Agent 修改" hash to the same key (NFKC fold).
|
|
354
|
+
*
|
|
355
|
+
* Exported for direct unit testing of the normalization rules.
|
|
356
|
+
*/
|
|
357
|
+
export function normalizeSummaryForDedupe(summary) {
|
|
358
|
+
return summary
|
|
359
|
+
.normalize('NFKC')
|
|
360
|
+
.toLowerCase()
|
|
361
|
+
.replace(/[^\p{L}\p{N}\s]/gu, '')
|
|
362
|
+
.replace(/\s+/g, ' ')
|
|
363
|
+
.trim();
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Maximum allowed observedAt gap (in milliseconds) for content-hash dedupe
|
|
367
|
+
* under condition (b) below.
|
|
368
|
+
*
|
|
369
|
+
* Content alone is NOT strong enough: an owner may legitimately log the same
|
|
370
|
+
* pain ("Agent modified config without approval") today AND again tomorrow as
|
|
371
|
+
* two separate real recurrences. Suppressing the second occurrence would
|
|
372
|
+
* silently hide real recurrence signal from the owner, which is dangerous for
|
|
373
|
+
* pain/episode judgement.
|
|
374
|
+
*
|
|
375
|
+
* We therefore require content-hash match AND observedAt within this window.
|
|
376
|
+
* The 1s value matches the original (loose) timestamp-window behavior, but is
|
|
377
|
+
* now AND'd with content equality rather than acting alone — strict addition,
|
|
378
|
+
* never a replacement. Recurrence aggregation across wide time windows is
|
|
379
|
+
* intentionally NOT done here; it belongs to the (future) episode layer so
|
|
380
|
+
* the owner never loses raw recurrence signal at the evidence-chain stage.
|
|
381
|
+
*/
|
|
382
|
+
const CONTENT_DEDUPE_PROXIMITY_MS = 1000;
|
|
383
|
+
/**
|
|
384
|
+
* Dedupe evidence records so the same real pain signal is not shown twice.
|
|
385
|
+
*
|
|
386
|
+
* Background (PRI-388): a single CLI/manual pain may end up both as a row in
|
|
387
|
+
* trajectory.db.pain_events (shown as `pain_N`, often "recorded-only / unlinked")
|
|
388
|
+
* and as a Runtime V2 canonical pain record (e.g. `manual_*`, shown with full
|
|
389
|
+
* candidate/internalization state). Showing both cards misleads the owner into
|
|
390
|
+
* thinking the same signal is simultaneously "untouched" and "in flight".
|
|
391
|
+
*
|
|
392
|
+
* Lineage policy (reviewer P1): deduping CANNOT rely on timestamp alone OR on
|
|
393
|
+
* content alone — two DIFFERENT real pains can land within 1s (would be wrongly
|
|
394
|
+
* merged by time alone), AND the same pain text can legitimately recur at very
|
|
395
|
+
* different times (would be wrongly merged by content alone, hiding real
|
|
396
|
+
* recurrence signal). We therefore require STRONG lineage evidence before
|
|
397
|
+
* suppressing a trajectory row:
|
|
398
|
+
*
|
|
399
|
+
* (a) the canonical record's linkedTaskId round-trips to the trajectory pain
|
|
400
|
+
* id via the `diagnosis_<painId>` convention — a diagnosis task IS the
|
|
401
|
+
* canonical record for that specific trajectory row; OR
|
|
402
|
+
* (b) the canonical record and the trajectory record share the same
|
|
403
|
+
* sourceKind, their normalized summaries match exactly (a content hash,
|
|
404
|
+
* not a substring contains() — see G.2 / F.3 in shared-constraints),
|
|
405
|
+
* AND their observedAt timestamps fall within CONTENT_DEDUPE_PROXIMITY_MS
|
|
406
|
+
* of each other.
|
|
407
|
+
*
|
|
408
|
+
* Either condition is sufficient. Time alone is NEVER a dedupe signal.
|
|
409
|
+
* Content alone is NEVER a dedupe signal. The two are AND'd for condition (b)
|
|
410
|
+
* precisely so that real recurrences (same text, far-apart timestamps) survive.
|
|
411
|
+
*
|
|
412
|
+
* Ordering (reviewer P1-2): the input array is already sorted by observedAt
|
|
413
|
+
* descending. We MUST preserve that order, so we filter in place instead of
|
|
414
|
+
* rebuilding canonical-then-trajectory buckets (which would scramble the sort).
|
|
415
|
+
*
|
|
416
|
+
* Privacy: no raw prompt/chat/trajectory text is exposed beyond what each
|
|
417
|
+
* record already carries (G.2 / F.3 / F.5).
|
|
418
|
+
*/
|
|
419
|
+
function dedupeRecords(records) {
|
|
420
|
+
if (records.length === 0)
|
|
421
|
+
return records;
|
|
422
|
+
// 1. Collect canonical (Runtime V2) records — those that carry a linkedTaskId
|
|
423
|
+
// and therefore represent the authoritative chain state for their event.
|
|
424
|
+
const canonicalRecords = [];
|
|
425
|
+
for (const record of records) {
|
|
426
|
+
if (record.linkedTaskId) {
|
|
427
|
+
canonicalRecords.push(record);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
if (canonicalRecords.length === 0)
|
|
431
|
+
return records;
|
|
432
|
+
// 2. Build a lookup of trajectory pain ids that a canonical task explicitly
|
|
433
|
+
// references via the `diagnosis_<painId>` round-trip (condition a).
|
|
434
|
+
// Also build a (sourceKind, normalizedSummary) -> canonical observedAt ms
|
|
435
|
+
// multi-map for content-hash matching (condition b). We collect ALL
|
|
436
|
+
// observedAt timestamps per content key so the trajectory-side check can
|
|
437
|
+
// apply the proximity window — a single global set is unsafe because it
|
|
438
|
+
// would suppress recurrences logged far outside the canonical's time.
|
|
439
|
+
const diagnosisTrajectoryIds = new Set();
|
|
440
|
+
const canonicalObservedAtByKey = new Map();
|
|
441
|
+
for (const canonical of canonicalRecords) {
|
|
442
|
+
// Condition (a): linkedTaskId of form `diagnosis_<painId>` where <painId>
|
|
443
|
+
// is itself a trajectory pain id (pain_N).
|
|
444
|
+
const { linkedTaskId } = canonical;
|
|
445
|
+
if (linkedTaskId && linkedTaskId.startsWith('diagnosis_')) {
|
|
446
|
+
const painId = linkedTaskId.slice('diagnosis_'.length);
|
|
447
|
+
if (painId.startsWith('pain_')) {
|
|
448
|
+
diagnosisTrajectoryIds.add(painId);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
// Condition (b) content key: same sourceKind + normalized summary. We fold
|
|
452
|
+
// candidateTitle and rootCauseSummary into the canonical's content signature
|
|
453
|
+
// so a trajectory row whose text matches the candidate title or root cause
|
|
454
|
+
// still dedupes against the canonical card. We collect observedAt ms per
|
|
455
|
+
// key so the trajectory check can require time proximity AND content match.
|
|
456
|
+
const canonicalObservedAtMs = Date.parse(canonical.observedAt);
|
|
457
|
+
if (Number.isNaN(canonicalObservedAtMs))
|
|
458
|
+
continue;
|
|
459
|
+
const parts = [
|
|
460
|
+
canonical.summary,
|
|
461
|
+
canonical.candidateTitle,
|
|
462
|
+
canonical.rootCauseSummary,
|
|
463
|
+
].filter((v) => typeof v === 'string' && v.length > 0);
|
|
464
|
+
for (const part of parts) {
|
|
465
|
+
const normalized = normalizeSummaryForDedupe(part);
|
|
466
|
+
if (!normalized)
|
|
467
|
+
continue;
|
|
468
|
+
const key = `${canonical.sourceKind}||${normalized}`;
|
|
469
|
+
const arr = canonicalObservedAtByKey.get(key);
|
|
470
|
+
if (arr) {
|
|
471
|
+
arr.push(canonicalObservedAtMs);
|
|
472
|
+
}
|
|
473
|
+
else {
|
|
474
|
+
canonicalObservedAtByKey.set(key, [canonicalObservedAtMs]);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
if (diagnosisTrajectoryIds.size === 0 && canonicalObservedAtByKey.size === 0) {
|
|
479
|
+
return records;
|
|
480
|
+
}
|
|
481
|
+
// 3. Mark trajectory records (no linkedTaskId) that have STRONG lineage to a
|
|
482
|
+
// canonical record. Only strong lineage suppresses a row. For condition
|
|
483
|
+
// (b), strong lineage = same sourceKind + same normalized summary +
|
|
484
|
+
// observedAt within CONTENT_DEDUPE_PROXIMITY_MS. Content alone or time
|
|
485
|
+
// alone is never sufficient.
|
|
486
|
+
const idsToRemove = new Set();
|
|
487
|
+
for (const record of records) {
|
|
488
|
+
if (record.linkedTaskId)
|
|
489
|
+
continue; // canonical records are never removed
|
|
490
|
+
let suppress = false;
|
|
491
|
+
// Condition (a): trajectory id explicitly referenced by a diagnosis_* task.
|
|
492
|
+
// This is the strongest lineage — a diagnosis task IS the canonical record
|
|
493
|
+
// for that specific trajectory row.
|
|
494
|
+
if (diagnosisTrajectoryIds.has(record.id)) {
|
|
495
|
+
suppress = true;
|
|
496
|
+
}
|
|
497
|
+
// Condition (b): same sourceKind + normalized summary hash AND observedAt
|
|
498
|
+
// within the proximity window. Without the time-window gate, an owner who
|
|
499
|
+
// logs the same pain today AND tomorrow (a real recurrence) would have the
|
|
500
|
+
// second trajectory row silently deleted whenever any canonical task shares
|
|
501
|
+
// its content — losing the recurrence signal that episode judgement needs.
|
|
502
|
+
if (!suppress) {
|
|
503
|
+
const normalized = normalizeSummaryForDedupe(record.summary);
|
|
504
|
+
if (normalized) {
|
|
505
|
+
const key = `${record.sourceKind}||${normalized}`;
|
|
506
|
+
const candidates = canonicalObservedAtByKey.get(key);
|
|
507
|
+
if (candidates && candidates.length > 0) {
|
|
508
|
+
const tMs = Date.parse(record.observedAt);
|
|
509
|
+
if (!Number.isNaN(tMs) &&
|
|
510
|
+
candidates.some(c => Math.abs(c - tMs) <= CONTENT_DEDUPE_PROXIMITY_MS)) {
|
|
511
|
+
suppress = true;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
if (suppress) {
|
|
517
|
+
idsToRemove.add(record.id);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
if (idsToRemove.size === 0)
|
|
521
|
+
return records;
|
|
522
|
+
// 4. Filter in place to preserve the observedAt-descending sort order.
|
|
523
|
+
return records.filter(record => !idsToRemove.has(record.id));
|
|
524
|
+
}
|
|
525
|
+
export function assembleEvidenceChain(params) {
|
|
526
|
+
const { workspaceDir, painEvents: rawPainEvents, tasks: rawTasks, candidates: rawCandidates, dreamerTasks: rawDreamerTasks, ledgerPrinciples, trajectoryDbAvailable, stateDbAvailable, } = params;
|
|
527
|
+
const generatedAt = new Date().toISOString();
|
|
528
|
+
const records = [];
|
|
529
|
+
const degradedReasons = params.degradedReasons ? [...params.degradedReasons] : [];
|
|
530
|
+
const degradedNextActions = params.degradedNextActions ? [...params.degradedNextActions] : [];
|
|
531
|
+
// Coerce untrusted arrays using element-wise guards (ERR-001/005/007)
|
|
532
|
+
const painEvents = rawPainEvents.filter(isRecord);
|
|
533
|
+
const tasks = rawTasks.filter(isRecord);
|
|
534
|
+
const candidates = rawCandidates.filter(isRecord);
|
|
535
|
+
const dreamerTasks = rawDreamerTasks.filter(isRecord);
|
|
536
|
+
// 1. Process tasks into a map
|
|
537
|
+
const taskMap = new Map();
|
|
538
|
+
for (const task of tasks) {
|
|
539
|
+
const taskId = readOwnString(task, 'task_id') ?? '';
|
|
540
|
+
const inputRefRaw = getOwnValue(task, 'input_ref');
|
|
541
|
+
const inputRef = isString(inputRefRaw) ? inputRefRaw : undefined;
|
|
542
|
+
let painId;
|
|
543
|
+
if (inputRef) {
|
|
544
|
+
painId = /^\d+$/.test(inputRef) ? `pain_${inputRef}` : inputRef;
|
|
545
|
+
}
|
|
546
|
+
else {
|
|
547
|
+
painId = taskId.startsWith('diagnosis_') ? taskId.slice('diagnosis_'.length) : taskId;
|
|
548
|
+
}
|
|
549
|
+
let rootCauseSummary;
|
|
550
|
+
let diagnosticJsonDegraded = false;
|
|
551
|
+
const dj = getOwnValue(task, 'diagnostic_json');
|
|
552
|
+
if (isString(dj)) {
|
|
553
|
+
try {
|
|
554
|
+
const parsed = JSON.parse(dj);
|
|
555
|
+
if (isRecord(parsed) && Object.hasOwn(parsed, 'rootCause') && isString(parsed.rootCause)) {
|
|
556
|
+
rootCauseSummary = parsed.rootCause;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
560
|
+
diagnosticJsonDegraded = true;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
taskMap.set(painId, {
|
|
564
|
+
taskId,
|
|
565
|
+
status: readOwnString(task, 'status') ?? 'unknown',
|
|
566
|
+
lastError: readOwnString(task, 'last_error') ?? null,
|
|
567
|
+
createdAt: readOwnString(task, 'created_at') ?? '',
|
|
568
|
+
rootCauseSummary,
|
|
569
|
+
diagnosticJsonDegraded,
|
|
570
|
+
inputRef,
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
// 2. Build dreamer map
|
|
574
|
+
const dreamerMap = new Map();
|
|
575
|
+
for (const task of dreamerTasks) {
|
|
576
|
+
const taskId = readOwnString(task, 'task_id') ?? '';
|
|
577
|
+
const status = readOwnString(task, 'status') ?? 'unknown';
|
|
578
|
+
if (taskId.startsWith('dreamer-')) {
|
|
579
|
+
const rest = taskId.slice('dreamer-'.length);
|
|
580
|
+
const lastDash = rest.lastIndexOf('-');
|
|
581
|
+
if (lastDash > 0) {
|
|
582
|
+
const candidateId = rest.slice(0, lastDash);
|
|
583
|
+
if (candidateId && !dreamerMap.has(candidateId)) {
|
|
584
|
+
dreamerMap.set(candidateId, { taskId, status });
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
// 3. Build candidates map and reverse lookups
|
|
590
|
+
const taskIdToPainId = new Map();
|
|
591
|
+
for (const [pId, entry] of taskMap) {
|
|
592
|
+
taskIdToPainId.set(entry.taskId, pId);
|
|
593
|
+
const normResult = normalizeDiagnosticianTaskId(entry.taskId);
|
|
594
|
+
if (normResult.success && normResult.normalized) {
|
|
595
|
+
taskIdToPainId.set(normResult.normalized, pId);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
const candidateMap = new Map();
|
|
599
|
+
const candidateByTaskId = new Map();
|
|
600
|
+
for (const c of candidates) {
|
|
601
|
+
const candidateId = readOwnString(c, 'candidate_id') ?? '';
|
|
602
|
+
if (!candidateId)
|
|
603
|
+
continue;
|
|
604
|
+
const rawTaskId = readOwnString(c, 'task_id') ?? '';
|
|
605
|
+
const normResult = normalizeDiagnosticianTaskId(rawTaskId);
|
|
606
|
+
if (!normResult.success || !normResult.normalized) {
|
|
607
|
+
if (normResult.reason)
|
|
608
|
+
degradedReasons.push(normResult.reason);
|
|
609
|
+
if (normResult.nextAction)
|
|
610
|
+
degradedNextActions.push(normResult.nextAction);
|
|
611
|
+
continue;
|
|
612
|
+
}
|
|
613
|
+
const taskId = normResult.normalized;
|
|
614
|
+
let painId = taskIdToPainId.get(taskId) ?? '';
|
|
615
|
+
if (!painId && taskId.startsWith('diagnosis_')) {
|
|
616
|
+
painId = taskId.slice('diagnosis_'.length);
|
|
617
|
+
}
|
|
618
|
+
const info = {
|
|
619
|
+
candidateId,
|
|
620
|
+
title: readOwnString(c, 'title'),
|
|
621
|
+
description: readOwnString(c, 'description'),
|
|
622
|
+
confidence: typeof c.confidence === 'number' && Number.isFinite(c.confidence) ? c.confidence : undefined,
|
|
623
|
+
recommendationKind: readOwnString(c, 'recommendation_kind'),
|
|
624
|
+
};
|
|
625
|
+
if (painId)
|
|
626
|
+
candidateMap.set(painId, info);
|
|
627
|
+
if (taskId)
|
|
628
|
+
candidateByTaskId.set(taskId, info);
|
|
629
|
+
}
|
|
630
|
+
// 4. Map ledger principles to painId
|
|
631
|
+
const painToPrincipleMap = new Map();
|
|
632
|
+
const principleStatusMap = new Map();
|
|
633
|
+
for (const p of ledgerPrinciples) {
|
|
634
|
+
if (p.status) {
|
|
635
|
+
principleStatusMap.set(p.id, p.status);
|
|
636
|
+
}
|
|
637
|
+
for (const pId of p.derivedFromPainIds ?? []) {
|
|
638
|
+
painToPrincipleMap.set(pId, p.id);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
// 5. Assemble records
|
|
642
|
+
const painEventMeta = [];
|
|
643
|
+
const directMatchedPainIds = new Set();
|
|
644
|
+
for (const event of painEvents) {
|
|
645
|
+
const eventId = coerceToString(event.id);
|
|
646
|
+
if (!eventId)
|
|
647
|
+
continue;
|
|
648
|
+
const source = readOwnString(event, 'source') ?? 'unknown';
|
|
649
|
+
const reason = readOwnString(event, 'reason') ?? '';
|
|
650
|
+
const text = readOwnString(event, 'text') ?? '';
|
|
651
|
+
const createdAt = readOwnString(event, 'created_at') ?? '';
|
|
652
|
+
const score = typeof event.score === 'number' ? event.score : 0;
|
|
653
|
+
// PRI-406: Read canonical_pain_id and runtime_task_id from pain_events
|
|
654
|
+
const canonicalPainId = readOwnString(event, 'canonical_pain_id');
|
|
655
|
+
const runtimeTaskId = readOwnString(event, 'runtime_task_id');
|
|
656
|
+
const sourceKind = mapSourceKind(source);
|
|
657
|
+
const painId = `pain_${eventId}`;
|
|
658
|
+
painEventMeta.push({ painId, createdAt, source });
|
|
659
|
+
// PRI-406: Prefer precise join via canonical_pain_id → tasks.input_ref.
|
|
660
|
+
// When a pain event carries canonical_pain_id, look up the task by that ID
|
|
661
|
+
// first (the taskMap key is derived from input_ref, which equals canonical_pain_id).
|
|
662
|
+
// This is the authoritative join path — no timestamp/content heuristic needed.
|
|
663
|
+
let linkedTask = taskMap.get(painId);
|
|
664
|
+
let linkMode;
|
|
665
|
+
if (canonicalPainId) {
|
|
666
|
+
const canonicalTask = taskMap.get(canonicalPainId);
|
|
667
|
+
if (canonicalTask) {
|
|
668
|
+
linkedTask = canonicalTask;
|
|
669
|
+
linkMode = 'canonical';
|
|
670
|
+
}
|
|
671
|
+
else if (runtimeTaskId) {
|
|
672
|
+
// Fallback: try to find task by runtimeTaskId in taskMap values
|
|
673
|
+
for (const [, entry] of taskMap.entries()) {
|
|
674
|
+
if (entry.taskId === runtimeTaskId) {
|
|
675
|
+
linkedTask = entry;
|
|
676
|
+
linkMode = 'canonical';
|
|
677
|
+
break;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
if (linkedTask) {
|
|
683
|
+
directMatchedPainIds.add(painId);
|
|
684
|
+
if (!linkMode) {
|
|
685
|
+
linkMode = 'legacy';
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
const linkedCandidate = candidateMap.get(painId)
|
|
689
|
+
|| (canonicalPainId ? candidateMap.get(canonicalPainId) : undefined)
|
|
690
|
+
|| (linkedTask ? candidateByTaskId.get(linkedTask.taskId) : undefined);
|
|
691
|
+
const linkedPrincipleId = painToPrincipleMap.get(painId)
|
|
692
|
+
|| (canonicalPainId ? painToPrincipleMap.get(canonicalPainId) : undefined);
|
|
693
|
+
const ledgerPrincipleStatus = linkedPrincipleId ? principleStatusMap.get(linkedPrincipleId) : undefined;
|
|
694
|
+
const dreamerInfo = linkedCandidate ? dreamerMap.get(linkedCandidate.candidateId) : undefined;
|
|
695
|
+
const state = determineState({
|
|
696
|
+
sourceKind,
|
|
697
|
+
taskStatus: linkedTask?.status,
|
|
698
|
+
hasCandidate: !!linkedCandidate,
|
|
699
|
+
dreamerStatus: dreamerInfo?.status,
|
|
700
|
+
ledgerPrincipleStatus,
|
|
701
|
+
});
|
|
702
|
+
const rawSummary = resolveSummary({
|
|
703
|
+
candidateTitle: linkedCandidate?.title,
|
|
704
|
+
rootCauseSummary: linkedTask?.rootCauseSummary,
|
|
705
|
+
painText: text,
|
|
706
|
+
painReason: reason,
|
|
707
|
+
fallback: `Pain signal (source: ${source}, score: ${score})`,
|
|
708
|
+
});
|
|
709
|
+
const record = {
|
|
710
|
+
id: painId,
|
|
711
|
+
sourceKind,
|
|
712
|
+
observedAt: createdAt,
|
|
713
|
+
state,
|
|
714
|
+
summary: rawSummary,
|
|
715
|
+
admissionDecision: inferAdmissionDecision(sourceKind),
|
|
716
|
+
};
|
|
717
|
+
// PRI-406: Set canonical identity and link mode
|
|
718
|
+
if (canonicalPainId) {
|
|
719
|
+
record.canonicalPainId = canonicalPainId;
|
|
720
|
+
}
|
|
721
|
+
if (runtimeTaskId) {
|
|
722
|
+
record.runtimeTaskId = runtimeTaskId;
|
|
723
|
+
}
|
|
724
|
+
if (linkMode) {
|
|
725
|
+
record.linkMode = linkMode;
|
|
726
|
+
}
|
|
727
|
+
// PRI-406: When a pain event is linked via canonical_pain_id, also mark
|
|
728
|
+
// the canonical ID as covered so step 6 doesn't create a duplicate record
|
|
729
|
+
// for the same task.
|
|
730
|
+
if (canonicalPainId && linkedTask) {
|
|
731
|
+
directMatchedPainIds.add(canonicalPainId);
|
|
732
|
+
}
|
|
733
|
+
if (linkedCandidate) {
|
|
734
|
+
record.linkedCandidateId = linkedCandidate.candidateId;
|
|
735
|
+
if (linkedCandidate.title)
|
|
736
|
+
record.candidateTitle = linkedCandidate.title;
|
|
737
|
+
if (linkedCandidate.description)
|
|
738
|
+
record.candidateSummary = linkedCandidate.description;
|
|
739
|
+
if (linkedCandidate.confidence !== undefined)
|
|
740
|
+
record.confidence = linkedCandidate.confidence;
|
|
741
|
+
if (linkedCandidate.recommendationKind)
|
|
742
|
+
record.recommendationKind = linkedCandidate.recommendationKind;
|
|
743
|
+
}
|
|
744
|
+
if (linkedTask) {
|
|
745
|
+
record.linkedTaskId = linkedTask.taskId;
|
|
746
|
+
record.linkedTaskStatus = linkedTask.status;
|
|
747
|
+
if (linkedTask.rootCauseSummary) {
|
|
748
|
+
record.rootCauseSummary = linkedTask.rootCauseSummary;
|
|
749
|
+
}
|
|
750
|
+
if (linkedTask.lastError && (state === 'diagnosis-failed' || state === 'diagnosis-retry-wait')) {
|
|
751
|
+
record.failureReason = linkedTask.lastError;
|
|
752
|
+
}
|
|
753
|
+
if (linkedTask.diagnosticJsonDegraded) {
|
|
754
|
+
record.degradedReason = 'Diagnostic data for this record could not be parsed';
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
if (dreamerInfo) {
|
|
758
|
+
record.internalizationTaskId = dreamerInfo.taskId;
|
|
759
|
+
record.dreamerTaskStatus = dreamerInfo.status;
|
|
760
|
+
}
|
|
761
|
+
if (linkedPrincipleId) {
|
|
762
|
+
record.linkedPrincipleId = linkedPrincipleId;
|
|
763
|
+
}
|
|
764
|
+
// Generate nextAction from state
|
|
765
|
+
record.nextAction = determineNextAction({ state, workspaceDir, recordId: painId, linkedTaskId: linkedTask?.taskId });
|
|
766
|
+
if (!linkedTask && stateDbAvailable && taskMap.size > 0) {
|
|
767
|
+
// PRI-406: Rows without canonical_pain_id that have no linked task
|
|
768
|
+
// continue to get the "Could not link" banner (same as before).
|
|
769
|
+
// Rows WITH canonical_pain_id that have no linked task also get the
|
|
770
|
+
// banner — this is a real problem since the precise join should have worked.
|
|
771
|
+
// The linkMode field distinguishes the linking strategy used.
|
|
772
|
+
continue;
|
|
773
|
+
}
|
|
774
|
+
records.push(record);
|
|
775
|
+
}
|
|
776
|
+
// 5b. Proximity Cross-Referencing for Unmatched Pain Events
|
|
777
|
+
const crossRefMap = crossReferenceByTimestamp(painEventMeta, taskMap, directMatchedPainIds);
|
|
778
|
+
// Tasks whose cross-ref is backed by STRONG lineage (content hash match
|
|
779
|
+
// between trajectory text and task candidate title / root cause). These
|
|
780
|
+
// are NOT added to the weak crossRefTaskIds set, so step 6 will emit the
|
|
781
|
+
// canonical task-id record for them. (PRI-388 reviewer P1: dedupe must
|
|
782
|
+
// rely on strong lineage, not timestamp alone.)
|
|
783
|
+
const strongMatchedTaskIds = new Set();
|
|
784
|
+
for (const event of painEvents) {
|
|
785
|
+
const eventId = coerceToString(event.id);
|
|
786
|
+
if (!eventId)
|
|
787
|
+
continue;
|
|
788
|
+
const painId = `pain_${eventId}`;
|
|
789
|
+
if (directMatchedPainIds.has(painId))
|
|
790
|
+
continue;
|
|
791
|
+
const crossRefTask = crossRefMap.get(painId);
|
|
792
|
+
if (!crossRefTask) {
|
|
793
|
+
if (stateDbAvailable && taskMap.size > 0) {
|
|
794
|
+
const source = readOwnString(event, 'source') ?? 'unknown';
|
|
795
|
+
const reason = readOwnString(event, 'reason') ?? '';
|
|
796
|
+
const text = readOwnString(event, 'text') ?? '';
|
|
797
|
+
const createdAt = readOwnString(event, 'created_at') ?? '';
|
|
798
|
+
const score = typeof event.score === 'number' ? event.score : 0;
|
|
799
|
+
const sourceKind = mapSourceKind(source);
|
|
800
|
+
// PRI-406: Read canonical fields
|
|
801
|
+
const eventCanonicalPainId = readOwnString(event, 'canonical_pain_id');
|
|
802
|
+
const eventRuntimeTaskId = readOwnString(event, 'runtime_task_id');
|
|
803
|
+
// No linked task/candidate: state is admission-driven. tool_call/hook observations
|
|
804
|
+
// are `evidence-only`; manual/review are `recorded-only`. (PRI-385 P1-2)
|
|
805
|
+
const unmatchedState = determineState({ sourceKind, hasCandidate: false });
|
|
806
|
+
const record = {
|
|
807
|
+
id: painId,
|
|
808
|
+
sourceKind,
|
|
809
|
+
observedAt: createdAt,
|
|
810
|
+
state: unmatchedState,
|
|
811
|
+
summary: text || reason || `Pain signal (source: ${source}, score: ${score})`,
|
|
812
|
+
admissionDecision: inferAdmissionDecision(sourceKind),
|
|
813
|
+
};
|
|
814
|
+
// PRI-406: Set canonical identity fields
|
|
815
|
+
if (eventCanonicalPainId) {
|
|
816
|
+
record.canonicalPainId = eventCanonicalPainId;
|
|
817
|
+
}
|
|
818
|
+
if (eventRuntimeTaskId) {
|
|
819
|
+
record.runtimeTaskId = eventRuntimeTaskId;
|
|
820
|
+
}
|
|
821
|
+
// PRI-406: Both canonical and legacy unlinked rows get the same
|
|
822
|
+
// "Could not link" banner (ERR-002). The linkMode field distinguishes
|
|
823
|
+
// the linking strategy used; legacy rows additionally get linkMode='legacy'.
|
|
824
|
+
record.degradedReason = 'Could not link this pain event to a diagnostician task. The chain may be incomplete.';
|
|
825
|
+
record.nextAction = `Check Runtime V2 pipeline status. The diagnostician task may have a different pain ID format.`;
|
|
826
|
+
if (!eventCanonicalPainId) {
|
|
827
|
+
record.linkMode = 'legacy';
|
|
828
|
+
}
|
|
829
|
+
degradedReasons.push(`Pain event ${painId} could not be linked to a diagnostician task.`);
|
|
830
|
+
degradedNextActions.push('Check Runtime V2 pipeline status for unmatched pain ID formats.');
|
|
831
|
+
records.push(record);
|
|
832
|
+
}
|
|
833
|
+
continue;
|
|
834
|
+
}
|
|
835
|
+
// ── Strong-lineage gate (PRI-388 reviewer P1) ────────────────────────
|
|
836
|
+
// If the trajectory event's text strongly matches the cross-referenced
|
|
837
|
+
// task's candidate title or root cause (a content hash, NOT timestamp
|
|
838
|
+
// alone), they describe the SAME real event. Skip emitting a
|
|
839
|
+
// trajectory-id (pain_<N>) record here; step 6 will emit the canonical
|
|
840
|
+
// task-id record instead. This prevents two cards for one event while
|
|
841
|
+
// still emitting trajectory-id records for genuine timestamp-only
|
|
842
|
+
// (weak) cross-refs where content does not match.
|
|
843
|
+
const trajText = readOwnString(event, 'text') ?? '';
|
|
844
|
+
const trajReason = readOwnString(event, 'reason') ?? '';
|
|
845
|
+
const trajectoryContentKey = normalizeSummaryForDedupe(trajText || trajReason);
|
|
846
|
+
if (trajectoryContentKey) {
|
|
847
|
+
const crossCandidate = candidateByTaskId.get(crossRefTask.taskId);
|
|
848
|
+
const taskContentFields = [
|
|
849
|
+
crossRefTask.rootCauseSummary,
|
|
850
|
+
crossCandidate?.title,
|
|
851
|
+
].filter((v) => typeof v === 'string' && v.length > 0);
|
|
852
|
+
const isStrongLineageMatch = taskContentFields.some(c => normalizeSummaryForDedupe(c) === trajectoryContentKey);
|
|
853
|
+
if (isStrongLineageMatch) {
|
|
854
|
+
strongMatchedTaskIds.add(crossRefTask.taskId);
|
|
855
|
+
continue;
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
const source = readOwnString(event, 'source') ?? 'unknown';
|
|
859
|
+
const reason = readOwnString(event, 'reason') ?? '';
|
|
860
|
+
const text = readOwnString(event, 'text') ?? '';
|
|
861
|
+
const createdAt = readOwnString(event, 'created_at') ?? '';
|
|
862
|
+
const score = typeof event.score === 'number' ? event.score : 0;
|
|
863
|
+
const sourceKind = mapSourceKind(source);
|
|
864
|
+
// PRI-406: Read canonical fields for cross-ref records
|
|
865
|
+
const eventCanonicalPainId = readOwnString(event, 'canonical_pain_id');
|
|
866
|
+
const eventRuntimeTaskId = readOwnString(event, 'runtime_task_id');
|
|
867
|
+
const linkedCandidate = candidateMap.get(painId)
|
|
868
|
+
|| (eventCanonicalPainId ? candidateMap.get(eventCanonicalPainId) : undefined)
|
|
869
|
+
|| candidateByTaskId.get(crossRefTask.taskId);
|
|
870
|
+
const linkedPrincipleId = painToPrincipleMap.get(painId)
|
|
871
|
+
|| (eventCanonicalPainId ? painToPrincipleMap.get(eventCanonicalPainId) : undefined);
|
|
872
|
+
const ledgerPrincipleStatus = linkedPrincipleId ? principleStatusMap.get(linkedPrincipleId) : undefined;
|
|
873
|
+
const dreamerInfo = linkedCandidate ? dreamerMap.get(linkedCandidate.candidateId) : undefined;
|
|
874
|
+
const state = determineState({
|
|
875
|
+
sourceKind,
|
|
876
|
+
taskStatus: crossRefTask.status,
|
|
877
|
+
hasCandidate: !!linkedCandidate,
|
|
878
|
+
dreamerStatus: dreamerInfo?.status,
|
|
879
|
+
ledgerPrincipleStatus,
|
|
880
|
+
});
|
|
881
|
+
const rawSummary = resolveSummary({
|
|
882
|
+
candidateTitle: linkedCandidate?.title,
|
|
883
|
+
rootCauseSummary: crossRefTask.rootCauseSummary,
|
|
884
|
+
painText: text,
|
|
885
|
+
painReason: reason,
|
|
886
|
+
fallback: `Pain signal (source: ${source}, score: ${score})`,
|
|
887
|
+
});
|
|
888
|
+
const record = {
|
|
889
|
+
id: painId,
|
|
890
|
+
sourceKind,
|
|
891
|
+
observedAt: createdAt,
|
|
892
|
+
state,
|
|
893
|
+
summary: rawSummary,
|
|
894
|
+
admissionDecision: inferAdmissionDecision(sourceKind),
|
|
895
|
+
linkedTaskId: crossRefTask.taskId,
|
|
896
|
+
linkedTaskStatus: crossRefTask.status,
|
|
897
|
+
linkMode: 'legacy', // Cross-ref is always legacy (timestamp heuristic)
|
|
898
|
+
};
|
|
899
|
+
// PRI-406: Set canonical identity fields
|
|
900
|
+
if (eventCanonicalPainId) {
|
|
901
|
+
record.canonicalPainId = eventCanonicalPainId;
|
|
902
|
+
}
|
|
903
|
+
if (eventRuntimeTaskId) {
|
|
904
|
+
record.runtimeTaskId = eventRuntimeTaskId;
|
|
905
|
+
}
|
|
906
|
+
if (linkedCandidate) {
|
|
907
|
+
record.linkedCandidateId = linkedCandidate.candidateId;
|
|
908
|
+
if (linkedCandidate.title)
|
|
909
|
+
record.candidateTitle = linkedCandidate.title;
|
|
910
|
+
if (linkedCandidate.description)
|
|
911
|
+
record.candidateSummary = linkedCandidate.description;
|
|
912
|
+
if (linkedCandidate.confidence !== undefined)
|
|
913
|
+
record.confidence = linkedCandidate.confidence;
|
|
914
|
+
if (linkedCandidate.recommendationKind)
|
|
915
|
+
record.recommendationKind = linkedCandidate.recommendationKind;
|
|
916
|
+
}
|
|
917
|
+
if (crossRefTask.rootCauseSummary) {
|
|
918
|
+
record.rootCauseSummary = crossRefTask.rootCauseSummary;
|
|
919
|
+
}
|
|
920
|
+
if (crossRefTask.lastError && (state === 'diagnosis-failed' || state === 'diagnosis-retry-wait')) {
|
|
921
|
+
record.failureReason = crossRefTask.lastError;
|
|
922
|
+
}
|
|
923
|
+
if (dreamerInfo) {
|
|
924
|
+
record.internalizationTaskId = dreamerInfo.taskId;
|
|
925
|
+
record.dreamerTaskStatus = dreamerInfo.status;
|
|
926
|
+
}
|
|
927
|
+
if (linkedPrincipleId) {
|
|
928
|
+
record.linkedPrincipleId = linkedPrincipleId;
|
|
929
|
+
}
|
|
930
|
+
record.nextAction = determineNextAction({ state, workspaceDir, recordId: painId, linkedTaskId: crossRefTask.taskId });
|
|
931
|
+
if (crossRefTask.diagnosticJsonDegraded) {
|
|
932
|
+
record.degradedReason = 'Diagnostic data for this record could not be parsed';
|
|
933
|
+
}
|
|
934
|
+
records.push(record);
|
|
935
|
+
}
|
|
936
|
+
// 6. Include tasks that have no matching pain_event (e.g. CLI direct records)
|
|
937
|
+
const coveredPainIds = new Set(records.map(r => r.id));
|
|
938
|
+
// PRI-406: Also consider canonicalPainId as covered to prevent step 6 from
|
|
939
|
+
// creating a duplicate record for the same task that step 5 already linked.
|
|
940
|
+
for (const r of records) {
|
|
941
|
+
if (r.canonicalPainId) {
|
|
942
|
+
coveredPainIds.add(r.canonicalPainId);
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
// Only WEAK cross-refs (timestamp-only) block step 6 from creating a
|
|
946
|
+
// task-id record. Strong-lineage cross-refs deferred in step 5b so the
|
|
947
|
+
// canonical task-id form is shown. (PRI-388 reviewer P1.)
|
|
948
|
+
const crossRefTaskIds = new Set();
|
|
949
|
+
for (const entry of crossRefMap.values()) {
|
|
950
|
+
if (strongMatchedTaskIds.has(entry.taskId))
|
|
951
|
+
continue;
|
|
952
|
+
crossRefTaskIds.add(entry.taskId);
|
|
953
|
+
}
|
|
954
|
+
for (const [painId, task] of taskMap.entries()) {
|
|
955
|
+
if (coveredPainIds.has(painId))
|
|
956
|
+
continue;
|
|
957
|
+
if (crossRefTaskIds.has(task.taskId))
|
|
958
|
+
continue;
|
|
959
|
+
const linkedCandidate = candidateMap.get(painId);
|
|
960
|
+
const linkedPrincipleId = painToPrincipleMap.get(painId);
|
|
961
|
+
const ledgerPrincipleStatus = linkedPrincipleId ? principleStatusMap.get(linkedPrincipleId) : undefined;
|
|
962
|
+
const dreamerInfo = linkedCandidate ? dreamerMap.get(linkedCandidate.candidateId) : undefined;
|
|
963
|
+
const state = determineState({
|
|
964
|
+
sourceKind: 'manual',
|
|
965
|
+
taskStatus: task.status,
|
|
966
|
+
hasCandidate: !!linkedCandidate,
|
|
967
|
+
dreamerStatus: dreamerInfo?.status,
|
|
968
|
+
ledgerPrincipleStatus,
|
|
969
|
+
});
|
|
970
|
+
const rawSummary = resolveSummary({
|
|
971
|
+
candidateTitle: linkedCandidate?.title,
|
|
972
|
+
rootCauseSummary: task.rootCauseSummary,
|
|
973
|
+
fallback: `Manual pain signal (task: ${task.taskId})`,
|
|
974
|
+
});
|
|
975
|
+
const record = {
|
|
976
|
+
id: painId,
|
|
977
|
+
sourceKind: 'manual',
|
|
978
|
+
observedAt: task.createdAt,
|
|
979
|
+
state,
|
|
980
|
+
summary: rawSummary,
|
|
981
|
+
admissionDecision: 'store_signal',
|
|
982
|
+
linkedTaskId: task.taskId,
|
|
983
|
+
linkedTaskStatus: task.status,
|
|
984
|
+
// PRI-406: Task-only records from Runtime V2 are canonical-linked
|
|
985
|
+
// (their painId IS the canonical pain identity, e.g. manual_*)
|
|
986
|
+
canonicalPainId: painId.startsWith('pain_') ? undefined : painId,
|
|
987
|
+
linkMode: 'canonical',
|
|
988
|
+
};
|
|
989
|
+
if (linkedCandidate) {
|
|
990
|
+
record.linkedCandidateId = linkedCandidate.candidateId;
|
|
991
|
+
if (linkedCandidate.title)
|
|
992
|
+
record.candidateTitle = linkedCandidate.title;
|
|
993
|
+
if (linkedCandidate.description)
|
|
994
|
+
record.candidateSummary = linkedCandidate.description;
|
|
995
|
+
if (linkedCandidate.confidence !== undefined)
|
|
996
|
+
record.confidence = linkedCandidate.confidence;
|
|
997
|
+
if (linkedCandidate.recommendationKind)
|
|
998
|
+
record.recommendationKind = linkedCandidate.recommendationKind;
|
|
999
|
+
}
|
|
1000
|
+
if (task.rootCauseSummary) {
|
|
1001
|
+
record.rootCauseSummary = task.rootCauseSummary;
|
|
1002
|
+
}
|
|
1003
|
+
if (task.lastError && (state === 'diagnosis-failed' || state === 'diagnosis-retry-wait')) {
|
|
1004
|
+
record.failureReason = task.lastError;
|
|
1005
|
+
}
|
|
1006
|
+
if (dreamerInfo) {
|
|
1007
|
+
record.internalizationTaskId = dreamerInfo.taskId;
|
|
1008
|
+
record.dreamerTaskStatus = dreamerInfo.status;
|
|
1009
|
+
}
|
|
1010
|
+
if (linkedPrincipleId) {
|
|
1011
|
+
record.linkedPrincipleId = linkedPrincipleId;
|
|
1012
|
+
}
|
|
1013
|
+
record.nextAction = determineNextAction({ state, workspaceDir, recordId: painId, linkedTaskId: task.taskId });
|
|
1014
|
+
if (task.diagnosticJsonDegraded) {
|
|
1015
|
+
record.degradedReason = 'Diagnostic data for this record could not be parsed';
|
|
1016
|
+
}
|
|
1017
|
+
records.push(record);
|
|
1018
|
+
}
|
|
1019
|
+
// Sort by observedAt descending
|
|
1020
|
+
records.sort((a, b) => b.observedAt.localeCompare(a.observedAt));
|
|
1021
|
+
// 7. Dedupe: Runtime V2 canonical pain (has linkedTaskId) takes precedence over trajectory pain rows
|
|
1022
|
+
// When the same real pain signal appears as both a trajectory pain (pain_N) and a
|
|
1023
|
+
// Runtime V2 canonical pain (manual_*), show only the canonical record with full chain state.
|
|
1024
|
+
// This prevents misleading "unlinked" and "candidate" cards for the same event.
|
|
1025
|
+
const dedupedRecords = dedupeRecords(records);
|
|
1026
|
+
const response = {
|
|
1027
|
+
records: dedupedRecords,
|
|
1028
|
+
generatedAt,
|
|
1029
|
+
};
|
|
1030
|
+
// Group unmatched pain event warnings (PRI-382)
|
|
1031
|
+
if (degradedReasons.length > 0) {
|
|
1032
|
+
const unmatchedPainIds = [];
|
|
1033
|
+
const otherReasons = [];
|
|
1034
|
+
const unmatchedPainRegex = /^Pain event (.*) could not be linked to a diagnostician task\.$/;
|
|
1035
|
+
for (const reason of degradedReasons) {
|
|
1036
|
+
const match = unmatchedPainRegex.exec(reason);
|
|
1037
|
+
if (match && match[1]) {
|
|
1038
|
+
unmatchedPainIds.push(match[1]);
|
|
1039
|
+
}
|
|
1040
|
+
else {
|
|
1041
|
+
otherReasons.push(reason);
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
const finalReasons = [];
|
|
1045
|
+
if (unmatchedPainIds.length > 0) {
|
|
1046
|
+
if (unmatchedPainIds.length === 1) {
|
|
1047
|
+
finalReasons.push(`Pain event ${unmatchedPainIds[0]} could not be linked to a diagnostician task.`);
|
|
1048
|
+
}
|
|
1049
|
+
else {
|
|
1050
|
+
finalReasons.push(`${unmatchedPainIds.length} evidence records could not be linked to diagnostician tasks. Showing per-record details below.`);
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
const uniqueOtherReasons = Array.from(new Set(otherReasons));
|
|
1054
|
+
finalReasons.push(...uniqueOtherReasons);
|
|
1055
|
+
response.degradedReason = finalReasons.join('; ');
|
|
1056
|
+
const uniqueNextActions = Array.from(new Set(degradedNextActions));
|
|
1057
|
+
response.nextAction = uniqueNextActions.join(' ');
|
|
1058
|
+
}
|
|
1059
|
+
if (records.length === 0 && trajectoryDbAvailable && stateDbAvailable) {
|
|
1060
|
+
response.note = 'PD has not captured any displayable behavior evidence in this workspace yet.';
|
|
1061
|
+
}
|
|
1062
|
+
return response;
|
|
1063
|
+
}
|
|
1064
|
+
//# sourceMappingURL=evidence-chain-contract.js.map
|