create-principles-disciple 1.134.6 → 1.134.7

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.
Files changed (51) hide show
  1. package/console/dist/server/routes/update.js +27 -15
  2. package/console/dist/server/utils/gateway.d.ts +4 -0
  3. package/console/dist/server/utils/gateway.js +24 -4
  4. package/console/dist/ui/pages/settings/UpdatePage.js +5 -3
  5. package/console/dist/ui/utils/validators.d.ts +2 -0
  6. package/console/dist/ui/utils/validators.js +3 -0
  7. package/console/dist/web/assets/app.js +11 -5
  8. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js +107 -1
  9. package/core/dist/runtime-v2/__tests__/resolve-runtime-config-from-pd-config.test.js.map +1 -1
  10. package/core/dist/runtime-v2/index.d.ts +1 -1
  11. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  12. package/core/dist/runtime-v2/index.js +1 -1
  13. package/core/dist/runtime-v2/index.js.map +1 -1
  14. package/core/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.d.ts +26 -0
  15. package/core/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.d.ts.map +1 -0
  16. package/core/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.js +420 -0
  17. package/core/dist/runtime-v2/internalization/__tests__/candidate-lineage.pri717.test.js.map +1 -0
  18. package/core/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js +6 -1
  19. package/core/dist/runtime-v2/internalization/__tests__/candidate-lineage.property.test.js.map +1 -1
  20. package/core/dist/runtime-v2/internalization/candidate-lineage.d.ts +50 -1
  21. package/core/dist/runtime-v2/internalization/candidate-lineage.d.ts.map +1 -1
  22. package/core/dist/runtime-v2/internalization/candidate-lineage.js +204 -77
  23. package/core/dist/runtime-v2/internalization/candidate-lineage.js.map +1 -1
  24. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts +41 -1
  25. package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
  26. package/core/dist/runtime-v2/pain-signal-runtime-factory.js +59 -9
  27. package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
  28. package/core/package.json +1 -1
  29. package/host-runtime/dist/internalization-consumer-cycle.js +71 -23
  30. package/host-runtime/package.json +1 -1
  31. package/package.json +1 -1
  32. package/pd-cli/dist/commands/runtime-internalization-run-once.d.ts.map +1 -1
  33. package/pd-cli/dist/commands/runtime-internalization-run-once.js +23 -7
  34. package/pd-cli/dist/commands/runtime-internalization-run-once.js.map +1 -1
  35. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js +4 -1
  36. package/pd-cli/dist/services/__tests__/runtime-adapter-resolver.test.js.map +1 -1
  37. package/pd-cli/dist/services/resolve-runtime-from-pd-config.d.ts +28 -2
  38. package/pd-cli/dist/services/resolve-runtime-from-pd-config.d.ts.map +1 -1
  39. package/pd-cli/dist/services/resolve-runtime-from-pd-config.js +19 -6
  40. package/pd-cli/dist/services/resolve-runtime-from-pd-config.js.map +1 -1
  41. package/pd-cli/dist/services/rulehost-readiness.js +1 -1
  42. package/pd-cli/dist/services/rulehost-readiness.js.map +1 -1
  43. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts +14 -1
  44. package/pd-cli/dist/services/runtime-adapter-resolver.d.ts.map +1 -1
  45. package/pd-cli/dist/services/runtime-adapter-resolver.js +4 -1
  46. package/pd-cli/dist/services/runtime-adapter-resolver.js.map +1 -1
  47. package/pd-cli/package.json +1 -1
  48. package/plugin/dist/bundle.js +515 -515
  49. package/plugin/dist/governance-audit.js +1 -1
  50. package/plugin/dist/rulehost-evidence.js +1 -1
  51. package/release-manager/package.json +1 -1
