@makaio/framework 1.0.0-dev-1789178780636 → 1.0.0-dev-1789234461336

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 (102) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/adapters/claude/index.d.mts +5 -5
  3. package/dist/artifact-CKz9YQPu.mjs +1 -0
  4. package/dist/authority-state-bootstrap-BkI-zYRx.mjs +1 -0
  5. package/dist/bus/index.d.mts +1 -1
  6. package/dist/bus/index.mjs +1 -1
  7. package/dist/bus-BZB7jNes.mjs +9 -0
  8. package/dist/contracts/artifact/index.d.mts +3 -3
  9. package/dist/contracts/artifact/index.mjs +1 -1
  10. package/dist/contracts/capabilities/index.d.mts +1 -1
  11. package/dist/contracts/extension/index.d.mts +2 -2
  12. package/dist/contracts/extension/index.mjs +1 -1
  13. package/dist/contracts/index.d.mts +49 -49
  14. package/dist/contracts/index.mjs +1 -1
  15. package/dist/contracts/materialization/index.d.mts +2 -2
  16. package/dist/contracts/materialization/index.mjs +1 -1
  17. package/dist/contracts/skill/index.d.mts +1 -1
  18. package/dist/contracts/variant/index.d.mts +1 -1
  19. package/dist/contracts/worker/index.d.mts +1 -1
  20. package/dist/contracts/worker/index.mjs +1 -1
  21. package/dist/contracts/workflow/index.d.mts +2 -2
  22. package/dist/contracts/workflow/index.mjs +1 -1
  23. package/dist/drizzle/0038_execution-attempt-repository.sql +73 -0
  24. package/dist/drizzle/meta/_journal.json +7 -0
  25. package/dist/{extension-DRwry8GA.mjs → extension-CfrTp3rC.mjs} +1 -1
  26. package/dist/{framework-packages-CCIReKIe.mjs → framework-packages-Bg4edkkM.mjs} +1 -1
  27. package/dist/{index-BDRfiSz8.d.mts → index-B4pPwpKk.d.mts} +1 -1
  28. package/dist/{index-DI07GxEW.d.mts → index-Bg3WVL8n.d.mts} +6 -6
  29. package/dist/{index-DNgrWs5j.d.mts → index-BmCm9R8_.d.mts} +21 -21
  30. package/dist/{index-BI8PuDkI.d.mts → index-BpQX136X.d.mts} +1 -1
  31. package/dist/{index-CdWxSwhQ2.d.mts → index-C6e9cwAl2.d.mts} +4 -4
  32. package/dist/{index-BFS-2kcS.d.mts → index-C_kOkO3E.d.mts} +16 -0
  33. package/dist/{index-DhunnX8V.d.mts → index-ClKwF6LE.d.mts} +83 -8
  34. package/dist/{index-4GaVggnR.d.mts → index-Cplq28EL.d.mts} +49 -33
  35. package/dist/{index-DtCVHx8-.d.mts → index-CzUUoexw.d.mts} +17 -9
  36. package/dist/{index-CsLb9M1M.d.mts → index-DMkzJCjS.d.mts} +1 -1
  37. package/dist/{index-GpfGF9AO2.d.mts → index-DXZImst_2.d.mts} +11 -8
  38. package/dist/{index-GPTSqhvy.d.mts → index-D_j_T3nS.d.mts} +1 -1
  39. package/dist/{index-KnN2OyWD2.d.mts → index-mTaFX2HH2.d.mts} +24 -24
  40. package/dist/{index-DVocx__-2.d.mts → index-zmDRR8gv2.d.mts} +11 -11
  41. package/dist/kernel/extension/index.d.mts +1 -1
  42. package/dist/kernel/index.d.mts +2 -2
  43. package/dist/kernel/observability/index.d.mts +1 -1
  44. package/dist/{kind-registration-WrdMzWmV.mjs → kind-registration-Dzfo6kyb.mjs} +1 -1
  45. package/dist/materialization-iFhpbs1s.mjs +1 -0
  46. package/dist/{namespace-DQpBf2CK.d.mts → namespace-B5IFLQc-.d.mts} +6 -6
  47. package/dist/{namespace-BrqkCnyt.d.mts → namespace-BsQPRiMd.d.mts} +6 -6
  48. package/dist/{namespace-CjvSQYRJ.d.mts → namespace-f6Kz5cwX.d.mts} +12 -12
  49. package/dist/node/transports/index.d.mts +32 -11
  50. package/dist/node/transports/index.mjs +2 -2
  51. package/dist/{package-DdymauE9.d.mts → package-CDj3F-L3.d.mts} +1 -0
  52. package/dist/package-D2Erka-E.mjs +7 -0
  53. package/dist/package.json +1 -1
  54. package/dist/packages-vF9F4M41.mjs +1 -0
  55. package/dist/runtime-node/index.d.mts +1 -1
  56. package/dist/runtime-node/index.mjs +1 -1
  57. package/dist/runtime-node/workflow-execution-bus-access.d.mts +37 -20
  58. package/dist/runtime-node/workflow-execution-bus-access.mjs +1 -1
  59. package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
  60. package/dist/runtime-node/workflow-worker/index.mjs +1 -1
  61. package/dist/{schemas-Dl_3zv9l.mjs → schemas-CHM0wMq4.mjs} +1 -1
  62. package/dist/{schemas-DlVKv9QC.d.mts → schemas-CaBRbfhU.d.mts} +6 -6
  63. package/dist/{schemas-uA8246K9.d.mts → schemas-CeItAAQM.d.mts} +8 -8
  64. package/dist/{schemas-BcynDWi-.d.mts → schemas-Cj6Gbqch.d.mts} +7 -7
  65. package/dist/{schemas-CKVm28Oy.d.mts → schemas-JjyFxrC0.d.mts} +4 -0
  66. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  67. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  68. package/dist/services/execution-target/index.d.mts +2 -2
  69. package/dist/services/execution-target/namespace.d.mts +1 -1
  70. package/dist/services/execution-target/schemas.d.mts +1 -1
  71. package/dist/services/filesystem/namespace.d.mts +6 -6
  72. package/dist/services/filesystem/schemas.d.mts +3 -3
  73. package/dist/services/index.d.mts +22 -22
  74. package/dist/services/index.mjs +1 -1
  75. package/dist/services/materialization/index.mjs +1 -1
  76. package/dist/services/provider-context/index.d.mts +1 -1
  77. package/dist/services/session/handlers/index.d.mts +1 -1
  78. package/dist/services/session/index.d.mts +3 -3
  79. package/dist/services/tools/index.mjs +1 -1
  80. package/dist/services/tray-menu/index.d.mts +2 -2
  81. package/dist/services/tray-menu/namespace.d.mts +1 -1
  82. package/dist/services/tray-menu/schemas.d.mts +1 -1
  83. package/dist/services/workflow-transitions/index.mjs +1 -1
  84. package/dist/{tools-Dj_ImUQ8.mjs → tools-C5Gy0IQG.mjs} +1 -1
  85. package/dist/{transition-B-YmSK-s.d.mts → transition-D-Lgbp1j.d.mts} +1 -1
  86. package/dist/{view-builder-BUZoNyEQ.d.mts → view-builder-CHUTXJDl.d.mts} +14 -1
  87. package/dist/{worker-IIubsEFG.mjs → worker-4pqm147Q.mjs} +1 -1
  88. package/dist/{workflow-dVr_9gaf.mjs → workflow-C5cS1mgK.mjs} +1 -1
  89. package/dist/workflow-engine/index.d.mts +118 -41
  90. package/dist/workflow-engine/index.mjs +1 -1
  91. package/dist/workflow-engine/package.d.mts +1 -1
  92. package/dist/workflow-engine/package.mjs +1 -1
  93. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  94. package/dist/{workflow-transitions-t6jn_pR_.mjs → workflow-transitions-C0sg3kar.mjs} +1 -1
  95. package/dist/{workflow-worker-C3ZbuhyA.mjs → workflow-worker-l-wflI6V.mjs} +2 -2
  96. package/package.json +1 -1
  97. package/dist/artifact-CH7yhgti.mjs +0 -1
  98. package/dist/authority-state-bootstrap-CV7HpB4v.mjs +0 -1
  99. package/dist/bus-CPlKKH4v.mjs +0 -9
  100. package/dist/materialization-C_92G2CL.mjs +0 -1
  101. package/dist/package-Bn4iwDm3.mjs +0 -7
  102. package/dist/packages-G3bMStlV.mjs +0 -1
