@makaio/framework 1.0.0-dev-1781517341920 → 1.0.0-dev-1781729807808
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/adapter-Cxcqmp04.mjs +1 -0
- package/dist/adapters/stream-session/index.d.mts +2 -0
- package/dist/await-trigger-Cjfj0yp_.mjs +1 -0
- package/dist/bus/index.mjs +1 -1
- package/dist/{canonical-model-BE7t86yt.mjs → canonical-model-C-jhofjd.mjs} +1 -1
- package/dist/compression-BPOKUc6y.mjs +1 -0
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/canonical-model/index.mjs +1 -1
- package/dist/contracts/client/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +12 -12
- package/dist/contracts/extension/index.d.mts +2 -2
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +261 -65
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/provider/index.d.mts +3 -3
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/definition-BJ_975aA.mjs +1 -0
- package/dist/{definition-CPc6oKaF.d.mts → definition-CZcVOhXZ.d.mts} +1 -1
- package/dist/{definition-B2FH_eOh.d.mts → definition-GOb_oOmb.d.mts} +13 -2
- package/dist/drizzle/0020_m_mqf47r9j.sql +1 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/{extension-DNrcv3V7.mjs → extension-CkU_hqra.mjs} +1 -1
- package/dist/{handlers-Cpy9Q8ho.mjs → handlers-dnpT_hsm.mjs} +1 -1
- package/dist/{index-C7vAbtvS.d.mts → index-BFW1X6SW.d.mts} +85 -46
- package/dist/{index-fTBtQ5fK.d.mts → index-BuaP2Q0b.d.mts} +16 -16
- package/dist/{index-BBteExwv.d.mts → index-ByRAbcZd.d.mts} +4 -2
- package/dist/{index-GuspCNLR.d.mts → index-C2XLjebs.d.mts} +8 -8
- package/dist/{index-Dun5uQwE.d.mts → index-CUYDEQvN.d.mts} +24 -3
- package/dist/{index-I6pLxh17.d.mts → index-CkpGuNLe.d.mts} +15 -15
- package/dist/{index-DWqgo739.d.mts → index-Cy75lJ1O.d.mts} +34 -34
- package/dist/{index-WKF5BHsw.d.mts → index-DUI1W-zN.d.mts} +8 -8
- package/dist/{index-BDnI2oqX.d.mts → index-Dbd0Tgba.d.mts} +2 -2
- package/dist/{index-CsP4Ckem.d.mts → index-Dn73XrXA.d.mts} +8 -8
- package/dist/{index-dFTsZFlh.d.mts → index-Dpu4e9NK.d.mts} +1 -1
- package/dist/{index-B8v52gGb.d.mts → index-HiAth5G0.d.mts} +60 -60
- package/dist/{index-BoI86whU.d.mts → index-WWYQEH0q.d.mts} +18 -18
- package/dist/{index-DVz3a2jZ.d.mts → index-XcnFGiKL.d.mts} +4 -4
- package/dist/{index-BM_y78ZA2.d.mts → index-cN4DkU5Y2.d.mts} +9 -9
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/{lib-DkLlhp9Z.mjs → lib-B-R6VZW0.mjs} +2 -2
- package/dist/{lib-jOuIcSs9.mjs → lib-BwYODPdd.mjs} +1 -1
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/{namespace-CEqkI6Zu.d.mts → namespace-B091meTj.d.mts} +6 -6
- package/dist/{namespace-CN2TfSCY.d.mts → namespace-Ba1gUpUu.d.mts} +4 -4
- package/dist/{namespace-BAJTZXWc.d.mts → namespace-CO3DK1v_.d.mts} +60 -23
- package/dist/{namespace-H9A39Mx8.d.mts → namespace-CZgcOQTh.d.mts} +56 -56
- package/dist/{namespace-Cj7k5UH7.d.mts → namespace-Daq_-170.d.mts} +7 -7
- package/dist/package-DP8lk0-a.mjs +1 -0
- package/dist/package.json +1 -1
- package/dist/primitive-runtime-Dw6OC8w5.mjs +1 -0
- package/dist/{providers-namespace-C0C-Sb4N.d.mts → providers-namespace-B4INLPUc.d.mts} +7 -7
- package/dist/{registry-udUhXSIC.mjs → registry-CwjZvH2s.mjs} +2 -1
- package/dist/runtime-node/index.d.mts +1 -1
- package/dist/runtime-node/index.mjs +1 -1
- package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
- package/dist/runtime-node/workflow-worker/index.mjs +1 -1
- package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
- package/dist/{schema-msWs4YhT.d.mts → schema-DcZifH6p.d.mts} +27 -1
- package/dist/{schemas-DMl7IKG-.d.mts → schemas-BbFAwUpf.d.mts} +5 -5
- package/dist/{schemas-Cae5dubB.d.mts → schemas-BqscWIoC.d.mts} +6 -6
- package/dist/{schemas-DuQ9EcLu2.d.mts → schemas-CTIaU6Rt2.d.mts} +12 -12
- package/dist/{schemas-CN9hprME.d.mts → schemas-IDGAJ_zv.d.mts} +6 -6
- package/dist/schemas-dNCdjOLB.mjs +1 -0
- package/dist/services/adapter-subsystem/index.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +3 -3
- package/dist/services/execution-target/index.d.mts +2 -2
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +57 -57
- package/dist/services/index.mjs +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +4 -4
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/storage/schema.mjs +1 -1
- package/dist/services/session/testing/index.mjs +2 -1
- package/dist/services/settings/index.d.mts +1 -1
- package/dist/services/settings/namespace.d.mts +12 -12
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/settings/storage/index.d.mts +1 -1
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent-template/index.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +2 -2
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/session-DApMcL_0.mjs +1 -0
- package/dist/session-R-wciAdJ.mjs +39 -0
- package/dist/{session-lineage-DFkJgYt5.d.mts → session-lineage-D_8W1MI0.d.mts} +1 -1
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/index.mjs +1 -1
- package/dist/{tool-approval-service-B_28RhuK.mjs → tool-approval-service-DhAqQqev.mjs} +1 -1
- package/dist/tools/index.d.mts +8 -0
- package/dist/tools-DeZIVtxe.mjs +1 -0
- package/dist/{types-DUNA749O.d.mts → types-CCsvoUTA.d.mts} +33 -15
- package/dist/workflow-engine/index.d.mts +49 -25
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-worker-CjuRYLmJ.mjs → workflow-worker-DMFhz1q_.mjs} +1 -1
- package/package.json +1 -1
- package/dist/adapter-ux2xaQ6H.mjs +0 -1
- package/dist/await-trigger-uKEHY8E4.mjs +0 -1
- package/dist/compression-Cy9DIqyr.mjs +0 -1
- package/dist/definition-Bija4lGr.mjs +0 -1
- package/dist/package-lxB0vpby.mjs +0 -1
- package/dist/primitive-runtime-BSg8J7VX.mjs +0 -1
- package/dist/schemas-Dvm_0GDr.mjs +0 -1
- package/dist/session-Is5VSP2V.mjs +0 -1
- package/dist/session-ZAJrcudH.mjs +0 -39
- package/dist/tools-BpzJterj.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./chunk-DTipWd-i.mjs";import{t}from"./ajv-Cx19PP7Q.mjs";import{z as n}from"zod";import{execFile as r}from"node:child_process";import{isAbsolute as i,relative as a,resolve as o}from"node:path";import{realpathSync as s}from"node:fs";import{localSubject as c}from"@makaio/framework/core";import{NoHandlerError as l}from"@makaio/framework/bus";import{AgentSubjects as u,ArtifactSubjects as d,ExecutionLinkListQuerySchema as f,ExecutionLinkSchema as p,ExecutionListQuerySchema as m,ExecutionStatusSchema as h,ExecutionsByArtifactRefsQuerySchema as g,GateInstanceListQuerySchema as _,JsonPatchOperationSchema as v,JsonValueSchema as y,SessionSubjects as b,SpanRecordSchema as x,SubagentSubjects as S,WORKFLOW_CANCELLED_REASON as ee,WorkerNodeSubjects as te,WorkflowDefinitionSchema as ne,WorkflowError as re,WorkflowErrorCode as ie,WorkflowExecutionSchema as C,WorkflowFrameStateSchema as w,WorkflowGateInstanceSchema as T,WorkflowListQuerySchema as ae,WorkflowRunContextSchema as oe,WorkflowSchemas as se,WorkflowSubjects as ce,WorkflowSubjects as E,WorkflowWorkerSourceSchema as le,createStepCancelSubject as ue}from"@makaio/framework/contracts";import{createStorageNamespaceDefinition as de}from"@makaio/framework/storage";import{index as D,primaryKey as fe,uniqueIndex as pe}from"drizzle-orm/sqlite-core";import{index as O,primaryKey as me,uniqueIndex as he}from"drizzle-orm/pg-core";import{defineDualTable as k}from"@makaio/framework/storage/drizzle";import{sql as ge}from"drizzle-orm";import{evaluateSync as A,resolveTemplate as j}from"@makaio/framework/expression";import*as _e from"node:os";function ve(e){return{scopeType:e.textEnum(`scope_type`,{enum:[`global`,`workspace`,`session`,`external`]}).notNull().$type(),scopeKind:e.text(`scope_kind`).notNull().default(``),scopeId:e.text(`scope_id`).notNull().default(``)}}const ye=k(`workflow_definitions`,e=>({id:e.text(`id`).primaryKey(),name:e.text(`name`).notNull(),description:e.text(`description`),root:e.jsonCol(`root`).notNull(),inputSchema:e.jsonCol(`input_schema`),configSchema:e.jsonCol(`config_schema`),outputSchema:e.jsonCol(`output_schema`),state:e.jsonCol(`state`),artifact:e.jsonCol(`artifact`),triggers:e.jsonCol(`triggers`),...ve(e),createdAt:e.epochMs(`created_at`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull(),canvasLayout:e.jsonCol(`canvas_layout`),source:e.jsonCol(`source`),executionHints:e.jsonCol(`execution_hints`)}),{sqlite:e=>[pe(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),D(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)],postgres:e=>[he(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),O(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)]}),be=ye.sqlite,M=k(`workflow_executions`,e=>({id:e.text(`id`).primaryKey(),workflowId:e.text(`workflow_id`).notNull(),coordinatorSessionId:e.text(`coordinator_session_id`),status:e.textEnum(`status`,{enum:[`pending`,`running`,`paused`,`completed`,`failed`,`cancelled`]}).notNull(),inputs:e.jsonCol(`inputs`),error:e.text(`error`),reason:e.text(`reason`),startedAt:e.epochMs(`started_at`).notNull(),completedAt:e.epochMs(`completed_at`),triggerPayload:e.jsonCol(`trigger_payload`),artifactKind:e.text(`artifact_kind`),artifactId:e.text(`artifact_id`),...ve(e)}),{sqlite:e=>[D(`idx_workflow_executions_status`).on(e.status),D(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),D(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt),D(`idx_workflow_executions_artifact`).on(e.artifactKind,e.artifactId,e.startedAt)],postgres:e=>[O(`idx_workflow_executions_status`).on(e.status),O(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),O(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt),O(`idx_workflow_executions_artifact`).on(e.artifactKind,e.artifactId,e.startedAt)]}),xe=M.sqlite,Se=k(`workflow_execution_frames`,e=>({frameId:e.text(`frame_id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),nodeType:e.text(`node_type`).notNull().$type(),path:e.jsonCol(`path`).notNull(),parentFrameId:e.text(`parent_frame_id`),status:e.text(`status`).notNull().default(`pending`).$type(),attempt:e.int4(`attempt`).notNull().default(0),iteration:e.int4(`iteration`),branchKey:e.text(`branch_key`),output:e.jsonCol(`output`),outputPresent:e.bool(`output_present`).notNull().default(!1),error:e.text(`error`),startedAt:e.epochMs(`started_at`),completedAt:e.epochMs(`completed_at`)}),{sqlite:e=>[D(`idx_workflow_execution_frames_execution`).on(e.executionId),D(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)],postgres:e=>[O(`idx_workflow_execution_frames_execution`).on(e.executionId),O(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)]}),Ce=Se.sqlite,we=k(`workflow_gate_instances`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),frameId:e.text(`frame_id`).notNull(),schema:e.jsonCol(`schema`).notNull(),prompt:e.text(`prompt`),status:e.text(`status`).notNull().default(`waiting`).$type(),autoAction:e.textEnum(`auto_action`,{enum:[`approve`,`reject`]}).notNull().default(`reject`),timeoutMs:e.int4(`timeout_ms`),resumeData:e.jsonCol(`resume_data`),reason:e.text(`reason`),resumeDataPresent:e.bool(`resume_data_present`).notNull().default(!1),createdAt:e.epochMs(`created_at`).notNull(),resolvedAt:e.epochMs(`resolved_at`)}),{sqlite:e=>[D(`idx_workflow_gate_instances_execution`).on(e.executionId),D(`idx_workflow_gate_instances_frame`).on(e.frameId)],postgres:e=>[O(`idx_workflow_gate_instances_execution`).on(e.executionId),O(`idx_workflow_gate_instances_frame`).on(e.frameId)]}),Te=we.sqlite,Ee=k(`workflow_step_spans`,e=>({executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),frameId:e.text(`frame_id`).notNull(),stepId:e.text(`step_id`).notNull(),stepType:e.text(`step_type`).notNull(),status:e.text(`status`).$type().notNull(),startedAt:e.epochMs(`started_at`),completedAt:e.epochMs(`completed_at`),durationMs:e.int4(`duration_ms`),inputTokens:e.int4(`input_tokens`),outputTokens:e.int4(`output_tokens`),estimatedCost:e.float8(`estimated_cost`),toolCallCount:e.int4(`tool_call_count`),input:e.text(`input`),output:e.text(`output`)}),{sqlite:e=>[fe({columns:[e.executionId,e.frameId]}),D(`idx_workflow_step_spans_status`).on(e.status)],postgres:e=>[me({columns:[e.executionId,e.frameId]}),O(`idx_workflow_step_spans_status`).on(e.status)]}),De=Ee.sqlite,Oe=k(`workflow_execution_links`,e=>({sourceExecutionId:e.text(`source_execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),targetExecutionId:e.text(`target_execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),linkType:e.text(`link_type`).$type().notNull(),metadata:e.jsonCol(`metadata`)}),{sqlite:e=>[fe({columns:[e.sourceExecutionId,e.targetExecutionId]}),D(`idx_workflow_execution_links_target`).on(e.targetExecutionId)],postgres:e=>[me({columns:[e.sourceExecutionId,e.targetExecutionId]}),O(`idx_workflow_execution_links_target`).on(e.targetExecutionId)]}),ke=Oe.sqlite,Ae=k(`workflow_run_contexts`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),workflowId:e.text(`workflow_id`).notNull(),coordinatorSessionId:e.text(`coordinator_session_id`).notNull(),sourceKind:e.text(`source_kind`).notNull(),sourcePath:e.text(`source_path`),sourceFilename:e.text(`source_filename`),sourceCode:e.text(`source_code`),definitionSnapshot:e.jsonCol(`definition_snapshot`),workerManifest:e.jsonCol(`worker_manifest`).notNull(),inputs:e.jsonCol(`inputs`),config:e.jsonCol(`config`).notNull().default(ge`'{}'`),triggerPayload:e.jsonCol(`trigger_payload`).notNull(),artifactRef:e.jsonCol(`artifact_ref`),executionHints:e.jsonCol(`execution_hints`),dispatchMetadata:e.jsonCol(`dispatch_metadata`),scopeType:e.textEnum(`scope_type`,{enum:[`global`,`workspace`,`session`,`external`]}).notNull().default(`global`).$type(),scopeKind:e.text(`scope_kind`).notNull().default(``),scopeId:e.text(`scope_id`).notNull().default(``),cancelSubject:e.text(`cancel_subject`).notNull(),context:e.jsonCol(`context`).notNull(),env:e.jsonCol(`env`).notNull(),createdAt:e.epochMs(`created_at`).notNull(),suspensionStrategy:e.text(`suspension_strategy`).$type()}),{sqlite:e=>[D(`idx_run_contexts_workflow`).on(e.workflowId)],postgres:e=>[O(`idx_run_contexts_workflow`).on(e.workflowId)]}),je=Ae.sqlite,Me=k(`worklog_summaries`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),workflowId:e.text(`workflow_id`).notNull(),workflowName:e.text(`workflow_name`),status:e.textEnum(`status`,{enum:[`pending`,`running`,`paused`,`completed`,`failed`,`cancelled`]}).notNull(),startedAt:e.epochMs(`started_at`).notNull(),completedAt:e.epochMs(`completed_at`),durationMs:e.int4(`duration_ms`),totalInputTokens:e.int4(`total_input_tokens`),totalOutputTokens:e.int4(`total_output_tokens`),totalEstimatedCost:e.float8(`total_estimated_cost`),error:e.text(`error`),failedNodeId:e.text(`failed_node_id`)}),{sqlite:e=>[D(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),D(`idx_worklog_summaries_status`).on(e.status)],postgres:e=>[O(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),O(`idx_worklog_summaries_status`).on(e.status)]}),Ne=Me.sqlite,Pe=k(`worklog_frame_entries`,e=>({frameId:e.text(`frame_id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),nodeType:e.text(`node_type`).notNull().$type(),path:e.jsonCol(`path`).notNull(),status:e.textEnum(`status`,{enum:[`pending`,`running`,`waiting`,`completed`,`failed`,`skipped`,`cancelled`]}).notNull(),attempt:e.int4(`attempt`).notNull().default(0),iteration:e.int4(`iteration`),branchKey:e.text(`branch_key`),startedAt:e.epochMs(`started_at`),completedAt:e.epochMs(`completed_at`),durationMs:e.int4(`duration_ms`),inputTokens:e.int4(`input_tokens`),outputTokens:e.int4(`output_tokens`),estimatedCost:e.float8(`estimated_cost`),error:e.text(`error`)}),{sqlite:e=>[D(`idx_worklog_frame_entries_execution`).on(e.executionId)],postgres:e=>[O(`idx_worklog_frame_entries_execution`).on(e.executionId)]}),Fe=Pe.sqlite,Ie=k(`worklog_artifact_writes`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),frameId:e.text(`frame_id`).notNull(),nodeId:e.text(`node_id`).notNull(),artifact:e.jsonCol(`artifact`).notNull(),revision:e.text(`revision`),writtenAt:e.epochMs(`written_at`).notNull()}),{sqlite:e=>[D(`idx_worklog_artifact_writes_execution`).on(e.executionId)],postgres:e=>[O(`idx_worklog_artifact_writes_execution`).on(e.executionId)]}),Le=Ie.sqlite,Re=k(`worklog_gate_events`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),nodeId:e.text(`node_id`).notNull(),frameId:e.text(`frame_id`).notNull(),status:e.textEnum(`status`,{enum:[`waiting`,`resumed`,`rejected`,`timed-out`,`cancelled`]}).notNull().$type(),prompt:e.text(`prompt`),openedAt:e.epochMs(`opened_at`).notNull(),resolvedAt:e.epochMs(`resolved_at`),resumeData:e.jsonCol(`resume_data`)}),{sqlite:e=>[D(`idx_worklog_gate_events_execution`).on(e.executionId),D(`idx_worklog_gate_events_status`).on(e.status)],postgres:e=>[O(`idx_worklog_gate_events_execution`).on(e.executionId),O(`idx_worklog_gate_events_status`).on(e.status)]}),ze=Re.sqlite,Be=k(`workflow_execution_state`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),sequence:e.int4(`sequence`).notNull().default(0),value:e.jsonCol(`value`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Ve=Be.sqlite,He=k(`workflow_execution_state_events`,e=>({executionId:e.text(`execution_id`).notNull().references(()=>M.columnPair(`id`),{onDelete:`cascade`}),sequence:e.int4(`sequence`).notNull(),patch:e.jsonCol(`patch`).notNull(),value:e.jsonCol(`value`).notNull(),createdAt:e.epochMs(`created_at`).notNull()}),{sqlite:e=>[fe({columns:[e.executionId,e.sequence]})],postgres:e=>[me({columns:[e.executionId,e.sequence]})]}),Ue=He.sqlite,We=n.object({executionId:n.string().min(1),status:h.optional(),error:n.string().nullable().optional(),reason:n.string().nullable().optional(),completedAt:n.number().nullable().optional()}),Ge=de(`workflow`,{schemas:{get:{request:n.object({id:n.string()}),response:n.object({workflow:ne.nullable()})},set:{request:n.object({workflow:ne}),response:n.object({id:n.string()})},delete:{request:n.object({id:n.string()}),response:n.object({deleted:n.boolean()})},list:{request:ae,response:n.object({workflows:n.array(ne)})},getExecution:{request:n.object({executionId:n.string()}),response:n.object({execution:C.nullable()})},setExecution:{request:n.object({execution:C}),response:n.object({id:n.string()})},setExecutionStart:{request:n.object({execution:C,runContext:oe,initialState:y.optional(),executionLinks:n.array(p).optional()}),response:n.object({id:n.string(),executionId:n.string()})},updateExecution:{request:We,response:n.object({success:n.boolean()})},cancelPausedExecution:{request:n.object({executionId:n.string().min(1),completedAt:n.number(),reason:n.string().optional()}),response:n.object({cancelled:n.boolean(),gates:n.array(T.extend({status:n.literal(`cancelled`)}))})},listExecutions:{request:m,response:n.object({executions:n.array(C)})},listExecutionsByArtifactRefs:{request:g,response:n.object({executionsByRef:n.record(n.string(),n.array(C))})},setFrame:{request:n.object({executionId:n.string().min(1),frame:w}),response:n.object({frameId:n.string()})},getFrame:{request:n.object({frameId:n.string().min(1)}),response:n.object({frame:w.nullable()})},listFrames:{request:n.object({executionId:n.string().min(1)}),response:n.object({frames:n.array(w)})},setGateInstance:{request:n.object({gate:T}),response:n.object({id:n.string()})},resolveWaitingGateInstance:{request:n.object({gate:T.extend({status:n.enum([`resumed`,`rejected`])})}),response:n.object({accepted:n.boolean()})},restorePausedGateResumeState:{request:n.object({execution:C.extend({status:n.literal(`paused`)}),gate:T.extend({status:n.literal(`waiting`)})}),response:n.object({executionId:n.string(),gateId:n.string()})},getGateInstance:{request:n.object({executionId:n.string().min(1),nodeId:n.string().min(1),frameId:n.string().min(1).optional()}),response:n.object({gate:T.nullable()})},listGateInstances:{request:_,response:n.object({gates:n.array(T)})},listPausedGateTimeouts:c({request:n.object({}),response:n.object({gates:n.array(T)})}),setSpan:{request:n.object({span:x}),response:n.object({id:n.string()})},listSpans:{request:n.object({executionId:n.string()}),response:n.object({spans:n.array(x)})},setExecutionLink:{request:n.object({link:p}),response:n.object({id:n.string()})},listExecutionLinks:{request:f,response:n.object({links:n.array(p)})},setRunContext:c({request:n.object({runContext:oe}),response:n.object({executionId:n.string()})}),getRunContext:c({request:n.object({executionId:n.string().min(1)}),response:n.object({runContext:oe.nullable()})}),initializeState:c({request:n.object({executionId:n.string().min(1),initialValue:y}),response:n.object({})}),getState:c({request:n.object({executionId:n.string().min(1)}),response:n.object({state:n.object({executionId:n.string().min(1),sequence:n.number().int().nonnegative(),value:y}).nullable()})}),patchState:c({request:n.object({executionId:n.string().min(1),expectedSequence:n.number().int().nonnegative(),nextValue:y}),response:n.object({executionId:n.string().min(1),sequence:n.number().int().positive(),patch:n.array(v),value:y})})},extensions:{drizzle:{workflowDefinitions:be,workflowExecutions:xe,workflowExecutionFrames:Ce,workflowGateInstances:Te,workflowStepSpans:De,workflowExecutionLinks:ke,workflowRunContexts:je,worklogSummaries:Ne,worklogFrameEntries:Fe,worklogArtifactWrites:Le,worklogGateEvents:ze,workflowExecutionState:Ve,workflowExecutionStateEvents:Ue}}}),N=Ge.subjects;var Ke=e(t(),1);function qe(e,t){let n=[];return P(n,``,e,t),n}function P(e,t,n,r){if(Array.isArray(n)&&Array.isArray(r)){Ye(e,t,n,r);return}if(Xe(n)&&Xe(r)){Je(e,t,n,r);return}$e(n,r)||e.push({op:`replace`,path:t,value:r})}function Je(e,t,n,r){let i=Array.from(new Set([...Object.keys(n),...Object.keys(r)])).sort();for(let a of i){let i=Ze(n,a),o=Ze(r,a),s=`${t}/${Qe(a)}`;if(!i&&o){e.push({op:`add`,path:s,value:r[a]});continue}if(i&&!o){e.push({op:`remove`,path:s});continue}P(e,s,n[a],r[a])}}function Ye(e,t,n,r){let i=Math.min(n.length,r.length);for(let a=0;a<i;a++)P(e,`${t}/${String(a)}`,n[a],r[a]);for(let i=n.length-1;i>=r.length;i--)e.push({op:`remove`,path:`${t}/${String(i)}`});for(let i=n.length;i<r.length;i++)e.push({op:`add`,path:`${t}/${String(i)}`,value:r[i]})}function Xe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ze(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Qe(e){return e.replaceAll(`~`,`~0`).replaceAll(`/`,`~1`)}function $e(e,t){return Object.is(e,t)}const et={stepTimeoutMs:300*1e3,stepCooldownMs:500,busAuth:{kind:`none`},platformDefaults:{cwd:process.cwd()},cancelTimeoutMs:1e4},tt=new Ke.default({allErrors:!0,strict:!1}),F=new Map,nt=new Map;function rt(e){let t=e.$id;return typeof t==`string`?t:void 0}function it(e,t,n){let r=rt(t);return r===void 0?`workflow:${e}:${n}`:`schema-id:${r}`}function at(e,t){try{return JSON.stringify(I(t))}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Workflow '${e}' state schema is invalid: ${n}`)}}function I(e){if(Array.isArray(e))return e.map(I);if(typeof e!=`object`||!e)return e;let t=e;return Object.fromEntries(Object.keys(t).sort().map(e=>[e,I(t[e])]))}function ot(e,t,n){let r=nt.get(t);if(r!==void 0&&r!==n)throw Error(`Workflow '${e}' state schema reuses JSON Schema $id '${t}' with different content`);return tt.getSchema(t)}function st(e){return e==null||e.length===0?`schema validation failed`:e.map(e=>`${e.instancePath.length>0?e.instancePath:`<root>`} ${e.message??`is invalid`}`).join(`; `)}function ct(e,t){let n=at(e,t),r=it(e,t,n),i=F.get(r);if(i!==void 0)return i;let a=rt(t);if(a!==void 0){let t=ot(e,a,n);if(t!==void 0)return F.set(r,t),t}try{let e=tt.compile(t);return F.set(r,e),a!==void 0&&nt.set(a,n),e}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`Workflow '${e}' state schema is invalid: ${n}`)}}function lt(e,t,n){if(e.state===void 0)return;let r=ct(e.id,e.state.schema);if(r(t))return;let i=n===`initial`?`initial state`:`next state`;throw Error(`Workflow '${e.id}' ${i} does not match workflow state schema: ${st(r.errors)}`)}function ut(e){if(e.state===void 0)return;let t=e.state.initial===void 0?{}:e.state.initial;return lt(e,t,`initial`),t}async function dt(e,t,n){if(!(await e.request(N.updateExecution,{executionId:t.id,status:n.status,error:n.error,reason:n.reason,completedAt:n.completedAt})).success)throw Error(`Workflow execution not found: ${t.id}`)}async function ft(e,t,n,r){t.status=`completed`,t.completedAt=Date.now();try{await dt(e.bus,t,{status:t.status,completedAt:t.completedAt}),await e.bus.emit(E.execution.completed,{executionId:n,workflowId:t.workflowId,totalDuration:t.completedAt-r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}async function L(e,t,n,r,i){t.status=`failed`,t.error=r,t.completedAt=Date.now();try{await dt(e.bus,t,{status:t.status,error:t.error,completedAt:t.completedAt});try{await i?.()}catch(e){console.error(`[WorkflowFinalizer] Failed to run failure pre-emit hook:`,e)}await e.bus.emit(E.execution.failed,{executionId:n,workflowId:t.workflowId,error:r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}function pt(e,t,n){let{activeRunnerSteps:r,bus:i}=e,a=`${t}:`;for(let[e,o]of r){if(!e.startsWith(a))continue;let r=e.slice(a.length);o.controller.abort(),i.emit(ue(o.cancelSubject),{executionId:t,stepId:r,reason:n}).catch(t=>{console.error(`[WorkflowFinalizer] Failed to emit cancellation for ${e}:`,t)})}}async function mt(e,t,n){let r=await e.bus.request(N.getExecution,{executionId:t});if(r.execution==null)return!1;let i=r.execution.workflowId;if(i===void 0)throw Error(`Paused execution ${t} is missing stored workflowId`);let a=Date.now(),{cancelled:o,gates:s}=await e.bus.request(N.cancelPausedExecution,{executionId:t,completedAt:a,reason:n});if(!o)return!1;for(let n of s)await e.bus.emit(E.gate.resolved,{executionId:t,stepId:n.nodeId,stepType:`gate`,frameId:n.frameId,source:`cancelled`}).catch(e=>{console.error(`[WorkflowFinalizer] Failed to emit cancelled gate resolution for ${n.frameId}:`,e)});return await e.bus.emit(E.execution.cancelled,{executionId:t,workflowId:i,reason:n,completedAt:a}),e.activeExecutions.delete(t),!0}async function ht(e,t,n){let r=e.activeExecutions.get(t);if(!r||r.execution.status!==`running`)return mt(e,t,n);let{execution:i}=r;i.status=`cancelled`,i.reason=n,i.completedAt=Date.now();try{for(let[n,r]of e.shellAbortControllers)n.startsWith(`${t}:`)&&(r.abort(),e.shellAbortControllers.delete(n));pt(e,t,n),await dt(e.bus,i,{status:i.status,reason:n,completedAt:i.completedAt}),await e.bus.emit(E.execution.cancelled,{executionId:t,workflowId:i.workflowId,reason:n,completedAt:i.completedAt})}finally{e.activeExecutions.delete(t)}return!0}const gt=[`darwin`,`linux`,`win32`];function _t(e){return gt.find(t=>t===e)??`linux`}function vt(e,t){return t}function yt(e,t){return{...t}}function bt(e){return e.reason instanceof Error?e.reason.message:typeof e.reason==`string`&&e.reason.length>0?e.reason:ee}async function xt(e,t,n){let r=e.activeExecutions.get(t);if(!r||r.execution.status!==`running`)return;let i=e.buildFinalizerDeps(),{execution:a}=await i.bus.request(N.getExecution,{executionId:t});a?.status===`running`&&(r.execution=a,await ht(i,t,bt(n))||console.error(`[WorkflowExecutor] Failed to persist runner cancellation for ${t}: execution not active`))}async function St(e,t){if(t.pausedAtGateId===void 0||t.pausedAtFrameId===void 0)throw Error(`Paused runner result for '${t.executionId}' is missing gate identity`);let{bus:n}=e.buildFinalizerDeps(),{execution:r}=await n.request(N.getExecution,{executionId:t.executionId});if(r?.status!==`running`){let n=e.activeExecutions.get(t.executionId);n!==void 0&&r?.status===`paused`&&(n.execution.status=`paused`,e.activeExecutions.delete(t.executionId));return}let i={...r,status:`paused`};await n.request(N.setExecution,{execution:i});let a=e.activeExecutions.get(t.executionId);a!==void 0&&(a.execution=i),await n.emit(E.execution.paused,{executionId:t.executionId,workflowId:t.workflowId,pausedAtGateId:t.pausedAtGateId,pausedAtFrameId:t.pausedAtFrameId}),e.activeExecutions.delete(t.executionId)}async function Ct(e,t){let n=e.activeExecutions.get(t.executionId);if(!n||n.execution.status!==`running`)return;let r=e.buildFinalizerDeps(),{execution:i}=await r.bus.request(N.getExecution,{executionId:t.executionId});if(i?.status===`running`){if(n.execution=i,t.status===`completed`){await ft(r,n.execution,t.executionId,n.execution.startedAt);return}if(t.status===`cancelled`){await ht(r,t.executionId,t.reason??ee);return}if(t.status===`failed`){await L(r,n.execution,t.executionId,t.error);return}}}function wt(e,t){return{source:{kind:`path`,path:t.filePath},executionId:t.executionId,workflowId:t.workflowId,triggerPayload:t.sanitizedTriggerPayload,inputs:t.boundInputs,config:t.boundConfig,...t.artifactRef===void 0?{}:{artifactRef:t.artifactRef},...t.executionHints===void 0?{}:{executionHints:t.executionHints},scope:t.scope,busUrl:e.config.busUrl,busAuth:e.config.busAuth,context:e.resolveWorkflowContext(t.workspaceRoot),env:e.config.platformDefaults.env??{},coordinatorSessionId:t.coordinatorSessionId,cancelSubject:`workflow.${t.executionId}.cancel`,suspensionStrategy:`wait-in-process`}}function Tt(e,t){let{executionId:n}=t,{workflowRunner:r,workflowAbortControllers:i,executionTasks:a,activeExecutions:o}=e,s=new AbortController;i.set(n,s);let c=wt(e,t);return Promise.resolve().then(()=>r.run(c,s.signal)).then(async t=>{if(t.status===`paused`){await St(e,t);return}await Ct(e,t)}).catch(async t=>{if(s.signal.aborted){await xt(e,n,s.signal).catch(e=>{console.error(`[WorkflowExecutor] Failed to persist file runner cancellation for ${n}:`,e)});return}let r=o.get(n);if(r){let i=t instanceof Error?t.message:String(t);await L(e.buildFinalizerDeps(),r.execution,n,i).catch(e=>{console.error(`[WorkflowExecutor] Failed to persist file runner boot failure for ${n}:`,e)})}}).finally(()=>{i.delete(n),a.delete(n),o.delete(n)})}function Et(e,t){let{config:n}=e,r=t.definitionSnapshot??(t.source.kind===`definition`?t.workflow:void 0);return{source:t.source,...r===void 0?{}:{definition:r},executionId:t.executionId,workflowId:t.workflowId,triggerPayload:t.sanitizedTriggerPayload,inputs:t.boundInputs,config:t.boundConfig,...t.artifactRef===void 0?{}:{artifactRef:t.artifactRef},...t.executionHints===void 0?{}:{executionHints:t.executionHints},scope:t.scope,busUrl:n.busUrl,busAuth:n.busAuth,context:e.resolveWorkflowContext(t.workspaceRoot),env:n.platformDefaults.env??{},coordinatorSessionId:t.coordinatorSessionId,cancelSubject:`workflow.${t.executionId}.cancel`,suspensionStrategy:t.suspensionStrategy??`wait-in-process`}}function Dt(e,t){let{executionId:n}=t,{workflowRunner:r,workflowAbortControllers:i,executionTasks:a,activeExecutions:o}=e,s=new AbortController;i.set(n,s);let c=Et(e,t),l=t.dispatchMetadata===void 0?void 0:{dispatchMetadata:t.dispatchMetadata};return Promise.resolve().then(()=>r.run(c,s.signal,void 0,l)).then(async t=>{if(t.status===`paused`){await St(e,t);return}await Ct(e,t)}).catch(async t=>{if(s.signal.aborted){await xt(e,n,s.signal).catch(e=>{console.error(`[WorkflowExecutor] Failed to persist runner cancellation for ${n}:`,e)});return}let r=o.get(n);if(r){let i=t instanceof Error?t.message:String(t);await L(e.buildFinalizerDeps(),r.execution,n,i).catch(e=>{console.error(`[WorkflowExecutor] Failed to persist runner boot failure for ${n}:`,e)})}}).finally(()=>{i.delete(n),a.delete(n),o.delete(n)})}function Ot(e,t,n={}){let r=kt(e,n);return{executionId:e.executionId,workflowId:e.workflowId,workflow:t,...e.definitionSnapshot===void 0?{}:{definitionSnapshot:e.definitionSnapshot},source:e.source,coordinatorSessionId:e.coordinatorSessionId,sanitizedTriggerPayload:e.triggerPayload,boundInputs:e.inputs,boundConfig:e.config??{},...e.artifactRef===void 0?{}:{artifactRef:e.artifactRef},...e.executionHints===void 0?{}:{executionHints:e.executionHints},scope:e.scope,workspaceRoot:e.context.repoPath,suspensionStrategy:e.suspensionStrategy,...r===void 0?{}:{dispatchMetadata:r}}}function kt(e,t){return t.resume===!0?{...e.dispatchMetadata,resume:!0}:e.dispatchMetadata}function At(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function jt(e,t,n){let r=e?j(e,n):t,c=o(t),l=o(i(r)?r:o(t,r)),u,d;try{u=s(c),d=s(l)}catch{return null}let f=a(process.platform===`win32`?u.toLowerCase():u,process.platform===`win32`?d.toLowerCase():d);return f===``||!f.startsWith(`..`)&&!i(f)?d:null}function Mt(e){return e instanceof Error&&(`code`in e||`killed`in e)}function Nt(e){let t=e[0];return t===void 0||t.trim()===``?null:t}function Pt(e){let{command:t,cwd:n,env:i,timeoutMs:a,signal:o}=e,s=Nt(t);if(s===null)return Promise.reject(Error(`Shell step command is empty`));let c=t.slice(1);return new Promise((e,t)=>{let l=null,u=!1,d=r(s,c,{cwd:n,env:{...process.env,...i},timeout:0,maxBuffer:10*1024*1024,shell:!1},(n,r,i)=>{n?t(Object.assign(n,{stdout:r,stderr:i,aborted:u})):e({stdout:r,stderr:i})}),f=()=>{d.exitCode===null&&(d.kill(`SIGTERM`),l=setTimeout(()=>{d.exitCode===null&&d.kill(`SIGKILL`)},5e3))},p=setTimeout(()=>{f()},a);if(d.on(`close`,()=>{clearTimeout(p),l!==null&&clearTimeout(l)}),o){let e=()=>{u=!0,f()};o.aborted?e():(o.addEventListener(`abort`,e,{once:!0}),d.on(`close`,()=>o.removeEventListener(`abort`,e)))}})}async function Ft(e){let{step:t,workspaceRoot:n,expressionContext:r,signal:i}=e,a=jt(t.cwd,n,r);if(a===null)return{status:`failed`,error:`Shell step cwd '${t.cwd}' is outside workspace root '${n}'`};let o=t.command.map(e=>j(e,r));if(Nt(o)===null)return{status:`failed`,error:`Shell step command is empty`};let s=Object.fromEntries(Object.entries(t.env??{}).map(([e,t])=>[e,j(t,r)])),c=t.timeoutMs??3e5;try{let{stdout:e}=await Pt({command:o,cwd:a,env:s,timeoutMs:c,signal:i});return{status:`completed`,stdout:e}}catch(e){if(!Mt(e))return{status:`failed`,error:String(e)};let t=e.aborted===!0,n=!t&&(e.killed===!0||e.signal!=null);return{status:`failed`,error:t?`Command cancelled`:n?`Command timed out after ${c}ms`:e.stderr?.trim()||e.stdout?.trim()||e.message}}}const It=/(?:^|[_-])(authorization|token|cookie|password|set[_-]?cookie|api[_-]?key|secret|credential|private[_-]?key|api[_-]?secret)(?:$|[_-])/i;function Lt(e){if(!e)return;let t={remainingBytes:65536},n={},r=Object.entries(e).slice(0,100);for(let[e,i]of r){if(t.remainingBytes<=0)break;let r=R(e,i,0,t);r!==void 0&&(n[e]=r)}return Object.keys(n).length>0?n:void 0}function R(e,t,n,r){if(!(r.remainingBytes<=0||n>6)&&(r.remainingBytes-=e.length,!(r.remainingBytes<=0))){if(It.test(e))return r.remainingBytes-=10,`[REDACTED]`;if(t===null)return r.remainingBytes-=4,null;if(typeof t==`string`){let e=t.slice(0,2e3);return r.remainingBytes-=e.length,e}if(typeof t==`number`||typeof t==`boolean`)return r.remainingBytes-=String(t).length,t;if(Array.isArray(t)){let i=[];for(let a of t.slice(0,100)){if(r.remainingBytes<=0)break;let t=R(e,a,n+1,r);t!==void 0&&i.push(t)}return i}if(typeof t==`object`){let e={},i=Object.entries(t).slice(0,100);for(let[t,a]of i){if(r.remainingBytes<=0)break;let i=R(t,a,n+1,r);i!==void 0&&(e[t]=i)}return e}}}function Rt(e){return(e?.requirements?.capabilities??[]).length>0}function zt(e,t,n){let r=t?.requirements?.capabilities??[];if(Rt(t))return{run:(t,i)=>e.request(te.dispatch,{config:t,requirements:{customCapabilities:r},...n===void 0?{}:{metadata:n}},{signal:i})}}function Bt(e,t){let n=zt(e.bus,t.executionHints,t.dispatchMetadata);return n===void 0?e.workflowRunner===void 0?e.runExecution(t.executionId).finally(()=>{e.executionTasks.delete(t.executionId)}):Dt(e.buildRunnerTaskDeps(e.workflowRunner),t):Dt(e.buildRunnerTaskDeps(n),t)}async function Vt(e,t,n,r){let i=ut(r);await e.request(N.setExecutionStart,{execution:t,runContext:n,initialState:i})}async function Ht(e,t){try{await e.emit(E.execution.started,t)}catch(e){console.error(`[WorkflowExecutor] execution.started listener failed:`,e)}}async function Ut(e,t){await e.request(b.close,{sessionId:t}).catch(e=>{console.error(`[WorkflowExecutor] Failed to close coordinator session "${t}" after launch failure:`,e)})}function Wt(e,t,n,r,i,a,o,s,c){let l={id:t,workflowId:n.id,coordinatorSessionId:r,status:`running`,inputs:i,config:a,startedAt:Date.now(),triggerPayload:o,...c.artifactRef===void 0?{}:{artifactRef:c.artifactRef},scope:s};return e.set(t,{execution:l,workflow:n,runContext:c,runtimeHandlers:new Map}),l}async function Gt(e,t,n,r,i){await e.request(N.setExecutionStart,{execution:t,runContext:n,...r===void 0?{}:{initialState:r},...i!==void 0&&i.length>0?{executionLinks:[...i]}:{}})}function Kt(e,t){let n=e?.source;if(n===void 0)return;let r=le.parse(n);return r.kind===`path`&&!i(r.path)?{...r,path:o(t,r.path)}:r}function qt(e,t,n){return Kt(t,n)??{kind:`definition`,workflowId:e}}function Jt(e,t,n,r){if(!(t.kind===`definition`||e.workflowRunner!==void 0||Rt(n)))throw new re(ie.NOT_EXECUTABLE,`Workflow source execution '${r}' requires a workflow runner or WorkerNode capability requirements.`)}async function Yt(e,t,n,r){return e.set(t,n),await r,t}async function Xt(e,t){let{workflow:n}=await e.request(N.get,{id:t});if(!n)throw Error(`Workflow not found: ${t}`);return n}function Zt(e,t){if(e===void 0&&t===void 0)return;let n=[...new Set([...e?.capabilities??[],...t?.capabilities??[]])];return{...e,...t,...n.length>0&&{capabilities:n}}}function Qt(e,t){if(e===void 0&&t===void 0)return;let n=Zt(e?.requirements,t?.requirements),r=e?.providers!==void 0||t?.providers!==void 0?{...e?.providers,...t?.providers}:void 0;return{...e,...t,...n!==void 0&&{requirements:n},...r!==void 0&&{providers:r}}}async function $t(e,t,n,r){let{sessionId:i}=await e.request(b.create,{parentSessionId:t,branchKind:`coordinator`,title:`Workflow: ${n}`,targetWorkingDirectory:r});return i}async function en(e,t,n={}){let r=await Xt(e.bus,t);return tn(e,t,{...n,workflow:r})}async function tn(e,t,n){let{bus:r,activeExecutions:i,executionTasks:a}=e,{workflow:o,parentSessionId:s,triggerPayload:c,artifactRef:l,executionHints:u,scopeOverride:d}=n,f=At(`wfx`),p=Lt(c),m=vt(o,n.input===void 0?{}:n.input),h=yt(o,n.config??{}),g=d??o.scope,_=Qt(o.executionHints,u),v=await e.resolveExecutionWorkspaceRoot(s),y=n.executionSource??qt(t,_,v),b=n.definitionSnapshot??(y.kind===`definition`?o:void 0);Jt(e,y,_,t);let x=await $t(r,s,o.name,v),S=!1;try{let s=e.buildRunContext({executionId:f,workflowId:t,coordinatorSessionId:x,source:y,...b===void 0?{}:{definitionSnapshot:b},inputs:m,config:h,scope:g,triggerPayload:p??{},...l===void 0?{}:{artifactRef:l},..._===void 0?{}:{executionHints:_},workspaceRoot:v}),c=Wt(i,f,o,x,m,h,p,g,s);await Gt(r,c,s,y.kind===`definition`?ut(o):void 0,n.executionLinks?.(f));let u=c.startedAt,d=Ht(r,{executionId:f,workflowId:t,coordinatorSessionId:x,startedAt:u,...l===void 0?{}:{artifactRef:l}}),ee=Bt(e,{executionId:f,workflowId:t,workflow:o,...b===void 0?{}:{definitionSnapshot:b},source:y,coordinatorSessionId:x,sanitizedTriggerPayload:p??{},boundInputs:m,boundConfig:h,scope:g,...l===void 0?{}:{artifactRef:l},..._===void 0?{}:{executionHints:_},workspaceRoot:v,suspensionStrategy:s.suspensionStrategy});return S=!0,Yt(a,f,ee,d)}catch(e){throw S||(i.delete(f),a.delete(f),await Ut(r,x)),e}}function nn(e,t,n,r,i){e.set(t.id,{execution:t,workflow:{id:t.workflowId,name:n,scope:r,root:{id:`${t.workflowId}-root`,type:`sequence`,nodes:[]}},runContext:i,runtimeHandlers:new Map})}async function rn(e,t,n,r){let{sessionId:i}=await e.request(b.create,{...t===void 0?{}:{parentSessionId:t},branchKind:`coordinator`,title:`Workflow: ${n}`,targetWorkingDirectory:r});return i}async function an(e,t,n={}){let{bus:r,activeExecutions:i,executionTasks:a}=e,{artifactRef:o,executionHints:s,parentSessionId:c,triggerPayload:l,scopeOverride:u}=n,d=At(`wfx`),f=Lt(l),p=n.input===void 0?{}:n.input,m=n.config??{},h=u??{type:`global`},g=await e.resolveExecutionWorkspaceRoot(c),_=await rn(r,c,t,g),v=d,y={id:d,workflowId:v,coordinatorSessionId:_,status:`running`,inputs:p,config:m,startedAt:Date.now(),triggerPayload:f,...o===void 0?{}:{artifactRef:o},scope:h},b=!1;try{let{workflowRunner:c}=e;if(c===void 0)throw Error(`[WorkflowExecutor] startFileExecution called without a workflow runner`);let l=e.buildRunContext({executionId:d,workflowId:v,coordinatorSessionId:_,source:{kind:`path`,path:t},inputs:p,config:m,scope:h,triggerPayload:f??{},...o===void 0?{}:{artifactRef:o},...s===void 0?{}:{executionHints:s},workspaceRoot:g});await Gt(r,y,l,void 0,n.executionLinks?.(d)),nn(i,y,t,h,l);let u=Ht(r,{executionId:d,workflowId:v,coordinatorSessionId:_,startedAt:y.startedAt,...o===void 0?{}:{artifactRef:o}}),x=Tt(e.buildRunnerTaskDeps(c),{executionId:d,workflowId:v,filePath:t,coordinatorSessionId:_,sanitizedTriggerPayload:f??{},boundInputs:p,boundConfig:m,...o===void 0?{}:{artifactRef:o},...s===void 0?{}:{executionHints:s},scope:h,workspaceRoot:g});return b=!0,Yt(a,d,x,u)}catch(e){throw b||(i.delete(d),a.delete(d),await Ut(r,_)),e}}function on(e){let t={};for(let[n,r]of Object.entries(e))r.status===`completed`?t[n]={status:`completed`,output:r.output}:r.status===`skipped`&&(t[n]={status:`skipped`});return t}function z(e){let t={...e,input:e.inputs,steps:e.frames};return{...t,ctx:t}}function sn(){return{context:{repoPath:process.cwd(),makaioHome:process.env.MAKAIO_HOME??`${_e.homedir()}/.makaio`,os:process.platform===`win32`?`win32`:process.platform===`darwin`?`darwin`:`linux`,arch:process.arch},env:{}}}function cn(e){return{...e,path:[...e.path]}}function ln(e){if(e===`station`||e===`delegate-agent`||e===`delegate-role`||e===`gate`)return e}function un(e,t){let n=ln(t.nodeType);if(n===void 0||t.status!==`running`&&t.status!==`completed`&&t.status!==`failed`&&t.status!==`skipped`)return;let r=t.startedAt!==void 0&&t.completedAt!==void 0?Math.max(0,t.completedAt-t.startedAt):void 0;return{executionId:e,frameId:t.frameId,stepId:t.nodeId,stepType:n,status:t.status,...t.startedAt===void 0?{}:{startedAt:t.startedAt},...t.completedAt===void 0?{}:{completedAt:t.completedAt},...r===void 0?{}:{durationMs:r},...t.output===void 0?{}:{output:JSON.stringify(t.output)}}}var dn=class e{executionId;workflowId;definition;execution;runtimeHandlers;bus;signal;frameRegistry;framePersistenceTasks=new Map;artifactBinding;constructor(e,t,n,r,i,a,o,s,c,l=sn(),u={}){this.executionId=e,this.workflowId=t,this.definition=n,this.execution=r,this.runtimeHandlers=i,this.bus=a,this.signal=o,this.frameRegistry=s??new Map,this.artifactBinding=c,this.platformContext=l.context,this.env=l.env,this.suspensionStrategy=u.suspensionStrategy??`wait-in-process`,this.resumeFrames=u.resumeFrames}platformContext;env;suspensionStrategy;resumeFrames;withSignal(t){return new e(this.executionId,this.workflowId,this.definition,this.execution,this.runtimeHandlers,this.bus,t,this.frameRegistry,this.artifactBinding,{context:this.platformContext,env:this.env},{suspensionStrategy:this.suspensionStrategy,resumeFrames:this.resumeFrames})}buildExpressionContext(){return{inputs:this.execution.inputs,config:this.execution.config??{},trigger:this.execution.triggerPayload??{},frames:{},previousSteps:{}}}createFrame(e){let t=At(`frm`),n=[...e.path,t],r={frameId:t,nodeId:e.nodeId,nodeType:e.nodeType,path:n,parentFrameId:e.parentFrameId,status:`pending`,attempt:0,iteration:e.iteration,branchKey:e.branchKey};return this.frameRegistry.set(t,r),this.persistFrame(r).catch(()=>void 0),r}async persistFrame(e,t={}){let n=t.requireFrameStorage===!0||this.suspensionStrategy!==`wait-in-process`,r=cn(e),i=un(this.executionId,r),a=(this.framePersistenceTasks.get(e.frameId)??Promise.resolve()).catch(()=>void 0).then(async()=>{n?await this.bus.request(N.setFrame,{executionId:this.executionId,frame:r}):await this.bus.requestOptional(N.setFrame,{executionId:this.executionId,frame:r}),i!==void 0&&await this.bus.requestOptional(N.setSpan,{span:i})}).catch(t=>{if(n)throw t;console.warn(`[RuntimeContext] Failed to persist frame ${e.frameId}:`,t)});this.framePersistenceTasks.set(e.frameId,a);try{await a}finally{this.framePersistenceTasks.get(e.frameId)===a&&this.framePersistenceTasks.delete(e.frameId)}}async updateFrame(e,t,n={}){let r=this.frameRegistry.get(e);if(!r)throw Error(`Frame not found: ${e}`);Object.assign(r,t),await this.persistFrame(r,n)}getFrame(e){return this.frameRegistry.get(e)}getFramesByNodeId(e){let t=[];for(let n of this.frameRegistry.values())n.nodeId===e&&t.push(n);return t.sort((e,t)=>(e.startedAt??0)-(t.startedAt??0))}async emitFrameStarted(e){try{await this.bus.emit(E.frame.started,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,parentFrameId:e.parentFrameId,startedAt:e.startedAt})}catch(t){console.error(`[RuntimeContext] frame.started observer failed for ${e.frameId}:`,t)}}async emitFrameCompleted(e,t){try{await this.bus.emit(E.frame.completed,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,output:e.output,duration:t,completedAt:e.completedAt})}catch(t){console.error(`[RuntimeContext] frame.completed observer failed for ${e.frameId}:`,t)}}async emitFrameFailed(e,t,n){try{await this.bus.emit(E.frame.failed,{executionId:this.executionId,frameId:e.frameId,nodeId:e.nodeId,error:t,duration:n,completedAt:e.completedAt})}catch(t){console.error(`[RuntimeContext] frame.failed observer failed for ${e.frameId}:`,t)}}};function fn(e){return{kind:`workflow-execution`,id:e,displayName:`Workflow Engine`}}function pn(e,t,n){return{inputs:n.inputs,config:n.config??{},trigger:n.triggerPayload,scope:n.scope,context:n.context,env:n.env,execution:{id:t.id,workflowId:t.workflowId,scope:t.scope},workflow:{id:e.id,name:e.name,scope:e.scope}}}function mn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function hn(e){if(e!=null){if(mn(e)&&typeof e.kind==`string`&&typeof e.id==`string`)return{kind:e.kind,id:e.id};throw Error(`Artifact resolve expression must return an object with string kind and id fields.`)}}function gn(e){if(e!==void 0){if(mn(e))return e;throw Error(`Artifact create expression must return an object.`)}}async function _n(e){let{bindingOptions:t,binding:n,existingArtifactRef:r,executionId:i,scope:a,initialData:o,bus:s}=e,c=null;if(r!==void 0){let e=await s.request(d.query,{kind:r.kind,ids:[r.id],currentOnly:!0});if(e.artifacts.length>0)c=e.artifacts[0];else return}else c=(await s.request(d.create,{kind:n.kind,schemaVersion:n.schemaVersion,scope:a??n.scope,data:o??{},relations:[],actor:fn(i)})).artifact;return{current:c,schemaVersion:n.schemaVersion,statusPath:t.statusPath,zodSchema:t.schema}}async function vn(e){let{definition:t,execution:n,runContext:r,zodSchema:i,bus:a}=e,o=t.artifact;if(o===void 0)return;let s=pn(t,n,r),c=r.artifactRef??(o.resolve===void 0?void 0:hn(A(o.resolve,s))),l=c===void 0&&o.create!==void 0?gn(A(o.create,s)):void 0,u=await _n({bindingOptions:{kind:o.kind,schemaVersion:o.schemaVersion,scope:o.scope,...o.resolve===void 0?{}:{resolve:o.resolve},...o.create===void 0?{}:{create:o.create},...o.statusPath===void 0?{}:{statusPath:o.statusPath},...i===void 0?{}:{schema:i}},binding:o,existingArtifactRef:c,executionId:n.id,scope:o.scope,initialData:l,bus:a});if(u===void 0)throw Error(`Workflow artifact binding could not be resolved for the configured artifact reference.`);return u}const yn=new WeakMap;function bn(e,t){let n=(yn.get(e)??Promise.resolve()).catch(()=>void 0).then(t);return yn.set(e,n.then(()=>void 0,()=>void 0)),n}function xn(e,t){switch(t.operation){case`set`:return t.data;case`merge`:return{...e,...t.data};case`append`:{let n={...e};for(let[r,i]of Object.entries(t.data)){let t=e[r];Array.isArray(t)&&Array.isArray(i)?n[r]=[...t,...i]:n[r]=i}return n}}}function Sn(e,t,n){let[r,...i]=t;if(i.length===0)return{...e,[r]:n};let a=e[r]!==null&&typeof e[r]==`object`&&!Array.isArray(e[r])?e[r]:{};return{...e,[r]:Sn(a,i,n)}}function Cn(e,t,n){return Sn(e,t.startsWith(`/`)?t.slice(1).split(`/`):t.split(`.`),n)}function wn(e,t,n){if(n===`set`||n===`functional`)return[];let r=[];for(let n of Object.keys(t))e[n]!==t[n]&&r.push(`/${n}`);return r}async function Tn(e,t){if(typeof t==`function`)return{nextData:await t(Object.freeze({...e})),operationLabel:`functional`,changedPaths:[]};let n=xn(e,t),r=wn(e,n,t.operation);return{nextData:n,operationLabel:t.operation,changedPaths:r}}function En(e){let{executionId:t,frameId:n,bindingState:r,bus:i}=e,a=Object.freeze({...r.current.data}),o=async e=>bn(r,async()=>{let a=r.current,{nextData:o,operationLabel:s,changedPaths:c}=await Tn(a.data,e);if(r.zodSchema!==void 0){let e=r.zodSchema.safeParse(o);if(!e.success)throw Error(`Artifact data validation failed: ${e.error.message}`)}let l=await i.request(d.revise,{previous:{refClass:`artifact`,kind:a.kind,id:a.id,revision:a.revision},revision:{kind:a.kind,schemaVersion:r.schemaVersion,scope:a.scope,data:o,relations:a.relations,actor:fn(t)}});r.current=l.artifact;let u=l.artifact.revision;return i.emit(ce.artifact.updated,{executionId:t,frameId:n,artifactRef:{kind:l.artifact.kind,id:l.artifact.id},paths:c,operation:s,revision:u}).catch(e=>{console.error(`[ArtifactContext] Failed to emit artifact.updated event:`,e)}),u});return{data:a,updateArtifact:o,updateStatus:async e=>{if(r.statusPath===void 0)throw Error(`updateStatus() called but no statusPath is configured on the artifact binding. Set statusPath in the .artifact() builder call to use updateStatus().`);let t=r.statusPath;return o(n=>Cn(n,t,e))}}}function Dn(e,t){return{async get(){return(await t.request(E.state.get,{executionId:e})).value},async update(n){let r=await t.request(E.state.get,{executionId:e}),i=structuredClone(r.value),a=await n(i),o=a===void 0?i:a,s=qe(r.value,o);return(await t.request(E.state.patch,{executionId:e,expectedSequence:r.sequence,patch:s,nextValue:o})).value}}}async function On(e,t,n){if(t.signal.aborted)return{status:`cancelled`};let r=await t.bus.requestOptional(E.resolveRole,{roleId:e.roleId});if(!r.handled)return{status:`failed`,error:e.unresolvedRoleError};let i=j(e.prompt,z(n)),a=e.completion===void 0?r.data:{...r.data,completion:e.completion};return B({...e,task:i,resolvedConfig:a},t)}async function B(e,t){if(t.signal.aborted)return{status:`cancelled`};let n=await t.bus.requestOptional(S.spawn,{parentSessionId:t.execution.coordinatorSessionId??t.executionId,depth:1,config:Nn(e.task,e.resolvedConfig,e.outputSchema)});if(!n.handled)return{status:`failed`,error:e.unavailableRuntimeError};let r=await kn(e,t,n.data.subagentId,{attempts:5}),i=await Pn(e,t,n.data.subagentId);return i===`aborted`?{status:`cancelled`}:(r||await kn(e,t,n.data.subagentId,{attempts:1}),i.handled?t.signal.aborted||i.data.status===`cancelled`?{status:`cancelled`}:i.data.status===`completed`?{status:`completed`,output:i.data.result??null}:{status:`failed`,error:`${e.nodeLabel} '${e.nodeId}' subagent ${i.data.status}: ${i.data.error??`no result`}`}:{status:`failed`,error:e.unavailableAwaitError})}async function kn(e,t,n,r){if(e.frameId===void 0)return!0;try{let i=await An(t,n,r.attempts);return i===void 0?!1:(await t.bus.emit(E.frame.sessionLinked,{executionId:t.executionId,frameId:e.frameId,sessionId:i}),!0)}catch(t){return console.warn(`[workflow-engine] Failed to emit frame.sessionLinked for frame '${e.frameId}' and subagent '${n}'`,t),!1}}async function An(e,t,n){for(let r=0;r<n;r+=1){if(e.signal?.aborted)return;let i=await jn(e,t);if(i===void 0||!i.handled)return;if(i.data.childSessionId!==void 0)return i.data.childSessionId;if(r<n-1&&!await Mn(e.signal,20))return}}async function jn(e,t){try{return await e.bus.requestOptional(S.getStatus,{subagentId:t},{timeout:25,signal:e.signal})}catch{return}}function Mn(e,t){return e.aborted?Promise.resolve(!1):new Promise(n=>{let r,i=t=>{r!==void 0&&(clearTimeout(r),r=void 0),e.removeEventListener(`abort`,a),n(t)},a=()=>i(!1);r=setTimeout(()=>i(!0),t),e.addEventListener(`abort`,a,{once:!0}),e.aborted&&i(!1)})}function Nn(e,t,n){return{task:e,adapterName:t.adapterName,...t.model===void 0?{}:{model:t.model},...t.reasoningEffort===void 0?{}:{reasoningEffort:t.reasoningEffort},...t.harnessId===void 0?{}:{harnessId:t.harnessId},...t.systemPrompt===void 0?{}:{systemPrompt:t.systemPrompt},...t.contextMode===void 0?{}:{contextMode:t.contextMode},...t.providerContext===void 0?{}:{providerContext:t.providerContext},...t.completion===void 0?{}:{completion:t.completion},...n===void 0?{}:{responseSchema:n}}}async function Pn(e,t,n){if(t.signal.aborted)return await V(e,t,n),`aborted`;let r=t.bus.requestOptional(S.await,{subagentId:n,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}},{timeout:0});if(t.signal.aborted)return await V(e,t,n),`aborted`;let i,a=new Promise(e=>{i=()=>e(`aborted`),t.signal.addEventListener(`abort`,i,{once:!0})}),o=await Promise.race([r,a]);return i!==void 0&&t.signal.removeEventListener(`abort`,i),o===`aborted`&&await V(e,t,n),o}async function V(e,t,n){try{await t.bus.requestOptional(S.kill,{subagentId:n,reason:`Workflow execution '${t.executionId}' cancelled ${e.cancellationLabel} '${e.nodeId}'`})}catch(t){console.warn(`[workflow-engine] Best-effort subagent kill failed for '${n}' (${e.cancellationLabel} '${e.nodeId}')`,t)}}async function Fn(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=on(n.frames),a=t.runtimeHandlers.get(e.id);if(a===void 0)return In(e,t,n,r);let o=t.artifactBinding!==void 0&&r!==void 0?En({executionId:t.executionId,frameId:r,bindingState:t.artifactBinding,bus:t.bus}):void 0,s=t.definition.state===void 0?void 0:Dn(t.executionId,t.bus);async function c(n){if(r===void 0){console.warn(`[station-node] updateProgress called without frameId for node '${e.id}'; skipping emit`);return}let i=se[`execution.progress`].parse({executionId:t.executionId,workflowId:t.workflowId,frameId:r,nodeId:e.id,progress:n,emittedAt:Date.now()});try{await t.bus.emit(E.execution.progress,i)}catch(t){console.error(`[station-node] execution.progress observer failed for ${e.id}:`,t)}}let l;try{l=await a({...t.platformContext,env:t.env,executionId:t.executionId,workflowId:t.workflowId,inputs:t.execution.inputs,config:t.execution.config??{},trigger:t.execution.triggerPayload??{},previousSteps:i,...n.item!==void 0&&{item:n.item},...n.index!==void 0&&{index:n.index},...n.previous!==void 0&&{previous:n.previous},signal:t.signal,...o!==void 0&&{artifact:o},...s!==void 0&&{state:s},bus:t.bus,updateProgress:c})}catch(e){return{status:`failed`,error:e instanceof Error?e.message:String(e)}}return{status:`completed`,output:l}}async function In(e,t,n,r){if(e.role===void 0)return{status:`failed`,error:`No handler registered for station node '${e.id}'`};let i=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return On({nodeId:e.id,nodeLabel:`Station node`,roleId:e.role,prompt:e.prompt,...i===void 0?{}:{outputSchema:i},...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs},...e.completion===void 0?{}:{completion:e.completion},unresolvedRoleError:`No runtime handler registered for station node '${e.id}', and role '${e.role}' could not be resolved`,unavailableRuntimeError:`Subagent runtime is not available for station node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await station node '${e.id}'`,cancellationLabel:`station`,...r===void 0?{}:{frameId:r}},t,n)}async function Ln(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=await t.bus.requestOptional(E.resolveAgent,{agentId:e.agentId});if(!i.handled)return{status:`failed`,error:`Agent '${e.agentId}' could not be resolved for delegate-agent node '${e.id}'`};if(t.signal.aborted)return{status:`cancelled`};let a=Xn(e,n);if(a.status===`failed`)return a;let o=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return B({nodeId:e.id,nodeLabel:`Delegate-agent node`,task:a.task,resolvedConfig:i.data,...o===void 0?{}:{outputSchema:o},unavailableRuntimeError:`Subagent runtime is not available for delegate-agent node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await delegate-agent node '${e.id}'`,cancellationLabel:`delegate-agent`,...r===void 0?{}:{frameId:r}},t)}async function Rn(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=await t.bus.requestOptional(E.resolveRole,{roleId:e.role});if(!i.handled)return{status:`failed`,error:`Role '${e.role}' could not be resolved for delegate-role node '${e.id}'`};let a=e.outputSchema===void 0?void 0:{schema:e.outputSchema},o=j(e.prompt,z(n)),s=Kn(e,i.data),c={node:e,task:o,resolvedRole:s,...a===void 0?{}:{outputSchema:a},...r===void 0?{}:{frameId:r}};return qn(s)?zn(c,t):B({nodeId:e.id,nodeLabel:`Delegate-role node`,task:o,resolvedConfig:s,...a===void 0?{}:{outputSchema:a},...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs},unavailableRuntimeError:`Subagent runtime is not available for delegate-role node '${e.id}'`,unavailableAwaitError:`Subagent runtime cannot await delegate-role node '${e.id}'`,cancellationLabel:`delegate-role`,...r===void 0?{}:{frameId:r}},t)}async function zn(e,t){let{node:n}=e,r=n.timeoutMs??3e5,i,a=Yn(t.signal);try{let n=await Bn(e,t);return`status`in n?n:(i=n.sessionId,t.signal.aborted?{status:`cancelled`}:await Vn(e,t,{abortLink:a,childSessionId:i,timeoutMs:r}))}catch(e){if(t.signal.aborted)return{status:`cancelled`};let r=e instanceof Error?e.message:String(e);return{status:`failed`,error:`Delegate-role node '${n.id}' session turn failed: ${r}`}}finally{a.controller.abort(),a.cleanup(),i!==void 0&&await H(t,n.id,i)}}async function Bn(e,t){let n=await t.bus.requestOptional(b.create,{sessionId:Wn(t,e),parentSessionId:t.execution.coordinatorSessionId??t.executionId,branchKind:`subagent`,title:`Workflow delegate-role '${e.node.id}'`});if(!n.handled)return{status:`failed`,error:`Session runtime is not available for delegate-role node '${e.node.id}'`};let r=n.data.sessionId;return await Jn(e,t,r),(await t.bus.requestOptional(b.agent.attachResolved,{sessionId:r,agent:Gn(e.resolvedRole),role:`lead`},{signal:t.signal}).catch(async n=>{throw await H(t,e.node.id,r),n})).handled?{sessionId:r}:(await H(t,e.node.id,r),{status:`failed`,error:`Session runtime cannot attach delegate-role node '${e.node.id}'`})}async function Vn(e,t,n){let r=t.bus.once(u.complete,{timeoutMs:n.timeoutMs,filter:{sessionId:n.childSessionId},signal:n.abortLink.controller.signal});r.catch(()=>void 0);let i=await Hn(e,t,n);if(`status`in i)return i;let a=await Un(e,t,n,i.turnId);if(a.status===`failed`)return a;let o=await r;return t.signal.aborted?{status:`cancelled`}:o.payload.outcome===`error`?{status:`failed`,error:`Delegate-role node '${e.node.id}' agent error: ${o.payload.error??`no result`}`}:{status:`completed`,output:o.payload.message??null}}async function Hn(e,t,n){let r=await t.bus.requestOptional(b.sendMessage,{sessionId:n.childSessionId,message:e.task,...e.outputSchema===void 0?{}:{responseSchema:e.outputSchema},source:`system`},{signal:t.signal});return r.handled?{turnId:r.data.turnId}:(n.abortLink.controller.abort(),{status:`failed`,error:`Session runtime cannot send delegate-role node '${e.node.id}'`})}async function Un(e,t,n,r){let i=await t.bus.requestOptional(b.turn.await,{sessionId:n.childSessionId,turnId:r,timeoutMs:n.timeoutMs},{timeout:0,signal:t.signal});return i.handled?i.data.completion.success?{status:`completed`}:{status:`failed`,error:`Delegate-role node '${e.node.id}' session turn failed: ${i.data.completion.error??`no result`}`}:(n.abortLink.controller.abort(),{status:`failed`,error:`Session runtime cannot await delegate-role node '${e.node.id}'`})}function Wn(e,t){return`session-workflow-${e.executionId}-${t.frameId??t.node.id}`}function Gn(e){return{kind:`adapter`,adapterName:e.adapterName,...e.model===void 0?{}:{model:e.model},...e.reasoningEffort===void 0?{}:{reasoningEffort:e.reasoningEffort},...e.systemPrompt===void 0?{}:{systemPrompt:e.systemPrompt},...e.providerContext===void 0?{}:{providerConfigId:e.providerContext.providerConfigId,providerContext:e.providerContext}}}function Kn(e,t){return e.completion===void 0?t:{...t,completion:e.completion}}function qn(e){return e.completion===`turn`&&e.harnessId===void 0&&e.contextMode===void 0}async function Jn(e,t,n){if(e.frameId!==void 0)try{await t.bus.emit(E.frame.sessionLinked,{executionId:t.executionId,frameId:e.frameId,sessionId:n})}catch(t){console.warn(`[workflow-engine] Failed to emit frame.sessionLinked for frame '${e.frameId}' and session '${n}'`,t)}}async function H(e,t,n){try{await e.bus.requestOptional(b.close,{sessionId:n})}catch(e){console.warn(`[workflow-engine] Failed to close delegate-role session '${n}' for node '${t}'`,e)}}function Yn(e){let t=new AbortController;if(e.aborted)return t.abort(),{controller:t,cleanup:()=>void 0};let n=()=>t.abort();return e.addEventListener(`abort`,n,{once:!0}),{controller:t,cleanup:()=>e.removeEventListener(`abort`,n)}}function Xn(e,t){try{let n=z(t);return{status:`completed`,task:Zn(e.inputExpression===void 0?n:A(e.inputExpression,n))}}catch(t){let n=t instanceof Error?t.message:String(t);return{status:`failed`,error:`delegate-agent node '${e.id}': input expression evaluation failed: ${n}`}}}function Zn(e){if(typeof e==`string`)return e;if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function Qn(e,t,n,r){try{let i=A(n,z(r));return Array.isArray(i)?i:{status:`failed`,error:`${t} node '${e}': collection expression did not resolve to an array (got ${typeof i})`}}catch(n){return{status:`failed`,error:`${t} node '${e}': collection expression evaluation failed: ${n instanceof Error?n.message:String(n)}`}}}function $n(e,t,n){for(let r of[...e.nodes].reverse()){let e=n.getFramesByNodeId(r.id);for(let n of e)if(n.parentFrameId===t&&n.status===`completed`)return n.output}}function er(e,t,n){return $n(e.body,t,n)}function tr(e){if(e.length===0)return;let t=new Map,n=new Map;for(let r of e){n.set(r.frameId,r);let e=t.get(r.nodeId)??[];e.push(r),t.set(r.nodeId,e)}return{byNodeId:t,byFrameId:n}}const nr=new Set([`completed`,`skipped`,`waiting`]);function U(e,t,n){let r=e?.byNodeId.get(t)??[],i=n.statuses??nr;return r.find(e=>e.parentFrameId===n.parentFrameId&&e.branchKey===n.branchKey&&e.iteration===n.iteration&&i.has(e.status))}function W(e,t,n){let r={...e.frames,[t]:n};return{...e,frames:r,previousSteps:on(r),output:n.status===`completed`?n.output:e.output}}function G(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController,r=()=>n.abort();return e.addEventListener(`abort`,r,{once:!0}),t.addEventListener(`abort`,r,{once:!0}),n.signal}const rr=new Set([`completed`,`running`]);function ir(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function ar(e,t,n,r,i,a,o=`all-settled`){if(t.signal.aborted)return{status:`cancelled`};let s=Object.entries(e.branches);if(s.length===0)return{status:`completed`,output:K({},o)};let c=new AbortController,l=new AbortController,u=t.suspensionStrategy!==`wait-in-process`,d=o===`fail-fast`?G(c.signal,l.signal):u?l.signal:void 0,f=d===void 0?t.signal:G(t.signal,d),p=f===t.signal?t:t.withSignal(f),m=s.map(([s,c])=>or(s,c,e,p,n,r,i,a,{outerSignal:t.signal,pauseSignal:o===`fail-fast`||u?l.signal:void 0}));if(o===`all-settled`){let e=await Promise.all(u?m.map(e=>e.then(e=>(e.status===`paused`&&l.abort(),e))):m),t=e.find(e=>e.status===`paused`);return t===void 0?{status:`completed`,output:K(cr(s,e),o)}:t}let h=await sr(s,m,c,l);return h.type===`cancelled`?{status:`cancelled`}:h.type===`paused`?h.outcome:h.type===`failed`?{status:`failed`,error:h.error}:{status:`completed`,output:K(cr(s,h.outcomes),o)}}async function or(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l=U(r.resumeFrames,n.id,{parentFrameId:o,branchKey:e,statuses:rr});if(l?.status===`completed`)return{status:`completed`,...l.output===void 0?{}:{output:l.output}};let u=l??r.createFrame({nodeId:n.id,nodeType:`parallel`,path:s,parentFrameId:o,branchKey:e});if(r.signal.aborted)return ir(u,c)||await $(u,r),{status:`cancelled`};l===void 0&&await X(u,r);let d;try{d=await a(t,r,i,u.frameId,u.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await Q(u,r,t),{status:`failed`,error:t}}switch(d.status){case`completed`:{let e=$n(t,u.frameId,r);return await Z(u,r,e),{status:`completed`,output:e}}case`skipped`:return await Z(u,r),{status:`completed`};case`cancelled`:return ir(u,c)||await $(u,r),{status:`cancelled`};case`paused`:return d;case`failed`:return await Q(u,r,d.error),{status:`failed`,error:d.error}}}async function sr(e,t,n,r){let i,a,o=t.map(e=>e.then(e=>(e.status===`failed`&&i===void 0?(i=e.error,n.abort()):e.status===`paused`&&a===void 0&&(a=e,r.abort()),e),e=>{let t=e instanceof Error?e.message:String(e);return i===void 0&&(i=t,n.abort()),{status:`failed`,error:t}})),s=await Promise.all(o);return a===void 0?s.some(e=>e.status===`cancelled`)&&i===void 0?{type:`cancelled`}:i===void 0?{type:`completed`,outcomes:s}:{type:`failed`,error:i}:{type:`paused`,outcome:a}}function K(e,t){return{mode:t,branches:e}}function cr(e,t){let n={};for(let r=0;r<e.length;r++){let[i]=e[r],a=t[r];n[i]=lr(a)}return n}function lr(e){switch(e.status){case`completed`:return{status:`fulfilled`,...e.output===void 0?{}:{value:e.output}};case`skipped`:return{status:`fulfilled`,value:null};case`cancelled`:return{status:`cancelled`};case`paused`:return{status:`paused`,pausedAtGateId:e.pausedAtGateId,pausedAtFrameId:e.pausedAtFrameId};case`failed`:return{status:`rejected`,reason:e.error}}}const ur=new Ke.default({allErrors:!0,strict:!1});function dr(e,t){if(t===void 0)return{status:`ok`};try{return{status:`ok`,validator:ur.compile(t)}}catch(t){return{status:`failed`,error:`Gate '${e}' has an invalid resumeSchema: ${t instanceof Error?t.message:String(t)}`}}}function fr(e,t){return e===void 0||e(t)?{valid:!0}:{valid:!1,error:mr(e.errors??[])}}function pr(e,t,n){let r=dr(e,t);return r.status===`failed`?{valid:!1,error:r.error}:fr(r.validator,n)}function mr(e){return e.length===0?`schema validation failed`:e.map(e=>`${e.instancePath.length>0?e.instancePath:`/`} ${e.message??`is invalid`}`).join(`; `)}const hr={action:`approve`,source:`timeout`};function gr(e){return e===void 0?{}:{reason:e}}async function _r(e,t,n,r){let i=()=>{t.value&&(t.value=!1,e.reject(`cancelled`))};n.addEventListener(`abort`,i,{once:!0}),n.aborted&&i();let a=[e.promise],o;if(r!==null){let e=xr();o=setTimeout(()=>{t.value&&(t.value=!1,n.removeEventListener(`abort`,i),e.reject(`timed-out`))},r),a.push(e.promise)}try{let e=await Promise.race(a);return n.removeEventListener(`abort`,i),o!==void 0&&clearTimeout(o),{action:e.action,resumeData:e.resumeData,timedOut:!1,wasCancelled:!1,reason:e.reason}}catch(e){return o!==void 0&&clearTimeout(o),n.removeEventListener(`abort`,i),e===`timed-out`?{action:`reject`,resumeData:null,timedOut:!0,wasCancelled:!1}:{action:`reject`,resumeData:null,timedOut:!1,wasCancelled:!0}}}async function vr(e,t,n,r,i,a){let o={required:e.suspensionStrategy!==`wait-in-process`};if(a.timedOut){let a=Date.now();if(r.autoAction===`approve`){let s=fr(i,hr);return s.valid?(await q(e,{...r,status:`resumed`,resumeData:hr,resolvedAt:a},o),await J(e,t.id,n,{action:`approve`,source:`timeout`}),{status:`completed`,output:{resumeData:hr}}):(await q(e,{...r,status:`timed-out`,resolvedAt:a},o),await J(e,t.id,n,{action:`reject`,source:`timeout`}),{status:`failed`,error:`Gate '${t.id}' auto-approve timeout resume data does not match resumeSchema: ${s.error}`})}return await q(e,{...r,status:`timed-out`,resolvedAt:a},o),await J(e,t.id,n,{action:`reject`,source:`timeout`}),{status:`failed`,error:`Gate '${t.id}' timed out after ${String(r.timeoutMs)}ms and auto-rejected`}}if(a.wasCancelled||e.signal.aborted)return await q(e,{...r,status:`cancelled`,resolvedAt:Date.now()},o),await J(e,t.id,n,{source:`cancelled`}),{status:`cancelled`};let s=Date.now();await q(e,{...r,status:a.action===`reject`?`rejected`:`resumed`,resumeData:a.resumeData,...gr(a.reason),resolvedAt:s},o);try{await e.bus.emit(E.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:a.resumeData}),await J(e,t.id,n,{action:a.action,source:`user`,...gr(a.reason)})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return{status:`completed`,output:{resumeData:a.resumeData}}}async function yr(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=e.resumeSchema??{};if(t.suspensionStrategy!==`wait-in-process`){let n=await wr(t,e,r);if(n!==void 0)return n}let a=dr(e.id,e.resumeSchema);return a.status===`failed`?{status:`failed`,error:a.error}:br(t,e,n,r,i,a.validator)}async function br(e,t,n,r,i,a){let o=j(t.prompt,z(n)),s={executionId:e.executionId,nodeId:t.id,frameId:r,schema:i,prompt:o,status:`waiting`,autoAction:t.autoAction,timeoutMs:t.timeoutMs,createdAt:Date.now()},c=e.suspensionStrategy!==`wait-in-process`;if(await q(e,s,{required:c}),await e.updateFrame(r,{status:`waiting`},{requireFrameStorage:c}),c)return await Sr(e,t,r,i,o,s.createdAt),{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:r};let u={value:!0},d=xr(),f=e.bus.on(E.gate.respond,async n=>{let{executionId:i,gateId:o,frameId:s,action:c,resumeData:f,reason:p}=n.payload;if(i!==e.executionId||o!==t.id||s!==void 0&&s!==r){try{await n.next()}catch(e){if(e instanceof l)n.setResult({accepted:!1});else throw e}return}if(!u.value){n.setResult({accepted:!1});return}if(!fr(a,f).valid){n.setResult({accepted:!1});return}u.value=!1,n.setResult({accepted:!0}),d.resolve({action:c,resumeData:f,reason:p})});await Sr(e,t,r,i,o,s.createdAt);let p=await _r(d,u,e.signal,t.timeoutMs);return f(),vr(e,t,r,s,a,p)}function xr(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}async function Sr(e,t,n,r,i,a){try{await e.bus.emit(E.gate.suspended,{executionId:e.executionId,frameId:n,nodeId:t.id,schema:r,prompt:i,...t.title!==void 0&&{title:t.title},autoAction:t.autoAction,timeoutMs:t.timeoutMs,openedAt:a})}catch(e){console.error(`[GateNode] gate.suspended emit failed for '${t.id}':`,e)}}async function Cr(e,t,n){if(e.suspensionStrategy!==`wait-in-process`)return(await e.bus.request(N.getGateInstance,{executionId:e.executionId,nodeId:t,frameId:n})).gate;let r=await e.bus.requestOptional(N.getGateInstance,{executionId:e.executionId,nodeId:t,frameId:n});return r.handled?r.data.gate:null}async function wr(e,t,n){let r=await Cr(e,t.id,n);if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData!==void 0){let i=pr(t.id,r.schema,r.resumeData);if(!i.valid)return{status:`failed`,error:`Gate '${t.id}' persisted resumeData is invalid: ${i.error}`};try{await e.bus.emit(E.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:r.resumeData})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return await J(e,t.id,n,{action:r.status===`rejected`?`reject`:`approve`,source:`user`,...gr(r.reason)}),{status:`completed`,output:{resumeData:r.resumeData}}}if(r?.status===`waiting`){if(r.timeoutMs!==null&&Date.now()>=r.createdAt+r.timeoutMs){let i=dr(t.id,r.schema);return i.status===`failed`?{status:`failed`,error:i.error}:vr(e,t,n,r,i.validator,{action:`reject`,resumeData:null,timedOut:!0,wasCancelled:!1})}return{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:n}}if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData===void 0)return{status:`failed`,error:`Gate '${t.id}' has status '${r.status}' but resumeData is missing — cannot reconstruct output`};if(r!==null)return{status:`failed`,error:`Gate '${t.id}' cannot resume from status '${r.status}'`}}async function q(e,t,n={}){try{n.required===!0?await e.bus.request(N.setGateInstance,{gate:t}):await e.bus.requestOptional(N.setGateInstance,{gate:t})}catch(e){if(n.required===!0)throw e;console.warn(`[GateNode] Failed to upsert gate instance for '${t.nodeId}':`,e)}}async function J(e,t,n,r){try{await e.bus.emit(E.gate.resolved,{executionId:e.executionId,stepId:t,stepType:`gate`,frameId:n,...r})}catch(e){console.error(`[GateNode] gate.resolved emit failed for '${t}':`,e)}}function Y(e){return{status:`fulfilled`,...e===void 0?{}:{value:e}}}const Tr=new Set([`completed`,`running`]);function Er(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function Dr(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=Qn(e.id,`iterate`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:jr([])};let c=await Or(s,e,t,n,r,i,a,e.concurrency!==void 0&&e.concurrency>0?e.concurrency:0);if(t.signal.aborted&&c.every(e=>e.status===`cancelled`))return{status:`cancelled`};let l=c.find(e=>e.status===`paused`);return l===void 0?{status:`completed`,output:jr(c)}:{status:`paused`,pausedAtGateId:l.pausedAtGateId,pausedAtFrameId:l.pausedAtFrameId}}async function Or(e,t,n,r,i,a,o,s){let c=new AbortController,l=n.suspensionStrategy!==`wait-in-process`,u=l?G(n.signal,c.signal):n.signal,d=u===n.signal?n:n.withSignal(u),f={outerSignal:n.signal,...l?{pauseSignal:c.signal}:{}};if(s===0){let n=e.map((e,n)=>Ar(e,n,t,d,r,i,a,o,f));return Promise.all(l?n.map(e=>kr(e,c)):n)}let p=Array(e.length);for(let n=0;n<e.length;n+=s){if(d.signal.aborted){for(let t=n;t<e.length;t++)p[t]={status:`cancelled`};break}let u=Math.min(n+s,e.length),m=[];for(let s=n;s<u;s++)m.push(Ar(e[s],s,t,d,r,i,a,o,f));let h=await Promise.all(l?m.map(e=>kr(e,c)):m);for(let e=0;e<h.length;e++)p[n+e]=h[e];if(h.some(e=>e.status===`paused`)){for(let t=u;t<e.length;t++)p[t]={status:`cancelled`};break}}return p}function kr(e,t){return e.then(e=>(e.status===`paused`&&t.abort(),e))}async function Ar(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l={...i,item:e,index:t},u=U(r.resumeFrames,n.id,{parentFrameId:o,iteration:t,statuses:Tr});if(u?.status===`completed`)return Y(u.output);let d=u??r.createFrame({nodeId:n.id,nodeType:`iterate`,path:s,parentFrameId:o,iteration:t});if(r.signal.aborted)return Er(d,c)||await $(d,r),{status:`cancelled`};u===void 0&&await X(d,r);let f;try{f=await a(n.body,r,l,d.frameId,d.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await Q(d,r,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=er(n,d.frameId,r);return await Z(d,r,e),Y(e)}case`skipped`:return await Z(d,r),Y();case`cancelled`:return Er(d,c)||await $(d,r),{status:`cancelled`};case`paused`:return f;case`failed`:return await Q(d,r,f.error),{status:`rejected`,reason:f.error}}}function jr(e){return{items:e}}const Mr=new Set([`completed`,`running`]);async function Nr(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=Qn(e.id,`iterate-chain`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:Fr([])};let c=[],l;for(let o=0;o<s.length;o++){if(t.signal.aborted)return{status:`cancelled`};let u=s[o],d=await Pr(u,o,l,e,t,n,r,i,a);switch(c.push(d),d.status){case`fulfilled`:l=d.value;break;case`rejected`:return{status:`failed`,error:d.reason};case`cancelled`:return{status:`cancelled`};case`paused`:return{status:`paused`,pausedAtGateId:d.pausedAtGateId,pausedAtFrameId:d.pausedAtFrameId}}}return{status:`completed`,output:Fr(c)}}async function Pr(e,t,n,r,i,a,o,s,c){if(i.signal.aborted)return{status:`cancelled`};let l={...a,item:e,index:t,...n!==void 0&&{previous:n}},u=U(i.resumeFrames,r.id,{parentFrameId:s,iteration:t,statuses:Mr});if(u?.status===`completed`)return Y(u.output);let d=u??i.createFrame({nodeId:r.id,nodeType:`iterate-chain`,path:c,parentFrameId:s,iteration:t});if(i.signal.aborted)return await $(d,i),{status:`cancelled`};u===void 0&&await X(d,i);let f;try{f=await o(r.body,i,l,d.frameId,d.path)}catch(e){let t=e instanceof Error?e.message:String(e);return await Q(d,i,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=er(r,d.frameId,i);return await Z(d,i,e),Y(e)}case`skipped`:return await Z(d,i),Y();case`cancelled`:return await $(d,i),{status:`cancelled`};case`paused`:return f;case`failed`:return await Q(d,i,f.error),{status:`rejected`,reason:f.error}}}function Fr(e){return{items:e}}async function X(e,t){e.status=`running`,e.startedAt=Date.now(),await t.persistFrame(e),await t.emitFrameStarted(e)}async function Z(e,t,n){let r=Date.now(),i=e.startedAt===void 0?void 0:Math.max(0,r-e.startedAt);e.status=`completed`,e.output=n,e.completedAt=r,await t.persistFrame(e),await t.emitFrameCompleted(e,i)}async function Q(e,t,n){let r=Date.now(),i=e.startedAt===void 0?void 0:Math.max(0,r-e.startedAt);e.status=`failed`,e.error=n,e.completedAt=r,await t.persistFrame(e),await t.emitFrameFailed(e,n,i)}async function Ir(e,t){e.status=`skipped`,e.completedAt=Date.now(),await t.persistFrame(e)}async function $(e,t){e.status=`cancelled`,e.completedAt=Date.now(),await t.persistFrame(e)}function Lr(e,t){return!!A(e,z(t))}async function Rr(e,t,n,r,i,a=[]){if(t.signal.aborted)return{status:`cancelled`};switch(e.type){case`sequence`:return r(e,t,n,i,a);case`station`:return Fn(e,t,n,i);case`delegate-agent`:return Ln(e,t,n,i);case`delegate-role`:return Rn(e,t,n,i);case`parallel`:return ar(e,t,n,r,i??``,a,e.mode??`all-settled`);case`gate`:return yr(e,t,n,i??``);case`iterate`:return Dr(e,t,n,r,i??``,a);case`iterate-chain`:return Nr(e,t,n,r,i??``,a);default:return{status:`failed`,error:`Unknown node type: ${String(e.type)}`}}}const zr=new Set([`completed`,`skipped`,`waiting`,`running`]);function Br(e){return e.type===`parallel`||e.type===`iterate`||e.type===`iterate-chain`}function Vr(e,t,n){return U(e.resumeFrames,t.id,{parentFrameId:n,...Br(t)?{statuses:zr}:{}})}function Hr(e,t,n){if(n?.status===`completed`)return W(e,t.id,{status:`completed`,...n.output===void 0?{}:{output:n.output}});if(n?.status===`skipped`)return W(e,t.id,{status:`skipped`})}async function Ur(e,t,n,r,i,a,o){try{return{result:Lr(e,i)}}catch(e){let i=e instanceof Error?e.message:String(e);return await Q(r.createFrame({nodeId:n.id,nodeType:n.type,path:a,parentFrameId:o}),r,`'${t}' condition evaluation failed: ${i}`),{status:`failed`,error:`'${t}' condition evaluation failed for '${n.id}': ${i}`}}}async function Wr(e,t,n,r,i,a){let o=a??t.createFrame({nodeId:e.id,nodeType:e.type,path:r,parentFrameId:i});if(t.signal.aborted)return await $(o,t),{updatedCtx:n,outcome:{status:`cancelled`}};a===void 0&&await X(o,t);let s;try{s=await Rr(e,t,n,Gr,o.frameId,o.path)}catch(e){let r=e instanceof Error?e.message:String(e);return await Q(o,t,r),{updatedCtx:n,outcome:{status:`failed`,error:r}}}switch(s.status){case`completed`:return await Z(o,t,s.output),{updatedCtx:W(n,e.id,{status:`completed`,output:s.output})};case`skipped`:return await Ir(o,t),{updatedCtx:W(n,e.id,{status:`skipped`})};case`cancelled`:return await $(o,t),{updatedCtx:n,outcome:{status:`cancelled`}};case`paused`:return{updatedCtx:n,outcome:s};case`failed`:return await Q(o,t,s.error),{updatedCtx:n,outcome:{status:`failed`,error:s.error}}}}async function Gr(e,t,n,r,i=[]){let a=n;for(let n of e.nodes){if(t.signal.aborted)return{status:`cancelled`};let e=Vr(t,n,r),o=Hr(a,n,e);if(o!==void 0){a=o;continue}if(n.when!==void 0){let e=await Ur(n.when,`when`,n,t,a,i,r);if(`status`in e)return e;if(!e.result){await Ir(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=W(a,n.id,{status:`skipped`});continue}}if(n.skip!==void 0){let e=await Ur(n.skip,`skip`,n,t,a,i,r);if(`status`in e)return e;if(e.result){await Ir(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=W(a,n.id,{status:`skipped`});continue}}let s=e?.status===`waiting`&&n.type===`gate`||e?.status===`running`&&Br(n)?e:void 0,{updatedCtx:c,outcome:l}=await Wr(n,t,a,i,r,s);if(a=c,l!==void 0)return l}return{status:`completed`}}export{Ue as A,Le as B,ye as C,Oe as D,ke as E,we as F,Re as G,Fe as H,je as I,E as J,Ne as K,Ae as L,xe as M,M as N,Ve as O,Te as P,De as R,be as S,Se as T,Pe as U,Ie as V,ze as W,lt as _,dn as a,Ge as b,an as c,Ft as d,Ot as f,ft as g,L as h,vn as i,He as j,Be as k,tn as l,ht as m,pr as n,Vt as o,_t as p,Me as q,tr as r,en as s,Gr as t,Bt as u,et as v,Ce as w,N as x,qe as y,Ee as z};
|
|
@@ -78,7 +78,7 @@ declare const ProviderRecordSchema: z.ZodObject<{
|
|
|
78
78
|
"show-all": "show-all";
|
|
79
79
|
}>;
|
|
80
80
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
81
|
-
capabilities: z.ZodOptional<z.
|
|
81
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
82
82
|
enabled: z.ZodBoolean;
|
|
83
83
|
createdAt: z.ZodNumber;
|
|
84
84
|
updatedAt: z.ZodNumber;
|
|
@@ -168,7 +168,7 @@ declare const ProviderStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
168
168
|
"show-all": "show-all";
|
|
169
169
|
}>;
|
|
170
170
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
171
|
-
capabilities: z.ZodOptional<z.
|
|
171
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
172
172
|
enabled: z.ZodBoolean;
|
|
173
173
|
createdAt: z.ZodNumber;
|
|
174
174
|
updatedAt: z.ZodNumber;
|
|
@@ -247,7 +247,7 @@ declare const ProviderStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
247
247
|
"show-all": "show-all";
|
|
248
248
|
}>;
|
|
249
249
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
250
|
-
capabilities: z.ZodOptional<z.
|
|
250
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
251
251
|
enabled: z.ZodBoolean;
|
|
252
252
|
createdAt: z.ZodNumber;
|
|
253
253
|
updatedAt: z.ZodNumber;
|
|
@@ -331,7 +331,7 @@ declare const ProviderStorageNamespace: _$_makaio_storage_core0.StorageNamespace
|
|
|
331
331
|
"show-all": "show-all";
|
|
332
332
|
}>;
|
|
333
333
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
334
|
-
capabilities: z.ZodOptional<z.
|
|
334
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
335
335
|
enabled: z.ZodBoolean;
|
|
336
336
|
createdAt: z.ZodNumber;
|
|
337
337
|
updatedAt: z.ZodNumber;
|
|
@@ -414,7 +414,7 @@ declare const ProviderStorageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
|
|
|
414
414
|
"show-all": "show-all";
|
|
415
415
|
}>;
|
|
416
416
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
417
|
-
capabilities: z.ZodOptional<z.
|
|
417
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
418
418
|
enabled: z.ZodBoolean;
|
|
419
419
|
createdAt: z.ZodNumber;
|
|
420
420
|
updatedAt: z.ZodNumber;
|
|
@@ -493,7 +493,7 @@ declare const ProviderStorageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
|
|
|
493
493
|
"show-all": "show-all";
|
|
494
494
|
}>;
|
|
495
495
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
496
|
-
capabilities: z.ZodOptional<z.
|
|
496
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
497
497
|
enabled: z.ZodBoolean;
|
|
498
498
|
createdAt: z.ZodNumber;
|
|
499
499
|
updatedAt: z.ZodNumber;
|
|
@@ -577,7 +577,7 @@ declare const ProviderStorageSubjects: _$_makaio_core0.BusSubjects<_$_makaio_cor
|
|
|
577
577
|
"show-all": "show-all";
|
|
578
578
|
}>;
|
|
579
579
|
credentialEnvVars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
580
|
-
capabilities: z.ZodOptional<z.
|
|
580
|
+
capabilities: z.ZodOptional<z.ZodType<Record<string, unknown>, Record<string, unknown>, z.core.$ZodTypeInternals<Record<string, unknown>, Record<string, unknown>>>>;
|
|
581
581
|
enabled: z.ZodBoolean;
|
|
582
582
|
createdAt: z.ZodNumber;
|
|
583
583
|
updatedAt: z.ZodNumber;
|
|
@@ -116,7 +116,8 @@ import{fileURLToPath as e}from"node:url";import{sql as t}from"drizzle-orm";impor
|
|
|
116
116
|
s.summary,
|
|
117
117
|
s.summary_updated_at,
|
|
118
118
|
s.fork_transforms,
|
|
119
|
-
s.target_working_directory
|
|
119
|
+
s.target_working_directory,
|
|
120
|
+
s.metadata
|
|
120
121
|
FROM sessions s
|
|
121
122
|
WHERE (
|
|
122
123
|
s.session_id IN (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RuntimeSubjects } from "./bus/runtime/namespace.mjs";
|
|
2
2
|
import { a as FilesystemDescriptorDiscovery, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, t as DiscoveredExtension } from "../extension-discovery-Bv5FDtrM.mjs";
|
|
3
3
|
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-CQqw0Smr.mjs";
|
|
4
|
-
import { A as DatabaseBootOptions, B as NodeFrameworkModuleResolver, C as ServerTransportProvider, D as WorkflowWorkerEntryMode, E as WorkflowRunnerBootOptions, F as normalizeNodeHostCapabilities, G as HttpContributionPhase, H as resolveFrameworkSpecifier, I as selectFrameworkCorePackages, J as HonoRouteGraphOptions, K as HttpRouteContribution, L as ShutdownStep, M as InitializeNodeDatabaseResult, N as initializeNodeDatabase, O as WorkflowWorkerEntryResolverOptions, P as HostCapabilityDeclaration, R as BridgeBrowserOptions, S as MakaioRuntime, T as UpstreamTelemetryBootOptions, U as HttpRouteGraphBuilder, V as NoopFrameworkModuleResolver, W as createHttpRouteGraphBuilder, Y as createHonoRouteGraph, _ as ThinWorkflowPiscinaRunnerOptions, a as InProcessWorkflowRunnerOptions, b as BootMakaioRuntimeOptions, h as IWorkflowRunner, i as InProcessWorkflowRunner, j as InitializeNodeDatabaseOptions, k as resolveWorkflowWorkerEntry, m as ThinWorkflowPiscinaRunner, q as HonoRouteGraph, v as WorkflowRunResult, w as TransportReadyInfo, x as CoreBootOptions, y as BootCoordinatorSetupContext, z as FrameworkModuleResolver } from "../index-
|
|
4
|
+
import { A as DatabaseBootOptions, B as NodeFrameworkModuleResolver, C as ServerTransportProvider, D as WorkflowWorkerEntryMode, E as WorkflowRunnerBootOptions, F as normalizeNodeHostCapabilities, G as HttpContributionPhase, H as resolveFrameworkSpecifier, I as selectFrameworkCorePackages, J as HonoRouteGraphOptions, K as HttpRouteContribution, L as ShutdownStep, M as InitializeNodeDatabaseResult, N as initializeNodeDatabase, O as WorkflowWorkerEntryResolverOptions, P as HostCapabilityDeclaration, R as BridgeBrowserOptions, S as MakaioRuntime, T as UpstreamTelemetryBootOptions, U as HttpRouteGraphBuilder, V as NoopFrameworkModuleResolver, W as createHttpRouteGraphBuilder, Y as createHonoRouteGraph, _ as ThinWorkflowPiscinaRunnerOptions, a as InProcessWorkflowRunnerOptions, b as BootMakaioRuntimeOptions, h as IWorkflowRunner, i as InProcessWorkflowRunner, j as InitializeNodeDatabaseOptions, k as resolveWorkflowWorkerEntry, m as ThinWorkflowPiscinaRunner, q as HonoRouteGraph, v as WorkflowRunResult, w as TransportReadyInfo, x as CoreBootOptions, y as BootCoordinatorSetupContext, z as FrameworkModuleResolver } from "../index-ByRAbcZd.mjs";
|
|
5
5
|
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";
|
|
6
6
|
import { IConfigStorage } from "@makaio/framework/core";
|
|
7
7
|
import { BusTransport, IMakaioBus } from "@makaio/framework/bus";
|
|
@@ -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-ClOD8k8c.mjs";import{RuntimeNamespace as i,RuntimeSubjects as a}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as o,FilesystemDescriptorDiscovery as s}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as c,MAKAIO_HOME_ENV as l,buildConfiguredRuntimeOptions as u,createMakaioConfigDiscovery as d,defineMakaioConfig as f,loadMakaioConfig as p,parseMakaioConfig as m,resolveMakaioConfigPath as h,resolveMakaioHome as g,shouldIncludeExtension as _}from"./makaio-config.mjs";import{t as v}from"../descriptor-to-package-D-FNxohm.mjs";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"../load-extensions-D-DyzN4j.mjs";import{i as ee,o as te,r as ne,s as re,t as ie}from"../workflow-worker-CjuRYLmJ.mjs";import{createRequire as ae}from"node:module";import{z as D}from"zod";import{execFile as oe}from"node:child_process";import{promisify as se}from"node:util";import{fileURLToPath as ce,pathToFileURL as O}from"node:url";import*as k from"node:fs/promises";import*as A from"node:path";import j from"node:path";import*as M from"node:crypto";import{createHash as N}from"node:crypto";import*as P from"node:fs";import{existsSync as F,readFileSync as le}from"node:fs";import{createBusNamespace as ue}from"@makaio/framework/core";import{ChannelClosedError as de,MakaioBus as fe,openChannel as pe,projectSubjectTelemetryFacts as me}from"@makaio/framework/bus";import{AIModelSchema as he,AdapterSubjects as ge,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as _e,ConfigSchema as I,ConfigSubjects as L,CredentialSubjects as ve,FrameworkContractNamespaces as ye,FrameworkStorageNamespaces as be,SubjectTelemetrySubjects as xe,isDetachedDescriptor as Se,registerWorkerNodeProvider as Ce,safeParseExtensionDescriptor as we,unregisterWorkerNodeProvider as Te,versionSatisfies as Ee}from"@makaio/framework/contracts";import{DispatchingAuth as De,E2EAuth as Oe,HmacAuth as ke,WebSocketClientTransport as Ae}from"@makaio/framework/node/transports";import{BaseService as je}from"@makaio/framework/service-base";import{uniqueIndex as Me}from"drizzle-orm/sqlite-core";import{uniqueIndex as Ne}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as Pe,defineDialectSchema as Fe,defineDualTable as Ie,findStorageEngine as Le,getDatabaseDialect as Re,getRawSqlExecutor as ze,getStorageEngine as Be,registerDrizzleHandlers as Ve,registerStorageEngine as He,resolveSchema as Ue,resolveStorageEngine as We,resolveStorageEngineForUrl as Ge}from"@makaio/framework/storage/drizzle";import{and as Ke,eq as R,sql as z}from"drizzle-orm";import{parseStoredCredentialRef as qe}from"@makaio/framework/contracts/config";import{AdapterRuntimeSubjects as Je,registerAdapterRuntimeIdentityHandlers as Ye}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as Xe}from"@makaio/framework/services/provider-context";import*as Ze from"node:os";import{ProviderStorageSubjects as Qe}from"@makaio/framework/services/settings/storage";import{isRecord as $e}from"@makaio/framework/utils";import{AdapterSubsystemSubjects as et}from"@makaio/framework/services/adapter-subsystem";import{BootNamespace as tt,ExtensionCoordinator as nt,ExtensionNamespace as rt,KernelNamespace as it,coalesceExtensionOverrides as at,createShutdownSequence as ot,filterEligibleExtensions as st}from"@makaio/framework/kernel";import{CachedRegistryFetcher as ct,FallbackRegistryFetcher as lt,ModelRegistrySchema as ut,ProviderModelOverrideSchema as dt,mergeModelMetadata as ft}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as pt}from"@makaio/framework/clients";import{Readable as mt,Transform as ht}from"node:stream";import{pipeline as gt}from"node:stream/promises";import{createDatabaseClient as _t}from"@makaio/framework/storage/drizzle/client";import{AdapterSubsystemToken as vt,FileAdapterConfigRepository as yt,createAdapterSubsystemContributionProcessor as bt,createAdapterSubsystemPackage as xt}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as St,loadOrCreateMachineIdentity as Ct,machineKeysExist as wt,validateMachineKeys as Tt}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as Et}from"@makaio/framework/utils/workspace-root";import{Hono as Dt}from"hono";import{CliNamespace as Ot}from"@makaio/framework/kernel/cli";import{startBusServer as kt}from"@makaio/framework/node/bus-server";import{WebSocketServer as At}from"ws";import{ConfigProvider as jt}from"@makaio/framework/providers";import{KernelSubjects as B}from"@makaio/framework/kernel/namespace";import{FrameworkServicesCoreNamespaces as Mt,SessionOrchestratorToken as Nt,createArtifactKindContributionProcessor as Pt,createArtifactLifecycleHookContributionProcessor as Ft,createFacetNamespaceContributionProcessor as It,createModelRegistryPackage as Lt,createSurfaceBindingContributionProcessor as Rt,createToolContributionProcessor as zt,createTransitionContributionProcessor as Bt,createWorkflowBlockContributionProcessor as Vt,frameworkCorePackages as Ht}from"@makaio/framework/services";import{createLogImportContributionProcessor as Ut,logImportRegistryPackage as Wt}from"@makaio/framework/services/log-import";import{createWorkflowEnginePackage as Gt}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Kt,PreferencesSubjects as qt}from"@makaio/framework/services/preferences";import{resolveConnectorCredentials as Jt,resolveCredentialRef as Yt}from"@makaio/framework/adapters/config";import{DefinitionSubjects as Xt}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as Zt}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as Qt}from"@makaio/framework/services/settings/namespace";import{parseWorkspaceGlobs as $t}from"@makaio/framework/utils/workspace-packages";import{serveStatic as en}from"@hono/node-server/serve-static";function tn(e){return e.on(ge.getCapabilities,async t=>{let{adapterName:n,adapterId:r}=t.payload;if(r){await t.next();return}if(n){let r=await e.requestOptional(Je.resolveId,{adapterName:n}),i=r.handled?r.data.adapterId:void 0;i&&(t.payload.adapterId=i)}await t.next()},{priority:20})}function nn(e){let{coordinator:t,configRepository:n,platformDefaults:r}=e,i=xt({configRepository:n,coordinator:t,platformDefaults:r});return t.registerContributionProcessor(bt({getAdapterSubsystemService:()=>t.getExtensionService(vt)})),{adapterSubsystemPackage:i}}function rn(e){let{bus:t,currentMachineId:n}=e,r=Ye(t,{currentMachineId:n,listKnownAdapterNames:e.listKnownAdapterNames??(async()=>{let{configs:e}=await t.request(et.listAdapterConfigs,{});return e.map(e=>e.name)})}),i=tn(t);return{cleanup:()=>{r.cleanup(),i()}}}function an(e=`sqlite`){let{migrations:t}=Be(e);return t.resolveSourceChainDir?.()??j.resolve(import.meta.dirname,`..`,t.chainDirName)}var on=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 sn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??an(t),r=j.join(n,`meta`,`_journal.json`);if(!F(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(le(r,`utf-8`));if(t!==void 0){let e=Be(t).migrations.journalDialect;if(i.dialect!==e)throw new on(t,e,i.dialect,r)}return i.entries.map(e=>{let t=le(j.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:N(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function cn(e){return e.replace(/--.*$/gm,``).trim()}async function ln(e,t){try{await e.run(z.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function un(e){let{migrations:t}=e.engine;if(await e.session.run(z.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await ln(e.session,{migrationsTable:e.tableName}),t}}async function dn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await un(e);try{await e.session.run(z.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(z`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(z.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await ln(e.session,{migrationsTable:e.tableName}),n}}async function fn(e,t){try{await e.session.run(z`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(z.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function pn(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(z`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(z.raw(`COMMIT`)),!0)}async function mn(e,t){await e.session.run(z.raw(`ROLLBACK`)),await un(e),!await pn(e,t)&&await fn(e,t)}async function hn(e,t){await un(e);try{if(await pn(e,t))return;for(let[n,r]of t.sql.entries())if(cn(r))try{await e.session.run(z.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 mn(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 fn(e,t)}catch(n){throw await ln(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function gn(e,t,n){let r=ze(e),i=Be(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:z.identifier(a)},r=await dn(n);for(let e of t)r.has(e.hash)||(await hn(n,e),r.add(e.hash))})}async function _n(e,t={}){await gn(e,sn({migrationsDir:t.migrationsDir,expectedDialect:Re(e)})),await We(e).fts.provisionSearchIndex(e)}var vn=class{configPath;constructor(e){this.configPath=A.join(e,`config.json`)}async getConfig(){try{let e=await k.readFile(this.configPath,`utf-8`);return I.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return I.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),I.parse({});throw e}}async saveConfig(e){let t=A.dirname(this.configPath);await k.mkdir(t,{recursive:!0}),await k.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await k.chmod(this.configPath,384)}};function yn(e){try{let t=A.resolve(Et(e),`static/model-registry.yaml`);return F(t)?t:void 0}catch{return}}async function bn(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 xn(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 Sn(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 Cn=[`extension`,`static-fallback`];function wn(e){let t=[];function n(e){let t=new Dt,n=[...e].sort((e,t)=>Cn.indexOf(e.phase)-Cn.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 Tn(e,t){if(!(e instanceof Error))return!1;let{rootPackageName:n,subpath:r}=Dn(t),i=(r===void 0?[t]:[t,n]).flatMap(e=>[`Cannot find package '${e}'`,`Cannot find module '${e}'`,`Cannot find package "${e}"`,`Cannot find module "${e}"`]),a=e;return(a.code===`ERR_MODULE_NOT_FOUND`||a.code===`MODULE_NOT_FOUND`)&&i.some(t=>e.message.includes(t))||a.code===`ERR_PACKAGE_PATH_NOT_EXPORTED`&&r!==void 0&&e.message.includes(`Package subpath '${r}' is not defined by "exports"`)&&On(e.message,n)?!0:i.some(t=>e.message.includes(t))}async function En(e){try{return await import(e)}catch(t){if(Tn(t,e))return null;throw t}}function Dn(e){let t=e.split(`/`);return e.startsWith(`@`)?{rootPackageName:t.slice(0,2).join(`/`),subpath:t.length>2?`./${t.slice(2).join(`/`)}`:void 0}:{rootPackageName:t[0]??e,subpath:t.length>1?`./${t.slice(1).join(`/`)}`:void 0}}function On(e,t){let n=t,r=t.replaceAll(`/`,`\\`);return e.includes(`/${n}/package.json`)||e.includes(`\\${r}\\package.json`)}function kn(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function An(e,t){return(n,r,i)=>{if(!kn(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var jn=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 De?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 At({noServer:!0});this.websocketServer=t;let n=An(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await kt({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)}},Mn=class extends jt{keysDir;constructor(e,t){super(e),this.keysDir=A.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 M.randomBytes(32).toString(`base64`)}async getMachineId(){return(await Ct(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function Nn(e,t){return{extensions:e.discovery??new s(void 0,{extensionsDir:j.join(t,`extensions`),nodeModulesDir:j.join(t,`node_modules`)})}}function Pn(e){return F(j.join(e,`meta`,`_journal.json`))}function Fn(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=an}=t,i=Be(e).migrations.chainDirName,a=[],o=j.resolve(n,`..`,i);if(Pn(o))return o;a.push(o);try{let t=r(e);if(Pn(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 In(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Ln(e){return e===void 0||e.trim()===``?void 0:e}function Rn(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 zn(e,t,n){let r;try{r=await import(O(ae(A.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.`);Le(e.dialect)===void 0&&He(i)}async function Bn(e){let t=Ln(e.database?.url),n=t??Ln(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=Ge(n);if(i.kind===`missing-engine`&&(await zn(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Ge(n)),i.kind!==`engine`){let e=Pe.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Rn(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=A.resolve(Ln(e.dbPath)??Ln(process.env.MAKAIO_DATABASE_PATH)??A.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:O(r).href}}async function Vn(e){for(let t of e.database?.engines??[])He(t);let t=await Bn(e);if(t.kind===`url`){let n=await _t({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Fn(t.dialect);return await _n(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=A.dirname(n);await P.promises.mkdir(r,{recursive:!0});let i=await _t({url:t.url});try{await _n(i.db,{migrationsDir:e.migrationsDir});try{await P.promises.chmod(n,384)}catch(e){if(!In(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 Hn=D.object({npmName:D.string(),version:D.string(),source:D.enum([`new`,`upgraded`,`already-present`])}),Un=D.object({npmName:D.string(),reason:D.string()}),Wn=D.object({success:D.boolean(),packageName:D.string(),version:D.string().optional(),restartRequired:D.boolean(),error:D.string().optional(),installed:D.array(Hn).optional(),skipped:D.array(Un).optional(),warnings:D.array(D.string()).optional()}),Gn=D.object({success:D.boolean(),packageName:D.string(),error:D.string().optional(),restartRequired:D.boolean()}),Kn=D.object({name:D.string(),version:D.string(),description:D.string().optional(),hasDescriptor:D.boolean().default(!1),serverImportPath:D.string().min(1).optional()}),qn=D.object({packageName:D.string(),latestVersion:D.string(),success:D.boolean(),error:D.string().optional()}),Jn=D.object({name:D.string(),displayName:D.string(),description:D.string(),icon:D.string().optional(),tags:D.array(D.string()).optional(),descriptorName:D.string().min(1).optional()}),Yn=D.object({$schema:D.string(),updatedAt:D.string(),adapters:D.array(Jn),extensions:D.array(Jn)}),Xn=D.object({name:D.string(),currentVersion:D.string(),latestVersion:D.string(),description:D.string().optional()}),Zn=ue(`packages`,{list:{request:D.object({}),response:D.object({packages:D.array(Kn)})},install:{request:D.object({packageName:D.string().optional(),packageNames:D.array(D.string()).min(1).optional(),source:D.enum([`npm`,`local`]).optional(),force:D.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Wn},uninstall:{request:D.object({packageName:D.string()}),response:Gn},getLatestVersion:{request:D.object({packageName:D.string()}),response:qn},getRegistry:{request:D.object({}),response:Yn},checkUpdates:{request:D.object({}),response:D.object({updates:D.array(Xn)})},installed:D.object({packageName:D.string(),version:D.string()}),uninstalled:D.object({packageName:D.string()})}),V=Zn.subjects;async function Qn(e,t,n){if(!A.isAbsolute(e))return;let r;try{r=await k.realpath(e)}catch{return}let i=$n(t,n),a=[A.resolve(r,`src`,`${i}.ts`),A.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await er(e);if(t!==void 0&&tr(t,r))return t}}function $n(e,t){return t===!0?e:t}async function er(e){try{return await k.realpath(e)}catch{return}}function tr(e,t){let n=A.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!A.isAbsolute(n)}var nr=class{extensionsDir;constructor(e){this.extensionsDir=A.resolve(e)}async install(e){try{let t=A.resolve(e.endsWith(`descriptor.json`)?A.dirname(e):e),n=await k.realpath(t),r=await this.readDescriptor(n);Se(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await k.mkdir(A.dirname(i),{recursive:!0});try{if((await k.lstat(i)).isSymbolicLink())await k.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 k.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 k.unlink(t),e.startsWith(`@`)){let e=A.dirname(t);(await k.readdir(e).catch(()=>null))?.length===0&&await k.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 k.access(this.extensionsDir)}catch{return[]}let e=await k.readdir(this.extensionsDir),t=[];for(let n of e){let e=A.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await k.readdir(e).catch(()=>[]);for(let r of n){let n=A.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 k.lstat(e)).isSymbolicLink())return null;let t=await k.readlink(e),n=await k.realpath(A.resolve(A.dirname(e),t)),r=A.join(n,`descriptor.json`),i=await k.readFile(r,`utf-8`),a=we(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Qn(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=A.join(e,`descriptor.json`),n=await k.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=we(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 Qn(e,t,n)===void 0){let e=$n(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=A.resolve(this.extensionsDir,...e.split(`/`)),n=A.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||A.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const rr=`nodeLinker: node-modules`,ir=/^[A-Za-z]:[\\/]/;let ar=null;function H(){return ar||(ar=Promise.all([import(`../lib-DkLlhp9Z.mjs`).then(e=>t(e.t(),1)),import(`../lib-BmcGxHXH.mjs`).then(e=>t(e.t(),1)),import(`../lib-jOuIcSs9.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})),ar)}var or=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await H(),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=dr(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 H(),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 H();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 H(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await H(),{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 H(),{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 H(),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=lr(e);try{let{structUtils:e}=await H(),{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 Qn(A.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await k.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||fr(e))return null;throw e}let r=we(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=A.join(this.makaioHome,`package.json`),t;try{let n=await k.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(fr(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=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await k.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=A.join(this.makaioHome,`package.json`),t=await k.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=A.join(this.makaioHome,`package.json`);await k.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 H(),{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 sr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function cr(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 lr(e){return e.localPackagePath?`portal:${ur(e.localPackagePath)}`:e.versionRange}function ur(e){let t=(ir.test(e)?e:A.resolve(e)).replace(/\\/g,`/`);return ir.test(t)?`/${t}`:t}function dr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,rr):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-ClOD8k8c.mjs";import{RuntimeNamespace as i,RuntimeSubjects as a}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as o,FilesystemDescriptorDiscovery as s}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as c,MAKAIO_HOME_ENV as l,buildConfiguredRuntimeOptions as u,createMakaioConfigDiscovery as d,defineMakaioConfig as f,loadMakaioConfig as p,parseMakaioConfig as m,resolveMakaioConfigPath as h,resolveMakaioHome as g,shouldIncludeExtension as _}from"./makaio-config.mjs";import{t as v}from"../descriptor-to-package-D-FNxohm.mjs";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"../load-extensions-D-DyzN4j.mjs";import{i as ee,o as te,r as ne,s as re,t as ie}from"../workflow-worker-DMFhz1q_.mjs";import{createRequire as ae}from"node:module";import{z as D}from"zod";import{execFile as oe}from"node:child_process";import{promisify as se}from"node:util";import{fileURLToPath as ce,pathToFileURL as O}from"node:url";import*as k from"node:fs/promises";import*as A from"node:path";import j from"node:path";import*as M from"node:crypto";import{createHash as N}from"node:crypto";import*as P from"node:fs";import{existsSync as F,readFileSync as le}from"node:fs";import{createBusNamespace as ue}from"@makaio/framework/core";import{ChannelClosedError as de,MakaioBus as fe,openChannel as pe,projectSubjectTelemetryFacts as me}from"@makaio/framework/bus";import{AIModelSchema as he,AdapterSubjects as ge,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as _e,ConfigSchema as I,ConfigSubjects as L,CredentialSubjects as ve,FrameworkContractNamespaces as ye,FrameworkStorageNamespaces as be,SubjectTelemetrySubjects as xe,isDetachedDescriptor as Se,registerWorkerNodeProvider as Ce,safeParseExtensionDescriptor as we,unregisterWorkerNodeProvider as Te,versionSatisfies as Ee}from"@makaio/framework/contracts";import{DispatchingAuth as De,E2EAuth as Oe,HmacAuth as ke,WebSocketClientTransport as Ae}from"@makaio/framework/node/transports";import{BaseService as je}from"@makaio/framework/service-base";import{uniqueIndex as Me}from"drizzle-orm/sqlite-core";import{uniqueIndex as Ne}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as Pe,defineDialectSchema as Fe,defineDualTable as Ie,findStorageEngine as Le,getDatabaseDialect as Re,getRawSqlExecutor as ze,getStorageEngine as Be,registerDrizzleHandlers as Ve,registerStorageEngine as He,resolveSchema as Ue,resolveStorageEngine as We,resolveStorageEngineForUrl as Ge}from"@makaio/framework/storage/drizzle";import{and as Ke,eq as R,sql as z}from"drizzle-orm";import{parseStoredCredentialRef as qe}from"@makaio/framework/contracts/config";import{AdapterRuntimeSubjects as Je,registerAdapterRuntimeIdentityHandlers as Ye}from"@makaio/framework/services/adapter-runtime";import{buildProviderContext as Xe}from"@makaio/framework/services/provider-context";import*as Ze from"node:os";import{ProviderStorageSubjects as Qe}from"@makaio/framework/services/settings/storage";import{isRecord as $e}from"@makaio/framework/utils";import{AdapterSubsystemSubjects as et}from"@makaio/framework/services/adapter-subsystem";import{BootNamespace as tt,ExtensionCoordinator as nt,ExtensionNamespace as rt,KernelNamespace as it,coalesceExtensionOverrides as at,createShutdownSequence as ot,filterEligibleExtensions as st}from"@makaio/framework/kernel";import{CachedRegistryFetcher as ct,FallbackRegistryFetcher as lt,ModelRegistrySchema as ut,ProviderModelOverrideSchema as dt,mergeModelMetadata as ft}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as pt}from"@makaio/framework/clients";import{Readable as mt,Transform as ht}from"node:stream";import{pipeline as gt}from"node:stream/promises";import{createDatabaseClient as _t}from"@makaio/framework/storage/drizzle/client";import{AdapterSubsystemToken as vt,FileAdapterConfigRepository as yt,createAdapterSubsystemContributionProcessor as bt,createAdapterSubsystemPackage as xt}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as St,loadOrCreateMachineIdentity as Ct,machineKeysExist as wt,validateMachineKeys as Tt}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as Et}from"@makaio/framework/utils/workspace-root";import{Hono as Dt}from"hono";import{CliNamespace as Ot}from"@makaio/framework/kernel/cli";import{startBusServer as kt}from"@makaio/framework/node/bus-server";import{WebSocketServer as At}from"ws";import{ConfigProvider as jt}from"@makaio/framework/providers";import{KernelSubjects as B}from"@makaio/framework/kernel/namespace";import{FrameworkServicesCoreNamespaces as Mt,SessionOrchestratorToken as Nt,createArtifactKindContributionProcessor as Pt,createArtifactLifecycleHookContributionProcessor as Ft,createFacetNamespaceContributionProcessor as It,createModelRegistryPackage as Lt,createSurfaceBindingContributionProcessor as Rt,createToolContributionProcessor as zt,createTransitionContributionProcessor as Bt,createWorkflowBlockContributionProcessor as Vt,frameworkCorePackages as Ht}from"@makaio/framework/services";import{createLogImportContributionProcessor as Ut,logImportRegistryPackage as Wt}from"@makaio/framework/services/log-import";import{createWorkflowEnginePackage as Gt}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Kt,PreferencesSubjects as qt}from"@makaio/framework/services/preferences";import{resolveConnectorCredentials as Jt,resolveCredentialRef as Yt}from"@makaio/framework/adapters/config";import{DefinitionSubjects as Xt}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as Zt}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as Qt}from"@makaio/framework/services/settings/namespace";import{parseWorkspaceGlobs as $t}from"@makaio/framework/utils/workspace-packages";import{serveStatic as en}from"@hono/node-server/serve-static";function tn(e){return e.on(ge.getCapabilities,async t=>{let{adapterName:n,adapterId:r}=t.payload;if(r){await t.next();return}if(n){let r=await e.requestOptional(Je.resolveId,{adapterName:n}),i=r.handled?r.data.adapterId:void 0;i&&(t.payload.adapterId=i)}await t.next()},{priority:20})}function nn(e){let{coordinator:t,configRepository:n,platformDefaults:r}=e,i=xt({configRepository:n,coordinator:t,platformDefaults:r});return t.registerContributionProcessor(bt({getAdapterSubsystemService:()=>t.getExtensionService(vt)})),{adapterSubsystemPackage:i}}function rn(e){let{bus:t,currentMachineId:n}=e,r=Ye(t,{currentMachineId:n,listKnownAdapterNames:e.listKnownAdapterNames??(async()=>{let{configs:e}=await t.request(et.listAdapterConfigs,{});return e.map(e=>e.name)})}),i=tn(t);return{cleanup:()=>{r.cleanup(),i()}}}function an(e=`sqlite`){let{migrations:t}=Be(e);return t.resolveSourceChainDir?.()??j.resolve(import.meta.dirname,`..`,t.chainDirName)}var on=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 sn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??an(t),r=j.join(n,`meta`,`_journal.json`);if(!F(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(le(r,`utf-8`));if(t!==void 0){let e=Be(t).migrations.journalDialect;if(i.dialect!==e)throw new on(t,e,i.dialect,r)}return i.entries.map(e=>{let t=le(j.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:N(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function cn(e){return e.replace(/--.*$/gm,``).trim()}async function ln(e,t){try{await e.run(z.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function un(e){let{migrations:t}=e.engine;if(await e.session.run(z.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await ln(e.session,{migrationsTable:e.tableName}),t}}async function dn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await un(e);try{await e.session.run(z.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(z`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(z.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await ln(e.session,{migrationsTable:e.tableName}),n}}async function fn(e,t){try{await e.session.run(z`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(z.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function pn(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(z`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(z.raw(`COMMIT`)),!0)}async function mn(e,t){await e.session.run(z.raw(`ROLLBACK`)),await un(e),!await pn(e,t)&&await fn(e,t)}async function hn(e,t){await un(e);try{if(await pn(e,t))return;for(let[n,r]of t.sql.entries())if(cn(r))try{await e.session.run(z.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 mn(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 fn(e,t)}catch(n){throw await ln(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function gn(e,t,n){let r=ze(e),i=Be(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:z.identifier(a)},r=await dn(n);for(let e of t)r.has(e.hash)||(await hn(n,e),r.add(e.hash))})}async function _n(e,t={}){await gn(e,sn({migrationsDir:t.migrationsDir,expectedDialect:Re(e)})),await We(e).fts.provisionSearchIndex(e)}var vn=class{configPath;constructor(e){this.configPath=A.join(e,`config.json`)}async getConfig(){try{let e=await k.readFile(this.configPath,`utf-8`);return I.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return I.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),I.parse({});throw e}}async saveConfig(e){let t=A.dirname(this.configPath);await k.mkdir(t,{recursive:!0}),await k.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await k.chmod(this.configPath,384)}};function yn(e){try{let t=A.resolve(Et(e),`static/model-registry.yaml`);return F(t)?t:void 0}catch{return}}async function bn(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 xn(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 Sn(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 Cn=[`extension`,`static-fallback`];function wn(e){let t=[];function n(e){let t=new Dt,n=[...e].sort((e,t)=>Cn.indexOf(e.phase)-Cn.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 Tn(e,t){if(!(e instanceof Error))return!1;let{rootPackageName:n,subpath:r}=Dn(t),i=(r===void 0?[t]:[t,n]).flatMap(e=>[`Cannot find package '${e}'`,`Cannot find module '${e}'`,`Cannot find package "${e}"`,`Cannot find module "${e}"`]),a=e;return(a.code===`ERR_MODULE_NOT_FOUND`||a.code===`MODULE_NOT_FOUND`)&&i.some(t=>e.message.includes(t))||a.code===`ERR_PACKAGE_PATH_NOT_EXPORTED`&&r!==void 0&&e.message.includes(`Package subpath '${r}' is not defined by "exports"`)&&On(e.message,n)?!0:i.some(t=>e.message.includes(t))}async function En(e){try{return await import(e)}catch(t){if(Tn(t,e))return null;throw t}}function Dn(e){let t=e.split(`/`);return e.startsWith(`@`)?{rootPackageName:t.slice(0,2).join(`/`),subpath:t.length>2?`./${t.slice(2).join(`/`)}`:void 0}:{rootPackageName:t[0]??e,subpath:t.length>1?`./${t.slice(1).join(`/`)}`:void 0}}function On(e,t){let n=t,r=t.replaceAll(`/`,`\\`);return e.includes(`/${n}/package.json`)||e.includes(`\\${r}\\package.json`)}function kn(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function An(e,t){return(n,r,i)=>{if(!kn(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var jn=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 De?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 At({noServer:!0});this.websocketServer=t;let n=An(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await kt({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)}},Mn=class extends jt{keysDir;constructor(e,t){super(e),this.keysDir=A.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 M.randomBytes(32).toString(`base64`)}async getMachineId(){return(await Ct(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function Nn(e,t){return{extensions:e.discovery??new s(void 0,{extensionsDir:j.join(t,`extensions`),nodeModulesDir:j.join(t,`node_modules`)})}}function Pn(e){return F(j.join(e,`meta`,`_journal.json`))}function Fn(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=an}=t,i=Be(e).migrations.chainDirName,a=[],o=j.resolve(n,`..`,i);if(Pn(o))return o;a.push(o);try{let t=r(e);if(Pn(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 In(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Ln(e){return e===void 0||e.trim()===``?void 0:e}function Rn(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 zn(e,t,n){let r;try{r=await import(O(ae(A.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.`);Le(e.dialect)===void 0&&He(i)}async function Bn(e){let t=Ln(e.database?.url),n=t??Ln(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=Ge(n);if(i.kind===`missing-engine`&&(await zn(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Ge(n)),i.kind!==`engine`){let e=Pe.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Rn(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=A.resolve(Ln(e.dbPath)??Ln(process.env.MAKAIO_DATABASE_PATH)??A.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:O(r).href}}async function Vn(e){for(let t of e.database?.engines??[])He(t);let t=await Bn(e);if(t.kind===`url`){let n=await _t({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Fn(t.dialect);return await _n(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=A.dirname(n);await P.promises.mkdir(r,{recursive:!0});let i=await _t({url:t.url});try{await _n(i.db,{migrationsDir:e.migrationsDir});try{await P.promises.chmod(n,384)}catch(e){if(!In(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 Hn=D.object({npmName:D.string(),version:D.string(),source:D.enum([`new`,`upgraded`,`already-present`])}),Un=D.object({npmName:D.string(),reason:D.string()}),Wn=D.object({success:D.boolean(),packageName:D.string(),version:D.string().optional(),restartRequired:D.boolean(),error:D.string().optional(),installed:D.array(Hn).optional(),skipped:D.array(Un).optional(),warnings:D.array(D.string()).optional()}),Gn=D.object({success:D.boolean(),packageName:D.string(),error:D.string().optional(),restartRequired:D.boolean()}),Kn=D.object({name:D.string(),version:D.string(),description:D.string().optional(),hasDescriptor:D.boolean().default(!1),serverImportPath:D.string().min(1).optional()}),qn=D.object({packageName:D.string(),latestVersion:D.string(),success:D.boolean(),error:D.string().optional()}),Jn=D.object({name:D.string(),displayName:D.string(),description:D.string(),icon:D.string().optional(),tags:D.array(D.string()).optional(),descriptorName:D.string().min(1).optional()}),Yn=D.object({$schema:D.string(),updatedAt:D.string(),adapters:D.array(Jn),extensions:D.array(Jn)}),Xn=D.object({name:D.string(),currentVersion:D.string(),latestVersion:D.string(),description:D.string().optional()}),Zn=ue(`packages`,{list:{request:D.object({}),response:D.object({packages:D.array(Kn)})},install:{request:D.object({packageName:D.string().optional(),packageNames:D.array(D.string()).min(1).optional(),source:D.enum([`npm`,`local`]).optional(),force:D.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Wn},uninstall:{request:D.object({packageName:D.string()}),response:Gn},getLatestVersion:{request:D.object({packageName:D.string()}),response:qn},getRegistry:{request:D.object({}),response:Yn},checkUpdates:{request:D.object({}),response:D.object({updates:D.array(Xn)})},installed:D.object({packageName:D.string(),version:D.string()}),uninstalled:D.object({packageName:D.string()})}),V=Zn.subjects;async function Qn(e,t,n){if(!A.isAbsolute(e))return;let r;try{r=await k.realpath(e)}catch{return}let i=$n(t,n),a=[A.resolve(r,`src`,`${i}.ts`),A.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await er(e);if(t!==void 0&&tr(t,r))return t}}function $n(e,t){return t===!0?e:t}async function er(e){try{return await k.realpath(e)}catch{return}}function tr(e,t){let n=A.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!A.isAbsolute(n)}var nr=class{extensionsDir;constructor(e){this.extensionsDir=A.resolve(e)}async install(e){try{let t=A.resolve(e.endsWith(`descriptor.json`)?A.dirname(e):e),n=await k.realpath(t),r=await this.readDescriptor(n);Se(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await k.mkdir(A.dirname(i),{recursive:!0});try{if((await k.lstat(i)).isSymbolicLink())await k.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 k.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 k.unlink(t),e.startsWith(`@`)){let e=A.dirname(t);(await k.readdir(e).catch(()=>null))?.length===0&&await k.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 k.access(this.extensionsDir)}catch{return[]}let e=await k.readdir(this.extensionsDir),t=[];for(let n of e){let e=A.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await k.readdir(e).catch(()=>[]);for(let r of n){let n=A.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 k.lstat(e)).isSymbolicLink())return null;let t=await k.readlink(e),n=await k.realpath(A.resolve(A.dirname(e),t)),r=A.join(n,`descriptor.json`),i=await k.readFile(r,`utf-8`),a=we(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Qn(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=A.join(e,`descriptor.json`),n=await k.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=we(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 Qn(e,t,n)===void 0){let e=$n(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=A.resolve(this.extensionsDir,...e.split(`/`)),n=A.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||A.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const rr=`nodeLinker: node-modules`,ir=/^[A-Za-z]:[\\/]/;let ar=null;function H(){return ar||(ar=Promise.all([import(`../lib-B-R6VZW0.mjs`).then(e=>t(e.t(),1)),import(`../lib-BmcGxHXH.mjs`).then(e=>t(e.t(),1)),import(`../lib-BwYODPdd.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})),ar)}var or=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await H(),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=dr(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 H(),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 H();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 H(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await H(),{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 H(),{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 H(),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=lr(e);try{let{structUtils:e}=await H(),{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 Qn(A.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await k.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||fr(e))return null;throw e}let r=we(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=A.join(this.makaioHome,`package.json`),t;try{let n=await k.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(fr(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=A.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await k.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=A.join(this.makaioHome,`package.json`),t=await k.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=A.join(this.makaioHome,`package.json`);await k.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 H(),{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 sr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function cr(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 lr(e){return e.localPackagePath?`portal:${ur(e.localPackagePath)}`:e.versionRange}function ur(e){let t=(ir.test(e)?e:A.resolve(e)).replace(/\\/g,`/`);return ir.test(t)?`/${t}`:t}function dr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,rr):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
|
|
2
2
|
`:``}${rr}\n`}return`${r.join(`
|
|
3
3
|
`).trimEnd()}\n`}function fr(e){if(typeof e!=`object`||!e||!(`code`in e))return!1;let t=e.code;return t===`ENOENT`||t===`ENOTDIR`}function pr(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(`.`)||A.isAbsolute(e)||A.win32.isAbsolute(e)||t?{kind:`local`,raw:e,resolved:t?A.resolve(Ze.homedir(),e===`~`?`.`:e.slice(2)):A.resolve(e)}:{kind:`npm`,raw:e,resolved:e}}var mr=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: ${_r(e)}`)}throw e}}async runBfs(e,t){let n=await this.readInstalledIndex(),r=e.map(e=>{let t=gr(e),n=hr(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=sr(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||Ee(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&&!Ee(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 hr(e){return e.startsWith(`@`)?void 0:e}function gr(e){let t=cr(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 _r(e){return e instanceof Error?e.message:String(e)}var vr=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}},yr=class{inner;portalMap;constructor(e,t){this.inner=e,this.portalMap=t}async installPackage(e){let t=cr(e),n=this.portalMap.get(t);if(n!==void 0){let e=`${t}@portal:${ur(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)}},br=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=Yn.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}},xr=t(r(),1),Sr=`1.0.0`;function Cr(){let e=Sr;if(typeof e!=`string`||e.length===0)throw Error(`Package manager package metadata must include a string version.`);return`^${e}`}const wr=Cr();var Tr=class extends je{yarnManager;registryService;localInstaller;dependencyResolver;frameworkPeerRange;frameworkPackagePath;constructor(e,t,n={}){super(e),this.yarnManager=n.yarnManager??new or(t),this.registryService=n.registryService??new br,this.localInstaller=n.localInstaller??new nr(A.join(t,`extensions`)),this.frameworkPeerRange=n.frameworkPeerRange??wr,this.frameworkPackagePath=n.frameworkPackagePath;let r=n.devPortalPackages?.size?new yr(this.yarnManager,n.devPortalPackages):this.yarnManager;this.dependencyResolver=n.dependencyResolver??new mr(r,new vr(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(V.installed,{packageName:e,version:t})}catch(e){console.error(`[PackageManagerService] installed emit failed:`,e)}}async emitUninstalled(e){try{await this.bus.emit(V.uninstalled,{packageName:e})}catch(e){console.error(`[PackageManagerService] uninstalled emit failed:`,e)}}registerPackageHandlers(){this.registerListHandler(),this.registerInstallHandler(),this.registerUninstallHandler()}registerListHandler(){this.registerHandler(V.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(V.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=>pr(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(V.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(V.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(V.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(V.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);xr.valid(e.version)&&xr.valid(n)&&xr.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 Er(e={}){return{name:`makaio.package-manager`,displayName:`Package Manager`,version:`0.1.0`,critical:!0,namespaces:[Zn],create:t=>new Tr(t.bus,t.makaioHome,{registryService:e.registryService,dependencyResolver:e.dependencyResolver,frameworkPeerRange:e.frameworkPeerRange,frameworkPackagePath:e.frameworkPackagePath,devPortalPackages:e.devPortalPackages})}}function Dr(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 Or={resolve(e,t){return!e&&!t?null:e?t?e.updatedAt>t.updatedAt?e:t:e:t}};function kr(e){return{scope:e.scope,surface:e.surface??`any`,context:e.context??`any`,viewport:e.viewport??`any`}}function Ar(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 jr(e,t){return[`makaio:prefs`,e.scope,e.surface||`any`,e.context||`any`,e.viewport||`any`,t].join(`:`)}function Mr(e){return typeof e==`object`&&!!e&&`value`in e&&`updatedAt`in e&&typeof e.value==`string`&&typeof e.updatedAt==`number`}function Nr(e){try{let t=JSON.parse(e);return Mr(t)?t:{value:JSON.stringify(t),updatedAt:0}}catch{return null}}const Pr=Ie(`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=>[Me(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)],postgres:e=>[Ne(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)]}),Fr=Pr.sqlite,Ir=Pr.postgres,Lr=Fe({preferences:Fr},{preferences:Ir});function Rr(e,t,n){let r=[];return n!==void 0&&r.push(R(e.category,n)),t&&(t.scope!==void 0&&r.push(R(e.scope,t.scope)),t.surface!==void 0&&r.push(R(e.surface,t.surface)),t.context!==void 0&&r.push(R(e.context,t.context)),t.viewport!==void 0&&r.push(R(e.viewport,t.viewport))),r}async function zr(e,t,n){let{preferences:r}=Ue(e,Lr),i=Rr(r,t,n);return(i.length>0?await e.select().from(r).where(Ke(...i)):await e.select().from(r)).map(e=>{let t;try{t=JSON.parse(e.value)}catch{t=null}let n=Kt.safeParse(t);return{key:Ar(e),category:e.category,value:n.success?n.data:null,updatedAt:e.updatedAt}})}async function Br(e,t,n){let{preferences:r}=Ue(e,Lr),i=kr(t),[a]=await e.select().from(r).where(Ke(R(r.scope,i.scope),R(r.surface,i.surface),R(r.context,i.context),R(r.viewport,i.viewport),R(r.category,n))).limit(1);return a}var Vr=class{db;conflictResolver;constructor(e){this.db=e.db,this.conflictResolver=e.conflictResolver??Or}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=Kt.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 zr(this.db,e,t)}async writeToDb(e,t,n,r){let{preferences:i}=Ue(this.db,Lr),a=kr(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=jr(e,t),r=globalThis.localStorage?.getItem(n);return r?Nr(r):null}writeToLocalStorage(e,t,n){let r=jr(e,t);try{globalThis.localStorage?.setItem(r,JSON.stringify(n))}catch(e){console.warn(`[StorageCoordinator] localStorage write failed:`,e)}}removeFromLocalStorage(e,t){let n=jr(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 Br(this.db,e,t);return n?{value:n.value,updatedAt:n.updatedAt}:null}async deleteFromDb(e,t){let{preferences:n}=Ue(this.db,Lr),r=kr(e);await this.db.delete(n).where(Ke(R(n.scope,r.scope),R(n.surface,r.surface),R(n.context,r.context),R(n.viewport,r.viewport),R(n.category,t)))}};function Hr(e,t,n){let r=new Vr({db:t}),i=e.on(qt.get,async e=>{let{key:t,category:n}=e.payload,i=await r.get(t,n);e.setResult({value:i})}),a=e.on(qt.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(qt.delete,async e=>{let{key:t,category:n}=e.payload;await r.delete(t,n),e.setResult({success:!0})}),s=e.on(qt.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 Ur={name:`preferences-storage`,displayName:`Preferences Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:Ve(Hr)}},Wr=se(oe);function Gr(e,t){if(!e.ok)throw Error(`HTTP ${e.status} ${e.statusText} fetching ${t}`)}function Kr(e){return{fetchTimeoutMs:e.fetchTimeoutMs??3e4,downloadTimeoutMs:e.downloadTimeoutMs??6e5,execTimeoutMs:e.execTimeoutMs??12e4,extractTimeoutMs:e.extractTimeoutMs??3e5}}async function qr(e,t){try{return await fetch(e,{signal:AbortSignal.timeout(t)})}catch(n){let r=n instanceof Error?n.name:``;throw r===`AbortError`||r===`TimeoutError`?Error(`Timed out fetching ${e} after ${t}ms`,{cause:n}):n}}async function Jr(e,t,n,r){await k.mkdir(t,{recursive:!0}),n===`tar.gz`?await Wr(`tar`,[`-xzf`,e,`-C`,t],{timeout:r}).catch(n=>{throw n.code===`ENOENT`?Error(`tar extraction failed: host executable "tar" was not found on PATH`):Error(`tar extraction failed: ${e} → ${t}\nstderr: ${n.stderr??``}\n${String(n.message)}`)}):await Wr(`unzip`,[`-q`,e,`-d`,t],{timeout:r}).catch(n=>{throw n.code===`ENOENT`?Error(`zip extraction failed: host executable "unzip" was not found on PATH`):Error(`unzip extraction failed: ${e} → ${t}\nstderr: ${n.stderr??``}\n${String(n.message)}`)})}async function Yr(e,t,n,r){let{stdout:i}=await Wr(e,t,{cwd:n?.cwd,env:n?.env===void 0?process.env:{...process.env,...n.env},shell:!1,timeout:r}).catch(n=>{if(n.code===`ENOENT`)throw Error(`Command failed: host executable "${e}" was not found on PATH`);let r=n.stderr??``;throw Error(`Command failed: ${e} ${t.join(` `)}\nstderr: ${r}\n${String(n.message)}`)});return(i??``).trim()}function Xr(e={}){let{fetchTimeoutMs:t,downloadTimeoutMs:n,execTimeoutMs:r,extractTimeoutMs:i}=Kr(e);return{async fetchText(e){let n=await qr(e,t);return Gr(n,e),n.text()},async fetchJson(e){let n=await qr(e,t);return Gr(n,e),n.json()},async downloadFile(e,t,r){let i=await qr(e,n);if(Gr(i,e),i.body===null)throw Error(`Response body is null for URL: ${e}`);let a=i.headers.get(`content-length`),o=a===null?null:parseInt(a,10),s=o!==null&&!isNaN(o)?o:null;await k.mkdir(A.dirname(t),{recursive:!0});let c=P.createWriteStream(t),l=0,u=new ht({transform(e,t,n){l+=e.length,r?.(l,s),n(null,e)}});try{await gt(mt.from(i.body),u,c)}catch(e){throw await k.rm(t,{force:!0}),e}return t},exec(e,t,n){return Yr(e,t,n,r)},async extractArchive(e,t,n){await Jr(e,t,n,i)},async deleteFile(e){await k.rm(e,{force:!0})},async computeChecksum(e,t=`sha256`){return new Promise((n,r)=>{let i=N(t),a=P.createReadStream(e);a.on(`error`,r),a.on(`data`,e=>i.update(e)),a.on(`end`,()=>n(i.digest(`hex`)))})},async removeDirectory(e){await k.rm(e,{recursive:!0,force:!0})}}}function Zr(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 Qr(e,t){try{return t()}catch(t){try{Zr(e)}catch{}throw t}}function $r(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function ei(e,t,n){for(let r of t){let t=e.find(e=>e.name===r.adapterName);if(t?.providers.some(e=>e.definition.id===n))return t}}function ti(e){let{$schema:t,...n}=e;return n}function ni(e,t){let n=e.definition,r=Date.now();return{id:n.id,packageName:t,name:n.name,description:n.description,endpoints:n.endpoints,defaultModel:n.defaultModel,fastModel:n.fastModel,availableModels:n.availableModels??[],defaultModelFilterMode:`show-all`,credentialEnvVars:n.credentialEnvVars,capabilities:n.capabilities,enabled:!0,createdAt:r,updatedAt:r}}function ri(e,t,n,r){let i=[];return Qr(i,()=>(i.push(e.on(Qt.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:D.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(Xt.getCredentialSchema,({payload:e,setResult:n})=>{let r=$r(t(),e.definitionId)?.credentialSchema;if(r){n({hasSchema:!0,schema:D.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),i.push(e.on(Xt.getConfigSchema,({payload:e,setResult:n})=>{let r=$r(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:D.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(Qt.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:ti(D.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Qe.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:ni(t,r.packageName)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Qe.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(ni(t,e.packageName)));e({providers:n})},{priority:-1})),i.push(e.on(Zt.fetchModels,async({payload:r,setResult:i})=>{let{config:a}=await e.request(et.getProviderConfig,{id:r.providerConfigId});if(!a)throw Error(`Provider config '${r.providerConfigId}' not found`);let{bindings:o}=await e.request(et.listBindingsByConfig,{providerConfigId:r.providerConfigId}),s=ei(t(),o,a.definitionId);if(!s)throw Error(o.length===0?`Provider config '${r.providerConfigId}' is not bound to an adapter`:`No loaded adapter bound to provider config '${r.providerConfigId}' for definition '${a.definitionId}'`);let c=await Xe(e,r.providerConfigId),l=s.options.adapterId,u=l?n().get(l):void 0;if(!l||!u)throw Error(`Adapter instance for '${s.name}' not initialized`);if(!(`fetchModels`in u)||typeof u.fetchModels!=`function`)throw Error(`Adapter '${s.name}' does not support model fetching`);let d=await Jt(e,c.credentialRefs),f=c.endpointOverrides?Object.values(c.endpointOverrides).find(e=>e!==void 0):void 0;i({models:await u.fetchModels(f,d)})})),()=>{Zr(i)}))}function ii(e,t){let n=new Map;for(let[r,i]of e)t.has(r)&&n.set(r,i);return n}function ai(...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 oi(e,t){let n=[e.on(L.get,async e=>{let n=await t.getConfig();e.setResult({config:n})}),e.on(L.update,async e=>{let n=I.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 U=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})),si=n((e=>{var t=U();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})),ci=n((e=>{var t=U(),n=si();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(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { D as WorkflowWorkerEntryMode, O as WorkflowWorkerEntryResolverOptions, _ as ThinWorkflowPiscinaRunnerOptions, a as InProcessWorkflowRunnerOptions, c as WorkerNodeRunner, d as NodeWorkflowRunnerPackageOptions, f as createNodeWorkflowRunner, g as RuntimeLoadedWorkflow, h as IWorkflowRunner, i as InProcessWorkflowRunner, k as resolveWorkflowWorkerEntry, l as WorkerNodeRunnerOptions, m as ThinWorkflowPiscinaRunner, n as loadWorkflowModules, o as PiscinaThinWorkflowProvider, p as createNodeWorkflowRunnerPackageOptions, r as loadWorkflowFromConfig, s as PiscinaThinWorkflowProviderOptions, t as loadWorkflowModule, u as CreateNodeWorkflowRunnerPackageOptionsParams, v as WorkflowRunResult } from "../../index-
|
|
1
|
+
import { D as WorkflowWorkerEntryMode, O as WorkflowWorkerEntryResolverOptions, _ as ThinWorkflowPiscinaRunnerOptions, a as InProcessWorkflowRunnerOptions, c as WorkerNodeRunner, d as NodeWorkflowRunnerPackageOptions, f as createNodeWorkflowRunner, g as RuntimeLoadedWorkflow, h as IWorkflowRunner, i as InProcessWorkflowRunner, k as resolveWorkflowWorkerEntry, l as WorkerNodeRunnerOptions, m as ThinWorkflowPiscinaRunner, n as loadWorkflowModules, o as PiscinaThinWorkflowProvider, p as createNodeWorkflowRunnerPackageOptions, r as loadWorkflowFromConfig, s as PiscinaThinWorkflowProviderOptions, t as loadWorkflowModule, u as CreateNodeWorkflowRunnerPackageOptionsParams, v as WorkflowRunResult } from "../../index-ByRAbcZd.mjs";
|
|
2
2
|
export { CreateNodeWorkflowRunnerPackageOptionsParams, IWorkflowRunner, InProcessWorkflowRunner, InProcessWorkflowRunnerOptions, NodeWorkflowRunnerPackageOptions, PiscinaThinWorkflowProvider, PiscinaThinWorkflowProviderOptions, RuntimeLoadedWorkflow, ThinWorkflowPiscinaRunner, ThinWorkflowPiscinaRunnerOptions, WorkerNodeRunner, WorkerNodeRunnerOptions, WorkflowRunResult, WorkflowWorkerEntryMode, WorkflowWorkerEntryResolverOptions, createNodeWorkflowRunner, createNodeWorkflowRunnerPackageOptions, loadWorkflowFromConfig, loadWorkflowModule, loadWorkflowModules, resolveWorkflowWorkerEntry };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,n as t,r as n}from"../../await-trigger-
|
|
1
|
+
import{i as e,n as t,r as n}from"../../await-trigger-Cjfj0yp_.mjs";import{a as r,i,n as a,o,r as s,s as c,t as l}from"../../workflow-worker-DMFhz1q_.mjs";export{i as InProcessWorkflowRunner,l as PiscinaThinWorkflowProvider,c as ThinWorkflowPiscinaRunner,r as WorkerNodeRunner,a as createNodeWorkflowRunner,s as createNodeWorkflowRunnerPackageOptions,t as loadWorkflowFromConfig,n as loadWorkflowModule,e as loadWorkflowModules,o as resolveWorkflowWorkerEntry};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,n as t,t as n}from"../../await-trigger-
|
|
1
|
+
import{a as e,n as t,t as n}from"../../await-trigger-Cjfj0yp_.mjs";import*as r from"node:path";import{createBusInstance as i,waitForSubscriptionPropagation as a}from"@makaio/framework/bus";import{FrameworkContractNamespaces as o,FrameworkStorageNamespaces as s,WorkflowWorkerConfigSchema as c,createWorkflowCancelSubject as l}from"@makaio/framework/contracts";import{HmacAuth as u,WebSocketClientTransport as d}from"@makaio/framework/node/transports";import{parentPort as f}from"node:worker_threads";import{runWorkflowOrchestrator as p}from"@makaio/framework/workflow-engine/workflow-orchestrator";import{McpServerBridgeService as m}from"@makaio/framework/mcp-http-server";import{ToolRegistry as h}from"@makaio/framework/services/tools";async function g(e){let t=i();if(t.registerNamespaces(o),t.registerNamespaces(s),!e.busUrl)return{bus:t,close(){}};let n=e.busAuth.kind===`hmac`?new u({secret:e.busAuth.secret}):void 0,r=new d({url:e.busUrl,auth:n,autoReconnect:!1});return t.registerTransport(r),await t.connect(),{bus:t,async close(){await t.disconnect()}}}async function _(e,t){let n=new h({bus:e.bus}),r=new m(e.bus),i=async()=>{try{await r.destroy()}finally{n.dispose()}};try{await r.init();for(let e of t.toolsets)await v(n,e)}catch(e){throw await i(),e}return{close:i}}async function v(e,t){await e.register(t)}function y(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`?typeof t.tools==`object`&&t.tools!==null||Array.isArray(t.adapters):!1}function b(e,t){if(y(e.default))return e.default;for(let t of Object.keys(e))if(t!==`default`&&y(e[t]))return e[t]}function x(e){return Object.freeze({bus:e?.bus,identity:Object.freeze({extensionName:`__worker__`}),dataDir:``,machineId:``,platform:process.platform,homedir:``,makaioHome:``,username:``,signal:e?.signal??new AbortController().signal,tryImport:async()=>null,getService:()=>{throw Error(`Worker-local contribution context does not expose host services.`)},hasExtension:()=>!1})}async function S(e,t){let n=await Promise.all(e.packages.map(e=>T(e,t))),r=[];for(let e of n)e&&r.push(...e.toolsets);return{toolsets:r}}function C(e,t){if(t!==void 0&&!r.isAbsolute(e)&&(e.startsWith(`./`)||e.startsWith(`../`))){let n=r.resolve(t),i=r.resolve(n,e);if(!w(n,i))throw Error(`importPath escapes makaioHome: ${e}`);return i}return e}function w(e,t){let n=r.relative(e,t);return n===``||!n.startsWith(`..`)&&!r.isAbsolute(n)}async function T(e,t){let n=e.importPath,r;try{n=C(e.importPath,t?.makaioHome),r=await import(n)}catch(t){let r=t instanceof Error?t.message:String(t);console.warn(`[worker-contributions] Failed to import "${e.name}" from "${n}": ${r}`);return}let i=b(r,e.name);if(!i){console.warn(`[worker-contributions] No recognizable extension export in "${e.name}" (${n})`);return}let a=[];if(i.tools?.createToolsets)try{let e=i.tools.createToolsets(x(t));a.push(...e)}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`[worker-contributions] createToolsets() failed for "${e.name}": ${n}`)}return{toolsets:a}}async function E(r){let i=c.parse(r.config),o=new AbortController,s=()=>o.abort(),u=r.signal??o.signal;u!==o.signal&&(u.aborted?o.abort():u.addEventListener(`abort`,s,{once:!0}));let d,m,h;try{d=await g(i),h=d.bus.on(l(i.cancelSubject),()=>{o.abort()}),await a(h);let s=await S(r.manifest,{bus:d.bus,signal:o.signal,makaioHome:i.context.makaioHome});s.toolsets.length>0&&(m=await _(d,s)),f?.postMessage(e(i.executionId,i.cancelSubject));let c=await t(i);return await p({config:await n(i,c,d.bus,o.signal),loaded:c,bus:d.bus,signal:o.signal})}finally{h?.(),u.removeEventListener(`abort`,s);try{m&&await m.close()}finally{d&&await d.close()}}}export{E as default,E as runWorkflowInWorker};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { JsonValue } from "@makaio/framework/contracts";
|
|
1
2
|
import * as _$drizzle_orm_sqlite_core0 from "drizzle-orm/sqlite-core";
|
|
2
3
|
import * as _$drizzle_orm_pg_core0 from "drizzle-orm/pg-core";
|
|
3
4
|
import * as _$_makaio_storage_drizzle0 from "@makaio/framework/storage/drizzle";
|
|
@@ -153,6 +154,12 @@ declare const sessionsDual: _$_makaio_storage_drizzle0.DualTable<"sessions", {
|
|
|
153
154
|
* Null (default) means "use the cascade defaults".
|
|
154
155
|
*/
|
|
155
156
|
approvalPolicyOverride: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm_sqlite_core0.SQLiteTextBuilderInitial<"approval_policy_override", ["reject", "always-ask", "full-access"], number | undefined>, _$drizzle_orm_pg_core0.PgTextBuilderInitial<"approval_policy_override", ["reject", "always-ask", "full-access"]>>;
|
|
157
|
+
/**
|
|
158
|
+
* Opaque consumer-owned JSON metadata.
|
|
159
|
+
*
|
|
160
|
+
* The framework preserves this data but never interprets its keys.
|
|
161
|
+
*/
|
|
162
|
+
metadata: _$_makaio_storage_drizzle0.DualBuilder<_$drizzle_orm0.$Type<_$drizzle_orm_sqlite_core0.SQLiteTextJsonBuilderInitial<string>, Record<string, JsonValue>>, _$drizzle_orm0.$Type<_$drizzle_orm_pg_core0.PgJsonbBuilderInitial<string>, Record<string, JsonValue>>>;
|
|
156
163
|
/**
|
|
157
164
|
* Tool call ID of the Agent/spawn_subagent invocation that spawned this session.
|
|
158
165
|
* Only set for subagent sessions. Null for root/fork sessions.
|
|
@@ -251,7 +258,7 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
|
|
|
251
258
|
tableName: "sessions";
|
|
252
259
|
dataType: "string";
|
|
253
260
|
columnType: "SQLiteText";
|
|
254
|
-
data: "active" | "archived" | "
|
|
261
|
+
data: "active" | "archived" | "closed" | "discovered";
|
|
255
262
|
driverParam: string;
|
|
256
263
|
notNull: true;
|
|
257
264
|
hasDefault: false;
|
|
@@ -658,6 +665,25 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
|
|
|
658
665
|
}, {}, {
|
|
659
666
|
length: number | undefined;
|
|
660
667
|
}>;
|
|
668
|
+
metadata: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
669
|
+
name: string;
|
|
670
|
+
tableName: "sessions";
|
|
671
|
+
dataType: "json";
|
|
672
|
+
columnType: "SQLiteTextJson";
|
|
673
|
+
data: Record<string, JsonValue>;
|
|
674
|
+
driverParam: string;
|
|
675
|
+
notNull: false;
|
|
676
|
+
hasDefault: false;
|
|
677
|
+
isPrimaryKey: false;
|
|
678
|
+
isAutoincrement: false;
|
|
679
|
+
hasRuntimeDefault: false;
|
|
680
|
+
enumValues: undefined;
|
|
681
|
+
baseColumn: never;
|
|
682
|
+
identity: undefined;
|
|
683
|
+
generated: undefined;
|
|
684
|
+
}, {}, {
|
|
685
|
+
$type: Record<string, JsonValue>;
|
|
686
|
+
}>;
|
|
661
687
|
spawningToolCallId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
|
|
662
688
|
name: "spawning_tool_call_id";
|
|
663
689
|
tableName: "sessions";
|