@@ -483,7 +483,7 @@ ${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.pus
483
483
  `);var lS=Object.create(null);lS.principle="principle-ledger";lS.rule="rule-candidate";lS.implementation="implementation-candidate";lS.prompt="prompt-injection-candidate";lS.defer="deferred";qo();qo();qo();Mi();var Jy={evaluatorRepairBudgetExhausted:"evaluator_repair_budget_exhausted",rolloutRevisionBudgetExhausted:"rollout_revision_budget_exhausted",rolloutActivationCandidateUnresolved:"rollout_activation_candidate_unresolved",evaluatorTestOutOfScope:"evaluator_test_out_of_scope",evaluatorRepairSeedFailed:"evaluator_repair_seed_failed",rolloutDispatchNotWired:"rollout_dispatch_not_wired",rolloutDispatchRefused:"rollout_dispatch_refused",rolloutRevisionTargetUnresolved:"rollout_revision_target_unresolved",rolloutRevisionRoutingNotWired:"rollout_revision_routing_not_wired",rolloutRevisionReopenFailed:"rollout_revision_reopen_failed",rolloutRevisionIterationMissing:"rollout_revision_iteration_missing",workspaceDirtyStall:"workspace_dirty_stall"},Hzt=new Set([Jy.evaluatorRepairBudgetExhausted,Jy.rolloutRevisionBudgetExhausted,Jy.rolloutActivationCandidateUnresolved,Jy.evaluatorTestOutOfScope]),ZXr=new Set([Jy.rolloutActivationCandidateUnresolved]);Mi();Mi();Mi();qo();var Xzt={canonicalDiagnosis:{workspaceDir:"/workspace/dogfood",painEvents:[{id:1,source:"manual",reason:"Before declaring a user journey complete verify full observable product surface",text:"Manual record: surface validation missing",created_at:"2026-06-13T10:00:00.000Z",score:90}],tasks:[{task_id:"diagnosis_manual_1",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:01:00.000Z",input_ref:"pain_1",diagnostic_json:JSON.stringify({rootCause:"Verifier checks static patterns but misses real runtime load."})}],candidates:[],dreamerTasks:[],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},subRunDiagnosis:{workspaceDir:"/workspace/dogfood",painEvents:[{id:"2",source:"manual",reason:"Verify config file updates before committing",text:"Manual record: verify config changes",created_at:"2026-06-13T10:02:00.000Z",score:80}],tasks:[{task_id:"diag_router-diagnosis_manual_2",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:03:00.000Z",input_ref:"pain_2",diagnostic_json:JSON.stringify({rootCause:"No pre-commit hook runs pd config verification."})}],candidates:[{candidate_id:"cand-subrun-2",task_id:"diag_router-diagnosis_manual_2",title:"Verify config changes before commit",description:"Verify all config files conform to parser constraints prior to commit.",confidence:.95,recommendation_kind:"principle"}],dreamerTasks:[],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},asyncPendingWithoutConsumer:{workspaceDir:"/workspace/dogfood",painEvents:[{id:3,source:"manual",reason:"Agent does not pause to clarify when command fails",created_at:"2026-06-13T10:04:00.000Z",score:75}],tasks:[{task_id:"diagnosis_manual_3",task_kind:"diagnostician",status:"pending",created_at:"2026-06-13T10:05:00.000Z",input_ref:"pain_3"}],candidates:[],dreamerTasks:[],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},candidateGeneratedNoDreamer:{workspaceDir:"/workspace/dogfood",painEvents:[{id:4,source:"manual",reason:"Auto-consumer should lease tasks correctly",created_at:"2026-06-13T10:06:00.000Z",score:70}],tasks:[{task_id:"diagnosis_manual_4",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:07:00.000Z",input_ref:"pain_4"}],candidates:[{candidate_id:"cand-4",task_id:"diagnosis_manual_4",title:"Lease tasks correctly in auto-consumer",description:"Prevent ready dreamer tasks from staying pending.",confidence:.85,recommendation_kind:"principle"}],dreamerTasks:[],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},dreamerPending:{workspaceDir:"/workspace/dogfood",painEvents:[{id:5,source:"manual",reason:"Dreamer pending task scenario",created_at:"2026-06-13T10:08:00.000Z",score:85}],tasks:[{task_id:"diagnosis_manual_5",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:09:00.000Z",input_ref:"pain_5"}],candidates:[{candidate_id:"cand-5",task_id:"diagnosis_manual_5",title:"Dreamer pending title",description:"Dreamer pending description",confidence:.9}],dreamerTasks:[{task_id:"dreamer-cand-5-prompt",task_kind:"dreamer",status:"pending"}],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},dreamerRunning:{workspaceDir:"/workspace/dogfood",painEvents:[{id:6,source:"manual",reason:"Dreamer running task scenario",created_at:"2026-06-13T10:10:00.000Z",score:85}],tasks:[{task_id:"diagnosis_manual_6",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:11:00.000Z",input_ref:"pain_6"}],candidates:[{candidate_id:"cand-6",task_id:"diagnosis_manual_6",title:"Dreamer running title",description:"Dreamer running description",confidence:.9}],dreamerTasks:[{task_id:"dreamer-cand-6-prompt",task_kind:"dreamer",status:"running"}],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},dreamerFailed:{workspaceDir:"/workspace/dogfood",painEvents:[{id:7,source:"manual",reason:"Dreamer failed task scenario",created_at:"2026-06-13T10:12:00.000Z",score:85}],tasks:[{task_id:"diagnosis_manual_7",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:13:00.000Z",input_ref:"pain_7"}],candidates:[{candidate_id:"cand-7",task_id:"diagnosis_manual_7",title:"Dreamer failed title",description:"Dreamer failed description",confidence:.9}],dreamerTasks:[{task_id:"dreamer-cand-7-prompt",task_kind:"dreamer",status:"failed"}],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},dreamerSucceeded:{workspaceDir:"/workspace/dogfood",painEvents:[{id:8,source:"manual",reason:"Dreamer succeeded task scenario",created_at:"2026-06-13T10:14:00.000Z",score:85}],tasks:[{task_id:"diagnosis_manual_8",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:15:00.000Z",input_ref:"pain_8"}],candidates:[{candidate_id:"cand-8",task_id:"diagnosis_manual_8",title:"Dreamer succeeded title",description:"Dreamer succeeded description",confidence:.9}],dreamerTasks:[{task_id:"dreamer-cand-8-prompt",task_kind:"dreamer",status:"succeeded"}],ledgerPrinciples:[{id:"principle-8",derivedFromPainIds:["pain_8"],status:"candidate",text:"Dreamer succeeded principle text"}],trajectoryDbAvailable:!0,stateDbAvailable:!0},malformedLedgerDegradedJson:{workspaceDir:"/workspace/dogfood",painEvents:[{id:9,source:"manual",reason:"Malformed data handling",created_at:"2026-06-13T10:16:00.000Z",score:80}],tasks:[{task_id:"diagnosis_manual_9",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:17:00.000Z",input_ref:"pain_9",diagnostic_json:"{invalid-json}"}],candidates:[],dreamerTasks:[],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},workspaceMismatchWarning:{workspaceDir:"/workspace/dogfood",painEvents:[{id:10,source:"hook",reason:"Workspace mismatch event",created_at:"2026-06-13T10:18:00.000Z",score:60}],tasks:[{task_id:"diagnosis_other_999",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:00:00.000Z",input_ref:"pain_999"}],candidates:[],dreamerTasks:[],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0},autoConsumerSuccess:{workspaceDir:"/workspace/dogfood",painEvents:[{id:11,source:"manual",reason:"Auto-consumer leasing and successor creation success",created_at:"2026-06-13T10:20:00.000Z",score:95}],tasks:[{task_id:"diagnosis_manual_11",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:21:00.000Z",input_ref:"pain_11"}],candidates:[{candidate_id:"cand-11",task_id:"diagnosis_manual_11",title:"Auto-consumer successor task",description:"Verifies that successor philosopher task is created after dreamer success.",confidence:.9}],dreamerTasks:[{task_id:"dreamer-cand-11-prompt",task_kind:"dreamer",status:"succeeded"}],ledgerPrinciples:[{id:"principle-11",derivedFromPainIds:["pain_11"],status:"active"}],trajectoryDbAvailable:!0,stateDbAvailable:!0},autoConsumerFailure:{workspaceDir:"/workspace/dogfood",painEvents:[{id:12,source:"manual",reason:"Auto-consumer failure persistence check",created_at:"2026-06-13T10:22:00.000Z",score:95}],tasks:[{task_id:"diagnosis_manual_12",task_kind:"diagnostician",status:"succeeded",created_at:"2026-06-13T10:23:00.000Z",input_ref:"pain_12"}],candidates:[{candidate_id:"cand-12",task_id:"diagnosis_manual_12",title:"Auto-consumer failure details",description:"Dreamer failed task description",confidence:.9}],dreamerTasks:[{task_id:"dreamer-cand-12-prompt",task_kind:"dreamer",status:"failed"}],ledgerPrinciples:[],trajectoryDbAvailable:!0,stateDbAvailable:!0}};Mi();var g5e={manifestId:"dreamer.v1",schemaVersion:$I,runnerKind:"dreamer",tier0:["pain.summary.headline","diagnosis.summary.headline"],tier1:["pain.summary.category","pain.summary.severity","pain.summary.rootSymptom","diagnosis.summary.rootCause","diagnosis.summary.affectedComponents"],tier2:[],budgetTokens:1500,priority:["diagnosis.summary.rootCause","pain.summary.rootSymptom","pain.summary.category","pain.summary.severity","diagnosis.summary.affectedComponents","pain.summary.headline","diagnosis.summary.headline"]},A5e={manifestId:"scribe.v1",schemaVersion:$I,runnerKind:"scribe",tier0:["philosopher.summary.headline","philosopher.predecessorSummary.headline"],tier1:["philosopher.summary.thesis","philosopher.summary.principleTitle","philosopher.summary.principleScope","philosopher.predecessorSummary.badDecision","philosopher.predecessorSummary.betterDecision","philosopher.predecessorSummary.rationale","philosopher.predecessorSummary.riskLevel","philosopher.predecessorSummary.strategicPerspective"],tier2:[],budgetTokens:1800,priority:["philosopher.summary.principleTitle","philosopher.summary.thesis","philosopher.predecessorSummary.betterDecision","philosopher.predecessorSummary.riskLevel","philosopher.predecessorSummary.rationale","philosopher.summary.principleScope","philosopher.predecessorSummary.badDecision","philosopher.predecessorSummary.strategicPerspective","philosopher.summary.headline","philosopher.predecessorSummary.headline"]},y5e={manifestId:"artificer.v1",schemaVersion:$I,runnerKind:"artificer",tier0:["scribe.summary.headline","scribe.predecessorSummary.headline"],tier1:["scribe.summary.principleText","scribe.summary.scope","scribe.summary.exceptions","scribe.summary.intentOwner","scribe.summary.intentForbidden","scribe.summary.intentValidation"],tier2:["dreamer.raw.candidates.0.betterDecision","dreamer.raw.candidates.0.rationale","dreamer.raw.candidates.0.riskLevel"],budgetTokens:2e3,priority:["scribe.summary.principleText","scribe.summary.intentOwner","dreamer.raw.candidates.0.betterDecision","scribe.summary.scope","scribe.summary.intentForbidden","dreamer.raw.candidates.0.rationale","dreamer.raw.candidates.0.riskLevel","scribe.summary.exceptions","scribe.summary.intentValidation","scribe.summary.headline","scribe.predecessorSummary.headline"]},I5e={manifestId:"artificer.repair.v1",schemaVersion:$I,runnerKind:"artificer",tier0:["scribe.summary.principleText","replay.summary.passed","replay.summary.failedCaseCount"],tier1:["repair.summary.requiredChanges","repair.summary.concerns","replay.summary.failureTypes","scribe.summary.intentOwner","scribe.summary.intentForbidden","scribe.summary.intentValidation"],tier2:["replay.raw.traceFailures","replay.raw.systemFailures","replay.raw.globalViolations"],budgetTokens:2400,priority:["scribe.summary.principleText","scribe.summary.intentOwner","replay.raw.traceFailures","repair.summary.requiredChanges","scribe.summary.intentForbidden","replay.raw.systemFailures","replay.raw.globalViolations","repair.summary.concerns","scribe.summary.intentValidation","replay.summary.passed","replay.summary.failedCaseCount","replay.summary.failureTypes"]},YF={manifestId:"evaluator.stage1.v1",schemaVersion:$I,runnerKind:"evaluator",tier0:["artificer.summary.headline","artificer.predecessorSummary.headline"],tier1:["scribe.summary.principleText","scribe.summary.scope","scribe.summary.intentOwner","scribe.summary.intentForbidden","scribe.summary.intentValidation","artificer.summary.changedFiles","artificer.summary.apiSurface","artificer.summary.risks","dreamer.summary.badDecision","dreamer.summary.betterDecision","dreamer.summary.rationale","dreamer.summary.riskLevel","diagnostician.summary.rootSymptom","diagnostician.summary.category"],tier2:[],budgetTokens:3e3,priority:["scribe.summary.principleText","scribe.summary.intentOwner","dreamer.summary.betterDecision","diagnostician.summary.rootSymptom","artificer.summary.apiSurface","dreamer.summary.riskLevel","dreamer.summary.rationale","scribe.summary.scope","scribe.summary.intentForbidden","artificer.summary.risks","diagnostician.summary.category","scribe.summary.intentValidation","artificer.summary.changedFiles","dreamer.summary.badDecision","artificer.summary.headline","artificer.predecessorSummary.headline"]},E5e={...YF,manifestId:"evaluator.stage2.v1",tier2:["diagnostician.raw.evidence","dreamer.raw.candidates"],budgetTokens:4500,priority:[...YF.priority,"dreamer.raw.candidates","diagnostician.raw.evidence"]},Zzt=[g5e,A5e,y5e,I5e,YF,E5e],y9r=Array.from(new Set(Zzt.map(e=>e.runnerKind)));qo();Mi();qo();Mi();qo();Mi();qo();Mi();Mi();qo();Mi();qo();qo();Mi();qo();Mi();Mi();import $ti from"better-sqlite3";import Kti from"better-sqlite3";import tni from"better-sqlite3";var Tc;(function(e){e[e.Seed=1]="Seed",e[e.Sprout=2]="Sprout",e[e.Sapling=3]="Sapling",e[e.Tree=4]="Tree",e[e.Forest=5]="Forest"})(Tc||(Tc={}));var s8t=[{tier:Tc.Seed,name:"Seed",requiredPoints:0,permissions:{maxLinesPerWrite:150,maxFilesPerTask:3,allowRiskPath:!1,allowSubagentSpawn:!0}},{tier:Tc.Sprout,name:"Sprout",requiredPoints:50,permissions:{maxLinesPerWrite:300,maxFilesPerTask:5,allowRiskPath:!1,allowSubagentSpawn:!0}},{tier:Tc.Sapling,name:"Sapling",requiredPoints:200,permissions:{maxLinesPerWrite:500,maxFilesPerTask:10,allowRiskPath:!0,allowSubagentSpawn:!0}},{tier:Tc.Tree,name:"Tree",requiredPoints:500,permissions:{maxLinesPerWrite:1e3,maxFilesPerTask:20,allowRiskPath:!0,allowSubagentSpawn:!0}},{tier:Tc.Forest,name:"Forest",requiredPoints:1e3,permissions:{maxLinesPerWrite:Number.MAX_SAFE_INTEGER,maxFilesPerTask:Number.MAX_SAFE_INTEGER,allowRiskPath:!0,allowSubagentSpawn:!0}}];var a8t={doubleRewardCooldownMs:3600*1e3,maxRecentEvents:50,difficultyPenalty:{tier4Trivial:.1,tier4Normal:.5,tier5Trivial:.1,tier5Normal:.5}};var Xy=c.Union([c.Literal(Tc.Seed),c.Literal(Tc.Sprout),c.Literal(Tc.Sapling),c.Literal(Tc.Tree),c.Literal(Tc.Forest)]),s9=c.Object({maxLinesPerWrite:c.Number(),maxFilesPerTask:c.Number(),allowRiskPath:c.Boolean(),allowSubagentSpawn:c.Boolean()}),c8t=c.Object({tier:Xy,name:c.String(),requiredPoints:c.Number(),permissions:s9}),b5e=c.Union([c.Literal("trivial"),c.Literal("normal"),c.Literal("hard")]),u8t=c.Object({basePoints:c.Number(),description:c.String()}),C5e=c.Union([c.Literal("success"),c.Literal("failure")]),T5e=c.Object({id:c.String(),timestamp:c.String(),type:C5e,taskHash:c.String(),taskDifficulty:b5e,toolName:c.Optional(c.String()),filePath:c.Optional(c.String()),reason:c.Optional(c.String()),pointsAwarded:c.Number(),isDoubleReward:c.Boolean(),sessionId:c.Optional(c.String())}),k5e=c.Object({totalSuccesses:c.Number(),totalFailures:c.Number(),consecutiveSuccesses:c.Number(),consecutiveFailures:c.Number(),doubleRewardsEarned:c.Number(),tierPromotions:c.Number(),pointsByDifficulty:c.Object({trivial:c.Number(),normal:c.Number(),hard:c.Number()})}),S5e=c.Tuple([c.String(),c.String()]),R5e=c.Object({version:c.Literal("2.0"),agentId:c.String(),totalPoints:c.Number(),availablePoints:c.Number(),currentTier:Xy,lastDoubleRewardTime:c.Optional(c.String()),recentFailureHashes:c.Array(S5e),stats:k5e,recentEvents:c.Array(T5e),lastUpdated:c.String()}),l8t=c.Object({scorecard:R5e,archivedStats:c.Object({totalEventsProcessed:c.Number(),pointsFromTrivial:c.Number(),pointsFromNormal:c.Number(),pointsFromHard:c.Number()})}),d8t=c.Object({doubleRewardCooldownMs:c.Number(),maxRecentEvents:c.Number(),difficultyPenalty:c.Object({tier4Trivial:c.Number(),tier4Normal:c.Number(),tier5Trivial:c.Number(),tier5Normal:c.Number()})}),p8t=c.Object({totalEventsProcessed:c.Number(),pointsFromTrivial:c.Number(),pointsFromNormal:c.Number(),pointsFromHard:c.Number()}),f8t=c.Object({allowed:c.Boolean(),reason:c.Optional(c.String()),currentTier:c.Optional(Xy),requiredTier:c.Optional(Xy)}),m8t=c.Object({toolName:c.String(),filePath:c.Optional(c.String()),content:c.Optional(c.String()),lineCount:c.Optional(c.Number()),isRiskPath:c.Optional(c.Boolean())}),h8t=c.Object({previousTier:Xy,newTier:Xy,totalPoints:c.Number(),timestamp:c.String(),newPermissions:s9}),XF=c.Union([c.Literal("candidate"),c.Literal("probation"),c.Literal("active"),c.Literal("deprecated"),c.Literal("archived")]),a9=c.Union([c.Literal("deterministic"),c.Literal("weak_heuristic"),c.Literal("manual_only")]);var c9=c.Object({applicabilityTags:c.Array(c.String()),positiveSignals:c.Array(c.String()),negativeSignals:c.Array(c.String()),toolSequenceHints:c.Array(c.Array(c.String())),confidence:c.Union([c.Literal("high"),c.Literal("medium"),c.Literal("low")])}),D5e=c.Object({name:c.String(),type:c.Union([c.Literal("hook"),c.Literal("gate"),c.Literal("skill"),c.Literal("test"),c.Literal("prompt")]),triggerCondition:c.String(),enforcement:c.Union([c.Literal("block"),c.Literal("warn"),c.Literal("log")]),action:c.String(),implementationHint:c.Optional(c.String())}),B5e=c.Object({painPreventedCount:c.Number(),lastPainPreventedAt:c.Optional(c.String()),calculatedAt:c.String()}),g8t=c.Object({id:c.String(),version:c.Number(),text:c.String(),source:c.Object({painId:c.String(),painType:c.Union([c.Literal("tool_failure"),c.Literal("dispatch_error"),c.Literal("subagent_error"),c.Literal("user_frustration")]),timestamp:c.String()}),trigger:c.String(),action:c.String(),guardrails:c.Optional(c.Array(c.String())),contextTags:c.Array(c.String()),validation:c.Object({successCount:c.Number(),conflictCount:c.Number()}),status:XF,feedbackScore:c.Number(),usageCount:c.Number(),createdAt:c.String(),activatedAt:c.Optional(c.String()),deprecatedAt:c.Optional(c.String()),evaluability:a9,detectorMetadata:c.Optional(c9),abstractedPrinciple:c.Optional(c.String()),coreAxiomId:c.Optional(c.String()),priority:c.Optional(c.Union([c.Literal("P0"),c.Literal("P1"),c.Literal("P2")])),scope:c.Optional(c.Union([c.Literal("general"),c.Literal("domain")])),domain:c.Optional(c.String()),suggestedRules:c.Optional(c.Array(D5e)),valueMetrics:c.Optional(B5e)}),A8t=c.Union([c.Literal("pain_detected"),c.Literal("candidate_created"),c.Literal("principle_promoted"),c.Literal("principle_deprecated"),c.Literal("principle_rolled_back"),c.Literal("circuit_breaker_opened"),c.Literal("legacy_import")]),o9=c.Object({painId:c.String(),painType:c.Union([c.Literal("tool_failure"),c.Literal("dispatch_error"),c.Literal("subagent_error"),c.Literal("user_frustration")]),source:c.String(),reason:c.String(),score:c.Optional(c.Number()),sessionId:c.Optional(c.String()),agentId:c.Optional(c.String()),taskId:c.Optional(c.String()),traceId:c.Optional(c.String()),provenance:c.Optional(c.Union([c.Literal("host_context_bound"),c.Literal("owner_reported_no_host_trace"),c.Literal("automatic_hook"),c.Literal("openclaw_context_bound")])),hostKind:c.Optional(c.Union([c.Literal("openclaw"),c.Literal("codex")]))}),O5e=c.Object({painId:c.String(),principleId:c.String(),trigger:c.String(),action:c.String(),status:c.Literal("candidate"),painType:c.Optional(c.Union([c.Literal("tool_failure"),c.Literal("dispatch_error"),c.Literal("subagent_error"),c.Literal("user_frustration")])),evaluability:c.Optional(a9),detectorMetadata:c.Optional(c9),abstractedPrinciple:c.Optional(c.String()),coreAxiomId:c.Optional(c.String())}),N5e=c.Object({principleId:c.String(),from:XF,to:XF,reason:c.String(),successCount:c.Optional(c.Number())}),M5e=c.Object({principleId:c.String(),reason:c.String(),triggeredBy:c.Union([c.Literal("auto"),c.Literal("manual")])}),L5e=c.Object({principleId:c.String(),reason:c.String(),triggeredBy:c.Union([c.Literal("user_command"),c.Literal("auto_conflict")]),blacklistPattern:c.Optional(c.String()),relatedPainId:c.Optional(c.String())}),P5e=c.Object({taskId:c.String(),painId:c.String(),failCount:c.Number(),reason:c.String(),requireHuman:c.Boolean(),nextRetryAt:c.Optional(c.String())}),Q5e=c.Object({sourceFile:c.String(),content:c.String(),contentHash:c.Optional(c.String())}),y8t=c.Union([c.Object({ts:c.String(),type:c.Literal("pain_detected"),data:o9}),c.Object({ts:c.String(),type:c.Literal("pain_recorded"),data:o9}),c.Object({ts:c.String(),type:c.Literal("candidate_created"),data:O5e}),c.Object({ts:c.String(),type:c.Literal("principle_promoted"),data:N5e}),c.Object({ts:c.String(),type:c.Literal("principle_deprecated"),data:M5e}),c.Object({ts:c.String(),type:c.Literal("principle_rolled_back"),data:L5e}),c.Object({ts:c.String(),type:c.Literal("circuit_breaker_opened"),data:P5e}),c.Object({ts:c.String(),type:c.Literal("legacy_import"),data:Q5e})]);var F5e=c.Object({term:c.String(),weight:c.Number(),source:c.Union([c.Literal("seed"),c.Literal("llm"),c.Literal("user")]),addedAt:c.String(),hitCount:c.Optional(c.Number({minimum:0})),truePositiveCount:c.Optional(c.Number({minimum:0})),falsePositiveCount:c.Optional(c.Number({minimum:0})),lastHitAt:c.Optional(c.String())}),I8t=c.Object({keywords:c.Array(F5e),version:c.Integer({minimum:0}),lastOptimizedAt:c.String()}),E8t=c.Object({matched:c.Boolean(),matchedTerms:c.Array(c.String()),score:c.Number({minimum:0,maximum:1}),confidence:c.Number({minimum:0,maximum:1})});var V8t={on_change:"smoke",on_risk_change:"unit",commands:{}},eHe={enabled:!0,spiral_boost:20,min_threshold:15,max_threshold:70,backlog_trigger:6,hard_failure_trigger:1,low_recent_success_boost:15,high_recent_pain_boost:10},K8t={soft_capture_threshold:30,adaptive:{...eHe}},Y8t={enabled:!0,heartbeat_stale_hours:72},z8t={enabled:!0,max_file_size_bytes:10*1024*1024,fuzzy_match_enabled:!0,fuzzy_match_threshold:.8,skip_large_file_action:"warn"};var J8t={audit_level:"medium",risk_paths:[],evolution_mode:"realtime",tests:{...V8t},pain:{soft_capture_threshold:K8t.soft_capture_threshold,adaptive:{...eHe}},lifecycle:{...Y8t},edit_verification:{...z8t},custom_guards:[]};import*as Nx from"fs";var cHe=3,X7t=50;function uHe(e,t){let n=e+".tmp";Nx.writeFileSync(n,t,"utf8");let r;for(let i=0;i<cHe;i++)try{Nx.renameSync(n,e);return}catch(o){r=o;let s=o.code;if(s==="EPERM"||s==="EBUSY"||s==="EACCES"){if(i<cHe-1){let a=X7t*Math.pow(2,i),u=Date.now()+a,l=!1;for(;Date.now()<u;)if(!l&&Date.now()>=u-10){try{j("fs").accessSync?.(n)}catch{}l=!0}}continue}break}try{Nx.unlinkSync(n)}catch{}throw r}var lHe=7,ZF=class{logsDir;statsFile;logger;statsCache=new Map;eventBuffer=[];maxBufferSize=20;flushIntervalMs=3e4;flushTimer;currentEventsFile;currentDate;constructor(t,n){let r=zR(t);this.logsDir=pS.join(r,"logs"),os.existsSync(this.logsDir)||os.mkdirSync(this.logsDir,{recursive:!0}),this.statsFile=pS.join(this.logsDir,"daily-stats.json"),this.logger=n,this.loadStats(),this.startFlushTimer()}getEventsFile(t){return pS.join(this.logsDir,`events_${t}.jsonl`)}getTodayStr(){return new Date().toISOString().split("T")[0]??""}ensureEventsFile(){let t=this.getTodayStr();return(this.currentDate!==t||!this.currentEventsFile)&&(this.currentDate=t,this.currentEventsFile=this.getEventsFile(t),this.cleanupOldEventFiles(t)),this.currentEventsFile}cleanupOldEventFiles(t){if(!(lHe<=0))try{let n=Date.now()-lHe*24*60*60*1e3,r=os.readdirSync(this.logsDir);for(let i of r){if(!i.startsWith("events_")||!i.endsWith(".jsonl"))continue;let o=pS.join(this.logsDir,i);os.statSync(o).mtimeMs<n&&os.unlinkSync(o)}}catch(n){this.logger?.debug?.(`[PD] Event file cleanup failed (non-blocking): ${String(n)}`)}}recordToolCall(t,n){let r=n.error||n.exitCode!==void 0&&n.exitCode!==0?"failure":"success";this.record("tool_call",r,t,n)}recordPainSignal(t,n){this.record("pain_signal","detected",t,n)}recordRulePromotion(t){this.record("rule_promotion","promoted",void 0,t)}recordGovernanceAction(t,n){this.record("governance_action","approved",void 0,t),n?.flushImmediately&&this.flushEvents()}recordHookExecution(t,n){let r=t.error?"failure":"success";this.record("hook_execution",r,void 0,t),n?.flushImmediately&&this.flushEvents()}recordGateBlock(t,n){this.record("gate_block","blocked",t,n)}recordGateBypass(t,n){this.record("gate_bypass","bypassed",t,n)}recordEvolutionTask(t){this.record("evolution_task","enqueued",void 0,t)}recordEvolutionTaskCompleted(t){this.record("evolution_task","completed",void 0,t)}recordEmpathyRollback(t,n){this.record("empathy_rollback","rolled_back",t,n)}recordError(t,n,r){this.record("error","failure",t,{message:n,...r})}recordWarn(t,n,r){this.record("warn","failure",t,{message:n,...r})}recordDiagnosisTask(t){this.record("diagnosis_task","written",void 0,t)}recordHeartbeatDiagnosis(t){this.record("heartbeat_diagnosis","injected",void 0,t)}recordDiagnosticianReport(t){let n={success:"completed",missing_json:"failure",incomplete_fields:"failure"};this.record("diagnostician_report",n[t.category],void 0,t)}recordPrincipleCandidate(t){this.record("principle_candidate","created",void 0,t)}recordRuleEnforced(t){this.record("rule_enforced","matched",void 0,t)}recordRuleHostEvaluated(t){this.record("rulehost_evaluated","evaluated",void 0,t)}recordRuleHostBlocked(t){this.record("rulehost_blocked","blocked",void 0,t)}recordRuleHostRequireApproval(t){this.record("rulehost_requireApproval","requireApproval",void 0,t)}recordRuleHostAutoCorrectProposed(t){this.record("rulehost_auto_correct_proposed","auto_correct",void 0,t)}recordRuleHostAutoCorrectApplied(t){this.record("rulehost_auto_correct_applied","auto_correct",void 0,t)}recordRuntimeV2ActivationsInjected(t){this.record("runtime_v2_prompt_activations_injected","injected",t.sessionId,t)}recordRuleHostUnhealthy(t){this.record("rulehost_unhealthy","failure",void 0,t)}recordRuleHostSkipped(t){this.record("rulehost_skipped","failure",void 0,t)}recordTrajectoryObservabilityFailure(t){this.record("trajectory_observability_failure","failure",t.sessionId,t)}redactEventData(t,n){try{if(!new Set(["tool_call","rulehost_evaluated","rulehost_blocked","rulehost_requireApproval","rulehost_auto_correct_proposed","rulehost_auto_correct_applied","rulehost_skipped","trajectory_observability_failure","rule_enforced","hook_execution","gate_block","gate_bypass"]).has(t))return n;let i={};for(let[o,s]of Object.entries(n))if(typeof s=="string")i[o]=Yf(s);else if(Array.isArray(s))i[o]=s.map(a=>{if(typeof a=="string")return Yf(a);if(typeof a=="object"&&a!==null){let u={};for(let[l,d]of Object.entries(a))u[l]=typeof d=="string"?Yf(d):d;return u}return a});else if(typeof s=="object"&&s!==null){let a={};for(let[u,l]of Object.entries(s))typeof l=="string"?a[u]=Yf(l):a[u]=l;i[o]=a}else i[o]=s;return i}catch(r){return{redactionFailure:!0,redactionStatus:"failed","redaction.status":"failed",redactionReason:(r instanceof Error?r.message.slice(0,200):String(r).slice(0,200))||"unknown error",redactionDataDropped:!0,originalType:t,originalSessionId:n.sessionId??null}}}record(t,n,r,i){let o=new Date,s=this.formatDate(o),a=this.redactEventData(t,i),u={ts:o.toISOString(),date:s,type:t,category:n,sessionId:r,data:a};this.eventBuffer.push(u),this.updateStats(u),this.eventBuffer.length>=this.maxBufferSize&&this.flushEvents()}formatDate(t){return t.toISOString().split("T")[0]??""}loadStats(){if(os.existsSync(this.statsFile))try{let t=JSON.parse(os.readFileSync(this.statsFile,"utf-8"));for(let n in t)this.statsCache.set(n,t[n])}catch(t){this.logger&&this.logger.error(`[PD] Failed to load daily-stats.json: ${String(t)}`)}}updateStats(t){let n=this.statsCache.get(t.date);if(n||(n=FI(t.date),this.statsCache.set(t.date,n)),t.type==="tool_call"){n.tools.total++,t.category==="success"?n.tools.success++:n.tools.failure++;let r=t.data,i=r.gfiAfter??r.gfi;i!==void 0&&(n.gfi.samples++,n.gfi.total+=i,n.gfi.peak=Math.max(n.gfi.peak,i))}else if(t.type==="pain_signal"){let r=t.data;if(r.source==="user_empathy"){if(r.deduped)n.empathy.dedupedCount++;else{n.empathy.totalEvents++,n.empathy.totalPenaltyScore+=r.score||0,r.severity&&(n.empathy.bySeverity[r.severity]++,n.empathy.scoreBySeverity[r.severity]+=r.score||0),r.detection_mode&&n.empathy.byDetectionMode[r.detection_mode]++,r.origin&&n.empathy.byOrigin[r.origin]++;let o=r.confidence??1;o>=.8?n.empathy.confidenceDistribution.high++:o>=.5?n.empathy.confidenceDistribution.medium++:n.empathy.confidenceDistribution.low++}let i=n.empathy.totalEvents+n.empathy.dedupedCount;n.empathy.dedupeHitRate=i>0?n.empathy.dedupedCount/i:0}}else if(t.type==="hook_execution"){let r=t.data;if(n.hooks.total++,t.category==="success"?n.hooks.success++:n.hooks.failure++,r.hook){n.hooks.byType[r.hook]||(n.hooks.byType[r.hook]={total:0,success:0,failure:0});let i=n.hooks.byType[r.hook];i&&(i.total++,t.category==="success"?i.success++:i.failure++)}}else if(t.type==="empathy_rollback"){let r=t.data;n.empathy.rollbackCount++,n.empathy.rolledBackScore+=r.originalScore||0}else if(t.type==="rule_promotion")n.evolution.rulesPromoted++;else if(t.type==="evolution_task")t.category==="completed"?n.evolution.tasksCompleted++:t.category==="enqueued"&&n.evolution.tasksEnqueued++;else if(t.type==="diagnosis_task")n.evolution.diagnosisTasksWritten++;else if(t.type==="heartbeat_diagnosis")n.evolution.heartbeatsInjected++;else if(t.type==="diagnostician_report"){let r=t.data;if(Object.prototype.hasOwnProperty.call(r,"category")){let i=r.category;typeof i=="string"&&(i==="success"||i==="missing_json"||i==="incomplete_fields")&&n.evolution.diagnosticianReportsWritten++,typeof i=="string"&&i==="missing_json"&&n.evolution.reportsMissingJson++,typeof i=="string"&&i==="incomplete_fields"&&n.evolution.reportsIncompleteFields++}else Object.prototype.hasOwnProperty.call(r,"success")&&n.evolution.diagnosticianReportsWritten++}else t.type==="principle_candidate"?n.evolution.principleCandidatesCreated++:t.type==="rule_enforced"?n.evolution.rulesEnforced++:t.type==="rulehost_evaluated"?n.evolution.rulehostEvaluated++:t.type==="rulehost_blocked"?n.evolution.rulehostBlocked++:t.type==="rulehost_requireApproval"?n.evolution.rulehostRequireApproval++:t.type==="rulehost_auto_correct_proposed"?n.evolution.rulehostAutoCorrectProposed++:t.type==="rulehost_auto_correct_applied"&&n.evolution.rulehostAutoCorrectApplied++}startFlushTimer(){this.flushTimer=setInterval(()=>this.flush(),this.flushIntervalMs),this.flushTimer.unref()}flush(){this.flushEvents(),this.flushStats()}getBufferedEvents(){return this.eventBuffer.map(t=>({...t,data:{...t.data}}))}getEventDedupKey(t){let n=typeof t.data?.eventId=="string"?String(t.data.eventId):null;if(n)return`${t.type}:${t.sessionId??"none"}:${n}`;let r=t.data??{};return[t.ts??"no-ts",t.type??"no-type",t.category??"no-category",t.sessionId??"no-session",typeof r.source=="string"?r.source:"no-source",typeof r.toolName=="string"?r.toolName:"no-tool",typeof r.reason=="string"?r.reason:"no-reason"].join("::")}readPersistedEvents(){let t=this.ensureEventsFile();if(!os.existsSync(t))return[];try{return os.readFileSync(t,"utf-8").trim().split(`
484
484
  `).filter(r=>r.trim().length>0).map(r=>{try{return JSON.parse(r)}catch(i){return this.logger?.warn?.(`[PD] Corrupted event line skipped: ${String(i).slice(0,100)}`),null}}).filter(r=>r!==null)}catch(n){return this.logger&&this.logger.error(`[PD] Failed to read events file: ${String(n)}`),[]}}getMergedEvents(){let t=new Map;for(let n of[...this.readPersistedEvents(),...this.getBufferedEvents()])t.set(this.getEventDedupKey(n),n);return[...t.values()].sort((n,r)=>n.ts.localeCompare(r.ts))}flushEvents(){if(this.eventBuffer.length===0)return;let t=this.ensureEventsFile(),n=this.eventBuffer.map(r=>JSON.stringify(r)).join(`
485
485
  `)+`
486
- `;try{os.appendFileSync(t,n,"utf-8"),this.eventBuffer=[]}catch(r){this.logger&&this.logger.error(`[PD] Failed to flush events: ${String(r)}`)}}flushStats(){if(this.statsCache.size===0)return;let t={};this.statsCache.forEach((n,r)=>{t[r]=n});try{uHe(this.statsFile,JSON.stringify(t,null,2))}catch(n){this.logger&&this.logger.error(`[PD] Failed to flush daily-stats.json: ${String(n)}`)}}getDailyStats(t){let n=this.statsCache.get(t);return n||(n=FI(t),this.statsCache.set(t,n)),n}getEmpathyStats(t,n){let r=new Date,i=this.formatDate(r),o={totalEvents:0,dedupedCount:0,dedupeHitRate:0,totalPenaltyScore:0,rolledBackScore:0,rollbackCount:0,bySeverity:{mild:0,moderate:0,severe:0},scoreBySeverity:{mild:0,moderate:0,severe:0},byDetectionMode:{structured:0,legacy_tag:0},byOrigin:{assistant_self_report:0,user_manual:0,system_infer:0},confidenceDistribution:{high:0,medium:0,low:0},dailyTrend:[]};if(t==="session"&&n)this.aggregateSessionEmpathy(n,o);else if(t==="week")for(let a=0;a<7;a++){let u=new Date(r);u.setDate(u.getDate()-a);let l=this.formatDate(u),d=this.getDailyStats(l);o.totalEvents+=d.empathy.totalEvents,o.dedupedCount+=d.empathy.dedupedCount,o.totalPenaltyScore+=d.empathy.totalPenaltyScore,o.rolledBackScore+=d.empathy.rolledBackScore,o.rollbackCount+=d.empathy.rollbackCount;for(let p of["mild","moderate","severe"])o.bySeverity[p]+=d.empathy.bySeverity[p],o.scoreBySeverity[p]+=d.empathy.scoreBySeverity[p];o.byDetectionMode.structured+=d.empathy.byDetectionMode.structured,o.byDetectionMode.legacy_tag+=d.empathy.byDetectionMode.legacy_tag;for(let p of["assistant_self_report","user_manual","system_infer"])o.byOrigin[p]+=d.empathy.byOrigin[p];o.confidenceDistribution.high+=d.empathy.confidenceDistribution.high,o.confidenceDistribution.medium+=d.empathy.confidenceDistribution.medium,o.confidenceDistribution.low+=d.empathy.confidenceDistribution.low,(d.empathy.totalEvents>0||d.empathy.dedupedCount>0)&&o.dailyTrend.push({date:l,count:d.empathy.totalEvents,score:d.empathy.totalPenaltyScore})}else{let a=this.getDailyStats(i);Object.assign(o,a.empathy),(a.empathy.totalEvents>0||a.empathy.dedupedCount>0)&&(o.dailyTrend=[{date:i,count:a.empathy.totalEvents,score:a.empathy.totalPenaltyScore}])}let s=o.totalEvents+o.dedupedCount;return o.dedupeHitRate=s>0?o.dedupedCount/s:0,o}aggregateSessionEmpathy(t,n){for(let r of this.getMergedEvents())if(r.sessionId===t&&r.type==="pain_signal"){let i=r.data;if(i.source==="user_empathy")if(i.deduped)n.dedupedCount++;else{n.totalEvents++,n.totalPenaltyScore+=i.score||0,i.severity&&(n.bySeverity[i.severity]++,n.scoreBySeverity[i.severity]+=i.score||0),i.detection_mode&&n.byDetectionMode[i.detection_mode]++,i.origin&&n.byOrigin[i.origin]++;let o=i.confidence??1;o>=.8?n.confidenceDistribution.high++:o>=.5?n.confidenceDistribution.medium++:n.confidenceDistribution.low++}}else if(r.sessionId===t&&r.type==="empathy_rollback"){let i=r.data;n.rollbackCount++,n.rolledBackScore+=i.originalScore||0}}rollbackEmpathyEvent(t,n,r,i){let o=this.getMergedEvents(),s=null;for(let u of o)if(u.type==="pain_signal"){let l=u.data;if(l.eventId===t&&l.source==="user_empathy"){s={entry:u,data:l};break}}if(!s||s.data.deduped)return 0;let a=s.data.score||0;return this.recordEmpathyRollback(n,{eventId:t,originalScore:a,originalSessionId:s.entry.sessionId,reason:r,triggeredBy:i}),a}getLastEmpathyEventId(t){let n=this.getMergedEvents();for(let r=n.length-1;r>=0;r--){let i=n[r];if(i&&i.sessionId===t&&i.type==="pain_signal"){let o=i.data;if(o.source==="user_empathy"&&!o.deduped)return o.eventId||null}}return null}findLatestPainSignal(t){let n=this.getMergedEvents();for(let r=n.length-1;r>=0;r--){let i=n[r];if(i&&i.sessionId===t&&i.type==="pain_signal")return i.data}return null}dispose(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=void 0),this.flush()}};var Z7t=(e,t)=>{let n=new ZF(e);try{n.recordGovernanceAction(t,{flushImmediately:!0})}finally{n.dispose()}};async function lfi(e,t,n,r=Z7t){return r(e,t),n()}export{lfi as authorizeGovernanceAction,Z7t as writeGovernanceAction};
486
+ `;try{os.appendFileSync(t,n,"utf-8"),this.eventBuffer=[]}catch(r){this.logger&&this.logger.error(`[PD] Failed to flush events: ${String(r)}`)}}flushStats(){if(this.statsCache.size===0)return;let t={};this.statsCache.forEach((n,r)=>{t[r]=n});try{uHe(this.statsFile,JSON.stringify(t,null,2))}catch(n){this.logger&&this.logger.error(`[PD] Failed to flush daily-stats.json: ${String(n)}`)}}getDailyStats(t){let n=this.statsCache.get(t);return n||(n=FI(t),this.statsCache.set(t,n)),n}getEmpathyStats(t,n){let r=new Date,i=this.formatDate(r),o={totalEvents:0,dedupedCount:0,dedupeHitRate:0,totalPenaltyScore:0,rolledBackScore:0,rollbackCount:0,bySeverity:{mild:0,moderate:0,severe:0},scoreBySeverity:{mild:0,moderate:0,severe:0},byDetectionMode:{structured:0,legacy_tag:0},byOrigin:{assistant_self_report:0,user_manual:0,system_infer:0},confidenceDistribution:{high:0,medium:0,low:0},dailyTrend:[]};if(t==="session"&&n)this.aggregateSessionEmpathy(n,o);else if(t==="week")for(let a=0;a<7;a++){let u=new Date(r);u.setDate(u.getDate()-a);let l=this.formatDate(u),d=this.getDailyStats(l);o.totalEvents+=d.empathy.totalEvents,o.dedupedCount+=d.empathy.dedupedCount,o.totalPenaltyScore+=d.empathy.totalPenaltyScore,o.rolledBackScore+=d.empathy.rolledBackScore,o.rollbackCount+=d.empathy.rollbackCount;for(let p of["mild","moderate","severe"])o.bySeverity[p]+=d.empathy.bySeverity[p],o.scoreBySeverity[p]+=d.empathy.scoreBySeverity[p];o.byDetectionMode.structured+=d.empathy.byDetectionMode.structured,o.byDetectionMode.legacy_tag+=d.empathy.byDetectionMode.legacy_tag;for(let p of["assistant_self_report","user_manual","system_infer"])o.byOrigin[p]+=d.empathy.byOrigin[p];o.confidenceDistribution.high+=d.empathy.confidenceDistribution.high,o.confidenceDistribution.medium+=d.empathy.confidenceDistribution.medium,o.confidenceDistribution.low+=d.empathy.confidenceDistribution.low,(d.empathy.totalEvents>0||d.empathy.dedupedCount>0)&&o.dailyTrend.push({date:l,count:d.empathy.totalEvents,score:d.empathy.totalPenaltyScore})}else{let a=this.getDailyStats(i);Object.assign(o,a.empathy),(a.empathy.totalEvents>0||a.empathy.dedupedCount>0)&&(o.dailyTrend=[{date:i,count:a.empathy.totalEvents,score:a.empathy.totalPenaltyScore}])}let s=o.totalEvents+o.dedupedCount;return o.dedupeHitRate=s>0?o.dedupedCount/s:0,o}aggregateSessionEmpathy(t,n){for(let r of this.getMergedEvents())if(r.sessionId===t&&r.type==="pain_signal"){let i=r.data;if(i.source==="user_empathy")if(i.deduped)n.dedupedCount++;else{n.totalEvents++,n.totalPenaltyScore+=i.score||0,i.severity&&(n.bySeverity[i.severity]++,n.scoreBySeverity[i.severity]+=i.score||0),i.detection_mode&&n.byDetectionMode[i.detection_mode]++,i.origin&&n.byOrigin[i.origin]++;let o=i.confidence??1;o>=.8?n.confidenceDistribution.high++:o>=.5?n.confidenceDistribution.medium++:n.confidenceDistribution.low++}}else if(r.sessionId===t&&r.type==="empathy_rollback"){let i=r.data;n.rollbackCount++,n.rolledBackScore+=i.originalScore||0}}rollbackEmpathyEvent(t,n,r,i){let o=this.getMergedEvents(),s=null;for(let u of o)if(u.type==="pain_signal"){let l=u.data;if(l.eventId===t&&l.source==="user_empathy"){s={entry:u,data:l};break}}if(!s||s.data.deduped)return 0;let a=s.data.score||0;return this.recordEmpathyRollback(n,{eventId:t,originalScore:a,originalSessionId:s.entry.sessionId,reason:r,triggeredBy:i}),a}getLastEmpathyEventId(t){let n=this.getMergedEvents();for(let r=n.length-1;r>=0;r--){let i=n[r];if(i&&i.sessionId===t&&i.type==="pain_signal"){let o=i.data;if(o.source==="user_empathy"&&!o.deduped)return o.eventId||null}}return null}findLatestPainSignal(t){let n=this.getMergedEvents();for(let r=n.length-1;r>=0;r--){let i=n[r];if(i&&i.sessionId===t&&i.type==="pain_signal")return i.data}return null}dispose(){this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=void 0),this.flush()}};var Z7t=(e,t)=>{let n=new ZF(e);try{n.recordGovernanceAction(t,{flushImmediately:!0})}finally{n.dispose()}};async function pfi(e,t,n,r=Z7t){return r(e,t),n()}export{pfi as authorizeGovernanceAction,Z7t as writeGovernanceAction};
487
487
  /*! Bundled license information:
488
488
 
489
489
  web-streams-polyfill/dist/ponyfill.es2018.js:
@@ -931,7 +931,7 @@ ${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.pus
931
931
  SELECT blob_ref FROM assistant_turns WHERE blob_ref IS NOT NULL
932
932
  UNION
933
933
  SELECT blob_ref FROM user_turns WHERE blob_ref IS NOT NULL
934
- `).all();for(let s of n)s.blob_ref&&t.add(String(s.blob_ref));let r=Date.now(),i=0,o=0;for(let s of Vi.readdirSync(this.blobDir)){if(t.has(s))continue;let a=Tu.join(this.blobDir,s),u;try{u=Vi.statSync(a)}catch{continue}u.isFile()&&(this.orphanBlobGraceMs>0&&r-u.mtimeMs<this.orphanBlobGraceMs||(o+=u.size,i+=1,Vi.rmSync(a,{force:!0})))}return{removedFiles:i,reclaimedBytes:o}}withWrite(t){return VHe(this.dbPath,t,{lockSuffix:".trajectory.lock",lockStaleMs:3e4})}},Ek=class{static instances=new Map;static get(t,n={}){let r=Tu.resolve(t),i=this.instances.get(r);if(i)return i;let o=new hU({workspaceDir:r,...n});return this.instances.set(r,o),o}static dispose(t){let n=Tu.resolve(t),r=this.instances.get(n);r&&(r.dispose(),this.instances.delete(n))}static clear(){for(let t of this.instances.values())t.dispose();this.instances.clear()}static use(t,n,r={}){let i=Tu.resolve(t),o=this.instances.get(i);if(o)return n(o);let s=new hU({workspaceDir:i,...r});try{return n(s)}finally{s.dispose()}}};var ZHe=["read","read_file","read_many_files","image_read","search_file_content","grep","grep_search","list_directory","ls","glob","lsp_hover","lsp_goto_definition","lsp_find_references","web_fetch","web_search","ref_search_documentation","ref_read_url","resolve-library-id","get-library-docs","memory_recall","save_memory","todo_read","todo_write","ask_user","ask_user_question","pd-status","report"],Uw=["write","write_file","edit","edit_file","replace","apply_patch","insert","patch"],_k=["bash","run_shell_command","exec","execute","shell","cmd"],p9t=["delete_file","move_file",..._k],gU=["sessions_spawn"],f9t=[...Uw],m9t=[...Uw,"delete_file","move_file",..._k,...gU],h9t=[...ZHe],qmi=new Set(ZHe),Gmi=new Set(Uw),Hmi=new Set(p9t),jmi=new Set(_k),Vmi=new Set(gU),Kmi=new Set(f9t),Ymi=new Set(m9t),Jmi=new Set(h9t),zmi=new Set([...Uw,"delete_file","move_file"]);function AU(e,t){return e.map(n=>({rawToolName:n,canonicalKind:t}))}var g9t=["delete_file","move_file"],A9t=Object.freeze([...AU(_k,"execute"),...AU(Uw,"write"),...AU(g9t,"write"),...AU(gU,"agent")]),L9=x9(A9t);if(!L9.ok)throw new Error(`[PD] OpenClaw tool semantic declaration is invalid: ${L9.errors.join("; ")}`);var e3e=L9.registry;var y9t=new Set(["success","failure","blocked"]);function I9t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function E9t(e){return typeof e=="string"&&y9t.has(e)}function t3e(e,t,n){let r=[];for(let i of e){let o=i.toolName;if(typeof o!="string"||o.length===0)return xk(`row id=${i.id}: tool_name must be a non-empty string`);let s=i.outcome;if(!E9t(s))return xk(`row id=${i.id}: outcome "${i.outcome}" is not a valid RuleToolOutcome`);let a=i.paramsJson;if(typeof a!="string")return xk(`row id=${i.id}: params_json must be a string`);let u;try{u=JSON.parse(a)}catch{return xk(`row id=${i.id}: params_json is not valid JSON`)}if(!I9t(u))return xk(`row id=${i.id}: params_json must parse to a non-array object`);let l=e3e.resolve(o),d=V1(u,{isBashTool:l==="execute",isWriteTool:l==="write",toolName:o}),p=j1(d,n);r.push({sequenceId:i.id,toolName:o,canonicalKind:l,normalizedPath:p===""?null:p,paramsSummary:u,outcome:s})}return{status:"available",truncated:t,calls:r}}function xk(e){return{status:"unavailable",unavailableReason:e,truncated:!1,calls:[]}}var _9t=3,x9t=5,w9t=100,r3e=new Set(["__proto__","constructor","prototype"]);function b9t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function v9t(e){for(let t of Object.keys(e))if(r3e.has(t))return!1;return!0}var M9=class{db;constructor(t){this.db=Ek.get(t.workspaceDir)}assemble(t){let n=this.db.getPainEventByCanonicalId(t.sourcePainId);if(!n)throw new Error(`[BehaviorExamplePackAssembler] pain event not found for canonical_pain_id="${t.sourcePainId}" (ERR-069 fail loud)`);C9t(t);let r=n3e(this.db.getRuleHostEvidenceRow(t.sourceNegativeToolCallId),t.sourceNegativeToolCallId),i=t.positiveToolCallIds.map(p=>n3e(this.db.getRuleHostEvidenceRow(p),p));for(let p of[r,...i])if(p.sessionId!==n.sessionId)throw new Error(`[BehaviorExamplePackAssembler] selected tool call ${p.id} session mismatch; all examples must belong to pain session ${n.sessionId}`);let o=[],s={projectDir:t.projectDir,redactionNotes:o},a=this.buildSelectedCase(r,"negative","block",s),u=i.map(p=>this.buildSelectedCase(p,"positive","allow",s)),l={sourceNegativeCase:a,ownerDesiredOutcome:t.ownerDesiredOutcome,positiveCounterexamples:u,evidenceRefs:[`pain:${n.id}`,`tool_call:${r.id}`,...i.map(p=>`tool_call:${p.id}`)].slice(0,x9t),redactionNotes:o},d=uU(l);if(!d.valid)throw new Error(`[BehaviorExamplePackAssembler] assembled pack failed validateBehaviorExamplePack: ${d.errors.join("; ")} (ERR-069 fail loud)`);return l}buildSelectedCase(t,n,r,i){let{projectDir:o,redactionNotes:s}=i,a=T9t(t,n,r,o),u=S9t(a.params,o);s.push(...u.notes);let l=this.db.getRuleHostContextRowsBefore(t.sessionId,t.id,w9t),d=t3e(l.rows,l.truncated,o),p=K1(t.toolName,u.redacted,o),m={version:2,history:d,facts:mD(d,p.normalizedPath||null,null)};return{...a,params:u.redacted,ruleContext:m}}};function C9t(e){if(!Number.isSafeInteger(e.sourceNegativeToolCallId)||e.sourceNegativeToolCallId<=0)throw new Error("[BehaviorExamplePackAssembler] sourceNegativeToolCallId must be a positive integer");if(!Array.isArray(e.positiveToolCallIds)||e.positiveToolCallIds.length===0||e.positiveToolCallIds.length>_9t)throw new Error("[BehaviorExamplePackAssembler] positiveToolCallIds must contain 1 to at most 3 IDs");let t=[e.sourceNegativeToolCallId,...e.positiveToolCallIds];if(t.some(n=>!Number.isSafeInteger(n)||n<=0)||new Set(t).size!==t.length)throw new Error("[BehaviorExamplePackAssembler] selected tool call IDs must be unique positive integers")}function n3e(e,t){if(!e)throw new Error(`[BehaviorExamplePackAssembler] selected tool call id=${t} not found`);return e}function T9t(e,t,n,r){if(typeof e.toolName!="string"||e.toolName.length===0)throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: toolName must be a non-empty string (rc-9 fail loud)`);if(typeof e.paramsJson!="string")throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson must be a string (rc-9 fail loud)`);let i;try{i=JSON.parse(e.paramsJson)}catch{throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson is not valid JSON (rc-9 fail loud)`)}if(!b9t(i))throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson must parse to a non-array object (rc-9 fail loud)`);if(!v9t(i))throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson must not carry prototype-pollution keys (ERR-076, rc-9 fail loud)`);return{caseId:`case-${t}-${e.id}`,kind:t,toolName:e.toolName,params:i,expectedDecision:n}}function S9t(e,t){let n=[],r={};for(let i of Object.keys(e)){if(r3e.has(i))continue;let o=e[i];if(typeof o!="string"){r[i]=o;continue}if(k9t(o)&&!o.startsWith(t)){r[i]="<redacted:absolute-path>",n.push(`redacted absolute path in field "${i}" (outside project tree)`);continue}if(D9t(o)){r[i]="<redacted:secret>",n.push(`redacted possible secret in field "${i}"`);continue}r[i]=o}return{redacted:r,notes:n}}function k9t(e){return e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e)}var R9t=[/AKIA[0-9A-Z]{16}/,/[A-Za-z0-9+/]{40,}/];function D9t(e){if(e.length<20)return!1;for(let t of R9t)if(t.test(e))return!0;return!1}export{M9 as BehaviorExamplePackAssembler,Ek as RuleHostEvidenceRegistry};
934
+ `).all();for(let s of n)s.blob_ref&&t.add(String(s.blob_ref));let r=Date.now(),i=0,o=0;for(let s of Vi.readdirSync(this.blobDir)){if(t.has(s))continue;let a=Tu.join(this.blobDir,s),u;try{u=Vi.statSync(a)}catch{continue}u.isFile()&&(this.orphanBlobGraceMs>0&&r-u.mtimeMs<this.orphanBlobGraceMs||(o+=u.size,i+=1,Vi.rmSync(a,{force:!0})))}return{removedFiles:i,reclaimedBytes:o}}withWrite(t){return VHe(this.dbPath,t,{lockSuffix:".trajectory.lock",lockStaleMs:3e4})}},Ek=class{static instances=new Map;static get(t,n={}){let r=Tu.resolve(t),i=this.instances.get(r);if(i)return i;let o=new hU({workspaceDir:r,...n});return this.instances.set(r,o),o}static dispose(t){let n=Tu.resolve(t),r=this.instances.get(n);r&&(r.dispose(),this.instances.delete(n))}static clear(){for(let t of this.instances.values())t.dispose();this.instances.clear()}static use(t,n,r={}){let i=Tu.resolve(t),o=this.instances.get(i);if(o)return n(o);let s=new hU({workspaceDir:i,...r});try{return n(s)}finally{s.dispose()}}};var ZHe=["read","read_file","read_many_files","image_read","search_file_content","grep","grep_search","list_directory","ls","glob","lsp_hover","lsp_goto_definition","lsp_find_references","web_fetch","web_search","ref_search_documentation","ref_read_url","resolve-library-id","get-library-docs","memory_recall","save_memory","todo_read","todo_write","ask_user","ask_user_question","pd-status","report"],Uw=["write","write_file","edit","edit_file","replace","apply_patch","insert","patch"],_k=["bash","run_shell_command","exec","execute","shell","cmd"],p9t=["delete_file","move_file",..._k],gU=["sessions_spawn"],f9t=[...Uw],m9t=[...Uw,"delete_file","move_file",..._k,...gU],h9t=[...ZHe],Hmi=new Set(ZHe),jmi=new Set(Uw),Vmi=new Set(p9t),Kmi=new Set(_k),Ymi=new Set(gU),Jmi=new Set(f9t),zmi=new Set(m9t),Xmi=new Set(h9t),Zmi=new Set([...Uw,"delete_file","move_file"]);function AU(e,t){return e.map(n=>({rawToolName:n,canonicalKind:t}))}var g9t=["delete_file","move_file"],A9t=Object.freeze([...AU(_k,"execute"),...AU(Uw,"write"),...AU(g9t,"write"),...AU(gU,"agent")]),L9=x9(A9t);if(!L9.ok)throw new Error(`[PD] OpenClaw tool semantic declaration is invalid: ${L9.errors.join("; ")}`);var e3e=L9.registry;var y9t=new Set(["success","failure","blocked"]);function I9t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function E9t(e){return typeof e=="string"&&y9t.has(e)}function t3e(e,t,n){let r=[];for(let i of e){let o=i.toolName;if(typeof o!="string"||o.length===0)return xk(`row id=${i.id}: tool_name must be a non-empty string`);let s=i.outcome;if(!E9t(s))return xk(`row id=${i.id}: outcome "${i.outcome}" is not a valid RuleToolOutcome`);let a=i.paramsJson;if(typeof a!="string")return xk(`row id=${i.id}: params_json must be a string`);let u;try{u=JSON.parse(a)}catch{return xk(`row id=${i.id}: params_json is not valid JSON`)}if(!I9t(u))return xk(`row id=${i.id}: params_json must parse to a non-array object`);let l=e3e.resolve(o),d=V1(u,{isBashTool:l==="execute",isWriteTool:l==="write",toolName:o}),p=j1(d,n);r.push({sequenceId:i.id,toolName:o,canonicalKind:l,normalizedPath:p===""?null:p,paramsSummary:u,outcome:s})}return{status:"available",truncated:t,calls:r}}function xk(e){return{status:"unavailable",unavailableReason:e,truncated:!1,calls:[]}}var _9t=3,x9t=5,w9t=100,r3e=new Set(["__proto__","constructor","prototype"]);function b9t(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function v9t(e){for(let t of Object.keys(e))if(r3e.has(t))return!1;return!0}var M9=class{db;constructor(t){this.db=Ek.get(t.workspaceDir)}assemble(t){let n=this.db.getPainEventByCanonicalId(t.sourcePainId);if(!n)throw new Error(`[BehaviorExamplePackAssembler] pain event not found for canonical_pain_id="${t.sourcePainId}" (ERR-069 fail loud)`);C9t(t);let r=n3e(this.db.getRuleHostEvidenceRow(t.sourceNegativeToolCallId),t.sourceNegativeToolCallId),i=t.positiveToolCallIds.map(p=>n3e(this.db.getRuleHostEvidenceRow(p),p));for(let p of[r,...i])if(p.sessionId!==n.sessionId)throw new Error(`[BehaviorExamplePackAssembler] selected tool call ${p.id} session mismatch; all examples must belong to pain session ${n.sessionId}`);let o=[],s={projectDir:t.projectDir,redactionNotes:o},a=this.buildSelectedCase(r,"negative","block",s),u=i.map(p=>this.buildSelectedCase(p,"positive","allow",s)),l={sourceNegativeCase:a,ownerDesiredOutcome:t.ownerDesiredOutcome,positiveCounterexamples:u,evidenceRefs:[`pain:${n.id}`,`tool_call:${r.id}`,...i.map(p=>`tool_call:${p.id}`)].slice(0,x9t),redactionNotes:o},d=uU(l);if(!d.valid)throw new Error(`[BehaviorExamplePackAssembler] assembled pack failed validateBehaviorExamplePack: ${d.errors.join("; ")} (ERR-069 fail loud)`);return l}buildSelectedCase(t,n,r,i){let{projectDir:o,redactionNotes:s}=i,a=T9t(t,n,r,o),u=S9t(a.params,o);s.push(...u.notes);let l=this.db.getRuleHostContextRowsBefore(t.sessionId,t.id,w9t),d=t3e(l.rows,l.truncated,o),p=K1(t.toolName,u.redacted,o),m={version:2,history:d,facts:mD(d,p.normalizedPath||null,null)};return{...a,params:u.redacted,ruleContext:m}}};function C9t(e){if(!Number.isSafeInteger(e.sourceNegativeToolCallId)||e.sourceNegativeToolCallId<=0)throw new Error("[BehaviorExamplePackAssembler] sourceNegativeToolCallId must be a positive integer");if(!Array.isArray(e.positiveToolCallIds)||e.positiveToolCallIds.length===0||e.positiveToolCallIds.length>_9t)throw new Error("[BehaviorExamplePackAssembler] positiveToolCallIds must contain 1 to at most 3 IDs");let t=[e.sourceNegativeToolCallId,...e.positiveToolCallIds];if(t.some(n=>!Number.isSafeInteger(n)||n<=0)||new Set(t).size!==t.length)throw new Error("[BehaviorExamplePackAssembler] selected tool call IDs must be unique positive integers")}function n3e(e,t){if(!e)throw new Error(`[BehaviorExamplePackAssembler] selected tool call id=${t} not found`);return e}function T9t(e,t,n,r){if(typeof e.toolName!="string"||e.toolName.length===0)throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: toolName must be a non-empty string (rc-9 fail loud)`);if(typeof e.paramsJson!="string")throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson must be a string (rc-9 fail loud)`);let i;try{i=JSON.parse(e.paramsJson)}catch{throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson is not valid JSON (rc-9 fail loud)`)}if(!b9t(i))throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson must parse to a non-array object (rc-9 fail loud)`);if(!v9t(i))throw new Error(`[BehaviorExamplePackAssembler] row id=${e.id}: paramsJson must not carry prototype-pollution keys (ERR-076, rc-9 fail loud)`);return{caseId:`case-${t}-${e.id}`,kind:t,toolName:e.toolName,params:i,expectedDecision:n}}function S9t(e,t){let n=[],r={};for(let i of Object.keys(e)){if(r3e.has(i))continue;let o=e[i];if(typeof o!="string"){r[i]=o;continue}if(k9t(o)&&!o.startsWith(t)){r[i]="<redacted:absolute-path>",n.push(`redacted absolute path in field "${i}" (outside project tree)`);continue}if(D9t(o)){r[i]="<redacted:secret>",n.push(`redacted possible secret in field "${i}"`);continue}r[i]=o}return{redacted:r,notes:n}}function k9t(e){return e.startsWith("/")||/^[A-Za-z]:[\\/]/.test(e)}var R9t=[/AKIA[0-9A-Z]{16}/,/[A-Za-z0-9+/]{40,}/];function D9t(e){if(e.length<20)return!1;for(let t of R9t)if(t.test(e))return!0;return!1}export{M9 as BehaviorExamplePackAssembler,Ek as RuleHostEvidenceRegistry};
935
935
  /*! Bundled license information:
936
936
 
937
937
  web-streams-polyfill/dist/ponyfill.es2018.js:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-principles-disciple",
3
- "version": "1.134.6",
3
+ "version": "1.134.7",
4
4
  "description": "Interactive CLI installer for Principles Disciple OpenClaw plugin",
5
5
  "type": "module",
6
6
  "bin": {