@makaio/framework 1.0.0-dev-1781397017668 → 1.0.0-dev-1781442380278

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{adapter-D_p5kKxi.mjs → adapter-BH1X0THX.mjs} +1 -1
  3. package/dist/adapters/index.d.mts +1 -1
  4. package/dist/bus/index.d.mts +20 -20
  5. package/dist/bus/index.mjs +1 -1
  6. package/dist/contracts/adapter/index.d.mts +1 -1
  7. package/dist/contracts/adapter/index.mjs +1 -1
  8. package/dist/contracts/artifact/index.d.mts +1 -1
  9. package/dist/contracts/canonical-model/index.d.mts +1 -1
  10. package/dist/contracts/config/index.d.mts +6 -6
  11. package/dist/contracts/extension/index.d.mts +2 -2
  12. package/dist/contracts/facet/index.d.mts +1 -1
  13. package/dist/contracts/harness/index.d.mts +1 -1
  14. package/dist/contracts/index.d.mts +188 -183
  15. package/dist/contracts/index.mjs +1 -1
  16. package/dist/contracts/materialization/index.d.mts +3 -3
  17. package/dist/contracts/provider/index.d.mts +1 -1
  18. package/dist/contracts/session/index.d.mts +2 -2
  19. package/dist/contracts/session/index.mjs +1 -1
  20. package/dist/contracts/variant/index.d.mts +1 -1
  21. package/dist/{definition-CPc6oKaF.d.mts → definition-CZcVOhXZ.d.mts} +1 -1
  22. package/dist/handlers-Cpy9Q8ho.mjs +41 -0
  23. package/dist/{index-C24PcW2r.d.mts → index-B1PgTu7q.d.mts} +8 -8
  24. package/dist/{index-CEdOq5Om.d.mts → index-BDnI2oqX.d.mts} +1 -1
  25. package/dist/{index-QvciMc7_.d.mts → index-BF84QInS.d.mts} +875 -361
  26. package/dist/{index-DfNIhEm_.d.mts → index-BVMF3kRv.d.mts} +16 -16
  27. package/dist/{index-CszoKxxO.d.mts → index-Cj3XCjXZ.d.mts} +342 -342
  28. package/dist/{index-BLqtL-_a.d.mts → index-DHVoVh-j.d.mts} +7 -7
  29. package/dist/{index-WKF5BHsw.d.mts → index-DUI1W-zN.d.mts} +8 -8
  30. package/dist/{index-B99Prx5a.d.mts → index-DUsm-DeE.d.mts} +100 -100
  31. package/dist/{index-B92SK0rO.d.mts → index-DigeEyrf.d.mts} +19 -16
  32. package/dist/{index-GuspCNLR.d.mts → index-DyqZej9j.d.mts} +8 -8
  33. package/dist/{index-DBgv39-Q.d.mts → index-HiAth5G0.d.mts} +52 -52
  34. package/dist/{index-NyKdb8kT.d.mts → index-LrZlZUvQ.d.mts} +16 -16
  35. package/dist/{index-BM_y78ZA2.d.mts → index-cN4DkU5Y2.d.mts} +9 -9
  36. package/dist/{index-C0TEY7RE.d.mts → index-oUqyVvsD.d.mts} +1 -1
  37. package/dist/kernel/extension/index.d.mts +1 -1
  38. package/dist/kernel/index.d.mts +2 -2
  39. package/dist/kernel/observability/index.d.mts +1 -1
  40. package/dist/{namespace-DbvQ4HYc.d.mts → namespace-BXuuv8L9.d.mts} +152 -152
  41. package/dist/{namespace-CN2TfSCY.d.mts → namespace-Ba1gUpUu.d.mts} +4 -4
  42. package/dist/{namespace-D_ZXa76m.d.mts → namespace-CWgNi8Gv.d.mts} +26 -26
  43. package/dist/{namespace-BAJTZXWc.d.mts → namespace-DM3TSh_y.d.mts} +38 -38
  44. package/dist/{namespace-C_kaVySz.d.mts → namespace-Q-z7Lr2f.d.mts} +8 -8
  45. package/dist/{package-Bn665ylV.mjs → package-DMoFY63f.mjs} +1 -1
  46. package/dist/package.json +1 -1
  47. package/dist/primitive-runtime-DWbV7f_r.mjs +1 -0
  48. package/dist/{schema-msWs4YhT.d.mts → schema-BKdn_bdY.d.mts} +2 -2
  49. package/dist/{schemas-DMl7IKG-.d.mts → schemas-BbFAwUpf.d.mts} +5 -5
  50. package/dist/{schemas-xoTn8JZb.d.mts → schemas-CyEdMtnQ.d.mts} +152 -152
  51. package/dist/schemas-CzvG8xq7.mjs +1 -0
  52. package/dist/{schemas-DRZJK6hW2.d.mts → schemas-DvjQHkmw2.d.mts} +6 -6
  53. package/dist/{schemas-CN9hprME.d.mts → schemas-IDGAJ_zv.d.mts} +6 -6
  54. package/dist/services/adapter-subsystem/index.d.mts +2 -2
  55. package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
  56. package/dist/services/agent-runtime/index.d.mts +2 -2
  57. package/dist/services/agent-runtime/namespace.d.mts +1 -1
  58. package/dist/services/agent-runtime/schemas.d.mts +1 -1
  59. package/dist/services/context-rules/index.d.mts +3 -3
  60. package/dist/services/filesystem/namespace.d.mts +12 -12
  61. package/dist/services/filesystem/schemas.d.mts +6 -6
  62. package/dist/services/harness/index.d.mts +3 -3
  63. package/dist/services/index.d.mts +117 -117
  64. package/dist/services/index.mjs +1 -1
  65. package/dist/services/session/handlers/index.mjs +1 -1
  66. package/dist/services/session/index.d.mts +4 -4
  67. package/dist/services/session/index.mjs +1 -1
  68. package/dist/services/session/messages/namespace.d.mts +1 -1
  69. package/dist/services/session/storage/namespace.d.mts +1 -1
  70. package/dist/services/session/storage/schema.d.mts +1 -1
  71. package/dist/services/session/testing/index.mjs +1 -1
  72. package/dist/services/settings/namespace.d.mts +6 -6
  73. package/dist/services/subagent-template/index.d.mts +1 -1
  74. package/dist/services/subagent-template/schemas.d.mts +1 -1
  75. package/dist/services/tool-approval/index.mjs +1 -1
  76. package/dist/services/tools/index.mjs +1 -1
  77. package/dist/services/tray-menu/index.d.mts +2 -2
  78. package/dist/services/tray-menu/namespace.d.mts +1 -1
  79. package/dist/services/tray-menu/schemas.d.mts +1 -1
  80. package/dist/session-ZAJrcudH.mjs +39 -0
  81. package/dist/{session-bKk-XeaY.mjs → session-owtKCoUX.mjs} +1 -1
  82. package/dist/{tool-approval-service-C2xXBtdJ.mjs → tool-approval-service-B_28RhuK.mjs} +1 -1
  83. package/dist/{tools-DEUzCPBB.mjs → tools-BpzJterj.mjs} +1 -1
  84. package/dist/{types-4LKM7ZfA.d.mts → types-Bo2-N1YR.d.mts} +887 -357
  85. package/dist/workflow-engine/index.d.mts +34 -34
  86. package/dist/workflow-engine/index.mjs +1 -1
  87. package/dist/workflow-engine/package.mjs +1 -1
  88. package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
  89. package/package.json +1 -1
  90. package/dist/handlers-CTrL8wmC.mjs +0 -41
  91. package/dist/primitive-runtime-C2yw4-F8.mjs +0 -1
  92. package/dist/schemas-CiMm2zrE.mjs +0 -1
  93. package/dist/session-Me3XO-l9.mjs +0 -39