@@ -0,0 +1,7 @@
1
+ import{$ as e,A as t,At as n,Ct as r,Dt as i,Et as a,F as o,Ft as s,G as c,H as l,I as u,J as d,K as f,L as p,M as m,Mt as ee,N as te,Nt as ne,Ot as re,P as ie,Pt as ae,Q as oe,R as h,St as se,Tt as ce,U as le,V as ue,W as g,X as de,Y as fe,Z as pe,_ as me,_t as he,a as ge,at as _e,bt as ve,c as ye,ct as be,dt as xe,et as Se,f as Ce,ft as we,g as Te,gt as Ee,h as De,ht as Oe,i as ke,it as Ae,j as je,jt as Me,k as Ne,kt as Pe,l as Fe,lt as Ie,m as Le,mt as Re,n as ze,nt as Be,o as Ve,ot as He,p as Ue,pt as We,q as _,r as Ge,rt as Ke,st as qe,tt as Je,u as Ye,ut as Xe,vt as Ze,wt as Qe,xt as $e,y as et,yt as tt,z as nt}from"./authority-state-bootstrap-BkI-zYRx.mjs";import{d as rt,f as it,p as at}from"./execution-attempt-repository-aabFKcXN.mjs";import{assertWorkflowTriggerPayload as ot,compileWorkflowTriggerBindingFilter as st}from"./workflow-engine/workflow-trigger-binding-consumer.mjs";import{a as ct,r as lt}from"./execution-attempt-owner-recovery-CE_rvHKE.mjs";import{SerialLane as ut}from"@makaio/framework/utils";import{ArtifactSubjects as dt,AutomationTriggerSubjects as ft,CRON_AUTOMATION_TRIGGER_KIND as pt,EXECUTION_LIST_DEFAULT_LIMIT as mt,EXECUTION_LIST_MAX_LIMIT as v,EXECUTION_LIST_MIN_LIMIT as y,EXTERNAL_EXECUTION_ID_PREFIX as b,ExecutionAttemptSchemas as x,ExecutionAttemptSubjects as S,ExecutionsByArtifactRefsQuerySchema as ht,JsonPatchOperationSchema as gt,JsonValueSchema as _t,SessionSubjects as vt,WORKFLOW_CANCELLED_REASON as C,WorkLogFrameEntrySchema as yt,WorkerSubjects as bt,WorkflowAutomationTriggerBindingSchema as xt,WorkflowError as w,WorkflowErrorCode as St,WorkflowNamespace as Ct,WorkflowRunContextSchema as wt,WorkflowRunResultSchema as Tt,WorkflowStepTypeSchema as Et,WorkflowSubjects as T,createWorkflowCancelSubject as Dt,createWorkflowDelegateResultFinalizerNamespace as Ot,createWorkflowFinalizerNamespace as kt,dep as At,extensionToken as jt,serializeArtifactRef as Mt,walkWorkflowDefinition as Nt}from"@makaio/framework/contracts";import{BaseService as Pt}from"@makaio/framework/service-base";import{defineDialectSchema as Ft,executeTransaction as E,getDatabaseDialect as It,registerDrizzleHandlers as Lt,resolveSchema as D,serializeDatabaseOperation as O}from"@makaio/framework/storage/drizzle";import{and as k,asc as A,count as j,desc as M,eq as N,getTableColumns as Rt,gte as zt,isNotNull as Bt,isNull as P,lt as Vt,lte as Ht,notInArray as Ut,or as Wt,sql as F,sum as I}from"drizzle-orm";import{SessionToken as Gt}from"@makaio/framework/services";import{AutomationTriggerBindingRuntimeToken as Kt}from"@makaio/framework/services/automation-trigger";const qt=fe.postgres,Jt=_e.postgres,Yt=pe.postgres,Xt=qe.postgres,Zt=xe.postgres,Qt=e.postgres,$t=Ie.postgres,en=tt.postgres,tn=Oe.postgres,nn=We.postgres,rn=he.postgres,an=Je.postgres,on=Ke.postgres,sn=ne.postgres,cn=Pe.postgres,ln=$e.postgres,un=i.postgres,dn=Me.postgres,fn=r.postgres,pn=ce.postgres,L=Ft({workflowDefinitions:d,workflowExecutions:Ae,workflowExecutionFrames:de,workflowGateInstances:He,workflowStepSpans:Xe,workflowExecutionLinks:oe,workflowRunContexts:be,worklogSummaries:Ze,worklogFrameEntries:Re,worklogArtifactWrites:we,worklogGateEvents:Ee,workflowExecutionState:Se,workflowExecutionStateEvents:Be,workflowFinalizations:ee,executionAttempts:re,activeExecutionAttempts:ve,executionAttemptRequests:a,providerOperations:n,executionAttemptCancellations:se,executionAttemptControlEvidence:Qe},{workflowDefinitions:qt,workflowExecutions:Jt,workflowExecutionFrames:Yt,workflowGateInstances:Xt,workflowStepSpans:Zt,workflowExecutionLinks:Qt,workflowRunContexts:$t,worklogSummaries:en,worklogFrameEntries:tn,worklogArtifactWrites:nn,worklogGateEvents:rn,workflowExecutionState:an,workflowExecutionStateEvents:on,workflowFinalizations:sn,executionAttempts:cn,activeExecutionAttempts:ln,executionAttemptRequests:un,providerOperations:dn,executionAttemptCancellations:fn,executionAttemptControlEvidence:pn});function R(e){return e.type===`global`?{scopeType:`global`,scopeKind:``,scopeId:``}:e.type===`external`?{scopeType:`external`,scopeKind:e.kind,scopeId:e.id}:{scopeType:e.type,scopeKind:``,scopeId:e.id}}function z(e){switch(e.scopeType){case`global`:return{type:`global`};case`external`:if(!e.scopeKind||!e.scopeId)throw Error(`Invalid external workflow scope row: scopeKind and scopeId are required`);return{type:`external`,kind:e.scopeKind,id:e.scopeId};case`workspace`:case`session`:if(!e.scopeId)throw Error(`Invalid ${e.scopeType} workflow scope row: scopeId is required`);return{type:e.scopeType,id:e.scopeId};default:{let t=e.scopeType;throw Error(`Unknown scope type: ${String(t)}`)}}}function mn(e,t){let{scopeType:n,scopeKind:r,scopeId:i}=R(t);return[N(e.scopeType,n),N(e.scopeKind,r),N(e.scopeId,i)]}function B(e){return{id:e.id,name:e.name,description:e.description??void 0,root:e.root,inputSchema:e.inputSchema??void 0,configSchema:e.configSchema??void 0,outputSchema:e.outputSchema??void 0,state:e.state??void 0,artifact:e.artifact??void 0,triggers:e.triggers??void 0,scope:z(e),canvasLayout:e.canvasLayout??void 0,source:e.source??void 0,executableSource:e.executableSource??void 0,requirements:e.requirements??void 0,successFinalizerId:e.successFinalizerId??void 0}}function hn(e,t){let n=R(e.scope);return{id:e.id,name:e.name??e.id,root:e.root,description:e.description??null,inputSchema:e.inputSchema??null,configSchema:e.configSchema??null,outputSchema:e.outputSchema??null,state:e.state??null,artifact:e.artifact??null,triggers:e.triggers??null,canvasLayout:e.canvasLayout??null,source:e.source??null,executableSource:e.executableSource??null,requirements:e.requirements??null,successFinalizerId:e.successFinalizerId??null,createdAt:t,updatedAt:t,...n}}function gn(e,t){let{workflowDefinitions:n}=D(t,L),r=Rt(n),i=e.on(_.get,async e=>{let r=await t.select().from(n).where(N(n.id,e.payload.id)).limit(1);e.setResult({workflow:r[0]?B(r[0]):null})}),a=e.on(_.set,async i=>{let a=i.payload.workflow,o=Date.now(),c=hn(a,o),l=await O(t,async()=>{let e=await t.insert(n).values(c).onConflictDoNothing({target:n.id}).returning();if(e.length>0)return{kind:`created`,row:e[0]};let[i]=await t.update(n).set({name:c.name,root:c.root,updatedAt:o,createdAt:F`COALESCE(${r.createdAt}, ${o})`,description:c.description===null?F`${r.description}`:c.description,inputSchema:c.inputSchema===null?F`${r.inputSchema}`:c.inputSchema,configSchema:c.configSchema===null?F`${r.configSchema}`:c.configSchema,outputSchema:c.outputSchema===null?F`${r.outputSchema}`:c.outputSchema,state:c.state,artifact:c.artifact===null?F`${r.artifact}`:c.artifact,triggers:c.triggers===null?F`${r.triggers}`:c.triggers,canvasLayout:c.canvasLayout===null?F`${r.canvasLayout}`:c.canvasLayout,source:c.source===null?F`${r.source}`:c.source,executableSource:c.executableSource,requirements:c.requirements,successFinalizerId:c.successFinalizerId,...R(a.scope)}).where(N(n.id,a.id)).returning();return i?{kind:`updated`,row:i}:void 0});l&&await e.emit(l.kind===`created`?s.definition.created:s.definition.updated,B(l.row)),i.setResult({id:a.id})}),o=e.on(_.delete,async r=>{let i=(await O(t,()=>t.delete(n).where(N(n.id,r.payload.id)).returning())).length>0;i&&await e.emit(s.definition.deleted,{id:r.payload.id}),r.setResult({deleted:i})}),c=e.on(_.list,async e=>{let r=e.payload,i=r.scope?mn(n,r.scope):[],a=i.length>0?await t.select().from(n).where(k(...i)):await t.select().from(n);e.setResult({workflows:a.map(B)})});return()=>{i(),a(),o(),c()}}function _n(e){return{frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,parentFrameId:e.parentFrameId??void 0,status:e.status,attempt:e.attempt,iteration:e.iteration??void 0,branchKey:e.branchKey??void 0,...e.outputPresent?{output:e.output}:{},error:e.error??void 0,startedAt:e.startedAt??void 0,completedAt:e.completedAt??void 0}}function vn(e,t){return{frameId:t.frameId,executionId:e,nodeId:t.nodeId,nodeType:t.nodeType,path:t.path,parentFrameId:t.parentFrameId??null,status:t.status,attempt:t.attempt,iteration:t.iteration??null,branchKey:t.branchKey??null,output:t.output===void 0?null:t.output,outputPresent:t.output!==void 0,error:t.error??null,startedAt:t.startedAt??null,completedAt:t.completedAt??null}}function yn(e,t){let{workflowExecutionFrames:n}=D(t,L),r=e.on(_.setFrame,async e=>{let{executionId:r,frame:i}=e.payload;if(!g(e,r))throw Error(`Unauthorized: caller is not permitted to write frames for execution: ${r}`);let a=vn(r,i);await O(t,()=>t.insert(n).values(a).onConflictDoUpdate({target:n.frameId,set:a})),e.setResult({frameId:i.frameId})}),i=e.on(_.getFrame,async e=>{let r=await t.select().from(n).where(N(n.frameId,e.payload.frameId)).limit(1);e.setResult({frame:r[0]?_n(r[0]):null})}),a=e.on(_.listFrames,async e=>{if(!g(e,e.payload.executionId))throw Error(`Unauthorized: caller is not permitted to list frames for execution: ${e.payload.executionId}`);let r=await t.select().from(n).where(N(n.executionId,e.payload.executionId)).orderBy(A(n.startedAt),A(n.frameId));e.setResult({frames:r.map(_n)})});return()=>{r(),i(),a()}}function bn(e){return`${e.executionId}:${e.nodeId}:${e.frameId}`}function V(e){return{executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId,schema:e.schema,prompt:e.prompt??void 0,status:e.status,autoAction:e.autoAction,timeoutMs:e.timeoutMs??null,...e.resumeDataPresent?{resumeData:e.resumeData}:{},...e.reason===null?{}:{reason:e.reason},createdAt:e.createdAt,resolvedAt:e.resolvedAt??void 0}}function H(e){return{id:bn(e),executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId,schema:e.schema,prompt:e.prompt??null,status:e.status,autoAction:e.autoAction,timeoutMs:e.timeoutMs,resumeData:e.resumeData===void 0?null:e.resumeData,reason:e.reason??null,resumeDataPresent:e.resumeData!==void 0,createdAt:e.createdAt,resolvedAt:e.resolvedAt??null}}function xn(e,t,n,r){if(e===void 0&&t===void 0)throw Error(`Either executionId or status is required to list gate instances.`);let i=n??mt;if(!Number.isInteger(i)||i<y||i>v)throw Error(`Gate instance list limit must be an integer between ${y} and ${v}.`);return{resolvedLimit:i,predicates:[...e===void 0?[]:[N(r.executionId,e)],...t===void 0?[]:[N(r.status,t)]]}}function Sn(e,t){let{workflowExecutions:n,workflowGateInstances:r}=D(t,L),i=e.on(_.setGateInstance,async e=>{let n=e.payload.gate;if(!g(e,n.executionId))throw Error(`Unauthorized: caller is not permitted to write gates for execution: ${n.executionId}`);let i=H(n);await O(t,()=>t.insert(r).values(i).onConflictDoUpdate({target:r.id,set:i})),e.setResult({id:i.id})}),a=e.on(_.resolveWaitingGateInstance,async e=>{let n=e.payload.gate,i=H(n),a=await O(t,()=>t.update(r).set(i).where(k(N(r.id,i.id),N(r.status,`waiting`))).returning({id:r.id}));e.setResult({accepted:a.length===1})}),o=e.on(_.getGateInstance,async e=>{let{executionId:n,nodeId:i,frameId:a}=e.payload;if(!g(e,n))throw Error(`Unauthorized: caller is not permitted to read gates for execution: ${n}`);let o=[N(r.executionId,n),N(r.nodeId,i)];a!==void 0&&o.push(N(r.frameId,a));let s=await t.select().from(r).where(k(...o)).limit(1);e.setResult({gate:s[0]?V(s[0]):null})}),s=e.on(_.listGateInstances,async e=>{let{executionId:n,status:i,limit:a}=e.payload,{resolvedLimit:o,predicates:s}=xn(n,i,a,r),c=await t.select().from(r).where(k(...s)).orderBy(M(r.createdAt),M(r.id)).limit(o);e.setResult({gates:c.map(V)})}),c=e.on(_.listPausedGateTimeouts,async e=>{let i=await t.select({gate:r}).from(r).innerJoin(n,N(r.executionId,n.id)).where(k(N(r.status,`waiting`),N(n.status,`paused`),Bt(r.timeoutMs)));e.setResult({gates:i.map(e=>V(e.gate))})});return()=>{i(),a(),o(),s(),c()}}function Cn(e){return{executionId:e.executionId,frameId:e.frameId,stepId:e.stepId,stepType:e.stepType,status:e.status,startedAt:e.startedAt??void 0,completedAt:e.completedAt??void 0,durationMs:e.durationMs??void 0,inputTokens:e.inputTokens??void 0,outputTokens:e.outputTokens??void 0,estimatedCost:e.estimatedCost??void 0,toolCallCount:e.toolCallCount??void 0,input:e.input??void 0,output:e.output??void 0}}function wn(e){return{sourceExecutionId:e.sourceExecutionId,targetExecutionId:e.targetExecutionId,linkType:e.linkType,metadata:e.metadata??void 0}}function Tn(e,t){let{workflowStepSpans:n,workflowExecutionLinks:r}=D(t,L),i=e.on(_.setSpan,async e=>{let{span:r}=e.payload;if(!g(e,r.executionId))throw Error(`Unauthorized: caller is not permitted to write spans for execution: ${r.executionId}`);await O(t,()=>t.insert(n).values(r).onConflictDoUpdate({target:[n.executionId,n.frameId],set:r})),e.setResult({id:`${r.executionId}:${r.frameId}`})}),a=e.on(_.listSpans,async e=>{let r=await t.select().from(n).where(N(n.executionId,e.payload.executionId)).orderBy(A(n.startedAt),A(n.stepId),A(n.frameId));e.setResult({spans:r.map(Cn)})}),o=e.on(_.setExecutionLink,async e=>{let{link:n}=e.payload;await O(t,()=>t.insert(r).values(n).onConflictDoUpdate({target:[r.sourceExecutionId,r.targetExecutionId],set:n})),e.setResult({id:`${n.sourceExecutionId}:${n.targetExecutionId}`})}),s=e.on(_.listExecutionLinks,async e=>{let{sourceExecutionId:n,targetExecutionId:i}=e.payload;if(n===void 0&&i===void 0)throw Error(`Either sourceExecutionId or targetExecutionId is required to list execution links.`);let a=[...n===void 0?[]:[N(r.sourceExecutionId,n)],...i===void 0?[]:[N(r.targetExecutionId,i)]],o=t.select().from(r).where(k(...a));e.setResult({links:(await o).map(wn)})});return()=>{i(),a(),o(),s()}}function U(e,t){return t===null?It(e)===`postgres`?F`'null'::jsonb`:F`'null'`:t}function En(e){switch(e.kind){case`path`:return{sourceKind:`path`,sourcePath:e.path,sourceFilename:null,sourceCode:null};case`source`:return{sourceKind:`source`,sourcePath:null,sourceFilename:e.filename,sourceCode:e.source};case`definition`:return{sourceKind:`definition`,sourcePath:null,sourceFilename:null,sourceCode:null}}}function Dn(e){switch(e.sourceKind){case`path`:if(!e.sourcePath)throw Error(`Invalid run context row: sourcePath required for kind=path`);return{kind:`path`,path:e.sourcePath};case`source`:if(!e.sourceFilename)throw Error(`Invalid run context row: sourceFilename required for kind=source`);return{kind:`source`,filename:e.sourceFilename,source:e.sourceCode??``};case`definition`:return{kind:`definition`,workflowId:e.workflowId};default:throw Error(`Unknown run context source kind: ${String(e.sourceKind)}`)}}function On(e){return{executionId:e.executionId,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId,source:Dn(e),definitionSnapshot:e.definitionSnapshot??void 0,workerManifest:e.workerManifest,inputs:e.inputs,config:e.config??{},triggerPayload:e.triggerPayload,triggerMode:e.triggerMode,...e.artifactRef===null?{}:{artifactRef:e.artifactRef},scope:z(e),...e.dispatchMetadata===null?{}:{dispatchMetadata:e.dispatchMetadata},cancelSubject:e.cancelSubject,env:e.env,createdAt:e.createdAt,suspensionStrategy:e.suspensionStrategy??`wait-in-process`,...e.terminalAuthority===null?{}:{terminalAuthority:e.terminalAuthority},...e.materializationSpec===null?{}:{materializationSpec:e.materializationSpec}}}function kn(e){let t=En(e.source),n=R(e.scope);return{executionId:e.executionId,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId,...t,definitionSnapshot:e.definitionSnapshot??null,workerManifest:e.workerManifest,inputs:e.inputs,config:e.config??{},triggerPayload:e.triggerPayload,triggerMode:e.triggerMode??`immediate`,artifactRef:e.artifactRef??null,dispatchMetadata:e.dispatchMetadata??null,...n,cancelSubject:e.cancelSubject,env:e.env,createdAt:e.createdAt,suspensionStrategy:e.suspensionStrategy,terminalAuthority:e.terminalAuthority??null,materializationSpec:e.materializationSpec??null}}async function An(e,t,n){let r=kn(t);await e.insert(n).values(r).onConflictDoUpdate({target:n.executionId,set:r})}function jn(e,t){let{workflowRunContexts:n,workflowExecutionState:r,workflowExecutionStateEvents:i}=D(t,L),a=e.on(_.setRunContext,async e=>{let a=e.payload.runContext,o=e.payload.initialState;await E(t,async e=>{if(await An(e,a,n),o===void 0)return;let s=Date.now(),c=U(t,o);await e.insert(r).values({executionId:a.executionId,sequence:0,value:c,updatedAt:s}).onConflictDoNothing(),await e.insert(i).values({executionId:a.executionId,sequence:0,patch:[],value:c,createdAt:s}).onConflictDoNothing()}),e.setResult({executionId:a.executionId})}),o=e.on(_.getRunContext,async e=>{let{executionId:r}=e.payload,i=await t.select().from(n).where(N(n.executionId,r)),a=i[0]?On(i[0]):null;e.setResult({runContext:a})});return()=>{a(),o()}}async function Mn(e,t,n){let{workflowExecutionState:r,workflowExecutionStateEvents:i}=D(e,L),a=Date.now(),o=U(e,n);await E(e,async e=>{await e.insert(r).values({executionId:t,sequence:0,value:o,updatedAt:a}).onConflictDoNothing(),await e.insert(i).values({executionId:t,sequence:0,patch:[],value:o,createdAt:a}).onConflictDoNothing()})}async function Nn(e,t){let{workflowExecutionState:n}=D(e,L),r=(await e.select().from(n).where(N(n.executionId,t)).limit(1))[0];return r?{executionId:r.executionId,sequence:r.sequence,value:r.value}:null}async function Pn(e,t){let{workflowExecutionState:n,workflowExecutionStateEvents:r}=D(e,L),i=Date.now(),a=U(e,t.nextValue);return E(e,async e=>{let o=(await e.select().from(n).where(N(n.executionId,t.executionId)).limit(1))[0];if(!o)throw Error(`no workflow state for execution ${t.executionId}`);if(t.expectedSequence===void 0)throw Error(`expectedSequence is required to patch workflow state`);let s=o.sequence+1,c=le(o.value,t.nextValue);if((await e.update(n).set({sequence:s,value:a,updatedAt:i}).where(k(N(n.executionId,t.executionId),N(n.sequence,t.expectedSequence))).returning()).length===0)throw Error(`state sequence conflict: expected ${String(t.expectedSequence)}, got ${String(o.sequence)}`);return await e.insert(r).values({executionId:t.executionId,sequence:s,patch:c,value:a,createdAt:i}),{executionId:t.executionId,sequence:s,patch:c,value:t.nextValue}})}function Fn(e,t){let n=e.on(_.initializeState,async e=>{let{executionId:n,initialValue:r}=e.payload;await Mn(t,n,r),e.setResult({})}),r=e.on(_.getState,async e=>{let{executionId:n}=e.payload,r=await Nn(t,n);e.setResult({state:r})}),i=e.on(_.patchState,async e=>{let{executionId:n,expectedSequence:r,nextValue:i}=e.payload,a=await Pn(t,{executionId:n,expectedSequence:r,nextValue:i});e.setResult(a)});return()=>{n(),r(),i()}}function In(e){return{executionId:e.executionId,workflowId:e.workflowId,workflowName:e.workflowName??void 0,status:e.status,startedAt:e.startedAt,completedAt:e.completedAt??void 0,durationMs:e.durationMs??void 0,totalInputTokens:e.totalInputTokens??void 0,totalOutputTokens:e.totalOutputTokens??void 0,totalEstimatedCost:e.totalEstimatedCost??void 0,error:e.error??void 0,failedNodeId:e.failedNodeId??void 0}}async function Ln(e,t){let{worklogSummaries:n}=D(e,L);await e.insert(n).values(t).onConflictDoNothing()}async function Rn(e,t){let{worklogSummaries:n}=D(e,L);await e.insert(n).values(t).onConflictDoUpdate({target:n.executionId,set:zn(t),setWhere:Ut(n.status,[`completed`,`failed`,`cancelled`])})}function zn(e){return{workflowId:e.workflowId,workflowName:e.workflowName,status:e.status,startedAt:e.startedAt,completedAt:e.completedAt,durationMs:e.durationMs,error:e.error,failedNodeId:e.failedNodeId}}async function W(e,t){let{worklogSummaries:n}=D(e,L),r=await e.select().from(n).where(N(n.executionId,t)).limit(1);return r[0]?In(r[0]):null}async function Bn(e,t={}){let{worklogSummaries:n}=D(e,L),{workflowId:r,status:i,limit:a=50,offset:o=0}=t,s=[...r===void 0?[]:[N(n.workflowId,r)],...i===void 0?[]:[N(n.status,i)]],c=s.length>0?k(...s):void 0,[l,u]=await Promise.all([e.select().from(n).where(c).orderBy(M(n.startedAt)).limit(a).offset(o),e.select({count:j()}).from(n).where(c)]);return{items:l.map(In),total:u[0]?.count??0}}async function Vn(e,t){let{worklogFrameEntries:n}=D(e,L);await e.insert(n).values(t).onConflictDoNothing()}async function Hn(e,t){let{worklogFrameEntries:n}=D(e,L);await e.insert(n).values(t).onConflictDoUpdate({target:n.frameId,set:t,setWhere:Ut(n.status,[`completed`,`failed`,`skipped`,`cancelled`])})}async function G(e,t){let{worklogFrameEntries:n}=D(e,L);return(await e.select().from(n).where(N(n.frameId,t)).limit(1))[0]??null}async function Un(e,t){let n=await G(e,t);return n===null?null:yt.parse({executionId:n.executionId,frameId:n.frameId,nodeId:n.nodeId,nodeType:n.nodeType,path:n.path,status:n.status,attempt:n.attempt,iteration:n.iteration??void 0,branchKey:n.branchKey??void 0,startedAt:n.startedAt??void 0,completedAt:n.completedAt??void 0,durationMs:n.durationMs??void 0,inputTokens:n.inputTokens??void 0,outputTokens:n.outputTokens??void 0,estimatedCost:n.estimatedCost??void 0,error:n.error??void 0})}async function Wn(e,t){let{worklogArtifactWrites:n}=D(e,L);await e.insert(n).values(t).onConflictDoUpdate({target:n.id,set:t})}function Gn(e,t,n,r,i){return`${e}:${t}:${n}:${r}:${i}`}async function Kn(e,t){let{worklogGateEvents:n}=D(e,L);await e.insert(n).values(t).onConflictDoUpdate({target:n.id,set:t})}async function qn(e,t){let{worklogGateEvents:n}=D(e,L);return(await e.select().from(n).where(N(n.id,t)).limit(1))[0]??null}function Jn(e,t,n){return`${e}:${t}:${n}`}async function Yn(e,t,n){let[r]=await e.update(t).set({totalInputTokens:t.totalInputTokens}).where(N(t.executionId,n)).returning();return r}async function Xn(e,t,n){let[r]=await e.select({totalInputTokens:I(t.inputTokens),totalOutputTokens:I(t.outputTokens),totalEstimatedCost:I(t.estimatedCost),measuredInputTokens:j(t.inputTokens),measuredOutputTokens:j(t.outputTokens),measuredCosts:j(t.estimatedCost)}).from(t).where(N(t.executionId,n));return{totalInputTokens:Number(r?.totalInputTokens??0),totalOutputTokens:Number(r?.totalOutputTokens??0),totalEstimatedCost:Number(r?.totalEstimatedCost??0),hasMeasurements:Number(r?.measuredInputTokens??0)>0||Number(r?.measuredOutputTokens??0)>0||Number(r?.measuredCosts??0)>0}}function Zn(e){return e.hasMeasurements}async function Qn(e,t,n,r){await e.update(t).set({totalInputTokens:r.totalInputTokens,totalOutputTokens:r.totalOutputTokens,totalEstimatedCost:r.totalEstimatedCost}).where(N(t.executionId,n))}async function $n(e,t,n,r){let i=F`coalesce((select sum(${n.inputTokens}) from ${n} where ${n.executionId} = ${r}), 0)`,a=F`coalesce((select sum(${n.outputTokens}) from ${n} where ${n.executionId} = ${r}), 0)`,o=F`coalesce((select sum(${n.estimatedCost}) from ${n} where ${n.executionId} = ${r}), 0)`,s=F`exists(
2
+ select 1 from ${n}
3
+ where ${n.executionId} = ${r}
4
+ and (${n.inputTokens} is not null
5
+ or ${n.outputTokens} is not null
6
+ or ${n.estimatedCost} is not null)
7
+ )`;await e.update(t).set({totalInputTokens:i,totalOutputTokens:a,totalEstimatedCost:o}).where(k(N(t.executionId,r),s))}async function er(e,t){let{worklogSummaries:n,worklogFrameEntries:r}=D(e,L);if(It(e)===`sqlite`){await $n(e,n,r,t);return}await E(e,async e=>{if(await Yn(e,n,t)===void 0)return;let i=await Xn(e,r,t);Zn(i)&&await Qn(e,n,t,i)})}async function tr(e,t={}){let{worklogSummaries:n}=D(e,L),{workflowId:r,since:i,until:a}=t,o=[...r===void 0?[]:[N(n.workflowId,r)],...i===void 0?[]:[zt(n.startedAt,i)],...a===void 0?[]:[Ht(n.startedAt,a)]],s=o.length>0?k(...o):void 0,[c,l]=await Promise.all([e.select({status:n.status,count:j()}).from(n).where(s).groupBy(n.status),e.select({totalDurationMs:I(n.durationMs),totalInputTokens:I(n.totalInputTokens),totalOutputTokens:I(n.totalOutputTokens),totalEstimatedCost:I(n.totalEstimatedCost)}).from(n).where(s)]),u={pending:0,running:0,paused:0,finalizing:0,completed:0,failed:0,cancelled:0},d=0;for(let e of c)u[e.status]=e.count,d+=e.count;let f=l[0];return{total:d,byStatus:u,totalDurationMs:Number(f?.totalDurationMs??0),totalInputTokens:Number(f?.totalInputTokens??0),totalOutputTokens:Number(f?.totalOutputTokens??0),totalEstimatedCost:Number(f?.totalEstimatedCost??0)}}async function nr(e,t,n,r,i){let a=await G(t,n);if(a===null||i===void 0)return null;let o=await e.requestOptional(dt.resolve,{ref:{refClass:`artifact`,kind:r.kind,id:r.id,revision:i}}).catch(()=>void 0);if(o===void 0||!o.handled||o.data.artifact===null)return null;let{kind:s,schemaVersion:c,scope:l}=o.data.artifact;return{nodeId:a.nodeId,artifact:{kind:s,schemaVersion:c,scope:l}}}async function K(e,t){try{await t()}catch(t){console.error(`[WorklogProjection] Write failed (${e}):`,t)}}async function q(e,t){try{await e.emit(s.worklog.changed,{executionId:t})}catch(e){console.error(`[WorklogProjection] worklog.changed emit failed for ${t}:`,e)}}const rr=new Set([`completed`,`failed`,`cancelled`]);function ir(e){return rr.has(e)}async function ar(e,t){return await Ln(e,{executionId:t.executionId,workflowId:t.workflowId,workflowName:null,status:`running`,startedAt:t.startedAt??Date.now(),completedAt:null,durationMs:null,totalInputTokens:null,totalOutputTokens:null,totalEstimatedCost:null,error:null,failedNodeId:null}),!0}async function or(e,t){let n=t.completedAt??Date.now(),r=await W(e,t.executionId);return r!==null&&ir(r.status)?!1:(await Rn(e,{executionId:t.executionId,workflowId:r?.workflowId??t.executionId,workflowName:r?.workflowName??null,status:`completed`,startedAt:r?.startedAt??n-t.totalDuration,completedAt:n,durationMs:t.totalDuration,totalInputTokens:r?.totalInputTokens??null,totalOutputTokens:r?.totalOutputTokens??null,totalEstimatedCost:r?.totalEstimatedCost??null,error:null,failedNodeId:null}),!0)}async function sr(e,t,n,r,i,a){let o=await W(e,t);if(o!==null&&ir(o.status))return!1;let s=o?.startedAt??a;return await Rn(e,{executionId:t,workflowId:o?.workflowId??t,workflowName:o?.workflowName??null,status:n,startedAt:s,completedAt:a,durationMs:a-s,totalInputTokens:o?.totalInputTokens??null,totalOutputTokens:o?.totalOutputTokens??null,totalEstimatedCost:o?.totalEstimatedCost??null,error:r,failedNodeId:i}),!0}function cr(e,t){return[e.on(s.execution.started,async n=>{let{executionId:r}=n.payload;await K(`execution.started[${r}]`,async()=>{await O(t,()=>ar(t,n.payload))&&await q(e,r)})}),e.on(s.execution.completed,async n=>{let{executionId:r}=n.payload;await K(`execution.completed[${r}]`,async()=>{await O(t,()=>or(t,n.payload))&&await q(e,r)})}),e.on(s.execution.failed,async n=>{let{executionId:r,error:i,failedStepId:a}=n.payload,o=n.payload.completedAt??Date.now();await K(`execution.failed[${r}]`,async()=>{await O(t,()=>sr(t,r,`failed`,i,a??null,o))&&await q(e,r)})}),e.on(s.execution.cancelled,async n=>{let{executionId:r}=n.payload,i=n.payload.completedAt??Date.now();await K(`execution.cancelled[${r}]`,async()=>{await O(t,()=>sr(t,r,`cancelled`,null,null,i))&&await q(e,r)})})]}const lr=new Set([`completed`,`failed`,`skipped`,`cancelled`]);function ur(e){return lr.has(e)}function dr(e,t,n){return e===null?{nodeId:t,nodeType:`station`,path:[],attempt:0,iteration:null,branchKey:null,startedAt:n,inputTokens:null,outputTokens:null,estimatedCost:null}:{nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,attempt:e.attempt,iteration:e.iteration,branchKey:e.branchKey,startedAt:e.startedAt,inputTokens:e.inputTokens,outputTokens:e.outputTokens,estimatedCost:e.estimatedCost}}async function fr(e,t,n,r,i,a,o){let s=o??Date.now(),c=await G(t,r);c!==null&&ur(c.status)||(await Hn(t,{frameId:r,executionId:n,...dr(c,i,a===void 0?null:s-a),status:`completed`,completedAt:s,durationMs:a??null,error:null}),await er(t,n),await q(e,n))}async function pr(e,t,n,r,i,a,o,s){let c=s??Date.now(),l=await G(t,r);l!==null&&ur(l.status)||(await Hn(t,{frameId:r,executionId:n,...dr(l,i,o===void 0?null:c-o),status:`failed`,completedAt:c,durationMs:o??null,error:a}),await q(e,n))}function mr(e,t){return[e.on(s.frame.started,async n=>{let{executionId:r,frameId:i,nodeId:a,nodeType:o,path:s,startedAt:c}=n.payload;await K(`frame.started[${i}]`,async()=>{await Vn(t,{frameId:i,executionId:r,nodeId:a,nodeType:o,path:s,status:`running`,attempt:0,iteration:null,branchKey:null,startedAt:c??Date.now(),completedAt:null,durationMs:null,inputTokens:null,outputTokens:null,estimatedCost:null,error:null}),await q(e,r)})}),e.on(s.frame.completed,async n=>{let{executionId:r,frameId:i,nodeId:a,duration:o,completedAt:s}=n.payload;await K(`frame.completed[${i}]`,()=>fr(e,t,r,i,a,o,s))}),e.on(s.frame.failed,async n=>{let{executionId:r,frameId:i,nodeId:a,error:o,duration:s,completedAt:c}=n.payload;await K(`frame.failed[${i}]`,()=>pr(e,t,r,i,a,o,s,c))})]}const hr={user:`rejected`,timeout:`timed-out`,cancelled:`cancelled`};function gr(e,t){return[e.on(s.gate.suspended,async n=>{let{executionId:r,frameId:i,nodeId:a,prompt:o}=n.payload;await K(`gate.suspended[${i}]`,async()=>{await Kn(t,{id:Jn(r,a,i),executionId:r,nodeId:a,frameId:i,status:`waiting`,prompt:o??null,openedAt:Date.now(),resolvedAt:null,resumeData:null}),await q(e,r)})}),e.on(s.gate.resumed,async n=>{let{executionId:r,frameId:i,nodeId:a,resumeData:o}=n.payload;await K(`gate.resumed[${i}]`,async()=>{let n=Jn(r,a,i),s=await qn(t,n),c=Date.now();await Kn(t,{id:n,executionId:r,nodeId:a,frameId:i,status:`resumed`,prompt:s?.prompt??null,openedAt:s?.openedAt??c,resolvedAt:c,resumeData:o}),await q(e,r)})}),e.on(s.gate.resolved,async n=>_r(n.payload,e,t)),e.on(s.artifact.updated,async n=>{let{executionId:r,frameId:i,artifactRef:a,revision:o}=n.payload;await K(`artifact.updated[${r}:${i}]`,async()=>{let n=await nr(e,t,i,a,o);if(n===null)return;let s=Date.now();await Wn(t,{id:Gn(r,i,a.kind,a.id,s),executionId:r,frameId:i,nodeId:n.nodeId,artifact:n.artifact,revision:o??null,writtenAt:s}),await q(e,r)})})]}async function _r(e,t,n){let{executionId:r,frameId:i,stepId:a,source:o}=e;o===`user`&&e.action===`approve`||await K(`gate.resolved[${i}]`,async()=>{let s=Jn(r,a,i),c=await qn(n,s),l=Date.now();await Kn(n,{id:s,executionId:r,nodeId:a,frameId:i,status:o!==`cancelled`&&e.action===`approve`?`resumed`:hr[o],prompt:c?.prompt??null,openedAt:c?.openedAt??l,resolvedAt:l,resumeData:c?.resumeData??null}),await q(t,r)})}function vr(e,t){let n=[...cr(e,t),...mr(e,t),...gr(e,t),e.on(s.worklog.get,async e=>{let{executionId:n}=e.payload,r=await W(t,n);e.setResult({summary:r})}),e.on(s.worklog.frame.get,async e=>{let{frameId:n}=e.payload,r=await Un(t,n);e.setResult({frame:r})}),e.on(s.worklog.list,async e=>{let{workflowId:n,status:r,limit:i,offset:a}=e.payload,o=await Bn(t,{workflowId:n,status:r,limit:i,offset:a});e.setResult(o)}),e.on(s.worklog.stats,async e=>{let{workflowId:n,since:r,until:i}=e.payload,a=await tr(t,{workflowId:n,since:r,until:i});e.setResult({stats:a})})];return()=>{for(let e of n)e()}}function J(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>J(e,t[n]));if(e===null||t===null||typeof e!=`object`||typeof t!=`object`)return!1;let n=e,r=t,i=Object.keys(n).sort(),a=Object.keys(r).sort();return i.length===a.length&&i.every((e,t)=>e===a[t]&&J(n[e],r[e]))}function yr(e){return{executionId:e.executionId,frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,status:e.status,attempt:e.attempt,iteration:e.iteration??null,branchKey:e.branchKey??null,startedAt:e.startedAt??null,completedAt:e.completedAt??null,durationMs:e.durationMs??null,inputTokens:e.inputTokens??null,outputTokens:e.outputTokens??null,estimatedCost:e.estimatedCost??null,error:e.error??null}}function br(e,t){let n=e.frame;if(n!==void 0){let r=e.status===`failed`?e.error??null:null;if(n.executionId!==e.executionId)throw Error(`settleExternalExecution requires frame.executionId to match executionId`);if(n.status!==e.status)throw Error(`settleExternalExecution requires frame.status to match status`);if(n.completedAt!==t)throw Error(`settleExternalExecution requires frame.completedAt to match completedAt`);if(n.durationMs!==t-n.startedAt)throw Error(`settleExternalExecution requires frame.durationMs to match its timestamps`);if((n.error??null)!==r)throw Error(`settleExternalExecution requires frame.error to match terminal error metadata`)}return JSON.stringify({version:1,status:e.status,completedAt:t,error:e.status===`failed`?e.error??null:null,reason:e.status===`cancelled`?e.reason??null:null,frame:n===void 0?null:{executionId:n.executionId,frameId:n.frameId,nodeId:n.nodeId,nodeType:n.nodeType,path:n.path,status:n.status,attempt:n.attempt,iteration:n.iteration??null,branchKey:n.branchKey??null,startedAt:n.startedAt,completedAt:n.completedAt,durationMs:n.durationMs,error:n.status===`failed`?n.error??null:null}})}function xr(e,t,n){if(e!==t)throw Error(`settleExternalExecution: execution "${n}" conflicts with an existing terminal settlement fingerprint`)}async function Sr(e,t,n,r,i){let a=br(r,i);if(n.externalSettlementFingerprint!==null){xr(n.externalSettlementFingerprint,a,r.executionId);return}if(r.frame!==void 0)throw Error(`settleExternalExecution: frame presence conflicts with the legacy frame-less settlement for execution "${r.executionId}"`);let o=r.status===`failed`?r.error??null:null,s=r.status===`cancelled`?r.reason??null:null;if((await e.update(t).set({externalSettlementFingerprint:a}).where(k(N(t.id,r.executionId),P(t.externalSettlementFingerprint),N(t.status,r.status),N(t.completedAt,i),o===null?P(t.error):N(t.error,o),s===null?P(t.reason):N(t.reason,s))).returning({fingerprint:t.externalSettlementFingerprint})).length>0)return;let[c]=await e.select().from(t).where(N(t.id,r.executionId)).limit(1);if(c===void 0)throw Error(`settleExternalExecution: execution "${r.executionId}" disappeared`);if(wr(c,r,i),c.externalSettlementFingerprint===null)throw Error(`settleExternalExecution: failed to adopt terminal settlement fingerprint for execution "${r.executionId}"`);xr(c.externalSettlementFingerprint,a,r.executionId)}function Cr(e,t){if(e.executionId!==t.executionId||e.nodeId!==t.nodeId||e.nodeType!==t.nodeType||!J(e.path,t.path)||e.attempt!==t.attempt||e.iteration!==(t.iteration??null)||e.branchKey!==(t.branchKey??null)||e.startedAt!==t.startedAt)throw Error(`settleExternalExecution: frame "${t.frameId}" conflicts with its registered metadata`)}function wr(e,t,n){let r=t.status===`failed`?t.error??null:null,i=t.status===`cancelled`?t.reason??null:null;if(e.status!==t.status||e.completedAt!==n||e.error!==r||e.reason!==i)throw e.status===t.status?Error(`settleExternalExecution: execution "${t.executionId}" conflicts with an existing terminal settlement`):Error(`settleExternalExecution: execution "${t.executionId}" cannot transition from status "${e.status}"`)}async function Tr(e,t,n){let r=await e.select().from(t).where(N(t.executionId,n.executionId)),i=r.find(e=>e.frameId===n.frame.frameId);if(i!==void 0)return i;if(r.length>0)throw Error(`settleExternalExecution: frame "${n.frame.frameId}" conflicts with the registered frame identity`);let[a]=await e.select().from(t).where(N(t.frameId,n.frame.frameId)).limit(1);if(a!==void 0)throw Error(`settleExternalExecution: frame "${n.frame.frameId}" belongs to another execution`)}function Er(e,t,n,r){let i=Math.min(e.startedAt,r);return{executionId:e.id,workflowId:e.workflowId,workflowName:t?.workflowName??null,status:n.status,startedAt:i,completedAt:r,durationMs:r-i,totalInputTokens:t?.totalInputTokens??null,totalOutputTokens:t?.totalOutputTokens??null,totalEstimatedCost:t?.totalEstimatedCost??null,error:n.status===`failed`?n.error??null:null,failedNodeId:n.status===`failed`?n.frame?.nodeId??t?.failedNodeId??null:null}}function Dr(e,t){return yr({...e,inputTokens:e.inputTokens??t?.inputTokens??void 0,outputTokens:e.outputTokens??t?.outputTokens??void 0,estimatedCost:e.estimatedCost??t?.estimatedCost??void 0})}function Or(e,t){if(e.externalRegistrationFrameId!==(t.externalRegistrationFrameId??null))throw Error(`setExternalExecutionStart: frame metadata conflicts for execution "${t.id}"`);if(!(e.id===t.id&&e.workflowId===t.workflowId&&e.coordinatorSessionId===t.coordinatorSessionId&&e.startedAt===t.startedAt&&e.scopeType===t.scopeType&&e.scopeKind===t.scopeKind&&e.scopeId===t.scopeId&&e.artifactKind===t.artifactKind&&e.artifactId===t.artifactId&&J(e.inputs,t.inputs)&&J(e.triggerPayload,t.triggerPayload)))throw Error(`setExternalExecutionStart: registration conflicts for execution "${t.id}"`)}function kr(e,t){if(e.workflowId!==t.workflowId||e.startedAt!==t.startedAt||e.executionId!==t.executionId)throw Error(`setExternalExecutionStart: WorkLog summary conflicts for execution "${t.executionId}"`)}function Ar(e,t){if(e.executionId!==t.executionId||e.frameId!==t.frameId||e.nodeId!==t.nodeId||e.nodeType!==t.nodeType||!J(e.path,t.path)||e.attempt!==t.attempt||e.iteration!==(t.iteration??null)||e.branchKey!==(t.branchKey??null)||e.startedAt!==t.startedAt)throw Error(`setExternalExecutionStart: WorkLog frame conflicts for frame "${t.frameId}"`)}async function jr(e,t,n,r){if(!t.id.startsWith(b))throw Error(`setExternalExecutionStart: execution "${t.id}" is not an external execution ID`);if(n!==void 0&&n.executionId!==t.id)throw Error(`setExternalExecutionStart requires frame.executionId to match execution.id`);let{workflowExecutions:i,worklogSummaries:a,worklogFrameEntries:o}=D(e,L),s={...r(t),externalRegistrationFrameId:n?.frameId??null},c={executionId:t.id,workflowId:t.workflowId,workflowName:null,status:`running`,startedAt:t.startedAt,completedAt:null,durationMs:null,totalInputTokens:null,totalOutputTokens:null,totalEstimatedCost:null,error:null,failedNodeId:null};await E(e,async e=>{let r=(await e.insert(i).values(s).onConflictDoNothing().returning({id:i.id})).length===0;if(r){let[n]=await e.select().from(i).where(N(i.id,t.id)).limit(1);if(n===void 0)throw Error(`setExternalExecutionStart: execution "${t.id}" disappeared`);Or(n,s)}let[l]=await e.select().from(a).where(N(a.executionId,t.id)).limit(1);if(l===void 0?await e.insert(a).values(c):kr(l,c),n!==void 0){let[i]=await e.select().from(o).where(N(o.frameId,n.frameId)).limit(1);if(i===void 0){if(r)throw Error(`setExternalExecutionStart: frame metadata conflicts for execution "${t.id}"`);await e.insert(o).values(yr(n))}else Ar(i,n)}})}async function Mr(e,t,n,r,i){if(r.frame!==void 0){let n=await Tr(e,t,r);return n!==void 0&&Cr(n,r.frame),{frame:r.frame,existing:n}}if(n.externalRegistrationFrameId===null)return;let[a]=await e.select().from(t).where(N(t.frameId,n.externalRegistrationFrameId)).limit(1);if(a===void 0||a.executionId!==n.id)throw Error(`settleExternalExecution: registered frame "${n.externalRegistrationFrameId}" is unavailable for execution "${n.id}"`);if(a.startedAt===null)throw Error(`settleExternalExecution: registered frame "${a.frameId}" has no start timestamp`);if(i<a.startedAt)throw Error(`settleExternalExecution: completedAt must not precede the registered frame start timestamp`);let o=Et.parse(a.nodeType);return{frame:{executionId:a.executionId,frameId:a.frameId,nodeId:a.nodeId,nodeType:o,path:a.path,status:r.status,attempt:a.attempt,...a.iteration===null?{}:{iteration:a.iteration},...a.branchKey===null?{}:{branchKey:a.branchKey},startedAt:a.startedAt,completedAt:i,durationMs:i-a.startedAt,...r.status===`failed`&&r.error!==void 0?{error:r.error}:{}},existing:a}}async function Nr(e,t,n,r,i){let{worklogSummaries:a,worklogFrameEntries:o}=t,s=await Yn(e,a,n.id),c=await Mr(e,o,n,r,i),l=c===void 0?r:{...r,frame:c.frame};if(c!==void 0){let t=Dr(c.frame,c.existing);await e.insert(o).values(t).onConflictDoUpdate({target:o.frameId,set:t})}let u=await Xn(e,o,n.id),d=Zn(u),f={totalInputTokens:u.totalInputTokens,totalOutputTokens:u.totalOutputTokens,totalEstimatedCost:u.totalEstimatedCost},p={...Er(n,s,l,i),...d?f:{}};await e.insert(a).values(p).onConflictDoUpdate({target:a.executionId,set:zn(p)}),d&&await Qn(e,a,n.id,u)}async function Pr(e,t){if(!t.executionId.startsWith(b))throw Error(`settleExternalExecution: execution "${t.executionId}" is engine-owned and must use the engine finalizer`);if(t.frame!==void 0&&t.frame.executionId!==t.executionId)throw Error(`settleExternalExecution requires frame.executionId to match executionId`);let{workflowExecutions:n,worklogSummaries:r,worklogFrameEntries:i}=D(e,L);return E(e,async e=>{let[a]=await e.select().from(n).where(N(n.id,t.executionId)).limit(1);if(a===void 0)throw Error(`settleExternalExecution: execution "${t.executionId}" was not registered`);let o=t.completedAt??a.completedAt??Date.now();if(a.status===`running`){let r=br(t,o);if((await e.update(n).set({status:t.status,completedAt:o,error:t.status===`failed`?t.error??null:null,reason:t.status===`cancelled`?t.reason??null:null,externalSettlementFingerprint:r}).where(k(N(n.id,t.executionId),N(n.status,`running`),P(n.externalSettlementFingerprint))).returning({id:n.id})).length===0){let[r]=await e.select().from(n).where(N(n.id,t.executionId)).limit(1);if(r===void 0)throw Error(`settleExternalExecution: execution "${t.executionId}" disappeared`);t.completedAt===void 0&&r.completedAt!==null&&(o=r.completedAt),wr(r,t,o),await Sr(e,n,r,t,o)}}else wr(a,t,o),await Sr(e,n,a,t,o);return await Nr(e,{worklogSummaries:r,worklogFrameEntries:i},a,t,o),!0})}function Fr(e,t,n){let r=e.on(_.setExternalExecutionStart,async r=>{let i=r.payload.execution,a=r.payload.frame;await jr(t,i,a,n),await q(e,i.id),r.setResult({executionId:i.id,...a===void 0?{}:{frameId:a.frameId}})}),i=e.on(_.settleExternalExecution,async n=>{let r=await Pr(t,n.payload);await q(e,n.payload.executionId),n.setResult({success:r})});return()=>{r(),i()}}function Y(e){return{executionId:e.executionId,workflowId:e.workflowId,finalizerId:e.finalizerId,transitionKey:e.transitionKey,claimToken:e.claimToken,intent:e.intent,claimedAt:e.claimedAt}}function Ir(e,t){return e.state===`claimed`&&e.executionId===t.executionId&&e.workflowId===t.workflowId&&e.finalizerId===t.finalizerId&&e.transitionKey===t.transitionKey&&e.claimToken===t.claimToken&&e.intent.status===t.intent.status&&e.intent.completedAt===t.intent.completedAt&&e.intent.error===t.intent.error&&e.intent.reason===t.intent.reason}function Lr(e,t){if(e.executionId!==t.executionId||e.workflowId!==t.workflowId||e.finalizerId!==t.finalizerId||e.transitionKey!==t.transitionKey||e.claimToken!==t.claimToken)throw Error(`workflow finalization publication claim does not match durable transition ${t.executionId}`)}async function Rr(e,t){let{workflowExecutions:n,workflowFinalizations:r}=D(e,L);return E(e,async e=>{let i=await e.select().from(r).where(N(r.executionId,t.executionId)).limit(1);return i[0]?Ir(i[0],t):(await e.update(n).set({status:`finalizing`}).where(k(N(n.id,t.executionId),N(n.workflowId,t.workflowId),N(n.status,`running`))).returning({id:n.id})).length===0?!1:(await e.insert(r).values({...t,state:`claimed`}),!0)})}function zr(e){return{status:e.status,completedAt:e.completedAt,error:e.status===`failed`?e.error??`Workflow finalization failed`:null,reason:e.status===`cancelled`?e.reason??null:null}}async function Br(e,t,n,r){let{workflowExecutions:i,workflowFinalizations:a}=D(e,L);return E(e,async e=>{let o=(await e.select().from(a).where(N(a.executionId,t)).limit(1))[0];return!o||o.claimToken!==n||o.state===`failed`?!1:o.state===`acknowledged`?!0:(await e.update(i).set(zr(o.intent)).where(k(N(i.id,t),N(i.status,`finalizing`))).returning({id:i.id})).length===0?!1:(await e.update(a).set({state:`acknowledged`,settledAt:r}).where(k(N(a.executionId,t),N(a.claimToken,n),N(a.state,`claimed`))),!0)})}async function Vr(e,t,n,r,i){let{workflowExecutions:a,workflowFinalizations:o}=D(e,L);return E(e,async e=>{let s=(await e.select().from(o).where(N(o.executionId,t)).limit(1))[0];return!s||s.claimToken!==n||s.state===`acknowledged`?!1:s.state===`failed`?!0:(await e.update(a).set({status:`failed`,error:r,reason:null,completedAt:i}).where(k(N(a.id,t),N(a.status,`finalizing`))).returning({id:a.id})).length===0?!1:(await e.update(o).set({state:`failed`,failure:r,settledAt:i}).where(k(N(o.executionId,t),N(o.claimToken,n),N(o.state,`claimed`))),!0)})}async function Hr(e,t,n){let{workflowExecutions:r,workflowFinalizations:i}=D(t,L),a=(await t.select().from(i).where(N(i.executionId,n.executionId)).limit(1))[0];if(!a||(Lr(a,n),a.state===`claimed`||a.publishedAt!==null))return;let o=(await t.select({startedAt:r.startedAt,status:r.status,error:r.error,reason:r.reason,completedAt:r.completedAt}).from(r).where(N(r.id,a.executionId)).limit(1))[0];if(!(!o||o.completedAt==null)){if(o.status===`completed`)await e.emit(s.execution.completed,{executionId:a.executionId,workflowId:a.workflowId,totalDuration:o.completedAt-o.startedAt,completedAt:o.completedAt,transitionKey:a.transitionKey});else if(o.status===`failed`)await e.emit(s.execution.failed,{executionId:a.executionId,workflowId:a.workflowId,error:o.error??`Workflow finalization failed`,completedAt:o.completedAt,transitionKey:a.transitionKey});else if(o.status===`cancelled`)await e.emit(s.execution.cancelled,{executionId:a.executionId,workflowId:a.workflowId,reason:o.reason??void 0,completedAt:o.completedAt,transitionKey:a.transitionKey});else return;await O(t,()=>t.update(i).set({publishedAt:Date.now()}).where(k(N(i.executionId,a.executionId),P(i.publishedAt))))}}function Ur(e,t){let n=new Map;return async r=>{let i=(n.get(r.executionId)??Promise.resolve()).catch(()=>void 0).then(()=>Hr(e,t,r));n.set(r.executionId,i);try{await i}finally{n.get(r.executionId)===i&&n.delete(r.executionId)}}}function Wr(e,t){let n=Ur(e,t),r=e.on(_.claimFinalization,async e=>{e.setResult({claimed:await Rr(t,e.payload.claim)})}),i=e.on(_.listClaimedFinalizations,async e=>{let{workflowFinalizations:n}=D(t,L),r=await t.select().from(n).where(k(N(n.finalizerId,e.payload.finalizerId),N(n.state,`claimed`)));e.setResult({claims:r.map(Y)})}),a=e.on(_.listUnpublishedFinalizations,async e=>{let{workflowFinalizations:n}=D(t,L),r=await t.select().from(n).where(k(Wt(N(n.state,`acknowledged`),N(n.state,`failed`)),N(n.finalizerId,e.payload.finalizerId),P(n.publishedAt)));e.setResult({claims:r.map(Y)})}),o=e.on(_.publishFinalization,async e=>{await n(e.payload.claim),e.setResult({})}),s=e.on(_.acknowledgeFinalization,async e=>{let{executionId:r,claimToken:i,settledAt:a}=e.payload,o=await Br(t,r,i,a);if(e.setResult({acknowledged:o}),!o)return;let{workflowFinalizations:s}=D(t,L),c=await t.select().from(s).where(N(s.executionId,r)).limit(1);c[0]&&await n(Y(c[0]))}),c=e.on(_.failFinalization,async e=>{let{executionId:r,claimToken:i,error:a,settledAt:o}=e.payload,s=await Vr(t,r,i,a,o);if(e.setResult({failed:s}),!s)return;let{workflowFinalizations:c}=D(t,L),l=await t.select().from(c).where(N(c.executionId,r)).limit(1);l[0]&&await n(Y(l[0]))});return()=>{r(),i(),a(),o(),s(),c()}}function Gr(e){return{id:e.id,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId??void 0,status:e.status,inputs:e.inputs,config:{},error:e.error??void 0,reason:e.reason??void 0,startedAt:e.startedAt,completedAt:e.completedAt??void 0,triggerPayload:e.triggerPayload??void 0,...e.artifactKind!==null&&e.artifactId!==null?{artifactRef:{kind:e.artifactKind,id:e.artifactId}}:{},scope:z(e)}}function X(e){let t=R(e.scope);return{id:e.id,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId??null,status:e.status,inputs:e.inputs,error:e.error??null,reason:e.reason??null,startedAt:e.startedAt,completedAt:e.completedAt??null,triggerPayload:e.triggerPayload??null,artifactKind:e.artifactRef?.kind??null,artifactId:e.artifactRef?.id??null,...t}}function Kr(e,t,n,r,i,a){let o=[...e?[N(a.workflowId,e)]:[],...n?[N(a.status,n)]:[],...i===void 0?[]:[N(a.artifactKind,i.kind),N(a.artifactId,i.id)]];if(t&&o.push(...mn(a,t)),r){let e=Wt(Vt(a.startedAt,r.startedAt),k(N(a.startedAt,r.startedAt),Vt(a.id,r.id)));e&&o.push(e)}return o}async function qr(e,t,n,r,i){if(n.executionId!==t.id)throw Error(`setExecutionStart requires execution.id to match runContext.executionId`);for(let e of i??[])if(e.targetExecutionId!==t.id)throw Error(`setExecutionStart requires executionLinks.targetExecutionId to match execution.id`);let{workflowExecutions:a,workflowRunContexts:o,workflowExecutionState:s,workflowExecutionStateEvents:c,workflowExecutionLinks:l}=D(e,L),u=X(t);await E(e,async d=>{await d.insert(a).values(u).onConflictDoUpdate({target:a.id,set:u});let f=(n.dispatchMetadata===void 0?await d.select({dispatchMetadata:o.dispatchMetadata}).from(o).where(N(o.executionId,n.executionId)).limit(1):[])[0]?.dispatchMetadata;if(await An(d,n.dispatchMetadata===void 0&&f!=null?{...n,dispatchMetadata:f}:n,o),r!==void 0){let n=Date.now(),i=U(e,r);await d.insert(s).values({executionId:t.id,sequence:0,value:i,updatedAt:n}).onConflictDoNothing(),await d.insert(c).values({executionId:t.id,sequence:0,patch:[],value:i,createdAt:n}).onConflictDoNothing()}for(let e of i??[])await d.insert(l).values(e).onConflictDoUpdate({target:[l.sourceExecutionId,l.targetExecutionId],set:e})})}async function Jr(e,t,n){if(n.executionId!==t.id)throw Error(`restorePausedGateResumeState requires execution.id to match gate.executionId`);if(t.status!==`paused`||n.status!==`waiting`)throw Error(`restorePausedGateResumeState requires a paused execution and waiting gate`);let{workflowExecutions:r,workflowGateInstances:i}=D(e,L),a=X(t),o=H(n);await E(e,async e=>{await e.insert(r).values(a).onConflictDoUpdate({target:r.id,set:a}),await e.insert(i).values(o).onConflictDoUpdate({target:i.id,set:o})})}async function Yr(e,t,n,r){let{workflowExecutions:i,workflowGateInstances:a}=D(e,L);return E(e,async e=>{if((await e.select().from(i).where(N(i.id,t)).limit(1))[0]?.status!==`paused`)return{cancelled:!1,gates:[]};let o=(await e.select().from(a).where(k(N(a.executionId,t),N(a.status,`waiting`)))).map(e=>({...V(e),status:`cancelled`,resolvedAt:n}));await e.update(i).set({status:`cancelled`,completedAt:n,reason:r??null}).where(N(i.id,t));for(let t of o){let n=H(t);await e.update(a).set(n).where(N(a.id,n.id))}return{cancelled:!0,gates:o}})}async function Xr(e,t,n,r,i,a){let{workflowExecutions:o}=D(e,L);return E(e,async e=>{if((await e.select({id:o.id}).from(o).where(N(o.id,t)).limit(1))[0]===void 0)return!1;let s={};return n!==void 0&&(s.status=n),r!==void 0&&(s.error=r),i!==void 0&&(s.reason=i),a!==void 0&&(s.completedAt=a),Object.keys(s).length>0&&await e.update(o).set(s).where(N(o.id,t)),!0})}function Zr(e,t){let{workflowExecutions:n}=D(t,L),r=e.on(_.getExecution,async e=>{let{executionId:r}=e.payload;if(!g(e,r))throw Error(`Unauthorized execution read: ${r}`);let i=await t.select().from(n).where(N(n.id,r));e.setResult({execution:i[0]?Gr(i[0]):null})}),i=e.on(_.setExecution,async e=>{let r=e.payload.execution,i=X(r);await O(t,()=>t.insert(n).values(i).onConflictDoUpdate({target:n.id,set:i})),e.setResult({id:r.id})}),a=e.on(_.setExecutionStart,async e=>{let n=e.payload.execution,r=e.payload.runContext;await qr(t,n,r,e.payload.initialState,e.payload.executionLinks),e.setResult({id:n.id,executionId:n.id})}),o=e.on(_.restorePausedGateResumeState,async e=>{let n=e.payload.execution,r=e.payload.gate;await Jr(t,n,r),e.setResult({executionId:n.id,gateId:r.nodeId})}),s=e.on(_.updateExecution,async e=>{let{executionId:n,status:r,error:i,reason:a,completedAt:o}=e.payload,s=await Xr(t,n,r,i,a,o);e.setResult({success:s})}),c=e.on(_.pauseRunningExecution,async e=>{let{workflowExecutions:n}=D(t,L),r=await O(t,()=>t.update(n).set({status:`paused`}).where(k(N(n.id,e.payload.executionId),N(n.status,`running`))).returning({id:n.id}));e.setResult({paused:r.length===1})}),l=e.on(_.cancelPausedExecution,async e=>{let{executionId:n,completedAt:r,reason:i}=e.payload;e.setResult(await Yr(t,n,r,i))});return()=>{r(),i(),a(),o(),s(),c(),l()}}function Qr(e,t){let{workflowExecutions:n}=D(t,L),r=e.on(_.listExecutions,async e=>{let{workflowId:r,scope:i,status:a,limit:o,cursor:s,artifactRef:c}=e.payload;if(r===void 0&&i===void 0&&c===void 0)throw Error(`Either workflowId, scope, or artifactRef is required to list executions.`);let l=Kr(r,i,a,s,c,n),u=o??mt;if(!Number.isInteger(u)||u<y||u>v)throw Error(`Execution list limit must be an integer between ${y} and ${v}.`);let d=await t.select().from(n).where(k(...l)).orderBy(M(n.startedAt),M(n.id)).limit(u);e.setResult({executions:d.map(Gr)})}),i=e.on(_.listExecutionsByArtifactRefs,async e=>{let r=ht.safeParse(e.payload);if(!r.success)throw Error(`Invalid listExecutionsByArtifactRefs query: ${r.error.message}`);let{refs:i,limitPerRef:a}=r.data,o={};for(let e of i){let r=await t.select().from(n).where(k(N(n.artifactKind,e.kind),N(n.artifactId,e.id))).orderBy(M(n.startedAt),M(n.id)).limit(a);r.length>0&&(o[Mt(e)]=r.map(Gr))}e.setResult({executionsByRef:o})});return()=>{r(),i()}}function $r(e,t){let n=gn(e,t),r=Zr(e,t),i=Qr(e,t),a=yn(e,t),o=Sn(e,t),s=Tn(e,t),c=jn(e,t),l=Fn(e,t),u=vr(e,t),d=Fr(e,t,X),f=Wr(e,t);return()=>{n(),r(),i(),a(),o(),s(),c(),l(),u(),d(),f()}}function ei(e){return e.startsWith(b)}function ti(e){let t={};return e.artifactRef!==void 0&&(t.artifactRef=e.artifactRef),e.triggerPayload!==void 0&&(t.triggerPayload=e.triggerPayload),t}function ni(e){if(e.status===`failed`){if(e.error===void 0)throw Error(`status 'failed' requires a non-empty 'error' message`);return{error:e.error}}if(e.status===`cancelled`){if(e.reason===void 0)throw Error(`status 'cancelled' requires a non-empty 'reason' string`);return{reason:e.reason}}return{}}async function ri(e,t){let{runContext:n}=await e.request(_.getRunContext,{executionId:t});if(n===null)throw Error(`Run context not found for execution: ${t}`);if(n.definitionSnapshot!==void 0)return n.definitionSnapshot;let{workflow:r}=await e.request(_.get,{id:n.workflowId});return r??void 0}function ii(e){return[e.on(s.getDefinition,async t=>{let n=await e.request(_.get,{id:t.payload.id});t.setResult(n)}),e.on(s.setDefinition,async t=>{let n=await e.request(_.set,{workflow:t.payload.workflow});t.setResult(n)}),e.on(s.deleteDefinition,async t=>{let n=await e.request(_.delete,{id:t.payload.id});t.setResult(n)}),e.on(s.listDefinitions,async t=>{let n=await e.request(_.list,t.payload);t.setResult(n)}),e.on(s.getExecution,async t=>{let n=await e.request(_.getExecution,{executionId:t.payload.executionId});t.setResult(n)}),e.on(s.listExecutions,async t=>{let n=await e.request(_.listExecutions,t.payload);t.setResult(n)}),e.on(s.listExecutionsByArtifactRefs,async t=>{let n=await e.request(_.listExecutionsByArtifactRefs,t.payload);t.setResult(n)}),e.on(s.listSpans,async t=>{let n=await e.request(_.listSpans,{executionId:t.payload.executionId});t.setResult(n)}),e.on(s.listFrames,async t=>{let n=await e.request(_.listFrames,{executionId:t.payload.executionId});t.setResult(n)}),e.on(s.listGateInstances,async t=>{let n=await e.request(_.listGateInstances,t.payload);t.setResult(n)}),e.on(s.setExecutionLink,async t=>{let n=await e.request(_.setExecutionLink,{link:t.payload.link});t.setResult(n)}),e.on(s.listExecutionLinks,async t=>{let n=await e.request(_.listExecutionLinks,t.payload);t.setResult(n)}),e.on(s.getRunContext,async t=>{let{executionId:n}=t.payload;if(!g(t,n))throw Error(`Unauthorized: caller is not permitted to read run context for execution: ${n}`);let{runContext:r}=await e.request(_.getRunContext,{executionId:n});if(!r)throw Error(`Run context not found for execution: ${n}`);t.setResult(r)}),...ai(e)]}function ai(e){return[e.on(s.registerExternalExecution,async t=>{let n=ae.registerExternalExecution.request.parse(t.payload),{name:r,scope:i,input:a}=n;if(n.executionId!==void 0&&!t.origin.local)throw Error(`registerExternalExecution: caller-supplied executionId is restricted to local callers`);let o=n.executionId??nt(`wfx-ext`);if(!ei(o))throw Error(`registerExternalExecution: executionId must use the wfx-ext- prefix`);let s=n.startedAt??Date.now(),c={id:o,workflowId:r,status:`running`,inputs:a===void 0?{}:a,startedAt:s,scope:i??{type:`global`},...ti(n)},l=oi(o,s,n.frame),u=await e.request(_.setExternalExecutionStart,{execution:c,...l===void 0?{}:{frame:l}});t.setResult(u)}),e.on(s.completeExternalExecution,async t=>{let n=ae.completeExternalExecution.request.parse(t.payload),{executionId:r,status:i}=n;if(!g(t,r))throw Error(`Unauthorized: caller is not permitted to settle execution: ${r}`);if(!ei(r))throw Error(`completeExternalExecution: execution "${r}" is engine-owned and must be completed through the engine finalizer, not this API`);let a=si(n),o=await e.request(_.settleExternalExecution,{executionId:r,status:i,...ni(n),...n.completedAt===void 0?{}:{completedAt:n.completedAt},...a===void 0?{}:{frame:a}});t.setResult({success:o.success})})]}function oi(e,t,n){if(n===void 0)return;let r=n.frameId??`${e}:${n.nodeId}`;return{executionId:e,frameId:r,nodeId:n.nodeId,nodeType:n.nodeType,path:n.path??[r],status:`running`,attempt:n.attempt,...n.iteration===void 0?{}:{iteration:n.iteration},...n.branchKey===void 0?{}:{branchKey:n.branchKey},startedAt:n.startedAt??t}}function si(e){if(e.frame===void 0)return;if(e.completedAt===void 0)throw Error(`completedAt is required when frame metadata is supplied`);let t=e.completedAt-e.frame.startedAt;if(t<0)throw Error(`completedAt must not precede frame.startedAt`);if(e.frame.durationMs!==void 0&&e.frame.durationMs!==t)throw Error(`frame.durationMs must equal completedAt - frame.startedAt`);return{executionId:e.executionId,frameId:e.frame.frameId,nodeId:e.frame.nodeId,nodeType:e.frame.nodeType,path:e.frame.path,status:e.status,attempt:e.frame.attempt,...e.frame.iteration===void 0?{}:{iteration:e.frame.iteration},...e.frame.branchKey===void 0?{}:{branchKey:e.frame.branchKey},startedAt:e.frame.startedAt,completedAt:e.completedAt,durationMs:t,...e.status===`failed`&&e.error!==void 0?{error:e.error}:{}}}function ci(e){return[e.on(s.state.get,async t=>{let{executionId:n}=t.payload;if(!g(t,n))throw Error(`Unauthorized: caller is not permitted to read state for execution: ${n}`);let{state:r}=await e.request(_.getState,{executionId:n});if(r===null)throw Error(`no workflow state for execution ${n}`);t.setResult(r)}),e.on(s.state.patch,async t=>{let{executionId:n,expectedSequence:r,patch:i,nextValue:a}=t.payload;if(!g(t,n))throw Error(`Unauthorized: caller is not permitted to patch state for execution: ${n}`);if(r===void 0)throw Error(`expectedSequence is required to patch workflow state`);let o=await ri(e,n);o!==void 0&&ue(o,a,`next`),gt.array().parse(i);let c=await e.request(_.patchState,{executionId:n,expectedSequence:r,nextValue:a});e.emit(s.state.updated,{executionId:c.executionId,sequence:c.sequence,patch:c.patch,value:c.value,updatedAt:Date.now()}).catch(()=>{}),t.setResult({executionId:c.executionId,sequence:c.sequence,value:c.value})})]}async function li(e,t){let{runContext:n}=await e.bus.request(_.getRunContext,{executionId:t});if(n===null)throw new w(St.RUN_CONTEXT_NOT_FOUND,`Run context not found for workflow execution '${t}'.`);return n}function ui(e,t){return t===void 0?{mode:e}:{mode:e,reason:t}}async function di(e,t){let n=await li(e,t.executionId),r=t.input===void 0?n.inputs:t.input,i=t.config??n.config??{},a=t.triggerPayload??n.triggerPayload,o=t.artifactRef??n.artifactRef,s=t.scopeOverride??n.scope,c={input:r,config:i,parentSessionId:t.parentSessionId,triggerPayload:a,artifactRef:o,scopeOverride:s,executionLinks:e=>[{sourceExecutionId:t.executionId,targetExecutionId:e,linkType:`rerun-of`,metadata:ui(t.mode,t.reason)}]};return t.mode===`snapshot`?await hi(e,n,c):pi(n)?await gi(e,n,c):await Ce(e,n.workflowId,c)}function fi(e,t){return pi(e)?t.id:e.workflowId}function pi(e){return e.source.kind!==`definition`&&e.workflowId===e.executionId}function mi(e){let t=e.definitionSnapshot;if(t===void 0)throw new w(St.SNAPSHOT_UNAVAILABLE,`Workflow execution '${e.executionId}' does not have a definition snapshot.`);return t}async function hi(e,t,n){let r=mi(t);return Le(e,fi(t,r),{workflow:r,executionSource:t.source,definitionSnapshot:r,input:n.input,config:n.config,parentSessionId:n.parentSessionId,triggerPayload:n.triggerPayload,artifactRef:n.artifactRef,scopeOverride:n.scopeOverride,executionLinks:n.executionLinks,...t.materializationSpec===void 0?{}:{materializationSpec:t.materializationSpec}})}async function gi(e,t,n){if(t.definitionSnapshot===void 0&&t.source.kind===`path`){let{materializationSpec:r}=t;if(r===void 0)throw Error(`Invalid persisted path-backed run context: materializationSpec is required`);return Ue(e,t.source.path,{...n,materializationSpec:r})}let r=mi(t);return Le(e,r.id,{workflow:r,executionSource:t.source,input:n.input,config:n.config,parentSessionId:n.parentSessionId,triggerPayload:n.triggerPayload,artifactRef:n.artifactRef,scopeOverride:n.scopeOverride,executionLinks:n.executionLinks,...t.materializationSpec===void 0?{}:{materializationSpec:t.materializationSpec}})}var _i=class{bus;resumePausedExecution;handles=new Map;constructor(e,t){this.bus=e,this.resumePausedExecution=t}dispose(){for(let e of this.handles.values())clearTimeout(e);this.handles.clear()}clear(e,t,n){let r=this.makeKey(e,t,n),i=this.handles.get(r);i!==void 0&&(clearTimeout(i),this.handles.delete(r))}schedule(e){e.timeoutMs!==null&&(this.clear(e.executionId,e.nodeId,e.frameId),this.scheduleNextWakeup({...e,timeoutMs:e.timeoutMs}))}scheduleNextWakeup(e){let t=this.makeKey(e.executionId,e.nodeId,e.frameId),n=Math.max(0,e.openedAt+e.timeoutMs-Date.now()),r=setTimeout(()=>{if(this.handles.delete(t),Date.now()<e.openedAt+e.timeoutMs){this.scheduleNextWakeup(e);return}this.handleExpiredWakeup(e)},Math.min(n,2147483647));this.handles.set(t,r)}scheduleNextWakeupAfterDelay(e,t){let n=this.makeKey(e.executionId,e.nodeId,e.frameId),r=setTimeout(()=>{this.handles.delete(n),this.handleExpiredWakeup(e)},t);this.handles.set(n,r)}async handleExpiredWakeup(e){try{await this.resumeTimedOutPausedGate(e)===`retry`&&this.scheduleNextWakeupAfterDelay(e,25)}catch(t){this.scheduleFailedWakeupRetry(e,t)}}scheduleFailedWakeupRetry(e,t){let n=(e.failedWakeupAttempts??0)+1;if(n>4){console.error(`[WorkflowExecutor] Giving up on timed-out gate '${e.nodeId}' after 4 failed wakeup retries:`,t);return}let r=Math.min(250*2**(n-1),2e3);console.error(`[WorkflowExecutor] Failed to resume timed-out gate '${e.nodeId}', retrying in ${r} ms:`,t),this.scheduleNextWakeupAfterDelay({...e,failedWakeupAttempts:n},r)}makeKey(e,t,n){return`${e}:${t}:${n}`}async resumeTimedOutPausedGate(e){this.clear(e.executionId,e.nodeId,e.frameId);let{gate:t}=await this.bus.request(_.getGateInstance,{executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId});if(t===null||t.status!==`waiting`)return`settled`;let{execution:n}=await this.bus.request(_.getExecution,{executionId:e.executionId});return n?.status===`running`?`retry`:n?.status===`paused`?(await this.resumePausedExecution(e.executionId),`resumed`):`settled`}};function vi(e){if(e!==void 0)return yi(e)?e:{}}function yi(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function bi(e){if(e!==void 0)return _t.parse(e)}function xi(e,t){return wt.parse({executionId:e.executionId,workflowId:e.workflowId,source:e.source,...e.definitionSnapshot===void 0?{}:{definitionSnapshot:e.definitionSnapshot},workerManifest:{contributionRefs:[]},inputs:e.inputs,config:e.config,scope:e.scope,triggerPayload:e.triggerPayload,triggerMode:e.triggerMode??`immediate`,...e.artifactRef===void 0?{}:{artifactRef:e.artifactRef},coordinatorSessionId:e.coordinatorSessionId,cancelSubject:`workflow.${e.executionId}.cancel`,env:t.platformDefaults.env??{},createdAt:Date.now(),suspensionStrategy:e.suspensionStrategy??`wait-in-process`,...e.terminalAuthority===void 0?{}:{terminalAuthority:e.terminalAuthority},...e.materializationSpec===void 0?{}:{materializationSpec:e.materializationSpec}})}function Si(e){return e?.status===`paused`}function Ci(e){return e?.status===`waiting`}async function wi(e,t,n,r,i,a,o){try{await h(e,i.id,async()=>{let o=await e.bus.request(_.getExecution,{executionId:i.id});o.execution?.status!==`paused`&&o.execution?.status!==`running`||(t.delete(i.id),n.delete(i.id),r.delete(i.id),await e.bus.request(_.restorePausedGateResumeState,{execution:i,gate:a}))})}catch(e){console.error(`[WorkflowExecutor] Failed to restore paused gate '${o}' after resume launch failure:`,e)}}async function Ti(e,t){if(t.suspensionStrategy===`wait-in-process`)return;let{frames:n}=await e.request(_.listFrames,{executionId:t.executionId});if(n.length===0)throw Error(`[WorkflowExecutor] Missing resume frames for paused execution: ${t.executionId}`)}function Ei(e){return{executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId,timeoutMs:e.timeoutMs,openedAt:e.createdAt}}async function Di(e,t){if(t.frameId!==void 0){let{gate:n}=await e.request(_.getGateInstance,t);return Ci(n)?n:null}let{gates:n}=await e.request(_.listGateInstances,{executionId:t.executionId}),r=n.filter(e=>e.nodeId===t.nodeId&&e.status===`waiting`);return r.length===1?r[0]:null}async function Oi(e,t){let n=e.authority.canonicalizeOutcome(t.outcome),r=t.runtimeFence===void 0?void 0:{...t.runtimeFence};await e.validation?.validate(t.executionId,n.outcome);let i=await e.authority.commitOutcome(t.executionAttemptId,t.executionId,n,r);if(i.kind===`accepted`||i.kind===`duplicate`){let n=await e.convergence.converge({executionId:t.executionId,executionAttemptId:t.executionAttemptId,outcome:i.outcome,decision:i.kind,controlObservation:structuredClone(i.controlObservation)});e.authority.settleOutcome(t.executionAttemptId,{kind:i.kind,outcome:e.authority.decodeOutcome(i.text),text:i.text,controlObservation:i.controlObservation,acceptance:n})}return i.kind}function Z(e,t){let n=c(e);if(n===null)throw Error(`Attempt requests require an authenticated workflow-execution-attempt peer`);if(n.executionAttemptId!==t)throw Error(`Request executionAttemptId does not match authenticated peer identity`);return n}function ki(e,t){if(e===null||e.runtimeGeneration!==t.runtimeGeneration)return!1;if(t.outcome.kind===`cancelled`&&t.operationId===void 0)return e.activeOperationId===null;let n=t.outcome.kind===`technical-failure`?t.outcome.stage:t.outcome.kind===`cancelled`?e.activeOperationKind:`workload-invocation`;return n===`startup`?t.operationId===void 0&&e.activeOperationId===null:!(e.activeOperationId!==t.operationId||e.activeOperationGeneration!==t.runtimeGeneration||e.activeOperationKind!==n||n!==`workspace-preparation`&&n!==`workload-invocation`)}function Ai(e,t){return e.on(S.instruction.get,async e=>{let n=x[`instruction.get`].request.parse(e.payload),r=Z(e,n.executionAttemptId),i=await t.getInstruction(r);if(i===null){e.setResult({decision:`refused`,refusalReason:`not-found`});return}if((await t.getAttemptControlState(r.executionAttemptId))?.runtimeGeneration!==n.runtimeGeneration){e.setResult({decision:`refused`,refusalReason:`stale-generation`});return}e.setResult({decision:`found`,instruction:i})})}function ji(e,t){let n=[Ai(e,t.authority),e.on(S.control.report,async e=>{let n=x[`control.report`].request.parse(e.payload),r=Z(e,n.executionAttemptId),i=await t.authority.reportAttemptControl({...n,executionId:r.executionId});i.kind===`accepted`||i.kind===`duplicate`?e.setResult({decision:i.kind}):e.setResult({decision:`refused`,reason:i.kind})}),e.on(S.operation.report,async e=>{let n=x[`operation.report`].request.parse(e.payload),r=Z(e,n.executionAttemptId),i=await t.authority.reportOperation({...n,executionId:r.executionId});i.kind===`accepted`||i.kind===`duplicate`?e.setResult({decision:i.kind,binding:i.binding}):e.setResult({decision:`refused`,refusalReason:i.kind})}),e.on(S.outcome.submit,async e=>{let n=x[`outcome.submit`].request.parse(e.payload),r=Z(e,n.executionAttemptId),i=await t.authority.getInstruction(r);if(i===null)throw Error(`No instruction belongs to this authenticated Attempt`);if(!ki(await t.authority.getAttemptControlState(r.executionAttemptId),n)){e.setResult({decision:`fenced`});return}let a={runtimeGeneration:n.runtimeGeneration,operationId:n.operationId??null},o=await t.decodeOutcome({instruction:i,outcome:n.outcome});try{let n=await Oi(t,{...r,outcome:o,runtimeFence:a});e.setResult({decision:n})}catch(t){if(!(t instanceof at))throw t;e.setResult({decision:`fenced`})}})];return()=>{for(let e of n)e()}}function Mi(e,t){return e.origin.local?{executionAttemptId:t.executionAttemptId,executionId:t.executionId}:c(e)}var Ni=class{acceptOutcome;constructor(e){this.acceptOutcome=e}converge(e){return this.acceptOutcome(e)}};function Pi(e){return{authority:e.authority,decodeOutcome:et,convergence:new Ni(e.acceptOutcome)}}function Fi(e,t){let n=Pi(t),r=ji(e,n),i=e.on(bt.control.outcome.submit,async e=>{let r=Mi(e,e.payload);if(r===null)throw Error(`Outcome submission requires an authenticated workflow-execution-attempt peer`);let{result:i}=e.payload;if(!e.origin.local){if(e.payload.executionId!==r.executionId)throw Error(`Outcome payload executionId '${e.payload.executionId}' does not match authenticated peer claim '${r.executionId}'`);if(e.payload.executionAttemptId!==r.executionAttemptId)throw Error(`Outcome payload executionAttemptId '${e.payload.executionAttemptId}' does not match authenticated peer identity '${r.executionAttemptId}'`)}if(i.executionId!==r.executionId)throw Error(`Nested result.executionId '${i.executionId}' does not match trusted identity '${r.executionId}'`);let a=Tt.parse(i),o=await t.authority.getInstruction(r);if(o===null)throw Error(`No instruction belongs to this workflow Attempt`);let s=await n.decodeOutcome({instruction:o,outcome:{kind:`workload-result`,result:a}}),c=await Oi(n,{executionId:r.executionId,executionAttemptId:r.executionAttemptId,outcome:s});e.setResult({decision:Ii(c)})});return()=>{i(),r()}}function Ii(e){return e}function Li(e,t){return e.on(S.operation.admit,async e=>{let n=c(e);if(n===null)throw Error(`Operation admission requires an authenticated workflow-execution-attempt peer`);let{executionAttemptId:r,operationKind:i,admissionKey:a,runtimeGeneration:o}=x[`operation.admit`].request.parse(e.payload);if(r!==n.executionAttemptId)throw Error(`Admission payload executionAttemptId '${r}' does not match authenticated peer identity '${n.executionAttemptId}'`);if(i===`runtime-probe`)throw Error(`Operation admission does not accept 'runtime-probe' (executionAttemptId='${r}'): the bounded probe is admitted only by runtime registration`);let s=await t.authority.admitOperation({executionAttemptId:r,executionId:n.executionId,operationKind:i,admissionKey:a,runtimeGeneration:o});if(s.kind===`admitted`||s.kind===`duplicate`){await t.bus.emit(S.operation.admitted,{executionAttemptId:r,operationId:s.operationId,operationKind:i,runtimeGeneration:s.runtimeGeneration,admittedAt:s.admittedAt}),e.setResult({decision:s.kind,operationId:s.operationId});return}e.setResult({decision:`refused`,refusalReason:s.kind})})}const Ri=1e4;function zi(e,t){let n=t.probeDeliveryTimeoutMs??1e4;return e.on(S.runtime.register,async e=>{let r=c(e);if(r===null)throw Error(`Runtime registration requires an authenticated workflow-execution-attempt peer`);let{executionAttemptId:i,runtimeIncarnationId:a}=x[`runtime.register`].request.parse(e.payload);if(i!==r.executionAttemptId)throw Error(`Registration payload executionAttemptId '${i}' does not match authenticated peer identity '${r.executionAttemptId}'`);let o=await t.authority.registerRuntime({executionAttemptId:i,executionId:r.executionId,runtimeIncarnationId:a});if(o.kind===`duplicate`&&o.runtimeReadyAt!==null){await Bi(t,i,o.runtimeGeneration),e.setResult({decision:`duplicate`,runtimeGeneration:o.runtimeGeneration});return}if(o.kind!==`registered`&&o.kind!==`duplicate`){e.setResult(Ui(o.kind));return}let s=o.runtimeGeneration;if(await Vi(t,n,{executionAttemptId:i,executionId:r.executionId,runtimeIncarnationId:a,runtimeGeneration:s})===null){e.setResult(Ui(`probe-failed`));return}await Bi(t,i,s),e.setResult({decision:`ready`,runtimeGeneration:s})})}async function Bi(e,t,n){let r=await e.authority.getAttemptControlState(t);r===null||r.runtimeGeneration!==n||r.runtimeReadyAt===null||await e.bus.emit(S.runtime.ready,{executionAttemptId:t,runtimeGeneration:n,acceptedAt:r.runtimeReadyAt})}async function Vi(e,t,n){let{executionAttemptId:r,executionId:i,runtimeIncarnationId:a,runtimeGeneration:o}=n,s=await e.authority.admitOperation({executionAttemptId:r,executionId:i,operationKind:`runtime-probe`,admissionKey:`probe:${a}`,runtimeGeneration:o});if(s.kind!==`admitted`&&s.kind!==`duplicate`)return null;let c=s.operationId,l=()=>Hi(e,{executionAttemptId:r,operationId:c,runtimeGeneration:o}),u;try{u=(await e.bus.request(S.operation.deliver,{executionAttemptId:r,runtimeIncarnationId:a,operationId:c,operationKind:`runtime-probe`,runtimeGeneration:o},{timeout:t})).receipt}catch{return await l(),null}if(u!==`completed`&&u!==`duplicate`)return await l(),null;let d=await e.authority.completeOperation({executionAttemptId:r,operationId:c,runtimeGeneration:o});if(d.kind!==`completed`&&d.kind!==`duplicate`)return null;let f=await e.authority.markRuntimeReady({executionAttemptId:r,executionId:i,runtimeGeneration:o,readyAt:new Date().toISOString()});return f.kind!==`ready`&&f.kind!==`duplicate`?null:{kind:f.kind,acceptedAt:f.acceptedAt}}async function Hi(e,t){try{await e.authority.completeOperation(t)}catch{}}function Ui(e){return{decision:`refused`,runtimeGeneration:0,refusalReason:e}}function Wi(e,t,n){n(zi(e,{bus:e,authority:t})),n(Li(e,{bus:e,authority:t}))}function Gi(e,t){let n=new AbortController,r=e.on(S.bootstrap.awaitStart,async e=>{let r=c(e);if(r===null)throw Error(`Bootstrap start requires an authenticated workflow-execution-attempt peer`);let{executionAttemptId:i}=x[`bootstrap.awaitStart`].request.parse(e.payload);if(i!==r.executionAttemptId)throw Error(`Bootstrap start executionAttemptId does not match authenticated peer identity`);let a=e.signal?AbortSignal.any([e.signal,n.signal]):n.signal;e.setResult(await t.awaitBootstrapStart({executionAttemptId:i,executionId:r.executionId},{signal:a,deadline:e.deadline??Date.now()+31e3}))});return()=>{n.signal.aborted||(n.abort(Error(`Bootstrap start handler shut down`)),r())}}function Ki(e){return e.on(s.finalizeDelegateResult,async t=>{let n=t.payload;qi(t,n.executionId);let{execution:r}=await e.request(_.getExecution,{executionId:n.executionId});if(r===null||r.workflowId!==n.workflowId)throw Error(`delegate result finalization execution does not own the requested workflow`);let{runContext:i}=await e.request(_.getRunContext,{executionId:n.executionId});if(i===null||i.executionId!==n.executionId||i.workflowId!==n.workflowId)throw Error(`delegate result finalization run context does not own the requested workflow execution`);if(i.definitionSnapshot===void 0)throw Error(`delegate result finalization requires an Authority-owned definition snapshot`);Ji(i.definitionSnapshot,n.nodeId,n.nodeType,n.finalizerId);let{subjects:a}=Ot(n.finalizerId),o=await e.request(a.finalize,{executionId:n.executionId,workflowId:n.workflowId,frameId:n.frameId,nodeId:n.nodeId,nodeType:n.nodeType,rawResult:n.rawResult,toolObservations:n.toolObservations,...n.economics===void 0?{}:{economics:n.economics}});t.setResult(o)})}function qi(e,t){if(!g(e,t))throw Error(`delegate result finalization requires its authenticated workflow-execution-attempt peer`)}function Ji(e,t,n,r){let i=!1;if(Nt(e.root,{enter(e){if(!(e.type!==`delegate-agent`&&e.type!==`delegate-role`||e.id!==t||e.type!==n))return e.resultFinalizerId===r&&(i=!0),!1}}),!i)throw Error(`delegate result finalizer is not selected by the requested durable delegate node`)}async function Yi(e,t,n){let[{execution:r},{runContext:i}]=await Promise.all([e.bus.request(_.getExecution,{executionId:t}),e.bus.request(_.getRunContext,{executionId:t})]);if(!r)throw Error(`Authority execution not found: ${t}`);if(i?.executionId!==t||i.workflowId!==r.workflowId)throw Error(`authority technical failure run context identity mismatch`);if(i.terminalAuthority!==`authority`)throw Error(`authority technical failure requires terminalAuthority=authority`);if(r.status===`failed`||r.status===`cancelled`)return{accepted:!0,status:r.status};if(r.status!==`running`)throw Error(`Authority technical failure conflicts with execution status: ${r.status}`);await te(e,r,t,`${n.stage}: ${n.message}`);let a=await e.bus.request(_.getExecution,{executionId:t});if(a.execution?.status!==`failed`&&a.execution?.status!==`cancelled`)throw Error(`Authority technical failure did not settle as failed or cancelled`);return{accepted:!0,status:a.execution.status}}async function Xi(e,t,n){let[{execution:r},{runContext:i}]=await Promise.all([e.bus.request(_.getExecution,{executionId:t}),e.bus.request(_.getRunContext,{executionId:t})]);if(!r)throw Error(`Authority execution not found: ${t}`);if(i?.executionId!==t||i.workflowId!==r.workflowId)throw Error(`authority cancellation run context identity mismatch`);if(i.terminalAuthority!==`authority`)throw Error(`authority cancellation requires terminalAuthority=authority`);if(r.status===`cancelled`)return{accepted:!0,status:`cancelled`};if(r.status!==`running`)throw Error(`Authority cancellation conflicts with execution status: ${r.status}`);if(await m(e,t,n.reason),(await e.bus.request(_.getExecution,{executionId:t})).execution?.status!==`cancelled`)throw Error(`Authority cancellation did not settle as cancelled`);return{accepted:!0,status:`cancelled`}}async function Zi(e,t,n){if(t.status===`finalizing`){if(n.status!==`completed`)throw Error(`authority runner result conflicts with terminal execution`);await u(e);let r=await e.bus.request(_.getExecution,{executionId:t.id});if(!r.execution)throw Error(`Authority runner success finalization execution is missing`);if(!o(r.execution.status,n.status))throw Error(`authority runner result conflicts with terminal execution`);return r.execution.status}if(!(t.status!==`completed`&&t.status!==`failed`&&t.status!==`cancelled`)){if(!o(t.status,n.status))throw Error(`authority runner result conflicts with terminal execution`);return t.status}}async function Qi(e,t){return h(e,t.executionId,async()=>{let{execution:n}=await e.bus.request(_.getExecution,{executionId:t.executionId});if(!n)throw Error(`Authority execution not found: ${t.executionId}`);if(!(`kind`in t.outcome)&&(t.outcome.executionId!==n.id||t.outcome.workflowId!==n.workflowId))throw Error(`authority outcome execution or workflow identity mismatch`);return n})}async function $i(e,t){let n=await Qi(e.lifecycle,t),r=`kind`in t.outcome?t.outcome.kind===`cancelled`:t.outcome.status===`cancelled`;if(n.status===`cancelled`&&!r)return`recorded-only`;if(!r&&t.controlObservation!==null&&t.controlObservation.controlRevision>0&&(n.status===`running`||n.status===`paused`))throw Error(`Workflow owner cancellation is not durably settled for '${t.executionId}'`);let i=await ea(e,t);if((await Qi(e.lifecycle,t)).status===`cancelled`&&!r)return`recorded-only`;if(!i)throw Error(`Workflow outcome did not converge execution '${t.executionId}'`);return`projected`}async function ea(e,t){if(`kind`in t.outcome){let n=t.outcome.kind===`cancelled`?await e.acceptCancellation(t.executionId,t.outcome):await e.acceptTechnicalFailure(t.executionId,t.outcome);return n.accepted&&(t.outcome.kind===`cancelled`?n.status===`cancelled`:n.status===`failed`||n.status===`cancelled`)}if(t.outcome.status===`paused`)return je(e.lifecycle,t.outcome);let n=await e.acceptTerminalResult(t.executionId,t.outcome);return n.accepted&&o(n.status,t.outcome.status)}var ta=class extends Pt{workflowRunner;executionAttemptAuthority;static storage={drizzle:$r};config;stopBootstrapWaits;activeExecutions=new Map;executionTasks=new Map;shellAbortControllers=new Map;activeRunnerSteps=new Map;gateTimeoutScheduler;workflowAbortControllers=new Map;successFinalizers=new Map;durableLifecycleTransitions=new Map;lifecyclePublications=new Map;publishingLifecycleExecutions=new Set;materializationSpecResolvers=new Set;constructor(e,t,n,r){super(e),this.workflowRunner=n,this.executionAttemptAuthority=r,this.config={...l,...t},this.gateTimeoutScheduler=new _i(e,e=>this.resumePausedExecution(e))}registerWorkflowMaterializationSpecResolver(e){return this.materializationSpecResolvers.add(e),()=>this.materializationSpecResolvers.delete(e)}async registerSuccessFinalizer(e){if(!this.initialized)throw Error(`[WorkflowExecutor] Initialize the executor before registering success finalizers`);if(this.successFinalizers.has(e))throw Error(`[WorkflowExecutor] Success finalizer already registered: ${e}`);let{namespace:t,subjects:n}=kt(e);this.bus.registerNamespace(t);let r={finalizerId:e,finalizeSubject:n.finalize};this.successFinalizers.set(e,r);try{await u(this.buildFinalizerDeps())}catch(t){throw this.successFinalizers.get(e)===r&&this.successFinalizers.delete(e),t}let i=!1;return()=>{i||(i=!0,this.successFinalizers.get(e)===r&&this.successFinalizers.delete(e))}}async acceptAuthorityRunnerResult(e,n){if(n.status===`paused`)throw Error(`authority runner result must be terminal`);if(n.executionId!==e)throw Error(`authority runner result execution identity mismatch`);let{execution:r}=await this.bus.request(_.getExecution,{executionId:e});if(!r)throw Error(`Authority runner execution not found: ${e}`);if(r.workflowId!==n.workflowId)throw Error(`authority runner result workflow identity mismatch`);if(r.status===`cancelled`&&n.status!==`cancelled`)return{accepted:!1,status:r.status};let i;if(r.status===`finalizing`){let{workflow:t}=await this.loadAuthorityRunnerContext(e,n.workflowId);i=await this.registerAuthorityResultFinalizer(t)}let a=await Zi(this.buildFinalizerDeps(),r,n).finally(()=>i?.());if(a!==void 0)return{accepted:!0,status:a};if(r.status!==`running`)throw Error(`Authority runner execution is ${r.status}`);let{runContext:s,workflow:c}=await this.loadAuthorityRunnerContext(e,n.workflowId),l=await this.registerAuthorityResultFinalizer(c),u=this.activeExecutions.get(e),d=!1;if(!u)this.activeExecutions.set(e,{execution:r,workflow:c,runContext:s,runtimeHandlers:new Map,runtimeLoopGates:new Map}),d=!0;else if(u.execution.workflowId!==n.workflowId)throw Error(`authority runner active execution identity mismatch`);try{await t({activeExecutions:this.activeExecutions,buildFinalizerDeps:()=>this.buildFinalizerDeps()},n)}finally{d&&this.activeExecutions.delete(e),l?.()}let f=await this.bus.request(_.getExecution,{executionId:e});if(f.execution?.status===`cancelled`&&n.status!==`cancelled`)return{accepted:!1,status:f.execution.status};if(!f.execution||!o(f.execution.status,n.status))throw Error(`Authority runner result did not settle compatibly with ${n.status}`);return{accepted:!0,status:f.execution.status}}acceptAuthorityTechnicalFailure=(e,t)=>Yi(this.buildFinalizerDeps(),e,t);acceptAuthorityCancellation=(e,t)=>Xi(this.buildFinalizerDeps(),e,t);acceptAuthorityOutcome=e=>$i({lifecycle:this.buildFinalizerDeps(),acceptTerminalResult:(e,t)=>this.acceptAuthorityRunnerResult(e,t),acceptTechnicalFailure:this.acceptAuthorityTechnicalFailure,acceptCancellation:this.acceptAuthorityCancellation},e);async loadAuthorityRunnerContext(e,t){let{runContext:n}=await this.bus.request(_.getRunContext,{executionId:e});if(!n)throw Error(`Authority runner run context not found: ${e}`);if(n.executionId!==e||n.workflowId!==t)throw Error(`authority runner run context identity mismatch`);if(n.terminalAuthority!==`authority`)throw Error(`authority runner result requires terminalAuthority=authority`);let r=n.definitionSnapshot??(await this.bus.request(_.get,{id:n.workflowId})).workflow;if(!r||r.id!==t)throw Error(`authority runner workflow definition is unavailable or mismatched`);return{runContext:n,workflow:r}}registerAuthorityResultFinalizer(e){return!e.successFinalizerId||this.successFinalizers.has(e.successFinalizerId)?Promise.resolve(void 0):this.registerSuccessFinalizer(e.successFinalizerId)}async onInit(){this.registerExecutionHandlers(),this.addCleanup(ze(this.bus,(e,t)=>{let n=this.activeExecutions.get(e);n!==void 0&&(n.workflow=t)})),this.addCleanup(Ki(this.bus)),this.executionAttemptAuthority!==void 0&&(this.stopBootstrapWaits=Gi(this.bus,this.executionAttemptAuthority),this.addCleanup(this.stopBootstrapWaits),this.addCleanup(Fi(this.bus,{bus:this.bus,authority:this.executionAttemptAuthority,acceptOutcome:this.acceptAuthorityOutcome})),Wi(this.bus,this.executionAttemptAuthority,e=>this.addCleanup(e))),ii(this.bus).forEach(e=>this.addCleanup(e)),ci(this.bus).forEach(e=>this.addCleanup(e)),await this.rehydratePausedGateTimeouts()}async onDestroy(){this.stopBootstrapWaits?.();let e=this.buildFinalizerDeps();await Promise.allSettled([...this.activeExecutions.keys()].map(async t=>{await p(e,t,`Workflow engine shutdown`)&&(this.workflowAbortControllers.get(t)?.abort(),this.workflowAbortControllers.delete(t))}));for(let e of this.workflowAbortControllers.values())e.abort();this.workflowAbortControllers.clear(),await Promise.allSettled(this.executionTasks.values()),await Promise.allSettled(this.durableLifecycleTransitions.values()),await Promise.allSettled(this.lifecyclePublications.values());for(let e of this.shellAbortControllers.values())e.abort();this.shellAbortControllers.clear();for(let e of this.activeRunnerSteps.values())e.hardKillTimer&&clearTimeout(e.hardKillTimer);this.activeRunnerSteps.clear(),this.gateTimeoutScheduler.dispose(),await this.workflowRunner?.dispose?.(),this.activeExecutions.clear()}buildFinalizerDeps(){let e=this.executionAttemptAuthority;return{bus:this.bus,activeExecutions:this.activeExecutions,shellAbortControllers:this.shellAbortControllers,activeRunnerSteps:this.activeRunnerSteps,cancelTimeoutMs:this.config.cancelTimeoutMs,requestAttemptCancellation:e===void 0?void 0:(t,n)=>e.requestCancellation({executionId:t,reason:n}),notifyAttemptCancellation:(e,t)=>this.notifyAttemptCancellation(e,t),successFinalizers:this.successFinalizers,resolveSuccessFinalizerId:e=>this.activeExecutions.get(e)?.workflow.successFinalizerId,durableLifecycleTransitions:this.durableLifecycleTransitions,lifecyclePublications:this.lifecyclePublications,publishingLifecycleExecutions:this.publishingLifecycleExecutions}}async notifyAttemptCancellation(e,t){this.workflowAbortControllers.get(e)?.abort(t??C),await this.bus.emit(Dt(`workflow.${e}.cancel`),{executionId:e,reason:t}).catch(t=>{console.error(`[WorkflowExecutor] Failed to emit workflow cancel for ${e}:`,t)})}buildRunnerTaskDeps(e){return{workflowRunner:e,workflowAbortControllers:this.workflowAbortControllers,executionTasks:this.executionTasks,activeExecutions:this.activeExecutions,buildFinalizerDeps:()=>this.buildFinalizerDeps(),config:this.config}}async resolveExecutionWorkspaceRoot(e){if(!e)return this.config.platformDefaults.cwd;let{session:t}=await this.bus.request(vt.get,{sessionId:e});if(t===null)throw Error(`[WorkflowExecutor] Parent session not found: ${e}`);return t.targetWorkingDirectory??this.config.platformDefaults.cwd}resolveEphemeralPlatformFields(){return Ye(this.config.platformDefaults.cwd,this.config.makaioHome)}buildStartDeps(){return{bus:this.bus,config:this.config,activeExecutions:this.activeExecutions,executionTasks:this.executionTasks,workflowRunner:this.workflowRunner,buildRunContext:e=>xi(e,this.config),buildRunnerTaskDeps:e=>this.buildRunnerTaskDeps(e),buildFinalizerDeps:()=>this.buildFinalizerDeps(),resolveExecutionWorkspaceRoot:e=>this.resolveExecutionWorkspaceRoot(e),runExecution:e=>this.runExecution(e),executionAttemptAuthority:this.executionAttemptAuthority,materializationSpecResolvers:this.materializationSpecResolvers}}registerExecutionHandlers(){this.registerHandler(s.acceptAuthorityRunnerResult,async e=>{if(!e.origin.local)throw Error(`authority runner result acceptance is local-authority only`);let{executionId:t,result:n}=e.payload;e.setResult(await this.acceptAuthorityRunnerResult(t,n))}),this.registerHandler(s.start,async e=>{let{workflowId:t,input:n,config:r,parentSessionId:i,triggerPayload:a,artifactRef:o,scope:s}=e.payload;try{let c=await Ce(this.buildStartDeps(),t,{input:bi(n),config:vi(r)??{},parentSessionId:i,triggerPayload:a,artifactRef:o,scopeOverride:s});e.setResult({executionId:c})}catch(e){if(e instanceof w)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Failed to start workflow: ${t}`)}}),this.registerHandler(s.rerun,async e=>{let{executionId:t,mode:n,input:r,config:i,parentSessionId:a,triggerPayload:o,artifactRef:s,scope:c,reason:l}=e.payload;try{let u=await di(this.buildStartDeps(),{executionId:t,mode:n,input:bi(r),config:vi(i),parentSessionId:a,triggerPayload:o,artifactRef:s,scopeOverride:c,reason:l});e.setResult({executionId:u})}catch(e){if(e instanceof w)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Failed to rerun workflow: ${t}`)}}),this.registerHandler(s.runFile,async e=>{if(this.workflowRunner===void 0)throw Error(`workflow.runFile requires a workflow runner — configure a ThinWorkflowPiscinaRunner or equivalent.`);let{filePath:t,materializationSpec:n,triggerPayload:r,triggerMode:i,scope:a}=e.payload;try{let o=await Ue(this.buildStartDeps(),t,{...n===void 0?{}:{materializationSpec:n},triggerPayload:r,triggerMode:i,scopeOverride:a});e.setResult({executionId:o})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to start workflow file: ${t}`)}}),this.registerHandler(s.cancel,async e=>{let{executionId:t,reason:n}=e.payload,r=await p(this.buildFinalizerDeps(),t,n);e.setResult({cancelled:r})}),this.registerGateTimeoutHandlers(),this.addCleanup(this.bus.on(s.gate.respond,async e=>{let{executionId:t,gateId:n,frameId:r,action:i,resumeData:a,reason:o}=e.payload,s=await this.respondToPausedGate({executionId:t,gateId:n,frameId:r,action:i,resumeData:a,reason:o});e.setResult({accepted:s})},{priority:-100}))}registerGateTimeoutHandlers(){this.addCleanup(this.bus.on(s.gate.suspended,e=>{this.gateTimeoutScheduler.schedule(e.payload)})),this.addCleanup(this.bus.on(s.gate.resolved,e=>{this.gateTimeoutScheduler.clear(e.payload.executionId,e.payload.stepId,e.payload.frameId)}))}async rehydratePausedGateTimeouts(){let{gates:e}=await this.bus.request(_.listPausedGateTimeouts,{});for(let t of e)this.gateTimeoutScheduler.schedule(Ei(t))}async runExecution(e){let t=this.activeExecutions.get(e);if(!t)return;let n=new AbortController;this.workflowAbortControllers.set(e,n);try{let r;try{let i=await ye({definition:t.workflow,execution:t.execution,runContext:t.runContext,bus:this.bus}),a=new Fe(e,t.workflow.id,t.workflow,t.execution,t.runtimeHandlers,this.bus,n.signal,void 0,i,{context:this.resolveEphemeralPlatformFields(),env:t.runContext.env},{runtimeLoopGates:t.runtimeLoopGates});Ge(t.workflow,t.runtimeLoopGates);let o=a.buildExpressionContext();r=await ke(t.workflow.root,a,o)}catch(r){if(n.signal.aborted||t.execution.status===`cancelled`){await m(this.buildFinalizerDeps(),e,C);return}let i=r instanceof Error?r.message:String(r);await te(this.buildFinalizerDeps(),t.execution,e,i);return}let i=this.buildFinalizerDeps();r.status===`cancelled`||n.signal.aborted||t.execution.status===`cancelled`?await m(i,e,C):r.status===`failed`?await te(i,t.execution,e,r.error):r.status===`paused`?(t.execution.status=`paused`,await this.bus.request(_.setExecution,{execution:t.execution}),this.activeExecutions.delete(e)):await ie(i,t.execution,e,t.execution.startedAt)}finally{this.workflowAbortControllers.delete(e)}}async respondToPausedGate(e){let{executionId:t,gateId:n,frameId:r,resumeData:i,reason:a}=e,{execution:o}=await this.bus.request(_.getExecution,{executionId:t});if(!Si(o))return!1;let s=await Di(this.bus,{executionId:t,nodeId:n,frameId:r});if(s===null||!Ve(n,s.schema,i).valid)return!1;let{runContext:c}=await this.bus.request(_.getRunContext,{executionId:t});if(c===null)throw Error(`[WorkflowExecutor] Run context not found for paused execution: ${t}`);await Ti(this.bus,c);let{accepted:l}=await this.bus.request(_.resolveWaitingGateInstance,{gate:{...s,status:e.action===`reject`?`rejected`:`resumed`,resumeData:i,...a===void 0?{}:{reason:a},resolvedAt:Date.now()}});if(!l)return!1;try{await this.resumePausedExecution(o.id)}catch(e){throw await wi(this.buildFinalizerDeps(),this.activeExecutions,this.executionTasks,this.workflowAbortControllers,o,s,n),e}return this.gateTimeoutScheduler.clear(t,n,s.frameId),!0}async resumePausedExecution(e){let{runContext:t}=await this.bus.request(_.getRunContext,{executionId:e});if(t===null)throw Error(`[WorkflowExecutor] Run context not found for paused execution: ${e}`);let n=t.definitionSnapshot??(await this.bus.request(_.get,{id:t.workflowId})).workflow??(()=>{throw Error(`[WorkflowExecutor] Workflow definition not found for paused execution: ${e}`)})();await Ti(this.bus,t);let r=Ne(t,n,{resume:!0}),i=me(this.buildStartDeps(),r);await h(this.buildFinalizerDeps(),e,async()=>{let{execution:a}=await this.bus.request(_.getExecution,{executionId:e});if(a===null)throw Error(`[WorkflowExecutor] Execution not found for paused execution: ${e}`);if(a.status!==`paused`)return;await this.bus.request(_.setExecution,{execution:{...a,status:`running`}}),this.activeExecutions.set(e,{execution:{...a,status:`running`},workflow:n,runContext:t,runtimeHandlers:new Map,runtimeLoopGates:new Map});let o=Te(this.buildStartDeps(),r,i);De(this.executionTasks,e,o)})}};const Q=`[WorkflowTriggerReconciler]`;function na(e){return e.map(ra)}function ra(e){let t=xt.parse(e);return{binding:t,matches:st(t),subscription:void 0}}function ia(e,t,n){let r=e.triggers??[];try{return n===void 0?na(r):r.map(e=>n.has(e.kind)?ra(e):void 0)}catch(i){if(t){console.error(`${Q} keeping last-good triggers for workflow "${e.id}": its trigger bindings are invalid`,i);return}return r.map((t,r)=>{if(!(n!==void 0&&!n.has(t.kind)))try{return ra(t)}catch(t){console.error(`${Q} leaving invalid trigger ${r} of workflow "${e.id}" inactive`,t);return}})}}function aa(e,t){return e.scope.type!==`global`||t.kind!==pt}async function oa(e,t,n,r){if(r!==void 0)for(let[i,a]of Array.from(r)){let o=e.triggers?.[i];if(o!==void 0&&n!==void 0&&!n.has(o.kind))continue;let s=t[i];s!==void 0&&aa(e,s.binding)||(r.delete(i),await $(a.subscription))}}async function $(e){if(e!==void 0)try{await e.detach()}catch(t){console.error(`${Q} detach failed for '${e.bindingKey}':`,t)}}var sa=class{bus;resolveRuntime;consumers=new Map;cleanupFns=[];initialized=!1;initialization;lane=new ut;pendingChanges=[];constructor(e,t){this.bus=e,this.resolveRuntime=t}async init(){if(this.initialized)return;if(this.initialization!==void 0)return this.initialization;let e=this.initialize();return this.initialization=e,e.then(()=>this.clearInitialization(e),()=>this.clearInitialization(e)),e}clearInitialization(e){this.initialization===e&&(this.initialization=void 0)}async initialize(){try{let e=({payload:e})=>{this.onSignal(`refresh of workflow "${e.id}"`,()=>this.refreshDefinition(e.id))};this.cleanupFns.push(this.bus.on(T.definition.created,e),this.bus.on(T.definition.updated,e),this.bus.on(T.definition.deleted,e),this.bus.on(ft.changed,e=>{this.scheduleRegistryReconcile(e.payload)})),await this.reconcileStored(`keep-last-good`),this.initialized=!0}catch(e){throw await this.teardown(),e}}async destroy(){await this.teardown(),this.initialized=!1}activeConsumerCount(){let e=0;for(let t of this.consumers.values())e+=t.size;return e}onSignal(e,t){t().catch(t=>{console.error(`${Q} ${e} failed:`,t)})}scheduleRegistryReconcile(e){let t=this.pendingChanges.length>0;this.pendingChanges.push(e),!t&&queueMicrotask(()=>{if(this.pendingChanges.length===0)return;let e=this.pendingChanges.splice(0),t=new Set(e.flatMap(({kinds:e})=>e)),n=e.map(({owner:e,revision:t})=>`${e}@${t}`).join(`, `);this.onSignal(`reconciliation after trigger registry changes (${n})`,()=>this.reconcileStored(`drop-unavailable`,t))})}async reconcileStored(e,t){await this.lane.run(async()=>{let{workflows:n}=await this.bus.request(_.list,{}),r=new Set(n.map(e=>e.id));for(let r of n){let n=r.triggers??[];t!==void 0&&!n.some(e=>t.has(e.kind))||await this.applyDefinitionWithinLane(r,e,t)}for(let e of Array.from(this.consumers.keys()))r.has(e)||await this.forgetWorkflowWithinLane(e)})}async refreshDefinition(e){await this.lane.run(async()=>{let{workflow:t}=await this.bus.request(_.get,{id:e});if(t===null){await this.forgetWorkflowWithinLane(e);return}await this.applyDefinitionWithinLane(t,`keep-last-good`)})}async applyDefinitionWithinLane(e,t,n){let r=ia(e,(this.consumers.get(e.id)?.size??0)>0,n);if(r===void 0)return;let i=this.consumers.get(e.id);if(await oa(e,r,n,i),i?.size===0&&this.consumers.delete(e.id),!r.some(t=>t!==void 0&&aa(e,t.binding)&&(n===void 0||n.has(t.binding.kind))))return;let a=this.resolveRuntime();if(a===void 0){r.length>0&&console.warn(`${Q} no automation trigger binding runtime is available; declarative triggers of workflow "${e.id}" stay inactive`);return}let o=this.consumers.get(e.id);o===void 0&&(o=new Map,this.consumers.set(e.id,o));for(let[i,s]of r.entries())s!==void 0&&aa(e,s.binding)&&(n!==void 0&&!n.has(s.binding.kind)||await this.refreshConsumerWithinLane(a,e.id,i,s,o,t));o.size===0&&this.consumers.delete(e.id)}async refreshConsumerWithinLane(e,t,n,r,i,a){let o=i.get(n),s=this.createListener(t,n,r);try{let t=o?.subscription?.bindingKey,a=e.prepareBinding(r.binding);if(a===void 0)throw Error(`Automation trigger kind '${r.binding.kind}' is not registered`);if(!a.workflowCompatible)throw Error(`Automation trigger kind '${r.binding.kind}' does not emit an object-root payload`);(t===void 0||t!==a.bindingKey)&&i.set(n,r),r.subscription=await a.subscribe(s),i.set(n,r),await $(o?.subscription);return}catch(e){if(o===void 0?i.delete(n):i.set(n,o),a===`keep-last-good`){console.error(`${Q} keeping last-good trigger ${n} of workflow "${t}": binding '${r.binding.kind}' could not be activated`,e);return}console.warn(`${Q} dropping trigger ${n} of workflow "${t}": binding '${r.binding.kind}' is no longer available`,e),i.delete(n),await $(o?.subscription)}}async forgetWorkflowWithinLane(e){let t=this.consumers.get(e);if(t!==void 0){this.consumers.delete(e);for(let e of t.values())await $(e.subscription)}}createListener(e,t,n){let r=`trigger ${t} ('${n.binding.kind}') of workflow "${e}"`;return async i=>{if(this.consumers.get(e)?.get(t)!==n)return;let a;try{a=n.matches(i.payload)}catch(e){console.error(`${Q} filter evaluation failed for ${r}:`,e);return}if(a)try{await this.bus.request(T.start,{workflowId:e,triggerPayload:ot(i.payload)})}catch(t){console.error(`${Q} failed to start workflow "${e}" from ${r}:`,t)}}}async teardown(){this.cleanupFns.forEach(e=>e()),this.cleanupFns.length=0,this.pendingChanges.length=0,await this.lane.run(async()=>{for(let e of Array.from(this.consumers.keys()))await this.forgetWorkflowWithinLane(e)})}};const ca=1e3;function la(e){if(e===null)return{status:`refused`,reason:`not-found`};if(e.settled)return{status:`refused`,reason:`resolved`};if(!e.active)return{status:`refused`,reason:`fenced`};if(e.allocationTerminated)return{status:`refused`,reason:`allocation-terminated`};if(e.operationStartGate===`closed`)return{status:`refused`,reason:`gate-closed`};let t=e.bootstrapDeadlineAt===null?NaN:Date.parse(e.bootstrapDeadlineAt);return!Number.isFinite(t)||t<=Date.now()?{status:`refused`,reason:`bootstrap-expired`}:{status:e.allocated?`permitted`:`pending`}}function ua(e,t){return new Promise((n,r)=>{let i=()=>{t.removeEventListener(`abort`,i),r(t.reason)};t.addEventListener(`abort`,i,{once:!0}),t.aborted&&i(),e.then(n,r).finally(()=>t.removeEventListener(`abort`,i))})}function da(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(o),t.removeEventListener(`abort`,a),n()},a=()=>{clearTimeout(o),t.removeEventListener(`abort`,a),r(t.reason)},o=setTimeout(i,e);t.addEventListener(`abort`,a,{once:!0}),t.aborted&&a()})}function fa(e,t){return setTimeout(()=>e.abort(Error(`Bootstrap start observation timed out`)),Math.max(0,t-Date.now()))}async function pa(e,t,n){if(n.signal.throwIfAborted(),!Number.isFinite(n.deadline))throw Error(`Bootstrap start request requires a finite deadline`);let r=Math.min(Date.now()+3e4,n.deadline-ca),i=new AbortController,a=AbortSignal.any([n.signal,i.signal]),o=Math.min(n.deadline,r+ca),s=fa(i,o);try{for(;;){a.throwIfAborted();let n=await ua(e.readBootstrapStartState(t),a);a.throwIfAborted();let c=la(n);if(c.status!==`pending`)return c;let l=Date.parse(n?.bootstrapDeadlineAt??``);clearTimeout(s),s=fa(i,Math.min(o,l+ca));let u=Math.min(r,l)-Date.now();if(u<=0)return c;await da(Math.min(100,u),a)}}finally{clearTimeout(s)}}var ma=class{repository;bootstrapTimeoutMs;waiters=new Map;constructor(e,t){if(!Number.isSafeInteger(t?.bootstrapTimeoutMs)||t.bootstrapTimeoutMs<=0)throw Error(`ExecutionAttemptAuthority requires an explicit positive safe-integer bootstrapTimeoutMs`);this.repository=e,this.bootstrapTimeoutMs=t.bootstrapTimeoutMs}awaitBootstrapStart(e,t){return pa(this.repository,e,t)}async createAttempt(e,t){let n=crypto.randomUUID(),r=await this.repository.createAttempt({executionAttemptId:n,executionId:e,instruction:t,bootstrapTimeoutMs:this.bootstrapTimeoutMs});return this.installWaiter(n),r}async ensureAttempt(e){let t=lt(e);return this.repository.ensureAttempt({...t,executionAttemptId:crypto.randomUUID(),bootstrapTimeoutMs:this.bootstrapTimeoutMs})}async readAttemptSettlement(e){return this.repository.readAttemptSettlement(ct(e))}async getInstruction(e){return this.repository.getInstruction(e)}async requestAttemptCancellation(e){return this.repository.requestAttemptCancellation(rt(e))}async requestCancellation(e){return this.repository.requestCancellation(it(e))}async readCancellation(e){return this.repository.readCancellation(e)}async reportOperation(e){return this.repository.reportOperation(e)}async beginProvisioning(e){return this.repository.beginProvisioning(e)}async getProviderOperation(e){return this.repository.getProviderOperation(e)}async renewProviderOperationClaim(e){return this.repository.renewProviderOperationClaim(e)}async takeOverProviderOperation(e){return this.repository.takeOverProviderOperation(e)}async handoffProviderOperation(e){return this.repository.handoffProviderOperation(e)}async recordProviderOperationUncertainty(e){return this.repository.recordProviderOperationUncertainty(e)}async completeProviderOperation(e){return this.repository.completeProviderOperation(e)}async recordAllocation(e){return this.repository.recordAllocation(e)}async recordProvisioningAbsent(e){let t=await this.repository.recordProvisioningAbsent(e);return t.kind===`recorded`&&this.rejectWaiterWith(e.claim.executionAttemptId,()=>Error(`Attempt '${e.claim.executionAttemptId}' provisioning produced no allocation: ${e.evidence.source} reported '${e.evidence.summary}'`)),t}async recordProvisionerIncarnationLost(e){let t=await this.repository.recordProvisionerIncarnationLost(e);if(t.kind===`recorded`){let{evidence:t,provisionerIncarnationId:n}=e.proof;this.rejectWaiterWith(e.claim.executionAttemptId,()=>Error(`Attempt '${e.claim.executionAttemptId}' lost the provisioner incarnation '${n}' its allocation was bound to: ${t.source} reported '${t.summary}'`))}return t}async recordAllocationTerminated(e){return this.repository.recordAllocationTerminated(e)}async registerRuntime(e){return this.repository.registerRuntime(e)}async admitOperation(e){return this.repository.admitOperation(e)}async completeOperation(e){return this.repository.completeOperation(e)}async markRuntimeReady(e){return this.repository.markRuntimeReady(e)}async getAttemptControlState(e){return this.repository.getAttemptControlState(e)}async readAttemptCancellationControl(e){return this.repository.readAttemptCancellationControl(e)}async recordAttemptControlReceipt(e){return this.repository.recordAttemptControlReceipt(e)}async reportAttemptControl(e){return this.repository.reportAttemptControl(e)}async getActiveAttempt(e,t){return this.repository.getActiveAttempt(e,t)}canonicalizeOutcome(e){return this.repository.canonicalizeOutcome(e)}decodeOutcome(e){return this.repository.decodeOutcome(e)}async commitOutcome(e,t,n,r){let i=await this.repository.commitOutcome({executionAttemptId:e,executionId:t,result:n,...r===void 0?{}:{runtimeFence:r}});return(i.kind===`conflict`||i.kind===`fenced`)&&this.settleWaiterInternal(e,i),i}waitForOutcome(e){return this.waiters.get(e)?.promise}settleOutcome(e,t){this.settleWaiterInternal(e,t)}discardWaiter(e){this.waiters.delete(e)}rejectAndDiscardWaiter(e,t){this.rejectWaiterWith(e,()=>t)}rejectWaiterWith(e,t){let n=this.waiters.get(e);n!==void 0&&(n.promise.catch(()=>void 0),n.reject(t()),this.waiters.delete(e))}get supportsRecovery(){return this.repository.recovery!==void 0}async getAttemptWithAllocation(e){return this.requireRecovery(`getAttemptWithAllocation`).getAttemptWithAllocation(e)}async recordDiscoveredAllocation(e){return this.requireRecovery(`recordDiscoveredAllocation`).recordDiscoveredAllocation(e)}async evolveAllocationRef(e){let t=this.requireRecovery(`evolveAllocationRef`);if(e.currentRef.providerId!==e.nextRef.providerId)throw Error(`Provider identity mismatch in allocation ref evolution: currentRef.providerId '${e.currentRef.providerId}' !== nextRef.providerId '${e.nextRef.providerId}'. Provider identity must not change during correlation.`);return t.evolveAllocationRef(e)}async getRecoverableAttempts(e){return this.requireRecovery(`getRecoverableAttempts`).getRecoverableAttempts(e)}async listOpenProviderOperations(e){return this.requireRecovery(`listOpenProviderOperations`).listOpenProviderOperations(e)}async recordInfrastructureFailure(e){let t=await this.repository.recordInfrastructureFailure(e);return t.kind===`recorded`&&this.rejectWaiterWith(e.claim.executionAttemptId,()=>Error(`Attempt '${e.claim.executionAttemptId}' suffered infrastructure failure: the provider allocation terminated without an acknowledged outcome`)),t}async abandonPendingAttempt(e,t){let n=await this.repository.abandonPendingAttempt(e,t);return(n.kind===`abandoned`||n.kind===`already-abandoned`)&&this.waiters.delete(e),n}requireRecovery(e){let{recovery:t}=this.repository;if(t===void 0)throw Error(`Recovery operation '${e}' requires a repository that exposes recovery operations. The injected repository does not support recovery.`);return t}installWaiter(e){this.waiters.set(e,ge())}settleWaiterInternal(e,t){let n=this.waiters.get(e);if(n){switch(t.kind){case`accepted`:case`duplicate`:n.resolve({outcome:t.outcome,controlObservation:t.controlObservation,acceptance:t.acceptance});break;case`conflict`:n.reject(Error(`Outcome conflict for attempt '${e}': a different outcome was already committed`));break;case`fenced`:n.reject(Error(`Attempt '${e}' has been fenced: it is no longer the active attempt for this execution`));break}this.waiters.delete(e)}}},ha=class extends Pt{workflowExecutor;triggerReconcilerInstance;attemptAuthority;workspaceRootResolvers=new Set;constructor(e,t){super(e);let n=t?.executionAttemptAuthority;if(!n&&t?.executionAttemptRepository){let e=t.executionAttemptBootstrapTimeoutMs;if(e===void 0)throw Error(`An ExecutionAttemptRepository requires executionAttemptBootstrapTimeoutMs`);n=new ma(t.executionAttemptRepository,{bootstrapTimeoutMs:e})}this.attemptAuthority=n,this.workflowExecutor=new ta(e,t?.executorConfig,t?.workflowRunner,this.attemptAuthority);for(let e of t?.workflowMaterializationSpecResolvers??[])this.workflowExecutor.registerWorkflowMaterializationSpecResolver(e);let r=t?.automationTriggerBindingRuntime;this.triggerReconcilerInstance=new sa(e,()=>r?.())}get executor(){return this.workflowExecutor}get executionAttemptAuthority(){return this.attemptAuthority}registerSuccessFinalizer(e){return this.workflowExecutor.registerSuccessFinalizer(e)}acceptAuthorityRunnerResult(e,t){return this.workflowExecutor.acceptAuthorityRunnerResult(e,t)}get triggerReconciler(){return this.triggerReconcilerInstance}registerWorkflowMaterializationSpecResolver(e){return this.workflowExecutor.registerWorkflowMaterializationSpecResolver(e)}registerWorkspaceRootResolver(e){return this.workspaceRootResolvers.add(e),()=>{this.workspaceRootResolvers.delete(e)}}async resolveWorkspaceRoot(e){for(let t of this.workspaceRootResolvers){let n=await t(e);if(n!==void 0)return n}}async onInit(){this.addCleanup(()=>this.destroyOwnedServices()),await this.workflowExecutor.init(),await this.triggerReconcilerInstance.init()}async destroyOwnedServices(){let e=[];for(let t of[()=>this.triggerReconcilerInstance.destroy(),()=>this.workflowExecutor.destroy()])try{await t()}catch(t){e.push(t)}if(e.length===1)throw e[0];if(e.length>1)throw AggregateError(e,`Workflow engine service teardown failed`)}};const ga=jt(`makaio.workflow-engine`);function _a(e){return{name:ga.name,displayName:`Workflow Engine`,version:`0.1.0`,dependencies:[At(Gt.name),At(Kt.name,void 0,!0)],critical:!0,namespaces:[Ct,f],storage:{registerHandlers:Lt($r)},create:t=>new ha(t.bus,{...e,automationTriggerBindingRuntime:()=>t.getService(Kt)})}}const va=_a();export{Pn as _,ma as a,Gi as c,Li as d,ji as f,Mn as g,Nn as h,ha as i,Ri as l,$r as m,_a as n,sa as o,Oi as p,va as r,ta as s,ga as t,zi as u};
package/dist/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@makaio/framework",
3
- "version": "1.0.0-dev-1789178780636",
3
+ "version": "1.0.0-dev-1789234461336",
4
4
  "type": "module"
5
5
  }
@@ -0,0 +1 @@
1
+ import{canonicalStringify as e}from"@makaio/framework/utils";import{ArtifactKindRegistrationSchema as t,ArtifactSubjects as n,ArtifactViewModelSchema as r,ArtifactViewResolveRequestSchema as i,MaterializationSubjects as a,dep as o,extensionToken as s}from"@makaio/framework/contracts";import{BaseService as c}from"@makaio/framework/service-base";import{compileArtifactDataSchema as l,readArtifactTitle as u}from"@makaio/framework/contracts/artifact";import{MaterializationSubjects as d}from"@makaio/framework/contracts/materialization";function f(e){try{l(e)}catch(t){throw Error(`Invalid data schema for artifact kind '${e.kind}' version '${e.schemaVersion}': ${t instanceof Error?t.message:String(t)}`,{cause:t})}}const p=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],m={extension:0,"factory-repo":1,"target-repo":2},h={source:`extension`,ownerKey:`extension:bus`};function g(e){return`${e.source}:${e.ownerKey}`}function _(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function v(e){return structuredClone(e)}function y(e,t){return`${e}@${t}`}var b=class extends c{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of p)this.relationTypes.set(e.type,e);this.registerHandler(n.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(n.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(v);e.setResult({kinds:n})}),this.registerHandler(n[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(n[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(v);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=m[e.owner.source]-m[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!_(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),r=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,r);return}let i;for(let e of t.values())(i===void 0||this.compareKindContributions(e,i)<0)&&(i=e);let a=i;this.kinds.set(e,v(a.registration)),JSON.stringify(r)!==JSON.stringify(a.registration)&&this.bus.emit(n.kind.changed,{kind:a.registration.kind,schemaVersion:a.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(n.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,n=h){e=t.parse(e),f(e);let r=y(e.kind,e.schemaVersion),i=this.kindContributions.get(r)??new Map,a=g(n),o=i.get(a),s=n.source===`extension`?this.nextKindContributionOrder:o?.order??this.nextKindContributionOrder,c=this.findSameTierRepoConflict(i,n,s);if(c!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${r}' is already registered by '${c.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}i.set(a,{owner:n,registration:v(e),order:n.source===`extension`||o===void 0?this.nextKindContributionOrder++:o.order}),this.kindContributions.set(r,i),this.recomputeKindWinner(r)}deregisterKind(e,t,n=h){let r=y(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(g(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,n){let r=n.map(e=>t.parse(e));for(let e of r)f(e);let i=new Set,a=g(e),o=new Map;for(let[e,t]of this.kindContributions.entries()){let n=t.get(a);n!==void 0&&(o.set(e,n.order),t.delete(a),i.add(e))}for(let t of r){let n=y(t.kind,t.schemaVersion),r=this.kindContributions.get(n)??new Map,s=e.source===`extension`?void 0:o.get(n),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(r,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}r.set(a,{owner:e,registration:v(t),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(n,r),i.add(n)}for(let e of i)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,v(e))}getKind(e,t){let n=this.kinds.get(y(e,t));return n?v(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?v(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}};const x=s(`artifact-schema-registry`),S={name:x.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new b(e.bus)};function C(e,t){return JSON.stringify([e,t])}function w(e){return Object.freeze({kind:e.kind,schemaVersion:e.schemaVersion,version:e.version,build:e.build})}var T=class extends Error{key;incomingOwner;existingOwner;constructor(e,t,n){let r=t===n?`Duplicate builder key '${e}' within owner '${t}'`:`Builder key '${e}' from owner '${t}' collides with owner '${n}'`;super(r),this.key=e,this.incomingOwner=t,this.existingOwner=n,this.name=`ArtifactViewBuilderCollisionError`}},E=class{owners=new Map;globalIndex=new Map;getBuilder(e,t){return this.globalIndex.get(C(e,t))?.builder}replaceBuildersForOwner(e,t){for(let n of t)if(!Number.isInteger(n.version)||n.version<1)throw Error(`Builder for '${C(n.kind,n.schemaVersion)}' from owner '${e}' has non-positive version ${String(n.version)}`);let n=new Map;for(let r of t){let t=C(r.kind,r.schemaVersion);if(n.has(t))throw new T(t,e,e);n.set(t,w(r))}for(let t of n.keys()){let n=this.globalIndex.get(t);if(n&&n.owner!==e)throw new T(t,e,n.owner)}n.size===0?this.owners.delete(e):this.owners.set(e,[...n.values()]),this.rebuildGlobalIndex()}removeBuildersForOwner(e){this.owners.has(e)&&(this.owners.delete(e),this.rebuildGlobalIndex())}getBuildersForOwner(e){let t=this.owners.get(e);if(t)return[...t]}clear(){this.owners.clear(),this.globalIndex.clear()}destroy(){this.clear()}rebuildGlobalIndex(){let e=new Map;for(let[t,n]of this.owners)for(let r of n){let n=C(r.kind,r.schemaVersion);e.set(n,{owner:t,builder:r})}this.globalIndex=e}};const D=5;function O(e){if(e.target.refClass===`artifact`)return{artifactId:e.target.id,label:`[${e.target.kind}] ${e.target.id}`,...e.sourceLocalId===void 0?{}:{sourceLocalId:e.sourceLocalId}}}function k(e){let t=new Map;for(let n of e){let e=O(n);if(!e)continue;let r=t.get(n.type)??[];r.push(e),t.set(n.type,r)}if(t.size!==0)return{type:`relations`,title:`Relations`,groups:[...t.entries()].map(([e,t])=>({type:e,items:t}))}}function A(e){let t=[],n=new Set;for(let r of e){let e=O(r);if(!e)continue;let i=JSON.stringify([e.artifactId,e.sourceLocalId]);n.has(i)||(n.add(i),t.push(e))}return{breadcrumbs:[],related:t}}function j(e){if(!e.confidence?.basis)return;let t=[];for(let n of e.confidence.basis){let e=n.evidenceRef;e?.refClass===`evidence`&&t.push({kind:e.kind,id:e.id,...e.locator?{locator:e.locator}:{}})}if(t.length!==0)return{type:`evidence`,title:`Evidence`,items:t}}function M(e,t,n){let r=[];if(n===`full`){let t=k(e.relations);t&&r.push(t);let n=j(e);n&&r.push(n)}return{title:u(e.data,t.titlePath),artifact:{id:e.id,kind:e.kind,revision:e.revision},navigation:A(e.relations),sections:r,links:{}}}var N=class extends c{schemaRegistry;builderRegistry;constructor(e,t,n){super(e),this.schemaRegistry=t,this.builderRegistry=n}async onInit(){this.registerHandler(a.artifact.view.resolve,async e=>{let{ref:t,level:n,affordance:r,params:a}=i.parse(e.payload),o=await this.resolve(t,n,r,a);e.setResult(o)})}async resolve(e,t,i,a){let o=await this.bus.requestOptional(n.resolve,{ref:e});if(!o.handled||o.data.artifact===null)return{status:`artifact-not-found`,view:null};let s=o.data.artifact,c=this.schemaRegistry.getKind(s.kind,s.schemaVersion);if(c===void 0)return{status:`not-rendered`,view:null};let l=this.builderRegistry.getBuilder(s.kind,s.schemaVersion);if(l===void 0)return{status:`not-rendered`,view:null};let u=M(s,c,t),d=u.sections,f=u.navigation,p=l.version,m=await l.build({artifact:s,level:t,affordance:i,params:a,genericSections:u.sections,genericNavigation:u.navigation,relations:s.relations});if(m!==void 0){if(`render`in m&&m.render===!1)return{status:`not-rendered`,view:null};`sections`in m&&(d=m.sections??d),`navigation`in m&&(f=m.navigation??f)}let h={title:u.title,artifact:u.artifact,navigation:f,sections:[...d],links:u.links};return{status:`ok`,view:r.parse(h),builderVersion:p,sourceRevision:e.revision}}};function P(e){return structuredClone(e)}var F=class extends c{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(d.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(d.surfaceBinding.list,e=>{let{id:t,provider:n,namespace:r}=e.payload,i=[...this.bindings.values()].filter(e=>(!t||e.id===t)&&(!n||e.provider===n)&&(!r||e.namespace===r)).map(P);e.setResult({bindings:i})})}registerBinding(t){let n=this.bindings.get(t.id);if(n){if(e(n)!==e(t))throw Error(`Surface binding '${t.id}' is already registered with a different definition`);return}this.bindings.set(t.id,P(t)),this.bus.emit(d.surfaceBinding.changed,{id:t.id,provider:t.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(d.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?P(t):void 0}onDestroy(){this.bindings.clear()}},I=class{queues=new Map;activeLeases=new Map;pendingAcquisitions=new Set;authorizedRequests=new Map;consumedAuthorizedRequestIds=new Set;acceptingAcquisitions=!0;destroyPromise;destroy(){return this.acceptingAcquisitions=!1,this.destroyPromise??=this.drain(),this.destroyPromise}acquire(e){if(!this.acceptingAcquisitions)return Promise.reject(Error(`Materialization operation coordinator is destroyed`));let t=this.acquireAdmitted(e);return this.pendingAcquisitions.add(t),t.then(()=>this.pendingAcquisitions.delete(t),()=>this.pendingAcquisitions.delete(t)),t}async acquireAdmitted(e){let t=L(e),n=new Set,r=[];for(let e of R(t))r.push(await this.acquireKey(e)),n.add(e);let i={id:crypto.randomUUID(),scope:t},a,o=new Promise(e=>{a=e});return this.activeLeases.set(i.id,{lease:i,heldKeys:n,releases:r,settled:o,settle:a,released:!1}),i}release(e){let t=this.requireActiveLease(e);t.released=!0,this.activeLeases.delete(e.id);for(let e of t.releases.reverse())e();t.settle()}async extend(e,t){let n=this.requireActiveLease(e),r=L(t);if(r.artifactId!==e.scope.artifactId)throw Error(`A materialization operation lease cannot be extended to another artifact`);let i=R(r).filter(e=>!n.heldKeys.has(e)),a=[...n.heldKeys].filter(e=>e.startsWith(`provider:`)).at(-1);if(a&&i.some(e=>B(e,a)<0))throw Error(`Materialization operation lease extension violates lock ordering`);for(let e of i)n.releases.push(await this.acquireKey(e)),n.heldKeys.add(e)}async runExclusive(e,t,n,r){let i=L(e);if(n){if(this.consumedAuthorizedRequestIds.has(n))throw Error(`Materialization operation authorization has already been consumed`);let e=this.authorizedRequests.get(n);if(e){this.authorizedRequests.delete(n),this.consumedAuthorizedRequestIds.add(n);let a=this.activeLeases.get(e.leaseId);if(!r?.local||!a||e.scopeKey!==V(i))throw Error(`Materialization operation authorization does not match this scope`);return t(a.lease)}}let a=await this.acquire(i);try{return await t(a)}finally{this.release(a)}}async runAuthorizedRequest(e,t,n){let r=this.requireActiveLease(e),i=L(t);if(!R(i).every(e=>r.heldKeys.has(e)))throw Error(`Materialization operation authorization requires a lease for the full scope`);let a=crypto.randomUUID();this.authorizedRequests.set(a,{leaseId:e.id,scopeKey:V(i)});try{return await n(a)}finally{this.authorizedRequests.delete(a),this.consumedAuthorizedRequestIds.delete(a)}}requireActiveLease(e){let t=this.activeLeases.get(e.id);if(!t||t.released||t.lease!==e)throw Error(`Materialization operation lease is no longer active`);return t}async acquireKey(e){let t=this.queues.get(e)??Promise.resolve(),n,r=new Promise(e=>{n=e}),i=t.then(()=>r);return this.queues.set(e,i),await t,()=>{n(),this.queues.get(e)===i&&this.queues.delete(e)}}async drain(){for(;this.pendingAcquisitions.size>0||this.activeLeases.size>0;)await Promise.allSettled([...this.pendingAcquisitions,...[...this.activeLeases.values()].map(e=>e.settled)])}};function L(e){if(!e.artifactId)throw Error(`Materialization operation scope requires an artifactId`);let t=[...new Map((e.providerObjects??[]).map(e=>[z(e),e])).values()].sort((e,t)=>B(z(e),z(t)));return t.length>0?{artifactId:e.artifactId,providerObjects:t}:{artifactId:e.artifactId}}function R(e){return[`artifact:${e.artifactId}`,...(e.providerObjects??[]).map(z)]}function z(e){if(!e.provider||!e.externalId)throw Error(`Materialization provider objects require provider and externalId`);return`provider:${JSON.stringify([e.provider,e.externalId])}`}function B(e,t){return e===t?0:e<t?-1:1}function V(e){return JSON.stringify(R(e))}const H=s(`surface-binding-registry`),U=s(`artifact-view-builder-registry`),W=s(`artifact-view-service`),G=s(`materialization-operation-coordinator`),K={name:G.name,displayName:`Materialization Operation Coordinator`,version:`0.1.0`,critical:!0,create:()=>new I},q={name:H.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new F(e.bus)},J={name:U.name,displayName:`Artifact View Builder Registry`,version:`0.1.0`,critical:!0,create:()=>new E},Y={name:W.name,displayName:`Artifact View Service`,version:`0.1.0`,critical:!0,dependencies:[o(x.name),o(U.name)],create:e=>{let t=e.getService(x),n=e.getService(U);if(t===void 0)throw Error(`ArtifactSchemaRegistry is not available for ArtifactViewService`);if(n===void 0)throw Error(`ArtifactViewBuilderRegistry is not available for ArtifactViewService`);return new N(e.bus,t,n)}};export{S as _,J as a,q as c,N as d,D as f,x as g,E as h,H as i,I as l,T as m,W as n,Y as o,M as p,G as r,K as s,U as t,F as u,b as v};
@@ -4,7 +4,7 @@ import { a as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, c as CODE_EXECUTION_DEFA
4
4
  import { t as PiscinaCodeExecutionProvider } from "../index-DQKVQPUS.mjs";
5
5
  import { a as FilesystemDescriptorDiscovery, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, s as MergedDescriptorDiscovery, t as DiscoveredExtension } from "../extension-discovery-CA2IhDRo.mjs";
6
6
  import { a as isMakaioExtensionLike, c as resolveConventionEntrypoint, i as isCliContributionLike, n as LoadExtensionsOptions, o as isWithinDirectory, r as entrypointStem, s as loadExtensions, t as DescriptorSourcePackageGroup } from "../load-extensions-DGstT4_p.mjs";
7
- import { $ as WorkflowRuntimeAuthorityConnector, A as createLocalGitWorkspacePreparation, An as prepareAdapterRuntime, B as HeadlessWorkflowWorkerResult, Bt as ServerTransportProvider, C as admitWorkflowRunOperation, Cn as HonoRouteGraphOptions, Dn as PrepareAdapterRuntimeInput, E as registerWorkerRuntime, En as ActivatedAdapterRuntimeIdentity, F as HeadlessWorkerContributionLoader, Ft as WorkflowRunResult, G as WorkloadControlBinding, H as runHeadlessWorkflowWorker, Ht as UpstreamTelemetryBootOptions, I as HeadlessWorkerExecutor, It as BootCoordinatorSetupContext, J as runWorkloadInvocation, K as WorkloadInvocationPreparation, L as HeadlessWorkerMaterializer, Lt as BootMakaioRuntimeOptions, M as HeadlessWorkerBootstrap, Mt as IWorkflowRunner, N as HeadlessWorkerBootstrapCredentials, On as PreparedAdapterRuntime, P as HeadlessWorkerBusConnector, Pt as ThinWorkflowPiscinaRunnerOptions, Q as IsolatedWorkflowRuntimeContext, R as HeadlessWorkerPostCommitObserver, Rt as CoreBootOptions, S as RuntimeRegistrationRefusedError, Sn as HonoRouteGraph, T as registerAndAdmitWorkflowRun, Tn as ActivateAdapterRuntimeIdentityInput, U as InstalledWorkloadAdapter, Ut as WorkflowRunnerBootOptions, Vt as TransportReadyInfo, W as RunWorkloadInvocationOptions, X as CreateIsolatedWorkflowRuntimeOptions, Y as SetupProcessGroupObservation, Z as IsolatedWorkflowRuntime, _ as OperationDeliveryEndpointIdentity, _n as resolveFrameworkSpecifier, _t as submitAttemptOutcomeWithAck, a as InstalledAttemptControlEndpoint, an as DatabaseBootOptions, b as RegisterAndAdmitWorkflowRunOptions, bn as HttpContributionPhase, c as BootstrapStartRefusedError, cn as initializeNodeDatabase, d as bootstrapWorkerRuntime, dn as selectFrameworkCorePackages, dt as AuthorityRequestDeliveryError, et as WorkflowRuntimeContributionLoader, f as AdmitWorkflowRunOperationOptions, fn as ShutdownStep, g as OperationDeliveryEndpoint, gn as NoopFrameworkModuleResolver, h as OperationAdmissionRefusedError, hn as NodeFrameworkModuleResolver, i as AttemptControlReportOptions, in as resolveWorkflowWorkerEntry, j as LocalGitSourceOptions, jt as ThinWorkflowPiscinaRunner, kn as activateAdapterRuntimeIdentity, l as BootstrapWorkerRuntimeOptions, ln as HostCapabilityDeclaration, lt as AttemptOutcomeDeliveryError, m as DeliverableOperationKind, mn as FrameworkModuleResolver, n as AttemptControlEndpointIdentity, nn as WorkflowWorkerEntryMode, nt as InProcessWorkflowRunner, o as installAttemptControlEndpoint, on as InitializeNodeDatabaseOptions, p as AdmittedWorkflowRun, pn as BridgeBrowserOptions, pt as OutcomeDeliveryError, q as WorkloadInvocationResult, r as AttemptControlLastReport, rn as WorkflowWorkerEntryResolverOptions, rt as InProcessWorkflowRunnerOptions, s as BootstrapRuntimeConnection, sn as InitializeNodeDatabaseResult, t as AttemptControlEndpointDeps, tt as createIsolatedWorkflowRuntime, u as StartedWorkerRuntime, un as normalizeNodeHostCapabilities, v as OperationDeliveryHandler, vn as HttpRouteGraphBuilder, w as installOperationDeliveryEndpoint, wn as createHonoRouteGraph, x as RegisterWorkerRuntimeOptions, xn as HttpRouteContribution, y as OperationDeliveryHandlers, yn as createHttpRouteGraphBuilder, z as HeadlessWorkflowWorkerDeps, zt as MakaioRuntime } from "../index-DtCVHx8-.mjs";
7
+ import { $ as WorkflowRuntimeAuthorityConnector, A as createLocalGitWorkspacePreparation, An as prepareAdapterRuntime, B as HeadlessWorkflowWorkerResult, Bt as ServerTransportProvider, C as admitWorkflowRunOperation, Cn as HonoRouteGraphOptions, Dn as PrepareAdapterRuntimeInput, E as registerWorkerRuntime, En as ActivatedAdapterRuntimeIdentity, F as HeadlessWorkerContributionLoader, Ft as WorkflowRunResult, G as WorkloadControlBinding, H as runHeadlessWorkflowWorker, Ht as UpstreamTelemetryBootOptions, I as HeadlessWorkerExecutor, It as BootCoordinatorSetupContext, J as runWorkloadInvocation, K as WorkloadInvocationPreparation, L as HeadlessWorkerMaterializer, Lt as BootMakaioRuntimeOptions, M as HeadlessWorkerBootstrap, Mt as IWorkflowRunner, N as HeadlessWorkerBootstrapCredentials, On as PreparedAdapterRuntime, P as HeadlessWorkerBusConnector, Pt as ThinWorkflowPiscinaRunnerOptions, Q as IsolatedWorkflowRuntimeContext, R as HeadlessWorkerPostCommitObserver, Rt as CoreBootOptions, S as RuntimeRegistrationRefusedError, Sn as HonoRouteGraph, T as registerAndAdmitWorkflowRun, Tn as ActivateAdapterRuntimeIdentityInput, U as InstalledWorkloadAdapter, Ut as WorkflowRunnerBootOptions, Vt as TransportReadyInfo, W as RunWorkloadInvocationOptions, X as CreateIsolatedWorkflowRuntimeOptions, Y as SetupProcessGroupObservation, Z as IsolatedWorkflowRuntime, _ as OperationDeliveryEndpointIdentity, _n as resolveFrameworkSpecifier, _t as submitAttemptOutcomeWithAck, a as InstalledAttemptControlEndpoint, an as DatabaseBootOptions, b as RegisterAndAdmitWorkflowRunOptions, bn as HttpContributionPhase, c as BootstrapStartRefusedError, cn as initializeNodeDatabase, d as bootstrapWorkerRuntime, dn as selectFrameworkCorePackages, dt as AuthorityRequestDeliveryError, et as WorkflowRuntimeContributionLoader, f as AdmitWorkflowRunOperationOptions, fn as ShutdownStep, g as OperationDeliveryEndpoint, gn as NoopFrameworkModuleResolver, h as OperationAdmissionRefusedError, hn as NodeFrameworkModuleResolver, i as AttemptControlReportOptions, in as resolveWorkflowWorkerEntry, j as LocalGitSourceOptions, jt as ThinWorkflowPiscinaRunner, kn as activateAdapterRuntimeIdentity, l as BootstrapWorkerRuntimeOptions, ln as HostCapabilityDeclaration, lt as AttemptOutcomeDeliveryError, m as DeliverableOperationKind, mn as FrameworkModuleResolver, n as AttemptControlEndpointIdentity, nn as WorkflowWorkerEntryMode, nt as InProcessWorkflowRunner, o as installAttemptControlEndpoint, on as InitializeNodeDatabaseOptions, p as AdmittedWorkflowRun, pn as BridgeBrowserOptions, pt as OutcomeDeliveryError, q as WorkloadInvocationResult, r as AttemptControlLastReport, rn as WorkflowWorkerEntryResolverOptions, rt as InProcessWorkflowRunnerOptions, s as BootstrapRuntimeConnection, sn as InitializeNodeDatabaseResult, t as AttemptControlEndpointDeps, tt as createIsolatedWorkflowRuntime, u as StartedWorkerRuntime, un as normalizeNodeHostCapabilities, v as OperationDeliveryHandler, vn as HttpRouteGraphBuilder, w as installOperationDeliveryEndpoint, wn as createHonoRouteGraph, x as RegisterWorkerRuntimeOptions, xn as HttpRouteContribution, y as OperationDeliveryHandlers, yn as createHttpRouteGraphBuilder, z as HeadlessWorkflowWorkerDeps, zt as MakaioRuntime } from "../index-CzUUoexw.mjs";
8
8
  import { ConfiguredRuntimeOptions, LoadMakaioConfigOptions, LoadedMakaioConfig, MAKAIO_CONFIG_FILE_ENV, MAKAIO_HOME_ENV, MakaioConfig, ParseMakaioConfigOptions, ParsedMakaioConfig, WorkflowRunnerConfig, buildConfiguredRuntimeOptions, createMakaioConfigDiscovery, defineMakaioConfig, loadMakaioConfig, parseMakaioConfig, resolveMakaioConfigPath, resolveMakaioHome, shouldIncludeExtension } from "./makaio-config.mjs";
9
9
  import { RotateWorkflowExecutionBusSecretParams, captureWorkflowExecutionBusSecretCleanup } from "./workflow-execution-bus-access.mjs";
10
10
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
- import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../semver-Cb5Um3tU.mjs";import{A as i,B as a,F as o,H as s,I as c,L as l,M as u,N as d,P as f,R as p,V as m,a as h,c as g,d as _,f as v,g as y,h as b,i as x,j as S,k as C,l as w,n as T,o as E,r as ee,s as te,t as ne,v as re,y as ie,z as ae}from"../workflow-worker-C3ZbuhyA.mjs";import{createNodeClientBinaryStrategyDependencies as oe}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as se,RuntimeSubjects as D}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as ce,FilesystemDescriptorDiscovery as O,MergedDescriptorDiscovery as le}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as k,MAKAIO_HOME_ENV as A,buildConfiguredRuntimeOptions as ue,createMakaioConfigDiscovery as de,defineMakaioConfig as fe,loadMakaioConfig as pe,parseMakaioConfig as me,resolveMakaioConfigPath as he,resolveMakaioHome as ge,shouldIncludeExtension as _e}from"./makaio-config.mjs";import{n as j}from"../extension-package-provenance-C7oO5JAE.mjs";import{t as ve}from"../descriptor-to-package-Dw8dnl5E.mjs";import{a as M,c as ye,i as N,l as P,n as be,o as xe,r as Se,s as Ce,t as we}from"../load-extensions-BVgxTj_y.mjs";import{a as Te,c as Ee,i as De,l as Oe,n as ke,r as Ae,s as je,t as Me}from"../bootstrap-start-client-C1ZHbv6e.mjs";import{captureWorkflowExecutionBusSecretCleanup as Ne}from"./workflow-execution-bus-access.mjs";import{a as Pe,c as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"../types-CsmvIK25.mjs";import{t as He}from"../code-execution-pUF4IO462.mjs";import{createRequire as Ue}from"node:module";import{z as F}from"zod";import{execFile as We}from"node:child_process";import{promisify as Ge}from"node:util";import{fileURLToPath as Ke,pathToFileURL as qe}from"node:url";import*as I from"node:fs/promises";import*as L from"node:path";import R from"node:path";import*as Je from"node:crypto";import{createHash as Ye}from"node:crypto";import*as z from"node:fs";import{existsSync as Xe,readFileSync as Ze,statSync as Qe}from"node:fs";import{isRecord as $e}from"@makaio/framework/utils";import{createBusNamespace as et}from"@makaio/framework/core";import{AIModelSchema as tt,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as nt,ConfigSchema as rt,ConfigSubjects as it,CredentialSubjects as at,FrameworkContractNamespaces as ot,FrameworkStorageNamespaces as st,SubjectTelemetrySubjects as ct,isDetachedDescriptor as lt,registerWorkerProvider as ut,safeParseExtensionDescriptor as dt,unregisterWorkerProvider as ft,versionSatisfies as pt}from"@makaio/framework/contracts";import{ChannelClosedError as mt,MakaioBus as ht,openChannel as gt,projectSubjectTelemetryFacts as _t}from"@makaio/framework/bus";import{DispatchingAuth as vt,E2EAuth as yt,HmacAuth as bt,WebSocketClientTransport as xt}from"@makaio/framework/node/transports";import{BootNamespace as St,ExtensionCoordinator as Ct,ExtensionNamespace as wt,KernelNamespace as Tt,createShutdownSequence as Et}from"@makaio/framework/kernel";import{BaseService as Dt}from"@makaio/framework/service-base";import{uniqueIndex as Ot}from"drizzle-orm/sqlite-core";import{uniqueIndex as kt}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as At,defineDialectSchema as jt,defineDualTable as Mt,findStorageEngine as Nt,getDatabaseDialect as Pt,getRawSqlExecutor as Ft,getStorageEngine as It,registerDrizzleHandlers as Lt,registerStorageEngine as Rt,resolveSchema as zt,resolveStorageEngine as Bt,resolveStorageEngineForUrl as Vt}from"@makaio/framework/storage/drizzle";import{and as Ht,eq as B,sql as V}from"drizzle-orm";import{parseStoredCredentialRef as Ut}from"@makaio/framework/contracts/config";import*as Wt from"node:os";import{ProviderStorageSubjects as Gt}from"@makaio/framework/services/settings/storage";import{FrameworkServicesCoreNamespaces as Kt,createArtifactKindContributionProcessor as qt,createArtifactLifecycleHookContributionProcessor as Jt,createFacetNamespaceContributionProcessor as Yt,createModelRegistryPackage as Xt,createReactionContributionProcessor as Zt,createToolContributionProcessor as Qt,createTransitionContributionProcessor as $t,createWorkflowBlockContributionProcessor as en}from"@makaio/framework/services";import{CachedRegistryFetcher as tn,FallbackRegistryFetcher as nn,ModelRegistrySchema as rn,ProviderModelOverrideSchema as an,mergeModelMetadata as on}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as sn}from"@makaio/framework/clients";import{createDatabaseClient as cn}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as ln,resolveAdapterRuntimeSnapshot as un,resolveBoundProviderAuth as dn,resolveConnectorCredentials as fn,resolveCredentialRef as pn}from"@makaio/framework/adapters/config";import{DefinitionSubjects as mn}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as hn}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as gn}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as _n,FileAdapterConfigRepository as vn,orderAfterAdapterSubsystem as yn}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as bn,loadOrCreateMachineIdentity as xn,machineKeysExist as Sn,validateMachineKeys as Cn}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as wn}from"@makaio/framework/utils/workspace-root";import{Hono as Tn}from"hono";import{CliNamespace as En}from"@makaio/framework/kernel/cli";import{startBusServer as Dn}from"@makaio/framework/node/bus-server";import{WebSocketServer as On}from"ws";import{ConfigProvider as kn}from"@makaio/framework/providers";import{KernelSubjects as H}from"@makaio/framework/kernel/namespace";import{createAutomationTriggerContributionProcessor as An,selectAutomationCronSchedulerPackage as jn}from"@makaio/framework/services/automation-trigger";import{createArtifactViewBuilderContributionProcessor as Mn,createSurfaceBindingContributionProcessor as Nn}from"@makaio/framework/services/materialization";import{createLogImportContributionProcessor as Pn,logImportRegistryPackage as Fn}from"@makaio/framework/services/log-import";import{WorkflowEngineToken as In,createWorkflowEnginePackage as Ln}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Rn,PreferencesSubjects as zn}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as Bn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as Vn}from"@hono/node-server/serve-static";var Hn=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function Un(e){let t=e.providerProtocol;if(t===void 0)throw new Hn;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function Wn(e){let t,n=!1;for(let r=e.length-1;r>=0;--r){let i=e[r];try{i()}catch(e){n||=(t=e,!0)}}if(e.length=0,n)throw t}function Gn(e,t){try{return t()}catch(t){try{Wn(e)}catch{}throw t}}function Kn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function qn(e){let{$schema:t,...n}=e;return n}function Jn(e){let t=e.definition,n=Date.now();return{id:t.id,packageName:e.providerPackageName,name:t.name,description:t.description,endpoints:t.endpoints,defaultModel:t.defaultModel,fastModel:t.fastModel,availableModels:t.availableModels??[],defaultModelFilterMode:`show-all`,authMethods:t.authMethods,capabilities:t.capabilities,enabled:!0,createdAt:n,updatedAt:n}}function Yn(e,t,n,r){let i=[];return Gn(i,()=>(i.push(e.on(gn.adapter.getConfigSchema,({payload:e,setResult:n})=>{let r=t().find(t=>t.name===e.adapterName);if(!r?.adapterConfigSchema){n({hasSchema:!1,schema:null});return}n({hasSchema:!0,schema:F.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(mn.getConfigSchema,({payload:e,setResult:n})=>{let r=Kn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:F.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(gn.extension.getConfigSchema,({payload:e,setResult:t})=>{let n=r(e.extensionName);if(!n?.configSchema){t({hasSchema:!1,schema:null,uiConfig:null});return}t({hasSchema:!0,schema:qn(F.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Gt.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:Jn(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Gt.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(Jn(t)));e({providers:n})},{priority:-1})),i.push(e.on(hn.listModelFetchAdapters,async({payload:r,setResult:i})=>{let a=[];for(let i of t()){let t=i.options.adapterId,o=t?n().get(t):void 0;if(!(!o||!(`fetchModels`in o)||typeof o.fetchModels!=`function`))try{await un(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof ln))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(hn.fetchModels,async({payload:r,setResult:i})=>{let a=t().find(e=>e.name===r.adapterName);if(!a)throw Error(`Adapter '${r.adapterName}' is not loaded for live model discovery`);let o=await un(e,{adapterName:a.name,providerConfigId:r.providerConfigId}),s=a.options.adapterId,c=s?n().get(s):void 0;if(!s||!c)throw Error(`Adapter instance for '${a.name}' not initialized`);if(!(`fetchModels`in c)||typeof c.fetchModels!=`function`)throw Error(`Adapter '${a.name}' does not support model fetching`);let l=Un(o),u=await dn(o.boundProviderAuth,t=>fn(e,t));i({models:await c.fetchModels(l,u)})})),()=>{Wn(i)}))}function Xn(e=`sqlite`){let{migrations:t}=It(e);return t.resolveSourceChainDir?.()??R.resolve(import.meta.dirname,`..`,t.chainDirName)}var Zn=class extends Error{expectedDialect;journalDialect;constructor(e,t,n,r){super(`Migration journal at ${r} declares dialect '${n??`unknown`}', but the target database speaks '${e}'. Point the runner at a migrations directory generated for '${e}' (journal dialect '${t}').`),this.name=`MigrationDialectMismatchError`,this.expectedDialect=e,this.journalDialect=n}};function Qn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??Xn(t),r=R.join(n,`meta`,`_journal.json`);if(!Xe(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(Ze(r,`utf-8`));if(t!==void 0){let e=It(t).migrations.journalDialect;if(i.dialect!==e)throw new Zn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=Ze(R.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:Ye(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function $n(e){return e.replace(/--.*$/gm,``).trim()}async function er(e,t){try{await e.run(V.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function tr(e){let{migrations:t}=e.engine;if(await e.session.run(V.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await er(e.session,{migrationsTable:e.tableName}),t}}async function nr(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await tr(e);try{await e.session.run(V.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(V`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(V.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await er(e.session,{migrationsTable:e.tableName}),n}}async function rr(e,t){try{await e.session.run(V`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(V.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function ir(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(V`SELECT hash FROM ${e.tableId} WHERE hash = ${t.hash}`)).length===0?!1:(console.warn(`[storage-migrations] Migration already recorded by a concurrent runner, skipping`,{hash:t.hash,folderMillis:t.folderMillis}),await e.session.run(V.raw(`COMMIT`)),!0)}async function ar(e,t){await e.session.run(V.raw(`ROLLBACK`)),await tr(e),!await ir(e,t)&&await rr(e,t)}async function or(e,t){await tr(e);try{if(await ir(e,t))return;for(let[n,r]of t.sql.entries())if($n(r))try{await e.session.run(V.raw(r))}catch(i){if(n===0&&/^\s*CREATE\s/i.test(r)&&e.engine.errors.isDuplicateObjectError(i)){if(t.sql.length>1)throw Error(`Cannot adopt multi-statement migration '${t.tag}' because its first schema object already exists. Reset the database or provide an incremental migration.`,{cause:i});console.warn(`[storage-migrations] Schema object already exists, adopting into ledger`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n}),await ar(e,t);return}throw console.error(`[storage-migrations] Failed to apply migration statement`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n,statement:r,error:i}),i}await rr(e,t)}catch(n){throw await er(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function sr(e,t,n){let r=e.engine.migrations.constraintSuspension;if(!r?.isRequestedBy(t.sql)){await n();return}await e.session.run(V.raw(r.suspendStatement));try{await n()}finally{await e.session.run(V.raw(r.restoreStatement))}}async function cr(e,t,n){let r=Ft(e),i=It(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:V.identifier(a)},r=await nr(n);for(let e of t)r.has(e.hash)||(await sr(n,e,()=>or(n,e)),r.add(e.hash))})}async function lr(e,t={}){await cr(e,Qn({migrationsDir:t.migrationsDir,expectedDialect:Pt(e)})),await Bt(e).fts.provisionSearchIndex(e)}var ur=class{configPath;constructor(e){this.configPath=L.join(e,`config.json`)}async getConfig(){try{let e=await I.readFile(this.configPath,`utf-8`);return rt.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return rt.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),rt.parse({});throw e}}async saveConfig(e){let t=L.dirname(this.configPath);await I.mkdir(t,{recursive:!0}),await I.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await I.chmod(this.configPath,384)}};function dr(e){try{let t=wn(e);return[L.resolve(t,`framework/static/model-registry.yaml`),L.resolve(t,`static/model-registry.yaml`)].find(e=>{try{return Qe(e).isFile()}catch{return!1}})}catch{return}}async function fr(e,t){await new Promise((n,r)=>{if(e.address()){n();return}let i=e=>{if(o(),e.code===`EADDRINUSE`){r(Error(`Port ${t} is already in use`));return}r(e)},a=()=>{o(),n()},o=()=>{e.off(`error`,i),e.off(`listening`,a)};e.once(`error`,i),e.once(`listening`,a)}),e.on(`error`,e=>{console.error(`[HttpServer] Post-bind error:`,e)})}function pr(e){let t=e.address();if(typeof t==`object`&&t&&`port`in t)return t.port;throw Error(`HTTP server is not bound to a TCP address`)}function mr(e,t){let n=e,r=!1;return{fetch:(e,i,a)=>{if(!r)return new Response(`Makaio runtime is booting`,{status:503,headers:{"Retry-After":`1`}});let{pathname:o}=new URL(e.url);return t?.health&&e.method===`GET`&&o===`/health`?Response.json(t.health()):e.method===`GET`&&o===`/bus`?new Response(`WebSocket endpoint`,{status:426,headers:{Upgrade:`websocket`}}):n.fetch(e,i,a)},markReady(){r=!0},replaceApp(e){n=e}}}const hr=[`extension`,`static-fallback`];function gr(e){let t=[];function n(e){let t=new Tn,n=[...e].sort((e,t)=>hr.indexOf(e.phase)-hr.indexOf(t.phase));for(let e of n)e.mount(t);return t}function r(){return n(t)}function i(r){e&&e.replaceApp(n(r)),t=r}return{add(e){i([...t,e])},remove(e){let n=t.filter(t=>t.owner!==e);n.length!==t.length&&i(n)},build:r,get contributions(){return[...t]}}}function _r(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function vr(e,t){return(n,r,i)=>{if(!_r(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var yr=class{options;busServer=null;websocketServer=null;upgradeHandlerServer=null;upgradeHandler=null;busReady=!1;connecting=!1;constructor(e){this.options=e}get dispatchingAuth(){return this.options.auth instanceof vt?this.options.auth:void 0}async connect(e,t){if(this.connecting||this.busServer||this.websocketServer)throw Error(`[BusServerTransport] connect() called while transport is already connected or connecting`);if(this.options.httpServer.address()===null)throw Error(`[BusServerTransport] httpServer must already be listening before connect() is called`);this.connecting=!0;try{let t=new On({noServer:!0});this.websocketServer=t;let n=vr(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await Dn({websocket:t,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`node`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`shutdown`)}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}detachUpgradeHandler(){this.upgradeHandlerServer&&this.upgradeHandler&&this.upgradeHandlerServer.off(`upgrade`,this.upgradeHandler),this.upgradeHandlerServer=null,this.upgradeHandler=null}async stopWebSocketServer(e){this.websocketServer&&=(await new Promise((e,t)=>{this.websocketServer.close(n=>n?t(n):e())}).catch(t=>{t instanceof Error&&t.message===`The server is not running`||console.error(`[BusServerTransport] Failed to close WebSocket server during ${e}:`,t)}),null)}},br=class extends kn{keysDir;constructor(e,t){super(e),this.keysDir=L.join(t,`keys`)}async getConfig(e){let t=await super.getConfig(e);return t.bus?.remote&&!t.bus.remote.secret&&(t.bus.remote.secret=this.generateSecret(),(await this.getStoredConfig()).bus?.remote?.url===t.bus.remote.url&&await this.saveConfig(await this.prepareConfigForPersistence(t))),t}generateSecret(){return Je.randomBytes(32).toString(`base64`)}async getMachineId(){return(await xn(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function xr(e,t){return{extensions:e.discovery??new O(void 0,{extensionsDir:R.join(t,`extensions`),nodeModulesDir:R.join(t,`node_modules`)})}}function Sr(e){return Xe(R.join(e,`meta`,`_journal.json`))}function Cr(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=Xn}=t,i=It(e).migrations.chainDirName,a=[],o=R.resolve(n,`..`,i);if(Sr(o))return o;a.push(o);try{let t=r(e);if(Sr(t))return t;a.push(t)}catch(t){a.push(`getMigrationsFolder('${e}') unavailable: ${t instanceof Error?t.message:String(t)}`)}throw Error(`resolveBundledMigrationsDir: no '${e}' migrations directory with meta/_journal.json found. Probed: ${a.join(`; `)}. Pass an explicit migrations directory (boot option 'centralMigrationsDir' or InitializeNodeDatabaseOptions.migrationsDir) when migrations are staged elsewhere.`)}function wr(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Tr(e){return e===void 0||e.trim()===``?void 0:e}function Er(e){try{let t=new URL(e);if(t.host!==``)return`${t.protocol}//${t.host}${t.pathname}`}catch{}let t=e.indexOf(`:`);return t===-1?`<unparseable database URL>`:`${e.slice(0,t+1)}…`}async function Dr(e,t,n){let r;try{r=await import(qe(Ue(L.resolve(t,`package.json`)).resolve(e.packageName)).href)}catch(t){throw Error(`initializeNodeDatabase: the database URL from ${n} targets the '${e.dialect}' storage engine, but '${e.packageName}' could not be loaded. Install ${e.packageName} in the host application, or pass its already-loaded storageEngine via the 'database.engines' boot option.`,{cause:t})}let i=r.storageEngine;if(i===void 0||i.dialect!==e.dialect)throw Error(`initializeNodeDatabase: '${e.packageName}' does not provide a storage engine for dialect '${e.dialect}'. Auto-resolved engine packages must export 'storageEngine: StorageEngine' with a matching dialect.`);Nt(e.dialect)===void 0&&Rt(i)}async function Or(e){let t=Tr(e.database?.url),n=t??Tr(process.env.MAKAIO_DATABASE_URL);if(n!==void 0){let r=t===void 0?`the MAKAIO_DATABASE_URL environment variable`:`the 'database.url' boot option`,i=Vt(n);if(i.kind===`missing-engine`&&(await Dr(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Vt(n)),i.kind!==`engine`){let e=At.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Er(n)}' from ${r}. URL targets require a storage engine that claims the URL (e.g. postgres:// / postgresql:// via ${e}); SQLite targets are configured via the dbPath option or MAKAIO_DATABASE_PATH.`)}return{kind:`url`,url:n,dialect:i.engine.dialect}}let r=L.resolve(Tr(e.dbPath)??Tr(process.env.MAKAIO_DATABASE_PATH)??L.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:qe(r).href}}async function kr(e){for(let t of e.database?.engines??[])Rt(t);let t=await Or(e);if(t.kind===`url`){let n=await cn({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Cr(t.dialect);return await lr(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=L.dirname(n);await z.promises.mkdir(r,{recursive:!0});let i=await cn({url:t.url});try{await lr(i.db,{migrationsDir:e.migrationsDir});try{await z.promises.chmod(n,384)}catch(e){if(!wr(e))throw e;console.warn(`[initializeNodeDatabase] Failed to set SQLite file permissions (continuing; this may be unsupported on Windows):`,e)}return{databaseClient:i,dbPath:n}}catch(e){throw await i.close(),e}}const Ar=F.object({npmName:F.string(),version:F.string(),source:F.enum([`new`,`upgraded`,`already-present`])}),jr=F.object({npmName:F.string(),reason:F.string()}),Mr=F.object({success:F.boolean(),packageName:F.string(),version:F.string().optional(),restartRequired:F.boolean(),error:F.string().optional(),installed:F.array(Ar).optional(),skipped:F.array(jr).optional(),warnings:F.array(F.string()).optional()}),Nr=F.object({success:F.boolean(),packageName:F.string(),error:F.string().optional(),restartRequired:F.boolean()}),Pr=F.object({name:F.string(),version:F.string(),description:F.string().optional(),hasDescriptor:F.boolean().default(!1),serverImportPath:F.string().min(1).optional()}),Fr=F.object({packageName:F.string(),latestVersion:F.string(),success:F.boolean(),error:F.string().optional()}),Ir=F.object({name:F.string(),displayName:F.string(),description:F.string(),icon:F.string().optional(),tags:F.array(F.string()).optional(),descriptorName:F.string().min(1).optional()}),Lr=F.object({$schema:F.string(),updatedAt:F.string(),adapters:F.array(Ir),extensions:F.array(Ir)}),Rr=F.object({name:F.string(),currentVersion:F.string(),latestVersion:F.string(),description:F.string().optional()}),zr=et(`packages`,{list:{request:F.object({}),response:F.object({packages:F.array(Pr)})},install:{request:F.object({packageName:F.string().optional(),packageNames:F.array(F.string()).min(1).optional(),source:F.enum([`npm`,`local`]).optional(),force:F.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Mr},uninstall:{request:F.object({packageName:F.string()}),response:Nr},getLatestVersion:{request:F.object({packageName:F.string()}),response:Fr},getRegistry:{request:F.object({}),response:Lr},checkUpdates:{request:F.object({}),response:F.object({updates:F.array(Rr)})},installed:F.object({packageName:F.string(),version:F.string()}),uninstalled:F.object({packageName:F.string()})}),U=zr.subjects;async function Br(e,t,n){if(!L.isAbsolute(e))return;let r;try{r=await I.realpath(e)}catch{return}let i=Vr(t,n),a=[L.resolve(r,`src`,`${i}.ts`),L.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await Hr(e);if(t!==void 0&&Ur(t,r))return t}}function Vr(e,t){return t===!0?e:t}async function Hr(e){try{return await I.realpath(e)}catch{return}}function Ur(e,t){let n=L.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!L.isAbsolute(n)}var Wr=class{extensionsDir;constructor(e){this.extensionsDir=L.resolve(e)}async install(e){try{let t=L.resolve(e.endsWith(`descriptor.json`)?L.dirname(e):e),n=await I.realpath(t),r=await this.readDescriptor(n);lt(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await I.mkdir(L.dirname(i),{recursive:!0});try{if((await I.lstat(i)).isSymbolicLink())await I.unlink(i);else throw Error(`${i} already exists and is not a symlink`)}catch(e){if(e.code!==`ENOENT`)throw e}let a=process.platform===`win32`?`junction`:`dir`;return await I.symlink(n,i,a),{success:!0,packageName:r.name,version:r.version,restartRequired:!0}}catch(e){return{success:!1,packageName:``,error:e instanceof Error?e.message:String(e),restartRequired:!1}}}async uninstall(e){try{let t=this.linkPathFor(e);if(await I.unlink(t),e.startsWith(`@`)){let e=L.dirname(t);(await I.readdir(e).catch(()=>null))?.length===0&&await I.rmdir(e).catch(()=>{})}return{success:!0,packageName:e,restartRequired:!0}}catch(t){return{success:!1,packageName:e,error:t instanceof Error?t.message:String(t),restartRequired:!1}}}async list(){try{await I.access(this.extensionsDir)}catch{return[]}let e=await I.readdir(this.extensionsDir),t=[];for(let n of e){let e=L.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await I.readdir(e).catch(()=>[]);for(let r of n){let n=L.join(e,r),i=await this.readLocalEntry(n);i!==null&&t.push(i)}}else{let n=await this.readLocalEntry(e);n!==null&&t.push(n)}}return t}async readLocalEntry(e){try{if(!(await I.lstat(e)).isSymbolicLink())return null;let t=await I.readlink(e),n=await I.realpath(L.resolve(L.dirname(e),t)),r=L.join(n,`descriptor.json`),i=await I.readFile(r,`utf-8`),a=dt(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Br(n,`server`,o);return{name:a.data.name,version:a.data.version,sourcePath:n,source:`local`,...s!==void 0&&{serverImportPath:s}}}catch{return null}}async readDescriptor(e){let t=L.join(e,`descriptor.json`),n=await I.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=dt(JSON.parse(n));if(!r.success)throw Error(`Invalid descriptor.json: ${r.error.message}`);return r.data}async validateEntrypoints(e,t){await Promise.all(Object.entries(t).map(async([t,n])=>{if(n!==void 0&&await Br(e,t,n)===void 0){let e=Vr(t,n);throw Error(`${t} entrypoint "${e}" has no resolvable candidate: neither src/${e}.ts nor dist/${e}.mjs exists within the extension root`)}}))}linkPathFor(e){let t=L.resolve(this.extensionsDir,...e.split(`/`)),n=L.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||L.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const Gr=`nodeLinker: node-modules`,Kr=/^[A-Za-z]:[\\/]/;let qr=null;function W(){return qr||(qr=Promise.all([import(`../lib-Dljw2Cqh.mjs`).then(e=>t(e.t(),1)),import(`../lib-BizqbepU.mjs`).then(e=>t(e.t(),1)),import(`../lib-BF5XBSfw.mjs`).then(e=>t(e.default,1))]).then(([e,t,n])=>({Configuration:e.Configuration,Project:e.Project,Cache:e.Cache,StreamReport:e.StreamReport,structUtils:e.structUtils,ppath:t.ppath,npath:t.npath,xfs:t.xfs,getPluginConfiguration:n.getPluginConfiguration})),qr)}var Jr=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await W(),r=e.toPortablePath(this.makaioHome),i=t.join(r,`package.json`);if(await n.mkdirpPromise(r),await this.ensureYarnRc(r,n,t),await n.existsPromise(i))return;await n.writeJsonPromise(i,{name:`makaio-packages`,version:`1.0.0`,private:!0,description:`Makaio installed packages`,dependencies:{}}),console.info(`[YarnPackageManager] Created package.json at %s`,i)}catch(e){throw Error(`Failed to initialize package.json`,{cause:e})}}async ensureYarnRc(e,t,n){let r=n.join(e,`.yarnrc.yml`),i=await t.existsPromise(r)?await t.readFilePromise(r,`utf8`):``,a=$r(i);i!==a&&(await t.writeFilePromise(r,a),console.info(`[YarnPackageManager] Wrote .yarnrc.yml at %s`,r))}async loadYarnState(){let{Configuration:e,Project:t,Cache:n,npath:r,getPluginConfiguration:i}=await W(),a=r.toPortablePath(this.makaioHome),o=await e.find(a,i()),{project:s}=await t.find(o,a);return{configuration:o,project:s,cache:await n.find(o)}}async runProjectInstall(e,t,n){let{StreamReport:r}=await W();if((await r.start({configuration:e,stdout:process.stdout},async e=>{await t.install({cache:n,report:e})})).hasErrors())throw Error(`Yarn install failed with errors`)}async parsePackageDescriptor(e){let{structUtils:t}=await W(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await W(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=await this.parsePackageDescriptor(e),o=t.stringifyIdent(a),s=r.topLevelWorkspace.manifest.dependencies.get(a.identHash);r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i);let c=r.storedResolutions.get(a.descriptorHash);if(!c)throw Error(`Package resolution not found after installation`);let l=r.storedPackages.get(c);if(!l)throw Error(`Package not found after installation`);let u=l.version??`unknown`;if(!(await this.readInstalledDescriptor(o)).hasDescriptor)throw s?r.topLevelWorkspace.manifest.dependencies.set(a.identHash,s):r.topLevelWorkspace.manifest.dependencies.delete(a.identHash),await this.runProjectInstall(n,r,i),Error(`Installed package ${o} does not contain a valid descriptor.json`);return console.info(`[YarnPackageManager] Installed %s@%s`,o,u),u}catch(t){throw Error(`Failed to install ${e}`,{cause:t})}}async uninstallPackage(e){try{let{structUtils:t}=await W(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=t.parseIdent(e);if(!r.topLevelWorkspace.manifest.dependencies.delete(a.identHash))throw Error(`Package ${e} not found in dependencies`);await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Uninstalled %s`,e)}catch(t){throw Error(`Failed to uninstall ${e}`,{cause:t})}}async listPackages(){try{let{xfs:e,npath:t,ppath:n,structUtils:r}=await W(),i=t.toPortablePath(this.makaioHome),a=n.join(i,`package.json`);if(!await e.existsPromise(a))return[];let{project:o}=await this.loadYarnState(),s=[];for(let[,e]of o.topLevelWorkspace.manifest.dependencies){let t=r.stringifyIdent(e),n=o.storedResolutions.get(e.descriptorHash),i=(n?o.storedPackages.get(n):void 0)?.version??r.parseRange(e.range).selector,a=await this.readInstalledDescriptor(t);a.hasDescriptor&&s.push({name:t,version:i,hasDescriptor:!0,...a.serverImportPath!==void 0&&{serverImportPath:a.serverImportPath}})}return s}catch(e){throw Error(`Failed to list packages`,{cause:e})}}async ensureFrameworkDependency(e){let t=Zr(e);try{let{structUtils:e}=await W(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=e.makeDescriptor(e.parseIdent(`@makaio/framework`),t);if(r.topLevelWorkspace.manifest.dependencies.get(a.identHash)?.range===t)return;r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Ensured @makaio/framework@%s`,t)}catch(e){throw Error(`Failed to ensure @makaio/framework@${t}`,{cause:e})}}async getLatestVersion(e){return this.resolvePackageVersion(e)}async readInstalledDescriptor(e){let t=await this.readInstalledExtensionDescriptor(e);if(t===null)return{hasDescriptor:!1};let n=await this.resolveInstalledServerEntrypoint(e,t);return{hasDescriptor:!0,...n!==void 0&&{serverImportPath:n}}}async resolveInstalledServerEntrypoint(e,t){let n=t.entrypoints?.server;if(n!==void 0)return Br(L.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=L.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await I.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||ei(e))return null;throw e}let r=dt(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=L.join(this.makaioHome,`package.json`),t;try{let n=await I.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(ei(e))return[];throw e}let n=Object.keys(t.dependencies??{});return(await Promise.all(n.map(async e=>{let t=await this.readInstalledExtensionDescriptor(e);return t===null?null:{npmName:e,version:await this.readInstalledPackageVersion(e),descriptor:t}}))).filter(e=>e!==null)}async readInstalledPackageVersion(e){let t=L.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await I.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=L.join(this.makaioHome,`package.json`),t=await I.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=L.join(this.makaioHome,`package.json`);await I.writeFile(t,`${JSON.stringify(e,null,2)}\n`,`utf-8`);let{configuration:n,project:r,cache:i}=await this.loadYarnState();await this.runProjectInstall(n,r,i)}async resolvePackageVersion(e){try{let{StreamReport:t}=await W(),{configuration:n,project:r}=await this.loadYarnState(),i=await this.parsePackageDescriptor(e),a=`unknown`;return await t.start({configuration:n,stdout:process.stdout},async e=>{let t=n.makeResolver(),o=await t.getCandidates(i,{},{project:r,resolver:t,report:e});if(o.length>0){let e=o[0];a=e.reference.match(/^npm:(.+)$/)?.[1]??e.reference}}),a}catch(t){throw Error(`Failed to resolve version for ${e}`,{cause:t})}}};function Yr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function Xr(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t===-1)return e;let n=e.indexOf(`@`,t+1);return n===-1?e:e.slice(0,n)}let t=e.indexOf(`@`);return t===-1?e:e.slice(0,t)}function Zr(e){return e.localPackagePath?`portal:${Qr(e.localPackagePath)}`:e.versionRange}function Qr(e){let t=(Kr.test(e)?e:L.resolve(e)).replace(/\\/g,`/`);return Kr.test(t)?`/${t}`:t}function $r(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,Gr):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
1
+ import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../semver-Cb5Um3tU.mjs";import{A as i,B as a,F as o,H as s,I as c,L as l,M as u,N as d,P as f,R as p,V as m,a as h,c as g,d as _,f as v,g as y,h as b,i as x,j as S,k as C,l as w,n as T,o as E,r as ee,s as te,t as ne,v as re,y as ie,z as ae}from"../workflow-worker-l-wflI6V.mjs";import{createNodeClientBinaryStrategyDependencies as oe}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as se,RuntimeSubjects as D}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as ce,FilesystemDescriptorDiscovery as O,MergedDescriptorDiscovery as le}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as k,MAKAIO_HOME_ENV as A,buildConfiguredRuntimeOptions as ue,createMakaioConfigDiscovery as de,defineMakaioConfig as fe,loadMakaioConfig as pe,parseMakaioConfig as me,resolveMakaioConfigPath as he,resolveMakaioHome as ge,shouldIncludeExtension as _e}from"./makaio-config.mjs";import{n as j}from"../extension-package-provenance-C7oO5JAE.mjs";import{t as ve}from"../descriptor-to-package-Dw8dnl5E.mjs";import{a as M,c as ye,i as N,l as P,n as be,o as xe,r as Se,s as Ce,t as we}from"../load-extensions-BVgxTj_y.mjs";import{a as Te,c as Ee,i as De,l as Oe,n as ke,r as Ae,s as je,t as Me}from"../bootstrap-start-client-C1ZHbv6e.mjs";import{captureWorkflowExecutionBusSecretCleanup as Ne}from"./workflow-execution-bus-access.mjs";import{a as Pe,c as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"../types-CsmvIK25.mjs";import{t as He}from"../code-execution-pUF4IO462.mjs";import{createRequire as Ue}from"node:module";import{z as F}from"zod";import{execFile as We}from"node:child_process";import{promisify as Ge}from"node:util";import{fileURLToPath as Ke,pathToFileURL as qe}from"node:url";import*as I from"node:fs/promises";import*as L from"node:path";import R from"node:path";import*as Je from"node:crypto";import{createHash as Ye}from"node:crypto";import*as z from"node:fs";import{existsSync as Xe,readFileSync as Ze,statSync as Qe}from"node:fs";import{isRecord as $e}from"@makaio/framework/utils";import{createBusNamespace as et}from"@makaio/framework/core";import{AIModelSchema as tt,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as nt,ConfigSchema as rt,ConfigSubjects as it,CredentialSubjects as at,FrameworkContractNamespaces as ot,FrameworkStorageNamespaces as st,SubjectTelemetrySubjects as ct,isDetachedDescriptor as lt,registerWorkerProvider as ut,safeParseExtensionDescriptor as dt,unregisterWorkerProvider as ft,versionSatisfies as pt}from"@makaio/framework/contracts";import{ChannelClosedError as mt,MakaioBus as ht,openChannel as gt,projectSubjectTelemetryFacts as _t}from"@makaio/framework/bus";import{DispatchingAuth as vt,E2EAuth as yt,HmacAuth as bt,WebSocketClientTransport as xt}from"@makaio/framework/node/transports";import{BootNamespace as St,ExtensionCoordinator as Ct,ExtensionNamespace as wt,KernelNamespace as Tt,createShutdownSequence as Et}from"@makaio/framework/kernel";import{BaseService as Dt}from"@makaio/framework/service-base";import{uniqueIndex as Ot}from"drizzle-orm/sqlite-core";import{uniqueIndex as kt}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as At,defineDialectSchema as jt,defineDualTable as Mt,findStorageEngine as Nt,getDatabaseDialect as Pt,getRawSqlExecutor as Ft,getStorageEngine as It,registerDrizzleHandlers as Lt,registerStorageEngine as Rt,resolveSchema as zt,resolveStorageEngine as Bt,resolveStorageEngineForUrl as Vt}from"@makaio/framework/storage/drizzle";import{and as Ht,eq as B,sql as V}from"drizzle-orm";import{parseStoredCredentialRef as Ut}from"@makaio/framework/contracts/config";import*as Wt from"node:os";import{ProviderStorageSubjects as Gt}from"@makaio/framework/services/settings/storage";import{FrameworkServicesCoreNamespaces as Kt,createArtifactKindContributionProcessor as qt,createArtifactLifecycleHookContributionProcessor as Jt,createFacetNamespaceContributionProcessor as Yt,createModelRegistryPackage as Xt,createReactionContributionProcessor as Zt,createToolContributionProcessor as Qt,createTransitionContributionProcessor as $t,createWorkflowBlockContributionProcessor as en}from"@makaio/framework/services";import{CachedRegistryFetcher as tn,FallbackRegistryFetcher as nn,ModelRegistrySchema as rn,ProviderModelOverrideSchema as an,mergeModelMetadata as on}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as sn}from"@makaio/framework/clients";import{createDatabaseClient as cn}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as ln,resolveAdapterRuntimeSnapshot as un,resolveBoundProviderAuth as dn,resolveConnectorCredentials as fn,resolveCredentialRef as pn}from"@makaio/framework/adapters/config";import{DefinitionSubjects as mn}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as hn}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as gn}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as _n,FileAdapterConfigRepository as vn,orderAfterAdapterSubsystem as yn}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as bn,loadOrCreateMachineIdentity as xn,machineKeysExist as Sn,validateMachineKeys as Cn}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as wn}from"@makaio/framework/utils/workspace-root";import{Hono as Tn}from"hono";import{CliNamespace as En}from"@makaio/framework/kernel/cli";import{startBusServer as Dn}from"@makaio/framework/node/bus-server";import{WebSocketServer as On}from"ws";import{ConfigProvider as kn}from"@makaio/framework/providers";import{KernelSubjects as H}from"@makaio/framework/kernel/namespace";import{createAutomationTriggerContributionProcessor as An,selectAutomationCronSchedulerPackage as jn}from"@makaio/framework/services/automation-trigger";import{createArtifactViewBuilderContributionProcessor as Mn,createSurfaceBindingContributionProcessor as Nn}from"@makaio/framework/services/materialization";import{createLogImportContributionProcessor as Pn,logImportRegistryPackage as Fn}from"@makaio/framework/services/log-import";import{WorkflowEngineToken as In,createWorkflowEnginePackage as Ln}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Rn,PreferencesSubjects as zn}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as Bn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as Vn}from"@hono/node-server/serve-static";var Hn=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function Un(e){let t=e.providerProtocol;if(t===void 0)throw new Hn;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function Wn(e){let t,n=!1;for(let r=e.length-1;r>=0;--r){let i=e[r];try{i()}catch(e){n||=(t=e,!0)}}if(e.length=0,n)throw t}function Gn(e,t){try{return t()}catch(t){try{Wn(e)}catch{}throw t}}function Kn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function qn(e){let{$schema:t,...n}=e;return n}function Jn(e){let t=e.definition,n=Date.now();return{id:t.id,packageName:e.providerPackageName,name:t.name,description:t.description,endpoints:t.endpoints,defaultModel:t.defaultModel,fastModel:t.fastModel,availableModels:t.availableModels??[],defaultModelFilterMode:`show-all`,authMethods:t.authMethods,capabilities:t.capabilities,enabled:!0,createdAt:n,updatedAt:n}}function Yn(e,t,n,r){let i=[];return Gn(i,()=>(i.push(e.on(gn.adapter.getConfigSchema,({payload:e,setResult:n})=>{let r=t().find(t=>t.name===e.adapterName);if(!r?.adapterConfigSchema){n({hasSchema:!1,schema:null});return}n({hasSchema:!0,schema:F.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(mn.getConfigSchema,({payload:e,setResult:n})=>{let r=Kn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:F.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(gn.extension.getConfigSchema,({payload:e,setResult:t})=>{let n=r(e.extensionName);if(!n?.configSchema){t({hasSchema:!1,schema:null,uiConfig:null});return}t({hasSchema:!0,schema:qn(F.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Gt.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:Jn(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Gt.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(Jn(t)));e({providers:n})},{priority:-1})),i.push(e.on(hn.listModelFetchAdapters,async({payload:r,setResult:i})=>{let a=[];for(let i of t()){let t=i.options.adapterId,o=t?n().get(t):void 0;if(!(!o||!(`fetchModels`in o)||typeof o.fetchModels!=`function`))try{await un(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof ln))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(hn.fetchModels,async({payload:r,setResult:i})=>{let a=t().find(e=>e.name===r.adapterName);if(!a)throw Error(`Adapter '${r.adapterName}' is not loaded for live model discovery`);let o=await un(e,{adapterName:a.name,providerConfigId:r.providerConfigId}),s=a.options.adapterId,c=s?n().get(s):void 0;if(!s||!c)throw Error(`Adapter instance for '${a.name}' not initialized`);if(!(`fetchModels`in c)||typeof c.fetchModels!=`function`)throw Error(`Adapter '${a.name}' does not support model fetching`);let l=Un(o),u=await dn(o.boundProviderAuth,t=>fn(e,t));i({models:await c.fetchModels(l,u)})})),()=>{Wn(i)}))}function Xn(e=`sqlite`){let{migrations:t}=It(e);return t.resolveSourceChainDir?.()??R.resolve(import.meta.dirname,`..`,t.chainDirName)}var Zn=class extends Error{expectedDialect;journalDialect;constructor(e,t,n,r){super(`Migration journal at ${r} declares dialect '${n??`unknown`}', but the target database speaks '${e}'. Point the runner at a migrations directory generated for '${e}' (journal dialect '${t}').`),this.name=`MigrationDialectMismatchError`,this.expectedDialect=e,this.journalDialect=n}};function Qn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??Xn(t),r=R.join(n,`meta`,`_journal.json`);if(!Xe(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(Ze(r,`utf-8`));if(t!==void 0){let e=It(t).migrations.journalDialect;if(i.dialect!==e)throw new Zn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=Ze(R.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:Ye(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function $n(e){return e.replace(/--.*$/gm,``).trim()}async function er(e,t){try{await e.run(V.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function tr(e){let{migrations:t}=e.engine;if(await e.session.run(V.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await er(e.session,{migrationsTable:e.tableName}),t}}async function nr(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await tr(e);try{await e.session.run(V.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(V`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(V.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await er(e.session,{migrationsTable:e.tableName}),n}}async function rr(e,t){try{await e.session.run(V`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(V.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function ir(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(V`SELECT hash FROM ${e.tableId} WHERE hash = ${t.hash}`)).length===0?!1:(console.warn(`[storage-migrations] Migration already recorded by a concurrent runner, skipping`,{hash:t.hash,folderMillis:t.folderMillis}),await e.session.run(V.raw(`COMMIT`)),!0)}async function ar(e,t){await e.session.run(V.raw(`ROLLBACK`)),await tr(e),!await ir(e,t)&&await rr(e,t)}async function or(e,t){await tr(e);try{if(await ir(e,t))return;for(let[n,r]of t.sql.entries())if($n(r))try{await e.session.run(V.raw(r))}catch(i){if(n===0&&/^\s*CREATE\s/i.test(r)&&e.engine.errors.isDuplicateObjectError(i)){if(t.sql.length>1)throw Error(`Cannot adopt multi-statement migration '${t.tag}' because its first schema object already exists. Reset the database or provide an incremental migration.`,{cause:i});console.warn(`[storage-migrations] Schema object already exists, adopting into ledger`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n}),await ar(e,t);return}throw console.error(`[storage-migrations] Failed to apply migration statement`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n,statement:r,error:i}),i}await rr(e,t)}catch(n){throw await er(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function sr(e,t,n){let r=e.engine.migrations.constraintSuspension;if(!r?.isRequestedBy(t.sql)){await n();return}await e.session.run(V.raw(r.suspendStatement));try{await n()}finally{await e.session.run(V.raw(r.restoreStatement))}}async function cr(e,t,n){let r=Ft(e),i=It(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:V.identifier(a)},r=await nr(n);for(let e of t)r.has(e.hash)||(await sr(n,e,()=>or(n,e)),r.add(e.hash))})}async function lr(e,t={}){await cr(e,Qn({migrationsDir:t.migrationsDir,expectedDialect:Pt(e)})),await Bt(e).fts.provisionSearchIndex(e)}var ur=class{configPath;constructor(e){this.configPath=L.join(e,`config.json`)}async getConfig(){try{let e=await I.readFile(this.configPath,`utf-8`);return rt.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return rt.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),rt.parse({});throw e}}async saveConfig(e){let t=L.dirname(this.configPath);await I.mkdir(t,{recursive:!0}),await I.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await I.chmod(this.configPath,384)}};function dr(e){try{let t=wn(e);return[L.resolve(t,`framework/static/model-registry.yaml`),L.resolve(t,`static/model-registry.yaml`)].find(e=>{try{return Qe(e).isFile()}catch{return!1}})}catch{return}}async function fr(e,t){await new Promise((n,r)=>{if(e.address()){n();return}let i=e=>{if(o(),e.code===`EADDRINUSE`){r(Error(`Port ${t} is already in use`));return}r(e)},a=()=>{o(),n()},o=()=>{e.off(`error`,i),e.off(`listening`,a)};e.once(`error`,i),e.once(`listening`,a)}),e.on(`error`,e=>{console.error(`[HttpServer] Post-bind error:`,e)})}function pr(e){let t=e.address();if(typeof t==`object`&&t&&`port`in t)return t.port;throw Error(`HTTP server is not bound to a TCP address`)}function mr(e,t){let n=e,r=!1;return{fetch:(e,i,a)=>{if(!r)return new Response(`Makaio runtime is booting`,{status:503,headers:{"Retry-After":`1`}});let{pathname:o}=new URL(e.url);return t?.health&&e.method===`GET`&&o===`/health`?Response.json(t.health()):e.method===`GET`&&o===`/bus`?new Response(`WebSocket endpoint`,{status:426,headers:{Upgrade:`websocket`}}):n.fetch(e,i,a)},markReady(){r=!0},replaceApp(e){n=e}}}const hr=[`extension`,`static-fallback`];function gr(e){let t=[];function n(e){let t=new Tn,n=[...e].sort((e,t)=>hr.indexOf(e.phase)-hr.indexOf(t.phase));for(let e of n)e.mount(t);return t}function r(){return n(t)}function i(r){e&&e.replaceApp(n(r)),t=r}return{add(e){i([...t,e])},remove(e){let n=t.filter(t=>t.owner!==e);n.length!==t.length&&i(n)},build:r,get contributions(){return[...t]}}}function _r(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function vr(e,t){return(n,r,i)=>{if(!_r(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var yr=class{options;busServer=null;websocketServer=null;upgradeHandlerServer=null;upgradeHandler=null;busReady=!1;connecting=!1;constructor(e){this.options=e}get dispatchingAuth(){return this.options.auth instanceof vt?this.options.auth:void 0}async connect(e,t){if(this.connecting||this.busServer||this.websocketServer)throw Error(`[BusServerTransport] connect() called while transport is already connected or connecting`);if(this.options.httpServer.address()===null)throw Error(`[BusServerTransport] httpServer must already be listening before connect() is called`);this.connecting=!0;try{let t=new On({noServer:!0});this.websocketServer=t;let n=vr(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await Dn({websocket:t,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`node`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`shutdown`)}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}detachUpgradeHandler(){this.upgradeHandlerServer&&this.upgradeHandler&&this.upgradeHandlerServer.off(`upgrade`,this.upgradeHandler),this.upgradeHandlerServer=null,this.upgradeHandler=null}async stopWebSocketServer(e){this.websocketServer&&=(await new Promise((e,t)=>{this.websocketServer.close(n=>n?t(n):e())}).catch(t=>{t instanceof Error&&t.message===`The server is not running`||console.error(`[BusServerTransport] Failed to close WebSocket server during ${e}:`,t)}),null)}},br=class extends kn{keysDir;constructor(e,t){super(e),this.keysDir=L.join(t,`keys`)}async getConfig(e){let t=await super.getConfig(e);return t.bus?.remote&&!t.bus.remote.secret&&(t.bus.remote.secret=this.generateSecret(),(await this.getStoredConfig()).bus?.remote?.url===t.bus.remote.url&&await this.saveConfig(await this.prepareConfigForPersistence(t))),t}generateSecret(){return Je.randomBytes(32).toString(`base64`)}async getMachineId(){return(await xn(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function xr(e,t){return{extensions:e.discovery??new O(void 0,{extensionsDir:R.join(t,`extensions`),nodeModulesDir:R.join(t,`node_modules`)})}}function Sr(e){return Xe(R.join(e,`meta`,`_journal.json`))}function Cr(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=Xn}=t,i=It(e).migrations.chainDirName,a=[],o=R.resolve(n,`..`,i);if(Sr(o))return o;a.push(o);try{let t=r(e);if(Sr(t))return t;a.push(t)}catch(t){a.push(`getMigrationsFolder('${e}') unavailable: ${t instanceof Error?t.message:String(t)}`)}throw Error(`resolveBundledMigrationsDir: no '${e}' migrations directory with meta/_journal.json found. Probed: ${a.join(`; `)}. Pass an explicit migrations directory (boot option 'centralMigrationsDir' or InitializeNodeDatabaseOptions.migrationsDir) when migrations are staged elsewhere.`)}function wr(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Tr(e){return e===void 0||e.trim()===``?void 0:e}function Er(e){try{let t=new URL(e);if(t.host!==``)return`${t.protocol}//${t.host}${t.pathname}`}catch{}let t=e.indexOf(`:`);return t===-1?`<unparseable database URL>`:`${e.slice(0,t+1)}…`}async function Dr(e,t,n){let r;try{r=await import(qe(Ue(L.resolve(t,`package.json`)).resolve(e.packageName)).href)}catch(t){throw Error(`initializeNodeDatabase: the database URL from ${n} targets the '${e.dialect}' storage engine, but '${e.packageName}' could not be loaded. Install ${e.packageName} in the host application, or pass its already-loaded storageEngine via the 'database.engines' boot option.`,{cause:t})}let i=r.storageEngine;if(i===void 0||i.dialect!==e.dialect)throw Error(`initializeNodeDatabase: '${e.packageName}' does not provide a storage engine for dialect '${e.dialect}'. Auto-resolved engine packages must export 'storageEngine: StorageEngine' with a matching dialect.`);Nt(e.dialect)===void 0&&Rt(i)}async function Or(e){let t=Tr(e.database?.url),n=t??Tr(process.env.MAKAIO_DATABASE_URL);if(n!==void 0){let r=t===void 0?`the MAKAIO_DATABASE_URL environment variable`:`the 'database.url' boot option`,i=Vt(n);if(i.kind===`missing-engine`&&(await Dr(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Vt(n)),i.kind!==`engine`){let e=At.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Er(n)}' from ${r}. URL targets require a storage engine that claims the URL (e.g. postgres:// / postgresql:// via ${e}); SQLite targets are configured via the dbPath option or MAKAIO_DATABASE_PATH.`)}return{kind:`url`,url:n,dialect:i.engine.dialect}}let r=L.resolve(Tr(e.dbPath)??Tr(process.env.MAKAIO_DATABASE_PATH)??L.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:qe(r).href}}async function kr(e){for(let t of e.database?.engines??[])Rt(t);let t=await Or(e);if(t.kind===`url`){let n=await cn({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Cr(t.dialect);return await lr(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=L.dirname(n);await z.promises.mkdir(r,{recursive:!0});let i=await cn({url:t.url});try{await lr(i.db,{migrationsDir:e.migrationsDir});try{await z.promises.chmod(n,384)}catch(e){if(!wr(e))throw e;console.warn(`[initializeNodeDatabase] Failed to set SQLite file permissions (continuing; this may be unsupported on Windows):`,e)}return{databaseClient:i,dbPath:n}}catch(e){throw await i.close(),e}}const Ar=F.object({npmName:F.string(),version:F.string(),source:F.enum([`new`,`upgraded`,`already-present`])}),jr=F.object({npmName:F.string(),reason:F.string()}),Mr=F.object({success:F.boolean(),packageName:F.string(),version:F.string().optional(),restartRequired:F.boolean(),error:F.string().optional(),installed:F.array(Ar).optional(),skipped:F.array(jr).optional(),warnings:F.array(F.string()).optional()}),Nr=F.object({success:F.boolean(),packageName:F.string(),error:F.string().optional(),restartRequired:F.boolean()}),Pr=F.object({name:F.string(),version:F.string(),description:F.string().optional(),hasDescriptor:F.boolean().default(!1),serverImportPath:F.string().min(1).optional()}),Fr=F.object({packageName:F.string(),latestVersion:F.string(),success:F.boolean(),error:F.string().optional()}),Ir=F.object({name:F.string(),displayName:F.string(),description:F.string(),icon:F.string().optional(),tags:F.array(F.string()).optional(),descriptorName:F.string().min(1).optional()}),Lr=F.object({$schema:F.string(),updatedAt:F.string(),adapters:F.array(Ir),extensions:F.array(Ir)}),Rr=F.object({name:F.string(),currentVersion:F.string(),latestVersion:F.string(),description:F.string().optional()}),zr=et(`packages`,{list:{request:F.object({}),response:F.object({packages:F.array(Pr)})},install:{request:F.object({packageName:F.string().optional(),packageNames:F.array(F.string()).min(1).optional(),source:F.enum([`npm`,`local`]).optional(),force:F.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Mr},uninstall:{request:F.object({packageName:F.string()}),response:Nr},getLatestVersion:{request:F.object({packageName:F.string()}),response:Fr},getRegistry:{request:F.object({}),response:Lr},checkUpdates:{request:F.object({}),response:F.object({updates:F.array(Rr)})},installed:F.object({packageName:F.string(),version:F.string()}),uninstalled:F.object({packageName:F.string()})}),U=zr.subjects;async function Br(e,t,n){if(!L.isAbsolute(e))return;let r;try{r=await I.realpath(e)}catch{return}let i=Vr(t,n),a=[L.resolve(r,`src`,`${i}.ts`),L.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await Hr(e);if(t!==void 0&&Ur(t,r))return t}}function Vr(e,t){return t===!0?e:t}async function Hr(e){try{return await I.realpath(e)}catch{return}}function Ur(e,t){let n=L.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!L.isAbsolute(n)}var Wr=class{extensionsDir;constructor(e){this.extensionsDir=L.resolve(e)}async install(e){try{let t=L.resolve(e.endsWith(`descriptor.json`)?L.dirname(e):e),n=await I.realpath(t),r=await this.readDescriptor(n);lt(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await I.mkdir(L.dirname(i),{recursive:!0});try{if((await I.lstat(i)).isSymbolicLink())await I.unlink(i);else throw Error(`${i} already exists and is not a symlink`)}catch(e){if(e.code!==`ENOENT`)throw e}let a=process.platform===`win32`?`junction`:`dir`;return await I.symlink(n,i,a),{success:!0,packageName:r.name,version:r.version,restartRequired:!0}}catch(e){return{success:!1,packageName:``,error:e instanceof Error?e.message:String(e),restartRequired:!1}}}async uninstall(e){try{let t=this.linkPathFor(e);if(await I.unlink(t),e.startsWith(`@`)){let e=L.dirname(t);(await I.readdir(e).catch(()=>null))?.length===0&&await I.rmdir(e).catch(()=>{})}return{success:!0,packageName:e,restartRequired:!0}}catch(t){return{success:!1,packageName:e,error:t instanceof Error?t.message:String(t),restartRequired:!1}}}async list(){try{await I.access(this.extensionsDir)}catch{return[]}let e=await I.readdir(this.extensionsDir),t=[];for(let n of e){let e=L.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await I.readdir(e).catch(()=>[]);for(let r of n){let n=L.join(e,r),i=await this.readLocalEntry(n);i!==null&&t.push(i)}}else{let n=await this.readLocalEntry(e);n!==null&&t.push(n)}}return t}async readLocalEntry(e){try{if(!(await I.lstat(e)).isSymbolicLink())return null;let t=await I.readlink(e),n=await I.realpath(L.resolve(L.dirname(e),t)),r=L.join(n,`descriptor.json`),i=await I.readFile(r,`utf-8`),a=dt(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Br(n,`server`,o);return{name:a.data.name,version:a.data.version,sourcePath:n,source:`local`,...s!==void 0&&{serverImportPath:s}}}catch{return null}}async readDescriptor(e){let t=L.join(e,`descriptor.json`),n=await I.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=dt(JSON.parse(n));if(!r.success)throw Error(`Invalid descriptor.json: ${r.error.message}`);return r.data}async validateEntrypoints(e,t){await Promise.all(Object.entries(t).map(async([t,n])=>{if(n!==void 0&&await Br(e,t,n)===void 0){let e=Vr(t,n);throw Error(`${t} entrypoint "${e}" has no resolvable candidate: neither src/${e}.ts nor dist/${e}.mjs exists within the extension root`)}}))}linkPathFor(e){let t=L.resolve(this.extensionsDir,...e.split(`/`)),n=L.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||L.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const Gr=`nodeLinker: node-modules`,Kr=/^[A-Za-z]:[\\/]/;let qr=null;function W(){return qr||(qr=Promise.all([import(`../lib-Dljw2Cqh.mjs`).then(e=>t(e.t(),1)),import(`../lib-BizqbepU.mjs`).then(e=>t(e.t(),1)),import(`../lib-BF5XBSfw.mjs`).then(e=>t(e.default,1))]).then(([e,t,n])=>({Configuration:e.Configuration,Project:e.Project,Cache:e.Cache,StreamReport:e.StreamReport,structUtils:e.structUtils,ppath:t.ppath,npath:t.npath,xfs:t.xfs,getPluginConfiguration:n.getPluginConfiguration})),qr)}var Jr=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await W(),r=e.toPortablePath(this.makaioHome),i=t.join(r,`package.json`);if(await n.mkdirpPromise(r),await this.ensureYarnRc(r,n,t),await n.existsPromise(i))return;await n.writeJsonPromise(i,{name:`makaio-packages`,version:`1.0.0`,private:!0,description:`Makaio installed packages`,dependencies:{}}),console.info(`[YarnPackageManager] Created package.json at %s`,i)}catch(e){throw Error(`Failed to initialize package.json`,{cause:e})}}async ensureYarnRc(e,t,n){let r=n.join(e,`.yarnrc.yml`),i=await t.existsPromise(r)?await t.readFilePromise(r,`utf8`):``,a=$r(i);i!==a&&(await t.writeFilePromise(r,a),console.info(`[YarnPackageManager] Wrote .yarnrc.yml at %s`,r))}async loadYarnState(){let{Configuration:e,Project:t,Cache:n,npath:r,getPluginConfiguration:i}=await W(),a=r.toPortablePath(this.makaioHome),o=await e.find(a,i()),{project:s}=await t.find(o,a);return{configuration:o,project:s,cache:await n.find(o)}}async runProjectInstall(e,t,n){let{StreamReport:r}=await W();if((await r.start({configuration:e,stdout:process.stdout},async e=>{await t.install({cache:n,report:e})})).hasErrors())throw Error(`Yarn install failed with errors`)}async parsePackageDescriptor(e){let{structUtils:t}=await W(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await W(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=await this.parsePackageDescriptor(e),o=t.stringifyIdent(a),s=r.topLevelWorkspace.manifest.dependencies.get(a.identHash);r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i);let c=r.storedResolutions.get(a.descriptorHash);if(!c)throw Error(`Package resolution not found after installation`);let l=r.storedPackages.get(c);if(!l)throw Error(`Package not found after installation`);let u=l.version??`unknown`;if(!(await this.readInstalledDescriptor(o)).hasDescriptor)throw s?r.topLevelWorkspace.manifest.dependencies.set(a.identHash,s):r.topLevelWorkspace.manifest.dependencies.delete(a.identHash),await this.runProjectInstall(n,r,i),Error(`Installed package ${o} does not contain a valid descriptor.json`);return console.info(`[YarnPackageManager] Installed %s@%s`,o,u),u}catch(t){throw Error(`Failed to install ${e}`,{cause:t})}}async uninstallPackage(e){try{let{structUtils:t}=await W(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=t.parseIdent(e);if(!r.topLevelWorkspace.manifest.dependencies.delete(a.identHash))throw Error(`Package ${e} not found in dependencies`);await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Uninstalled %s`,e)}catch(t){throw Error(`Failed to uninstall ${e}`,{cause:t})}}async listPackages(){try{let{xfs:e,npath:t,ppath:n,structUtils:r}=await W(),i=t.toPortablePath(this.makaioHome),a=n.join(i,`package.json`);if(!await e.existsPromise(a))return[];let{project:o}=await this.loadYarnState(),s=[];for(let[,e]of o.topLevelWorkspace.manifest.dependencies){let t=r.stringifyIdent(e),n=o.storedResolutions.get(e.descriptorHash),i=(n?o.storedPackages.get(n):void 0)?.version??r.parseRange(e.range).selector,a=await this.readInstalledDescriptor(t);a.hasDescriptor&&s.push({name:t,version:i,hasDescriptor:!0,...a.serverImportPath!==void 0&&{serverImportPath:a.serverImportPath}})}return s}catch(e){throw Error(`Failed to list packages`,{cause:e})}}async ensureFrameworkDependency(e){let t=Zr(e);try{let{structUtils:e}=await W(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=e.makeDescriptor(e.parseIdent(`@makaio/framework`),t);if(r.topLevelWorkspace.manifest.dependencies.get(a.identHash)?.range===t)return;r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Ensured @makaio/framework@%s`,t)}catch(e){throw Error(`Failed to ensure @makaio/framework@${t}`,{cause:e})}}async getLatestVersion(e){return this.resolvePackageVersion(e)}async readInstalledDescriptor(e){let t=await this.readInstalledExtensionDescriptor(e);if(t===null)return{hasDescriptor:!1};let n=await this.resolveInstalledServerEntrypoint(e,t);return{hasDescriptor:!0,...n!==void 0&&{serverImportPath:n}}}async resolveInstalledServerEntrypoint(e,t){let n=t.entrypoints?.server;if(n!==void 0)return Br(L.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=L.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await I.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||ei(e))return null;throw e}let r=dt(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=L.join(this.makaioHome,`package.json`),t;try{let n=await I.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(ei(e))return[];throw e}let n=Object.keys(t.dependencies??{});return(await Promise.all(n.map(async e=>{let t=await this.readInstalledExtensionDescriptor(e);return t===null?null:{npmName:e,version:await this.readInstalledPackageVersion(e),descriptor:t}}))).filter(e=>e!==null)}async readInstalledPackageVersion(e){let t=L.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await I.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=L.join(this.makaioHome,`package.json`),t=await I.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=L.join(this.makaioHome,`package.json`);await I.writeFile(t,`${JSON.stringify(e,null,2)}\n`,`utf-8`);let{configuration:n,project:r,cache:i}=await this.loadYarnState();await this.runProjectInstall(n,r,i)}async resolvePackageVersion(e){try{let{StreamReport:t}=await W(),{configuration:n,project:r}=await this.loadYarnState(),i=await this.parsePackageDescriptor(e),a=`unknown`;return await t.start({configuration:n,stdout:process.stdout},async e=>{let t=n.makeResolver(),o=await t.getCandidates(i,{},{project:r,resolver:t,report:e});if(o.length>0){let e=o[0];a=e.reference.match(/^npm:(.+)$/)?.[1]??e.reference}}),a}catch(t){throw Error(`Failed to resolve version for ${e}`,{cause:t})}}};function Yr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function Xr(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t===-1)return e;let n=e.indexOf(`@`,t+1);return n===-1?e:e.slice(0,n)}let t=e.indexOf(`@`);return t===-1?e:e.slice(0,t)}function Zr(e){return e.localPackagePath?`portal:${Qr(e.localPackagePath)}`:e.versionRange}function Qr(e){let t=(Kr.test(e)?e:L.resolve(e)).replace(/\\/g,`/`);return Kr.test(t)?`/${t}`:t}function $r(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,Gr):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
2
2
  `:``}${Gr}\n`}return`${r.join(`
3
3
  `).trimEnd()}\n`}function ei(e){if(typeof e!=`object`||!e||!(`code`in e))return!1;let t=e.code;return t===`ENOENT`||t===`ENOTDIR`}function ti(e){if(e.startsWith(`git+`))return{kind:`git`,raw:e,resolved:e};let t=e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`);if(e.startsWith(`~`)&&!t)throw Error(`Unsupported home-relative path syntax: ${e}`);return e.startsWith(`.`)||L.isAbsolute(e)||L.win32.isAbsolute(e)||t?{kind:`local`,raw:e,resolved:t?L.resolve(Wt.homedir(),e===`~`?`.`:e.slice(2)):L.resolve(e)}:{kind:`npm`,raw:e,resolved:e}}var ni=class{packages;names;constructor(e,t){this.packages=e,this.names=t}async resolve(e,t={}){let n=t.snapshot!==null,r=n?t.snapshot===void 0?await this.packages.readManifestSnapshot():t.snapshot:null;try{return await this.runBfs(e,t.force===!0)}catch(e){if(n)try{await this.packages.writeManifestAndReinstall(r)}catch(t){throw AggregateError([e,t],`Dependency resolution failed and rollback failed: ${ai(e)}`)}throw e}}async runBfs(e,t){let n=await this.readInstalledIndex(),r=e.map(e=>{let t=ii(e),n=ri(t.npmName);return{npmName:t.npmName,...n?{expectedDescriptorName:n}:{},...t.requiredRange?{requiredRange:t.requiredRange}:{},optional:!1,path:[t.npmName],root:!0}}),i=new Set,a=[],o=[],s=[];for(;r.length>0;){let e=r.shift(),s=i.has(e.npmName),c=n.byNpmName.get(e.npmName);if(s){if(c&&this.assertDescriptorMatches(e,c.descriptor),c&&this.descriptorRangeSatisfied(c.descriptor,e.requiredRange))continue;if(!c)throw Error(`Package ${e.npmName} was resolved but is missing from the installed index`)}if(c&&this.assertDescriptorMatches(e,c.descriptor),c&&this.shouldUseCurrentDescriptor(c.descriptor,e)){a.push({npmName:e.npmName,version:c.version,source:`already-present`}),await this.enqueueDependencies(r,e,c.descriptor),i.add(e.npmName);continue}let l=Yr(e.npmName,e.requiredRange),u,d;try{u=await this.packages.installPackage(l);let r=await this.packages.readInstalledExtensionDescriptor(e.npmName);if(!r)throw Error(`Installed package ${e.npmName} does not contain a valid descriptor.json`);this.assertDescriptorMatches(e,r),this.assertDescriptorVersionSatisfies(e,r),await this.assertDependentsCompatible(e.npmName,r.version,n,t),d=r}catch(t){if(e.optional){o.push({npmName:e.npmName,reason:t instanceof Error?t.message:String(t)});continue}throw t}a.push({npmName:e.npmName,version:u,source:c?`upgraded`:`new`}),c={npmName:e.npmName,version:u,descriptor:d},n.byNpmName.set(e.npmName,c),await this.enqueueDependencies(r,e,d),i.add(e.npmName)}return{installed:a,skipped:o,warnings:s}}async readInstalledIndex(){let e=await this.packages.listInstalledExtensionDescriptors();return{byNpmName:new Map(e.map(e=>[e.npmName,e]))}}descriptorRangeSatisfied(e,t){return t===void 0||pt(e.version,t)}shouldUseCurrentDescriptor(e,t){return t.root&&t.requiredRange===void 0?!1:this.descriptorRangeSatisfied(e,t.requiredRange)}assertDescriptorMatches(e,t){if(!(e.expectedDescriptorName===void 0||t.name===e.expectedDescriptorName))throw Error(`Installed package ${e.npmName} declares descriptor name "${t.name}", expected "${e.expectedDescriptorName}"`)}assertDescriptorVersionSatisfies(e,t){if(!this.descriptorRangeSatisfied(t,e.requiredRange))throw Error(`Installed package ${e.npmName} descriptor version ${t.version} does not satisfy ${t.name} ${e.requiredRange}`)}async assertDependentsCompatible(e,t,n,r){if(r)return;let i=[];for(let r of n.byNpmName.values())for(let n of r.descriptor.dependencies??[])await this.names.resolveNpmPackageName(n.name)===e&&!pt(t,n.version)&&i.push(`${r.npmName} requires ${n.name} ${n.version}`);if(i.length>0)throw Error(`Cannot install ${e}; existing dependencies would be violated:\n${i.join(`
4
4
  `)}`)}async enqueueDependencies(e,t,n){for(let r of n.dependencies??[]){let n=await this.names.resolveNpmPackageName(r.name);if(t.path.includes(n))throw Error(`Circular dependency detected: ${[...t.path,n].join(` -> `)}`);e.push({npmName:n,expectedDescriptorName:r.name,requiredRange:r.version,optional:r.optional===!0,path:[...t.path,n],root:!1})}}};function ri(e){return e.startsWith(`@`)?void 0:e}function ii(e){let t=Xr(e);if(t.length===e.length)return{npmName:t};let n=e.slice(t.length+1);return n===`latest`?{npmName:t}:{npmName:t,requiredRange:n}}function ai(e){return e instanceof Error?e.message:String(e)}var oi=class{registryClient;lookupMapPromise=null;constructor(e){this.registryClient=e}async resolveNpmPackageName(e){if(e.startsWith(`@`))return e;let t;try{t=await this.getLookupMap()}catch(t){throw Error(`Cannot resolve descriptor name "${e}": package registry is unavailable`,{cause:t})}return t.get(e)||`@makaio/${e}`}getLookupMap(){if(this.lookupMapPromise)return this.lookupMapPromise;let e=this.registryClient.getRegistry().then(e=>{let t=new Map;for(let n of[...e.adapters,...e.extensions])n.descriptorName&&t.set(n.descriptorName,n.name);return t}).catch(t=>{throw this.lookupMapPromise===e&&(this.lookupMapPromise=null),t});return this.lookupMapPromise=e,this.lookupMapPromise}},si=class{inner;portalMap;constructor(e,t){this.inner=e,this.portalMap=t}async installPackage(e){let t=Xr(e),n=this.portalMap.get(t);if(n!==void 0){let e=`${t}@portal:${Qr(n)}`;return this.inner.installPackage(e)}return this.inner.installPackage(e)}readInstalledExtensionDescriptor(e){return this.inner.readInstalledExtensionDescriptor(e)}listInstalledExtensionDescriptors(){return this.inner.listInstalledExtensionDescriptors()}readManifestSnapshot(){return this.inner.readManifestSnapshot()}writeManifestAndReinstall(e){return this.inner.writeManifestAndReinstall(e)}},ci=class{cache=null;inFlightFetch=null;registryUrl;cacheTtlMs;fetchTimeoutMs;fetchImpl;constructor(e={}){this.registryUrl=e.registryUrl??`https://raw.githubusercontent.com/makaio-ai/makaio/develop/registry/packages.json`,this.cacheTtlMs=e.cacheTtlMs??36e5,this.fetchTimeoutMs=e.fetchTimeoutMs??1e4,this.fetchImpl=e.fetchImpl??fetch}async getRegistry(){if(this.cache&&Date.now()-this.cache.timestamp<this.cacheTtlMs)return this.cache.data;this.inFlightFetch??=this.fetchAndCacheRegistry();try{return await this.inFlightFetch}finally{this.inFlightFetch=null}}async fetchAndCacheRegistry(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.fetchTimeoutMs);try{let t=await this.fetchImpl(this.registryUrl,{signal:e.signal});if(!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.json(),r=Lr.parse(n);return this.cache={data:r,timestamp:Date.now()},r}catch(e){let t=e instanceof Error?e:Error(String(e));throw Error(`Failed to fetch package registry`,{cause:t})}finally{clearTimeout(t)}}clearCache(){this.cache=null}},li=t(r(),1),ui=`1.0.0`;function di(){let e=ui;if(typeof e!=`string`||e.length===0)throw Error(`Package manager package metadata must include a string version.`);return`^${e}`}const fi=di();var pi=class extends Dt{yarnManager;registryService;localInstaller;dependencyResolver;frameworkPeerRange;frameworkPackagePath;constructor(e,t,n={}){super(e),this.yarnManager=n.yarnManager??new Jr(t),this.registryService=n.registryService??new ci,this.localInstaller=n.localInstaller??new Wr(L.join(t,`extensions`)),this.frameworkPeerRange=n.frameworkPeerRange??fi,this.frameworkPackagePath=n.frameworkPackagePath;let r=n.devPortalPackages?.size?new si(this.yarnManager,n.devPortalPackages):this.yarnManager;this.dependencyResolver=n.dependencyResolver??new ni(r,new oi(this.registryService))}async onInit(){await this.yarnManager.initialize(),console.info(`[PackageManagerService] Initialized`),this.registerPackageHandlers(),this.registerRegistryHandlers()}normalizePackageName(e){if(typeof e!=`string`)return null;let t=e.trim();return t.length>0?t:null}validatePackageNamePayload(e,t){return this.normalizePackageName(e)||(t(),null)}createInvalidPackageNameResult(e){return e?{success:!1,packageName:``,latestVersion:e.latestVersion,error:`Invalid packageName`}:{success:!1,packageName:``,error:`Invalid packageName`,restartRequired:!1}}async emitInstalled(e,t){try{await this.bus.emit(U.installed,{packageName:e,version:t})}catch(e){console.error(`[PackageManagerService] installed emit failed:`,e)}}async emitUninstalled(e){try{await this.bus.emit(U.uninstalled,{packageName:e})}catch(e){console.error(`[PackageManagerService] uninstalled emit failed:`,e)}}registerPackageHandlers(){this.registerListHandler(),this.registerInstallHandler(),this.registerUninstallHandler()}registerListHandler(){this.registerHandler(U.list,async e=>{try{let[t,n]=await Promise.all([this.yarnManager.listPackages(),this.localInstaller.list()]),r=[...t,...n.map(e=>({name:e.name,version:e.version,hasDescriptor:!0,...e.serverImportPath!==void 0&&{serverImportPath:e.serverImportPath}}))];e.setResult({packages:r})}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] List failed:`,n),e.setResult({packages:[]})}})}async ensureFrameworkPeer(){try{await this.yarnManager.ensureFrameworkDependency({versionRange:this.frameworkPeerRange,...this.frameworkPackagePath?{localPackagePath:this.frameworkPackagePath}:{}})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to ensure @makaio/framework dependency ${this.frameworkPeerRange}: ${t}`,{cause:e})}}async installNpmPackages(e,t){let n=await this.yarnManager.readManifestSnapshot(),r;try{await this.ensureFrameworkPeer(),r=await this.dependencyResolver.resolve(e,{force:t,snapshot:null})}catch(e){try{await this.yarnManager.writeManifestAndReinstall(n)}catch(t){let n=e instanceof Error?e.message:String(e);throw AggregateError([e,t],`Package install failed and rollback failed: ${n}`)}throw e}for(let e of r.installed)e.source!==`already-present`&&await this.emitInstalled(e.npmName,e.version);let i=r.installed[0];return{success:!0,packageName:i?.npmName??e[0]??``,version:i?.version,restartRequired:!0,installed:[...r.installed],skipped:[...r.skipped],warnings:[...r.warnings]}}registerInstallHandler(){this.registerHandler(U.install,async e=>{let t=e.payload.packageNames??(e.payload.packageName===void 0?[]:[e.payload.packageName]),n=t.map(e=>this.normalizePackageName(e)).filter(e=>e!==null);if(n.length!==t.length||n.length===0){e.setResult(this.createInvalidPackageNameResult());return}let r;if(e.payload.source!==void 0)r={kind:e.payload.source};else{let t=n.map(e=>ti(e));r=t[0];let i=t.find(e=>e.kind!==r.kind);if(i){e.setResult({success:!1,packageName:``,error:`Cannot mix install sources: ${r.kind} and ${i.kind}`,restartRequired:!1});return}}if(r.kind===`git`){e.setResult({success:!1,packageName:n[0],error:`Git URL installs are not yet supported`,restartRequired:!1});return}if(r.kind===`local`){if(n.length>1){e.setResult({success:!1,packageName:``,error:`Local installs only support a single path`,restartRequired:!1});return}let t=await this.localInstaller.install(n[0]);t.success&&await this.emitInstalled(t.packageName,t.version??`unknown`),e.setResult(t);return}try{e.setResult(await this.installNpmPackages(n,e.payload.force))}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Install failed:`,r),e.setResult({success:!1,packageName:n[0]??``,error:r,restartRequired:!1})}})}registerUninstallHandler(){this.registerHandler(U.uninstall,async e=>{let t=this.validatePackageNamePayload(e.payload.packageName,()=>{e.setResult(this.createInvalidPackageNameResult())});if(t){if((await this.localInstaller.list()).find(e=>e.name===t)){let n=await this.localInstaller.uninstall(t);n.success&&await this.emitUninstalled(t),e.setResult(n);return}try{await this.yarnManager.uninstallPackage(t),await this.emitUninstalled(t),e.setResult({success:!0,packageName:t,restartRequired:!0})}catch(n){let r=n instanceof Error?n.message:String(n);console.error(`[PackageManagerService] Uninstall failed:`,r),e.setResult({success:!1,packageName:t,error:r,restartRequired:!1})}}})}registerRegistryHandlers(){this.registerHandler(U.getLatestVersion,async e=>{let t=this.validatePackageNamePayload(e.payload.packageName,()=>{e.setResult(this.createInvalidPackageNameResult({latestVersion:`unknown`}))});if(t)try{let n=await this.yarnManager.getLatestVersion(t);e.setResult({success:!0,packageName:t,latestVersion:n})}catch(n){let r=n instanceof Error?n.message:String(n);console.error(`[PackageManagerService] Version check failed:`,r),e.setResult({success:!1,packageName:t,latestVersion:`unknown`,error:r})}}),this.registerHandler(U.getRegistry,async e=>{try{let t=await this.registryService.getRegistry();e.setResult(t)}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Registry fetch failed:`,n),e.setResult({$schema:`makaio/package-registry/v1`,updatedAt:new Date().toISOString(),adapters:[],extensions:[]})}}),this.registerHandler(U.checkUpdates,async e=>{try{let t=await this.checkForUpdates();e.setResult({updates:t})}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Update check failed:`,n),e.setResult({updates:[]})}})}async checkForUpdates(){try{let e=await this.yarnManager.listPackages(),t=[];return await Promise.all(e.map(async e=>{try{let n=await this.yarnManager.getLatestVersion(e.name);li.valid(e.version)&&li.valid(n)&&li.gt(n,e.version)&&t.push({name:e.name,currentVersion:e.version,latestVersion:n,description:e.description})}catch(t){console.warn(`[PackageManagerService] Failed to check updates for %s:`,e.name,t)}})),console.info(`[PackageManagerService] Found %d package updates`,t.length),t}catch(e){throw Error(`Failed to check for updates`,{cause:e})}}};function mi(e={}){return{name:`makaio.package-manager`,displayName:`Package Manager`,version:`0.1.0`,critical:!0,namespaces:[zr],create:t=>new pi(t.bus,t.makaioHome,{registryService:e.registryService,dependencyResolver:e.dependencyResolver,frameworkPeerRange:e.frameworkPeerRange,frameworkPackagePath:e.frameworkPackagePath,devPortalPackages:e.devPortalPackages})}}function hi(e){return{filter:e=>!!e.http,async processActivated(t,n){e.add({owner:t,phase:`extension`,mount:e=>n.http.mount(e)})},async processStopped(t){e.remove(t)}}}const gi={resolve(e,t){return!e&&!t?null:e?t?e.updatedAt>t.updatedAt?e:t:e:t}};function _i(e){return{scope:e.scope,surface:e.surface??`any`,context:e.context??`any`,viewport:e.viewport??`any`}}function vi(e){return{scope:e.scope,surface:e.surface===`any`?void 0:e.surface,context:e.context===`any`?void 0:e.context,viewport:e.viewport===`any`?void 0:e.viewport}}function yi(e,t){return[`makaio:prefs`,e.scope,e.surface||`any`,e.context||`any`,e.viewport||`any`,t].join(`:`)}function bi(e){return typeof e==`object`&&!!e&&`value`in e&&`updatedAt`in e&&typeof e.value==`string`&&typeof e.updatedAt==`number`}function xi(e){try{let t=JSON.parse(e);return bi(t)?t:{value:JSON.stringify(t),updatedAt:0}}catch{return null}}const Si=Mt(`preferences`,e=>({scope:e.text(`scope`).notNull(),surface:e.text(`surface`).notNull().default(`any`),context:e.text(`context`).notNull().default(`any`),viewport:e.text(`viewport`).notNull().default(`any`),category:e.text(`category`).notNull(),value:e.text(`value`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[Ot(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)],postgres:e=>[kt(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)]}),Ci=Si.sqlite,wi=Si.postgres,Ti=jt({preferences:Ci},{preferences:wi});function Ei(e,t,n){let r=[];return n!==void 0&&r.push(B(e.category,n)),t&&(t.scope!==void 0&&r.push(B(e.scope,t.scope)),t.surface!==void 0&&r.push(B(e.surface,t.surface)),t.context!==void 0&&r.push(B(e.context,t.context)),t.viewport!==void 0&&r.push(B(e.viewport,t.viewport))),r}async function Di(e,t,n){let{preferences:r}=zt(e,Ti),i=Ei(r,t,n);return(i.length>0?await e.select().from(r).where(Ht(...i)):await e.select().from(r)).map(e=>{let t;try{t=JSON.parse(e.value)}catch{t=null}let n=Rn.safeParse(t);return{key:vi(e),category:e.category,value:n.success?n.data:null,updatedAt:e.updatedAt}})}async function Oi(e,t,n){let{preferences:r}=zt(e,Ti),i=_i(t),[a]=await e.select().from(r).where(Ht(B(r.scope,i.scope),B(r.surface,i.surface),B(r.context,i.context),B(r.viewport,i.viewport),B(r.category,n))).limit(1);return a}var ki=class{db;conflictResolver;constructor(e){this.db=e.db,this.conflictResolver=e.conflictResolver??gi}async get(e,t){let n=await this.readFromDb(e,t),r=this.readFromLocalStorage(e,t),i=r?.updatedAt===0?r:null;!n&&r&&!i&&this.removeFromLocalStorage(e,t);let a=this.conflictResolver.resolve(i,n);if(!a)return null;let o;try{o=JSON.parse(a.value)}catch{return null}let s=Rn.safeParse(o);return s.success?(await this.syncResolvedPreference(e,t,a,r,n),s.data):null}async set(e,t,n){let r=Date.now(),i=JSON.stringify(n??null);this.writeToLocalStorage(e,t,{value:i,updatedAt:r}),await this.writeToDb(e,t,i,r)}async delete(e,t){this.removeFromLocalStorage(e,t),await this.deleteFromDb(e,t)}async list(e,t){return Di(this.db,e,t)}async writeToDb(e,t,n,r){let{preferences:i}=zt(this.db,Ti),a=_i(e);await this.db.insert(i).values({...a,category:t,value:n,updatedAt:r}).onConflictDoUpdate({target:[i.scope,i.surface,i.context,i.viewport,i.category],set:{value:n,updatedAt:r}})}readFromLocalStorage(e,t){let n=yi(e,t),r=globalThis.localStorage?.getItem(n);return r?xi(r):null}writeToLocalStorage(e,t,n){let r=yi(e,t);try{globalThis.localStorage?.setItem(r,JSON.stringify(n))}catch(e){console.warn(`[StorageCoordinator] localStorage write failed:`,e)}}removeFromLocalStorage(e,t){let n=yi(e,t);try{globalThis.localStorage?.removeItem(n)}catch(e){console.warn(`[StorageCoordinator] localStorage delete failed:`,e)}}async syncResolvedPreference(e,t,n,r,i){this.isSameStoredPreference(n,i)||await this.writeToDb(e,t,n.value,n.updatedAt),r&&!this.isSameStoredPreference(n,r)&&this.writeToLocalStorage(e,t,n)}isSameStoredPreference(e,t){return!e||!t?!1:e.value===t.value&&e.updatedAt===t.updatedAt}async readFromDb(e,t){let n=await Oi(this.db,e,t);return n?{value:n.value,updatedAt:n.updatedAt}:null}async deleteFromDb(e,t){let{preferences:n}=zt(this.db,Ti),r=_i(e);await this.db.delete(n).where(Ht(B(n.scope,r.scope),B(n.surface,r.surface),B(n.context,r.context),B(n.viewport,r.viewport),B(n.category,t)))}};function Ai(e,t,n){let r=new ki({db:t}),i=e.on(zn.get,async e=>{let{key:t,category:n}=e.payload,i=await r.get(t,n);e.setResult({value:i})}),a=e.on(zn.set,async e=>{let{key:t,category:n,value:i}=e.payload;await r.set(t,n,i),e.setResult({success:!0})}),o=e.on(zn.delete,async e=>{let{key:t,category:n}=e.payload;await r.delete(t,n),e.setResult({success:!0})}),s=e.on(zn.list,async e=>{let{key:t,category:n}=e.payload,i=await r.list(t,n);e.setResult({items:i})});return()=>{i(),a(),o(),s()}}const ji={name:`preferences-storage`,displayName:`Preferences Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:Lt(Ai)}};function Mi(e,t){let n=new Map;for(let[r,i]of e)t.has(r)&&n.set(r,i);return n}function Ni(...e){let t=new Map;for(let n of e)for(let[e,r]of n)t.set(e,{...t.get(e)??{},...r});return t}function Pi(e,t){let n=[e.on(it.get,async e=>{let n=await t.getConfig();e.setResult({config:n})}),e.on(it.update,async e=>{let n=rt.parse(e.payload.config),r=await t.prepareConfigForPersistence(n);await t.saveConfig(r),e.setResult({success:!0})})];return()=>{for(let e of n)e()}}var G=n((e=>{let t=Symbol.for(`yaml.alias`),n=Symbol.for(`yaml.document`),r=Symbol.for(`yaml.map`),i=Symbol.for(`yaml.pair`),a=Symbol.for(`yaml.scalar`),o=Symbol.for(`yaml.seq`),s=Symbol.for(`yaml.node.type`),c=e=>!!e&&typeof e==`object`&&e[s]===t,l=e=>!!e&&typeof e==`object`&&e[s]===n,u=e=>!!e&&typeof e==`object`&&e[s]===r,d=e=>!!e&&typeof e==`object`&&e[s]===i,f=e=>!!e&&typeof e==`object`&&e[s]===a,p=e=>!!e&&typeof e==`object`&&e[s]===o;function m(e){if(e&&typeof e==`object`)switch(e[s]){case r:case o:return!0}return!1}function h(e){if(e&&typeof e==`object`)switch(e[s]){case t:case r:case a:case o:return!0}return!1}e.ALIAS=t,e.DOC=n,e.MAP=r,e.NODE_TYPE=s,e.PAIR=i,e.SCALAR=a,e.SEQ=o,e.hasAnchor=e=>(f(e)||m(e))&&!!e.anchor,e.isAlias=c,e.isCollection=m,e.isDocument=l,e.isMap=u,e.isNode=h,e.isPair=d,e.isScalar=f,e.isSeq=p})),Fi=n((e=>{var t=G();let n=Symbol(`break visit`),r=Symbol(`skip children`),i=Symbol(`remove node`);function a(e,n){let r=l(n);t.isDocument(e)?o(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):o(null,e,r,Object.freeze([]))}a.BREAK=n,a.SKIP=r,a.REMOVE=i;function o(e,r,a,s){let c=u(e,r,a,s);if(t.isNode(c)||t.isPair(c))return d(e,s,c),o(e,c,a,s);if(typeof c!=`symbol`){if(t.isCollection(r)){s=Object.freeze(s.concat(r));for(let e=0;e<r.items.length;++e){let t=o(e,r.items[e],a,s);if(typeof t==`number`)e=t-1;else if(t===n)return n;else t===i&&(r.items.splice(e,1),--e)}}else if(t.isPair(r)){s=Object.freeze(s.concat(r));let e=o(`key`,r.key,a,s);if(e===n)return n;e===i&&(r.key=null);let t=o(`value`,r.value,a,s);if(t===n)return n;t===i&&(r.value=null)}}return c}async function s(e,n){let r=l(n);t.isDocument(e)?await c(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):await c(null,e,r,Object.freeze([]))}s.BREAK=n,s.SKIP=r,s.REMOVE=i;async function c(e,r,a,o){let s=await u(e,r,a,o);if(t.isNode(s)||t.isPair(s))return d(e,o,s),c(e,s,a,o);if(typeof s!=`symbol`){if(t.isCollection(r)){o=Object.freeze(o.concat(r));for(let e=0;e<r.items.length;++e){let t=await c(e,r.items[e],a,o);if(typeof t==`number`)e=t-1;else if(t===n)return n;else t===i&&(r.items.splice(e,1),--e)}}else if(t.isPair(r)){o=Object.freeze(o.concat(r));let e=await c(`key`,r.key,a,o);if(e===n)return n;e===i&&(r.key=null);let t=await c(`value`,r.value,a,o);if(t===n)return n;t===i&&(r.value=null)}}return s}function l(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function u(e,n,r,i){if(typeof r==`function`)return r(e,n,i);if(t.isMap(n))return r.Map?.(e,n,i);if(t.isSeq(n))return r.Seq?.(e,n,i);if(t.isPair(n))return r.Pair?.(e,n,i);if(t.isScalar(n))return r.Scalar?.(e,n,i);if(t.isAlias(n))return r.Alias?.(e,n,i)}function d(e,n,r){let i=n[n.length-1];if(t.isCollection(i))i.items[e]=r;else if(t.isPair(i))e===`key`?i.key=r:i.value=r;else if(t.isDocument(i))i.contents=r;else{let e=t.isAlias(i)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}e.visit=a,e.visitAsync=s})),Ii=n((e=>{var t=G(),n=Fi();let r={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},i=e=>e.replace(/[!,[\]{}]/g,e=>r[e]);var a=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+i(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],i=Object.entries(this.tags),a;if(e&&i.length>0&&t.isNode(e.contents)){let r={};n.visit(e.contents,(e,n)=>{t.isNode(n)&&n.tag&&(r[n.tag]=!0)}),a=Object.keys(r)}else a=[];for(let[t,n]of i)t===`!!`&&n===`tag:yaml.org,2002:`||(!e||a.some(e=>e.startsWith(n)))&&r.push(`%TAG ${t} ${n}`);return r.join(`