principles-disciple 1.197.13 → 1.197.14
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/dist/bundle.js +1 -1
- package/dist/openclaw.plugin.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
package/dist/bundle.js
CHANGED
|
@@ -827,7 +827,7 @@ ${e.slice(a+1)}`:c+=e.slice(n),c.slice(1)}function PEr(e){let t="",r=0;for(let o
|
|
|
827
827
|
`).all(...o.lineageArtifactIds).map(yle)}async updateValidationStatus(t,r){let o=this.connection.getDb(),n=new Date().toISOString();return o.prepare(`
|
|
828
828
|
UPDATE pi_artifacts SET validation_status = ?, updated_at = ?
|
|
829
829
|
WHERE artifact_id = ?
|
|
830
|
-
`).run(r,n,t).changes>0}};import*as VJe from"path";import*as di from"fs";import*as qb from"path";var AMr=["deterministic","weak_heuristic","manual_only"],OMr=["prompt_only","needs_training","in_training","deployed_pending_eval","internalized","regressed"];function Dm(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jC(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function xle(e,t){return typeof e!="number"||!Number.isFinite(e)?t.fallback:Math.max(t.min,Math.min(t.max,e))}function kG(e,t){return typeof e!="number"||!Number.isFinite(e)?t.fallback:Math.max(t.min,Math.min(t.max,Math.round(e)))}function Gh(e){return Array.from(new Set(e))}function PMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))r===lR||!Dm(o)||o.principleId===r&&(t[r]={principleId:r,evaluability:AMr.includes(o.evaluability)?o.evaluability:"manual_only",applicableOpportunityCount:kG(o.applicableOpportunityCount,{min:0,max:1/0,fallback:0}),observedViolationCount:kG(o.observedViolationCount,{min:0,max:1/0,fallback:0}),complianceRate:xle(o.complianceRate,{min:0,max:1,fallback:0}),violationTrend:xle(o.violationTrend,{min:-1,max:1,fallback:0}),generatedSampleCount:kG(o.generatedSampleCount,{min:0,max:1/0,fallback:0}),approvedSampleCount:kG(o.approvedSampleCount,{min:0,max:1/0,fallback:0}),includedTrainRunIds:jC(o.includedTrainRunIds),deployedCheckpointIds:jC(o.deployedCheckpointIds),lastEvalScore:typeof o.lastEvalScore=="number"&&Number.isFinite(o.lastEvalScore)?xle(o.lastEvalScore,{min:0,max:1,fallback:0}):void 0,internalizationStatus:OMr.includes(o.internalizationStatus)?o.internalizationStatus:"prompt_only"});return t}function NMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))Dm(o)&&(t[r]={...o,id:r,ruleIds:jC(o.ruleIds),conflictsWithPrincipleIds:jC(o.conflictsWithPrincipleIds),derivedFromPainIds:jC(o.derivedFromPainIds)});return t}function MMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))Dm(o)&&(t[r]={...o,id:r,principleId:typeof o.principleId=="string"?o.principleId:"",implementationIds:jC(o.implementationIds)});return t}function LMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))!Dm(o)||typeof o.ruleId!="string"||(t[r]={...o,id:r,ruleId:o.ruleId});return t}function DMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))Dm(o)&&(t[r]={...o,principleId:typeof o.principleId=="string"?o.principleId:r});return t}function GC(){return{principles:{},rules:{},implementations:{},metrics:{},lastUpdated:new Date(0).toISOString()}}function $Mr(e){return Dm(e)?{principles:NMr(e.principles),rules:MMr(e.rules),implementations:LMr(e.implementations),metrics:DMr(e.metrics),lastUpdated:typeof e.lastUpdated=="string"?e.lastUpdated:new Date(0).toISOString()}:GC()}function DJe(e){if(!Dm(e))return{trainingStore:{},tree:GC()};let t=e.trainingStore??e,r=e[lR]??e.tree;return{trainingStore:PMr(t),tree:$Mr(r)}}function $Je(e){return JSON.stringify({...e.trainingStore,[lR]:{...e.tree,lastUpdated:new Date().toISOString()}},null,2)}var zMr="principle_training_state.json",zJe=3,UMr=50;function FMr(e,t){let r=qb.dirname(e),o=di.mkdtempSync(qb.join(r,".pd-write-")),n=qb.join(o,"tmp");try{di.writeFileSync(n,t,{encoding:"utf8",mode:384});let i;for(let a=0;a<zJe;a++)try{di.renameSync(n,e);return}catch(s){i=s;let{code:c}=s;if(c==="EPERM"||c==="EBUSY"||c==="EACCES"){if(a<zJe-1){let u=UMr*Math.pow(2,a),l=Date.now()+u;for(;Date.now()<l;)try{di.accessSync(n)}catch{}}continue}break}throw i??new Error("atomicWriteFileSync: rename failed")}finally{try{di.unlinkSync(n)}catch{}try{di.rmdirSync(o)}catch{}}}function FJe(e){return qb.join(e,zMr)}function qJe(e){if(!di.existsSync(e))return{trainingStore:{},tree:GC()};try{let t=di.readFileSync(e,"utf-8");if(!t||t.trim()==="")return{trainingStore:{},tree:GC()};let r=JSON.parse(t);return DJe(r)}catch{return{trainingStore:{},tree:GC()}}}var IG=class extends Error{filePath;lockPath;constructor(t,r,o){super(t),this.name="LockAcquisitionError",this.filePath=r,this.lockPath=o}},qMr={maxRetries:50,baseRetryDelayMs:10,maxRetryDelayMs:500,lockStaleMs:1e4,lockSuffix:".lock"};function WJe(e){try{return process.kill(e,0),!0}catch{return!1}}function WMr(e){return typeof e=="object"&&e!==null&&Object.hasOwn(e,"code")}function UJe(e,t){try{let r=qb.dirname(e);di.existsSync(r)||di.mkdirSync(r,{recursive:!0});let o=di.constants.O_WRONLY|di.constants.O_CREAT|di.constants.O_EXCL,n=di.openSync(e,o,384);return di.writeSync(n,String(t)),di.fsyncSync(n),di.closeSync(n),!0}catch(r){if(WMr(r)&&r.code==="EEXIST")return!1;throw r}}function e$(e){try{let t=di.readFileSync(e,"utf8"),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}}function jMr(e,t){try{e$(e)===t&&di.unlinkSync(e)}catch{}}function GMr(e,t){try{let r=e$(e);if(r===null||!WJe(r))try{return di.unlinkSync(e),!0}catch{return!1}return!1}catch{return!1}}function JMr(e,t,r){let o=Math.min(t*Math.pow(2,e),r),n=o*.2*Math.random();return Math.floor(o+n)}function VMr(e){if(e<=0)return;let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)}function BMr(e,t,r){let o=e+t.lockSuffix;return UJe(o,r)&&e$(o)===r?{lockPath:o,pid:r,acquiredAt:Date.now()}:(GMr(o,t.lockStaleMs),UJe(o,r)&&e$(o)===r?{lockPath:o,pid:r,acquiredAt:Date.now()}:null)}function KMr(e,t){let r=e+t.lockSuffix,o=e$(r),n=o!==null?WJe(o)?`alive (PID ${o})`:`dead (PID ${o})`:"unknown";return new IG(`Failed to acquire lock for ${e}. Lock holder: ${n}.`,e,r)}function HMr(e,t={}){let r={...qMr,...t},{pid:o}=process;for(let n=0;n<r.maxRetries;n++){let i=BMr(e,r,o);if(i)return i;n<r.maxRetries-1&&VMr(JMr(n,r.baseRetryDelayMs,r.maxRetryDelayMs))}throw KMr(e,r)}function XMr(e){jMr(e.lockPath,e.pid)}function YMr(e,t,r){let o=HMr(e,r);try{return t()}finally{XMr(o)}}function __(e,t){let r=FJe(e);return YMr(r,()=>{let o=qJe(r),n=t(o),i=qb.dirname(r);return di.existsSync(i)||di.mkdirSync(i,{recursive:!0}),FMr(r,$Je(o)),n})}function xi(e){return qJe(FJe(e))}function hR(e,t){return __(e,r=>(r.tree.principles[t.id]=t,r.tree.lastUpdated=new Date().toISOString(),t))}function $u(e,t,r){return __(e,o=>{let n=o.tree.principles[t];if(!n)throw new Error(`Cannot update missing principle "${t}".`);let i={...n,...r,id:t,ruleIds:r.ruleIds?Gh(r.ruleIds):n.ruleIds,conflictsWithPrincipleIds:r.conflictsWithPrincipleIds?Gh(r.conflictsWithPrincipleIds):n.conflictsWithPrincipleIds,derivedFromPainIds:r.derivedFromPainIds?Gh(r.derivedFromPainIds):n.derivedFromPainIds};return o.tree.principles[t]=i,i})}function t$(e,t,r){return __(e,o=>{let n={...r,principleId:t};return o.tree.metrics[t]=n,n})}function ble(e,t){return __(e,r=>{let o=r.tree.principles[t.principleId];if(!o)throw new Error(`Cannot create rule "${t.id}" for missing principle "${t.principleId}".`);if(Object.hasOwn(r.tree.rules,t.id))throw new Error(`Cannot create rule "${t.id}": it already exists. Use updateRule instead.`);let n={...t,implementationIds:Gh(t.implementationIds)};return r.tree.rules[n.id]=n,o.ruleIds=Gh([...o.ruleIds,n.id]),n})}function Sle(e,t){return __(e,r=>{let o=r.tree.rules[t.ruleId];if(!o)throw new Error(`Cannot create implementation "${t.id}" for missing rule "${t.ruleId}".`);if(Object.hasOwn(r.tree.implementations,t.id))throw new Error(`Cannot create implementation "${t.id}": it already exists. Use updateImplementation instead.`);return r.tree.implementations[t.id]=t,o.implementationIds=Gh([...o.implementationIds,t.id]),t})}function vle(e,t,r){return __(e,o=>{let n=o.tree.rules[t];if(!n)throw new Error(`Cannot update missing rule "${t}".`);let i=r.principleId??n.principleId,a=o.tree.principles[i];if(!a)throw new Error(`Cannot move rule "${t}" to missing principle "${i}".`);let s={...n,...r,id:t,principleId:i,implementationIds:r.implementationIds?Gh(r.implementationIds):n.implementationIds};if(n.principleId!==i){let c=o.tree.principles[n.principleId];c&&(c.ruleIds=c.ruleIds.filter(u=>u!==t)),a.ruleIds=Gh([...a.ruleIds,t])}return o.tree.rules[t]=s,s})}function Tle(e,t){return __(e,r=>{let o=r.tree.rules[t];if(!o)return;let n=r.tree.principles[o.principleId];n&&(n.ruleIds=n.ruleIds.filter(a=>a!==t));let i=Gh([...o.implementationIds,...Object.values(r.tree.implementations).filter(a=>a.ruleId===t).map(a=>a.id)]);for(let a of i)delete r.tree.implementations[a];return delete r.tree.rules[t],o})}function Wb(e,t,r){return __(e,o=>{let n=o.tree.implementations[t];if(!n)throw new Error(`Cannot update missing implementation "${t}".`);let i=r.ruleId??n.ruleId,a=o.tree.rules[i];if(!a)throw new Error(`Cannot move implementation "${t}" to missing rule "${i}".`);let s={...n,...r,id:t,ruleId:i};if(n.ruleId!==i){let c=o.tree.rules[n.ruleId];c&&(c.implementationIds=c.implementationIds.filter(u=>u!==t)),a.implementationIds=Gh([...a.implementationIds,t])}return o.tree.implementations[t]=s,s})}function jJe(e,t){let r=xi(e),o=r.tree.rules[t];return o?o.implementationIds.map(n=>r.tree.implementations[n]).filter(n=>n!==void 0):[]}function Ele(e,t){let r=xi(e),o=r.tree.principles[t];if(o)return{principle:o,rules:o.ruleIds.map(n=>r.tree.rules[n]).filter(n=>n!==void 0).map(n=>({rule:n,implementations:n.implementationIds.map(i=>r.tree.implementations[i]).filter(i=>i!==void 0)}))}}var GJe={candidate:["active","archived"],active:["disabled","archived"],disabled:["active","archived"],archived:[]};function JJe(e,t){return GJe[e]?.includes(t)??!1}function CG(e){return GJe[e]??[]}function $m(e,t,r){return __(e,o=>{let n=o.tree.implementations[t];if(!n)throw new Error(`Implementation not found: ${t}`);let i=n.lifecycleState??"candidate";if(!JJe(i,r)){let s=CG(i);throw new Error(`Invalid lifecycle transition: ${i} -> ${r}. Allowed: ${s.length>0?s.join(", "):"none (terminal state)"}`)}let a={...n,lifecycleState:r,updatedAt:new Date().toISOString()};return o.tree.implementations[t]=a,a})}function Rle(e,t){return jJe(e,t).find(o=>o.lifecycleState==="active")??null}function r$(e,t){__(e,r=>{t(r.trainingStore)})}var Rx=class{options;_connection;_taskStore;_runStore;_commitStore;_candidateStore;_artifactStore;_piArtifactStore;leaseManager;retryPolicy;recoverySweep;emitter;_initialized=!1;constructor(t){this.options=t,this.emitter=t.emitter??ks}async initialize(){this._initialized||(this._connection=new Tl({workspaceDir:this.options.workspaceDir,readonly:this.options.readonly}),this._taskStore=new NC(this._connection),this._runStore=new Tx(this._connection),this._commitStore=new TG(this._connection),this._candidateStore=new RG(this._connection),this._artifactStore=new wG(this._connection),this._piArtifactStore=new Z2(this._connection),this.options.readonly||(this.retryPolicy=new qC(this.options.retryPolicyConfig),this.leaseManager=new FC(this._taskStore,this._runStore,this._connection,{taskStore:this._taskStore,runStore:this._runStore,connection:this._connection,emitter:this.emitter}),this.recoverySweep=new WC(this._taskStore,this.leaseManager,this.retryPolicy,this._connection,this.emitter)),this._initialized=!0)}get isInitialized(){return this._initialized}get workspaceDir(){return this.options.workspaceDir}get connection(){return this.assertInitialized(),this._connection}get taskStore(){return this.assertInitialized(),this._taskStore}get runStore(){return this.assertInitialized(),this._runStore}get piArtifactStore(){return this.assertInitialized(),this._piArtifactStore}assertInitialized(){if(!this._initialized)throw new Error("RuntimeStateManager has not been initialized \u2014 call initialize() first")}async close(){this._connection&&this._connection.close(),this._initialized=!1}async createTask(t){return this.assertInitialized(),this._taskStore.createTask(t)}async getTask(t){return this.assertInitialized(),this._taskStore.getTask(t)}async listTasks(t){return this.assertInitialized(),this._taskStore.listTasks(t)}async updateTask(t,r){return this.assertInitialized(),this._taskStore.updateTask(t,r)}async deleteTask(t){return this.assertInitialized(),this._taskStore.deleteTask(t)}async getRunsByTask(t){return this.assertInitialized(),this._runStore.listRunsByTask(t)}async getValidRunsByTaskTolerant(t){return this.assertInitialized(),this._runStore.listValidRunsByTaskTolerant(t)}async getRun(t){return this.assertInitialized(),this._runStore.getRun(t)}async acquireLease(t){return this.assertInitialized(),this.leaseManager.acquireLease(t)}async releaseLease(t,r){return this.assertInitialized(),this.leaseManager.releaseLease(t,r)}async renewLease(t,r,o){return this.assertInitialized(),this.leaseManager.renewLease(t,r,o)}async forceExpireLease(t){return this.assertInitialized(),this.leaseManager.forceExpire(t)}isLeaseExpired(t){return this.leaseManager.isLeaseExpired(t)}async markTaskSucceeded(t,r){this.assertInitialized();let o=new Date().toISOString(),n=await this._taskStore.updateTask(t,{status:"succeeded",leaseOwner:null,leaseExpiresAt:null,lastError:null,resultRef:r??null}),{runs:i,degradedRuns:a}=await this._runStore.listValidRunsByTaskTolerant(t);this.observeMalformedRuns(t,a,"markTaskSucceeded");let s=i[i.length-1];return s&&await this._runStore.updateRun(s.runId,{executionStatus:"succeeded",endedAt:o,reason:"task_completed",outputRef:r??void 0}),this.emitter.emitTelemetry({eventType:"task_succeeded",traceId:t,timestamp:o,sessionId:n.leaseOwner??"system",payload:{taskId:t,resultRef:n.resultRef}}),n}async markTaskFailed(t,r,o){this.assertInitialized();let n=new Date().toISOString(),i=await this._taskStore.updateTask(t,{status:"failed",leaseOwner:null,leaseExpiresAt:null,lastError:r}),{runs:a,degradedRuns:s}=await this._runStore.listValidRunsByTaskTolerant(t);this.observeMalformedRuns(t,s,"markTaskFailed");let c=a[a.length-1];return c&&await this._runStore.updateRun(c.runId,{executionStatus:"failed",endedAt:n,reason:o??"task_failed",errorCategory:r}),this.emitter.emitTelemetry({eventType:"task_failed",traceId:t,timestamp:n,sessionId:i.leaseOwner??"system",payload:{taskId:t,lastError:r,attemptCount:i.attemptCount}}),i}async markTaskRetryWait(t,r,o){this.assertInitialized();let n=new Date().toISOString(),a=(await this._taskStore.getTask(t))?.attemptCount??0,s=this.retryPolicy.calculateBackoff(a+1),c=new Date(Date.now()+s).toISOString(),u=await this._taskStore.updateTask(t,{status:"retry_wait",leaseOwner:null,leaseExpiresAt:c,lastError:r}),{runs:l,degradedRuns:m}=await this._runStore.listValidRunsByTaskTolerant(t);this.observeMalformedRuns(t,m,"markTaskRetryWait");let p=l[l.length-1];return p&&await this._runStore.updateRun(p.runId,{executionStatus:"failed",endedAt:n,reason:o??"task_retry",errorCategory:r}),this.emitter.emitTelemetry({eventType:"task_retried",traceId:t,timestamp:n,sessionId:u.leaseOwner??"system",payload:{taskId:t,errorCategory:r,attemptCount:u.attemptCount}}),u}async updateRunOutput(t,r){this.assertInitialized();let o=new Date().toISOString(),n=await this._runStore.updateRun(t,{outputPayload:r,executionStatus:"succeeded",endedAt:o,reason:"output_captured"});return this.emitter.emitTelemetry({eventType:"run_completed",traceId:n.taskId,timestamp:o,sessionId:"runner",payload:{runId:t,taskId:n.taskId,outputPayloadSize:r.length}}),n}observeMalformedRuns(t,r,o){r.length!==0&&this.emitter.emitTelemetry({eventType:"degradation_triggered",traceId:t,timestamp:new Date().toISOString(),sessionId:"runtime-state-manager",payload:{component:"RuntimeStateManager",caller:o,trigger:"malformed_historical_run_rows",degradedCount:r.length,runIds:r.map(n=>n.runId),errors:r.map(n=>n.error),nextAction:"Quarantine malformed run rows: pd runtime internalization integrity-repair --confirm"}})}async runRecoverySweep(){return this.assertInitialized(),this.recoverySweep.recoverAll()}async detectExpiredLeases(){return this.assertInitialized(),this.recoverySweep.detectExpiredLeases()}async recoverTask(t){return this.assertInitialized(),this.recoverySweep.recoverTask(t)}async updateTaskDiagnosticJson(t,r){this.assertInitialized(),await this._taskStore.updateTask(t,{diagnosticJson:r})}getRetryPolicy(){return this.retryPolicy}async getCommitByTaskId(t){return this.assertInitialized(),this._commitStore.getCommitByTaskId(t)}async getCandidatesByTaskId(t){return this.assertInitialized(),this._candidateStore.getCandidatesByTaskId(t)}async getCandidate(t){return this.assertInitialized(),this._candidateStore.getCandidate(t)}async updateCandidateStatus(t,r){return this.assertInitialized(),this._candidateStore.updateCandidateStatus(t,r)}async transitionCandidateStatus(t,r,o){return this.assertInitialized(),this._candidateStore.transitionCandidateStatus(t,r,o)}async archivePrinciple(t){this.assertInitialized();let r=VJe.join(this.options.workspaceDir,".state");try{$u(r,t,{status:"archived",updatedAt:new Date().toISOString()})}catch{return!1}return!0}async getArtifact(t){return this.assertInitialized(),this._artifactStore.getArtifact(t)}async getArtifactWithCandidates(t){return this.assertInitialized(),this._artifactStore.getArtifactWithCandidates(t)}};var zu;(function(e){e.Idle="idle",e.BuildingContext="building_context",e.CreatingRun="creating_run",e.Invoking="invoking",e.Polling="polling",e.FetchingOutput="fetching_output",e.Validating="validating",e.Committing="committing",e.Completed="completed",e.Failed="failed",e.RetryWaiting="retry_waiting"})(zu||(zu={}));Du();var o$=class{rootCauseRunner;distillerRunner;routerRunner;stateManager;perStageTimeoutMs;retryPolicy;constructor(t){this.rootCauseRunner=t.rootCauseRunner,this.distillerRunner=t.distillerRunner,this.routerRunner=t.routerRunner,this.stateManager=t.stateManager,this.perStageTimeoutMs=t.perStageTimeoutMs??3e5,this.retryPolicy=t.retryPolicy??t.stateManager.getRetryPolicy()}async run(t){try{await this.stateManager.acquireLease({taskId:t,owner:"split-diagnostician-orchestrator",runtimeKind:"openclaw"})}catch(h){let f=h instanceof wt&&h.category==="lease_conflict",g=h instanceof Error?h.message:String(h);return{status:"failed",taskId:t,errorCategory:f?"lease_conflict":"execution_failed",failureReason:`Parent task ${t} lease acquisition failed: ${g}`,attemptCount:1}}let r=`diag_rootcause-${t}`;await this.ensureSubTask({taskId:r,taskKind:"diag_rootcause",parentTaskId:t,dependencyTaskIds:[]});let o=await this.runStageWithRetry({taskId:r,runFn:h=>this.rootCauseRunner.run(h),stageLabel:"A (rootcause)"});if(o.status!=="succeeded")return this.failParent(t,o);let n=`diag_distiller-${t}`;await this.ensureSubTask({taskId:n,taskKind:"diag_distiller",parentTaskId:t,dependencyTaskIds:[r]});let i=await this.runStageWithRetry({taskId:n,runFn:h=>this.distillerRunner.run(h),stageLabel:"B (distiller)"});if(i.status!=="succeeded")return this.failParent(t,i);let a=`diag_router-${t}`;await this.ensureSubTask({taskId:a,taskKind:"diag_router",parentTaskId:t,dependencyTaskIds:[r,n]});let s=await this.stateManager.getTask(a),c;if(s&&s.status==="succeeded"){let g=(await this.stateManager.getRunsByTask(a)).find(T=>T.executionStatus==="succeeded")?.outputPayload,y=g?JSON.parse(g):void 0;c={status:"succeeded",taskId:a,attemptCount:s.attemptCount,contextHash:"",output:y}}else c=await this.runStageWithRetry({taskId:a,runFn:h=>this.routerRunner.run(h),stageLabel:"C (router)"});if(c.status!=="succeeded")return this.failParent(t,c);let u=c.resultRef??`split-pipeline://${t}`;try{await this.stateManager.markTaskSucceeded(t,u)}catch{}let l=await this.stateManager.getTask(r),m=await this.stateManager.getTask(n),p=await this.stateManager.getTask(a);return{status:"succeeded",taskId:t,contextHash:c.contextHash,output:c.output,attemptCount:(l?.attemptCount??o.attemptCount)+(m?.attemptCount??i.attemptCount)+(p?.attemptCount??c.attemptCount)}}async ensureSubTask(t){let{taskId:r,taskKind:o,parentTaskId:n,dependencyTaskIds:i}=t,a=await this.stateManager.getTask(r);if(!a){await this.stateManager.createTask({taskId:r,taskKind:o,inputRef:n,status:"pending",attemptCount:0,maxAttempts:3,diagnosticJson:mR({dependencyTaskIds:i,channel:"prompt",timeoutMs:this.perStageTimeoutMs,inputArtifactRefs:[],outputArtifactRefs:[]})});return}if(a.status==="retry_wait")await this.stateManager.updateTask(r,{status:"pending",lastError:null});else if(a.status==="failed"){if(!this.retryPolicy.shouldRetry(a))return;await this.stateManager.updateTask(r,{status:"pending",lastError:null})}}async runStageWithRetry(t){let{taskId:r,runFn:o,stageLabel:n}=t,i=10,a=0;for(;;){a++;let s=await o(r);if(s.status==="succeeded"||s.status==="failed")return s;if(s.status==="retried"){let c=await this.stateManager.getTask(r);if(c&&!this.retryPolicy.shouldRetry(c))return{status:"failed",taskId:s.taskId,errorCategory:s.errorCategory??"max_attempts_exceeded",failureReason:`Stage ${n}: attemptCount (${c.attemptCount}) >= maxAttempts (${c.maxAttempts}). ${s.failureReason??""}`,attemptCount:s.attemptCount};if(a>=i)return{status:"failed",taskId:s.taskId,errorCategory:s.errorCategory??"max_attempts_exceeded",failureReason:`Stage ${n}: max retry loop iterations (${i}) exceeded. ${s.failureReason??""}`,attemptCount:s.attemptCount};let u=c?this.retryPolicy.calculateBackoff(c.attemptCount):3e4;await new Promise(l=>setTimeout(l,u));continue}return{status:"failed",taskId:s.taskId,errorCategory:s.errorCategory??"execution_failed",failureReason:`Stage ${n}: unexpected status '${s.status}'`,attemptCount:s.attemptCount}}}async failParent(t,r){try{await this.stateManager.markTaskFailed(t,r.errorCategory??"execution_failed")}catch{}return{status:r.status==="retried"?"failed":r.status,taskId:t,errorCategory:r.errorCategory,failureReason:r.failureReason??`Stage failed for parent task ${t}`,attemptCount:r.attemptCount}}};Du();function BJe(e,t){if(e===void 0||!Number.isFinite(e))return t;if(e<0)return 0;let r=Math.floor(e);return r>3?3:r}function zm(e,t=500){if(!e)return"";if(e.length<=t)return e;let r=Math.max(0,t-3);return e.slice(0,r)+"..."}function ec(e,t=500){try{if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e=="bigint")return zm(`${e}n`,t);let r=JSON.stringify(e);return zm(r,t)}catch{if(typeof e=="object"&&e!==null){let r=e.constructor;return zm(`[unserializable: ${r?.name??"Object"}]`,t)}return zm(String(e),t)}}var wle=["taskId","sourcePainId","sourceTaskId","sourceRunIds","sourceArtifactId","sourceRefs"],b5n=new Set(wle);function KJe(e,t){let r={...t};for(let o of wle)Object.hasOwn(e,o)&&(r[o]=e[o]);return r}function AG(e){let t={...e};for(let r of wle)delete t[r];return t}function OG(e,t,r){let o=typeof r=="string"?zm(r,100):r==null?String(r):ec(r,100);return{path:e,expected:t,actualPreview:o}}function Jh(e){let t=/```(?:json)?\s*\n?([\s\S]*?)\n?```/.exec(e);if(t){let[,i]=t;if(i)try{let a=JSON.parse(i.trim());return typeof a=="object"&&a!==null&&!Array.isArray(a)?a:null}catch{}}let r=e.trimStart();if(r.length>0&&r[0]==="["){let i=0,a=!1,s=!1,c=-1;for(let u=0;u<r.length;u++){let l=r[u];if(s){s=!1;continue}if(l==="\\"&&a){s=!0;continue}if(l==='"'){a=!a;continue}if(!a&&(l==="["||l==="{"?i++:(l==="]"||l==="}")&&i--,i===0)){c=u;break}}if(c>=0)try{let u=JSON.parse(r.slice(0,c+1));if(Array.isArray(u))return null;if(typeof u=="object"&&u!==null)return u}catch{}}let o=0,n=-1;for(let i=0;i<e.length;i++){let a=e[i];if(a==="{")o===0&&(n=i),o++;else if(a==="}"&&(o--,o===0&&n>=0))try{let s=JSON.parse(e.slice(n,i+1));if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s;n=-1}catch{n=-1}}return null}function HJe(e){let t=-1,r=0,o=-1;for(let u=0;u<e.length;u++){let l=e[u];if(l==="{")r===0&&(t=u),r++;else if(l==="}"&&(r--,r===0&&t>=0)){o=u;break}}if(t<0||o<0)return null;let n=e.slice(t,o+1);try{let u=JSON.parse(n);if(typeof u=="object"&&u!==null&&!Array.isArray(u))return u}catch{}let i=[...n],a=!1,s=!1,c="";for(let u=0;u<i.length;u++){let l=i[u];if(s){c+=l,s=!1;continue}if(l==="\\"&&a){c+=l,s=!0;continue}if(l==='"'){if(!a)a=!0,c+=l;else{let m=n.slice(u+1).trimStart();m.startsWith(":")||m.startsWith(",")||m.startsWith("}")||m.startsWith("]")||m.length===0?(a=!1,c+=l):c+='\\"'}continue}c+=l}try{let u=JSON.parse(c);if(typeof u=="object"&&u!==null&&!Array.isArray(u))return u}catch{}return null}var PG={maxRepairAttempts:3,maxErrorsInPrompt:10,maxErrorChars:200,maxRawOutputChars:2e3};function NG(e){if(!e||typeof e!="object")return"(unknown schema)";if(e.type==="object"&&e.properties){let t=Array.isArray(e.required)?new Set(e.required):new Set,r=[],o=e.properties;for(let[n,i]of Object.entries(o)){if(typeof i!="object"||i===null)continue;let s=t.has(n)?" (required)":" (optional)";if(i.type==="array"){let u=i.items?.type??"unknown";r.push(` ${n}: ${u}[]${s}`)}else if(i.enum){let c=i.enum.map(String).join(" | ");r.push(` ${n}: enum(${c})${s}`)}else if(i.type){let c=typeof i.type=="string"?i.type:"unknown",u=[];typeof i.minimum=="number"&&u.push(`min: ${i.minimum}`),typeof i.maximum=="number"&&u.push(`max: ${i.maximum}`),typeof i.minLength=="number"&&u.push(`minLength: ${i.minLength}`);let l=u.length>0?` {${u.join(", ")}}`:"";r.push(` ${n}: ${c}${l}${s}`)}else(i.anyOf||i.allOf||i.oneOf)&&r.push(` ${n}: union${s}`)}return r.join(`
|
|
830
|
+
`).run(r,n,t).changes>0}};import*as VJe from"path";import*as di from"fs";import*as qb from"path";var AMr=["deterministic","weak_heuristic","manual_only"],OMr=["prompt_only","needs_training","in_training","deployed_pending_eval","internalized","regressed"];function Dm(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jC(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function xle(e,t){return typeof e!="number"||!Number.isFinite(e)?t.fallback:Math.max(t.min,Math.min(t.max,e))}function kG(e,t){return typeof e!="number"||!Number.isFinite(e)?t.fallback:Math.max(t.min,Math.min(t.max,Math.round(e)))}function Gh(e){return Array.from(new Set(e))}function PMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))r===lR||!Dm(o)||o.principleId===r&&(t[r]={principleId:r,evaluability:AMr.includes(o.evaluability)?o.evaluability:"manual_only",applicableOpportunityCount:kG(o.applicableOpportunityCount,{min:0,max:1/0,fallback:0}),observedViolationCount:kG(o.observedViolationCount,{min:0,max:1/0,fallback:0}),complianceRate:xle(o.complianceRate,{min:0,max:1,fallback:0}),violationTrend:xle(o.violationTrend,{min:-1,max:1,fallback:0}),generatedSampleCount:kG(o.generatedSampleCount,{min:0,max:1/0,fallback:0}),approvedSampleCount:kG(o.approvedSampleCount,{min:0,max:1/0,fallback:0}),includedTrainRunIds:jC(o.includedTrainRunIds),deployedCheckpointIds:jC(o.deployedCheckpointIds),lastEvalScore:typeof o.lastEvalScore=="number"&&Number.isFinite(o.lastEvalScore)?xle(o.lastEvalScore,{min:0,max:1,fallback:0}):void 0,internalizationStatus:OMr.includes(o.internalizationStatus)?o.internalizationStatus:"prompt_only"});return t}function NMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))Dm(o)&&(t[r]={...o,id:r,ruleIds:jC(o.ruleIds),conflictsWithPrincipleIds:jC(o.conflictsWithPrincipleIds),derivedFromPainIds:jC(o.derivedFromPainIds)});return t}function MMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))Dm(o)&&(t[r]={...o,id:r,principleId:typeof o.principleId=="string"?o.principleId:"",implementationIds:jC(o.implementationIds)});return t}function LMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))!Dm(o)||typeof o.ruleId!="string"||(t[r]={...o,id:r,ruleId:o.ruleId});return t}function DMr(e){if(!Dm(e))return{};let t={};for(let[r,o]of Object.entries(e))Dm(o)&&(t[r]={...o,principleId:typeof o.principleId=="string"?o.principleId:r});return t}function GC(){return{principles:{},rules:{},implementations:{},metrics:{},lastUpdated:new Date(0).toISOString()}}function $Mr(e){return Dm(e)?{principles:NMr(e.principles),rules:MMr(e.rules),implementations:LMr(e.implementations),metrics:DMr(e.metrics),lastUpdated:typeof e.lastUpdated=="string"?e.lastUpdated:new Date(0).toISOString()}:GC()}function DJe(e){if(!Dm(e))return{trainingStore:{},tree:GC()};let t=e.trainingStore??e,r=e[lR]??e.tree;return{trainingStore:PMr(t),tree:$Mr(r)}}function $Je(e){return JSON.stringify({...e.trainingStore,[lR]:{...e.tree,lastUpdated:new Date().toISOString()}},null,2)}var zMr="principle_training_state.json",zJe=3,UMr=50;function FMr(e,t){let r=qb.dirname(e),o=di.mkdtempSync(qb.join(r,".pd-write-")),n=qb.join(o,"tmp");try{di.writeFileSync(n,t,{encoding:"utf8",mode:384});let i;for(let a=0;a<zJe;a++)try{di.renameSync(n,e);return}catch(s){i=s;let{code:c}=s;if(c==="EPERM"||c==="EBUSY"||c==="EACCES"){if(a<zJe-1){let u=UMr*Math.pow(2,a),l=Date.now()+u;for(;Date.now()<l;)try{di.accessSync(n)}catch{}}continue}break}throw i??new Error("atomicWriteFileSync: rename failed")}finally{try{di.unlinkSync(n)}catch{}try{di.rmdirSync(o)}catch{}}}function FJe(e){return qb.join(e,zMr)}function qJe(e){if(!di.existsSync(e))return{trainingStore:{},tree:GC()};try{let t=di.readFileSync(e,"utf-8");if(!t||t.trim()==="")return{trainingStore:{},tree:GC()};let r=JSON.parse(t);return DJe(r)}catch{return{trainingStore:{},tree:GC()}}}var IG=class extends Error{filePath;lockPath;constructor(t,r,o){super(t),this.name="LockAcquisitionError",this.filePath=r,this.lockPath=o}},qMr={maxRetries:50,baseRetryDelayMs:10,maxRetryDelayMs:500,lockStaleMs:1e4,lockSuffix:".lock"};function WJe(e){try{return process.kill(e,0),!0}catch{return!1}}function WMr(e){return typeof e=="object"&&e!==null&&Object.hasOwn(e,"code")}function UJe(e,t){try{let r=qb.dirname(e);di.existsSync(r)||di.mkdirSync(r,{recursive:!0});let o=di.constants.O_WRONLY|di.constants.O_CREAT|di.constants.O_EXCL,n=di.openSync(e,o,384);return di.writeSync(n,String(t)),di.fsyncSync(n),di.closeSync(n),!0}catch(r){if(WMr(r)&&r.code==="EEXIST")return!1;throw r}}function e$(e){try{let t=di.readFileSync(e,"utf8"),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}}function jMr(e,t){try{e$(e)===t&&di.unlinkSync(e)}catch{}}function GMr(e,t){try{let r=e$(e);if(r===null||!WJe(r))try{return di.unlinkSync(e),!0}catch{return!1}return!1}catch{return!1}}function JMr(e,t,r){let o=Math.min(t*Math.pow(2,e),r),n=o*.2*Math.random();return Math.floor(o+n)}function VMr(e){if(e<=0)return;let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)}function BMr(e,t,r){let o=e+t.lockSuffix;return UJe(o,r)&&e$(o)===r?{lockPath:o,pid:r,acquiredAt:Date.now()}:(GMr(o,t.lockStaleMs),UJe(o,r)&&e$(o)===r?{lockPath:o,pid:r,acquiredAt:Date.now()}:null)}function KMr(e,t){let r=e+t.lockSuffix,o=e$(r),n=o!==null?WJe(o)?`alive (PID ${o})`:`dead (PID ${o})`:"unknown";return new IG(`Failed to acquire lock for ${e}. Lock holder: ${n}.`,e,r)}function HMr(e,t={}){let r={...qMr,...t},{pid:o}=process;for(let n=0;n<r.maxRetries;n++){let i=BMr(e,r,o);if(i)return i;n<r.maxRetries-1&&VMr(JMr(n,r.baseRetryDelayMs,r.maxRetryDelayMs))}throw KMr(e,r)}function XMr(e){jMr(e.lockPath,e.pid)}function YMr(e,t,r){let o=HMr(e,r);try{return t()}finally{XMr(o)}}function __(e,t){let r=FJe(e);return YMr(r,()=>{let o=qJe(r),n=t(o),i=qb.dirname(r);return di.existsSync(i)||di.mkdirSync(i,{recursive:!0}),FMr(r,$Je(o)),n})}function xi(e){return qJe(FJe(e))}function hR(e,t){return __(e,r=>(r.tree.principles[t.id]=t,r.tree.lastUpdated=new Date().toISOString(),t))}function $u(e,t,r){return __(e,o=>{let n=o.tree.principles[t];if(!n)throw new Error(`Cannot update missing principle "${t}".`);let i={...n,...r,id:t,ruleIds:r.ruleIds?Gh(r.ruleIds):n.ruleIds,conflictsWithPrincipleIds:r.conflictsWithPrincipleIds?Gh(r.conflictsWithPrincipleIds):n.conflictsWithPrincipleIds,derivedFromPainIds:r.derivedFromPainIds?Gh(r.derivedFromPainIds):n.derivedFromPainIds};return o.tree.principles[t]=i,i})}function t$(e,t,r){return __(e,o=>{let n={...r,principleId:t};return o.tree.metrics[t]=n,n})}function ble(e,t){return __(e,r=>{let o=r.tree.principles[t.principleId];if(!o)throw new Error(`Cannot create rule "${t.id}" for missing principle "${t.principleId}".`);if(Object.hasOwn(r.tree.rules,t.id))throw new Error(`Cannot create rule "${t.id}": it already exists. Use updateRule instead.`);let n={...t,implementationIds:Gh(t.implementationIds)};return r.tree.rules[n.id]=n,o.ruleIds=Gh([...o.ruleIds,n.id]),n})}function Sle(e,t){return __(e,r=>{let o=r.tree.rules[t.ruleId];if(!o)throw new Error(`Cannot create implementation "${t.id}" for missing rule "${t.ruleId}".`);if(Object.hasOwn(r.tree.implementations,t.id))throw new Error(`Cannot create implementation "${t.id}": it already exists. Use updateImplementation instead.`);return r.tree.implementations[t.id]=t,o.implementationIds=Gh([...o.implementationIds,t.id]),t})}function vle(e,t,r){return __(e,o=>{let n=o.tree.rules[t];if(!n)throw new Error(`Cannot update missing rule "${t}".`);let i=r.principleId??n.principleId,a=o.tree.principles[i];if(!a)throw new Error(`Cannot move rule "${t}" to missing principle "${i}".`);let s={...n,...r,id:t,principleId:i,implementationIds:r.implementationIds?Gh(r.implementationIds):n.implementationIds};if(n.principleId!==i){let c=o.tree.principles[n.principleId];c&&(c.ruleIds=c.ruleIds.filter(u=>u!==t)),a.ruleIds=Gh([...a.ruleIds,t])}return o.tree.rules[t]=s,s})}function Tle(e,t){return __(e,r=>{let o=r.tree.rules[t];if(!o)return;let n=r.tree.principles[o.principleId];n&&(n.ruleIds=n.ruleIds.filter(a=>a!==t));let i=Gh([...o.implementationIds,...Object.values(r.tree.implementations).filter(a=>a.ruleId===t).map(a=>a.id)]);for(let a of i)delete r.tree.implementations[a];return delete r.tree.rules[t],o})}function Wb(e,t,r){return __(e,o=>{let n=o.tree.implementations[t];if(!n)throw new Error(`Cannot update missing implementation "${t}".`);let i=r.ruleId??n.ruleId,a=o.tree.rules[i];if(!a)throw new Error(`Cannot move implementation "${t}" to missing rule "${i}".`);let s={...n,...r,id:t,ruleId:i};if(n.ruleId!==i){let c=o.tree.rules[n.ruleId];c&&(c.implementationIds=c.implementationIds.filter(u=>u!==t)),a.implementationIds=Gh([...a.implementationIds,t])}return o.tree.implementations[t]=s,s})}function jJe(e,t){let r=xi(e),o=r.tree.rules[t];return o?o.implementationIds.map(n=>r.tree.implementations[n]).filter(n=>n!==void 0):[]}function Ele(e,t){let r=xi(e),o=r.tree.principles[t];if(o)return{principle:o,rules:o.ruleIds.map(n=>r.tree.rules[n]).filter(n=>n!==void 0).map(n=>({rule:n,implementations:n.implementationIds.map(i=>r.tree.implementations[i]).filter(i=>i!==void 0)}))}}var GJe={candidate:["active","archived"],active:["disabled","archived"],disabled:["active","archived"],archived:[]};function JJe(e,t){return GJe[e]?.includes(t)??!1}function CG(e){return GJe[e]??[]}function $m(e,t,r){return __(e,o=>{let n=o.tree.implementations[t];if(!n)throw new Error(`Implementation not found: ${t}`);let i=n.lifecycleState??"candidate";if(!JJe(i,r)){let s=CG(i);throw new Error(`Invalid lifecycle transition: ${i} -> ${r}. Allowed: ${s.length>0?s.join(", "):"none (terminal state)"}`)}let a={...n,lifecycleState:r,updatedAt:new Date().toISOString()};return o.tree.implementations[t]=a,a})}function Rle(e,t){return jJe(e,t).find(o=>o.lifecycleState==="active")??null}function r$(e,t){__(e,r=>{t(r.trainingStore)})}var Rx=class{options;_connection;_taskStore;_runStore;_commitStore;_candidateStore;_artifactStore;_piArtifactStore;leaseManager;retryPolicy;recoverySweep;emitter;_initialized=!1;constructor(t){this.options=t,this.emitter=t.emitter??ks}async initialize(){this._initialized||(this._connection=new Tl({workspaceDir:this.options.workspaceDir,readonly:this.options.readonly}),this._taskStore=new NC(this._connection),this._runStore=new Tx(this._connection),this._commitStore=new TG(this._connection),this._candidateStore=new RG(this._connection),this._artifactStore=new wG(this._connection),this._piArtifactStore=new Z2(this._connection),this.options.readonly||(this.retryPolicy=new qC(this.options.retryPolicyConfig),this.leaseManager=new FC(this._taskStore,this._runStore,this._connection,{taskStore:this._taskStore,runStore:this._runStore,connection:this._connection,emitter:this.emitter}),this.recoverySweep=new WC(this._taskStore,this.leaseManager,this.retryPolicy,this._connection,this.emitter)),this._initialized=!0)}get isInitialized(){return this._initialized}get workspaceDir(){return this.options.workspaceDir}get connection(){return this.assertInitialized(),this._connection}get taskStore(){return this.assertInitialized(),this._taskStore}get runStore(){return this.assertInitialized(),this._runStore}get piArtifactStore(){return this.assertInitialized(),this._piArtifactStore}assertInitialized(){if(!this._initialized)throw new Error("RuntimeStateManager has not been initialized \u2014 call initialize() first")}async close(){this._connection&&this._connection.close(),this._initialized=!1}async createTask(t){return this.assertInitialized(),this._taskStore.createTask(t)}async getTask(t){return this.assertInitialized(),this._taskStore.getTask(t)}async listTasks(t){return this.assertInitialized(),this._taskStore.listTasks(t)}async updateTask(t,r){return this.assertInitialized(),this._taskStore.updateTask(t,r)}async deleteTask(t){return this.assertInitialized(),this._taskStore.deleteTask(t)}async getRunsByTask(t){return this.assertInitialized(),this._runStore.listRunsByTask(t)}async getValidRunsByTaskTolerant(t){return this.assertInitialized(),this._runStore.listValidRunsByTaskTolerant(t)}async getRun(t){return this.assertInitialized(),this._runStore.getRun(t)}async acquireLease(t){return this.assertInitialized(),this.leaseManager.acquireLease(t)}async releaseLease(t,r){return this.assertInitialized(),this.leaseManager.releaseLease(t,r)}async renewLease(t,r,o){return this.assertInitialized(),this.leaseManager.renewLease(t,r,o)}async forceExpireLease(t){return this.assertInitialized(),this.leaseManager.forceExpire(t)}isLeaseExpired(t){return this.leaseManager.isLeaseExpired(t)}async markTaskSucceeded(t,r){this.assertInitialized();let o=new Date().toISOString(),n=await this._taskStore.updateTask(t,{status:"succeeded",leaseOwner:null,leaseExpiresAt:null,lastError:null,resultRef:r??null}),{runs:i,degradedRuns:a}=await this._runStore.listValidRunsByTaskTolerant(t);this.observeMalformedRuns(t,a,"markTaskSucceeded");let s=i[i.length-1];return s&&await this._runStore.updateRun(s.runId,{executionStatus:"succeeded",endedAt:o,reason:"task_completed",outputRef:r??void 0}),this.emitter.emitTelemetry({eventType:"task_succeeded",traceId:t,timestamp:o,sessionId:n.leaseOwner??"system",payload:{taskId:t,resultRef:n.resultRef}}),n}async markTaskFailed(t,r,o){this.assertInitialized();let n=new Date().toISOString(),i=await this._taskStore.updateTask(t,{status:"failed",leaseOwner:null,leaseExpiresAt:null,lastError:r}),{runs:a,degradedRuns:s}=await this._runStore.listValidRunsByTaskTolerant(t);this.observeMalformedRuns(t,s,"markTaskFailed");let c=a[a.length-1];return c&&await this._runStore.updateRun(c.runId,{executionStatus:"failed",endedAt:n,reason:o??"task_failed",errorCategory:r}),this.emitter.emitTelemetry({eventType:"task_failed",traceId:t,timestamp:n,sessionId:i.leaseOwner??"system",payload:{taskId:t,lastError:r,attemptCount:i.attemptCount}}),i}async markTaskRetryWait(t,r,o){this.assertInitialized();let n=new Date().toISOString(),a=(await this._taskStore.getTask(t))?.attemptCount??0,s=this.retryPolicy.calculateBackoff(a+1),c=new Date(Date.now()+s).toISOString(),u=await this._taskStore.updateTask(t,{status:"retry_wait",leaseOwner:null,leaseExpiresAt:c,lastError:r}),{runs:l,degradedRuns:m}=await this._runStore.listValidRunsByTaskTolerant(t);this.observeMalformedRuns(t,m,"markTaskRetryWait");let p=l[l.length-1];return p&&await this._runStore.updateRun(p.runId,{executionStatus:"failed",endedAt:n,reason:o??"task_retry",errorCategory:r}),this.emitter.emitTelemetry({eventType:"task_retried",traceId:t,timestamp:n,sessionId:u.leaseOwner??"system",payload:{taskId:t,errorCategory:r,attemptCount:u.attemptCount}}),u}async updateRunOutput(t,r){this.assertInitialized();let o=new Date().toISOString(),n=await this._runStore.updateRun(t,{outputPayload:r,executionStatus:"succeeded",endedAt:o,reason:"output_captured"});return this.emitter.emitTelemetry({eventType:"run_completed",traceId:n.taskId,timestamp:o,sessionId:"runner",payload:{runId:t,taskId:n.taskId,outputPayloadSize:r.length}}),n}observeMalformedRuns(t,r,o){r.length!==0&&this.emitter.emitTelemetry({eventType:"degradation_triggered",traceId:t,timestamp:new Date().toISOString(),sessionId:"runtime-state-manager",payload:{component:"RuntimeStateManager",caller:o,trigger:"malformed_historical_run_rows",degradedCount:r.length,runIds:r.map(n=>n.runId),errors:r.map(n=>n.error),nextAction:"Quarantine malformed run rows: pd runtime internalization integrity-repair --confirm"}})}async runRecoverySweep(){return this.assertInitialized(),this.recoverySweep.recoverAll()}async detectExpiredLeases(){return this.assertInitialized(),this.recoverySweep.detectExpiredLeases()}async recoverTask(t){return this.assertInitialized(),this.recoverySweep.recoverTask(t)}async updateTaskDiagnosticJson(t,r){this.assertInitialized(),await this._taskStore.updateTask(t,{diagnosticJson:r})}getRetryPolicy(){return this.retryPolicy}async getCommitByTaskId(t){return this.assertInitialized(),this._commitStore.getCommitByTaskId(t)}async getCandidatesByTaskId(t){return this.assertInitialized(),this._candidateStore.getCandidatesByTaskId(t)}async getCandidate(t){return this.assertInitialized(),this._candidateStore.getCandidate(t)}async updateCandidateStatus(t,r){return this.assertInitialized(),this._candidateStore.updateCandidateStatus(t,r)}async transitionCandidateStatus(t,r,o){return this.assertInitialized(),this._candidateStore.transitionCandidateStatus(t,r,o)}async archivePrinciple(t){this.assertInitialized();let r=VJe.join(this.options.workspaceDir,".state");try{$u(r,t,{status:"archived",updatedAt:new Date().toISOString()})}catch{return!1}return!0}async getArtifact(t){return this.assertInitialized(),this._artifactStore.getArtifact(t)}async getArtifactWithCandidates(t){return this.assertInitialized(),this._artifactStore.getArtifactWithCandidates(t)}};var zu;(function(e){e.Idle="idle",e.BuildingContext="building_context",e.CreatingRun="creating_run",e.Invoking="invoking",e.Polling="polling",e.FetchingOutput="fetching_output",e.Validating="validating",e.Committing="committing",e.Completed="completed",e.Failed="failed",e.RetryWaiting="retry_waiting"})(zu||(zu={}));Du();var o$=class{rootCauseRunner;distillerRunner;routerRunner;stateManager;perStageTimeoutMs;retryPolicy;constructor(t){this.rootCauseRunner=t.rootCauseRunner,this.distillerRunner=t.distillerRunner,this.routerRunner=t.routerRunner,this.stateManager=t.stateManager,this.perStageTimeoutMs=t.perStageTimeoutMs??3e5,this.retryPolicy=t.retryPolicy??t.stateManager.getRetryPolicy()}async run(t){try{await this.stateManager.acquireLease({taskId:t,owner:"split-diagnostician-orchestrator",runtimeKind:"openclaw"})}catch(h){let f=h instanceof wt&&h.category==="lease_conflict",g=h instanceof Error?h.message:String(h);return{status:"failed",taskId:t,errorCategory:f?"lease_conflict":"execution_failed",failureReason:`Parent task ${t} lease acquisition failed: ${g}`,attemptCount:1}}let r=`diag_rootcause-${t}`;await this.ensureSubTask({taskId:r,taskKind:"diag_rootcause",parentTaskId:t,dependencyTaskIds:[]});let o=await this.runStageWithRetry({taskId:r,runFn:h=>this.rootCauseRunner.run(h),stageLabel:"A (rootcause)"});if(o.status!=="succeeded")return this.failParent(t,o);let n=`diag_distiller-${t}`;await this.ensureSubTask({taskId:n,taskKind:"diag_distiller",parentTaskId:t,dependencyTaskIds:[r]});let i=await this.runStageWithRetry({taskId:n,runFn:h=>this.distillerRunner.run(h),stageLabel:"B (distiller)"});if(i.status!=="succeeded")return this.failParent(t,i);let a=`diag_router-${t}`;await this.ensureSubTask({taskId:a,taskKind:"diag_router",parentTaskId:t,dependencyTaskIds:[r,n]});let s=await this.stateManager.getTask(a),c;if(s&&s.status==="succeeded"){let g=(await this.stateManager.getRunsByTask(a)).find(T=>T.executionStatus==="succeeded")?.outputPayload,y=g?JSON.parse(g):void 0;c={status:"succeeded",taskId:a,attemptCount:s.attemptCount,contextHash:"",output:y}}else c=await this.runStageWithRetry({taskId:a,runFn:h=>this.routerRunner.run(h),stageLabel:"C (router)"});if(c.status!=="succeeded")return this.failParent(t,c);let u=c.resultRef??`split-pipeline://${t}`;try{await this.stateManager.markTaskSucceeded(t,u)}catch(h){let f=h instanceof Error?h.message:String(h);return{status:"failed",taskId:t,errorCategory:"storage_unavailable",failureReason:`failed to persist parent task success for ${t}. Persistence error: ${f}`,attemptCount:c.attemptCount}}let l=await this.stateManager.getTask(r),m=await this.stateManager.getTask(n),p=await this.stateManager.getTask(a);return{status:"succeeded",taskId:t,contextHash:c.contextHash,output:c.output,attemptCount:(l?.attemptCount??o.attemptCount)+(m?.attemptCount??i.attemptCount)+(p?.attemptCount??c.attemptCount)}}async ensureSubTask(t){let{taskId:r,taskKind:o,parentTaskId:n,dependencyTaskIds:i}=t,a=await this.stateManager.getTask(r);if(!a){await this.stateManager.createTask({taskId:r,taskKind:o,inputRef:n,status:"pending",attemptCount:0,maxAttempts:3,diagnosticJson:mR({dependencyTaskIds:i,channel:"prompt",timeoutMs:this.perStageTimeoutMs,inputArtifactRefs:[],outputArtifactRefs:[]})});return}if(a.status==="retry_wait")await this.stateManager.updateTask(r,{status:"pending",lastError:null});else if(a.status==="failed"){if(!this.retryPolicy.shouldRetry(a))return;await this.stateManager.updateTask(r,{status:"pending",lastError:null})}}async runStageWithRetry(t){let{taskId:r,runFn:o,stageLabel:n}=t,i=10,a=0;for(;;){a++;let s=await o(r);if(s.status==="succeeded"||s.status==="failed")return s;if(s.status==="retried"){let c=await this.stateManager.getTask(r);if(c&&!this.retryPolicy.shouldRetry(c))return{status:"failed",taskId:s.taskId,errorCategory:s.errorCategory??"max_attempts_exceeded",failureReason:`Stage ${n}: attemptCount (${c.attemptCount}) >= maxAttempts (${c.maxAttempts}). ${s.failureReason??""}`,attemptCount:s.attemptCount};if(a>=i)return{status:"failed",taskId:s.taskId,errorCategory:s.errorCategory??"max_attempts_exceeded",failureReason:`Stage ${n}: max retry loop iterations (${i}) exceeded. ${s.failureReason??""}`,attemptCount:s.attemptCount};let u=c?this.retryPolicy.calculateBackoff(c.attemptCount):3e4;await new Promise(l=>setTimeout(l,u));continue}return{status:"failed",taskId:s.taskId,errorCategory:s.errorCategory??"execution_failed",failureReason:`Stage ${n}: unexpected status '${s.status}'`,attemptCount:s.attemptCount}}}async failParent(t,r){let o=r.errorCategory,n=r.failureReason??`Stage failed for parent task ${t}`;try{await this.stateManager.markTaskFailed(t,o??"execution_failed")}catch(i){let a=i instanceof Error?i.message:String(i);return{status:"failed",taskId:t,errorCategory:"storage_unavailable",failureReason:`failed to persist parent task failure for ${t}. Persistence error: ${a}. Original stage outcome: ${o??"execution_failed"} \u2014 ${n}`,attemptCount:r.attemptCount}}return{status:r.status==="retried"?"failed":r.status,taskId:t,errorCategory:o,failureReason:n,attemptCount:r.attemptCount}}};Du();function BJe(e,t){if(e===void 0||!Number.isFinite(e))return t;if(e<0)return 0;let r=Math.floor(e);return r>3?3:r}function zm(e,t=500){if(!e)return"";if(e.length<=t)return e;let r=Math.max(0,t-3);return e.slice(0,r)+"..."}function ec(e,t=500){try{if(e===void 0)return"undefined";if(e===null)return"null";if(typeof e=="bigint")return zm(`${e}n`,t);let r=JSON.stringify(e);return zm(r,t)}catch{if(typeof e=="object"&&e!==null){let r=e.constructor;return zm(`[unserializable: ${r?.name??"Object"}]`,t)}return zm(String(e),t)}}var wle=["taskId","sourcePainId","sourceTaskId","sourceRunIds","sourceArtifactId","sourceRefs"],b5n=new Set(wle);function KJe(e,t){let r={...t};for(let o of wle)Object.hasOwn(e,o)&&(r[o]=e[o]);return r}function AG(e){let t={...e};for(let r of wle)delete t[r];return t}function OG(e,t,r){let o=typeof r=="string"?zm(r,100):r==null?String(r):ec(r,100);return{path:e,expected:t,actualPreview:o}}function Jh(e){let t=/```(?:json)?\s*\n?([\s\S]*?)\n?```/.exec(e);if(t){let[,i]=t;if(i)try{let a=JSON.parse(i.trim());return typeof a=="object"&&a!==null&&!Array.isArray(a)?a:null}catch{}}let r=e.trimStart();if(r.length>0&&r[0]==="["){let i=0,a=!1,s=!1,c=-1;for(let u=0;u<r.length;u++){let l=r[u];if(s){s=!1;continue}if(l==="\\"&&a){s=!0;continue}if(l==='"'){a=!a;continue}if(!a&&(l==="["||l==="{"?i++:(l==="]"||l==="}")&&i--,i===0)){c=u;break}}if(c>=0)try{let u=JSON.parse(r.slice(0,c+1));if(Array.isArray(u))return null;if(typeof u=="object"&&u!==null)return u}catch{}}let o=0,n=-1;for(let i=0;i<e.length;i++){let a=e[i];if(a==="{")o===0&&(n=i),o++;else if(a==="}"&&(o--,o===0&&n>=0))try{let s=JSON.parse(e.slice(n,i+1));if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s;n=-1}catch{n=-1}}return null}function HJe(e){let t=-1,r=0,o=-1;for(let u=0;u<e.length;u++){let l=e[u];if(l==="{")r===0&&(t=u),r++;else if(l==="}"&&(r--,r===0&&t>=0)){o=u;break}}if(t<0||o<0)return null;let n=e.slice(t,o+1);try{let u=JSON.parse(n);if(typeof u=="object"&&u!==null&&!Array.isArray(u))return u}catch{}let i=[...n],a=!1,s=!1,c="";for(let u=0;u<i.length;u++){let l=i[u];if(s){c+=l,s=!1;continue}if(l==="\\"&&a){c+=l,s=!0;continue}if(l==='"'){if(!a)a=!0,c+=l;else{let m=n.slice(u+1).trimStart();m.startsWith(":")||m.startsWith(",")||m.startsWith("}")||m.startsWith("]")||m.length===0?(a=!1,c+=l):c+='\\"'}continue}c+=l}try{let u=JSON.parse(c);if(typeof u=="object"&&u!==null&&!Array.isArray(u))return u}catch{}return null}var PG={maxRepairAttempts:3,maxErrorsInPrompt:10,maxErrorChars:200,maxRawOutputChars:2e3};function NG(e){if(!e||typeof e!="object")return"(unknown schema)";if(e.type==="object"&&e.properties){let t=Array.isArray(e.required)?new Set(e.required):new Set,r=[],o=e.properties;for(let[n,i]of Object.entries(o)){if(typeof i!="object"||i===null)continue;let s=t.has(n)?" (required)":" (optional)";if(i.type==="array"){let u=i.items?.type??"unknown";r.push(` ${n}: ${u}[]${s}`)}else if(i.enum){let c=i.enum.map(String).join(" | ");r.push(` ${n}: enum(${c})${s}`)}else if(i.type){let c=typeof i.type=="string"?i.type:"unknown",u=[];typeof i.minimum=="number"&&u.push(`min: ${i.minimum}`),typeof i.maximum=="number"&&u.push(`max: ${i.maximum}`),typeof i.minLength=="number"&&u.push(`minLength: ${i.minLength}`);let l=u.length>0?` {${u.join(", ")}}`:"";r.push(` ${n}: ${c}${l}${s}`)}else(i.anyOf||i.allOf||i.oneOf)&&r.push(` ${n}: union${s}`)}return r.join(`
|
|
831
831
|
`)}return e.type?`type: ${e.type}`:"(complex schema)"}function QMr(e){return e._testJitterMs!==void 0?e._testJitterMs:200+Math.random()*300}function XJe(e,t,r={}){let o={...PG,...r},n=ec(e,o.maxRawOutputChars);n.length>o.maxRawOutputChars&&(n=n.slice(0,o.maxRawOutputChars)+`
|
|
832
832
|
...[truncated]`);let a=t.slice(0,o.maxErrorsInPrompt).map(l=>{let m=l.message.length>o.maxErrorChars?l.message.slice(0,o.maxErrorChars)+"...":l.message;return`- ${l.path}: ${m}`}),s=t.length>o.maxErrorsInPrompt?t.length-o.maxErrorsInPrompt:0,c=o.schemaRef?[`SCHEMA REF: ${o.schemaRef}`,""]:[],u=o.schemaSummary?["EXPECTED SCHEMA:",o.schemaSummary,""]:[];return["This is a schema validation repair loop. Your previous JSON output still has errors. Fix ALL remaining errors and return the complete corrected JSON object.","",...c,...u,"PREVIOUS OUTPUT:",n,"","SCHEMA ERRORS:",...a,...s>0?[`${s} more error(s) omitted`]:[],"","INSTRUCTION: Output ONLY the complete corrected JSON object. No markdown, no explanation."].join(`
|
|
833
833
|
`)}function ZMr(e){return e.slice(0,10).map(t=>OG(t.path,t.message,t.value))}async function kle(e,t,r,o){let n={...PG,...o,maxRepairAttempts:BJe(o?.maxRepairAttempts,PG.maxRepairAttempts)},i=[],a=t;if(a.length===0||n.maxRepairAttempts<=0)return{repaired:!1,output:null,attemptsUsed:0,repairSummary:`Repair skipped: ${a.length===0?"no errors":"maxRepairAttempts=0"}`,repairAttempts:i};let s=`${a.length} errors: ${a.slice(0,3).map(c=>c.path).join(", ")}`;for(let c=0;c<n.maxRepairAttempts;c++){let u=ZMr(a),l=XJe(e,a,n),m;try{m=await r.llmCaller(l)}catch(g){let y=g instanceof Error?g.message:String(g);return i.push({schemaRef:n.schemaRef??"unknown",attempt:c+1,rawOutputPreview:ec(e),validationErrors:u,repairPromptVersion:"1",repaired:!1}),{repaired:!1,output:null,attemptsUsed:c+1,repairSummary:`Repair failed at attempt ${c+1}: llmCaller threw "${y}". ${s}`,repairAttempts:i}}if(!m){i.push({schemaRef:n.schemaRef??"unknown",attempt:c+1,rawOutputPreview:ec(e),validationErrors:u,repairPromptVersion:"1",repaired:!1});continue}let p=Jh(m);if(!p){i.push({schemaRef:n.schemaRef??"unknown",attempt:c+1,rawOutputPreview:zm(m),validationErrors:u,repairPromptVersion:"1",repaired:!1});continue}let h=p;if(n.originalOutput&&typeof p=="object"&&p!==null&&(h=KJe(n.originalOutput,p)),r.schemaCheck(h))return i.push({schemaRef:n.schemaRef??"unknown",attempt:c+1,rawOutputPreview:zm(m),validationErrors:u,repairPromptVersion:"1",repaired:!0}),{repaired:!0,output:h,attemptsUsed:c+1,repairSummary:`Repair succeeded at attempt ${c+1}. ${s}`,repairAttempts:i};let f=r.schemaErrors?r.schemaErrors(h):a;if(i.push({schemaRef:n.schemaRef??"unknown",attempt:c+1,rawOutputPreview:zm(m),validationErrors:u,repairPromptVersion:"1",repaired:!1}),e=h,a=f,c<n.maxRepairAttempts-1){let g=QMr(n);await new Promise(y=>setTimeout(y,g))}}return{repaired:!1,output:null,attemptsUsed:n.maxRepairAttempts,repairSummary:`Repair failed after ${n.maxRepairAttempts} attempt(s). ${s}`,repairAttempts:i}}var eLr=8,YJe=["principle","rule","implementation","prompt","defer"];function El(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function a$(e){return El(e.properties)?e.properties:null}function Ile(e){return El(e.items)?e.items:null}function i$(e,t){let r=e[t];return!Array.isArray(r)||r.length===0?null:r.filter(o=>El(o))}function gR(e,t=0){if(t>eLr)return null;if(e.type==="boolean")return!0;if(e.type==="number")return typeof e.minimum=="number"&&typeof e.maximum=="number"?(e.minimum+e.maximum)/2:typeof e.minimum=="number"?e.minimum+1:typeof e.maximum=="number"?e.maximum-1:.8;if(e.type==="string")return"example";if(e.type==="integer")return 1;if(e.const!==void 0)return e.const;if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum[0];let r=i$(e,"anyOf");if(r&&r[0])return gR(r[0],t+1);let o=i$(e,"oneOf");if(o&&o[0])return gR(o[0],t+1);let n=i$(e,"allOf");if(n){let i={};for(let a of n){let s=gR(a,t+1);El(s)&&Object.assign(i,s)}return i}if(e.type==="array"){let i=Ile(e);return i?[gR(i,t+1)]:[]}if(e.type==="object"){let i=a$(e);if(!i)return null;let a=Array.isArray(e.required)?new Set(e.required):new Set,s={};for(let[c,u]of Object.entries(i))El(u)&&a.has(c)&&(s[c]=gR(u,t+1));return s}return null}function tLr(e){if(e.type!=="object")return!1;let t=a$(e);if(!t)return!1;let r=t.recommendations;if(!El(r)||r.type!=="array")return!1;let o=Ile(r);if(!o)return!1;let n=a$(o);if(!n)return!1;let i=n.kind;if(!El(i))return!1;let a=i$(i,"anyOf");return a?a.some(s=>El(s)&&s.const==="principle"):!1}function QJe(e){let t={kind:e,description:`Example ${e} recommendation`};return e==="rule"&&(t.triggerPattern="pattern-to-match",t.action="action-to-take"),e==="principle"&&(t.abstractedPrinciple="Abstracted principle text (max 200 chars)"),t}function rLr(e){let t=gR(e);if(!El(t))return{valid:!0,diagnosisId:"diag-001",summary:"Example diagnosis summary",rootCause:"Design: Example root cause",confidence:.85,violatedPrinciples:[{rationale:"Example principle violation rationale"}],evidence:[{sourceRef:"source-ref-1",note:"Example evidence note"}],recommendations:YJe.map(QJe)};let r={};for(let[o,n]of Object.entries(t))r[o]=n;return r.recommendations=YJe.map(QJe),r.valid=!0,r.diagnosisId="diag-001",r.summary="Example diagnosis summary",r.rootCause="Design: Example root cause",r.confidence=.85,r.violatedPrinciples=[{rationale:"Example principle violation rationale"}],r.evidence=[{sourceRef:"source-ref-1",note:"Example evidence note"}],r}function ZJe(e){return El(e)?e:null}var Um=class{generateExample(t){let r=ZJe(t),o=r&&tLr(r)?rLr(r):r?gR(r):null;try{let n=vo.Check(t,o)?o:vo.Cast(t,o);return JSON.stringify(n,null,2)}catch{return JSON.stringify(o,null,2)}}generateConstraints(t){let r=ZJe(t);if(!r)return"(unknown schema)";if(r.type==="object"){let o=a$(r);if(!o)return"(object schema without properties)";let n=Array.isArray(r.required)?new Set(r.required):new Set,i=[];for(let[a,s]of Object.entries(o)){if(!El(s))continue;let u=n.has(a)?" (required)":" (optional)",l=[];if(typeof s.description=="string"&&l.push(`description: ${s.description}`),s.type==="array"){let h=Ile(s),f=El(h)?h.type??"unknown":"unknown";if(i.push(` ${a}: ${f}[]${u}`),h){let g=a$(h);if(g){let y=Array.isArray(h.required)?new Set(h.required):new Set;for(let[T,v]of Object.entries(g)){if(!El(v))continue;let E=y.has(T)?" (required)":" (optional)",L=[];Array.isArray(v.enum)&&L.push(`enum: ${v.enum.map(String).join(" | ")}`);let H=i$(v,"anyOf");if(H){let Ce=H.filter(ye=>ye.const!==void 0).map(ye=>String(ye.const));Ce.length>0&&L.push(`enum: ${Ce.join(" | ")}`)}typeof v.minimum=="number"&&L.push(`min: ${v.minimum}`),typeof v.maximum=="number"&&L.push(`max: ${v.maximum}`),typeof v.minLength=="number"&&L.push(`minLength: ${v.minLength}`),typeof v.description=="string"&&L.push(`description: ${v.description}`);let B=v.type??(v.anyOf?"union":"unknown"),Te=L.length>0?` {${L.join(", ")}}`:"";i.push(` .${T}: ${B}${Te}${E}`)}Object.hasOwn(g,"kind")&&El(g.kind)&&g.kind.anyOf&&(i.push(' Conditional: "rule" kind \u2192 triggerPattern and action are required'),i.push(' Conditional: "principle" kind \u2192 abstractedPrinciple is required'))}}continue}Array.isArray(s.enum)&&l.push(`enum: ${s.enum.map(String).join(" | ")}`),typeof s.minimum=="number"&&l.push(`min: ${s.minimum}`),typeof s.maximum=="number"&&l.push(`max: ${s.maximum}`),typeof s.minLength=="number"&&l.push(`minLength: ${s.minLength}`);let m=s.type??(s.anyOf?"union":"unknown"),p=l.length>0?` {${l.join(", ")}}`:"";i.push(` ${a}: ${m}${p}${u}`)}return i.join(`
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "principles-disciple",
|
|
3
3
|
"name": "Principles Disciple",
|
|
4
4
|
"description": "Turn repeated Agent corrections into Owner-approved, observable, reversible behavior principles. Stop correcting the same AI behavior across sessions.",
|
|
5
|
-
"version": "1.197.
|
|
5
|
+
"version": "1.197.14",
|
|
6
6
|
"activation": {
|
|
7
7
|
"onCapabilities": [
|
|
8
8
|
"hook"
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "principles-disciple",
|
|
3
3
|
"name": "Principles Disciple",
|
|
4
4
|
"description": "Turn repeated Agent corrections into Owner-approved, observable, reversible behavior principles. Stop correcting the same AI behavior across sessions.",
|
|
5
|
-
"version": "1.197.
|
|
5
|
+
"version": "1.197.14",
|
|
6
6
|
"activation": {
|
|
7
7
|
"onCapabilities": [
|
|
8
8
|
"hook"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "principles-disciple",
|
|
3
|
-
"version": "1.197.
|
|
3
|
+
"version": "1.197.14",
|
|
4
4
|
"description": "Turn repeated Agent corrections into Owner-approved, observable, reversible behavior principles. Stop correcting the same AI behavior across sessions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"dependencies": {
|
|
97
97
|
"@principles/core": "^1.74.1",
|
|
98
98
|
"@sinclair/typebox": "^0.34.48",
|
|
99
|
-
"better-sqlite3": "^
|
|
99
|
+
"better-sqlite3": "^13.0.1",
|
|
100
100
|
"commander": "^12.0.0",
|
|
101
101
|
"js-yaml": "^5.2.0",
|
|
102
102
|
"micromatch": "^4.0.8"
|