@@ -1 +0,0 @@
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,GateInstanceListQuerySchema as ee,SessionSubjects as g,SpanRecordSchema as te,SubagentSubjects as _,WorkflowDefinitionSchema as v,WorkflowExecutionSchema as y,WorkflowFrameStateSchema as b,WorkflowGateInstanceSchema as x,WorkflowListQuerySchema as ne,WorkflowRunContextSchema as S,WorkflowSchemas as re,WorkflowSubjects as ie,WorkflowSubjects as C,createStepCancelSubject as ae}from"@makaio/framework/contracts";import{createStorageNamespaceDefinition as oe}from"@makaio/framework/storage";import{index as w,primaryKey as se,uniqueIndex as ce}from"drizzle-orm/sqlite-core";import{index as T,primaryKey as le,uniqueIndex as ue}from"drizzle-orm/pg-core";import{defineDualTable as E}from"@makaio/framework/storage/drizzle";import{sql as de}from"drizzle-orm";import{evaluateSync as D,resolveTemplate as O}from"@makaio/framework/expression";import*as fe from"node:os";function pe(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 k=E(`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`),artifact:e.jsonCol(`artifact`),triggers:e.jsonCol(`triggers`),...pe(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=>[ce(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),w(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)],postgres:e=>[ue(`uniq_workflow_definitions_name_scope`).on(e.name,e.scopeType,e.scopeKind,e.scopeId),T(`idx_workflow_definitions_scope`).on(e.scopeType,e.scopeKind,e.scopeId)]}),me=k.sqlite,A=E(`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`),...pe(e)}),{sqlite:e=>[w(`idx_workflow_executions_status`).on(e.status),w(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),w(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt),w(`idx_workflow_executions_artifact`).on(e.artifactKind,e.artifactId,e.startedAt)],postgres:e=>[T(`idx_workflow_executions_status`).on(e.status),T(`idx_workflow_executions_scope_started`).on(e.scopeType,e.scopeKind,e.scopeId,e.startedAt),T(`idx_workflow_executions_workflow_started`).on(e.workflowId,e.startedAt),T(`idx_workflow_executions_artifact`).on(e.artifactKind,e.artifactId,e.startedAt)]}),he=A.sqlite,ge=E(`workflow_execution_frames`,e=>({frameId:e.text(`frame_id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>A.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=>[w(`idx_workflow_execution_frames_execution`).on(e.executionId),w(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)],postgres:e=>[T(`idx_workflow_execution_frames_execution`).on(e.executionId),T(`idx_workflow_execution_frames_parent`).on(e.parentFrameId)]}),_e=ge.sqlite,ve=E(`workflow_gate_instances`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>A.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=>[w(`idx_workflow_gate_instances_execution`).on(e.executionId),w(`idx_workflow_gate_instances_frame`).on(e.frameId)],postgres:e=>[T(`idx_workflow_gate_instances_execution`).on(e.executionId),T(`idx_workflow_gate_instances_frame`).on(e.frameId)]}),ye=ve.sqlite,be=E(`workflow_step_spans`,e=>({executionId:e.text(`execution_id`).notNull().references(()=>A.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=>[se({columns:[e.executionId,e.frameId]}),w(`idx_workflow_step_spans_status`).on(e.status)],postgres:e=>[le({columns:[e.executionId,e.frameId]}),T(`idx_workflow_step_spans_status`).on(e.status)]}),xe=be.sqlite,Se=E(`workflow_execution_links`,e=>({sourceExecutionId:e.text(`source_execution_id`).notNull().references(()=>A.columnPair(`id`),{onDelete:`cascade`}),targetExecutionId:e.text(`target_execution_id`).notNull().references(()=>A.columnPair(`id`),{onDelete:`cascade`}),linkType:e.text(`link_type`).$type().notNull(),metadata:e.jsonCol(`metadata`)}),{sqlite:e=>[se({columns:[e.sourceExecutionId,e.targetExecutionId]}),w(`idx_workflow_execution_links_target`).on(e.targetExecutionId)],postgres:e=>[le({columns:[e.sourceExecutionId,e.targetExecutionId]}),T(`idx_workflow_execution_links_target`).on(e.targetExecutionId)]}),j=Se.sqlite,M=E(`workflow_run_contexts`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>A.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(de`'{}'`),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=>[w(`idx_run_contexts_workflow`).on(e.workflowId)],postgres:e=>[T(`idx_run_contexts_workflow`).on(e.workflowId)]}),Ce=M.sqlite,we=E(`worklog_summaries`,e=>({executionId:e.text(`execution_id`).primaryKey().references(()=>A.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=>[w(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),w(`idx_worklog_summaries_status`).on(e.status)],postgres:e=>[T(`idx_worklog_summaries_workflow_started`).on(e.workflowId,e.startedAt),T(`idx_worklog_summaries_status`).on(e.status)]}),Te=we.sqlite,Ee=E(`worklog_frame_entries`,e=>({frameId:e.text(`frame_id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>A.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=>[w(`idx_worklog_frame_entries_execution`).on(e.executionId)],postgres:e=>[T(`idx_worklog_frame_entries_execution`).on(e.executionId)]}),De=Ee.sqlite,Oe=E(`worklog_artifact_writes`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>A.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=>[w(`idx_worklog_artifact_writes_execution`).on(e.executionId)],postgres:e=>[T(`idx_worklog_artifact_writes_execution`).on(e.executionId)]}),ke=Oe.sqlite,Ae=E(`worklog_gate_events`,e=>({id:e.text(`id`).primaryKey(),executionId:e.text(`execution_id`).notNull().references(()=>A.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=>[w(`idx_worklog_gate_events_execution`).on(e.executionId),w(`idx_worklog_gate_events_status`).on(e.status)],postgres:e=>[T(`idx_worklog_gate_events_execution`).on(e.executionId),T(`idx_worklog_gate_events_status`).on(e.status)]}),je=Ae.sqlite,Me=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()}),Ne=oe(`workflow`,{schemas:{get:{request:n.object({id:n.string()}),response:n.object({workflow:v.nullable()})},set:{request:n.object({workflow:v}),response:n.object({id:n.string()})},delete:{request:n.object({id:n.string()}),response:n.object({deleted:n.boolean()})},list:{request:ne,response:n.object({workflows:n.array(v)})},getExecution:{request:n.object({executionId:n.string()}),response:n.object({execution:y.nullable()})},setExecution:{request:n.object({execution:y}),response:n.object({id:n.string()})},setExecutionStart:{request:n.object({execution:y,runContext:S}),response:n.object({id:n.string(),executionId:n.string()})},updateExecution:{request:Me,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(x.extend({status:n.literal(`cancelled`)}))})},listExecutions:{request:m,response:n.object({executions:n.array(y)})},setFrame:{request:n.object({executionId:n.string().min(1),frame:b}),response:n.object({frameId:n.string()})},getFrame:{request:n.object({frameId:n.string().min(1)}),response:n.object({frame:b.nullable()})},listFrames:{request:n.object({executionId:n.string().min(1)}),response:n.object({frames:n.array(b)})},setGateInstance:{request:n.object({gate:x}),response:n.object({id:n.string()})},resolveWaitingGateInstance:{request:n.object({gate:x.extend({status:n.enum([`resumed`,`rejected`])})}),response:n.object({accepted:n.boolean()})},restorePausedGateResumeState:{request:n.object({execution:y.extend({status:n.literal(`paused`)}),gate:x.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:x.nullable()})},listGateInstances:{request:ee,response:n.object({gates:n.array(x)})},listPausedGateTimeouts:c({request:n.object({}),response:n.object({gates:n.array(x)})}),setSpan:{request:n.object({span:te}),response:n.object({id:n.string()})},listSpans:{request:n.object({executionId:n.string()}),response:n.object({spans:n.array(te)})},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:S}),response:n.object({executionId:n.string()})}),getRunContext:c({request:n.object({executionId:n.string().min(1)}),response:n.object({runContext:S.nullable()})})},extensions:{drizzle:{workflowDefinitions:me,workflowExecutions:he,workflowExecutionFrames:_e,workflowGateInstances:ye,workflowStepSpans:xe,workflowExecutionLinks:j,workflowRunContexts:Ce,worklogSummaries:Te,worklogFrameEntries:De,worklogArtifactWrites:ke,worklogGateEvents:je}}}),N=Ne.subjects,Pe={stepTimeoutMs:300*1e3,stepCooldownMs:500,busAuth:{kind:`none`},platformDefaults:{cwd:process.cwd()},cancelTimeoutMs:1e4};async function P(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 Fe(e,t,n,r){t.status=`completed`,t.completedAt=Date.now();try{await P(e.bus,t,{status:t.status,completedAt:t.completedAt}),await e.bus.emit(C.execution.completed,{executionId:n,workflowId:t.workflowId,totalDuration:t.completedAt-r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}async function Ie(e,t,n,r,i){t.status=`failed`,t.error=r,t.completedAt=Date.now();try{await P(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(C.execution.failed,{executionId:n,workflowId:t.workflowId,error:r,completedAt:t.completedAt})}finally{e.activeExecutions.delete(n)}}function Le(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(ae(o.cancelSubject),{executionId:t,stepId:r,reason:n}).catch(t=>{console.error(`[WorkflowFinalizer] Failed to emit cancellation for ${e}:`,t)})}}async function Re(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(C.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(C.execution.cancelled,{executionId:t,workflowId:i,reason:n,completedAt:a}),e.activeExecutions.delete(t),!0}async function ze(e,t,n){let r=e.activeExecutions.get(t);if(!r||r.execution.status!==`running`)return Re(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));Le(e,t,n),await P(e.bus,i,{status:i.status,reason:n,completedAt:i.completedAt}),await e.bus.emit(C.execution.cancelled,{executionId:t,workflowId:i.workflowId,reason:n,completedAt:i.completedAt})}finally{e.activeExecutions.delete(t)}return!0}function Be(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function Ve(e,t,n){let r=e?O(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 He(e){return e instanceof Error&&(`code`in e||`killed`in e)}function Ue(e){let t=e[0];return t===void 0||t.trim()===``?null:t}function We(e){let{command:t,cwd:n,env:i,timeoutMs:a,signal:o}=e,s=Ue(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 Ge(e){let{step:t,workspaceRoot:n,expressionContext:r,signal:i}=e,a=Ve(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=>O(e,r));if(Ue(o)===null)return{status:`failed`,error:`Shell step command is empty`};let s=Object.fromEntries(Object.entries(t.env??{}).map(([e,t])=>[e,O(t,r)])),c=t.timeoutMs??3e5;try{let{stdout:e}=await We({command:o,cwd:a,env:s,timeoutMs:c,signal:i});return{status:`completed`,stdout:e}}catch(e){if(!He(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}}}function Ke(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 F(e){let t={...e,input:e.inputs,steps:e.frames};return{...t,ctx:t}}function qe(){return{context:{repoPath:process.cwd(),makaioHome:process.env.MAKAIO_HOME??`${fe.homedir()}/.makaio`,os:process.platform===`win32`?`win32`:process.platform===`darwin`?`darwin`:`linux`,arch:process.arch},env:{}}}function Je(e){return{...e,path:[...e.path]}}function Ye(e){if(e===`station`||e===`delegate-agent`||e===`delegate-role`||e===`gate`)return e}function Xe(e,t){let n=Ye(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 Ze=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=qe(),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=Be(`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=Je(e),i=Xe(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(C.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(C.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(C.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 Qe(e){return{kind:`workflow-execution`,id:e,displayName:`Workflow Engine`}}function $e(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 et(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function tt(e){if(e!=null){if(et(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 nt(e){if(e!==void 0){if(et(e))return e;throw Error(`Artifact create expression must return an object.`)}}async function rt(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:Qe(i)})).artifact;return{current:c,schemaVersion:n.schemaVersion,statusPath:t.statusPath,zodSchema:t.schema}}async function it(e){let{definition:t,execution:n,runContext:r,zodSchema:i,bus:a}=e,o=t.artifact;if(o===void 0)return;let s=$e(t,n,r),c=r.artifactRef??(o.resolve===void 0?void 0:tt(D(o.resolve,s))),l=c===void 0&&o.create!==void 0?nt(D(o.create,s)):void 0,u=await rt({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 at=new WeakMap;function ot(e,t){let n=(at.get(e)??Promise.resolve()).catch(()=>void 0).then(t);return at.set(e,n.then(()=>void 0,()=>void 0)),n}function st(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 ct(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]:ct(a,i,n)}}function lt(e,t,n){return ct(e,t.startsWith(`/`)?t.slice(1).split(`/`):t.split(`.`),n)}function ut(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 dt(e,t){if(typeof t==`function`)return{nextData:await t(Object.freeze({...e})),operationLabel:`functional`,changedPaths:[]};let n=st(e,t),r=ut(e,n,t.operation);return{nextData:n,operationLabel:t.operation,changedPaths:r}}function ft(e){let{executionId:t,frameId:n,bindingState:r,bus:i}=e,a=Object.freeze({...r.current.data}),o=async e=>ot(r,async()=>{let a=r.current,{nextData:o,operationLabel:s,changedPaths:c}=await dt(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:Qe(t)}});r.current=l.artifact;let u=l.artifact.revision;return i.emit(ie.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=>lt(n,t,e))}}}async function pt(e,t,n){if(t.signal.aborted)return{status:`cancelled`};let r=await t.bus.requestOptional(C.resolveRole,{roleId:e.roleId});if(!r.handled)return{status:`failed`,error:e.unresolvedRoleError};let i=O(e.prompt,F(n)),a=e.completion===void 0?r.data:{...r.data,completion:e.completion};return I({...e,task:i,resolvedConfig:a},t)}async function I(e,t){if(t.signal.aborted)return{status:`cancelled`};let n=await t.bus.requestOptional(_.spawn,{parentSessionId:t.execution.coordinatorSessionId??t.executionId,depth:1,config:vt(e.task,e.resolvedConfig,e.outputSchema)});if(!n.handled)return{status:`failed`,error:e.unavailableRuntimeError};let r=await mt(e,t,n.data.subagentId,{attempts:5}),i=await yt(e,t,n.data.subagentId);return i===`aborted`?{status:`cancelled`}:(r||await mt(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 mt(e,t,n,r){if(e.frameId===void 0)return!0;try{let i=await ht(t,n,r.attempts);return i===void 0?!1:(await t.bus.emit(C.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 ht(e,t,n){for(let r=0;r<n;r+=1){if(e.signal?.aborted)return;let i=await gt(e,t);if(i===void 0||!i.handled)return;if(i.data.childSessionId!==void 0)return i.data.childSessionId;if(r<n-1&&!await _t(e.signal,20))return}}async function gt(e,t){try{return await e.bus.requestOptional(_.getStatus,{subagentId:t},{timeout:25,signal:e.signal})}catch{return}}function _t(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 vt(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 yt(e,t,n){if(t.signal.aborted)return await L(e,t,n),`aborted`;let r=t.bus.requestOptional(_.await,{subagentId:n,...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}},{timeout:0});if(t.signal.aborted)return await L(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 L(e,t,n),o}async function L(e,t,n){try{await t.bus.requestOptional(_.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 bt(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=Ke(n.frames),a=t.runtimeHandlers.get(e.id);if(a===void 0)return xt(e,t,n,r);let o=t.artifactBinding!==void 0&&r!==void 0?ft({executionId:t.executionId,frameId:r,bindingState:t.artifactBinding,bus:t.bus}):void 0;async function s(n){if(r===void 0){console.warn(`[station-node] updateProgress called without frameId for node '${e.id}'; skipping emit`);return}let i=re[`execution.progress`].parse({executionId:t.executionId,workflowId:t.workflowId,frameId:r,nodeId:e.id,progress:n,emittedAt:Date.now()});try{await t.bus.emit(C.execution.progress,i)}catch(t){console.error(`[station-node] execution.progress observer failed for ${e.id}:`,t)}}let c;try{c=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},bus:t.bus,updateProgress:s})}catch(e){return{status:`failed`,error:e instanceof Error?e.message:String(e)}}return{status:`completed`,output:c}}async function xt(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 pt({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 St(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=await t.bus.requestOptional(C.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=It(e,n);if(a.status===`failed`)return a;let o=e.outputSchema===void 0?void 0:{schema:e.outputSchema};return I({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 Ct(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=await t.bus.requestOptional(C.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=O(e.prompt,F(n)),s=jt(e,i.data),c={node:e,task:o,resolvedRole:s,...a===void 0?{}:{outputSchema:a},...r===void 0?{}:{frameId:r}};return Mt(s)?wt(c,t):I({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 wt(e,t){let{node:n}=e,r=n.timeoutMs??3e5,i,a=Ft(t.signal);try{let n=await Tt(e,t);return`status`in n?n:(i=n.sessionId,t.signal.aborted?{status:`cancelled`}:await Et(e,t,{abortLink:a,childSessionId:i,role:e.resolvedRole,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 Pt(t,n.id,i)}}async function Tt(e,t){let n=await t.bus.requestOptional(g.create,{sessionId:kt(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 Nt(e,t,r),{sessionId:r}}async function Et(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 Dt(e,t,n);if(`status`in i)return i;let a=await Ot(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 Dt(e,t,n){let r=await t.bus.requestOptional(g.sendMessage,{sessionId:n.childSessionId,message:e.task,agent:At(n.role),...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 Ot(e,t,n,r){let i=await t.bus.requestOptional(g.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 kt(e,t){return`session-workflow-${e.executionId}-${t.frameId??t.node.id}`}function At(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}}}function jt(e,t){return e.completion===void 0?t:{...t,completion:e.completion}}function Mt(e){return e.completion===`turn`&&e.harnessId===void 0&&e.contextMode===void 0}async function Nt(e,t,n){if(e.frameId!==void 0)try{await t.bus.emit(C.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 Pt(e,t,n){try{await e.bus.requestOptional(g.close,{sessionId:n})}catch(e){console.warn(`[workflow-engine] Failed to close delegate-role session '${n}' for node '${t}'`,e)}}function Ft(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 It(e,t){try{let n=F(t);return{status:`completed`,task:Lt(e.inputExpression===void 0?n:D(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 Lt(e){if(typeof e==`string`)return e;if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return String(e)}}function Rt(e,t,n,r){try{let i=D(n,F(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 zt(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 Bt(e,t,n){return zt(e.body,t,n)}function Vt(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 Ht=new Set([`completed`,`skipped`,`waiting`]);function R(e,t,n){let r=e?.byNodeId.get(t)??[],i=n.statuses??Ht;return r.find(e=>e.parentFrameId===n.parentFrameId&&e.branchKey===n.branchKey&&e.iteration===n.iteration&&i.has(e.status))}function z(e,t,n){let r={...e.frames,[t]:n};return{...e,frames:r,previousSteps:Ke(r),output:n.status===`completed`?n.output:e.output}}function B(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 Ut=new Set([`completed`,`running`]);function Wt(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function Gt(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:V({},o)};let c=new AbortController,l=new AbortController,u=t.suspensionStrategy!==`wait-in-process`,d=o===`fail-fast`?B(c.signal,l.signal):u?l.signal:void 0,f=d===void 0?t.signal:B(t.signal,d),p=f===t.signal?t:t.withSignal(f),m=s.map(([s,c])=>Kt(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:V(Jt(s,e),o)}:t}let h=await qt(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:V(Jt(s,h.outcomes),o)}}async function Kt(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l=R(r.resumeFrames,n.id,{parentFrameId:o,branchKey:e,statuses:Ut});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 Wt(u,c)||await $(u,r),{status:`cancelled`};l===void 0&&await Y(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 Z(u,r,t),{status:`failed`,error:t}}switch(d.status){case`completed`:{let e=zt(t,u.frameId,r);return await X(u,r,e),{status:`completed`,output:e}}case`skipped`:return await X(u,r),{status:`completed`};case`cancelled`:return Wt(u,c)||await $(u,r),{status:`cancelled`};case`paused`:return d;case`failed`:return await Z(u,r,d.error),{status:`failed`,error:d.error}}}async function qt(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 V(e,t){return{mode:t,branches:e}}function Jt(e,t){let n={};for(let r=0;r<e.length;r++){let[i]=e[r],a=t[r];n[i]=Yt(a)}return n}function Yt(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 Xt=new(e(t(),1)).default({allErrors:!0,strict:!1});function H(e,t){if(t===void 0)return{status:`ok`};try{return{status:`ok`,validator:Xt.compile(t)}}catch(t){return{status:`failed`,error:`Gate '${e}' has an invalid resumeSchema: ${t instanceof Error?t.message:String(t)}`}}}function U(e,t){return e===void 0||e(t)?{valid:!0}:{valid:!1,error:Qt(e.errors??[])}}function Zt(e,t,n){let r=H(e,t);return r.status===`failed`?{valid:!1,error:r.error}:U(r.validator,n)}function Qt(e){return e.length===0?`schema validation failed`:e.map(e=>`${e.instancePath.length>0?e.instancePath:`/`} ${e.message??`is invalid`}`).join(`; `)}const W={action:`approve`,source:`timeout`};function G(e){return e===void 0?{}:{reason:e}}async function $t(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=rn();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 en(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=U(i,W);return s.valid?(await K(e,{...r,status:`resumed`,resumeData:W,resolvedAt:a},o),await q(e,t.id,n,{action:`approve`,source:`timeout`}),{status:`completed`,output:{resumeData:W}}):(await K(e,{...r,status:`timed-out`,resolvedAt:a},o),await q(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 K(e,{...r,status:`timed-out`,resolvedAt:a},o),await q(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 K(e,{...r,status:`cancelled`,resolvedAt:Date.now()},o),await q(e,t.id,n,{source:`cancelled`}),{status:`cancelled`};let s=Date.now();await K(e,{...r,status:a.action===`reject`?`rejected`:`resumed`,resumeData:a.resumeData,...G(a.reason),resolvedAt:s},o);try{await e.bus.emit(C.gate.resumed,{executionId:e.executionId,frameId:n,nodeId:t.id,resumeData:a.resumeData}),await q(e,t.id,n,{action:a.action,source:`user`,...G(a.reason)})}catch(e){console.error(`[GateNode] gate.resumed emit failed for '${t.id}':`,e)}return{status:`completed`,output:{resumeData:a.resumeData}}}async function tn(e,t,n,r){if(t.signal.aborted)return{status:`cancelled`};let i=e.resumeSchema??{};if(t.suspensionStrategy!==`wait-in-process`){let n=await sn(t,e,r);if(n!==void 0)return n}let a=H(e.id,e.resumeSchema);return a.status===`failed`?{status:`failed`,error:a.error}:nn(t,e,n,r,i,a.validator)}async function nn(e,t,n,r,i,a){let o=O(t.prompt,F(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 K(e,s,{required:c}),await e.updateFrame(r,{status:`waiting`},{requireFrameStorage:c}),c)return await an(e,t,r,i,o,s.createdAt),{status:`paused`,pausedAtGateId:t.id,pausedAtFrameId:r};let u={value:!0},d=rn(),f=e.bus.on(C.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(!U(a,f).valid){n.setResult({accepted:!1});return}u.value=!1,n.setResult({accepted:!0}),d.resolve({action:c,resumeData:f,reason:p})});await an(e,t,r,i,o,s.createdAt);let p=await $t(d,u,e.signal,t.timeoutMs);return f(),en(e,t,r,s,a,p)}function rn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}async function an(e,t,n,r,i,a){try{await e.bus.emit(C.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 on(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 sn(e,t,n){let r=await on(e,t.id,n);if((r?.status===`resumed`||r?.status===`rejected`)&&r.resumeData!==void 0){let i=Zt(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(C.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 q(e,t.id,n,{action:r.status===`rejected`?`reject`:`approve`,source:`user`,...G(r.reason)}),{status:`completed`,output:{resumeData:r.resumeData}}}if(r?.status===`waiting`){if(r.timeoutMs!==null&&Date.now()>=r.createdAt+r.timeoutMs){let i=H(t.id,r.schema);return i.status===`failed`?{status:`failed`,error:i.error}:en(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 K(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 q(e,t,n,r){try{await e.bus.emit(C.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 J(e){return{status:`fulfilled`,...e===void 0?{}:{value:e}}}const cn=new Set([`completed`,`running`]);function ln(e,t){return e.status===`running`&&t.pauseSignal?.aborted===!0&&!t.outerSignal.aborted}async function un(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=Rt(e.id,`iterate`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:mn([])};let c=await dn(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:mn(c)}:{status:`paused`,pausedAtGateId:l.pausedAtGateId,pausedAtFrameId:l.pausedAtFrameId}}async function dn(e,t,n,r,i,a,o,s){let c=new AbortController,l=n.suspensionStrategy!==`wait-in-process`,u=l?B(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)=>pn(e,n,t,d,r,i,a,o,f));return Promise.all(l?n.map(e=>fn(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(pn(e[s],s,t,d,r,i,a,o,f));let h=await Promise.all(l?m.map(e=>fn(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 fn(e,t){return e.then(e=>(e.status===`paused`&&t.abort(),e))}async function pn(e,t,n,r,i,a,o,s,c){if(r.signal.aborted)return{status:`cancelled`};let l={...i,item:e,index:t},u=R(r.resumeFrames,n.id,{parentFrameId:o,iteration:t,statuses:cn});if(u?.status===`completed`)return J(u.output);let d=u??r.createFrame({nodeId:n.id,nodeType:`iterate`,path:s,parentFrameId:o,iteration:t});if(r.signal.aborted)return ln(d,c)||await $(d,r),{status:`cancelled`};u===void 0&&await Y(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 Z(d,r,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=Bt(n,d.frameId,r);return await X(d,r,e),J(e)}case`skipped`:return await X(d,r),J();case`cancelled`:return ln(d,c)||await $(d,r),{status:`cancelled`};case`paused`:return f;case`failed`:return await Z(d,r,f.error),{status:`rejected`,reason:f.error}}}function mn(e){return{items:e}}const hn=new Set([`completed`,`running`]);async function gn(e,t,n,r,i,a){if(t.signal.aborted)return{status:`cancelled`};let o=Rt(e.id,`iterate-chain`,e.collection,n);if(!Array.isArray(o))return o;let s=o;if(s.length===0)return{status:`completed`,output:vn([])};let c=[],l;for(let o=0;o<s.length;o++){if(t.signal.aborted)return{status:`cancelled`};let u=s[o],d=await _n(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:vn(c)}}async function _n(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=R(i.resumeFrames,r.id,{parentFrameId:s,iteration:t,statuses:hn});if(u?.status===`completed`)return J(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 Y(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 Z(d,i,t),{status:`rejected`,reason:t}}switch(f.status){case`completed`:{let e=Bt(r,d.frameId,i);return await X(d,i,e),J(e)}case`skipped`:return await X(d,i),J();case`cancelled`:return await $(d,i),{status:`cancelled`};case`paused`:return f;case`failed`:return await Z(d,i,f.error),{status:`rejected`,reason:f.error}}}function vn(e){return{items:e}}async function Y(e,t){e.status=`running`,e.startedAt=Date.now(),await t.persistFrame(e),await t.emitFrameStarted(e)}async function X(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 Z(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 Q(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 yn(e,t){return!!D(e,F(t))}async function bn(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 bt(e,t,n,i);case`delegate-agent`:return St(e,t,n,i);case`delegate-role`:return Ct(e,t,n,i);case`parallel`:return Gt(e,t,n,r,i??``,a,e.mode??`all-settled`);case`gate`:return tn(e,t,n,i??``);case`iterate`:return un(e,t,n,r,i??``,a);case`iterate-chain`:return gn(e,t,n,r,i??``,a);default:return{status:`failed`,error:`Unknown node type: ${String(e.type)}`}}}const xn=new Set([`completed`,`skipped`,`waiting`,`running`]);function Sn(e){return e.type===`parallel`||e.type===`iterate`||e.type===`iterate-chain`}function Cn(e,t,n){return R(e.resumeFrames,t.id,{parentFrameId:n,...Sn(t)?{statuses:xn}:{}})}function wn(e,t,n){if(n?.status===`completed`)return z(e,t.id,{status:`completed`,...n.output===void 0?{}:{output:n.output}});if(n?.status===`skipped`)return z(e,t.id,{status:`skipped`})}async function Tn(e,t,n,r,i,a,o){try{return{result:yn(e,i)}}catch(e){let i=e instanceof Error?e.message:String(e);return await Z(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 En(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 Y(o,t);let s;try{s=await bn(e,t,n,Dn,o.frameId,o.path)}catch(e){let r=e instanceof Error?e.message:String(e);return await Z(o,t,r),{updatedCtx:n,outcome:{status:`failed`,error:r}}}switch(s.status){case`completed`:return await X(o,t,s.output),{updatedCtx:z(n,e.id,{status:`completed`,output:s.output})};case`skipped`:return await Q(o,t),{updatedCtx:z(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 Z(o,t,s.error),{updatedCtx:n,outcome:{status:`failed`,error:s.error}}}}async function Dn(e,t,n,r,i=[]){let a=n;for(let n of e.nodes){if(t.signal.aborted)return{status:`cancelled`};let e=Cn(t,n,r),o=wn(a,n,e);if(o!==void 0){a=o;continue}if(n.when!==void 0){let e=await Tn(n.when,`when`,n,t,a,i,r);if(`status`in e)return e;if(!e.result){await Q(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=z(a,n.id,{status:`skipped`});continue}}if(n.skip!==void 0){let e=await Tn(n.skip,`skip`,n,t,a,i,r);if(`status`in e)return e;if(e.result){await Q(t.createFrame({nodeId:n.id,nodeType:n.type,path:i,parentFrameId:r}),t),a=z(a,n.id,{status:`skipped`});continue}}let s=e?.status===`waiting`&&n.type===`gate`||e?.status===`running`&&Sn(n)?e:void 0,{updatedCtx:c,outcome:l}=await En(n,t,a,i,r,s);if(a=c,l!==void 0)return l}return{status:`completed`}}export{De as A,ve as C,be as D,xe as E,we as F,C as I,je as M,Ae as N,ke as O,Te as P,ye as S,M as T,ge as _,Ze as a,he as b,ze as c,Pe as d,Ne as f,_e as g,k as h,it as i,Ee as j,Oe as k,Ie as l,me as m,Zt as n,Be as o,N as p,Vt as r,Ge as s,Dn as t,Fe as u,j as v,Ce as w,A as x,Se as y};
@@ -1 +0,0 @@
1
- import{i as e,t}from"./json-value-CmhSGMLv.mjs";import{a as n,s as ee}from"./visibility-Cb62p9bv.mjs";import"./credential-ref-YWQQENEo.mjs";import{c as te,f as r,i as ne,o as i,p as a,r as re,s as ie}from"./shared-DpOEfD8F.mjs";import{a as ae,d as oe,i as se,n as ce,o,p as le,r as s,t as ue}from"./compression-vRUOO-28.mjs";import{t as c}from"./schemas-DAYPhB5K.mjs";import{r as de}from"./profile-r4G32bCH.mjs";import{i as l}from"./account-identity-D-9gunfD.mjs";import{SessionLineageSchema as fe}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as u}from"zod";import{observability as d}from"@makaio/framework/core";const f=u.object({adapterId:u.string(),adapterName:u.string()}),p=u.object({cwd:u.string().optional(),allowedTools:u.array(u.string()).optional(),disallowedTools:u.array(u.string()).optional(),allowedDirectories:u.array(u.string()).optional(),systemPrompt:r.optional()}),pe={request:u.object({adapterName:u.string().optional(),adapterId:u.string().optional()}).refine(e=>e.adapterName||e.adapterId,{message:`Either adapterName or adapterId must be provided`}),response:u.object({capabilities:u.array(u.string()),nativeTools:u.array(u.string())})},m=u.enum([`lead`,`member`]),h=u.enum([`fork`,`branch`,`subagent`,`compress`,`rewrite`,`coordinator`,`aside`]),g=u.enum([`parent-history`,`none`]),_=u.enum([`discovered`,`imported`,`tracking`]),v=u.object({sessionId:u.string(),title:u.string().nullable(),forkPointMessageId:u.string().nullable(),branchKind:h.nullable(),messageCount:u.number(),hasChildren:u.boolean(),spawningToolCallId:u.string().optional()}),y=u.object({fromMessageId:u.string(),toMessageId:u.string(),policy:u.enum([`verbatim`,`summarize`,`exclude`]),stripReasoning:u.boolean().optional(),stripToolOutputs:u.boolean().optional(),overrides:u.record(u.string(),u.literal(`exclude`)).optional(),summaryText:u.string().optional()}),b=u.object({removedMessageIds:u.array(u.string()).optional(),appliedPipeline:u.array(u.object({actionId:u.string(),options:u.record(u.string(),u.unknown()).optional()})).optional(),segments:u.array(y).optional()}),me=u.object({parentSessionId:u.string(),childSessionId:u.string(),summary:u.string().optional(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),he=u.object({success:u.boolean(),handoff:u.string().optional()}),ge=u.object({parentSessionId:u.string(),childSessionId:u.string(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),_e=u.object({success:u.boolean()}),ve=u.object({sessionId:u.string()}),ye=u.object({children:u.array(v)}),be=u.object({parentSessionId:u.string(),childSessionId:u.string(),reason:u.string()}),xe=u.object({parentSessionId:u.string(),childSessionId:u.string(),forkPoint:u.string().optional()}),Se=u.object({parentSessionId:u.string(),childSessionId:u.string()}),Ce=u.object({parentSessionId:u.string(),childSessionId:u.string(),handoff:u.string()}),we=u.object({sessionId:u.string(),parentSessionId:u.string().optional()}),Te=u.object({parentSessionId:u.string(),childSessionId:u.string(),result:u.unknown()}),Ee=u.object({sessionId:u.string(),reason:u.string(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),De=u.object({sessionId:u.string(),pipeline:u.array(u.object({actionId:u.string(),options:u.record(u.string(),u.unknown()).optional()}))}),Oe=u.object({eventId:u.string(),contextJson:u.record(u.string(),u.unknown()),tokensBefore:u.number(),tokensAfter:u.number().optional()}),ke=u.object({sessionId:u.string(),childSessionId:u.string(),parentSessionId:u.string(),kind:h,forkPointMessageId:u.string().optional(),transforms:b.optional()}),Ae=u.object({sessionId:u.string(),childSessionId:u.string(),parentSessionId:u.string(),resultJson:u.string().optional(),resultMessageId:u.string().optional()}),je=u.object({sessionId:u.string(),summaryJson:u.string(),tokensBefore:u.number().optional(),tokensAfter:u.number().optional(),compressedMessageIds:u.array(u.string()).optional()}),x=u.object({sessionId:u.string(),parentSessionId:u.string().nullable(),branchKind:h.nullable(),createdAt:u.number(),originWindowId:u.string().optional()}),S=u.object({sessionId:u.string(),changedProperties:u.array(u.string())}),Me={merge:{request:me,response:he},abandon:{request:ge,response:_e},getChildren:{request:ve,response:ye},forking:be,forked:xe,merging:Se,merged:Ce,abandoned:we,childCompleted:Te,compressionRequested:Ee,"branch.created":ke,"branch.merged":Ae,squash:je,created:x,updated:S,compress:{request:De,response:Oe}},C=u.object({messageHistory:u.array(te).optional(),hasNewTransforms:u.boolean().optional(),hasCompression:u.boolean().optional(),extractedContext:u.unknown().optional(),isFirstTurn:u.boolean().optional(),hasConnectorSwap:u.boolean().optional(),turnContext:u.record(u.string(),e).optional()}),w=ne,T=u.enum([`user`,`assistant`]),E=u.enum([`voice`,`text`,`compact`]),D=u.object({messageId:u.string(),turnId:u.string().nullable(),sessionId:u.string(),role:T,contentText:u.string(),blocks:u.array(w),agentId:u.string().optional(),adapterSessionId:u.string().optional(),adapterMessageId:u.string().optional(),timestamp:u.number(),editOf:u.string().optional(),origin:E.optional()}),O=u.enum([`active`,`completed`,`error`]),k=u.object({inputTokens:u.number(),outputTokens:u.number(),cost:u.number().optional()}),A=u.object({total:k,byAgent:u.record(u.string(),k).optional()}),j=u.object({source:u.enum([`user`,`extension`,`system`]),sourceId:u.string().optional()}),M=u.object({turnId:u.string(),sessionId:u.string(),turnNumber:u.number().int().min(1),startedAt:u.number(),completedAt:u.number().optional(),status:O,error:u.string().optional(),usage:A.optional(),initiator:j.optional()}),N=u.enum([`sent`,`acknowledged`,`completed`]),Ne=u.object({messageId:u.string(),agentId:u.string(),status:N,timestamp:u.number(),error:u.string().optional()}),P=u.object({sessionId:u.string(),turnId:u.string(),turnNumber:u.number().int().min(1)}),F=P.extend({messageId:u.string()}),I=P.extend({success:u.boolean(),error:u.string().optional(),usage:A.optional(),initiator:j.optional()}),Pe=ae.safeExtend({kind:u.string().regex(/^(?!(?:adapter|canonical-model)$).+$/)}),Fe=u.union([se,ce,Pe]),L={sendMessage:{request:u.object({sessionId:u.string(),message:i,agent:Fe.optional(),agentIds:u.union([u.array(u.string()),u.literal(`all`)]).optional(),deliveryMode:u.enum([`enqueue`]).optional(),turnId:u.string().optional(),sessionContext:C.optional(),responseSchema:a.optional(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional(),originWindowId:u.string().optional(),skipConnectorSwapWarning:u.boolean().optional(),origin:E.optional()}),response:u.object({messageId:u.string(),turnId:u.string(),sessionId:u.string()})},"agent.attach":{request:u.object({sessionId:u.string(),agent:o,initialMessage:i.optional(),role:u.enum([`lead`,`member`]).optional()}),response:u.object({agentId:u.string(),adapterSessionId:u.string(),role:u.enum([`lead`,`member`]),messageId:u.string().optional(),turnId:u.string().optional()})},"turn.started":P.extend({messageId:u.string(),agentIds:u.array(u.string()),initiator:j.optional()}),"turn.completed":I,"turn.await":{request:u.object({sessionId:u.string(),turnId:u.string(),timeoutMs:u.number().int().positive()}),response:u.object({completion:I})},"user_message.sent":F.extend({content:i,agentIds:u.array(u.string()),source:u.enum([`extension`,`user`,`system`]).optional(),origin:E.optional()}),"user_message.acknowledged":F.extend({agentId:u.string()}),"user_message.completed":F.extend({agentId:u.string(),outcome:ie,supersededBy:u.string().optional(),mergedInto:u.string().optional(),error:u.string().optional()}),fork:{request:u.object({sourceSessionId:u.string(),fromMessageId:u.string().optional(),name:u.string().optional(),branchKind:u.enum([`fork`,`branch`,`aside`]).optional(),transforms:b.optional(),targetWorkingDirectory:u.string().optional(),existingSessionId:u.string().optional()}),response:u.object({sessionId:u.string()})}},R=u.enum([`idle`,`active`,`dead`,`disposed`]),z=u.object({agentId:u.string(),adapterId:u.string(),adapterName:u.string(),sessionId:u.string(),adapterSessionId:u.string().optional(),model:u.string().optional(),cwd:u.string().optional(),allowedDirectories:u.array(u.string()).optional(),providerConfigId:u.string().optional(),personaId:u.string().optional(),profileId:u.string().optional(),harnessId:u.string().optional(),clientId:u.string().optional(),compressionMode:ue.optional(),role:m,status:R,createdAt:u.number(),lastActivityAt:u.number()}),B=u.object({sessionId:u.string(),createdAt:u.number(),lastActivityAt:u.number(),agents:u.array(z),status:u.enum([`active`,`closed`,`archived`,`discovered`]),leadAgentId:u.string().optional(),parentSessionId:u.string().optional(),contextInheritance:g.optional(),rootSessionId:u.string().optional(),forkPointMessageId:u.string().optional(),branchKind:h.optional(),adapterName:u.string().optional(),adapterSessionId:u.string().optional(),adapterId:u.string().optional(),clientId:u.string().optional(),clientAccountId:u.string().optional(),lastClientIdentityObservation:l.optional(),isOrchestrated:u.boolean().optional(),title:u.string().optional(),summary:u.string().optional(),summaryUpdatedAt:u.number().optional(),isImported:u.boolean().optional(),forkTransforms:b.optional(),targetWorkingDirectory:u.string().optional(),executionTargetId:u.string().optional(),spawningToolCallId:u.string().optional(),approvalPolicyOverride:c.nullable().optional(),source:u.string().optional(),parentExternalSessionId:u.string().optional(),logFilePath:u.string().optional(),discoveredAt:u.number().optional(),importStatus:_.optional()}),V=u.object({messageCount:u.number(),firstUserMessage:u.string().nullable()}),H=B.extend({preview:V.optional()}),Ie=u.discriminatedUnion(`success`,[u.object({agentId:u.string(),adapterId:u.string(),success:u.literal(!0)}),u.object({agentId:u.string(),adapterId:u.string(),success:u.literal(!1),error:u.string()})]),U=u.object({sessionId:u.string().optional(),parentSessionId:u.string().optional(),contextInheritance:g.optional(),forkPointMessageId:u.string().optional(),branchKind:h.optional(),forkTransforms:b.optional(),title:u.string().optional(),targetWorkingDirectory:u.string().optional(),executionTargetId:u.string().optional(),spawningToolCallId:u.string().optional(),originWindowId:u.string().optional()});function W(e,t){e.spawningToolCallId&&e.branchKind!==`subagent`&&t.addIssue({code:u.ZodIssueCode.custom,path:[`spawningToolCallId`],message:`spawningToolCallId is only valid for subagent sessions`})}const Le={list:{request:d.schema(u.object({status:u.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:u.number().int().min(1).optional(),offset:d.hidden(u.number().int().min(0).optional()),includePreview:u.boolean().optional(),executionTargetId:u.string().optional()}),{traceAll:!0}),response:u.object({sessions:u.array(H),total:u.number()})},search:{request:u.object({query:u.string(),limit:u.number().int().min(1).optional(),status:u.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:u.boolean().optional()}),response:u.object({sessions:u.array(H),total:u.number()})},get:{request:u.object({sessionId:u.string()}),response:u.object({session:B.nullable()})},create:{request:U.superRefine(W),response:u.object({sessionId:u.string()})},close:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},resume:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},restartAgents:{request:u.object({sessionId:u.string()}),response:u.object({sessionId:u.string(),results:u.array(Ie)})},archive:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},purge:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean(),eventsDeleted:u.number().optional(),error:u.string().optional()})},update:{request:u.object({sessionId:u.string(),executionTargetId:u.string().nullable().optional(),approvalPolicyOverride:c.nullable().optional(),title:u.string().optional()}),response:u.object({success:u.boolean()})},getByAdapterSessionId:{request:u.object({adapterSessionId:u.string()}),response:u.object({session:B.nullable()})},getStatusCounts:{request:u.object({}),response:u.object({all:u.number(),active:u.number(),closed:u.number(),archived:u.number(),discovered:u.number()})},registerExternal:{request:U.extend({adapterName:u.string(),adapterSessionId:u.string(),lastClientIdentityObservation:l.optional()}).superRefine(W),response:u.object({sessionId:u.string(),created:u.boolean()})}},G=u.object({sessionId:u.string(),eventId:u.string(),timestamp:u.number()}),Re=u.discriminatedUnion(`type`,[G.extend({type:u.literal(`agent.added`),payload:u.object({sessionId:u.string(),adapterSessionId:u.string(),agentId:u.string(),adapterId:u.string(),adapterName:u.string(),role:u.enum([`lead`,`member`]).optional(),model:u.string().optional(),cwd:u.string().optional()})}),G.extend({type:u.literal(`user_message.sent`),payload:L[`user_message.sent`]}),G.extend({type:u.literal(`user_message.acknowledged`),payload:L[`user_message.acknowledged`]}),G.extend({type:u.literal(`user_message.completed`),payload:L[`user_message.completed`]}),G.extend({type:u.literal(`turn.started`),payload:L[`turn.started`]}),G.extend({type:u.literal(`turn.completed`),payload:L[`turn.completed`]}),G.extend({type:u.literal(`message`),payload:u.object({messageId:u.string(),turnId:u.string().nullable(),role:u.enum([`user`,`assistant`])})}),G.extend({type:u.literal(`branch.created`),payload:u.object({childSessionId:u.string(),parentSessionId:u.string(),kind:h,forkPointMessageId:u.string().optional()})}),G.extend({type:u.literal(`branch.merged`),payload:u.object({childSessionId:u.string(),parentSessionId:u.string(),resultJson:u.string().optional(),resultMessageId:u.string().optional()})}),G.extend({type:u.literal(`squash`),payload:u.object({summaryJson:u.string(),tokensBefore:u.number().optional(),tokensAfter:u.number().optional(),compressedMessageIds:u.array(u.string()).optional()})})]),K=[`message`,`agent.added`,`turn.started`,`turn.completed`,`user_message.sent`,`user_message.acknowledged`,`user_message.completed`,`branch.created`,`branch.merged`,`squash`],ze=K,Be=G.extend({type:u.string().refine(e=>!K.includes(e),{message:`Plugin session event type must not shadow a core event type.`}),payload:u.record(u.string(),u.unknown())}),q=u.union([Re,Be]),Ve=u.string(),J=u.object({sessionId:u.string().min(1),clientId:u.string().min(1),previousClientAccountId:u.string().min(1).nullable(),clientAccountId:u.string().min(1),source:u.string().min(1),observedAt:u.number().int().finite().nonnegative(),lastClientIdentityObservation:l}),Y=u.object({sessionId:u.string(),importStatus:_}),He={"agent.added":u.object({sessionId:u.string(),adapterSessionId:u.string(),agentId:u.string(),adapterId:u.string(),adapterName:u.string(),role:m.optional(),model:u.string().optional(),cwd:u.string().optional()}),"agent.removed":u.object({sessionId:u.string(),agentId:u.string()}),closed:u.object({sessionId:u.string(),reason:u.string().optional()}),resumed:u.object({sessionId:u.string()}),archived:u.object({sessionId:u.string()}),purged:u.object({sessionId:u.string()}),compressed:u.object({sessionId:u.string(),eventId:u.string()}),"clientAccount.changed":J,"connectorSwap.editRequested":u.object({sessionId:u.string(),agentId:u.string(),previousCwd:u.string().optional(),newCwd:u.string().optional(),previousModel:u.string().optional(),newModel:u.string().optional()}),getContextWindowState:{request:u.object({sessionId:u.string()}),response:u.object({state:u.object({currentTokens:u.number(),maxTokens:u.number(),percentage:u.number(),level:u.enum([`ok`,`warn`,`critical`]),lastUpdatedAt:u.number()}).nullable()})},importStatusChanged:Y,"import.completed":u.object({sessionId:u.string(),adapterSessionId:u.string(),source:u.string()}),event:q},X=u.object({includeEvents:u.boolean().default(!1),includeToolOutputs:u.boolean().default(!1),includeAncestors:u.boolean().default(!0),includeChildren:u.boolean().default(!1)}),Ue=`1.0`,Z=u.object({version:u.literal(`1.0`),exportedAt:u.number(),options:X,sessions:u.array(B),agents:u.array(z),messages:u.array(D),turns:u.array(M),events:u.array(q).optional()});function We(e){return Z.parse(e)}function Ge(e){let t=Z.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,error:t.error}}const Ke={"snapshot.export":{request:u.object({sessionId:u.string(),options:X.optional()}),response:u.object({snapshot:Z})},"snapshot.import":{request:u.object({snapshot:Z,onConflict:u.enum([`fail`,`skip`,`overwrite`]).default(`fail`)}),response:u.object({imported:u.array(u.string()),skipped:u.array(u.string()),errors:u.array(u.object({sessionId:u.string(),error:u.string()}))})},"snapshot.validate":{request:u.object({snapshot:u.unknown()}),response:u.object({valid:u.boolean(),errors:u.array(u.string())})}},Q={resolveAgentConfig:{request:u.object({selection:o,projectId:u.string().optional()}),response:u.object({adapterName:u.string(),model:u.string().optional(),providerConfigId:u.string().optional(),reasoningEffort:n.optional(),supportedReasoningLevels:ee.optional(),systemPrompt:r.optional(),allowedTools:u.array(u.string()).optional(),disallowedTools:u.array(u.string()).optional(),allowedDirectories:u.array(u.string()).optional()})}},qe={resolveSystemPrompt:{request:u.object({sessionId:u.string(),personaId:u.string().optional(),profileId:u.string().optional()}),response:u.object({systemPrompt:u.string(),personaName:u.string().optional(),profileName:u.string().optional()})}},Je={enrichContext:{request:u.object({sessionId:u.string()}),response:u.record(u.string(),u.unknown())}},Ye={...Le,...He,...Ke,...Me,...L,...Q,...qe,...Je},$=u.object({adapterId:u.string(),harnessId:u.string().optional(),clientId:u.string().optional(),clientProfileName:de.optional(),initialMessage:i.optional(),responseSchema:a.optional(),model:u.string().optional(),reasoningEffort:n.optional(),adapterConfig:t.optional(),env:u.record(u.string(),u.string()).optional(),role:m,sessionContext:C.optional(),mcpSessionContext:u.union([le,oe]).optional(),providerContext:s.optional(),ephemeral:u.boolean().optional()}).merge(p),Xe={request:u.union([$.extend({mode:u.literal(`fork`),sessionId:u.string(),sourceSessionId:u.string()}),$.extend({mode:u.literal(`resume`),sessionId:u.string(),adapterSessionId:u.string()}),$.extend({mode:u.literal(`create`).optional(),sessionId:u.string().optional()})]).superRefine((e,t)=>{let n=e.mode??`create`;e.ephemeral&&n!==`create`&&t.addIssue({code:u.ZodIssueCode.custom,path:[`ephemeral`],message:`ephemeral is only supported for create mode`}),e.ephemeral&&e.initialMessage===void 0&&t.addIssue({code:u.ZodIssueCode.custom,path:[`initialMessage`],message:`ephemeral startAgent requires initialMessage`})}),response:u.discriminatedUnion(`success`,[u.object({success:u.literal(!0),agentId:u.string(),adapterId:u.string(),adapterSessionId:u.string(),sessionId:u.string(),messageId:u.string().optional()}),u.object({success:u.literal(!1),message:u.string()})])},Ze={request:u.object({adapterId:u.string(),prompt:u.string(),model:u.string().optional(),systemPrompt:u.string().optional(),responseSchema:a.optional(),providerContext:s.optional()}),response:u.object({text:u.string(),usage:u.object({inputTokens:u.number(),outputTokens:u.number()}).optional()})},Qe={request:u.object({adapterId:u.string()}),response:u.object({agents:u.array(u.object({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string()}))})},$e={request:u.object({adapterId:u.string(),agentId:u.string()}),response:u.object({agent:u.object({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string()}).nullable()})},et={request:u.object({adapterId:u.string(),agentId:u.string()}),response:u.object({success:u.boolean()})},tt={request:u.object({adapterId:u.string(),agentId:u.string(),cwd:u.string().optional(),model:u.string().optional(),adapterSessionId:u.string().optional()}),response:u.object({})},nt={request:u.object({adapterName:u.string()}),response:u.object({found:u.boolean(),adapterName:u.string(),jsonSchema:u.record(u.string(),u.unknown()).nullable()})},rt=f.extend({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string().optional()}),it=f.extend({adapterSessionId:u.string(),sessionId:u.string(),model:u.string()}),at=f.extend({sessionId:u.string(),adapterSessionId:u.string(),totalInputTokens:u.number(),totalOutputTokens:u.number(),totalCalls:u.number()}),ot=f.extend({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string(),reason:u.string().optional()}),st=f.extend({message:u.string(),timestamp:u.number(),level:u.enum([`debug`,`info`,`warn`,`error`]).optional()}),ct=f.extend({error:u.string(),sessionId:u.string().optional(),errorCategory:re.optional()}),lt=f.extend({capabilities:u.array(u.string()),nativeTools:u.array(u.string()).optional()}),ut=f.extend({provider:u.string(),quotaType:u.string(),limit:u.number(),used:u.number(),overage:u.number(),resetDate:u.string()}),dt=u.object({agentId:u.string(),adapterId:u.string(),adapterName:u.string(),sessionId:u.string().optional(),adapterSessionId:u.string(),messageId:u.string().optional(),turnId:u.string().optional(),clientId:u.string().optional(),providerConfigId:u.string().optional(),occurredAt:u.number().optional()}),ft=u.object({model:u.string().nullable(),cwd:u.string().nullable()}),pt=dt.merge(ft),mt=f.merge(ft).extend({adapterSessionId:u.string(),title:u.string().optional(),logFilePath:u.string().nullable().optional(),startedAt:u.number().finite().optional()}).and(fe);export{x as $,q as A,N as B,Ue as C,We as D,Ge as E,V as F,j as G,E as H,H as I,A as J,M as K,R as L,Ve as M,U as N,J as O,B as P,y as Q,z as R,Q as S,X as T,T as U,w as V,D as W,C as X,k as Y,b as Z,Ze as _,lt as a,g as at,Je as b,ot as c,rt as d,S as et,nt as f,Qe as g,$e as h,ut as i,_ as it,ze as j,Y as k,at as l,et as m,pt as n,m as nt,ct as o,pe as ot,tt as p,O as q,dt as r,h as rt,st as s,p as st,mt as t,v as tt,it as u,Xe as v,Z as w,qe as x,Ye as y,Ne as z};
@@ -1,39 +0,0 @@
1
- import{TurnStorageSubjects as e}from"./services/turn/namespace.mjs";import{agents as t,agentsDual as n,sessions as r,sessionsDual as i}from"./services/session/storage/schema.mjs";import"./schema-atatXwNg.mjs";import{a,i as o,n as s,o as c,r as l}from"./namespace-BxrHvS5c.mjs";import{SessionStorageSubjects as u}from"./services/session/storage/namespace.mjs";import{D as d,F as f,T as p,_ as m,d as h,f as g,g as _,h as v,k as y,m as b,p as x,u as ee,v as te,y as S}from"./handlers-CTrL8wmC.mjs";import{r as ne,t as re}from"./provider-context-Ds6GNYnE.mjs";import{AdapterRuntimeSubjects as ie}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as C}from"./services/session/messages/namespace.mjs";import{n as w}from"./namespace-UUw-S7ia.mjs";import{z as T}from"zod";import{createHash as ae}from"node:crypto";import{MakaioBus as oe,NoHandlerError as se,TimeoutError as ce}from"@makaio/framework/bus";import{AdapterSubjects as E,AgentSubjects as D,CanonicalModelSubjects as le,CompressionModeSchema as ue,ForkTransformsSchema as de,MessageRoutingSchema as fe,SessionContextSchema as pe,SessionDiscoveredSchema as me,SessionStorageSetRequestSchema as he,SessionStorageUpdateSchema as ge,SessionSubjects as O,compareMessageCursorAsc as _e,compareMessageCursorDesc as ve,isCanonicalModelParseError as ye,messageToCursor as k,parseCanonicalModel as be}from"@makaio/framework/contracts";import{BaseService as xe}from"@makaio/framework/service-base";import{createStorageNamespaceDefinition as Se}from"@makaio/framework/storage";import{blob as Ce,index as we,integer as Te,primaryKey as Ee,sqliteTable as De,text as A,uniqueIndex as Oe}from"drizzle-orm/sqlite-core";import{index as ke,primaryKey as Ae}from"drizzle-orm/pg-core";import{defineDialectSchema as j,defineDualTable as je,didAffectRows as M,getRawSqlExecutor as Me,getStorageEngine as Ne,resolveSchema as N,resolveStorageEngine as P}from"@makaio/framework/storage/drizzle";import{and as F,asc as I,count as L,desc as R,eq as z,gt as Pe,gte as Fe,inArray as B,isNull as V,lt as Ie,lte as Le,or as Re,sql as H}from"drizzle-orm";import{ClientIdentityObservationSchema as ze}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Be}from"@makaio/framework/adapters";function Ve(e){return e.on(O.agent.added,async t=>{let n=await e.requestOptional(u.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(u.set,{sessionId:t.payload.sessionId,session:r}))})}function He(e){return e.on(O.agent.removed,async t=>{let n=await e.requestOptional(u.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(f.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(u.set,{sessionId:t.payload.sessionId,session:r}))})}function Ue(e){return[Ke(e),qe(e),Je(e),We(e),Ye(e),Xe(e),Ze(e),Qe(e),$e(e),nt(e),Ve(e.bus),He(e.bus)]}function We(e){let{bus:t}=e;return t.on(O.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(O.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await Ge(t,n,r);if(s!==void 0){a.abort(),e.setResult({completion:s});return}try{let t=await o;e.setResult({completion:t.payload})}catch(e){throw e instanceof Error&&e.name===`OnceTimeoutError`?new ce(`session.turn.await`,i):e}})}async function Ge(t,n,r){let i=await t.requestOptional(e.get,{turnId:r}),a=i.handled?i.data.turn:null;if(!(a?.sessionId!==n||a.status!==`completed`&&a.status!==`error`))return{sessionId:n,turnId:r,turnNumber:a.turnNumber,success:a.status===`completed`,...a.error!==void 0&&{error:a.error},...a.initiator!==void 0&&{initiator:a.initiator}}}function Ke(e){let{bus:t}=e;return t.on(O.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:d,spawningToolCallId:f,originWindowId:p}=e.payload,m=n??crypto.randomUUID(),h=Date.now(),g={sessionId:m,createdAt:h,lastActivityAt:h,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:d,spawningToolCallId:f},_=await t.requestOptional(u.set,{sessionId:m,session:g,ifAbsent:!0});if(_.handled&&!_.data.success){e.setResult({sessionId:m});return}await t.emit(O.created,{sessionId:m,createdAt:g.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:m})})}function qe(e){let{bus:t}=e;return t.on(O.get,async e=>{let n=await t.requestOptional(u.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function Je(e){let{bus:t}=e;return t.on(O.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(u.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:o}),c=s.handled?s.data.sessions:[],l=s.handled?s.data.total:0;e.setResult({sessions:c,total:l})})}function Ye(e){let{bus:t}=e;return t.on(O.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(u.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(u.set,{sessionId:n,session:i}),await t.emit(O.closed,{sessionId:n}),e.setResult({success:!0})})}function Xe(e){let{bus:t}=e;return t.on(O.restartAgents,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(f.listBySession,{sessionId:n}),i=r.handled?r.data.agents:[],a=[];for(let e of i)try{let n=await p(t,e,{cwd:e.cwd,model:e.model});await t.requestOptional(f.updateRuntime,{agentId:n.agentId,adapterId:n.adapterId}),a.push({agentId:n.agentId,adapterId:n.adapterId,success:!0})}catch(t){let n=t instanceof Error?t.cause:void 0,r=n instanceof Error?n.message:t instanceof Error?t.message:String(t);a.push({agentId:e.agentId,adapterId:e.adapterId,success:!1,error:r})}e.setResult({sessionId:n,results:a})})}function Ze(e){let{bus:t}=e;return t.on(O.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}=e.payload,o=await t.requestOptional(u.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}),s=o.handled?o.data.success:!1;if(s){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),e.length>0&&await t.emit(O.updated,{sessionId:n,changedProperties:e})}e.setResult({success:s})})}function Qe(e){let{bus:t}=e;return t.on(O.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(u.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(u.set,{sessionId:n,session:i}),await t.emit(O.archived,{sessionId:n}),e.setResult({success:!0})})}function $e(e){let{bus:t}=e;return t.on(O.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(u.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1,error:`Session not found`});return}if(i.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let a=await t.requestOptional(u.list,{status:`all`}),o=a.handled?a.data.sessions:[];for(let e of o)e.parentSessionId===n&&await t.requestOptional(u.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let c=await t.requestOptional(s.getEvents,{sessionId:n,options:{limit:1}}),l=c.handled?c.data.totalCount:0;await t.requestOptional(s.deleteBySession,{sessionId:n}),await t.requestOptional(u.delete,{sessionId:n}),await t.emit(O.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:l})})}function et(e,t){let n=ae(`sha256`).update(`${e}\u0000${t}`).digest(`hex`);return`${n.slice(0,8)}-${n.slice(8,12)}-8${n.slice(13,16)}-9${n.slice(17,20)}-${n.slice(20,32)}`}async function tt(e,t,n,r){let i=await e.requestOptional(u.getByAdapterSessionId,{adapterSessionId:r,adapterName:n});if(i.handled&&i.data.session!==null){let e=i.data.session;if(e.adapterName===n)return{sessionId:e.sessionId,created:!1}}let a=await e.requestOptional(u.get,{sessionId:t}),o=a.handled?a.data.session:null;if(o!==null&&o.adapterName===n&&o.adapterSessionId===r)return{sessionId:o.sessionId,created:!1};throw Error(`session.registerExternal: session ID "${t}" already exists but does not carry adapter identity (${n}, ${r}); refusing to mis-attribute it`)}function nt(e){let{bus:t}=e;return t.on(O.registerExternal,async e=>{let{adapterName:n,adapterSessionId:r,lastClientIdentityObservation:i,sessionId:a,parentSessionId:o,contextInheritance:s,forkPointMessageId:c,branchKind:l,forkTransforms:d,title:f,targetWorkingDirectory:p,executionTargetId:m,spawningToolCallId:h,originWindowId:g}=e.payload,_=await t.requestOptional(u.getByAdapterSessionId,{adapterSessionId:r,adapterName:n});if(_.handled&&_.data.session!==null){let t=_.data.session;if(t.adapterName===n){e.setResult({sessionId:t.sessionId,created:!1});return}}let v=a??et(n,r),y=Date.now(),b={sessionId:v,createdAt:y,lastActivityAt:y,agents:[],status:`active`,adapterName:n,adapterSessionId:r,lastClientIdentityObservation:i,title:f,parentSessionId:o,contextInheritance:s,forkPointMessageId:c,branchKind:l,forkTransforms:d,targetWorkingDirectory:p,executionTargetId:m,spawningToolCallId:h},x=await t.requestOptional(u.set,{sessionId:v,session:b,ifAbsent:!0});if(x.handled&&!x.data.success){let i=await tt(t,v,n,r);e.setResult(i);return}await t.emit(O.created,{sessionId:v,createdAt:b.createdAt,parentSessionId:o??null,branchKind:l??null,originWindowId:g??`server`}),e.setResult({sessionId:v,created:!0})})}var rt=class extends xe{constructor(e=oe){super(e)}async onInit(){for(let e of Ue({bus:this.bus}))this.addCleanup(e);await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let t=await this.bus.requestOptional(e.listActive,{});if(!t.handled)return;let{turns:n}=t.data;for(let t of n)try{let{transitioned:n}=await this.bus.request(e.complete,{turnId:t.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});n&&await this.bus.emit(O.turn.completed,{sessionId:t.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,success:!1,error:`process-restart`})}catch(e){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${t.turnId}:`,e)}}};function it(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var at=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(E.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw it(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(ie.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw it(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};function ot(e,t,n,r){return e.on(s.append,e=>{let{event:i}=e.payload,a=t.get(i.sessionId)??[];if(n.has(i.eventId)){e.setResult({success:!0});return}a.push(i),t.set(i.sessionId,a),n.set(i.eventId,r()),e.setResult({success:!0})})}function st(e,t,n){return e.on(s.getEvents,e=>{let{sessionId:r,options:i}=e.payload,a=t.get(r)??[],o=i?.order??`asc`,s=o===`desc`?[...a].reverse():a,c=0;if(i?.after&&/^\d+$/.test(i.after)){let t=Number(i.after),r=s.findIndex(e=>{let r=n.get(e.eventId)??-1;return o===`desc`?r<t:r>t});if(r===-1){e.setResult({events:[],nextCursor:null,totalCount:a.length});return}c=r}let l=s.slice(c);if(i?.types&&i.types.length>0){let e=new Set(i.types);l=l.filter(t=>e.has(t.type))}let u=i?.limit??100,d=l.length>u,f=l.slice(0,u),p=null;if(d&&f.length>0){let e=f[f.length-1],t=n.get(e.eventId);t!==void 0&&(p=t.toString())}e.setResult({events:f,nextCursor:p,totalCount:a.length})})}function ct(e,t){return e.on(s.getByIds,e=>{let{sessionId:n,eventIds:r}=e.payload,i=t.get(n)??[],a=new Set(r),o=i.filter(e=>a.has(e.eventId));e.setResult({events:o})})}function lt(e,t,n){return e.on(s.deleteBySession,e=>{let{sessionId:r}=e.payload,i=t.get(r);if(i)for(let e of i)n.delete(e.eventId);let a=i?.length??0;t.delete(r),e.setResult({success:!0,deletedCount:a})})}function ut(e,t){return e.on(s.getEventsBySessions,e=>{let{sessionIds:n,types:r,limitPerSession:i=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let a=new Set(r),o={};for(let e of n){let n=(t.get(e)??[]).filter(e=>a.has(e.type)).reverse().slice(0,i);n.length>0&&(o[e]=n)}e.setResult({eventsBySession:o})})}function dt(e){let t=new Map,n=new Map,r=1,i=[ot(e,t,n,()=>r++),st(e,t,n),ct(e,t),lt(e,t,n),ut(e,t)];return()=>i.forEach(e=>e())}const ft=o.postgres,pt=j({sessionEvents:l},{sessionEvents:ft}),mt=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function ht(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))mt.includes(e)||(n[e]=r);return n}function gt(e){let t=JSON.parse(e.payload),n=e.type===`message`?e.messageId:e.originatingMessageId,r={...t,sessionId:e.sessionId,...e.agentId&&{agentId:e.agentId},...e.adapterId&&{adapterId:e.adapterId},...n&&{messageId:n},...e.type===`message`?{turnId:e.turnId??null}:e.turnId&&{turnId:e.turnId}};return{sessionId:e.sessionId,eventId:e.eventId,timestamp:e.timestamp,type:e.type,payload:r}}function _t(e){switch(e.type){case`user_message.sent`:{let t=e.payload.content;return typeof t==`string`?t:(Array.isArray(t.blocks)?t.blocks:[t.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
2
- `)}case`agent.added`:case`user_message.acknowledged`:case`user_message.completed`:case`turn.started`:case`turn.completed`:case`message`:case`branch.created`:case`branch.merged`:case`squash`:return null;default:return vt(e.payload)}}function vt(e){let t=e.contentText;if(typeof t==`string`&&t.length>0)return t;let n=e.summary;return typeof n==`string`&&n.length>0?n:null}function yt({bus:e,db:t,sessionEvents:n}){return e.on(s.append,async e=>{let{event:r}=e.payload,i=`payload`in r&&`agentId`in r.payload?r.payload.agentId:null,a=`payload`in r&&`adapterId`in r.payload?r.payload.adapterId:null,o=`payload`in r&&`turnId`in r.payload?r.payload.turnId:null,s=`payload`in r&&`messageId`in r.payload?r.payload.messageId:null,c=r.type===`message`?s:null,l=r.type===`message`?null:s,u={sessionId:r.sessionId,eventId:r.eventId,timestamp:r.timestamp,type:r.type,agentId:i,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:_t(r),payload:JSON.stringify(ht(r))};await t.insert(n).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function bt({bus:e,db:t,sessionEvents:n}){return e.on(s.getEvents,async e=>{let{sessionId:r,options:i}=e.payload,a=[z(n.sessionId,r)],o=i?.order??`asc`;if(i?.after){let e=parseInt(i.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(Ie(n.id,e)):a.push(Pe(n.id,e)))}i?.types&&i.types.length>0&&a.push(B(n.type,i.types));let s=i?.limit??100,c=o===`desc`?R:I,l=await t.select().from(n).where(F(...a)).orderBy(c(n.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(gt),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function xt({bus:e,db:t,sessionEvents:n}){return e.on(s.getByIds,async e=>{let{sessionId:r,eventIds:i}=e.payload,a=(await t.select().from(n).where(F(z(n.sessionId,r),B(n.eventId,i))).orderBy(I(n.timestamp))).map(gt);e.setResult({events:a})})}function St({bus:e,db:t,sessionEvents:n}){return e.on(s.deleteBySession,async e=>{let{sessionId:r}=e.payload,i=(await t.select().from(n).where(z(n.sessionId,r))).length;await t.delete(n).where(z(n.sessionId,r)),e.setResult({success:!0,deletedCount:i})})}function Ct({bus:e,db:t,sessionEvents:n}){return e.on(s.getEventsBySessions,async e=>{let{sessionIds:r,types:i,limitPerSession:a=50}=e.payload;if(r.length===0||i.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of r){let r=await t.select().from(n).where(F(z(n.sessionId,e),B(n.type,i))).orderBy(R(n.timestamp)).limit(a);r.length>0&&(o[e]=r.map(gt))}e.setResult({eventsBySession:o})})}function wt(e,t){let{sessionEvents:n}=N(t,pt),r={bus:e,db:t,sessionEvents:n},i=[yt(r),bt(r),xt(r),St(r),Ct(r)];return()=>i.forEach(e=>e())}async function Tt(e,t){e.emit(C.stored,{message:structuredClone(t)});try{await e.request(s.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function U(e){return{messageId:e.messageId,turnId:e.turnId,sessionId:e.sessionId,role:e.role,contentText:e.contentText,blocks:JSON.parse(e.blocks),agentId:e.agentId??void 0,adapterSessionId:e.adapterSessionId??void 0,adapterMessageId:e.adapterMessageId??void 0,timestamp:e.timestamp,editOf:e.editOf??void 0,origin:e.origin??void 0}}function Et(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await n.insert(r).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await Tt(t,s)})}function Dt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?R:I,l=n.select().from(r).where(z(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?Re(Ie(r.timestamp,a.timestamp),F(z(r.timestamp,a.timestamp),o?Le(r.messageId,a.messageId):Ie(r.messageId,a.messageId))):Re(Pe(r.timestamp,a.timestamp),F(z(r.timestamp,a.timestamp),o?Fe(r.messageId,a.messageId):Pe(r.messageId,a.messageId)));l=n.select().from(r).where(F(z(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?k(p[p.length-1]):null;e.setResult({messages:p.map(U),nextCursor:m})})}function Ot(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(z(r.turnId,t)).orderBy(I(r.timestamp));e.setResult({messages:i.map(U)})})}function kt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(z(r.messageId,t)).limit(1);e.setResult({message:i?U(i):null})})}function At(e){let{bus:t,db:n}=e,{messages:r}=N(n,c),i=P(n).fts;return t.on(C.search,async e=>{let{query:t,sessionId:a,limit:o}=e.payload,s=o??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let{rows:c,total:l}=await i.searchMessages(n,r,{query:t,sessionId:a,limit:s});e.setResult({messages:c.map(U),total:l})})}function jt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c),i=P(n).fts;return t.on(C.ftsSearch,async e=>{let{query:t,sessionId:a,limit:o=20}=e.payload;if(!t.trim()){e.setResult({results:[],total:0});return}let{results:s,total:c}=await i.searchMessageExcerpts(n,r,{query:t,sessionId:a,limit:o});e.setResult({results:s,total:c})})}function Mt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(z(r.adapterMessageId,t)).limit(1);e.setResult({message:i?U(i):null})})}function Nt(e){let{bus:t,db:n}=e,{messages:r}=N(n,c);return t.on(C.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await n.select({messageId:r.messageId}).from(r).where(z(r.adapterMessageId,i)).limit(1);if(m){e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();await n.insert(r).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}),e.setResult({messageId:h,created:!0}),await Tt(t,{messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0})})}function Pt(e,t){let n={bus:e,db:t},r=[Et(n),Dt(n),Ot(n),kt(n),At(n),jt(n),Nt(n),Mt(n)];return()=>r.forEach(e=>e())}function Ft(e,t){return _e(k(e),k(t))}function It(e,t){return ve(k(e),k(t))}function Lt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Rt(t,n,r,i),o=[zt(e,t,a),Bt(e,t,n),Vt(e,t,r),Ht(e,t),Ut(e,t),Wt(e,i,a),Gt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Rt(e,t,n,r){return i=>{e.set(i.messageId,i);let a=t.get(i.sessionId)??[];if(a.push(i.messageId),t.set(i.sessionId,a),i.turnId){let e=n.get(i.turnId)??[];e.push(i.messageId),n.set(i.turnId,e)}i.adapterMessageId&&r.set(i.adapterMessageId,i.messageId)}}function zt(e,t,n){return e.on(C.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await Tt(e,o)})}function Bt(e,t,n){return e.on(C.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?It:Ft,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?ve(k(e),a):_e(k(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?k(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Vt(e,t,n){return e.on(C.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Ft);e.setResult({messages:i})})}function Ht(e,t){return e.on(C.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Ut(e,t){return e.on(C.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(Ft),e.setResult({messages:c.slice(0,a),total:c.length})})}function Wt(e,t,n){return e.on(C.upsertByAdapterMessageId,async r=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=r.payload,m=t.get(i);if(m){r.setResult({messageId:m,created:!1});return}let h=crypto.randomUUID(),g={messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0};n(g),r.setResult({messageId:h,created:!0}),await Tt(e,g)})}function Gt(e,t,n,r,i){return e.on(u.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}n.adapterMessageId&&i.delete(n.adapterMessageId)}}n.delete(a)})}const Kt=je(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(a,{onDelete:`cascade`}),agentId:e.text(`agent_id`).notNull(),status:e.textEnum(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:e.epochMs(`timestamp`).notNull(),error:e.text(`error`)}),{sqlite:e=>[Ee({columns:[e.messageId,e.agentId,e.status]}),we(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[Ae({columns:[e.messageId,e.agentId,e.status]}),ke(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),qt=Kt.sqlite,Jt=Se(`messageRouting`,{schemas:{record:{request:fe,response:T.object({success:T.boolean()})},getByMessage:{request:T.object({messageId:T.string()}),response:T.object({routing:T.array(fe)})},getCompleted:{request:T.object({messageId:T.string()}),response:T.object({agentIds:T.array(T.string())})},isComplete:{request:T.object({messageId:T.string(),targetAgentIds:T.array(T.string())}),response:T.object({complete:T.boolean(),pending:T.array(T.string())})}},extensions:{drizzle:{messageRouting:qt}}}),W=Jt.subjects,Yt=Kt.postgres,Xt=j({messageRouting:qt},{messageRouting:Yt});function Zt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function Qt(e,t){let{messageRouting:n}=N(t,Xt),r=[];return r.push(e.on(W.record,async e=>{let{messageId:r,agentId:i,status:a,timestamp:o,error:s}=e.payload;await t.insert(n).values({messageId:r,agentId:i,status:a,timestamp:o,error:s??null}).onConflictDoUpdate({target:[n.messageId,n.agentId,n.status],set:{timestamp:o,error:s??null}}),e.setResult({success:!0})})),r.push(e.on(W.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(z(n.messageId,r));e.setResult({routing:i.map(Zt)})})),r.push(e.on(W.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(F(z(n.messageId,r),z(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(W.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(F(z(n.messageId,r),z(n.status,`completed`))),o=new Set(a.map(e=>e.agentId)),s=i.filter(e=>!o.has(e));e.setResult({complete:s.length===0,pending:s})})),()=>r.forEach(e=>e())}var $t=class{byAgent=new Map;add(e){let t=this.byAgent.get(e.agentId);t?(t.inputTokens+=e.inputTokens,t.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,outputTokens:e.outputTokens})}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n={};for(let[r,i]of this.byAgent)e+=i.inputTokens,t+=i.outputTokens,n[r]={...i};return{total:{inputTokens:e,outputTokens:t},byAgent:n}}flush(){let e=this.snapshot();return this.byAgent.clear(),e}clear(){this.byAgent.clear()}},en=class{bus;activeTurns=new Map;usageAccumulators=new Map;completingSessions=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;cleanups=[];constructor(e){this.bus=e}async createTurn(t,n,r,i){let a=await this.bus.requestOptional(e.create,{sessionId:t,...i!==void 0&&{turnId:i},...r!==void 0&&{initiator:r}}),o,s;if(a.handled)o=a.data.turn.turnId,s=a.data.turn.turnNumber;else{o=i??crypto.randomUUID();let e=(this.syntheticTurnCounters.get(t)??0)+1;this.syntheticTurnCounters.set(t,e),s=e}let c=new S({sessionId:t,agentIds:n,turnId:o,turnNumber:s,initiator:r});return this.activeTurns.set(t,c),this.usageAccumulators.set(t,new $t),c}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(D.usage,e=>{let{agentId:t,turnId:n,inputTokens:r,outputTokens:i}=e.payload;if(!n){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${t}).`);return}let a=this.findActiveTurnByTurnId(n);if(!a){console.warn(`[SessionTurnManager] Dropping usage for inactive turn ${n} (agentId=${t}).`);return}if(!a.hasAgent(t)){console.warn(`[SessionTurnManager] Dropping usage for turn ${n}: agent ${t} is not part of the turn.`);return}if(this.completingSessions.has(a.sessionId)){this.bufferUsageDuringCompletion(a.sessionId,{agentId:t,inputTokens:r,outputTokens:i});return}this.usageAccumulators.get(a.sessionId)?.add({agentId:t,inputTokens:r,outputTokens:i})})),this.cleanups.push(this.bus.on(D.complete,async t=>{let{agentId:n,outcome:r,error:i}=t.payload,a=r!==`error`;await this.handleAgentCompletion(n,a,a?void 0:i,e)}))}async completeTurn(t,n){if(this.completingSessions.has(t.sessionId))return;this.completingSessions.add(t.sessionId);let r=this.usageAccumulators.get(t.sessionId),i=r?.snapshot();try{await this.bus.requestOptional(e.complete,{turnId:t.turnId,status:n.success?`completed`:`error`,error:n.errors.length>0?n.errors.join(`; `):void 0,...i!==void 0&&{usage:i}});let a=this.bufferedUsageDuringCompletion.get(t.sessionId)??[];if(a.length>0){for(let e of a)r?.add(e);this.bufferedUsageDuringCompletion.delete(t.sessionId);let o=r?.snapshot();i=o,await this.bus.requestOptional(e.complete,{turnId:t.turnId,status:n.success?`completed`:`error`,error:n.errors.length>0?n.errors.join(`; `):void 0,...o!==void 0&&{usage:o}})}}catch(e){throw this.completingSessions.delete(t.sessionId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${t.turnId}:`,e),e}r?.clear(),this.activeTurns.delete(t.sessionId),this.usageAccumulators.delete(t.sessionId),this.completingSessions.delete(t.sessionId),await this.bus.emit(O.turn.completed,{sessionId:t.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,success:n.success,error:n.errors.length>0?n.errors.join(`; `):void 0,...i!==void 0&&{usage:i},initiator:t.initiator})}getActiveTurn(e){return this.activeTurns.get(e)}getActiveTurnsMap(){return this.activeTurns}findActiveTurnByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.activeTurns.clear(),this.usageAccumulators.clear(),this.completingSessions.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear()}async handleAgentCompletion(e,t,n,r){let i=b(this.activeTurns,e);if(!i)return;let a=t?i.markAgentCompleted(e):i.markAgentErrored(e,n??`Unknown error`);for(let r of i.messageIds)await this.bus.emit(O.user_message.completed,{sessionId:i.sessionId,turnId:i.turnId,turnNumber:i.turnNumber,messageId:r,agentId:e,outcome:t?`completed`:`error`,error:n});a.turnComplete&&await r(i,a.result)}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}},tn=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=oe,t){this.bus=e,this.turnManager=new en(e),this.adapterRegistry=new at(e),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(O.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:s}=e.payload,c=x(o,e.payload.extensionId),l=e.payload.sessionContext?pe.parse(e.payload.sessionContext):void 0,{sessionId:u,session:p}=await v(this.bus,t,l,e.payload.originWindowId);if(p.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,u,n,l),t=await this.resolveAdapterName(e,u),r=h(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=e.providerConfigId===void 0?void 0:await ne(this.bus,e.providerConfigId);i!==void 0&&await re(this.bus,i);let o=await this.bus.request(E.startAgent,{adapterId:r,sessionId:u,role:`lead`,...i!==void 0&&{providerContext:i},...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...l!==void 0&&{sessionContext:l}});if(!o.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${u}, adapterName=${t}): ${o.message}`);let s=Date.now();p.agents.push({agentId:o.agentId,adapterId:o.adapterId,adapterName:t,sessionId:u,role:`lead`,status:`idle`,...e.providerConfigId!==void 0&&{providerConfigId:e.providerConfigId},createdAt:s,lastActivityAt:s}),p.leadAgentId=o.agentId,e.providerConfigId!==void 0&&await this.bus.requestOptional(f.updateRuntime,{agentId:o.agentId,providerConfigId:e.providerConfigId})}let g=_(p,r);if(g.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${u})`);let y=new Set;for(let e of g){let t=await this.bus.requestOptional(E.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&y.add(e.agentId)}let b;if(y.size>0){b=await d(this.bus,p);for(let e of g)y.has(e.agentId)&&await this.bus.requestOptional(E.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let S=this.turnManager.getActiveTurn(u),ie=!S;S||=await this.turnManager.createTurn(u,g.map(e=>e.agentId),c,e.payload.turnId);let w=crypto.randomUUID();S.addMessage(w);let T=te(n);this.bus.requestOptional(C.append,{message:{messageId:w,turnId:S.turnId,sessionId:u,role:`user`,contentText:m(n),blocks:T,timestamp:Date.now(),...s!==void 0&&{origin:s}}}).catch(e=>{console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:u,messageId:w,error:e instanceof Error?e.message:String(e)})});for(let e of g)this.bus.requestOptional(W.record,{messageId:w,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:u,messageId:w,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});ie&&await this.bus.emit(O.turn.started,{sessionId:u,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,agentIds:[...S.agentIds],initiator:S.initiator}),await this.bus.emit(O.user_message.sent,{sessionId:u,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,content:n,agentIds:g.map(e=>e.agentId),...o!==void 0&&{source:o},...s!==void 0&&{origin:s}});let ae=b?{...l,...b}:l;await ee(this.bus,p,g,n,w,S,i,this.completeTurn.bind(this),ae,e.payload.responseSchema),e.setResult({messageId:w,turnId:S.turnId,sessionId:u})}))}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}async resolveAdapterName(e,t){let n=h(e.adapterName),r=h(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?g(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=be(e.model);if(ye(i))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${e.model}" (sessionId=${t}): ${i.message}`);if(i.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${t})`);let a=await this.bus.request(le.resolve,{parsed:i,context:{sessionId:t,promptText:m(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},nn=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(C.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof se||console.warn(`[TurnContextEnricher] Failed to load turn-so-far context:`,e),[]}}async enrichForDeliveryMode(e,t,n){if(n!==`immediate`)return e;let r=await this.getTurnSoFarContext(t);return r.length===0?e:[...e??[],...r]}convertSessionMessagesToMessages(e){return e.map(e=>({role:e.role,blocks:e.blocks}))}};function rn(e){let{bus:t}=e;return t.on(O.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(u.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function an(e){let{bus:t}=e;return t.on(O.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(u.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(u.set,{sessionId:n,session:r}),await t.emit(O.resumed,{sessionId:n}),e.setResult({success:!0})})}function on(e){return e.on(w.listActions,e=>{let t=y.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const sn=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function cn(e){return{...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools}}}var ln=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=oe){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(O.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(O.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&(this.agentToSession.delete(t),this.agentContext.delete(t),this.agentBlocks.delete(t))}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(O.turn.started,e=>{let{sessionId:t,turnId:n,agentIds:r}=e.payload;for(let e of r){let r=this.agentContext.get(e);this.agentContext.set(e,{...r,sessionId:t,turnId:n}),this.agentBlocks.set(e,[])}})),this.cleanups.push(this.bus.on(O.user_message.acknowledged,e=>{let t=this.agentContext.get(e.payload.agentId);this.agentContext.set(e.payload.agentId,{...t,sessionId:e.payload.sessionId,turnId:e.payload.turnId}),this.agentBlocks.has(e.payload.agentId)||this.agentBlocks.set(e.payload.agentId,[])}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(D.message,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(D.reasoning,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(D.tool.use,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(D.tool.completed,e=>{let t=this.agentBlocks.get(e.payload.agentId);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(D.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}))}async storeAssistantMessage(e,t,n,r){let i=this.agentContext.get(e);if(!i?.turnId)return;let a=r===void 0?this.agentBlocks.get(e)??[]:r.content===void 0?[]:[{type:`text`,content:r.content}];if(a.length===0&&!n){this.agentBlocks.delete(e);return}let o=a.filter(e=>e.type===`text`).map(e=>e.content).join(`
3
- `),s=crypto.randomUUID();try{if(!(await this.bus.requestOptional(C.append,{message:{messageId:s,turnId:i.turnId,sessionId:i.sessionId,role:`assistant`,contentText:o||(n?`[Error: ${n}]`:``),blocks:a,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let r=await this.bus.requestOptional(C.getByTurn,{turnId:i.turnId});if(r.handled){let t=r.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(W.record,{messageId:t.messageId,agentId:e,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}this.agentBlocks.delete(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.agentContext.clear(),this.agentBlocks.clear()}},un=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(O.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(O.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(O.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(O.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(O.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(O.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(O.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function dn(e,t,n,r,i,a){return new un(e,t,n,r,i,a)}function fn(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function G(e,t){let n=t.lastClientIdentityObservation;if(t.clientAccountId!==void 0&&!n)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without lastClientIdentityObservation`);if(t.clientAccountId!==void 0&&t.clientId===void 0)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without clientId`);if(n&&t.clientId!==void 0&&t.clientId!==n.clientId)throw Error(`Session "${t.sessionId}" cannot persist clientId "${t.clientId}" because lastClientIdentityObservation belongs to "${n.clientId}"`)}function K(e,t,n){let r=fn(t,n);if(!r)return;let i=n.lastClientIdentityObservation;if(!i)return;let a={sessionId:n.sessionId,clientId:i.clientId,previousClientAccountId:r.previousClientAccountId,clientAccountId:r.clientAccountId,source:i.source,observedAt:i.observedAt,lastClientIdentityObservation:structuredClone(i)};queueMicrotask(()=>{Promise.resolve().then(()=>e.emit(O.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function pn(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function mn(e){switch(e.kind){case`root`:return{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null};case`fork`:return{kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:return{kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:return{kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};default:return e.kind}}function hn(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}const gn=hn();function _n(e,t,n){n!==void 0&&(e[t]=n)}function vn(e,t,n){let r=e.startedAt??n;return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:`discovered`,branchKind:pn(e.kind),adapterName:e.source,adapterSessionId:e.externalSessionId,adapterId:e.adapterId,clientId:e.clientId,isOrchestrated:!1,isImported:!0,title:e.title??void 0,targetWorkingDirectory:e.cwd??void 0,source:e.source,parentExternalSessionId:e.parentAdapterSessionId??void 0,logFilePath:e.logFilePath??void 0,discoveredAt:n,importStatus:`discovered`,forkPointMessageId:e.forkPointMessageId??void 0}}function yn(e,t,n){let r=e.importStatus??`discovered`;r===`discovered`&&(e.status=`discovered`),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function bn(e,t){t.logFilePath!==void 0&&t.logFilePath!==null&&(e.logFilePath??=t.logFilePath),t.cwd!==null&&(e.targetWorkingDirectory=t.cwd),t.title!==void 0&&t.title!==null&&(e.title=t.title),t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=pn(t.kind);n!==void 0&&(e.branchKind=n),_n(e,`adapterId`,t.adapterId),_n(e,`clientId`,t.clientId)}function xn(e,t,n){t.startedAt!==void 0&&((n===void 0||e.createdAt===n)&&(e.createdAt=t.startedAt),(n===void 0||e.lastActivityAt===n)&&(e.lastActivityAt=t.startedAt))}function Sn(e,t,n){let r=e.discoveredAt;yn(e,t,n),bn(e,t),xn(e,t,r)}function Cn(e,t){if(t.parentExternalSessionId===void 0)return;let n=t.source??t.adapterName,r=Array.from(e.values()).find(e=>e.adapterSessionId===t.parentExternalSessionId&&(e.source??e.adapterName)===n);r&&(t.parentSessionId=r.sessionId,t.rootSessionId=r.rootSessionId??r.sessionId)}function wn(e,t,n){if(n){e.emit(O.created,{sessionId:t.sessionId,parentSessionId:t.parentSessionId??null,branchKind:t.branchKind??null,createdAt:t.createdAt}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e));return}e.emit(O.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function Tn(e){let t=0,n=0,r=0;for(let i of e)i.importStatus===`imported`&&(t+=1),i.importStatus===`tracking`&&(n+=1),i.importStatus===`discovered`&&(r+=1);return{total:e.length,imported:t,tracking:n,discovered:r}}function En(e,t,n){e.emit(O.importStatusChanged,{sessionId:t.sessionId,importStatus:n}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let r=t.source??t.adapterName;n!==`imported`||t.adapterSessionId===void 0||r===void 0||e.emit(O.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function Dn(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(u.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=gn(),o=i===void 0,s=i??vn(r,crypto.randomUUID(),a);i?(Sn(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&Cn(n,i)):(n.set(s.sessionId,s),Cn(n,s)),wn(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(u.getByLogFilePath,async e=>{let a=Array.from(n.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!a){e.setResult({session:null});return}let o=await i(t,a.sessionId);e.setResult({session:{...r(a),agents:o}})}),t.on(u.listImported,async e=>{let{source:a,importStatus:o}=e.payload,s=Array.from(n.values()).filter(e=>e.isImported===!0).filter(e=>a===void 0||e.source===a).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...r(e),agents:await i(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(u.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(Tn(t))}),t.on(u.updateImportStatus,e=>{let r=n.get(e.payload.sessionId),i=e.payload.importStatus;if(!r||r.importStatus===i){e.setResult({success:!1});return}r.importStatus=i,i===`imported`&&r.status===`discovered`&&(r.status=`active`),e.setResult({success:!0}),En(t,r,i)})]}async function On(e,t){let n=await e.requestOptional(f.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function q(e){return structuredClone(e)}function J(e,t,n){n!==void 0&&(e[t]=n)}function kn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function An(e,t){let n=e;return t.status!==`all`&&(n=n.filter(e=>e.status===t.status)),t.executionTargetId!==void 0&&(n=n.filter(e=>e.executionTargetId===t.executionTargetId)),n}function jn(e,t){J(e,`status`,t.status),J(e,`parentSessionId`,t.parentSessionId),J(e,`contextInheritance`,t.contextInheritance),J(e,`rootSessionId`,t.rootSessionId),J(e,`forkPointMessageId`,t.forkPointMessageId),J(e,`branchKind`,t.branchKind),J(e,`isOrchestrated`,t.isOrchestrated),J(e,`clientId`,t.clientId),J(e,`clientAccountId`,t.clientAccountId),J(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),J(e,`title`,t.title),J(e,`targetWorkingDirectory`,t.targetWorkingDirectory),J(e,`createdAt`,t.createdAt),J(e,`lastActivityAt`,t.lastActivityAt),kn(e,`executionTargetId`,t.executionTargetId),kn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function Mn(e,t){return e.on(u.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=An(Array.from(t.values()),{status:r,executionTargetId:s});c.sort((e,t)=>t.lastActivityAt-e.lastActivityAt);let l=c.length;i!==void 0&&(c=c.slice(a,a+i));let u=await Promise.all(c.map(async t=>({...q(t),agents:await On(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function Nn(e,t){return e.on(u.update,async n=>{let r=structuredClone(ge.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=q(i);G(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),jn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),K(e,a,q(i))})}function Pn(e){let t=new Map,n=[];return n.push(e.on(u.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await On(e,n.payload.sessionId);n.setResult({session:{...q(r),agents:i}})})),n.push(e.on(u.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=he.parse(n.payload);if(a&&t.has(r)){n.setResult({success:!1,clientAccountChanged:!1});return}let o=structuredClone(i),s=t.get(r)??null,c=s?q(s):null;G(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),K(e,c,q(o))})),n.push(e.on(u.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(Mn(e,t)),n.push(e.on(u.getChildren,e=>{let{sessionId:n}=e.payload,r=Array.from(t.values()),i=r.filter(e=>e.parentSessionId===n),a=new Set(r.map(e=>e.parentSessionId).filter(e=>!!e)),o=i.map(e=>({sessionId:e.sessionId,title:e.title??null,forkPointMessageId:e.forkPointMessageId??null,branchKind:e.branchKind??null,messageCount:0,hasChildren:a.has(e.sessionId),spawningToolCallId:e.spawningToolCallId}));e.setResult({children:o})})),n.push(e.on(u.getStatusCounts,e=>{e.payload;let n=Array.from(t.values()),r=n.filter(e=>e.status===`active`).length,i=n.filter(e=>e.status===`closed`).length,a=n.filter(e=>e.status===`archived`).length,o=n.filter(e=>e.status===`discovered`).length;e.setResult({all:r+i+a+o,active:r,closed:i,archived:a,discovered:o})})),n.push(Nn(e,t)),n.push(Fn(e,t)),n.push(...Dn({bus:e,store:t,populateAgents:On,cloneSession:q})),()=>n.forEach(e=>e())}function Fn(e,t){return e.on(u.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i,adapterName:a}=n.payload,o=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)&&(a===void 0||e.adapterName===a)),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let c=await e.requestOptional(f.listBySession,{sessionId:s.sessionId}),l=c.handled?c.data.agents:[];n.setResult({session:{...q(s),agents:l}})})}const In=i.postgres,Ln=n.postgres,Y=j({sessions:r,agents:t},{sessions:In,agents:Ln});function Rn(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return F(n===null?V(t.clientId):z(t.clientId,n),r===null?V(t.clientAccountId):z(t.clientAccountId,r),i===null?V(t.lastClientIdentityObservation):z(t.lastClientIdentityObservation,i))}function zn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0,allowedDirectories:e.allowedDirectories??void 0,providerConfigId:e.providerConfigId??void 0,personaId:e.personaId??void 0,profileId:e.profileId??void 0,harnessId:e.harnessId??void 0,clientId:e.clientId??void 0,compressionMode:e.compressionMode?ue.parse(e.compressionMode):void 0}}function Bn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??null,adapterSessionId:e.adapterSessionId??null,cwd:e.cwd??null,allowedDirectories:e.allowedDirectories??null,providerConfigId:e.providerConfigId??null,personaId:e.personaId??null,profileId:e.profileId??null,harnessId:e.harnessId??null,clientId:e.clientId??null,compressionMode:e.compressionMode??null}}function Vn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function Hn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.get,async e=>{let[t]=await n.select().from(r).where(z(r.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?zn(t):null})})}function Un(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.set,async e=>{let{agent:t}=e.payload,i=Bn(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:i});e.setResult({success:M(a)})})}function Wn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.delete,async e=>{let t=await n.delete(r).where(z(r.agentId,e.payload.agentId));e.setResult({success:M(t)})})}function Gn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.listByAdapter,async e=>{let{adapterName:t,status:i}=e.payload,a=[z(r.adapterName,t)];i&&i!==`all`&&a.push(z(r.status,i));let o=a.length>1?F(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(zn)})})}function Kn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.listBySession,async e=>{let{sessionId:t}=e.payload,i=await n.select().from(r).where(z(r.sessionId,t));e.setResult({agents:i.map(zn)})})}function qn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.updateStatus,async e=>{let{agentId:t,status:i}=e.payload,a=Date.now(),o=await n.update(r).set({status:i,lastActivityAt:a}).where(z(r.agentId,t));e.setResult({success:M(o)})})}function Jn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.updateActivity,async e=>{let{agentId:t,lastActivityAt:i}=e.payload,a=await n.update(r).set({lastActivityAt:i}).where(z(r.agentId,t));e.setResult({success:M(a)})})}function Yn(e){let{bus:t,db:n}=e,{agents:r}=N(n,Y);return t.on(f.updateRuntime,async e=>{let{agentId:t,adapterId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=e.payload,l={lastActivityAt:Date.now()};i!==void 0&&(l.adapterId=i),a!==void 0&&(l.cwd=a),o!==void 0&&(l.model=o),s!==void 0&&(l.allowedDirectories=s),c!==void 0&&(l.providerConfigId=c);let u=await n.update(r).set(l).where(z(r.agentId,t));e.setResult({success:M(u)})})}function Xn(e,t){let n={bus:e,db:t},r=[Hn(n),Un(n),Wn(n),Gn(n),Kn(n),qn(n),Jn(n),Yn(n)];return()=>Vn(r)}function X(e){return e??void 0}function Zn(e){if(e)try{let t=JSON.parse(e),n=ze.safeParse(t);return n.success?n.data:void 0}catch{return}}function Qn(e){if(e)try{let t=JSON.parse(e),n=de.safeParse(t);return n.success?n.data:void 0}catch{return}}function Z(e,t){let n=Qn(e.forkTransforms),r=Zn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:X(e.leadAgentId),parentSessionId:X(e.parentSessionId),contextInheritance:X(e.contextInheritance),rootSessionId:X(e.rootSessionId),forkPointMessageId:X(e.forkPointMessageId),branchKind:X(e.branchKind),adapterName:X(e.adapterName),adapterSessionId:X(e.adapterSessionId),adapterId:X(e.adapterId),clientId:X(e.clientId),clientAccountId:X(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:X(e.isOrchestrated),isImported:X(e.isImported),title:X(e.title),summary:X(e.summary),summaryUpdatedAt:X(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:X(e.targetWorkingDirectory),executionTargetId:X(e.executionTargetId),agents:t.map(zn),approvalPolicyOverride:X(e.approvalPolicyOverride),spawningToolCallId:X(e.spawningToolCallId),source:X(e.source),parentExternalSessionId:X(e.parentExternalSessionId),logFilePath:X(e.logFilePath),discoveredAt:X(e.discoveredAt),importStatus:X(e.importStatus)}}function $n(e){let t=new Map;for(let n of e){let e=t.get(n.sessionId)??[];e.push(n),t.set(n.sessionId,e)}return t}async function er(e,t,n){if(!n||t.length===0)return{};let{messages:r}=N(e,c),i=e.select({sessionId:r.sessionId,minTimestamp:H`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(F(z(r.role,`user`),B(r.sessionId,t))).groupBy(r.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:r.sessionId,preview:r.contentText}).from(r).innerJoin(i,F(z(r.sessionId,i.sessionId),z(r.timestamp,i.minTimestamp))).where(z(r.role,`user`)),o=new Map;for(let e of a)o.has(e.sessionId)||o.set(e.sessionId,e.preview);let s=await e.select({sessionId:r.sessionId,count:L()}).from(r).where(B(r.sessionId,t)).groupBy(r.sessionId),l=new Map;for(let e of s)l.set(e.sessionId,e.count);return{previewBySession:o,countBySession:l}}function tr(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function nr(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function rr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.getByAdapterSessionId,async e=>{let{adapterSessionId:t,source:a,adapterName:o}=e.payload,s=[z(r.adapterSessionId,t)];a!==void 0&&s.push(z(r.source,a)),o!==void 0&&s.push(z(r.adapterName,o));let c=await n.select().from(r).where(F(...s)).limit(2),l=c[0];if(c.length!==1||l===void 0){e.setResult({session:null});return}let u=await n.select().from(i).where(z(i.sessionId,l.sessionId));e.setResult({session:Z(l,u)})})}function ir(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y),{messages:i}=N(n,c);return t.on(u.getChildren,async e=>{let{sessionId:t}=e.payload,a=await n.select().from(r).where(z(r.parentSessionId,t));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await n.select({sessionId:i.sessionId,count:L()}).from(i).where(B(i.sessionId,o)).groupBy(i.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await n.select({parentSessionId:r.parentSessionId,count:L()}).from(r).where(B(r.parentSessionId,o)).groupBy(r.parentSessionId),u=new Set;for(let e of l)e.parentSessionId&&u.add(e.parentSessionId);let d=a.map(e=>e.forkPointMessageId).filter(e=>e!==null),f=new Map;if(d.length>0){let e=await n.select({messageId:i.messageId,adapterMessageId:i.adapterMessageId}).from(i).where(F(z(i.sessionId,t),B(i.adapterMessageId,d)));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}const ar=hn();function or(e,t,n){return t===void 0?H`${e}`:H`
4
- CASE
5
- WHEN ${n.discoveredAt} IS NULL OR ${e} = ${n.discoveredAt} THEN ${t}
6
- ELSE ${e}
7
- END
8
- `}function sr(e,t){return{status:H`
9
- CASE
10
- WHEN COALESCE(${e.importStatus}, excluded.import_status) = 'discovered' THEN excluded.status
11
- ELSE ${e.status}
12
- END
13
- `,isImported:!0,importStatus:H`COALESCE(${e.importStatus}, excluded.import_status)`,adapterName:H`COALESCE(${e.adapterName}, excluded.adapter_name)`,discoveredAt:H`COALESCE(${e.discoveredAt}, excluded.discovered_at)`,source:H`COALESCE(${e.source}, excluded.source)`,logFilePath:H`COALESCE(${e.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:H`COALESCE(excluded.target_working_directory, ${e.targetWorkingDirectory})`,title:H`COALESCE(excluded.title, ${e.title})`,forkPointMessageId:H`COALESCE(excluded.fork_point_message_id, ${e.forkPointMessageId})`,parentExternalSessionId:H`COALESCE(excluded.parent_external_session_id, ${e.parentExternalSessionId})`,branchKind:H`COALESCE(excluded.branch_kind, ${e.branchKind})`,adapterId:H`COALESCE(excluded.adapter_id, ${e.adapterId})`,clientId:H`COALESCE(excluded.client_id, ${e.clientId})`,createdAt:or(e.createdAt,t,e),lastActivityAt:or(e.lastActivityAt,t,e)}}function cr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.importUpsert,async e=>{let{externalSessionId:i,source:a,clientId:o,adapterId:s,cwd:c,logFilePath:l,startedAt:u,title:d,kind:f,parentAdapterSessionId:p,forkPointMessageId:m}=e.payload,h=ar(),g=crypto.randomUUID(),_=u??h,v=pn(f)??null,y=p??null,[b]=await n.insert(r).values({sessionId:g,status:`discovered`,isImported:!0,importStatus:`discovered`,adapterName:a,adapterSessionId:i,source:a??null,clientId:o??null,adapterId:s??null,targetWorkingDirectory:c??null,logFilePath:l??null,forkPointMessageId:m??null,branchKind:v,parentExternalSessionId:y,discoveredAt:h,title:d??null,createdAt:_,lastActivityAt:_}).onConflictDoUpdate({target:[r.source,r.adapterSessionId],set:sr(r,u)}).returning({sessionId:r.sessionId,discoveredAt:r.discoveredAt,parentExternalSessionId:r.parentExternalSessionId,parentSessionId:r.parentSessionId}),x=b.sessionId===g;await lr(t,n,b,x,v,_,a),e.setResult({sessionId:b.sessionId,created:x})})}async function lr(e,t,n,r,i,a,o){if(r){let r=await ur(t,n.sessionId,n.parentExternalSessionId,o);e.emit(O.created,{sessionId:n.sessionId,parentSessionId:r,branchKind:i,createdAt:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e))}else n.parentExternalSessionId!==null&&n.parentSessionId===null&&await ur(t,n.sessionId,n.parentExternalSessionId,o),e.emit(O.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function ur(e,t,n,r){let{sessions:i}=N(e,Y);if(n===null)return null;let[a]=await e.select({sessionId:i.sessionId,rootSessionId:i.rootSessionId}).from(i).where(F(z(i.adapterSessionId,n),z(i.source,r))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(i).set({parentSessionId:a.sessionId,rootSessionId:o}).where(z(i.sessionId,t)),a.sessionId}function dr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.getByLogFilePath,async e=>{let{logFilePath:t}=e.payload,[a]=await n.select().from(r).where(z(r.logFilePath,t)).limit(1);if(!a){e.setResult({session:null});return}let o=await n.select().from(i).where(z(i.sessionId,a.sessionId));e.setResult({session:Z(a,o)})})}function fr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.listImported,async e=>{let{source:t,importStatus:a}=e.payload,o=[z(r.isImported,!0)];t!==void 0&&o.push(z(r.source,t)),a!==void 0&&o.push(z(r.importStatus,a));let s=F(...o),c=await n.select().from(r).where(s).orderBy(R(r.createdAt));if(c.length===0){e.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=$n(await n.select().from(i).where(B(i.sessionId,l)));e.setResult({sessions:c.map(e=>Z(e,u.get(e.sessionId)??[]))})})}function pr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.countBySource,async e=>{let{source:t}=e.payload,i=await n.select({importStatus:r.importStatus,count:H`count(*)`}).from(r).where(F(z(r.isImported,!0),z(r.source,t))).groupBy(r.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function mr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:H`
14
- CASE
15
- WHEN ${r.status} = 'discovered' THEN 'active'
16
- ELSE ${r.status}
17
- END
18
- `}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(F(z(r.sessionId,i),Re(V(r.importStatus),H`${r.importStatus} <> ${a}`))).returning({adapterSessionId:r.adapterSessionId,adapterName:r.adapterName,source:r.source}),c=s!==void 0;if(e.setResult({success:c}),c){t.emit(O.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&t.emit(O.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function hr(e,t){let n={bus:e,db:t};return[cr(n),dr(n),fr(n),pr(n),mr(n)]}function Q(e){return e??null}function gr(e){return e?JSON.stringify(e):null}function _r(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:Q(e.leadAgentId),parentSessionId:Q(e.parentSessionId),contextInheritance:Q(e.contextInheritance),rootSessionId:Q(e.rootSessionId),forkPointMessageId:Q(e.forkPointMessageId),branchKind:Q(e.branchKind),adapterName:Q(e.adapterName),adapterSessionId:Q(e.adapterSessionId),adapterId:Q(e.adapterId),clientId:Q(e.clientId),clientAccountId:Q(e.clientAccountId),lastClientIdentityObservation:vr(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:Q(e.title),summary:Q(e.summary),summaryUpdatedAt:Q(e.summaryUpdatedAt),forkTransforms:gr(e.forkTransforms),targetWorkingDirectory:Q(e.targetWorkingDirectory),executionTargetId:Q(e.executionTargetId),approvalPolicyOverride:Q(e.approvalPolicyOverride),spawningToolCallId:Q(e.spawningToolCallId),source:Q(e.source),parentExternalSessionId:Q(e.parentExternalSessionId),logFilePath:Q(e.logFilePath),discoveredAt:Q(e.discoveredAt),importStatus:Q(e.importStatus)}}function vr(e){return e?JSON.stringify(e):null}function $(e,t,n){n!==void 0&&(e[t]=n)}function yr(e,t,n){n!==void 0&&(e[t]=n??null)}function br(e,t){let n={};return $(n,`status`,e.status),$(n,`parentSessionId`,e.parentSessionId),$(n,`contextInheritance`,e.contextInheritance),$(n,`rootSessionId`,e.rootSessionId),$(n,`forkPointMessageId`,e.forkPointMessageId),$(n,`branchKind`,e.branchKind),$(n,`isOrchestrated`,e.isOrchestrated),$(n,`clientId`,e.clientId),$(n,`clientAccountId`,e.clientAccountId),$(n,`title`,e.title),$(n,`targetWorkingDirectory`,e.targetWorkingDirectory),$(n,`createdAt`,e.createdAt),$(n,`lastActivityAt`,e.lastActivityAt),yr(n,`executionTargetId`,e.executionTargetId),yr(n,`approvalPolicyOverride`,e.approvalPolicyOverride),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=H`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=vr(e.lastClientIdentityObservation)),n}function xr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.get,async e=>{let[t]=await n.select().from(r).where(z(r.sessionId,e.payload.sessionId)).limit(1);if(!t){e.setResult({session:null});return}let a=await n.select().from(i).where(z(i.sessionId,e.payload.sessionId));e.setResult({session:Z(t,a)})})}function Sr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=he.parse(e.payload),s=_r(a);if(o){G(null,a);let o=M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&K(t,null,a);return}for(let o=0;o<3;o++){let[o]=await n.select().from(r).where(z(r.sessionId,i)).limit(1),c=o?Z(o,[]):null;if(G(c,a),M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:r.sessionId,set:s,setWhere:Rn(o,r)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),K(t,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function Cr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.delete,async e=>{await n.delete(r).where(z(r.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function wr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.update,async e=>{let i=ge.request.parse(e.payload),{sessionId:a}=i,o=br(i,r),s=nr(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let t=await n.update(r).set(o).where(z(r.sessionId,a));e.setResult({success:M(t),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await n.select().from(r).where(z(r.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=Z(s,[]),l=tr(c,i);if(G(c,l),M(await n.update(r).set(o).where(F(z(r.sessionId,a),Rn(s,r))))){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),K(t,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Tr(e,t){let n=[];return e.status!==`all`&&n.push(z(t.status,e.status)),e.executionTargetId!==void 0&&n.push(z(t.executionTargetId,e.executionTargetId)),F(...n)}function Er(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,Y);return t.on(u.list,async e=>{let{status:t=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=e.payload,l=Tr({status:t,executionTargetId:c},r),u=l?n.select().from(r).where(l):n.select().from(r),d=a===void 0?await u.orderBy(R(r.lastActivityAt)):await u.orderBy(R(r.lastActivityAt)).limit(a).offset(o),[f]=await(l?n.select({count:L()}).from(r).where(l):n.select({count:L()}).from(r)),p=f?.count??0;if(d.length===0){e.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=$n(await n.select().from(i).where(B(i.sessionId,m))),{previewBySession:g,countBySession:_}=await er(n,m,s),v=d.map(e=>{let t=Z(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});e.setResult({sessions:v,total:p})})}function Dr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,Y);return t.on(u.getStatusCounts,async e=>{e.payload;let t=await n.select({status:r.status,count:L()}).from(r).groupBy(r.status),i=0,a=0,o=0,s=0;for(let e of t)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function Or(e,t){let n={bus:e,db:t},r=[xr(n),Sr(n),Cr(n),wr(n),Er(n),ir(n),rr(n),Dr(n),...hr(e,t)];return()=>r.forEach(e=>e())}function kr(e,t,n,r,i,a){return t===void 0&&n===void 0&&r===void 0&&i===void 0&&a===void 0?!1:(t!==void 0&&(e.adapterId=t),n!==void 0&&(e.cwd=n),r!==void 0&&(e.model=r),i!==void 0&&(e.allowedDirectories=i),a!==void 0&&(e.providerConfigId=a),!0)}function Ar(e){let t=new Map,n=[];return n.push(e.on(f.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(f.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(f.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(f.listByAdapter,e=>{let{adapterName:n,status:r}=e.payload,i=Array.from(t.values()).filter(e=>e.adapterName===n);r&&r!==`all`&&(i=i.filter(e=>e.status===r)),e.setResult({agents:i})})),n.push(e.on(f.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(f.updateStatus,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.status=e.payload.status,n.lastActivityAt=Date.now(),e.setResult({success:!0})})),n.push(e.on(f.updateActivity,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.lastActivityAt=e.payload.lastActivityAt,e.setResult({success:!0})})),n.push(e.on(f.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{adapterId:r,cwd:i,model:a,allowedDirectories:o,providerConfigId:s}=e.payload;if(!kr(n,r,i,a,o,s)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function jr(e,t){if(t.length===0)return new Map;let{agents:n}=N(e,Y),r=[...new Set(t)],i=await e.select().from(n).where(B(n.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function Mr(e,t){return P(e).fts.fetchFirstUserMessagePreviews(e,t)}async function Nr(e,t){if(t.length===0)return new Map;let{messages:n}=N(e,c),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:L()}).from(n).where(B(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Pr(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function Fr(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:Pr(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function Ir(e,t){let n=P(t).fts,r=[];return r.push(e.on(u.search,async e=>{let{query:r,limit:i=20,status:a=`all`,isImported:o}=e.payload,s=r.trim();if(!s){e.setResult({sessions:[],total:0});return}let c={query:s,likePattern:`%${s.toLowerCase()}%`,status:a===`all`?void 0:a,isImported:o},l=await n.searchSessionRows(t,{...c,limit:i});if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await n.countSessionMatches(t,c),d=l.map(e=>e.session_id),f=await jr(t,d),p=await Mr(t,d),m=await Nr(t,d),h=l.map(e=>Fr(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Lr(e,t){return(await Me(e).all(H`
19
- WITH RECURSIVE ancestors AS (
20
- SELECT session_id, parent_session_id
21
- FROM sessions
22
- WHERE session_id = ${t}
23
-
24
- UNION ALL
25
-
26
- SELECT s.session_id, s.parent_session_id
27
- FROM sessions s
28
- JOIN ancestors a ON s.session_id = a.parent_session_id
29
- )
30
- SELECT session_id FROM ancestors
31
- `)).map(e=>e.session_id)}var Rr=class{bus;options;cleanups=[];transform;constructor(e=oe,t={}){this.bus=e,this.options=t,this.transform=t.transform??(e=>e),this.registerHandlers()}async emitStorageEvent(e,t,n){let r={sessionId:t,eventId:crypto.randomUUID(),timestamp:Date.now(),type:e,payload:n},i=this.transform(r);i&&await this.bus.request(s.append,{event:i})}registerHandler(e,t){this.cleanups.push(this.bus.on(e,(async e=>{try{await this.emitStorageEvent(t,e.payload.sessionId,e.payload)}catch(e){console.error(`[SessionLogger] Failed to emit ${t} to storage:`,e)}})))}registerHandlers(){this.registerHandler(O.agent.added,`agent.added`),this.registerHandler(O.turn.started,`turn.started`),this.registerHandler(O.turn.completed,`turn.completed`),this.registerHandler(O.branch.created,`branch.created`)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0}};const zr=je(`import_cursors`,e=>({filePath:e.text(`file_path`).primaryKey(),bytesRead:e.int8(`bytes_read`).notNull(),lastModified:e.text(`last_modified`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Br=zr.sqlite,Vr=zr.postgres,Hr=j({importCursors:Br},{importCursors:Vr});function Ur(e,t){let{importCursors:n}=N(t,Hr),r=[];return r.push(e.on(Be.get,async e=>{let{filePath:r}=e.payload,i=(await t.select().from(n).where(z(n.filePath,r)).limit(1))[0];if(!i){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:i.filePath,bytesRead:i.bytesRead,lastModified:i.lastModified}})})),r.push(e.on(Be.set,async e=>{let{filePath:r,bytesRead:i,lastModified:a}=e.payload;await t.insert(n).values({filePath:r,bytesRead:i,lastModified:a,updatedAt:Date.now()}).onConflictDoUpdate({target:n.filePath,set:{bytesRead:i,lastModified:a,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Be.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(z(n.filePath,r));e.setResult({success:M(i)})})),()=>{r.forEach(e=>e())}}De(`embeddings`,{id:Te(`id`).primaryKey({autoIncrement:!0}),entityType:A(`entity_type`).notNull(),entityId:A(`entity_id`).notNull(),model:A(`model`).notNull(),dimensions:Te(`dimensions`).notNull(),content:A(`content`),embedding:Ce(`embedding`,{mode:`buffer`}).notNull(),createdAt:Te(`created_at`).notNull()},e=>[we(`idx_embeddings_entity`).on(e.entityType,e.entityId),we(`idx_embeddings_model`).on(e.model),Oe(`idx_embeddings_unique`).on(e.entityType,e.entityId,e.model)]);function Wr(e){if(e.byteLength%4!=0)throw Error(`Invalid embedding blob: byte length ${e.byteLength} is not a multiple of 4 (IEEE-754 f32 lanes)`);return e instanceof ArrayBuffer?new Float32Array(e):e.byteOffset%4==0?new Float32Array(e.buffer,e.byteOffset,e.byteLength/4):new Float32Array(Uint8Array.from(e).buffer)}var Gr=class{rawSql;engine;knownTables=new Set;constructor(e){this.rawSql=Me(e),this.engine=Ne(this.rawSql.dialect)}slugify(e){return e.replace(/[^a-zA-Z0-9]/g,`_`).toLowerCase()}hashModel(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t.toString(36)}getTableName(e){return`embeddings_idx_${this.slugify(e)}_${this.hashModel(e)}`}async ensureIndexTable(e,t){let n=this.getTableName(e);if(this.knownTables.has(n))return n;let r=H.identifier(n),i=H.raw(this.engine.capabilities.binaryColumnType);return await this.rawSql.run(H`CREATE TABLE IF NOT EXISTS ${r} (
32
- entity_type TEXT NOT NULL,
33
- entity_id TEXT NOT NULL,
34
- embedding ${i} NOT NULL,
35
- PRIMARY KEY (entity_type, entity_id)
36
- )`),this.knownTables.add(n),n}async upsertIndexed(e,t,n,r,i){let a=await this.ensureIndexTable(e,t),o=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s=H.identifier(a);await this.rawSql.run(H`INSERT INTO ${s} (entity_type, entity_id, embedding)
37
- VALUES (${n}, ${r}, ${o})
38
- ON CONFLICT(entity_type, entity_id) DO UPDATE SET
39
- embedding = excluded.embedding`)}async searchSimilar(e,t,n=10){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return[];this.knownTables.add(r)}let i=H.identifier(r),a=await this.rawSql.all(H`SELECT entity_type, entity_id, embedding FROM ${i}`);return a.length===0?[]:a.map(e=>{let n=Wr(e.embedding),r=this.euclideanDistance(t,n);return{entityType:e.entity_type,entityId:e.entity_id,distance:r}}).sort((e,t)=>e.distance-t.distance).slice(0,n)}async deleteByEntity(e,t,n){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return;this.knownTables.add(r)}let i=H.identifier(r);await this.rawSql.run(H`DELETE FROM ${i} WHERE entity_type = ${t} AND entity_id = ${n}`)}euclideanDistance(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return Math.sqrt(n)}},Kr=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new S({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await this.emit(O.turn.started,{turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);this._completedTurnIds.add(e.turnId);let t=e.getResult();await this.emit(O.turn.completed,{turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0})}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function qr(e,t){let{sessions:n}=N(t,Y);async function r(i,a,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(F(z(n.parentExternalSessionId,i),z(n.source,a)));for(let t of c)t.parentSessionId!==null&&await e.request(u.update,{sessionId:t.sessionId,rootSessionId:o}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,o,s+1)}return e.on(O.import.completed,async i=>{let{adapterSessionId:a,sessionId:o,source:s}=i.payload,c=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(F(z(n.parentExternalSessionId,a),z(n.source,s),V(n.parentSessionId)));if(c.length===0)return;let{session:l}=await e.request(u.get,{sessionId:o}),d=l?.rootSessionId??o;for(let t of c)await e.request(u.update,{sessionId:t.sessionId,parentSessionId:o,rootSessionId:d,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,s,d)})}const Jr=new Set([`Agent`,`spawn_subagent`]),Yr=`[^A-Za-z0-9_-]`;function Xr(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Zr(e,t){return t.test(e)}async function Qr(e,t){let n=[],r,i=0;do{let a=await e.request(C.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function $r(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&Jr.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function ei(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(Zr(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function ti(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function ni(e){return[...e].map(e=>{let t=Xr(e);return{id:e,pattern:RegExp(`(^|${Yr})${t}($|${Yr})`)}})}async function ri(e,t,n){let{children:r}=await e.request(u.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(u.get,{sessionId:t}),o=a?.adapterSessionId;if(!o)return;let s=ni(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await Qr(e,t.sessionId),r=$r(n);if(r.length===0)return null;let i=ei(n,s);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===o);if(a.length!==1)return null;let[c]=a[0];return r.some(e=>e.toolCallId===c)?{parentSessionId:t.sessionId,toolCallId:c}:null}))).filter(e=>e!==null);c.length===1&&await e.request(u.update,{sessionId:t,parentSessionId:c[0].parentSessionId,spawningToolCallId:c[0].toolCallId})}async function ii(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:o}=await e.request(u.getByAdapterSessionId,{adapterSessionId:r,source:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(u.getChildren,{sessionId:s}),l=await ai(e,c);if(l.size===0)return;let d=await Qr(e,a),f=$r(d);if(f.length===0)return;let p=ei(d,ni(new Set(l.keys()))),m=new Map;for(let e of f){let t=p.get(e.toolCallId);t!==void 0&&m.set(t,(m.get(t)??0)+1)}let h=new Map;for(let e of f){let t=p.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&m.get(t)===1&&h.set(n,e.toolCallId)}if(h.size===0)return;let g=[...h].map(async([t,n])=>{try{await e.request(u.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:s,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(g)}async function ai(e,t){return ti(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(u.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function oi(e){return e.on(O.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(u.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await ri(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await ii(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function si(e){return[...e].map(e=>{let t=Xr(e);return{id:e,pattern:RegExp(`(^|${Yr})${t}($|${Yr})`)}})}async function ci(e,t,n){return ti(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(u.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function li(e){return e.on(O.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(u.getChildren,{sessionId:n}),a=await ci(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await Qr(e,n),c=$r(s);if(c.length===0)return;let l=ei(s,si(o)),d=new Map;for(let e of c){let t=l.get(e.toolCallId);t!==void 0&&d.set(t,(d.get(t)??0)+1)}let f=new Map;for(let e of c){let t=l.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&d.get(t)===1&&f.set(n,e.toolCallId)}let p=[...f].map(async([t,r])=>{try{let{session:n}=await e.request(u.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(u.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(p)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function ui(e){return e.on(E.session.discovered,async t=>{let n=me.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:o,title:s,logFilePath:c,startedAt:l,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=mn({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(u.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:o??null,...s===void 0?{}:{title:s},...c===void 0?{}:{logFilePath:c},...l===void 0?{}:{startedAt:l},...m})})}var di=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(D.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{ln as A,Jt as B,Z as C,mn as D,pn as E,an as F,Pt as G,qt as H,nn as I,at as J,wt as K,tn as L,sn as M,on as N,un as O,rn as P,en as R,$n as S,Pn as T,Kt as U,W as V,Lt as W,Ue as X,rt as Y,Fr as _,qr as a,Or as b,Ur as c,Rr as d,Lr as f,Mr as g,Nr as h,oi as i,cn as j,dn as k,Br as l,jr as m,ui as n,Kr as o,Ir as p,dt as q,li as r,Gr as s,di as t,zr as u,Pr as v,Xn as w,er as x,Ar as y,Qt as z};