@makaio/framework 1.0.0-dev-1788955549564 → 1.0.0-dev-1788966380232
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/{2020-Bl3Yx3In.mjs → 2020-CpDjcHDh.mjs} +1 -1
- package/dist/{account-identity-B0NsOILM.mjs → account-identity-D00LLclm.mjs} +1 -1
- package/dist/{adapter-DYE_oWjj.mjs → adapter-D92pfm_b.mjs} +1 -1
- package/dist/{adapter-auth-runtime-BnPqQChk.mjs → adapter-auth-runtime-46Y9WKcB.mjs} +1 -1
- package/dist/adapter-subsystem/index.d.mts +1 -1
- package/dist/adapter-subsystem/index.mjs +1 -1
- package/dist/adapters/claude/index.d.mts +2 -2
- package/dist/adapters/claude/testing.mjs +1 -1
- package/dist/adapters/config/index.d.mts +2 -2
- package/dist/adapters/config/index.mjs +1 -1
- package/dist/adapters/index.d.mts +3 -3
- package/dist/adapters/index.mjs +6 -6
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +2 -2
- package/dist/adapters/stream-session/index.d.mts +1 -1
- package/dist/adapters/stream-session/index.mjs +1 -1
- package/dist/artifact-_pN73_7c.mjs +1 -0
- package/dist/{attempt-record-codec-6jpayBMY.mjs → attempt-record-codec-D2Gb_epJ.mjs} +1 -1
- package/dist/{auth-CeH3w2fi.mjs → auth-CB4an9bh.mjs} +1 -1
- package/dist/authority-state-bootstrap-DgoHPc9J.mjs +1 -0
- package/dist/{automation-trigger-CZfH94Fr.mjs → automation-trigger-xNDX0Am_.mjs} +1 -1
- package/dist/bootstrap-start-client-rW55mDI-.mjs +1 -0
- package/dist/bus/index.mjs +1 -1
- package/dist/{caller-owned-adapter-stub-B-Sq7ZvF.mjs → caller-owned-adapter-stub-oM1G1KvC.mjs} +1 -1
- package/dist/{canonical-model-oFNty7hj.mjs → canonical-model-D7Cg0l2R.mjs} +1 -1
- package/dist/{capabilities-BhJ3wzI8.mjs → capabilities-D2ggcMem.mjs} +1 -1
- package/dist/{capability-service-23Ot2J9A.d.mts → capability-service-Cpkonrc0.d.mts} +1 -1
- package/dist/{client-DJMzCHRm.mjs → client-CpUVfDxa.mjs} +1 -1
- package/dist/clients/index.d.mts +2 -2
- package/dist/clients/index.mjs +1 -1
- package/dist/clients/managed-install.d.mts +1 -1
- package/dist/clients/managed-install.mjs +1 -1
- package/dist/code-execution/worker-entry.d.mts +1 -1
- package/dist/code-execution/worker-entry.mjs +1 -1
- package/dist/{code-execution-B9wr0b972.mjs → code-execution-ByLSAlEg2.mjs} +1 -1
- package/dist/{code-execution-BMmUATcc.mjs → code-execution-CMqsHnGg.mjs} +1 -1
- package/dist/{code-execution-DRCzkGzO.mjs → code-execution-xn9-x3VO.mjs} +1 -1
- package/dist/common-CylczUIW.mjs +1 -0
- package/dist/{compression-nZhMDRTA.mjs → compression-Civ-rf-O.mjs} +1 -1
- package/dist/{config-namespace-MjFuIPyL.mjs → config-namespace-CQnsvr77.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +3 -3
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/auth/index.d.mts +2 -2
- package/dist/contracts/auth/index.mjs +1 -1
- package/dist/contracts/automation-trigger/index.d.mts +3 -3
- package/dist/contracts/automation-trigger/index.mjs +1 -1
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/canonical-model/index.mjs +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/capabilities/index.mjs +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/code-execution/index.d.mts +1 -1
- package/dist/contracts/code-execution/index.mjs +1 -1
- package/dist/contracts/common/index.d.mts +2 -2
- package/dist/contracts/common/index.mjs +1 -1
- package/dist/contracts/config/index.d.mts +1 -1
- package/dist/contracts/config/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +5 -5
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/facet/index.mjs +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/harness/index.mjs +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/host/index.mjs +1 -1
- package/dist/contracts/index.d.mts +73 -73
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +2 -2
- package/dist/contracts/materialization/index.mjs +1 -1
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/model-registry/index.mjs +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/platform/index.mjs +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/reaction/index.d.mts +1 -1
- package/dist/contracts/reaction/index.mjs +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +2 -2
- package/dist/contracts/shared/index.mjs +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/skill/index.mjs +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.mjs +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/timeout/index.mjs +1 -1
- package/dist/contracts/toast/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/variant/index.mjs +1 -1
- package/dist/contracts/worker/index.d.mts +2 -2
- package/dist/contracts/worker/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{contribution-B4t0OXKs.d.mts → contribution-BfEEQ8YZ.d.mts} +2 -2
- package/dist/{definition-Bs5hzhsT.d.mts → definition-6d5JBi55.d.mts} +1 -1
- package/dist/{definition-YGj42UeO.mjs → definition-Dqw0YJdi.mjs} +1 -1
- package/dist/{detached-extension-handle-CgJiXaqv.mjs → detached-extension-handle-BJnk3WEh.mjs} +1 -1
- package/dist/{dist-CfANkKSb.mjs → dist-DeI9zYMP.mjs} +1 -1
- package/dist/evidence/git-file/index.d.mts +54 -0
- package/dist/evidence/git-file/index.mjs +4 -0
- package/dist/{execution-attempt-owner-recovery-CdH04iwP.mjs → execution-attempt-owner-recovery-D4APLAvt.mjs} +1 -1
- package/dist/{execution-attempt-repository-CJVlPFMM.d.mts → execution-attempt-repository--RVils5-.d.mts} +273 -189
- package/dist/execution-attempt-repository-CWbgCTwA.mjs +1 -0
- package/dist/{execution-target-B9jZgDQz.mjs → execution-target-_oVNW6Zm.mjs} +1 -1
- package/dist/{extension-B51JzHJu.mjs → extension-CAi7bbyv.mjs} +1 -1
- package/dist/{extension-C1CwxkCN.mjs → extension-CrghVa93.mjs} +1 -1
- package/dist/{filesystem-service-yB8KhUGz.mjs → filesystem-service-hdz3oYti.mjs} +1 -1
- package/dist/{framework-packages-25GUGzJ-.mjs → framework-packages-BOPhhtK7.mjs} +1 -1
- package/dist/git/index.mjs +1 -1
- package/dist/{globby-z2SR0jRo.mjs → globby-Begk3aIP.mjs} +1 -1
- package/dist/{handlers-CBbFzDHc.mjs → handlers-YPTyZDhF.mjs} +1 -1
- package/dist/{harness-GNtHsoh4.mjs → harness-Ds1I4smU.mjs} +1 -1
- package/dist/{hook-responses-chgDiS8D.d.mts → hook-responses-CpEfxEmG.d.mts} +1 -1
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/{index-BtPZcp4M2.d.mts → index-09eal6WI2.d.mts} +11 -11
- package/dist/{index-GNRWZONO.d.mts → index-6kg8YFYt.d.mts} +1 -1
- package/dist/{index-B6aoVzdA.d.mts → index-B3G-Hzwn.d.mts} +1 -1
- package/dist/{index-SDXlgq07.d.mts → index-B7wjmaev.d.mts} +24 -14
- package/dist/{index-DzeUtJtE.d.mts → index-BKwYE1Qk.d.mts} +5 -5
- package/dist/{index-CKjFFP6W2.d.mts → index-BM-FPWjs2.d.mts} +1 -1
- package/dist/{index-Bak5iKWv2.d.mts → index-BT5qcsEf2.d.mts} +24 -15
- package/dist/{index-BjELPYLF2.d.mts → index-BfzuauBt2.d.mts} +1 -1
- package/dist/{index-D2sbGoGS.d.mts → index-Bj2JCo9V.d.mts} +2 -2
- package/dist/{index-OXuby-ee.d.mts → index-BkQlL0Pl.d.mts} +13 -13
- package/dist/{index-CuPq_ap8.d.mts → index-BlHq_Ksb.d.mts} +2 -2
- package/dist/{index-D3RZEEE3.d.mts → index-Bn6sN1op.d.mts} +2 -2
- package/dist/{index-ConotXyG.d.mts → index-Bnm0QvJ4.d.mts} +15 -15
- package/dist/{index-Bxs-oIo4.d.mts → index-BpsurXEW.d.mts} +1 -1
- package/dist/{index-C9J8wBLV.d.mts → index-BqR2xDu6.d.mts} +655 -111
- package/dist/{index-DX_2kGSg.d.mts → index-Bxq_zO2E.d.mts} +4 -4
- package/dist/{index-CcgI6r0K.d.mts → index-C742b1FV.d.mts} +2 -2
- package/dist/{index-B6Kq1BtL.d.mts → index-C8oBOTl_.d.mts} +1 -1
- package/dist/{index-CuLDybz3.d.mts → index-CDhbUjUH.d.mts} +2 -2
- package/dist/{index-CDeN0mdC.d.mts → index-CWeWBh-_.d.mts} +1 -1
- package/dist/{index-SIP-fI28.d.mts → index-D4XNkbM4.d.mts} +1 -1
- package/dist/{index-C6eJrtTA.d.mts → index-D7IZQNhD.d.mts} +2 -2
- package/dist/{index-CU_HMaeC.d.mts → index-DCfYa3cF.d.mts} +39 -1
- package/dist/{index-VbqrC9qf.d.mts → index-DO633_D-.d.mts} +40 -40
- package/dist/{index-CVx7li6B2.d.mts → index-DU9Y9tes2.d.mts} +12 -12
- package/dist/{index-99Gz8ezO.d.mts → index-DY_0TRvM.d.mts} +3 -3
- package/dist/{index-DfJNJYPV.d.mts → index-DzlGAEws.d.mts} +4 -4
- package/dist/{index-DOkenapA.d.mts → index-LjLUr3Dm.d.mts} +10 -10
- package/dist/{index-CwJaE0fT.d.mts → index-MtDz_goH.d.mts} +125 -77
- package/dist/{index-CyB6POkH.d.mts → index-nJvYTAbD.d.mts} +1 -1
- package/dist/{index-BrelUXBT.d.mts → index-ud9i9pue.d.mts} +16 -16
- package/dist/{index-OUtnmQ8t2.d.mts → index-v9TbeVee2.d.mts} +5 -5
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/index.mjs +1 -1
- package/dist/kernel/cli/register.d.mts +1 -1
- package/dist/kernel/cli/register.mjs +1 -1
- package/dist/kernel/cli/schemas.mjs +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +5 -5
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.d.mts +1 -1
- package/dist/kernel/namespace/index.mjs +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/observability/index.mjs +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/providers/index.mjs +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/kernel/window/index.mjs +1 -1
- package/dist/{lib-0MqNtDuH.mjs → lib-BmXBuE-w.mjs} +1 -1
- package/dist/{lib-dlyJT26K.mjs → lib-R-c_q77C.mjs} +1 -1
- package/dist/{load-extensions-DM1PgW4a.d.mts → load-extensions-Bu10B5B1.d.mts} +1 -1
- package/dist/{load-extensions-BHTj3d_P.mjs → load-extensions-s4YmICgn.mjs} +1 -1
- package/dist/{materialization-BQuh_gaE.mjs → materialization-BwC7pVg2.mjs} +1 -1
- package/dist/mcp-http-server/index.d.mts +1 -1
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/model-Cn1IFEP8.mjs +1 -0
- package/dist/{namespace-c5XPzbf3.d.mts → namespace-BYsKOw-g.d.mts} +2 -2
- package/dist/{namespace-ZAIFBrIy.mjs → namespace-CnRcpgJ8.mjs} +1 -1
- package/dist/namespace-DFc1nkal.mjs +1 -0
- package/dist/{namespace-Cb0XKb4v.d.mts → namespace-KTRWfIPy.d.mts} +2 -2
- package/dist/{namespace-DiTFR4Zt.d.mts → namespace-wuGMWlyz.d.mts} +2 -2
- package/dist/{native-session-supervisor-BlGzmZrH.mjs → native-session-supervisor-B0rziwHI.mjs} +1 -1
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/index.mjs +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.mjs +1 -1
- package/dist/{orchestrator-shared-5vhs4wvU.mjs → orchestrator-shared-CmS8iU9_.mjs} +1 -1
- package/dist/{orchestrator-shared-BRNZ6it3.d.mts → orchestrator-shared-Cwc6JKkV.d.mts} +1 -1
- package/dist/{ownership-memory-handler-BCu1EjFO.mjs → ownership-memory-handler-DMirNILL.mjs} +1 -1
- package/dist/package-B-xpYKe8.mjs +7 -0
- package/dist/{package-x2wRhcUt.d.mts → package-Bl0mcGb8.d.mts} +13 -3
- package/dist/{package-BiZ6ehWk.mjs → package-Co36_pRw.mjs} +1 -1
- package/dist/{package-BUSXHPOT.mjs → package-D2zvQO7X.mjs} +1 -1
- package/dist/package.json +1 -1
- package/dist/{packages-Dhgmy_LJ.mjs → packages-COqPg5TI.mjs} +1 -1
- package/dist/{packages-BSVxszLf.d.mts → packages-DTz_1dCa.d.mts} +1 -1
- package/dist/{profile-DBDvy9uc.mjs → profile-C9RV7ao-.mjs} +1 -1
- package/dist/{provider-context-CSb0qX1c.mjs → provider-context-BPITm0cn.mjs} +1 -1
- package/dist/{provider-context-CTOrOW54.mjs → provider-context-CyGvwXPz.mjs} +1 -1
- package/dist/providers/index.d.mts +1 -1
- package/dist/{reaction-6e4v007b.mjs → reaction-aQJGWUWl.mjs} +1 -1
- package/dist/repo-context-Dy6eE9cg.mjs +1 -0
- package/dist/{resolved-ONt3rOMh.mjs → resolved-M6PyrgFr.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +1 -1
- package/dist/rules/schemas.d.mts +1 -1
- package/dist/runtime-bun/index.mjs +1 -1
- package/dist/runtime-node/code-execution/index.d.mts +2 -2
- package/dist/runtime-node/code-execution/index.mjs +1 -1
- package/dist/runtime-node/extension-discovery.d.mts +1 -1
- package/dist/runtime-node/extension-validation.d.mts +1 -1
- package/dist/runtime-node/extension-validation.mjs +1 -1
- package/dist/runtime-node/index.d.mts +6 -6
- package/dist/runtime-node/index.mjs +4 -4
- package/dist/runtime-node/makaio-config.d.mts +1 -1
- package/dist/runtime-node/makaio-config.mjs +1 -1
- package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
- package/dist/runtime-node/workflow-worker/index.mjs +1 -1
- package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
- package/dist/{schema-B8jinlbH.mjs → schema-DrHrto2J.mjs} +1 -1
- package/dist/{schemas-BFwNBMIj.d.mts → schemas-BYyT43gX.d.mts} +4 -4
- package/dist/{schemas-BIU9Org_.mjs → schemas-CQKfd2Xd.mjs} +1 -1
- package/dist/{schemas-Di_kpQ0C.d.mts → schemas-CvUe_yff.d.mts} +13 -4
- package/dist/{schemas-BZabEyEV.d.mts → schemas-D2HmGmCt.d.mts} +1 -1
- package/dist/schemas-DRho446W.mjs +1 -0
- package/dist/{schemas-I9dZtAkj.d.mts → schemas-DwqibWUL.d.mts} +2 -2
- package/dist/{schemas-abY5VbS4.mjs → schemas-DyZNwquY.mjs} +1 -1
- package/dist/{selection-7SkHsmWs.mjs → selection-BDs7K53w.mjs} +1 -1
- package/dist/{server-lifecycle-hNz8U-QJ.mjs → server-lifecycle-C5Vl58sN.mjs} +1 -1
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- package/dist/services/adapter-runtime/index.mjs +1 -1
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +1 -1
- package/dist/services/adapter-subsystem/index.d.mts +3 -3
- package/dist/services/adapter-subsystem/index.mjs +1 -1
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/adapter-subsystem/namespace.mjs +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/automation-trigger/index.d.mts +1 -1
- package/dist/services/automation-trigger/index.mjs +1 -1
- package/dist/services/capability/index.d.mts +2 -2
- package/dist/services/capability/index.mjs +1 -1
- package/dist/services/code-execution/index.d.mts +1 -1
- package/dist/services/code-execution/index.mjs +1 -1
- package/dist/services/codebase/index.d.mts +2 -2
- package/dist/services/codebase/namespace.d.mts +1 -1
- package/dist/services/codebase/schemas.d.mts +1 -1
- package/dist/services/compression/index.d.mts +2 -2
- package/dist/services/compression/namespace.d.mts +1 -1
- package/dist/services/compression/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +4 -4
- package/dist/services/context-rules/index.mjs +1 -1
- package/dist/services/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/index.mjs +1 -1
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/namespace.mjs +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/execution-target/schemas.mjs +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/index.mjs +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/git/namespace.d.mts +2 -2
- package/dist/services/git/namespace.mjs +1 -1
- package/dist/services/git/schemas.d.mts +1 -1
- package/dist/services/git/schemas.mjs +1 -1
- package/dist/services/harness/index.d.mts +4 -4
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/index.d.mts +49 -49
- package/dist/services/index.mjs +1 -1
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +3 -3
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/log-import.mjs +1 -1
- package/dist/services/log-import/namespace.mjs +1 -1
- package/dist/services/log-import/schemas.mjs +1 -1
- package/dist/services/materialization/index.d.mts +1 -1
- package/dist/services/materialization/index.mjs +1 -1
- package/dist/services/model-registry/index.d.mts +1 -1
- package/dist/services/model-registry/index.mjs +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/provider-context/index.d.mts +1 -1
- package/dist/services/provider-context/index.mjs +1 -1
- package/dist/services/provider-runtime/index.mjs +1 -1
- package/dist/services/session/handlers/index.d.mts +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +9 -9
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/messages/namespace.mjs +1 -1
- package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
- package/dist/services/session/orchestrator-testing/index.mjs +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.mjs +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/testing/index.mjs +2 -2
- package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.d.mts +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/session-editor/index.mjs +1 -1
- package/dist/services/settings/index.d.mts +3 -3
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/namespace.d.mts +4 -4
- package/dist/services/settings/namespace.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
- package/dist/services/settings/storage/clients-namespace.mjs +1 -1
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/settings/storage/index.d.mts +3 -3
- package/dist/services/settings/storage/index.mjs +1 -1
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent/index.d.mts +1 -1
- package/dist/services/subagent/index.mjs +1 -1
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.d.mts +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +3 -3
- package/dist/services/tray-menu/index.mjs +1 -1
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/services/turn/index.d.mts +1 -1
- package/dist/services/turn/namespace.d.mts +1 -1
- package/dist/services/workflow-transitions/index.d.mts +1 -1
- package/dist/services/workflow-transitions/index.mjs +1 -1
- package/dist/{session-A-h_Dwcs.mjs → session-9C42TPQq.mjs} +1 -1
- package/dist/{session-BDFNAcuY.mjs → session-Cn8z1hxD.mjs} +6 -6
- package/dist/{session-lineage-BzlpfLgC.d.mts → session-lineage-CEyJWg_J.d.mts} +1 -1
- package/dist/{shared-BZf2zoxL.mjs → shared-DqvfJVYk.mjs} +1 -1
- package/dist/{skill-1gU2q1KT.mjs → skill-BmRp8GhW.mjs} +1 -1
- package/dist/{src-Dlpw-Gh5.mjs → src-CmLn6zYj.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +1 -1
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/index.d.mts +2 -2
- package/dist/storage/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/index.d.mts +1 -1
- package/dist/storage/handlers/index.mjs +1 -1
- package/dist/testing/index.d.mts +1 -1
- package/dist/{tool-approval-service-rpV94znP.mjs → tool-approval-service-DchkAdAr.mjs} +1 -1
- package/dist/tools/index.d.mts +1 -1
- package/dist/{tools-oQPsY7v2.mjs → tools-r50UBPJ9.mjs} +1 -1
- package/dist/{transition-BeWq5nKg.d.mts → transition-CgsrmsfE.d.mts} +2 -2
- package/dist/{types-FNVbwd7z2.d.mts → types-Bnc-pdB12.d.mts} +1 -1
- package/dist/{types-D4N56a4O.d.mts → types-Dswhi1L9.d.mts} +1 -1
- package/dist/{types-CIEJ91wm.d.mts → types-ZvPhKp3j.d.mts} +8 -8
- package/dist/ui-kernel/index.d.mts +2 -2
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/{version-3xWJDCeF.mjs → version-sDSWOMn_.mjs} +1 -1
- package/dist/{view-builder-BwGugMWz.d.mts → view-builder-D54kvyf7.d.mts} +10 -10
- package/dist/{visibility-C5sLzqyS.mjs → visibility-syKffo3e.mjs} +1 -1
- package/dist/{worker-qgJToDTN.mjs → worker-DRQGyWAS.mjs} +1 -1
- package/dist/{worker-Csadr_du.mjs → worker-DzbPk2YI.mjs} +1 -1
- package/dist/{workflow-Cb2Pj1h3.mjs → workflow-D-yrAZW8.mjs} +1 -1
- package/dist/workflow-engine/execution-attempt-repository.d.mts +2 -2
- package/dist/workflow-engine/execution-attempt-repository.mjs +1 -1
- package/dist/workflow-engine/index.d.mts +62 -62
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.d.mts +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/provider-operation.d.mts +1 -1
- package/dist/workflow-engine/testing/conformance.d.mts +1 -1
- package/dist/workflow-engine/testing/conformance.mjs +2 -2
- package/dist/workflow-engine/testing/index.d.mts +3 -1
- package/dist/workflow-engine/testing/index.mjs +1 -1
- package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
- package/dist/workflow-engine/testing/sqlite.mjs +66 -61
- package/dist/workflow-engine/workflow-orchestrator.d.mts +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-transitions-BI7PbrXv.mjs → workflow-transitions-D5RvMSnf.mjs} +1 -1
- package/dist/workflow-worker-CrnDwpkP.mjs +2 -0
- package/package.json +5 -1
- package/dist/artifact-nArLAotB.mjs +0 -1
- package/dist/authority-state-bootstrap-DnwkMieA.mjs +0 -1
- package/dist/bootstrap-start-client-Bdv-_2Q9.mjs +0 -1
- package/dist/execution-attempt-repository-DXyh1hgz.mjs +0 -1
- package/dist/model-B6t_-_sp.mjs +0 -1
- package/dist/namespace-D4zmxaC4.mjs +0 -1
- package/dist/package-DKfzsJVl.mjs +0 -7
- package/dist/schemas-FiFC_DI6.mjs +0 -1
- package/dist/workflow-worker-Db7EBUgh.mjs +0 -2
- /package/dist/{adapter-binding-BU7STlfd.d.mts → adapter-binding-DhANVB-O.d.mts} +0 -0
- /package/dist/{ajv-Dtk5hCZS.mjs → ajv-IlnfOGAj.mjs} +0 -0
- /package/dist/{attach-error-B-vXQFLQ.mjs → attach-error-DOlUtquX.mjs} +0 -0
- /package/dist/{attempt-fixtures-C-jQE_7B.mjs → attempt-fixtures-CMx-2OlG.mjs} +0 -0
- /package/dist/{base-orchestrator-DXiejwQ3.d.mts → base-orchestrator-tAgnJAKu.d.mts} +0 -0
- /package/dist/{capability-Bw4tsDQu.mjs → capability-BQHyskJB.mjs} +0 -0
- /package/dist/{client-BwFqO0cG.d.mts → client-At2zn3yg.d.mts} +0 -0
- /package/dist/{client-binary-version-verifier-DHBAzg3-.mjs → client-binary-version-verifier-DLziUQhw.mjs} +0 -0
- /package/dist/{client-binary-version-verifier-DySlUy9m.d.mts → client-binary-version-verifier-EOj8xXqm.d.mts} +0 -0
- /package/dist/{clients-namespace-Dh0SNZcQ.d.mts → clients-namespace-CVRwXq8f.d.mts} +0 -0
- /package/dist/{config-namespace-CZqPIAWt.d.mts → config-namespace-D7GbrasR.d.mts} +0 -0
- /package/dist/{create-static-mount-GSdckRQx.mjs → create-static-mount-BIH26VH8.mjs} +0 -0
- /package/dist/{cross-spawn-Bx_VEdpd.mjs → cross-spawn-Bi05YtQQ.mjs} +0 -0
- /package/dist/{cursor-storage-Co4itf44.mjs → cursor-storage-88xtgVAd.mjs} +0 -0
- /package/dist/{definition-D3HjoK-4.d.mts → definition-VK1rERAp.d.mts} +0 -0
- /package/dist/{definitions-CYZTuMdL.mjs → definitions-2T95Q-y6.mjs} +0 -0
- /package/dist/{descriptor-to-package-CZLujoiv.mjs → descriptor-to-package-GVZk9ZGT.mjs} +0 -0
- /package/dist/{drizzle-me-95ICP.mjs → drizzle-BrlzkYoe.mjs} +0 -0
- /package/dist/{esm-DILYVXmW.mjs → esm-B3t30-13.mjs} +0 -0
- /package/dist/{event-DmQPb5MB.mjs → event-DFI0F1Ws.mjs} +0 -0
- /package/dist/{extension-context-Cx8CetW3.d.mts → extension-context-Cpf_n5FH.d.mts} +0 -0
- /package/dist/{extension-discovery-CZkaPQBo.d.mts → extension-discovery-B0ZL076T.d.mts} +0 -0
- /package/dist/{extension-namespace-twXNwE4R.mjs → extension-namespace-CWfV3IiR.mjs} +0 -0
- /package/dist/{extension-package-provenance-BzvG6rDO.mjs → extension-package-provenance-Dr7JXjLS.mjs} +0 -0
- /package/dist/{facet-Cly0VpTI.mjs → facet-6tnSbjXc.mjs} +0 -0
- /package/dist/{filesystem-service-UYYyRL2y.d.mts → filesystem-service-BWoNtujU.d.mts} +0 -0
- /package/dist/{handler-BYQPNm8O.mjs → handler-CFT7_osu.mjs} +0 -0
- /package/dist/{host-CiHn8Yog.mjs → host-D7v3YlDG.mjs} +0 -0
- /package/dist/{identity-BULrIHmo.mjs → identity-CxMRRAXx.mjs} +0 -0
- /package/dist/{index-B5kqAW7h.d.mts → index-8a41yDOl.d.mts} +0 -0
- /package/dist/{index-Dmwnhnio2.d.mts → index-BBkJsViX2.d.mts} +0 -0
- /package/dist/{index-DNp9DP6W.d.mts → index-BL1F1xYB.d.mts} +0 -0
- /package/dist/{index-BCKhrNLC.d.mts → index-BTHdi23O.d.mts} +0 -0
- /package/dist/{index-BU8uFswE.d.mts → index-BcPO9w0j.d.mts} +0 -0
- /package/dist/{index-DcG3r0VL.d.mts → index-Bk0Xjk-B.d.mts} +0 -0
- /package/dist/{index-DGlSbpgS2.d.mts → index-Bn1JTbn_2.d.mts} +0 -0
- /package/dist/{index-CYUhTE552.d.mts → index-C75h1xHF2.d.mts} +0 -0
- /package/dist/{index-DB4Xggtt.d.mts → index-CDA33y5A.d.mts} +0 -0
- /package/dist/{index-B9-1l1oh.d.mts → index-CSJOBx3H.d.mts} +0 -0
- /package/dist/{index-BAL1FiaJ.d.mts → index-CVh7ZP2I.d.mts} +0 -0
- /package/dist/{index-6wmqw_ng.d.mts → index-Ccaqmi0J.d.mts} +0 -0
- /package/dist/{index-zvoiT54b.d.mts → index-CjazerMN.d.mts} +0 -0
- /package/dist/{index-C_R6ifn9.d.mts → index-DXSVC0bM.d.mts} +0 -0
- /package/dist/{index-D3_QOfke.d.mts → index-Du-eXjEN.d.mts} +0 -0
- /package/dist/{index-DbYjMWlj.d.mts → index-DwKPj8jD.d.mts} +0 -0
- /package/dist/{index-LsZNB_gb.d.mts → index-DwY1Mt9a.d.mts} +0 -0
- /package/dist/{index-C-6g2xzN.d.mts → index-DzHc6hsJ.d.mts} +0 -0
- /package/dist/{index-DQbcfjIb2.d.mts → index-krTCFThl2.d.mts} +0 -0
- /package/dist/{json-value-DyMQrwGz.d.mts → json-value-BKUDMT7k.d.mts} +0 -0
- /package/dist/{jsonl-transport-Dfv3RLzi.mjs → jsonl-transport-3yp3clGp.mjs} +0 -0
- /package/dist/{lib-BdfAJKDj.mjs → lib-DF6sgNx_.mjs} +0 -0
- /package/dist/{model-registry-B7ThN_s3.mjs → model-registry-BTjKBCCw.mjs} +0 -0
- /package/dist/{model-registry-DlUErRRt.mjs → model-registry-CAqJYbXg.mjs} +0 -0
- /package/dist/{modes-CyG4sgs_.mjs → modes-Bo9Vv5c9.mjs} +0 -0
- /package/dist/{namespace-ChjzkJIl.mjs → namespace-0TfAY2J7.mjs} +0 -0
- /package/dist/{namespace-JqvomFSV.d.mts → namespace-B1sjokHd.d.mts} +0 -0
- /package/dist/{namespace-De25c2ds.d.mts → namespace-B3MnuAqp.d.mts} +0 -0
- /package/dist/{namespace-BFlSY040.mjs → namespace-BCSJz417.mjs} +0 -0
- /package/dist/{namespace-DAbT1F_n.d.mts → namespace-BHb_9sh4.d.mts} +0 -0
- /package/dist/{namespace-BQ7eiQwr.d.mts → namespace-BNNFD-ul.d.mts} +0 -0
- /package/dist/{namespace-69c5HXtL.d.mts → namespace-BgaVgd00.d.mts} +0 -0
- /package/dist/{namespace-CBf5xG_A.d.mts → namespace-BiEV44Mk.d.mts} +0 -0
- /package/dist/{namespace-B8kUQpwo.mjs → namespace-CDoyzyV4.mjs} +0 -0
- /package/dist/{namespace-B7fMkHmy.d.mts → namespace-CjmNxtr1.d.mts} +0 -0
- /package/dist/{namespace-BoOLmi67.d.mts → namespace-Cy62a3YP.d.mts} +0 -0
- /package/dist/{namespace-CIF_1OWi.d.mts → namespace-Czr38fiF.d.mts} +0 -0
- /package/dist/{namespace-C9d0aoYT.mjs → namespace-DORNUF0_.mjs} +0 -0
- /package/dist/{namespace-QXCaZK3I.mjs → namespace-DX3QsYpv.mjs} +0 -0
- /package/dist/{namespace-ZN49zpqw.mjs → namespace-Dyxpur8_.mjs} +0 -0
- /package/dist/{namespace-CUXZS_Ia.d.mts → namespace-btfJrUf6.d.mts} +0 -0
- /package/dist/{namespace-DAW4OY3-.d.mts → namespace-fEBskugJ.d.mts} +0 -0
- /package/dist/{out-Cn6vBxlH.mjs → out-og8659Ny.mjs} +0 -0
- /package/dist/{ownership-recovery-guard-Ce9-C5Sa.mjs → ownership-recovery-guard-CYA5CsiO.mjs} +0 -0
- /package/dist/{package-D4eLGGv4.mjs → package-BecmlOXC.mjs} +0 -0
- /package/dist/{platform-C-fDsuEl.mjs → platform-BdLHWgVc.mjs} +0 -0
- /package/dist/{providers-DVlsnJaY.mjs → providers-DGTA-lki.mjs} +0 -0
- /package/dist/{providers-namespace-DcPil5uz.d.mts → providers-namespace-Bming6U8.d.mts} +0 -0
- /package/dist/{quick-lru-CVryNCTx.mjs → quick-lru-bVGGo5bq.mjs} +0 -0
- /package/dist/{registry-Q9gCZtxz.mjs → registry-Cu3eD3UY.mjs} +0 -0
- /package/dist/{runtime-inputs-CMjGjK7W.d.mts → runtime-inputs-DeOea-ab.d.mts} +0 -0
- /package/dist/{schema-DIgKUfuF.d.mts → schema-DFCBjTB7.d.mts} +0 -0
- /package/dist/{schema-introspection-CSnLZJpC.mjs → schema-introspection-BsWP1vGC.mjs} +0 -0
- /package/dist/{schema-DIHGEQx3.mjs → schema-mXXJcaQT.mjs} +0 -0
- /package/dist/{schemas-BKnJj2i-.mjs → schemas-7fHmNUQc.mjs} +0 -0
- /package/dist/{schemas-BFgsIiSb.mjs → schemas-BE-gfjGI.mjs} +0 -0
- /package/dist/{schemas-CM3Ejp-n.d.mts → schemas-BLy33xay.d.mts} +0 -0
- /package/dist/{schemas-Ge_bamoP.d.mts → schemas-BkCqhK3X.d.mts} +0 -0
- /package/dist/{schemas-NwKrrrPF.d.mts → schemas-Cz7H2f7S.d.mts} +0 -0
- /package/dist/{schemas-DYeS-mtz.d.mts → schemas-DGKWi7mk.d.mts} +0 -0
- /package/dist/{schemas-Vv0GtBaZ.d.mts → schemas-DTBWnWjN.d.mts} +0 -0
- /package/dist/{schemas-COnD70WD.d.mts → schemas-DYIVJDlx.d.mts} +0 -0
- /package/dist/{schemas-qbaSxHDL.d.mts → schemas-DqWwz4eR.d.mts} +0 -0
- /package/dist/{schemas-DTyZjKQf2.d.mts → schemas-GyKYcV-Z2.d.mts} +0 -0
- /package/dist/{schemas-CnFVygzI.mjs → schemas-HffXbw8C.mjs} +0 -0
- /package/dist/{schemas-CbhvgFQs.mjs → schemas-MIYusvwn.mjs} +0 -0
- /package/dist/{schemas-BapfTRqp.mjs → schemas-NYUz8K9Q.mjs} +0 -0
- /package/dist/{semver-D_D2mA48.mjs → semver-_h8-BJ8k.mjs} +0 -0
- /package/dist/{server-lifecycle-BPAN-b0i.d.mts → server-lifecycle-_m_x1_TC.d.mts} +0 -0
- /package/dist/{shared-schemas-kUho6Kmw.mjs → shared-schemas-CaL1iEk6.mjs} +0 -0
- /package/dist/{src-Du_285FN.mjs → src-DdaPoQOD.mjs} +0 -0
- /package/dist/{storage-namespace-Dtz2G1if.mjs → storage-namespace-DBuKMBth.mjs} +0 -0
- /package/dist/{storage-namespace-definition-BJCbqVWz.mjs → storage-namespace-definition-4UYuij1r.mjs} +0 -0
- /package/dist/{storage-namespace-definition-D6soSjKE.d.mts → storage-namespace-definition-CsaZPU3n.d.mts} +0 -0
- /package/dist/{storage-namespace-C9oFExfb.d.mts → storage-namespace-zRXWqAfO.d.mts} +0 -0
- /package/dist/{supports-color-BNmyqLq0.mjs → supports-color-DG_rcVqJ.mjs} +0 -0
- /package/dist/{telemetry-CUkZrhW6.mjs → telemetry-BLYrkonr.mjs} +0 -0
- /package/dist/{timeout-DeBYTGBR.mjs → timeout-d0dzIY3V.mjs} +0 -0
- /package/dist/{tray-menu-service-TWrmvXSo.mjs → tray-menu-service-BGwXKJYr.mjs} +0 -0
- /package/dist/{types-D9GJ7FyQ.mjs → types-Bh2fQoxM.mjs} +0 -0
- /package/dist/{types-BOsf2SVm.d.mts → types-CccTiXH2.d.mts} +0 -0
- /package/dist/{types-DZvkUmHS.d.mts → types-DXGVwrQn.d.mts} +0 -0
- /package/dist/{types-BZnJ_4e2.d.mts → types-DjxvRcX6.d.mts} +0 -0
- /package/dist/{types-CWgYlxjU.d.mts → types-nor1SQLZ.d.mts} +0 -0
- /package/dist/{ui-config-9hlZAJOS.mjs → ui-config-CsH94fwa.mjs} +0 -0
- /package/dist/{variant-73kFgYBK.mjs → variant-BZ9UcJBi.mjs} +0 -0
- /package/dist/{window-registry-Bvjvpwhn.d.mts → window-registry-DQ7udUzI.d.mts} +0 -0
- /package/dist/{window-registry-CzAwaPKL.mjs → window-registry-DQkv5wM9.mjs} +0 -0
- /package/dist/{zod-json-schema-B1mZz7S4.mjs → zod-json-schema-DGWHUOK0.mjs} +0 -0
package/dist/{ownership-memory-handler-BCu1EjFO.mjs → ownership-memory-handler-DMirNILL.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,t}from"./ownership-recovery-guard-Ce9-C5Sa.mjs";import{SessionStorageSubjects as n}from"./services/session/storage/namespace.mjs";import{SessionOwnershipSettleMovementRequestSchema as r,SessionOwnershipStorageSubjects as i,SessionStorageSetRequestSchema as a,SessionStorageUpdateSchema as o,SessionSubjects as s,resolveResumableAdapterSessionId as c}from"@makaio/framework/contracts";import{isInactiveSafeLeadDesignationMutation as l,normalizeSessionOwnershipClaimRequest as u}from"@makaio/framework/contracts/session";function d(){return{sessions:new Map,agents:new Map,claims:new Map,runtimeInstances:new Map}}function f(e,t){for(let[n,r]of e.claims)t(r)&&e.claims.delete(n)}function ee(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function p(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 m(e,t,n){let r=ee(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(s.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function h(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function te(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 g(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}function _(e){return e.activation===`live`?`active`:`discovered`}const ne=g();function re(e,t){return e===`imported`||t===`imported`?`imported`:e===`tracking`||t===`tracking`?`tracking`:e??t??`discovered`}function v(e,t,n){n!==void 0&&(e[t]=n)}function ie(e){return e.status===`closed`||e.status===`archived`||e.status===`active`&&e.isImported===!0}function ae(e,t,n){if(!ie(e)){if(n===`live`){e.status===`discovered`&&(e.status=`active`);return}t===`discovered`&&(e.status=`discovered`)}}function oe(e,t,n){let r=e.startedAt??n,i=h(e.kind);return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:_(e),branchKind:i,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:e.importStatus??`discovered`,forkPointMessageId:e.forkPointMessageId??void 0,metadata:e.metadata,lastClientIdentityObservation:e.lastClientIdentityObservation,isSidechain:e.isSidechain,machineId:e.machineId??void 0}}function se(e,t,n){let r=re(e.importStatus,t.importStatus);ae(e,r,t.activation),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function y(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),e.forkPointMessageId===void 0&&t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),e.parentExternalSessionId===void 0&&t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=h(t.kind);n!==void 0&&e.branchKind===void 0&&(e.branchKind=n),v(e,`adapterId`,t.adapterId),v(e,`clientId`,t.clientId),t.metadata!==void 0&&(e.metadata={...t.metadata,...e.metadata??{}}),v(e,`isSidechain`,t.isSidechain),v(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),t.machineId===null?e.machineId=void 0:t.machineId!==void 0&&(e.machineId??=t.machineId)}function ce(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 le(e,t,n){let r=e.discoveredAt;se(e,t,n),y(e,t),ce(e,t,r)}function b(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 ue(e,t,n){if(n){e.emit(s.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(s.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function de(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 x(e,t,n){return Array.from(e.values()).find(e=>e.adapterSessionId===n&&e.source===t)}function fe(e,t){let n=[];return t.cwd!==void 0&&(e.targetWorkingDirectory=t.cwd,n.push(`targetWorkingDirectory`)),t.logFilePath!==void 0&&(e.logFilePath=t.logFilePath,n.push(`logFilePath`)),t.machineId!==void 0&&(e.machineId=t.machineId??void 0,n.push(`machineId`)),n}function pe(e,t,n){e.emit(s.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(s.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function me(e,t){return e.on(n.rebindObserved,n=>{let r=n.payload,i=x(t,r.source,r.externalSessionId);if(!i){n.setResult({outcome:`not-found`});return}let a=fe(i,r);n.setResult({outcome:`rebound`,sessionId:i.sessionId}),a.length>0&&e.emit(s.updated,{sessionId:i.sessionId,changedProperties:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))})}function he(e){let{bus:t,store:r,cloneSession:i,populateAgents:a}=e;return[t.on(n.importUpsert,e=>{let n=structuredClone(e.payload),i=x(r,n.source,n.externalSessionId),a=ne(),o=i===void 0,s=i??oe(n,crypto.randomUUID(),a);i?(le(i,n,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&b(r,i)):(r.set(s.sessionId,s),b(r,s)),ue(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),me(t,r),t.on(n.getByLogFilePath,async e=>{let n=Array.from(r.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!n){e.setResult({session:null});return}let o=await a(t,n.sessionId);e.setResult({session:{...i(n),agents:o}})}),t.on(n.listImported,async e=>{let{source:n,importStatus:o}=e.payload,s=Array.from(r.values()).filter(e=>e.isImported===!0).filter(e=>n===void 0||e.source===n).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...i(e),agents:await a(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(n.countBySource,e=>{let t=Array.from(r.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(de(t))}),t.on(n.updateImportStatus,e=>{let n=r.get(e.payload.sessionId),i=e.payload.importStatus;if(!n||n.importStatus===i){e.setResult({success:!1});return}n.importStatus=i,i===`imported`&&n.status===`discovered`&&(n.status=`active`),e.setResult({success:!0}),pe(t,n,i)})]}function S(e,t){let n=t.expectIdentityOpenForLead;return n===void 0?!1:e.adapterName!==void 0||e.adapterId!==void 0?!0:(e.leadAgentId??null)!==n}function C(e,t){let n=t.reconcileAdapterSession;if(n===void 0)return!1;if(e.adapterSessionId!==void 0||e.leadAgentId!==n.agentId)return!0;let r=e.adapterName===void 0&&e.adapterId===void 0,i=e.adapterName===n.adapterName&&e.adapterId===n.adapterId;return!r&&!i}async function w(t,n){let r=await t.requestOptional(e.listBySession,{sessionId:n});return r.handled?r.data.agents:[]}function T(e){return structuredClone(e)}function E(e,t,n){n!==void 0&&(e[t]=n)}function D(e,t,n){n!==void 0&&(e[t]=n??void 0)}function O(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 k(e,t){e.currentAdapterSessionId=t?.currentAdapterSessionId,e.currentAdapterSessionIdState=t?.currentAdapterSessionIdState??`inherited`,t!==null&&(e.leadAgentId=t.leadAgentId)}function A(e,t){E(e,`status`,t.status),t.parentSessionId!==void 0&&(e.parentSessionId=t.parentSessionId??void 0),E(e,`contextInheritance`,t.contextInheritance),E(e,`rootSessionId`,t.rootSessionId),E(e,`forkPointMessageId`,t.forkPointMessageId),E(e,`branchKind`,t.branchKind),E(e,`isOrchestrated`,t.isOrchestrated),E(e,`clientId`,t.clientId),E(e,`clientAccountId`,t.clientAccountId),E(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),E(e,`title`,t.title),E(e,`targetWorkingDirectory`,t.targetWorkingDirectory),E(e,`createdAt`,t.createdAt),E(e,`lastActivityAt`,t.lastActivityAt),E(e,`machineId`,t.machineId),t.identity!==void 0&&(e.adapterName=t.identity.adapterName,e.adapterId=t.identity.adapterId,E(e,`adapterSessionId`,t.identity.adapterSessionId)),t.reconcileAdapterSession!==void 0&&(e.adapterName=t.reconcileAdapterSession.adapterName,e.adapterId=t.reconcileAdapterSession.adapterId,e.adapterSessionId=t.reconcileAdapterSession.adapterSessionId,e.lastActivityAt=t.reconcileAdapterSession.lastActivityAt),D(e,`executionTargetId`,t.executionTargetId),D(e,`approvalPolicyOverride`,t.approvalPolicyOverride),D(e,`metadata`,t.metadata),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function j(e,t){return e.on(n.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=O(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=>({...T(t),agents:await w(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function M(e,t){return e.on(n.update,async n=>{let r=structuredClone(o.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}if(r.expectedStatus!==void 0&&!r.expectedStatus.includes(i.status)){n.setResult({success:!1,clientAccountChanged:!1});return}if(S(i,r)){n.setResult({success:!1,clientAccountChanged:!1});return}if(C(i,r)){n.setResult({success:!1,clientAccountChanged:!1});return}let a=T(i);p(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),A(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),m(e,a,T(i))})}function N(e,t=d()){let r=t.sessions,i=[];return i.push(e.on(n.get,async t=>{let n=r.get(t.payload.sessionId);if(!n){t.setResult({session:null});return}let i=await w(e,t.payload.sessionId);t.setResult({session:{...T(n),agents:i}})})),i.push(e.on(n.set,async t=>{let{sessionId:n,session:i,ifAbsent:o}=a.parse(t.payload);if(o&&r.has(n)){t.setResult({success:!1,clientAccountChanged:!1});return}let s=structuredClone(i),c=r.get(n)??null,l=c?T(c):null;k(s,l),p(c,s),r.set(n,s),t.setResult({success:!0,clientAccountChanged:(l?.clientAccountId??null)!==(s.clientAccountId??null)}),m(e,l,T(s))})),i.push(e.on(n.delete,async e=>{let n=new Set;for(let[r,i]of t.agents)i.sessionId===e.payload.sessionId&&(n.add(r),t.agents.delete(r));f(t,t=>t.sessionId===e.payload.sessionId||n.has(t.agentId)),r.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),i.push(j(e,r)),i.push(e.on(n.getChildren,e=>{let{sessionId:t}=e.payload,n=Array.from(r.values()),i=n.filter(e=>e.parentSessionId===t),a=new Set(n.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})})),i.push(e.on(n.getStatusCounts,e=>{e.payload;let t=Array.from(r.values()),n=t.filter(e=>e.status===`active`).length,i=t.filter(e=>e.status===`closed`).length,a=t.filter(e=>e.status===`archived`).length,o=t.filter(e=>e.status===`discovered`).length;e.setResult({all:n+i+a+o,active:n,closed:i,archived:a,discovered:o})})),i.push(M(e,r)),i.push(P(e,r)),i.push(...he({bus:e,store:r,populateAgents:w,cloneSession:T})),()=>i.forEach(e=>e())}function P(t,r){return t.on(n.getByAdapterSessionId,async n=>{let{adapterSessionId:i,source:a,adapterName:o}=n.payload,s=Array.from(r.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===i&&(a===void 0||e.source===a)&&(o===void 0||e.adapterName===o)),c=s[0];if(s.length!==1||c===void 0){n.setResult({session:null});return}let l=await t.requestOptional(e.listBySession,{sessionId:c.sessionId}),u=l.handled?l.data.agents:[];n.setResult({session:{...T(c),agents:u}})})}function F(e){return structuredClone(e)}function I(e,t){let{adapterId:n,runtimeOwner:r,adapterSessionId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=t;return n===void 0&&r===void 0&&i===void 0&&a===void 0&&o===void 0&&s===void 0&&c===void 0?!1:(n!==void 0&&(e.adapterId=n),r!==void 0&&(e.runtimeOwner=structuredClone(r)),i!==void 0&&(e.adapterSessionId=i),a!==void 0&&(e.cwd=a),o!==void 0&&(e.model=o),s!==void 0&&(e.allowedDirectories=s),c===null?delete e.providerConfigId:c!==void 0&&(e.providerConfigId=c),!0)}function L(e){return{status:e.status,recoveryAttemptId:e.recoveryAttemptId,adapterSessionId:e.adapterSessionId,runtimeOwner:structuredClone(e.runtimeOwner),currentAdapterSessionId:e.currentAdapterSessionId,currentAdapterSessionIdState:e.currentAdapterSessionIdState,revision:e.revision,currencyFence:e.currencyFence}}function R(e,t,n){let r=e.get(t),i=r===void 0?void 0:L(r);e.set(t,{...structuredClone(n),status:i?.status===`disposed`?`disposed`:n.status,recoveryAttemptId:i===void 0?n.recoveryAttemptId:i.recoveryAttemptId,adapterSessionId:i===void 0?n.adapterSessionId:i.adapterSessionId,runtimeOwner:i===void 0?structuredClone(n.runtimeOwner):i.runtimeOwner,currentAdapterSessionId:i?.currentAdapterSessionId,currentAdapterSessionIdState:i?.currentAdapterSessionIdState??`inherited`,revision:i?.revision??0,currencyFence:i?.currencyFence??0})}function z(e,t,n){let r=e.get(t);return r===void 0?!1:n(r)}function ge(e,t,n,r){let i=e.get(t);return i===void 0?{success:!1,transitioned:!1}:i.status===`disposed`||r!==void 0&&!r.includes(i.status)?{success:!0,transitioned:!1}:(i.status=n,i.lastActivityAt=Date.now(),{success:!0,transitioned:!0})}function _e(e,t){return f(e,e=>e.agentId===t),e.agents.delete(t)}function ve(t,n=d()){let r=n.agents,i=[];return i.push(t.on(e.get,e=>{let t=r.get(e.payload.agentId);e.setResult({agent:t===void 0?null:F(t)})})),i.push(t.on(e.set,e=>{R(r,e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),i.push(t.on(e.delete,e=>{e.setResult({success:_e(n,e.payload.agentId)})})),i.push(t.on(e.listByAdapter,e=>{let{adapterName:t,status:n}=e.payload,i=Array.from(r.values()).filter(e=>e.adapterName===t);n&&n!==`all`&&(i=i.filter(e=>e.status===n)),e.setResult({agents:i.map(F)})})),i.push(t.on(e.listBySession,e=>{let t=Array.from(r.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:t.map(F)})})),i.push(t.on(e.updateStatus,e=>{let{agentId:t,status:n,expectedStatus:i}=e.payload;e.setResult(ge(r,t,n,i))})),i.push(t.on(e.updateActivity,e=>{let t=z(r,e.payload.agentId,t=>(t.lastActivityAt=e.payload.lastActivityAt,!0));e.setResult({success:t})})),i.push(t.on(e.updateRuntime,e=>{let{agentId:t,adapterId:n,runtimeOwner:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l}=structuredClone(e.payload),u=z(r,t,e=>I(e,{adapterId:n,runtimeOwner:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l})?(e.lastActivityAt=Date.now(),!0):!1);e.setResult({success:u})})),()=>i.forEach(e=>e())}function B(e,t,n,r){for(let i of e.values())if(i.machineId===t&&i.adapterId===n&&i.providerSessionId===r)return i}function V(e,t){for(let n of e.values())if(n.claimToken===t)return n}function ye(e,t){let n=0;for(let r of e.values())r.agentId===t&&r.fence>n&&(n=r.fence);return n}function H(e,t,n){let r=e.agents.get(t)?.currencyFence??0;return 1+Math.max(n,r,ye(e.claims,t))}function U(e,t){return`${e.length}:${e}${t}`}function W(e,t,n,r){let i=U(t,n),a=e.runtimeInstances.get(i);if(a!==void 0)return a;let o=1;for(let t of e.runtimeInstances.values())t.machineId===n&&t.incarnation>=o&&(o=t.incarnation+1);let s={instanceId:t,machineId:n,incarnation:o,startedAt:r,retiredAt:null};return e.runtimeInstances.set(i,structuredClone(s)),s}function G(e,t,n){if(n.ownerInstanceId===null)return!1;if(t.supersededClaimToken===n.claimToken||n.status===`held`&&n.agentId===t.agentId&&n.ownerInstanceId===t.ownerInstanceId)return!0;let r=e.runtimeInstances.get(U(n.ownerInstanceId,n.machineId));if(r?.retiredAt!==null&&r?.retiredAt!==void 0)return!0;if(t.topology===`machine-exclusive`){let n=e.runtimeInstances.get(U(t.ownerInstanceId,t.machineId));if(n!==void 0&&r!==void 0&&n.incarnation>r.incarnation)return!0}return!1}function K(e,t){let n=e.currentAdapterSessionIdState??`inherited`;if(n!==`inherited`)return{currentAdapterSessionId:e.currentAdapterSessionId,currentAdapterSessionIdState:n};let r=e.adapterSessionId??null;return r===t?{currentAdapterSessionId:void 0,currentAdapterSessionIdState:`inherited`}:r===null?{currentAdapterSessionId:void 0,currentAdapterSessionIdState:`moved`}:{currentAdapterSessionId:r,currentAdapterSessionIdState:`confirmed`}}function be(e,t){if(t===`confirmed`!=(e!==null))throw Error(`Currency pairing invariant violated: confirmed ↔ id !== null (state="${t}", id=${e===null?`null`:`present`})`)}function q(e){return{adapterSessionId:e.adapterSessionId??null,currentAdapterSessionId:e.currentAdapterSessionId??null,currentAdapterSessionIdState:e.currentAdapterSessionIdState??`inherited`}}function J(e,t,n){if(t.recoveryGuard!==void 0&&e!==void 0&&(n.outcome===`claimed`||n.outcome===`idempotent`)){let r=t.recoveryAttemptId;if(r===void 0)throw Error(`guarded recovery claim requires recoveryAttemptId`);let i={status:e.status,adapterId:e.adapterId,...e.runtimeOwner===void 0?{}:{binding:{adapterId:e.adapterId,ownerMachineId:e.runtimeOwner.machineId,ownerInstanceId:e.runtimeOwner.instanceId}},...e.recoveryAttemptId===void 0?{}:{recoveryAttemptId:e.recoveryAttemptId}};if(e.status=`starting`,e.adapterId=t.adapterId,t.ownerInstance===void 0)throw Error(`guarded recovery claim requires ownerInstance`);return e.runtimeOwner={machineId:t.machineId,instanceId:t.ownerInstance.instanceId},e.recoveryAttemptId=r,e.lastActivityAt=Date.now(),{...n,recovery:{attemptId:r,preimage:i}}}return n}function Y(e,t,n){let r=e.sessions.get(t.sessionId);if(r===void 0)return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};if(r.status!==`active`&&(r.status!==`closed`||!l(t)))return{kind:`refused`,result:{outcome:`session-not-active`,status:r.status}};let i=r.leadAgentId??null,a=t.designateLead;if(a===void 0)return{kind:`ok`,leadDesignated:!1,previousLeadAgentId:i};let o=a.clear===!0,s=o?null:n.agentId;if(!o&&n.status===`disposed`)return{kind:`refused`,result:{outcome:`agent-disposed`}};if(!o&&i===n.agentId)return{kind:`ok`,leadDesignated:!1,previousLeadAgentId:i};if(i!==a.expectedLeadAgentId)return{kind:`conflict`,currentLeadAgentId:i};if(r.leadAgentId=s??void 0,!o){let e=K(n,r.adapterSessionId??null);r.currentAdapterSessionId=e.currentAdapterSessionId,r.currentAdapterSessionIdState=e.currentAdapterSessionIdState}return{kind:`ok`,leadDesignated:!0,previousLeadAgentId:i}}function X(e,t,n){if(!e.sessions.has(t.sessionId))return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};let r=e.agents.get(t.agentId);if(r===void 0||r.sessionId!==t.sessionId)return{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}};if(r.status===`disposed`)return{kind:`refused`,result:{outcome:`agent-disposed`}};let i=V(e.claims,t.claimToken);if(i!==void 0&&i.claimId!==n?.claimId)throw Error(`UNIQUE constraint failed: adapter_session_claims.claim_token (uniq_adapter_session_claims_token): "${t.claimToken}" is already in use`);return{kind:`ok`,agent:r}}function Z(e,t,n){return{outcome:e,claim:t===null?null:structuredClone(t),leadDesignated:n.leadDesignated,previousLeadAgentId:n.previousLeadAgentId}}function xe(e,t){let n=X(e,t);if(n.kind===`refused`)return n.result;let r=Date.now(),i=crypto.randomUUID(),a={claimId:i,machineId:t.machineId,adapterId:t.adapterId,adapterName:t.adapterName,providerSessionId:t.providerSessionId,sessionId:t.sessionId,agentId:t.agentId,ownerInstanceId:t.ownerInstance.instanceId,claimToken:t.claimToken,fence:H(e,t.agentId,0),status:`held`,claimedAt:r,updatedAt:r};e.claims.set(i,structuredClone(a));let o=Y(e,t,n.agent);return o.kind===`ok`?Z(`claimed`,a,o):(e.claims.delete(i),o.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:o.currentLeadAgentId}:o.result)}function Se(e,t,n){let r=X(e,t,n);if(r.kind===`refused`)return r.result;let i=Date.now(),a={...n,claimToken:t.claimToken,fence:H(e,t.agentId,n.fence),agentId:t.agentId,sessionId:t.sessionId,adapterName:t.adapterName,ownerInstanceId:t.ownerInstance.instanceId,status:`held`,claimedAt:i,updatedAt:i};e.claims.set(n.claimId,structuredClone(a));let o=Y(e,t,r.agent);return o.kind===`ok`?Z(`claimed`,a,o):(e.claims.set(n.claimId,structuredClone(n)),o.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:o.currentLeadAgentId}:o.result)}function Ce(e,t,n){if(n.status!==`held`)return{outcome:`already-claimed`,holder:structuredClone(n)};let r=X(e,t,n);if(r.kind===`refused`)return r.result;let i=Y(e,t,r.agent);return i.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}:i.kind===`refused`?i.result:Z(`idempotent`,n,i)}function we(e,t){let n=e.agents.get(t.agentId);if(n===void 0||n.sessionId!==t.sessionId)return{outcome:`not-found`,missing:`agent`};if(n.status===`disposed`&&t.designateLead?.clear!==!0)return{outcome:`agent-disposed`};let r=Y(e,t,n);return r.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:r.currentLeadAgentId}:r.kind===`refused`?r.result:Z(`claimed`,null,r)}function Te(e,t,n,r,i){let a=t.ownerInstance;if(a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);let o=U(a.instanceId,t.machineId),s=e.runtimeInstances.has(o);W(e,a.instanceId,t.machineId,Date.now());let c={...t,providerSessionId:n,ownerInstance:a};if(i===void 0){let n=xe(e,c);return!s&&n.outcome!==`claimed`&&e.runtimeInstances.delete(o),J(r,t,n)}if(i.claimToken===c.claimToken){if(i.agentId===c.agentId&&i.sessionId===c.sessionId){let n=Ce(e,c,i);return s||e.runtimeInstances.delete(o),J(r,t,n)}return s||e.runtimeInstances.delete(o),{outcome:`already-claimed`,holder:structuredClone(i)}}if(G(e,{machineId:c.machineId,agentId:c.agentId,ownerInstanceId:c.ownerInstance.instanceId,topology:c.topology,supersededClaimToken:c.supersedes?.claimToken},i)){let n=Se(e,c,i);return!s&&n.outcome!==`claimed`&&e.runtimeInstances.delete(o),J(r,t,n)}return s||e.runtimeInstances.delete(o),{outcome:`already-claimed`,holder:structuredClone(i)}}function Ee(e,t,n){let r=t.ownerInstance,i=t.recoveryGuard===void 0||r===void 0?void 0:U(r.instanceId,t.machineId),a=i===void 0||e.runtimeInstances.has(i);i!==void 0&&r!==void 0&&W(e,r.instanceId,t.machineId,Date.now());let o=we(e,t);return i!==void 0&&!a&&o.outcome!==`claimed`&&e.runtimeInstances.delete(i),J(n,t,o)}function De(e,n){let r=u(n),{providerSessionId:i}=r,a=e.agents.get(r.agentId),o=i===null?void 0:B(e.claims,r.machineId,r.adapterId,i);if(r.recoveryGuard!==void 0&&a!==void 0){let e=t(r,{status:a.status,adapterId:a.adapterId,runtimeOwner:a.runtimeOwner,recoveryAttemptId:a.recoveryAttemptId,revision:a.revision??0,currencyFence:a.currencyFence??0,currency:q(a)},o??null);if(e!==void 0)return e}return i===null?Ee(e,r,a):Te(e,r,i,a,o)}function Oe(e,t,n){let{agentId:r,claimToken:i,fence:a,expectedRevision:o,target:s}=n,c=t.revision??0,l=t.currencyFence??0;if(t.status===`disposed`)return{outcome:`agent-disposed`};let u=V(e.claims,i);if(u===void 0||u.agentId!==r||u.sessionId!==t.sessionId||u.status!==`held`||u.fence!==a)return{outcome:`not-owner`};if(a<l)return{outcome:`superseded`,currentFence:l};let d=q(t);if(d.currentAdapterSessionId===s.currentAdapterSessionId&&d.currentAdapterSessionIdState===s.currentAdapterSessionIdState&&l===a)return{outcome:`idempotent`,revision:c,currency:d,sessionSnapshotUpdated:!1};if(c!==o)return{outcome:`currency-changed`,revision:c,currency:d}}function Q(e,t,n){let r=Oe(e,t,n);if(r!==void 0)return r;let{agentId:i,fence:a,expectedRevision:o,target:s}=n;be(s.currentAdapterSessionId,s.currentAdapterSessionIdState);let c=t.adapterSessionId??null;t.currentAdapterSessionId=s.currentAdapterSessionId??void 0,t.currentAdapterSessionIdState=s.currentAdapterSessionIdState,t.currencyFence=a,t.revision=o+1,t.lastActivityAt=Date.now();let l=e.sessions.get(t.sessionId),u=!1;if(l!==void 0&&l.leadAgentId===i){let e=K(t,l.adapterSessionId??null);l.currentAdapterSessionId=e.currentAdapterSessionId,l.currentAdapterSessionIdState=e.currentAdapterSessionIdState,u=!0}return{outcome:`settled`,revision:o+1,currency:{adapterSessionId:c,...s},sessionSnapshotUpdated:u}}function ke(e,t,n){let r=V(e.claims,t);if(!(r===void 0||r.claimId===n))throw Error(`UNIQUE constraint failed: adapter_session_claims.claim_token (uniq_adapter_session_claims_token): "${t}" is already in use`)}function Ae(e,t){if(!(t===void 0||t.agentId!==e.agentId||t.status!==`held`||t.ownerInstanceId!==null&&t.ownerInstanceId!==e.ownerInstance.instanceId))return{generation:t,rollback:()=>{}}}function je(e,t,n){if(t.ownerInstanceId!==null)return t;let r={...t,ownerInstanceId:n};return e.claims.set(r.claimId,structuredClone(r)),r}function Me(e,t,n){let{machineId:r,adapterId:i,agentId:a}=t,o=B(e.claims,r,i,n),s,c,l=Ae(t,o);if(l!==void 0)s=l.generation,c=l.rollback;else if(o!==void 0&&!G(e,{machineId:r,agentId:a,ownerInstanceId:t.ownerInstance.instanceId,topology:t.topology},o))return{outcome:`already-claimed`,holder:structuredClone(o)};else{let l=Date.now(),u=o?.claimId??crypto.randomUUID();ke(e,t.movement.claimToken,u),s={claimId:u,machineId:r,adapterId:i,adapterName:t.adapterName,providerSessionId:n,sessionId:t.sessionId,agentId:a,ownerInstanceId:t.ownerInstance.instanceId,claimToken:t.movement.claimToken,fence:H(e,a,o?.fence??0),status:`held`,claimedAt:l,updatedAt:l},e.claims.set(u,structuredClone(s)),c=o===void 0?()=>{e.claims.delete(u)}:()=>{e.claims.set(u,structuredClone(o))}}let u=t.movement.kind===`confirmed`?Array.from(e.claims.values()).filter(e=>e.agentId===a&&e.status===`held`&&e.claimId!==s.claimId):[];for(let t of u)e.claims.delete(t.claimId);return{generation:s,releasedProviderSessionIds:u.map(e=>e.providerSessionId),rollback:()=>{for(let t of u)e.claims.set(t.claimId,structuredClone(t));c()}}}function Ne(e,t){if(e.kind===`confirmed`)return{providerSessionId:e.providerSessionId,currency:{currentAdapterSessionId:e.providerSessionId,currentAdapterSessionIdState:`confirmed`}};let n=c(q(t));return n===null?null:{providerSessionId:n,currency:{currentAdapterSessionId:null,currentAdapterSessionIdState:`moved`}}}function Pe(e,t){return e.on(i.read,e=>{let{agentId:n}=e.payload,r=t.agents.get(n);if(r===void 0){e.setResult({ownership:null});return}let i=Array.from(t.claims.values()).filter(e=>e.agentId===n).sort((e,t)=>e.fence-t.fence||e.claimId.localeCompare(t.claimId));e.setResult({ownership:{agentId:n,sessionId:r.sessionId,currency:q(r),revision:r.revision??0,currencyFence:r.currencyFence??0,claims:i.map(e=>structuredClone(e))}})})}function $(e,t){return e.on(i.settleCurrency,e=>{let n=t.agents.get(e.payload.agentId);if(n===void 0){e.setResult({outcome:`not-found`});return}e.setResult(Q(t,n,e.payload))})}function Fe(e,t){return e.on(i.finalizeRecovery,e=>{let{agentId:n,attemptId:r,binding:i,action:a}=e.payload,o=t.agents.get(n);if(o===void 0||o.status!==`starting`||o.recoveryAttemptId!==r||o.adapterId!==i.adapterId||o.runtimeOwner?.machineId!==i.ownerMachineId||o.runtimeOwner?.instanceId!==i.ownerInstanceId){e.setResult({applied:!1});return}a.kind===`rollback`?(o.status=a.preimage.status,o.adapterId=a.preimage.adapterId,o.runtimeOwner=a.preimage.binding===void 0?void 0:{machineId:a.preimage.binding.ownerMachineId,instanceId:a.preimage.binding.ownerInstanceId},o.recoveryAttemptId=a.preimage.recoveryAttemptId):(o.status=a.kind===`succeeded`?`idle`:`dead`,o.recoveryAttemptId=void 0),o.lastActivityAt=Date.now(),e.setResult({applied:!0})})}function Ie(e,t){return e.on(i.settleMovement,e=>{let n=r.parse(e.payload),i=n.ownerInstance;if(i===void 0)throw Error(`session ownership movement requires ownerInstance`);let a=U(i.instanceId,n.machineId),o=t.runtimeInstances.has(a);W(t,i.instanceId,n.machineId,Date.now());let s={...n,ownerInstance:i},c=t.agents.get(n.agentId);if(c===void 0||c.sessionId!==n.sessionId){o||t.runtimeInstances.delete(a),e.setResult({outcome:`not-found`});return}if(c.status===`disposed`){o||t.runtimeInstances.delete(a),e.setResult({outcome:`agent-disposed`});return}let l=Ne(s.movement,c);if(l===null){o||t.runtimeInstances.delete(a),e.setResult({outcome:`idempotent`,revision:c.revision??0,currency:q(c),sessionSnapshotUpdated:!1,claim:null});return}let u=Me(t,s,l.providerSessionId);if(!(`generation`in u)){o||t.runtimeInstances.delete(a),e.setResult(u);return}let d=Q(t,c,{agentId:n.agentId,claimToken:u.generation.claimToken,fence:u.generation.fence,expectedRevision:n.expectedRevision,target:l.currency});if(d.outcome!==`settled`){u.rollback(),o||t.runtimeInstances.delete(a),e.setResult(d.outcome===`idempotent`?{...d,claim:structuredClone(u.generation)}:d);return}let f=je(t,u.generation,i.instanceId);e.setResult({outcome:`settled`,revision:d.revision,currency:d.currency,sessionSnapshotUpdated:d.sessionSnapshotUpdated,releasedProviderSessionIds:u.releasedProviderSessionIds,claim:structuredClone(f)})})}function Le(e,t){return e.on(i.releaseAgentClaims,e=>{let{agentId:n,claimToken:r,disposition:i}=e.payload,a=Array.from(t.claims.values()).filter(e=>e.agentId===n&&(r===void 0||e.claimToken===r));if(i===`released`){for(let e of a)t.claims.delete(e.claimId);e.setResult({releasedProviderSessionIds:a.map(e=>e.providerSessionId),markedClaims:[],claimTokenNotFound:r!==void 0&&a.length===0});return}let o=Date.now(),s=a.map(e=>{let n={...e,status:i,updatedAt:o};return t.claims.set(e.claimId,structuredClone(n)),n});e.setResult({releasedProviderSessionIds:[],markedClaims:s,claimTokenNotFound:r!==void 0&&a.length===0})})}function Re(e,t){return e.on(i.release,e=>{let{agentId:n,claimToken:r,disposition:i}=e.payload,a=V(t.claims,r);if(a===void 0){e.setResult({outcome:`not-found`});return}if(a.agentId!==n){e.setResult({outcome:`not-owner`,holder:structuredClone(a)});return}if(i===`released`){t.claims.delete(a.claimId),e.setResult({outcome:`released`});return}let o={...a,status:i,updatedAt:Date.now()};t.claims.set(a.claimId,structuredClone(o)),e.setResult({outcome:`marked`,claim:structuredClone(o)})})}function ze(e,t){return e.on(i.listClaims,e=>{let{machineId:n,adapterId:r,providerSessionId:i,statuses:a}=e.payload,o=Array.from(t.claims.values()).filter(e=>e.machineId===n&&(r===void 0||e.adapterId===r)&&(i===void 0||e.providerSessionId===i)&&(a===void 0||a.includes(e.status)));o.sort((e,t)=>e.claimedAt-t.claimedAt||e.claimId.localeCompare(t.claimId)),e.setResult({claims:o.map(e=>structuredClone(e))})})}function Be(e,t){return e.on(i.retireInstance,e=>{let n=Date.now(),r=0;for(let[i,a]of t.runtimeInstances)a.instanceId!==e.payload.instanceId||a.retiredAt!==null||(t.runtimeInstances.set(i,{...a,retiredAt:n}),r+=1);e.setResult({retiredMachines:r})})}function Ve(e,t){return e.on(i.getRuntimeInstance,e=>{let n=t.runtimeInstances.get(U(e.payload.instanceId,e.payload.machineId));e.setResult({instance:n===void 0?null:structuredClone(n)})})}function He(e,t=d()){let n=[Pe(e,t),Fe(e,t),e.on(i.claim,e=>{e.setResult(De(t,e.payload))}),$(e,t),Ie(e,t),Re(e,t),Le(e,t),ze(e,t),Be(e,t),Ve(e,t)];return()=>{for(let e=n.length-1;e>=0;--e)n[e]?.()}}export{S as a,h as c,m as d,d as f,C as i,te as l,ve as n,_ as o,N as r,g as s,He as t,p as u};
|
|
1
|
+
import{a as e,t}from"./ownership-recovery-guard-CYA5CsiO.mjs";import{SessionStorageSubjects as n}from"./services/session/storage/namespace.mjs";import{SessionOwnershipSettleMovementRequestSchema as r,SessionOwnershipStorageSubjects as i,SessionStorageSetRequestSchema as a,SessionStorageUpdateSchema as o,SessionSubjects as s,resolveResumableAdapterSessionId as c}from"@makaio/framework/contracts";import{isInactiveSafeLeadDesignationMutation as l,normalizeSessionOwnershipClaimRequest as u}from"@makaio/framework/contracts/session";function d(){return{sessions:new Map,agents:new Map,claims:new Map,runtimeInstances:new Map}}function f(e,t){for(let[n,r]of e.claims)t(r)&&e.claims.delete(n)}function ee(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function p(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 m(e,t,n){let r=ee(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(s.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function h(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function te(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 g(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}function _(e){return e.activation===`live`?`active`:`discovered`}const ne=g();function re(e,t){return e===`imported`||t===`imported`?`imported`:e===`tracking`||t===`tracking`?`tracking`:e??t??`discovered`}function v(e,t,n){n!==void 0&&(e[t]=n)}function ie(e){return e.status===`closed`||e.status===`archived`||e.status===`active`&&e.isImported===!0}function ae(e,t,n){if(!ie(e)){if(n===`live`){e.status===`discovered`&&(e.status=`active`);return}t===`discovered`&&(e.status=`discovered`)}}function oe(e,t,n){let r=e.startedAt??n,i=h(e.kind);return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:_(e),branchKind:i,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:e.importStatus??`discovered`,forkPointMessageId:e.forkPointMessageId??void 0,metadata:e.metadata,lastClientIdentityObservation:e.lastClientIdentityObservation,isSidechain:e.isSidechain,machineId:e.machineId??void 0}}function se(e,t,n){let r=re(e.importStatus,t.importStatus);ae(e,r,t.activation),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function y(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),e.forkPointMessageId===void 0&&t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),e.parentExternalSessionId===void 0&&t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=h(t.kind);n!==void 0&&e.branchKind===void 0&&(e.branchKind=n),v(e,`adapterId`,t.adapterId),v(e,`clientId`,t.clientId),t.metadata!==void 0&&(e.metadata={...t.metadata,...e.metadata??{}}),v(e,`isSidechain`,t.isSidechain),v(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),t.machineId===null?e.machineId=void 0:t.machineId!==void 0&&(e.machineId??=t.machineId)}function ce(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 le(e,t,n){let r=e.discoveredAt;se(e,t,n),y(e,t),ce(e,t,r)}function b(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 ue(e,t,n){if(n){e.emit(s.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(s.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function de(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 x(e,t,n){return Array.from(e.values()).find(e=>e.adapterSessionId===n&&e.source===t)}function fe(e,t){let n=[];return t.cwd!==void 0&&(e.targetWorkingDirectory=t.cwd,n.push(`targetWorkingDirectory`)),t.logFilePath!==void 0&&(e.logFilePath=t.logFilePath,n.push(`logFilePath`)),t.machineId!==void 0&&(e.machineId=t.machineId??void 0,n.push(`machineId`)),n}function pe(e,t,n){e.emit(s.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(s.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function me(e,t){return e.on(n.rebindObserved,n=>{let r=n.payload,i=x(t,r.source,r.externalSessionId);if(!i){n.setResult({outcome:`not-found`});return}let a=fe(i,r);n.setResult({outcome:`rebound`,sessionId:i.sessionId}),a.length>0&&e.emit(s.updated,{sessionId:i.sessionId,changedProperties:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))})}function he(e){let{bus:t,store:r,cloneSession:i,populateAgents:a}=e;return[t.on(n.importUpsert,e=>{let n=structuredClone(e.payload),i=x(r,n.source,n.externalSessionId),a=ne(),o=i===void 0,s=i??oe(n,crypto.randomUUID(),a);i?(le(i,n,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&b(r,i)):(r.set(s.sessionId,s),b(r,s)),ue(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),me(t,r),t.on(n.getByLogFilePath,async e=>{let n=Array.from(r.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!n){e.setResult({session:null});return}let o=await a(t,n.sessionId);e.setResult({session:{...i(n),agents:o}})}),t.on(n.listImported,async e=>{let{source:n,importStatus:o}=e.payload,s=Array.from(r.values()).filter(e=>e.isImported===!0).filter(e=>n===void 0||e.source===n).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...i(e),agents:await a(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(n.countBySource,e=>{let t=Array.from(r.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(de(t))}),t.on(n.updateImportStatus,e=>{let n=r.get(e.payload.sessionId),i=e.payload.importStatus;if(!n||n.importStatus===i){e.setResult({success:!1});return}n.importStatus=i,i===`imported`&&n.status===`discovered`&&(n.status=`active`),e.setResult({success:!0}),pe(t,n,i)})]}function S(e,t){let n=t.expectIdentityOpenForLead;return n===void 0?!1:e.adapterName!==void 0||e.adapterId!==void 0?!0:(e.leadAgentId??null)!==n}function C(e,t){let n=t.reconcileAdapterSession;if(n===void 0)return!1;if(e.adapterSessionId!==void 0||e.leadAgentId!==n.agentId)return!0;let r=e.adapterName===void 0&&e.adapterId===void 0,i=e.adapterName===n.adapterName&&e.adapterId===n.adapterId;return!r&&!i}async function w(t,n){let r=await t.requestOptional(e.listBySession,{sessionId:n});return r.handled?r.data.agents:[]}function T(e){return structuredClone(e)}function E(e,t,n){n!==void 0&&(e[t]=n)}function D(e,t,n){n!==void 0&&(e[t]=n??void 0)}function O(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 k(e,t){e.currentAdapterSessionId=t?.currentAdapterSessionId,e.currentAdapterSessionIdState=t?.currentAdapterSessionIdState??`inherited`,t!==null&&(e.leadAgentId=t.leadAgentId)}function A(e,t){E(e,`status`,t.status),t.parentSessionId!==void 0&&(e.parentSessionId=t.parentSessionId??void 0),E(e,`contextInheritance`,t.contextInheritance),E(e,`rootSessionId`,t.rootSessionId),E(e,`forkPointMessageId`,t.forkPointMessageId),E(e,`branchKind`,t.branchKind),E(e,`isOrchestrated`,t.isOrchestrated),E(e,`clientId`,t.clientId),E(e,`clientAccountId`,t.clientAccountId),E(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),E(e,`title`,t.title),E(e,`targetWorkingDirectory`,t.targetWorkingDirectory),E(e,`createdAt`,t.createdAt),E(e,`lastActivityAt`,t.lastActivityAt),E(e,`machineId`,t.machineId),t.identity!==void 0&&(e.adapterName=t.identity.adapterName,e.adapterId=t.identity.adapterId,E(e,`adapterSessionId`,t.identity.adapterSessionId)),t.reconcileAdapterSession!==void 0&&(e.adapterName=t.reconcileAdapterSession.adapterName,e.adapterId=t.reconcileAdapterSession.adapterId,e.adapterSessionId=t.reconcileAdapterSession.adapterSessionId,e.lastActivityAt=t.reconcileAdapterSession.lastActivityAt),D(e,`executionTargetId`,t.executionTargetId),D(e,`approvalPolicyOverride`,t.approvalPolicyOverride),D(e,`metadata`,t.metadata),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function j(e,t){return e.on(n.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=O(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=>({...T(t),agents:await w(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function M(e,t){return e.on(n.update,async n=>{let r=structuredClone(o.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}if(r.expectedStatus!==void 0&&!r.expectedStatus.includes(i.status)){n.setResult({success:!1,clientAccountChanged:!1});return}if(S(i,r)){n.setResult({success:!1,clientAccountChanged:!1});return}if(C(i,r)){n.setResult({success:!1,clientAccountChanged:!1});return}let a=T(i);p(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),A(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),m(e,a,T(i))})}function N(e,t=d()){let r=t.sessions,i=[];return i.push(e.on(n.get,async t=>{let n=r.get(t.payload.sessionId);if(!n){t.setResult({session:null});return}let i=await w(e,t.payload.sessionId);t.setResult({session:{...T(n),agents:i}})})),i.push(e.on(n.set,async t=>{let{sessionId:n,session:i,ifAbsent:o}=a.parse(t.payload);if(o&&r.has(n)){t.setResult({success:!1,clientAccountChanged:!1});return}let s=structuredClone(i),c=r.get(n)??null,l=c?T(c):null;k(s,l),p(c,s),r.set(n,s),t.setResult({success:!0,clientAccountChanged:(l?.clientAccountId??null)!==(s.clientAccountId??null)}),m(e,l,T(s))})),i.push(e.on(n.delete,async e=>{let n=new Set;for(let[r,i]of t.agents)i.sessionId===e.payload.sessionId&&(n.add(r),t.agents.delete(r));f(t,t=>t.sessionId===e.payload.sessionId||n.has(t.agentId)),r.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),i.push(j(e,r)),i.push(e.on(n.getChildren,e=>{let{sessionId:t}=e.payload,n=Array.from(r.values()),i=n.filter(e=>e.parentSessionId===t),a=new Set(n.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})})),i.push(e.on(n.getStatusCounts,e=>{e.payload;let t=Array.from(r.values()),n=t.filter(e=>e.status===`active`).length,i=t.filter(e=>e.status===`closed`).length,a=t.filter(e=>e.status===`archived`).length,o=t.filter(e=>e.status===`discovered`).length;e.setResult({all:n+i+a+o,active:n,closed:i,archived:a,discovered:o})})),i.push(M(e,r)),i.push(P(e,r)),i.push(...he({bus:e,store:r,populateAgents:w,cloneSession:T})),()=>i.forEach(e=>e())}function P(t,r){return t.on(n.getByAdapterSessionId,async n=>{let{adapterSessionId:i,source:a,adapterName:o}=n.payload,s=Array.from(r.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===i&&(a===void 0||e.source===a)&&(o===void 0||e.adapterName===o)),c=s[0];if(s.length!==1||c===void 0){n.setResult({session:null});return}let l=await t.requestOptional(e.listBySession,{sessionId:c.sessionId}),u=l.handled?l.data.agents:[];n.setResult({session:{...T(c),agents:u}})})}function F(e){return structuredClone(e)}function I(e,t){let{adapterId:n,runtimeOwner:r,adapterSessionId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=t;return n===void 0&&r===void 0&&i===void 0&&a===void 0&&o===void 0&&s===void 0&&c===void 0?!1:(n!==void 0&&(e.adapterId=n),r!==void 0&&(e.runtimeOwner=structuredClone(r)),i!==void 0&&(e.adapterSessionId=i),a!==void 0&&(e.cwd=a),o!==void 0&&(e.model=o),s!==void 0&&(e.allowedDirectories=s),c===null?delete e.providerConfigId:c!==void 0&&(e.providerConfigId=c),!0)}function L(e){return{status:e.status,recoveryAttemptId:e.recoveryAttemptId,adapterSessionId:e.adapterSessionId,runtimeOwner:structuredClone(e.runtimeOwner),currentAdapterSessionId:e.currentAdapterSessionId,currentAdapterSessionIdState:e.currentAdapterSessionIdState,revision:e.revision,currencyFence:e.currencyFence}}function R(e,t,n){let r=e.get(t),i=r===void 0?void 0:L(r);e.set(t,{...structuredClone(n),status:i?.status===`disposed`?`disposed`:n.status,recoveryAttemptId:i===void 0?n.recoveryAttemptId:i.recoveryAttemptId,adapterSessionId:i===void 0?n.adapterSessionId:i.adapterSessionId,runtimeOwner:i===void 0?structuredClone(n.runtimeOwner):i.runtimeOwner,currentAdapterSessionId:i?.currentAdapterSessionId,currentAdapterSessionIdState:i?.currentAdapterSessionIdState??`inherited`,revision:i?.revision??0,currencyFence:i?.currencyFence??0})}function z(e,t,n){let r=e.get(t);return r===void 0?!1:n(r)}function ge(e,t,n,r){let i=e.get(t);return i===void 0?{success:!1,transitioned:!1}:i.status===`disposed`||r!==void 0&&!r.includes(i.status)?{success:!0,transitioned:!1}:(i.status=n,i.lastActivityAt=Date.now(),{success:!0,transitioned:!0})}function _e(e,t){return f(e,e=>e.agentId===t),e.agents.delete(t)}function ve(t,n=d()){let r=n.agents,i=[];return i.push(t.on(e.get,e=>{let t=r.get(e.payload.agentId);e.setResult({agent:t===void 0?null:F(t)})})),i.push(t.on(e.set,e=>{R(r,e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),i.push(t.on(e.delete,e=>{e.setResult({success:_e(n,e.payload.agentId)})})),i.push(t.on(e.listByAdapter,e=>{let{adapterName:t,status:n}=e.payload,i=Array.from(r.values()).filter(e=>e.adapterName===t);n&&n!==`all`&&(i=i.filter(e=>e.status===n)),e.setResult({agents:i.map(F)})})),i.push(t.on(e.listBySession,e=>{let t=Array.from(r.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:t.map(F)})})),i.push(t.on(e.updateStatus,e=>{let{agentId:t,status:n,expectedStatus:i}=e.payload;e.setResult(ge(r,t,n,i))})),i.push(t.on(e.updateActivity,e=>{let t=z(r,e.payload.agentId,t=>(t.lastActivityAt=e.payload.lastActivityAt,!0));e.setResult({success:t})})),i.push(t.on(e.updateRuntime,e=>{let{agentId:t,adapterId:n,runtimeOwner:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l}=structuredClone(e.payload),u=z(r,t,e=>I(e,{adapterId:n,runtimeOwner:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l})?(e.lastActivityAt=Date.now(),!0):!1);e.setResult({success:u})})),()=>i.forEach(e=>e())}function B(e,t,n,r){for(let i of e.values())if(i.machineId===t&&i.adapterId===n&&i.providerSessionId===r)return i}function V(e,t){for(let n of e.values())if(n.claimToken===t)return n}function ye(e,t){let n=0;for(let r of e.values())r.agentId===t&&r.fence>n&&(n=r.fence);return n}function H(e,t,n){let r=e.agents.get(t)?.currencyFence??0;return 1+Math.max(n,r,ye(e.claims,t))}function U(e,t){return`${e.length}:${e}${t}`}function W(e,t,n,r){let i=U(t,n),a=e.runtimeInstances.get(i);if(a!==void 0)return a;let o=1;for(let t of e.runtimeInstances.values())t.machineId===n&&t.incarnation>=o&&(o=t.incarnation+1);let s={instanceId:t,machineId:n,incarnation:o,startedAt:r,retiredAt:null};return e.runtimeInstances.set(i,structuredClone(s)),s}function G(e,t,n){if(n.ownerInstanceId===null)return!1;if(t.supersededClaimToken===n.claimToken||n.status===`held`&&n.agentId===t.agentId&&n.ownerInstanceId===t.ownerInstanceId)return!0;let r=e.runtimeInstances.get(U(n.ownerInstanceId,n.machineId));if(r?.retiredAt!==null&&r?.retiredAt!==void 0)return!0;if(t.topology===`machine-exclusive`){let n=e.runtimeInstances.get(U(t.ownerInstanceId,t.machineId));if(n!==void 0&&r!==void 0&&n.incarnation>r.incarnation)return!0}return!1}function K(e,t){let n=e.currentAdapterSessionIdState??`inherited`;if(n!==`inherited`)return{currentAdapterSessionId:e.currentAdapterSessionId,currentAdapterSessionIdState:n};let r=e.adapterSessionId??null;return r===t?{currentAdapterSessionId:void 0,currentAdapterSessionIdState:`inherited`}:r===null?{currentAdapterSessionId:void 0,currentAdapterSessionIdState:`moved`}:{currentAdapterSessionId:r,currentAdapterSessionIdState:`confirmed`}}function be(e,t){if(t===`confirmed`!=(e!==null))throw Error(`Currency pairing invariant violated: confirmed ↔ id !== null (state="${t}", id=${e===null?`null`:`present`})`)}function q(e){return{adapterSessionId:e.adapterSessionId??null,currentAdapterSessionId:e.currentAdapterSessionId??null,currentAdapterSessionIdState:e.currentAdapterSessionIdState??`inherited`}}function J(e,t,n){if(t.recoveryGuard!==void 0&&e!==void 0&&(n.outcome===`claimed`||n.outcome===`idempotent`)){let r=t.recoveryAttemptId;if(r===void 0)throw Error(`guarded recovery claim requires recoveryAttemptId`);let i={status:e.status,adapterId:e.adapterId,...e.runtimeOwner===void 0?{}:{binding:{adapterId:e.adapterId,ownerMachineId:e.runtimeOwner.machineId,ownerInstanceId:e.runtimeOwner.instanceId}},...e.recoveryAttemptId===void 0?{}:{recoveryAttemptId:e.recoveryAttemptId}};if(e.status=`starting`,e.adapterId=t.adapterId,t.ownerInstance===void 0)throw Error(`guarded recovery claim requires ownerInstance`);return e.runtimeOwner={machineId:t.machineId,instanceId:t.ownerInstance.instanceId},e.recoveryAttemptId=r,e.lastActivityAt=Date.now(),{...n,recovery:{attemptId:r,preimage:i}}}return n}function Y(e,t,n){let r=e.sessions.get(t.sessionId);if(r===void 0)return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};if(r.status!==`active`&&(r.status!==`closed`||!l(t)))return{kind:`refused`,result:{outcome:`session-not-active`,status:r.status}};let i=r.leadAgentId??null,a=t.designateLead;if(a===void 0)return{kind:`ok`,leadDesignated:!1,previousLeadAgentId:i};let o=a.clear===!0,s=o?null:n.agentId;if(!o&&n.status===`disposed`)return{kind:`refused`,result:{outcome:`agent-disposed`}};if(!o&&i===n.agentId)return{kind:`ok`,leadDesignated:!1,previousLeadAgentId:i};if(i!==a.expectedLeadAgentId)return{kind:`conflict`,currentLeadAgentId:i};if(r.leadAgentId=s??void 0,!o){let e=K(n,r.adapterSessionId??null);r.currentAdapterSessionId=e.currentAdapterSessionId,r.currentAdapterSessionIdState=e.currentAdapterSessionIdState}return{kind:`ok`,leadDesignated:!0,previousLeadAgentId:i}}function X(e,t,n){if(!e.sessions.has(t.sessionId))return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};let r=e.agents.get(t.agentId);if(r===void 0||r.sessionId!==t.sessionId)return{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}};if(r.status===`disposed`)return{kind:`refused`,result:{outcome:`agent-disposed`}};let i=V(e.claims,t.claimToken);if(i!==void 0&&i.claimId!==n?.claimId)throw Error(`UNIQUE constraint failed: adapter_session_claims.claim_token (uniq_adapter_session_claims_token): "${t.claimToken}" is already in use`);return{kind:`ok`,agent:r}}function Z(e,t,n){return{outcome:e,claim:t===null?null:structuredClone(t),leadDesignated:n.leadDesignated,previousLeadAgentId:n.previousLeadAgentId}}function xe(e,t){let n=X(e,t);if(n.kind===`refused`)return n.result;let r=Date.now(),i=crypto.randomUUID(),a={claimId:i,machineId:t.machineId,adapterId:t.adapterId,adapterName:t.adapterName,providerSessionId:t.providerSessionId,sessionId:t.sessionId,agentId:t.agentId,ownerInstanceId:t.ownerInstance.instanceId,claimToken:t.claimToken,fence:H(e,t.agentId,0),status:`held`,claimedAt:r,updatedAt:r};e.claims.set(i,structuredClone(a));let o=Y(e,t,n.agent);return o.kind===`ok`?Z(`claimed`,a,o):(e.claims.delete(i),o.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:o.currentLeadAgentId}:o.result)}function Se(e,t,n){let r=X(e,t,n);if(r.kind===`refused`)return r.result;let i=Date.now(),a={...n,claimToken:t.claimToken,fence:H(e,t.agentId,n.fence),agentId:t.agentId,sessionId:t.sessionId,adapterName:t.adapterName,ownerInstanceId:t.ownerInstance.instanceId,status:`held`,claimedAt:i,updatedAt:i};e.claims.set(n.claimId,structuredClone(a));let o=Y(e,t,r.agent);return o.kind===`ok`?Z(`claimed`,a,o):(e.claims.set(n.claimId,structuredClone(n)),o.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:o.currentLeadAgentId}:o.result)}function Ce(e,t,n){if(n.status!==`held`)return{outcome:`already-claimed`,holder:structuredClone(n)};let r=X(e,t,n);if(r.kind===`refused`)return r.result;let i=Y(e,t,r.agent);return i.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}:i.kind===`refused`?i.result:Z(`idempotent`,n,i)}function we(e,t){let n=e.agents.get(t.agentId);if(n===void 0||n.sessionId!==t.sessionId)return{outcome:`not-found`,missing:`agent`};if(n.status===`disposed`&&t.designateLead?.clear!==!0)return{outcome:`agent-disposed`};let r=Y(e,t,n);return r.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:r.currentLeadAgentId}:r.kind===`refused`?r.result:Z(`claimed`,null,r)}function Te(e,t,n,r,i){let a=t.ownerInstance;if(a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);let o=U(a.instanceId,t.machineId),s=e.runtimeInstances.has(o);W(e,a.instanceId,t.machineId,Date.now());let c={...t,providerSessionId:n,ownerInstance:a};if(i===void 0){let n=xe(e,c);return!s&&n.outcome!==`claimed`&&e.runtimeInstances.delete(o),J(r,t,n)}if(i.claimToken===c.claimToken){if(i.agentId===c.agentId&&i.sessionId===c.sessionId){let n=Ce(e,c,i);return s||e.runtimeInstances.delete(o),J(r,t,n)}return s||e.runtimeInstances.delete(o),{outcome:`already-claimed`,holder:structuredClone(i)}}if(G(e,{machineId:c.machineId,agentId:c.agentId,ownerInstanceId:c.ownerInstance.instanceId,topology:c.topology,supersededClaimToken:c.supersedes?.claimToken},i)){let n=Se(e,c,i);return!s&&n.outcome!==`claimed`&&e.runtimeInstances.delete(o),J(r,t,n)}return s||e.runtimeInstances.delete(o),{outcome:`already-claimed`,holder:structuredClone(i)}}function Ee(e,t,n){let r=t.ownerInstance,i=t.recoveryGuard===void 0||r===void 0?void 0:U(r.instanceId,t.machineId),a=i===void 0||e.runtimeInstances.has(i);i!==void 0&&r!==void 0&&W(e,r.instanceId,t.machineId,Date.now());let o=we(e,t);return i!==void 0&&!a&&o.outcome!==`claimed`&&e.runtimeInstances.delete(i),J(n,t,o)}function De(e,n){let r=u(n),{providerSessionId:i}=r,a=e.agents.get(r.agentId),o=i===null?void 0:B(e.claims,r.machineId,r.adapterId,i);if(r.recoveryGuard!==void 0&&a!==void 0){let e=t(r,{status:a.status,adapterId:a.adapterId,runtimeOwner:a.runtimeOwner,recoveryAttemptId:a.recoveryAttemptId,revision:a.revision??0,currencyFence:a.currencyFence??0,currency:q(a)},o??null);if(e!==void 0)return e}return i===null?Ee(e,r,a):Te(e,r,i,a,o)}function Oe(e,t,n){let{agentId:r,claimToken:i,fence:a,expectedRevision:o,target:s}=n,c=t.revision??0,l=t.currencyFence??0;if(t.status===`disposed`)return{outcome:`agent-disposed`};let u=V(e.claims,i);if(u===void 0||u.agentId!==r||u.sessionId!==t.sessionId||u.status!==`held`||u.fence!==a)return{outcome:`not-owner`};if(a<l)return{outcome:`superseded`,currentFence:l};let d=q(t);if(d.currentAdapterSessionId===s.currentAdapterSessionId&&d.currentAdapterSessionIdState===s.currentAdapterSessionIdState&&l===a)return{outcome:`idempotent`,revision:c,currency:d,sessionSnapshotUpdated:!1};if(c!==o)return{outcome:`currency-changed`,revision:c,currency:d}}function Q(e,t,n){let r=Oe(e,t,n);if(r!==void 0)return r;let{agentId:i,fence:a,expectedRevision:o,target:s}=n;be(s.currentAdapterSessionId,s.currentAdapterSessionIdState);let c=t.adapterSessionId??null;t.currentAdapterSessionId=s.currentAdapterSessionId??void 0,t.currentAdapterSessionIdState=s.currentAdapterSessionIdState,t.currencyFence=a,t.revision=o+1,t.lastActivityAt=Date.now();let l=e.sessions.get(t.sessionId),u=!1;if(l!==void 0&&l.leadAgentId===i){let e=K(t,l.adapterSessionId??null);l.currentAdapterSessionId=e.currentAdapterSessionId,l.currentAdapterSessionIdState=e.currentAdapterSessionIdState,u=!0}return{outcome:`settled`,revision:o+1,currency:{adapterSessionId:c,...s},sessionSnapshotUpdated:u}}function ke(e,t,n){let r=V(e.claims,t);if(!(r===void 0||r.claimId===n))throw Error(`UNIQUE constraint failed: adapter_session_claims.claim_token (uniq_adapter_session_claims_token): "${t}" is already in use`)}function Ae(e,t){if(!(t===void 0||t.agentId!==e.agentId||t.status!==`held`||t.ownerInstanceId!==null&&t.ownerInstanceId!==e.ownerInstance.instanceId))return{generation:t,rollback:()=>{}}}function je(e,t,n){if(t.ownerInstanceId!==null)return t;let r={...t,ownerInstanceId:n};return e.claims.set(r.claimId,structuredClone(r)),r}function Me(e,t,n){let{machineId:r,adapterId:i,agentId:a}=t,o=B(e.claims,r,i,n),s,c,l=Ae(t,o);if(l!==void 0)s=l.generation,c=l.rollback;else if(o!==void 0&&!G(e,{machineId:r,agentId:a,ownerInstanceId:t.ownerInstance.instanceId,topology:t.topology},o))return{outcome:`already-claimed`,holder:structuredClone(o)};else{let l=Date.now(),u=o?.claimId??crypto.randomUUID();ke(e,t.movement.claimToken,u),s={claimId:u,machineId:r,adapterId:i,adapterName:t.adapterName,providerSessionId:n,sessionId:t.sessionId,agentId:a,ownerInstanceId:t.ownerInstance.instanceId,claimToken:t.movement.claimToken,fence:H(e,a,o?.fence??0),status:`held`,claimedAt:l,updatedAt:l},e.claims.set(u,structuredClone(s)),c=o===void 0?()=>{e.claims.delete(u)}:()=>{e.claims.set(u,structuredClone(o))}}let u=t.movement.kind===`confirmed`?Array.from(e.claims.values()).filter(e=>e.agentId===a&&e.status===`held`&&e.claimId!==s.claimId):[];for(let t of u)e.claims.delete(t.claimId);return{generation:s,releasedProviderSessionIds:u.map(e=>e.providerSessionId),rollback:()=>{for(let t of u)e.claims.set(t.claimId,structuredClone(t));c()}}}function Ne(e,t){if(e.kind===`confirmed`)return{providerSessionId:e.providerSessionId,currency:{currentAdapterSessionId:e.providerSessionId,currentAdapterSessionIdState:`confirmed`}};let n=c(q(t));return n===null?null:{providerSessionId:n,currency:{currentAdapterSessionId:null,currentAdapterSessionIdState:`moved`}}}function Pe(e,t){return e.on(i.read,e=>{let{agentId:n}=e.payload,r=t.agents.get(n);if(r===void 0){e.setResult({ownership:null});return}let i=Array.from(t.claims.values()).filter(e=>e.agentId===n).sort((e,t)=>e.fence-t.fence||e.claimId.localeCompare(t.claimId));e.setResult({ownership:{agentId:n,sessionId:r.sessionId,currency:q(r),revision:r.revision??0,currencyFence:r.currencyFence??0,claims:i.map(e=>structuredClone(e))}})})}function $(e,t){return e.on(i.settleCurrency,e=>{let n=t.agents.get(e.payload.agentId);if(n===void 0){e.setResult({outcome:`not-found`});return}e.setResult(Q(t,n,e.payload))})}function Fe(e,t){return e.on(i.finalizeRecovery,e=>{let{agentId:n,attemptId:r,binding:i,action:a}=e.payload,o=t.agents.get(n);if(o===void 0||o.status!==`starting`||o.recoveryAttemptId!==r||o.adapterId!==i.adapterId||o.runtimeOwner?.machineId!==i.ownerMachineId||o.runtimeOwner?.instanceId!==i.ownerInstanceId){e.setResult({applied:!1});return}a.kind===`rollback`?(o.status=a.preimage.status,o.adapterId=a.preimage.adapterId,o.runtimeOwner=a.preimage.binding===void 0?void 0:{machineId:a.preimage.binding.ownerMachineId,instanceId:a.preimage.binding.ownerInstanceId},o.recoveryAttemptId=a.preimage.recoveryAttemptId):(o.status=a.kind===`succeeded`?`idle`:`dead`,o.recoveryAttemptId=void 0),o.lastActivityAt=Date.now(),e.setResult({applied:!0})})}function Ie(e,t){return e.on(i.settleMovement,e=>{let n=r.parse(e.payload),i=n.ownerInstance;if(i===void 0)throw Error(`session ownership movement requires ownerInstance`);let a=U(i.instanceId,n.machineId),o=t.runtimeInstances.has(a);W(t,i.instanceId,n.machineId,Date.now());let s={...n,ownerInstance:i},c=t.agents.get(n.agentId);if(c===void 0||c.sessionId!==n.sessionId){o||t.runtimeInstances.delete(a),e.setResult({outcome:`not-found`});return}if(c.status===`disposed`){o||t.runtimeInstances.delete(a),e.setResult({outcome:`agent-disposed`});return}let l=Ne(s.movement,c);if(l===null){o||t.runtimeInstances.delete(a),e.setResult({outcome:`idempotent`,revision:c.revision??0,currency:q(c),sessionSnapshotUpdated:!1,claim:null});return}let u=Me(t,s,l.providerSessionId);if(!(`generation`in u)){o||t.runtimeInstances.delete(a),e.setResult(u);return}let d=Q(t,c,{agentId:n.agentId,claimToken:u.generation.claimToken,fence:u.generation.fence,expectedRevision:n.expectedRevision,target:l.currency});if(d.outcome!==`settled`){u.rollback(),o||t.runtimeInstances.delete(a),e.setResult(d.outcome===`idempotent`?{...d,claim:structuredClone(u.generation)}:d);return}let f=je(t,u.generation,i.instanceId);e.setResult({outcome:`settled`,revision:d.revision,currency:d.currency,sessionSnapshotUpdated:d.sessionSnapshotUpdated,releasedProviderSessionIds:u.releasedProviderSessionIds,claim:structuredClone(f)})})}function Le(e,t){return e.on(i.releaseAgentClaims,e=>{let{agentId:n,claimToken:r,disposition:i}=e.payload,a=Array.from(t.claims.values()).filter(e=>e.agentId===n&&(r===void 0||e.claimToken===r));if(i===`released`){for(let e of a)t.claims.delete(e.claimId);e.setResult({releasedProviderSessionIds:a.map(e=>e.providerSessionId),markedClaims:[],claimTokenNotFound:r!==void 0&&a.length===0});return}let o=Date.now(),s=a.map(e=>{let n={...e,status:i,updatedAt:o};return t.claims.set(e.claimId,structuredClone(n)),n});e.setResult({releasedProviderSessionIds:[],markedClaims:s,claimTokenNotFound:r!==void 0&&a.length===0})})}function Re(e,t){return e.on(i.release,e=>{let{agentId:n,claimToken:r,disposition:i}=e.payload,a=V(t.claims,r);if(a===void 0){e.setResult({outcome:`not-found`});return}if(a.agentId!==n){e.setResult({outcome:`not-owner`,holder:structuredClone(a)});return}if(i===`released`){t.claims.delete(a.claimId),e.setResult({outcome:`released`});return}let o={...a,status:i,updatedAt:Date.now()};t.claims.set(a.claimId,structuredClone(o)),e.setResult({outcome:`marked`,claim:structuredClone(o)})})}function ze(e,t){return e.on(i.listClaims,e=>{let{machineId:n,adapterId:r,providerSessionId:i,statuses:a}=e.payload,o=Array.from(t.claims.values()).filter(e=>e.machineId===n&&(r===void 0||e.adapterId===r)&&(i===void 0||e.providerSessionId===i)&&(a===void 0||a.includes(e.status)));o.sort((e,t)=>e.claimedAt-t.claimedAt||e.claimId.localeCompare(t.claimId)),e.setResult({claims:o.map(e=>structuredClone(e))})})}function Be(e,t){return e.on(i.retireInstance,e=>{let n=Date.now(),r=0;for(let[i,a]of t.runtimeInstances)a.instanceId!==e.payload.instanceId||a.retiredAt!==null||(t.runtimeInstances.set(i,{...a,retiredAt:n}),r+=1);e.setResult({retiredMachines:r})})}function Ve(e,t){return e.on(i.getRuntimeInstance,e=>{let n=t.runtimeInstances.get(U(e.payload.instanceId,e.payload.machineId));e.setResult({instance:n===void 0?null:structuredClone(n)})})}function He(e,t=d()){let n=[Pe(e,t),Fe(e,t),e.on(i.claim,e=>{e.setResult(De(t,e.payload))}),$(e,t),Ie(e,t),Re(e,t),Le(e,t),ze(e,t),Be(e,t),Ve(e,t)];return()=>{for(let e=n.length-1;e>=0;--e)n[e]?.()}}export{S as a,h as c,m as d,d as f,C as i,te as l,ve as n,_ as o,N as r,g as s,He as t,p as u};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{$ as e,A as t,B as n,D as r,F as i,G as a,H as o,I as s,J as c,K as l,M as u,N as d,O as f,P as p,Q as ee,R as te,U as ne,V as m,W as h,X as re,Y as ie,Z as ae,_t as oe,a as se,at as ce,bt as g,c as le,ct as ue,dt as de,et as fe,f as pe,ft as me,g as he,gt as ge,h as _e,ht as ve,i as ye,it as be,j as xe,k as _,l as Se,lt as Ce,m as we,mt as Te,n as Ee,nt as De,o as Oe,ot as ke,p as Ae,pt as je,q as Me,r as Ne,rt as Pe,st as Fe,tt as Ie,u as Le,ut as Re,v as ze,vt as Be,yt as Ve,z as He}from"./authority-state-bootstrap-DgoHPc9J.mjs";import{d as Ue,f as We,p as Ge}from"./execution-attempt-repository-CWbgCTwA.mjs";import{assertWorkflowTriggerPayload as Ke,compileWorkflowTriggerBindingFilter as qe}from"./workflow-engine/workflow-trigger-binding-consumer.mjs";import{a as Je,r as Ye}from"./execution-attempt-owner-recovery-D4APLAvt.mjs";import{SerialLane as Xe}from"@makaio/framework/utils";import{ArtifactSubjects as Ze,AutomationTriggerSubjects as Qe,CRON_AUTOMATION_TRIGGER_KIND as $e,EXECUTION_LIST_DEFAULT_LIMIT as et,EXECUTION_LIST_MAX_LIMIT as v,EXECUTION_LIST_MIN_LIMIT as y,EXTERNAL_EXECUTION_ID_PREFIX as b,ExecutionAttemptSchemas as x,ExecutionAttemptSubjects as S,ExecutionsByArtifactRefsQuerySchema as tt,JsonPatchOperationSchema as nt,JsonValueSchema as rt,SessionSubjects as it,WORKFLOW_CANCELLED_REASON as at,WorkLogFrameEntrySchema as ot,WorkerSubjects as st,WorkflowAutomationTriggerBindingSchema as ct,WorkflowError as C,WorkflowErrorCode as lt,WorkflowNamespace as ut,WorkflowRunContextSchema as dt,WorkflowRunResultSchema as ft,WorkflowStepTypeSchema as pt,WorkflowSubjects as w,createWorkflowCancelSubject as mt,createWorkflowDelegateResultFinalizerNamespace as ht,createWorkflowFinalizerNamespace as gt,dep as _t,extensionToken as vt,serializeArtifactRef as yt,walkWorkflowDefinition as bt}from"@makaio/framework/contracts";import{BaseService as xt}from"@makaio/framework/service-base";import{defineDialectSchema as St,executeTransaction as T,getDatabaseDialect as Ct,registerDrizzleHandlers as wt,resolveSchema as E,serializeDatabaseOperation as D}from"@makaio/framework/storage/drizzle";import{and as O,asc as k,count as A,desc as j,eq as M,getTableColumns as Tt,gte as Et,isNotNull as Dt,isNull as N,lt as Ot,lte as kt,notInArray as At,or as jt,sql as P,sum as F}from"drizzle-orm";import{SessionToken as Mt}from"@makaio/framework/services";import{AutomationTriggerBindingRuntimeToken as Nt}from"@makaio/framework/services/automation-trigger";const Pt=l.postgres,Ft=De.postgres,It=c.postgres,Lt=be.postgres,Rt=ue.postgres,zt=re.postgres,Bt=ke.postgres,Vt=ge.postgres,Ht=me.postgres,Ut=Re.postgres,Wt=Te.postgres,Gt=ee.postgres,Kt=fe.postgres,qt=Be.postgres,I=St({workflowDefinitions:a,workflowExecutions:Ie,workflowExecutionFrames:Me,workflowGateInstances:Pe,workflowStepSpans:Fe,workflowExecutionLinks:ie,workflowRunContexts:ce,worklogSummaries:ve,worklogFrameEntries:de,worklogArtifactWrites:Ce,worklogGateEvents:je,workflowExecutionState:ae,workflowExecutionStateEvents:e,workflowFinalizations:oe},{workflowDefinitions:Pt,workflowExecutions:Ft,workflowExecutionFrames:It,workflowGateInstances:Lt,workflowStepSpans:Rt,workflowExecutionLinks:zt,workflowRunContexts:Bt,worklogSummaries:Vt,worklogFrameEntries:Ht,worklogArtifactWrites:Ut,worklogGateEvents:Wt,workflowExecutionState:Gt,workflowExecutionStateEvents:Kt,workflowFinalizations:qt});function L(e){return e.type===`global`?{scopeType:`global`,scopeKind:``,scopeId:``}:e.type===`external`?{scopeType:`external`,scopeKind:e.kind,scopeId:e.id}:{scopeType:e.type,scopeKind:``,scopeId:e.id}}function R(e){switch(e.scopeType){case`global`:return{type:`global`};case`external`:if(!e.scopeKind||!e.scopeId)throw Error(`Invalid external workflow scope row: scopeKind and scopeId are required`);return{type:`external`,kind:e.scopeKind,id:e.scopeId};case`workspace`:case`session`:if(!e.scopeId)throw Error(`Invalid ${e.scopeType} workflow scope row: scopeId is required`);return{type:e.scopeType,id:e.scopeId};default:{let t=e.scopeType;throw Error(`Unknown scope type: ${String(t)}`)}}}function Jt(e,t){let{scopeType:n,scopeKind:r,scopeId:i}=L(t);return[M(e.scopeType,n),M(e.scopeKind,r),M(e.scopeId,i)]}function z(e){return{id:e.id,name:e.name,description:e.description??void 0,root:e.root,inputSchema:e.inputSchema??void 0,configSchema:e.configSchema??void 0,outputSchema:e.outputSchema??void 0,state:e.state??void 0,artifact:e.artifact??void 0,triggers:e.triggers??void 0,scope:R(e),canvasLayout:e.canvasLayout??void 0,source:e.source??void 0,executableSource:e.executableSource??void 0,requirements:e.requirements??void 0,successFinalizerId:e.successFinalizerId??void 0}}function Yt(e,t){let n=L(e.scope);return{id:e.id,name:e.name??e.id,root:e.root,description:e.description??null,inputSchema:e.inputSchema??null,configSchema:e.configSchema??null,outputSchema:e.outputSchema??null,state:e.state??null,artifact:e.artifact??null,triggers:e.triggers??null,canvasLayout:e.canvasLayout??null,source:e.source??null,executableSource:e.executableSource??null,requirements:e.requirements??null,successFinalizerId:e.successFinalizerId??null,createdAt:t,updatedAt:t,...n}}function Xt(e,t){let{workflowDefinitions:n}=E(t,I),r=Tt(n),i=e.on(h.get,async e=>{let r=await t.select().from(n).where(M(n.id,e.payload.id)).limit(1);e.setResult({workflow:r[0]?z(r[0]):null})}),a=e.on(h.set,async i=>{let a=i.payload.workflow,o=Date.now(),s=Yt(a,o),c=await D(t,async()=>{let e=await t.insert(n).values(s).onConflictDoNothing({target:n.id}).returning();if(e.length>0)return{kind:`created`,row:e[0]};let[i]=await t.update(n).set({name:s.name,root:s.root,updatedAt:o,createdAt:P`COALESCE(${r.createdAt}, ${o})`,description:s.description===null?P`${r.description}`:s.description,inputSchema:s.inputSchema===null?P`${r.inputSchema}`:s.inputSchema,configSchema:s.configSchema===null?P`${r.configSchema}`:s.configSchema,outputSchema:s.outputSchema===null?P`${r.outputSchema}`:s.outputSchema,state:s.state,artifact:s.artifact===null?P`${r.artifact}`:s.artifact,triggers:s.triggers===null?P`${r.triggers}`:s.triggers,canvasLayout:s.canvasLayout===null?P`${r.canvasLayout}`:s.canvasLayout,source:s.source===null?P`${r.source}`:s.source,executableSource:s.executableSource,requirements:s.requirements,successFinalizerId:s.successFinalizerId,...L(a.scope)}).where(M(n.id,a.id)).returning();return i?{kind:`updated`,row:i}:void 0});c&&await e.emit(c.kind===`created`?g.definition.created:g.definition.updated,z(c.row)),i.setResult({id:a.id})}),o=e.on(h.delete,async r=>{let i=(await D(t,()=>t.delete(n).where(M(n.id,r.payload.id)).returning())).length>0;i&&await e.emit(g.definition.deleted,{id:r.payload.id}),r.setResult({deleted:i})}),s=e.on(h.list,async e=>{let r=e.payload,i=r.scope?Jt(n,r.scope):[],a=i.length>0?await t.select().from(n).where(O(...i)):await t.select().from(n);e.setResult({workflows:a.map(z)})});return()=>{i(),a(),o(),s()}}function Zt(e){return{frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,parentFrameId:e.parentFrameId??void 0,status:e.status,attempt:e.attempt,iteration:e.iteration??void 0,branchKey:e.branchKey??void 0,...e.outputPresent?{output:e.output}:{},error:e.error??void 0,startedAt:e.startedAt??void 0,completedAt:e.completedAt??void 0}}function Qt(e,t){return{frameId:t.frameId,executionId:e,nodeId:t.nodeId,nodeType:t.nodeType,path:t.path,parentFrameId:t.parentFrameId??null,status:t.status,attempt:t.attempt,iteration:t.iteration??null,branchKey:t.branchKey??null,output:t.output===void 0?null:t.output,outputPresent:t.output!==void 0,error:t.error??null,startedAt:t.startedAt??null,completedAt:t.completedAt??null}}function $t(e,t){let{workflowExecutionFrames:n}=E(t,I),r=e.on(h.setFrame,async e=>{let{executionId:r,frame:i}=e.payload;if(!m(e,r))throw Error(`Unauthorized: caller is not permitted to write frames for execution: ${r}`);let a=Qt(r,i);await D(t,()=>t.insert(n).values(a).onConflictDoUpdate({target:n.frameId,set:a})),e.setResult({frameId:i.frameId})}),i=e.on(h.getFrame,async e=>{let r=await t.select().from(n).where(M(n.frameId,e.payload.frameId)).limit(1);e.setResult({frame:r[0]?Zt(r[0]):null})}),a=e.on(h.listFrames,async e=>{if(!m(e,e.payload.executionId))throw Error(`Unauthorized: caller is not permitted to list frames for execution: ${e.payload.executionId}`);let r=await t.select().from(n).where(M(n.executionId,e.payload.executionId)).orderBy(k(n.startedAt),k(n.frameId));e.setResult({frames:r.map(Zt)})});return()=>{r(),i(),a()}}function en(e){return`${e.executionId}:${e.nodeId}:${e.frameId}`}function B(e){return{executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId,schema:e.schema,prompt:e.prompt??void 0,status:e.status,autoAction:e.autoAction,timeoutMs:e.timeoutMs??null,...e.resumeDataPresent?{resumeData:e.resumeData}:{},...e.reason===null?{}:{reason:e.reason},createdAt:e.createdAt,resolvedAt:e.resolvedAt??void 0}}function V(e){return{id:en(e),executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId,schema:e.schema,prompt:e.prompt??null,status:e.status,autoAction:e.autoAction,timeoutMs:e.timeoutMs,resumeData:e.resumeData===void 0?null:e.resumeData,reason:e.reason??null,resumeDataPresent:e.resumeData!==void 0,createdAt:e.createdAt,resolvedAt:e.resolvedAt??null}}function tn(e,t,n,r){if(e===void 0&&t===void 0)throw Error(`Either executionId or status is required to list gate instances.`);let i=n??et;if(!Number.isInteger(i)||i<y||i>v)throw Error(`Gate instance list limit must be an integer between ${y} and ${v}.`);return{resolvedLimit:i,predicates:[...e===void 0?[]:[M(r.executionId,e)],...t===void 0?[]:[M(r.status,t)]]}}function nn(e,t){let{workflowExecutions:n,workflowGateInstances:r}=E(t,I),i=e.on(h.setGateInstance,async e=>{let n=e.payload.gate;if(!m(e,n.executionId))throw Error(`Unauthorized: caller is not permitted to write gates for execution: ${n.executionId}`);let i=V(n);await D(t,()=>t.insert(r).values(i).onConflictDoUpdate({target:r.id,set:i})),e.setResult({id:i.id})}),a=e.on(h.resolveWaitingGateInstance,async e=>{let n=e.payload.gate,i=V(n),a=await D(t,()=>t.update(r).set(i).where(O(M(r.id,i.id),M(r.status,`waiting`))).returning({id:r.id}));e.setResult({accepted:a.length===1})}),o=e.on(h.getGateInstance,async e=>{let{executionId:n,nodeId:i,frameId:a}=e.payload;if(!m(e,n))throw Error(`Unauthorized: caller is not permitted to read gates for execution: ${n}`);let o=[M(r.executionId,n),M(r.nodeId,i)];a!==void 0&&o.push(M(r.frameId,a));let s=await t.select().from(r).where(O(...o)).limit(1);e.setResult({gate:s[0]?B(s[0]):null})}),s=e.on(h.listGateInstances,async e=>{let{executionId:n,status:i,limit:a}=e.payload,{resolvedLimit:o,predicates:s}=tn(n,i,a,r),c=await t.select().from(r).where(O(...s)).orderBy(j(r.createdAt),j(r.id)).limit(o);e.setResult({gates:c.map(B)})}),c=e.on(h.listPausedGateTimeouts,async e=>{let i=await t.select({gate:r}).from(r).innerJoin(n,M(r.executionId,n.id)).where(O(M(r.status,`waiting`),M(n.status,`paused`),Dt(r.timeoutMs)));e.setResult({gates:i.map(e=>B(e.gate))})});return()=>{i(),a(),o(),s(),c()}}function rn(e){return{executionId:e.executionId,frameId:e.frameId,stepId:e.stepId,stepType:e.stepType,status:e.status,startedAt:e.startedAt??void 0,completedAt:e.completedAt??void 0,durationMs:e.durationMs??void 0,inputTokens:e.inputTokens??void 0,outputTokens:e.outputTokens??void 0,estimatedCost:e.estimatedCost??void 0,toolCallCount:e.toolCallCount??void 0,input:e.input??void 0,output:e.output??void 0}}function an(e){return{sourceExecutionId:e.sourceExecutionId,targetExecutionId:e.targetExecutionId,linkType:e.linkType,metadata:e.metadata??void 0}}function on(e,t){let{workflowStepSpans:n,workflowExecutionLinks:r}=E(t,I),i=e.on(h.setSpan,async e=>{let{span:r}=e.payload;if(!m(e,r.executionId))throw Error(`Unauthorized: caller is not permitted to write spans for execution: ${r.executionId}`);await D(t,()=>t.insert(n).values(r).onConflictDoUpdate({target:[n.executionId,n.frameId],set:r})),e.setResult({id:`${r.executionId}:${r.frameId}`})}),a=e.on(h.listSpans,async e=>{let r=await t.select().from(n).where(M(n.executionId,e.payload.executionId)).orderBy(k(n.startedAt),k(n.stepId),k(n.frameId));e.setResult({spans:r.map(rn)})}),o=e.on(h.setExecutionLink,async e=>{let{link:n}=e.payload;await D(t,()=>t.insert(r).values(n).onConflictDoUpdate({target:[r.sourceExecutionId,r.targetExecutionId],set:n})),e.setResult({id:`${n.sourceExecutionId}:${n.targetExecutionId}`})}),s=e.on(h.listExecutionLinks,async e=>{let{sourceExecutionId:n,targetExecutionId:i}=e.payload;if(n===void 0&&i===void 0)throw Error(`Either sourceExecutionId or targetExecutionId is required to list execution links.`);let a=[...n===void 0?[]:[M(r.sourceExecutionId,n)],...i===void 0?[]:[M(r.targetExecutionId,i)]],o=t.select().from(r).where(O(...a));e.setResult({links:(await o).map(an)})});return()=>{i(),a(),o(),s()}}function H(e,t){return t===null?Ct(e)===`postgres`?P`'null'::jsonb`:P`'null'`:t}function sn(e){switch(e.kind){case`path`:return{sourceKind:`path`,sourcePath:e.path,sourceFilename:null,sourceCode:null};case`source`:return{sourceKind:`source`,sourcePath:null,sourceFilename:e.filename,sourceCode:e.source};case`definition`:return{sourceKind:`definition`,sourcePath:null,sourceFilename:null,sourceCode:null}}}function cn(e){switch(e.sourceKind){case`path`:if(!e.sourcePath)throw Error(`Invalid run context row: sourcePath required for kind=path`);return{kind:`path`,path:e.sourcePath};case`source`:if(!e.sourceFilename)throw Error(`Invalid run context row: sourceFilename required for kind=source`);return{kind:`source`,filename:e.sourceFilename,source:e.sourceCode??``};case`definition`:return{kind:`definition`,workflowId:e.workflowId};default:throw Error(`Unknown run context source kind: ${String(e.sourceKind)}`)}}function ln(e){return{executionId:e.executionId,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId,source:cn(e),definitionSnapshot:e.definitionSnapshot??void 0,workerManifest:e.workerManifest,inputs:e.inputs,config:e.config??{},triggerPayload:e.triggerPayload,triggerMode:e.triggerMode,...e.artifactRef===null?{}:{artifactRef:e.artifactRef},scope:R(e),...e.dispatchMetadata===null?{}:{dispatchMetadata:e.dispatchMetadata},cancelSubject:e.cancelSubject,env:e.env,createdAt:e.createdAt,suspensionStrategy:e.suspensionStrategy??`wait-in-process`,...e.terminalAuthority===null?{}:{terminalAuthority:e.terminalAuthority},...e.materializationSpec===null?{}:{materializationSpec:e.materializationSpec}}}function un(e){let t=sn(e.source),n=L(e.scope);return{executionId:e.executionId,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId,...t,definitionSnapshot:e.definitionSnapshot??null,workerManifest:e.workerManifest,inputs:e.inputs,config:e.config??{},triggerPayload:e.triggerPayload,triggerMode:e.triggerMode??`immediate`,artifactRef:e.artifactRef??null,dispatchMetadata:e.dispatchMetadata??null,...n,cancelSubject:e.cancelSubject,env:e.env,createdAt:e.createdAt,suspensionStrategy:e.suspensionStrategy,terminalAuthority:e.terminalAuthority??null,materializationSpec:e.materializationSpec??null}}async function dn(e,t,n){let r=un(t);await e.insert(n).values(r).onConflictDoUpdate({target:n.executionId,set:r})}function fn(e,t){let{workflowRunContexts:n,workflowExecutionState:r,workflowExecutionStateEvents:i}=E(t,I),a=e.on(h.setRunContext,async e=>{let a=e.payload.runContext,o=e.payload.initialState;await T(t,async e=>{if(await dn(e,a,n),o===void 0)return;let s=Date.now(),c=H(t,o);await e.insert(r).values({executionId:a.executionId,sequence:0,value:c,updatedAt:s}).onConflictDoNothing(),await e.insert(i).values({executionId:a.executionId,sequence:0,patch:[],value:c,createdAt:s}).onConflictDoNothing()}),e.setResult({executionId:a.executionId})}),o=e.on(h.getRunContext,async e=>{let{executionId:r}=e.payload,i=await t.select().from(n).where(M(n.executionId,r)),a=i[0]?ln(i[0]):null;e.setResult({runContext:a})});return()=>{a(),o()}}async function pn(e,t,n){let{workflowExecutionState:r,workflowExecutionStateEvents:i}=E(e,I),a=Date.now(),o=H(e,n);await T(e,async e=>{await e.insert(r).values({executionId:t,sequence:0,value:o,updatedAt:a}).onConflictDoNothing(),await e.insert(i).values({executionId:t,sequence:0,patch:[],value:o,createdAt:a}).onConflictDoNothing()})}async function mn(e,t){let{workflowExecutionState:n}=E(e,I),r=(await e.select().from(n).where(M(n.executionId,t)).limit(1))[0];return r?{executionId:r.executionId,sequence:r.sequence,value:r.value}:null}async function hn(e,t){let{workflowExecutionState:r,workflowExecutionStateEvents:i}=E(e,I),a=Date.now(),o=H(e,t.nextValue);return T(e,async e=>{let s=(await e.select().from(r).where(M(r.executionId,t.executionId)).limit(1))[0];if(!s)throw Error(`no workflow state for execution ${t.executionId}`);if(t.expectedSequence===void 0)throw Error(`expectedSequence is required to patch workflow state`);let c=s.sequence+1,l=n(s.value,t.nextValue);if((await e.update(r).set({sequence:c,value:o,updatedAt:a}).where(O(M(r.executionId,t.executionId),M(r.sequence,t.expectedSequence))).returning()).length===0)throw Error(`state sequence conflict: expected ${String(t.expectedSequence)}, got ${String(s.sequence)}`);return await e.insert(i).values({executionId:t.executionId,sequence:c,patch:l,value:o,createdAt:a}),{executionId:t.executionId,sequence:c,patch:l,value:t.nextValue}})}function gn(e,t){let n=e.on(h.initializeState,async e=>{let{executionId:n,initialValue:r}=e.payload;await pn(t,n,r),e.setResult({})}),r=e.on(h.getState,async e=>{let{executionId:n}=e.payload,r=await mn(t,n);e.setResult({state:r})}),i=e.on(h.patchState,async e=>{let{executionId:n,expectedSequence:r,nextValue:i}=e.payload,a=await hn(t,{executionId:n,expectedSequence:r,nextValue:i});e.setResult(a)});return()=>{n(),r(),i()}}function _n(e){return{executionId:e.executionId,workflowId:e.workflowId,workflowName:e.workflowName??void 0,status:e.status,startedAt:e.startedAt,completedAt:e.completedAt??void 0,durationMs:e.durationMs??void 0,totalInputTokens:e.totalInputTokens??void 0,totalOutputTokens:e.totalOutputTokens??void 0,totalEstimatedCost:e.totalEstimatedCost??void 0,error:e.error??void 0,failedNodeId:e.failedNodeId??void 0}}async function vn(e,t){let{worklogSummaries:n}=E(e,I);await e.insert(n).values(t).onConflictDoNothing()}async function yn(e,t){let{worklogSummaries:n}=E(e,I);await e.insert(n).values(t).onConflictDoUpdate({target:n.executionId,set:bn(t),setWhere:At(n.status,[`completed`,`failed`,`cancelled`])})}function bn(e){return{workflowId:e.workflowId,workflowName:e.workflowName,status:e.status,startedAt:e.startedAt,completedAt:e.completedAt,durationMs:e.durationMs,error:e.error,failedNodeId:e.failedNodeId}}async function U(e,t){let{worklogSummaries:n}=E(e,I),r=await e.select().from(n).where(M(n.executionId,t)).limit(1);return r[0]?_n(r[0]):null}async function xn(e,t={}){let{worklogSummaries:n}=E(e,I),{workflowId:r,status:i,limit:a=50,offset:o=0}=t,s=[...r===void 0?[]:[M(n.workflowId,r)],...i===void 0?[]:[M(n.status,i)]],c=s.length>0?O(...s):void 0,[l,u]=await Promise.all([e.select().from(n).where(c).orderBy(j(n.startedAt)).limit(a).offset(o),e.select({count:A()}).from(n).where(c)]);return{items:l.map(_n),total:u[0]?.count??0}}async function Sn(e,t){let{worklogFrameEntries:n}=E(e,I);await e.insert(n).values(t).onConflictDoNothing()}async function Cn(e,t){let{worklogFrameEntries:n}=E(e,I);await e.insert(n).values(t).onConflictDoUpdate({target:n.frameId,set:t,setWhere:At(n.status,[`completed`,`failed`,`skipped`,`cancelled`])})}async function W(e,t){let{worklogFrameEntries:n}=E(e,I);return(await e.select().from(n).where(M(n.frameId,t)).limit(1))[0]??null}async function wn(e,t){let n=await W(e,t);return n===null?null:ot.parse({executionId:n.executionId,frameId:n.frameId,nodeId:n.nodeId,nodeType:n.nodeType,path:n.path,status:n.status,attempt:n.attempt,iteration:n.iteration??void 0,branchKey:n.branchKey??void 0,startedAt:n.startedAt??void 0,completedAt:n.completedAt??void 0,durationMs:n.durationMs??void 0,inputTokens:n.inputTokens??void 0,outputTokens:n.outputTokens??void 0,estimatedCost:n.estimatedCost??void 0,error:n.error??void 0})}async function Tn(e,t){let{worklogArtifactWrites:n}=E(e,I);await e.insert(n).values(t).onConflictDoUpdate({target:n.id,set:t})}function En(e,t,n,r,i){return`${e}:${t}:${n}:${r}:${i}`}async function G(e,t){let{worklogGateEvents:n}=E(e,I);await e.insert(n).values(t).onConflictDoUpdate({target:n.id,set:t})}async function Dn(e,t){let{worklogGateEvents:n}=E(e,I);return(await e.select().from(n).where(M(n.id,t)).limit(1))[0]??null}function K(e,t,n){return`${e}:${t}:${n}`}async function On(e,t,n){let[r]=await e.update(t).set({totalInputTokens:t.totalInputTokens}).where(M(t.executionId,n)).returning();return r}async function kn(e,t,n){let[r]=await e.select({totalInputTokens:F(t.inputTokens),totalOutputTokens:F(t.outputTokens),totalEstimatedCost:F(t.estimatedCost),measuredInputTokens:A(t.inputTokens),measuredOutputTokens:A(t.outputTokens),measuredCosts:A(t.estimatedCost)}).from(t).where(M(t.executionId,n));return{totalInputTokens:Number(r?.totalInputTokens??0),totalOutputTokens:Number(r?.totalOutputTokens??0),totalEstimatedCost:Number(r?.totalEstimatedCost??0),hasMeasurements:Number(r?.measuredInputTokens??0)>0||Number(r?.measuredOutputTokens??0)>0||Number(r?.measuredCosts??0)>0}}function An(e){return e.hasMeasurements}async function jn(e,t,n,r){await e.update(t).set({totalInputTokens:r.totalInputTokens,totalOutputTokens:r.totalOutputTokens,totalEstimatedCost:r.totalEstimatedCost}).where(M(t.executionId,n))}async function Mn(e,t,n,r){let i=P`coalesce((select sum(${n.inputTokens}) from ${n} where ${n.executionId} = ${r}), 0)`,a=P`coalesce((select sum(${n.outputTokens}) from ${n} where ${n.executionId} = ${r}), 0)`,o=P`coalesce((select sum(${n.estimatedCost}) from ${n} where ${n.executionId} = ${r}), 0)`,s=P`exists(
|
|
2
|
+
select 1 from ${n}
|
|
3
|
+
where ${n.executionId} = ${r}
|
|
4
|
+
and (${n.inputTokens} is not null
|
|
5
|
+
or ${n.outputTokens} is not null
|
|
6
|
+
or ${n.estimatedCost} is not null)
|
|
7
|
+
)`;await e.update(t).set({totalInputTokens:i,totalOutputTokens:a,totalEstimatedCost:o}).where(O(M(t.executionId,r),s))}async function Nn(e,t){let{worklogSummaries:n,worklogFrameEntries:r}=E(e,I);if(Ct(e)===`sqlite`){await Mn(e,n,r,t);return}await T(e,async e=>{if(await On(e,n,t)===void 0)return;let i=await kn(e,r,t);An(i)&&await jn(e,n,t,i)})}async function Pn(e,t={}){let{worklogSummaries:n}=E(e,I),{workflowId:r,since:i,until:a}=t,o=[...r===void 0?[]:[M(n.workflowId,r)],...i===void 0?[]:[Et(n.startedAt,i)],...a===void 0?[]:[kt(n.startedAt,a)]],s=o.length>0?O(...o):void 0,[c,l]=await Promise.all([e.select({status:n.status,count:A()}).from(n).where(s).groupBy(n.status),e.select({totalDurationMs:F(n.durationMs),totalInputTokens:F(n.totalInputTokens),totalOutputTokens:F(n.totalOutputTokens),totalEstimatedCost:F(n.totalEstimatedCost)}).from(n).where(s)]),u={pending:0,running:0,paused:0,finalizing:0,completed:0,failed:0,cancelled:0},d=0;for(let e of c)u[e.status]=e.count,d+=e.count;let f=l[0];return{total:d,byStatus:u,totalDurationMs:Number(f?.totalDurationMs??0),totalInputTokens:Number(f?.totalInputTokens??0),totalOutputTokens:Number(f?.totalOutputTokens??0),totalEstimatedCost:Number(f?.totalEstimatedCost??0)}}async function Fn(e,t,n,r,i){let a=await W(t,n);if(a===null||i===void 0)return null;let o=await e.requestOptional(Ze.resolve,{ref:{refClass:`artifact`,kind:r.kind,id:r.id,revision:i}}).catch(()=>void 0);if(o===void 0||!o.handled||o.data.artifact===null)return null;let{kind:s,schemaVersion:c,scope:l}=o.data.artifact;return{nodeId:a.nodeId,artifact:{kind:s,schemaVersion:c,scope:l}}}async function q(e,t){try{await t()}catch(t){console.error(`[WorklogProjection] Write failed (${e}):`,t)}}async function J(e,t){try{await e.emit(g.worklog.changed,{executionId:t})}catch(e){console.error(`[WorklogProjection] worklog.changed emit failed for ${t}:`,e)}}const In=new Set([`completed`,`failed`,`cancelled`]);function Ln(e){return In.has(e)}async function Rn(e,t){return await vn(e,{executionId:t.executionId,workflowId:t.workflowId,workflowName:null,status:`running`,startedAt:t.startedAt??Date.now(),completedAt:null,durationMs:null,totalInputTokens:null,totalOutputTokens:null,totalEstimatedCost:null,error:null,failedNodeId:null}),!0}async function zn(e,t){let n=t.completedAt??Date.now(),r=await U(e,t.executionId);return r!==null&&Ln(r.status)?!1:(await yn(e,{executionId:t.executionId,workflowId:r?.workflowId??t.executionId,workflowName:r?.workflowName??null,status:`completed`,startedAt:r?.startedAt??n-t.totalDuration,completedAt:n,durationMs:t.totalDuration,totalInputTokens:r?.totalInputTokens??null,totalOutputTokens:r?.totalOutputTokens??null,totalEstimatedCost:r?.totalEstimatedCost??null,error:null,failedNodeId:null}),!0)}async function Bn(e,t,n,r,i,a){let o=await U(e,t);if(o!==null&&Ln(o.status))return!1;let s=o?.startedAt??a;return await yn(e,{executionId:t,workflowId:o?.workflowId??t,workflowName:o?.workflowName??null,status:n,startedAt:s,completedAt:a,durationMs:a-s,totalInputTokens:o?.totalInputTokens??null,totalOutputTokens:o?.totalOutputTokens??null,totalEstimatedCost:o?.totalEstimatedCost??null,error:r,failedNodeId:i}),!0}function Vn(e,t){return[e.on(g.execution.started,async n=>{let{executionId:r}=n.payload;await q(`execution.started[${r}]`,async()=>{await D(t,()=>Rn(t,n.payload))&&await J(e,r)})}),e.on(g.execution.completed,async n=>{let{executionId:r}=n.payload;await q(`execution.completed[${r}]`,async()=>{await D(t,()=>zn(t,n.payload))&&await J(e,r)})}),e.on(g.execution.failed,async n=>{let{executionId:r,error:i,failedStepId:a}=n.payload,o=n.payload.completedAt??Date.now();await q(`execution.failed[${r}]`,async()=>{await D(t,()=>Bn(t,r,`failed`,i,a??null,o))&&await J(e,r)})}),e.on(g.execution.cancelled,async n=>{let{executionId:r}=n.payload,i=n.payload.completedAt??Date.now();await q(`execution.cancelled[${r}]`,async()=>{await D(t,()=>Bn(t,r,`cancelled`,null,null,i))&&await J(e,r)})})]}const Hn=new Set([`completed`,`failed`,`skipped`,`cancelled`]);function Un(e){return Hn.has(e)}function Wn(e,t,n){return e===null?{nodeId:t,nodeType:`station`,path:[],attempt:0,iteration:null,branchKey:null,startedAt:n,inputTokens:null,outputTokens:null,estimatedCost:null}:{nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,attempt:e.attempt,iteration:e.iteration,branchKey:e.branchKey,startedAt:e.startedAt,inputTokens:e.inputTokens,outputTokens:e.outputTokens,estimatedCost:e.estimatedCost}}async function Gn(e,t,n,r,i,a,o){let s=o??Date.now(),c=await W(t,r);c!==null&&Un(c.status)||(await Cn(t,{frameId:r,executionId:n,...Wn(c,i,a===void 0?null:s-a),status:`completed`,completedAt:s,durationMs:a??null,error:null}),await Nn(t,n),await J(e,n))}async function Kn(e,t,n,r,i,a,o,s){let c=s??Date.now(),l=await W(t,r);l!==null&&Un(l.status)||(await Cn(t,{frameId:r,executionId:n,...Wn(l,i,o===void 0?null:c-o),status:`failed`,completedAt:c,durationMs:o??null,error:a}),await J(e,n))}function qn(e,t){return[e.on(g.frame.started,async n=>{let{executionId:r,frameId:i,nodeId:a,nodeType:o,path:s,startedAt:c}=n.payload;await q(`frame.started[${i}]`,async()=>{await Sn(t,{frameId:i,executionId:r,nodeId:a,nodeType:o,path:s,status:`running`,attempt:0,iteration:null,branchKey:null,startedAt:c??Date.now(),completedAt:null,durationMs:null,inputTokens:null,outputTokens:null,estimatedCost:null,error:null}),await J(e,r)})}),e.on(g.frame.completed,async n=>{let{executionId:r,frameId:i,nodeId:a,duration:o,completedAt:s}=n.payload;await q(`frame.completed[${i}]`,()=>Gn(e,t,r,i,a,o,s))}),e.on(g.frame.failed,async n=>{let{executionId:r,frameId:i,nodeId:a,error:o,duration:s,completedAt:c}=n.payload;await q(`frame.failed[${i}]`,()=>Kn(e,t,r,i,a,o,s,c))})]}const Jn={user:`rejected`,timeout:`timed-out`,cancelled:`cancelled`};function Yn(e,t){return[e.on(g.gate.suspended,async n=>{let{executionId:r,frameId:i,nodeId:a,prompt:o}=n.payload;await q(`gate.suspended[${i}]`,async()=>{await G(t,{id:K(r,a,i),executionId:r,nodeId:a,frameId:i,status:`waiting`,prompt:o??null,openedAt:Date.now(),resolvedAt:null,resumeData:null}),await J(e,r)})}),e.on(g.gate.resumed,async n=>{let{executionId:r,frameId:i,nodeId:a,resumeData:o}=n.payload;await q(`gate.resumed[${i}]`,async()=>{let n=K(r,a,i),s=await Dn(t,n),c=Date.now();await G(t,{id:n,executionId:r,nodeId:a,frameId:i,status:`resumed`,prompt:s?.prompt??null,openedAt:s?.openedAt??c,resolvedAt:c,resumeData:o}),await J(e,r)})}),e.on(g.gate.resolved,async n=>Xn(n.payload,e,t)),e.on(g.artifact.updated,async n=>{let{executionId:r,frameId:i,artifactRef:a,revision:o}=n.payload;await q(`artifact.updated[${r}:${i}]`,async()=>{let n=await Fn(e,t,i,a,o);if(n===null)return;let s=Date.now();await Tn(t,{id:En(r,i,a.kind,a.id,s),executionId:r,frameId:i,nodeId:n.nodeId,artifact:n.artifact,revision:o??null,writtenAt:s}),await J(e,r)})})]}async function Xn(e,t,n){let{executionId:r,frameId:i,stepId:a,source:o}=e;o===`user`&&e.action===`approve`||await q(`gate.resolved[${i}]`,async()=>{let s=K(r,a,i),c=await Dn(n,s),l=Date.now();await G(n,{id:s,executionId:r,nodeId:a,frameId:i,status:o!==`cancelled`&&e.action===`approve`?`resumed`:Jn[o],prompt:c?.prompt??null,openedAt:c?.openedAt??l,resolvedAt:l,resumeData:c?.resumeData??null}),await J(t,r)})}function Zn(e,t){let n=[...Vn(e,t),...qn(e,t),...Yn(e,t),e.on(g.worklog.get,async e=>{let{executionId:n}=e.payload,r=await U(t,n);e.setResult({summary:r})}),e.on(g.worklog.frame.get,async e=>{let{frameId:n}=e.payload,r=await wn(t,n);e.setResult({frame:r})}),e.on(g.worklog.list,async e=>{let{workflowId:n,status:r,limit:i,offset:a}=e.payload,o=await xn(t,{workflowId:n,status:r,limit:i,offset:a});e.setResult(o)}),e.on(g.worklog.stats,async e=>{let{workflowId:n,since:r,until:i}=e.payload,a=await Pn(t,{workflowId:n,since:r,until:i});e.setResult({stats:a})})];return()=>{for(let e of n)e()}}function Y(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((e,n)=>Y(e,t[n]));if(e===null||t===null||typeof e!=`object`||typeof t!=`object`)return!1;let n=e,r=t,i=Object.keys(n).sort(),a=Object.keys(r).sort();return i.length===a.length&&i.every((e,t)=>e===a[t]&&Y(n[e],r[e]))}function Qn(e){return{executionId:e.executionId,frameId:e.frameId,nodeId:e.nodeId,nodeType:e.nodeType,path:e.path,status:e.status,attempt:e.attempt,iteration:e.iteration??null,branchKey:e.branchKey??null,startedAt:e.startedAt??null,completedAt:e.completedAt??null,durationMs:e.durationMs??null,inputTokens:e.inputTokens??null,outputTokens:e.outputTokens??null,estimatedCost:e.estimatedCost??null,error:e.error??null}}function $n(e,t){let n=e.frame;if(n!==void 0){let r=e.status===`failed`?e.error??null:null;if(n.executionId!==e.executionId)throw Error(`settleExternalExecution requires frame.executionId to match executionId`);if(n.status!==e.status)throw Error(`settleExternalExecution requires frame.status to match status`);if(n.completedAt!==t)throw Error(`settleExternalExecution requires frame.completedAt to match completedAt`);if(n.durationMs!==t-n.startedAt)throw Error(`settleExternalExecution requires frame.durationMs to match its timestamps`);if((n.error??null)!==r)throw Error(`settleExternalExecution requires frame.error to match terminal error metadata`)}return JSON.stringify({version:1,status:e.status,completedAt:t,error:e.status===`failed`?e.error??null:null,reason:e.status===`cancelled`?e.reason??null:null,frame:n===void 0?null:{executionId:n.executionId,frameId:n.frameId,nodeId:n.nodeId,nodeType:n.nodeType,path:n.path,status:n.status,attempt:n.attempt,iteration:n.iteration??null,branchKey:n.branchKey??null,startedAt:n.startedAt,completedAt:n.completedAt,durationMs:n.durationMs,error:n.status===`failed`?n.error??null:null}})}function er(e,t,n){if(e!==t)throw Error(`settleExternalExecution: execution "${n}" conflicts with an existing terminal settlement fingerprint`)}async function tr(e,t,n,r,i){let a=$n(r,i);if(n.externalSettlementFingerprint!==null){er(n.externalSettlementFingerprint,a,r.executionId);return}if(r.frame!==void 0)throw Error(`settleExternalExecution: frame presence conflicts with the legacy frame-less settlement for execution "${r.executionId}"`);let o=r.status===`failed`?r.error??null:null,s=r.status===`cancelled`?r.reason??null:null;if((await e.update(t).set({externalSettlementFingerprint:a}).where(O(M(t.id,r.executionId),N(t.externalSettlementFingerprint),M(t.status,r.status),M(t.completedAt,i),o===null?N(t.error):M(t.error,o),s===null?N(t.reason):M(t.reason,s))).returning({fingerprint:t.externalSettlementFingerprint})).length>0)return;let[c]=await e.select().from(t).where(M(t.id,r.executionId)).limit(1);if(c===void 0)throw Error(`settleExternalExecution: execution "${r.executionId}" disappeared`);if(rr(c,r,i),c.externalSettlementFingerprint===null)throw Error(`settleExternalExecution: failed to adopt terminal settlement fingerprint for execution "${r.executionId}"`);er(c.externalSettlementFingerprint,a,r.executionId)}function nr(e,t){if(e.executionId!==t.executionId||e.nodeId!==t.nodeId||e.nodeType!==t.nodeType||!Y(e.path,t.path)||e.attempt!==t.attempt||e.iteration!==(t.iteration??null)||e.branchKey!==(t.branchKey??null)||e.startedAt!==t.startedAt)throw Error(`settleExternalExecution: frame "${t.frameId}" conflicts with its registered metadata`)}function rr(e,t,n){let r=t.status===`failed`?t.error??null:null,i=t.status===`cancelled`?t.reason??null:null;if(e.status!==t.status||e.completedAt!==n||e.error!==r||e.reason!==i)throw e.status===t.status?Error(`settleExternalExecution: execution "${t.executionId}" conflicts with an existing terminal settlement`):Error(`settleExternalExecution: execution "${t.executionId}" cannot transition from status "${e.status}"`)}async function ir(e,t,n){let r=await e.select().from(t).where(M(t.executionId,n.executionId)),i=r.find(e=>e.frameId===n.frame.frameId);if(i!==void 0)return i;if(r.length>0)throw Error(`settleExternalExecution: frame "${n.frame.frameId}" conflicts with the registered frame identity`);let[a]=await e.select().from(t).where(M(t.frameId,n.frame.frameId)).limit(1);if(a!==void 0)throw Error(`settleExternalExecution: frame "${n.frame.frameId}" belongs to another execution`)}function ar(e,t,n,r){let i=Math.min(e.startedAt,r);return{executionId:e.id,workflowId:e.workflowId,workflowName:t?.workflowName??null,status:n.status,startedAt:i,completedAt:r,durationMs:r-i,totalInputTokens:t?.totalInputTokens??null,totalOutputTokens:t?.totalOutputTokens??null,totalEstimatedCost:t?.totalEstimatedCost??null,error:n.status===`failed`?n.error??null:null,failedNodeId:n.status===`failed`?n.frame?.nodeId??t?.failedNodeId??null:null}}function or(e,t){return Qn({...e,inputTokens:e.inputTokens??t?.inputTokens??void 0,outputTokens:e.outputTokens??t?.outputTokens??void 0,estimatedCost:e.estimatedCost??t?.estimatedCost??void 0})}function sr(e,t){if(e.externalRegistrationFrameId!==(t.externalRegistrationFrameId??null))throw Error(`setExternalExecutionStart: frame metadata conflicts for execution "${t.id}"`);if(!(e.id===t.id&&e.workflowId===t.workflowId&&e.coordinatorSessionId===t.coordinatorSessionId&&e.startedAt===t.startedAt&&e.scopeType===t.scopeType&&e.scopeKind===t.scopeKind&&e.scopeId===t.scopeId&&e.artifactKind===t.artifactKind&&e.artifactId===t.artifactId&&Y(e.inputs,t.inputs)&&Y(e.triggerPayload,t.triggerPayload)))throw Error(`setExternalExecutionStart: registration conflicts for execution "${t.id}"`)}function cr(e,t){if(e.workflowId!==t.workflowId||e.startedAt!==t.startedAt||e.executionId!==t.executionId)throw Error(`setExternalExecutionStart: WorkLog summary conflicts for execution "${t.executionId}"`)}function lr(e,t){if(e.executionId!==t.executionId||e.frameId!==t.frameId||e.nodeId!==t.nodeId||e.nodeType!==t.nodeType||!Y(e.path,t.path)||e.attempt!==t.attempt||e.iteration!==(t.iteration??null)||e.branchKey!==(t.branchKey??null)||e.startedAt!==t.startedAt)throw Error(`setExternalExecutionStart: WorkLog frame conflicts for frame "${t.frameId}"`)}async function ur(e,t,n,r){if(!t.id.startsWith(b))throw Error(`setExternalExecutionStart: execution "${t.id}" is not an external execution ID`);if(n!==void 0&&n.executionId!==t.id)throw Error(`setExternalExecutionStart requires frame.executionId to match execution.id`);let{workflowExecutions:i,worklogSummaries:a,worklogFrameEntries:o}=E(e,I),s={...r(t),externalRegistrationFrameId:n?.frameId??null},c={executionId:t.id,workflowId:t.workflowId,workflowName:null,status:`running`,startedAt:t.startedAt,completedAt:null,durationMs:null,totalInputTokens:null,totalOutputTokens:null,totalEstimatedCost:null,error:null,failedNodeId:null};await T(e,async e=>{let r=(await e.insert(i).values(s).onConflictDoNothing().returning({id:i.id})).length===0;if(r){let[n]=await e.select().from(i).where(M(i.id,t.id)).limit(1);if(n===void 0)throw Error(`setExternalExecutionStart: execution "${t.id}" disappeared`);sr(n,s)}let[l]=await e.select().from(a).where(M(a.executionId,t.id)).limit(1);if(l===void 0?await e.insert(a).values(c):cr(l,c),n!==void 0){let[i]=await e.select().from(o).where(M(o.frameId,n.frameId)).limit(1);if(i===void 0){if(r)throw Error(`setExternalExecutionStart: frame metadata conflicts for execution "${t.id}"`);await e.insert(o).values(Qn(n))}else lr(i,n)}})}async function dr(e,t,n,r,i){if(r.frame!==void 0){let n=await ir(e,t,r);return n!==void 0&&nr(n,r.frame),{frame:r.frame,existing:n}}if(n.externalRegistrationFrameId===null)return;let[a]=await e.select().from(t).where(M(t.frameId,n.externalRegistrationFrameId)).limit(1);if(a===void 0||a.executionId!==n.id)throw Error(`settleExternalExecution: registered frame "${n.externalRegistrationFrameId}" is unavailable for execution "${n.id}"`);if(a.startedAt===null)throw Error(`settleExternalExecution: registered frame "${a.frameId}" has no start timestamp`);if(i<a.startedAt)throw Error(`settleExternalExecution: completedAt must not precede the registered frame start timestamp`);let o=pt.parse(a.nodeType);return{frame:{executionId:a.executionId,frameId:a.frameId,nodeId:a.nodeId,nodeType:o,path:a.path,status:r.status,attempt:a.attempt,...a.iteration===null?{}:{iteration:a.iteration},...a.branchKey===null?{}:{branchKey:a.branchKey},startedAt:a.startedAt,completedAt:i,durationMs:i-a.startedAt,...r.status===`failed`&&r.error!==void 0?{error:r.error}:{}},existing:a}}async function fr(e,t,n,r,i){let{worklogSummaries:a,worklogFrameEntries:o}=t,s=await On(e,a,n.id),c=await dr(e,o,n,r,i),l=c===void 0?r:{...r,frame:c.frame};if(c!==void 0){let t=or(c.frame,c.existing);await e.insert(o).values(t).onConflictDoUpdate({target:o.frameId,set:t})}let u=await kn(e,o,n.id),d=An(u),f={totalInputTokens:u.totalInputTokens,totalOutputTokens:u.totalOutputTokens,totalEstimatedCost:u.totalEstimatedCost},p={...ar(n,s,l,i),...d?f:{}};await e.insert(a).values(p).onConflictDoUpdate({target:a.executionId,set:bn(p)}),d&&await jn(e,a,n.id,u)}async function pr(e,t){if(!t.executionId.startsWith(b))throw Error(`settleExternalExecution: execution "${t.executionId}" is engine-owned and must use the engine finalizer`);if(t.frame!==void 0&&t.frame.executionId!==t.executionId)throw Error(`settleExternalExecution requires frame.executionId to match executionId`);let{workflowExecutions:n,worklogSummaries:r,worklogFrameEntries:i}=E(e,I);return T(e,async e=>{let[a]=await e.select().from(n).where(M(n.id,t.executionId)).limit(1);if(a===void 0)throw Error(`settleExternalExecution: execution "${t.executionId}" was not registered`);let o=t.completedAt??a.completedAt??Date.now();if(a.status===`running`){let r=$n(t,o);if((await e.update(n).set({status:t.status,completedAt:o,error:t.status===`failed`?t.error??null:null,reason:t.status===`cancelled`?t.reason??null:null,externalSettlementFingerprint:r}).where(O(M(n.id,t.executionId),M(n.status,`running`),N(n.externalSettlementFingerprint))).returning({id:n.id})).length===0){let[r]=await e.select().from(n).where(M(n.id,t.executionId)).limit(1);if(r===void 0)throw Error(`settleExternalExecution: execution "${t.executionId}" disappeared`);t.completedAt===void 0&&r.completedAt!==null&&(o=r.completedAt),rr(r,t,o),await tr(e,n,r,t,o)}}else rr(a,t,o),await tr(e,n,a,t,o);return await fr(e,{worklogSummaries:r,worklogFrameEntries:i},a,t,o),!0})}function mr(e,t,n){let r=e.on(h.setExternalExecutionStart,async r=>{let i=r.payload.execution,a=r.payload.frame;await ur(t,i,a,n),await J(e,i.id),r.setResult({executionId:i.id,...a===void 0?{}:{frameId:a.frameId}})}),i=e.on(h.settleExternalExecution,async n=>{let r=await pr(t,n.payload);await J(e,n.payload.executionId),n.setResult({success:r})});return()=>{r(),i()}}function X(e){return{executionId:e.executionId,workflowId:e.workflowId,finalizerId:e.finalizerId,transitionKey:e.transitionKey,claimToken:e.claimToken,intent:e.intent,claimedAt:e.claimedAt}}function hr(e,t){return e.state===`claimed`&&e.executionId===t.executionId&&e.workflowId===t.workflowId&&e.finalizerId===t.finalizerId&&e.transitionKey===t.transitionKey&&e.claimToken===t.claimToken&&e.intent.status===t.intent.status&&e.intent.completedAt===t.intent.completedAt&&e.intent.error===t.intent.error&&e.intent.reason===t.intent.reason}function gr(e,t){if(e.executionId!==t.executionId||e.workflowId!==t.workflowId||e.finalizerId!==t.finalizerId||e.transitionKey!==t.transitionKey||e.claimToken!==t.claimToken)throw Error(`workflow finalization publication claim does not match durable transition ${t.executionId}`)}async function _r(e,t){let{workflowExecutions:n,workflowFinalizations:r}=E(e,I);return T(e,async e=>{let i=await e.select().from(r).where(M(r.executionId,t.executionId)).limit(1);return i[0]?hr(i[0],t):(await e.update(n).set({status:`finalizing`}).where(O(M(n.id,t.executionId),M(n.workflowId,t.workflowId),M(n.status,`running`))).returning({id:n.id})).length===0?!1:(await e.insert(r).values({...t,state:`claimed`}),!0)})}function vr(e){return{status:e.status,completedAt:e.completedAt,error:e.status===`failed`?e.error??`Workflow finalization failed`:null,reason:e.status===`cancelled`?e.reason??null:null}}async function yr(e,t,n,r){let{workflowExecutions:i,workflowFinalizations:a}=E(e,I);return T(e,async e=>{let o=(await e.select().from(a).where(M(a.executionId,t)).limit(1))[0];return!o||o.claimToken!==n||o.state===`failed`?!1:o.state===`acknowledged`?!0:(await e.update(i).set(vr(o.intent)).where(O(M(i.id,t),M(i.status,`finalizing`))).returning({id:i.id})).length===0?!1:(await e.update(a).set({state:`acknowledged`,settledAt:r}).where(O(M(a.executionId,t),M(a.claimToken,n),M(a.state,`claimed`))),!0)})}async function br(e,t,n,r,i){let{workflowExecutions:a,workflowFinalizations:o}=E(e,I);return T(e,async e=>{let s=(await e.select().from(o).where(M(o.executionId,t)).limit(1))[0];return!s||s.claimToken!==n||s.state===`acknowledged`?!1:s.state===`failed`?!0:(await e.update(a).set({status:`failed`,error:r,reason:null,completedAt:i}).where(O(M(a.id,t),M(a.status,`finalizing`))).returning({id:a.id})).length===0?!1:(await e.update(o).set({state:`failed`,failure:r,settledAt:i}).where(O(M(o.executionId,t),M(o.claimToken,n),M(o.state,`claimed`))),!0)})}async function xr(e,t,n){let{workflowExecutions:r,workflowFinalizations:i}=E(t,I),a=(await t.select().from(i).where(M(i.executionId,n.executionId)).limit(1))[0];if(!a||(gr(a,n),a.state===`claimed`||a.publishedAt!==null))return;let o=(await t.select({startedAt:r.startedAt,status:r.status,error:r.error,reason:r.reason,completedAt:r.completedAt}).from(r).where(M(r.id,a.executionId)).limit(1))[0];if(!(!o||o.completedAt==null)){if(o.status===`completed`)await e.emit(g.execution.completed,{executionId:a.executionId,workflowId:a.workflowId,totalDuration:o.completedAt-o.startedAt,completedAt:o.completedAt,transitionKey:a.transitionKey});else if(o.status===`failed`)await e.emit(g.execution.failed,{executionId:a.executionId,workflowId:a.workflowId,error:o.error??`Workflow finalization failed`,completedAt:o.completedAt,transitionKey:a.transitionKey});else if(o.status===`cancelled`)await e.emit(g.execution.cancelled,{executionId:a.executionId,workflowId:a.workflowId,reason:o.reason??void 0,completedAt:o.completedAt,transitionKey:a.transitionKey});else return;await D(t,()=>t.update(i).set({publishedAt:Date.now()}).where(O(M(i.executionId,a.executionId),N(i.publishedAt))))}}function Sr(e,t){let n=new Map;return async r=>{let i=(n.get(r.executionId)??Promise.resolve()).catch(()=>void 0).then(()=>xr(e,t,r));n.set(r.executionId,i);try{await i}finally{n.get(r.executionId)===i&&n.delete(r.executionId)}}}function Cr(e,t){let n=Sr(e,t),r=e.on(h.claimFinalization,async e=>{e.setResult({claimed:await _r(t,e.payload.claim)})}),i=e.on(h.listClaimedFinalizations,async e=>{let{workflowFinalizations:n}=E(t,I),r=await t.select().from(n).where(O(M(n.finalizerId,e.payload.finalizerId),M(n.state,`claimed`)));e.setResult({claims:r.map(X)})}),a=e.on(h.listUnpublishedFinalizations,async e=>{let{workflowFinalizations:n}=E(t,I),r=await t.select().from(n).where(O(jt(M(n.state,`acknowledged`),M(n.state,`failed`)),M(n.finalizerId,e.payload.finalizerId),N(n.publishedAt)));e.setResult({claims:r.map(X)})}),o=e.on(h.publishFinalization,async e=>{await n(e.payload.claim),e.setResult({})}),s=e.on(h.acknowledgeFinalization,async e=>{let{executionId:r,claimToken:i,settledAt:a}=e.payload,o=await yr(t,r,i,a);if(e.setResult({acknowledged:o}),!o)return;let{workflowFinalizations:s}=E(t,I),c=await t.select().from(s).where(M(s.executionId,r)).limit(1);c[0]&&await n(X(c[0]))}),c=e.on(h.failFinalization,async e=>{let{executionId:r,claimToken:i,error:a,settledAt:o}=e.payload,s=await br(t,r,i,a,o);if(e.setResult({failed:s}),!s)return;let{workflowFinalizations:c}=E(t,I),l=await t.select().from(c).where(M(c.executionId,r)).limit(1);l[0]&&await n(X(l[0]))});return()=>{r(),i(),a(),o(),s(),c()}}function wr(e){return{id:e.id,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId??void 0,status:e.status,inputs:e.inputs,config:{},error:e.error??void 0,reason:e.reason??void 0,startedAt:e.startedAt,completedAt:e.completedAt??void 0,triggerPayload:e.triggerPayload??void 0,...e.artifactKind!==null&&e.artifactId!==null?{artifactRef:{kind:e.artifactKind,id:e.artifactId}}:{},scope:R(e)}}function Z(e){let t=L(e.scope);return{id:e.id,workflowId:e.workflowId,coordinatorSessionId:e.coordinatorSessionId??null,status:e.status,inputs:e.inputs,error:e.error??null,reason:e.reason??null,startedAt:e.startedAt,completedAt:e.completedAt??null,triggerPayload:e.triggerPayload??null,artifactKind:e.artifactRef?.kind??null,artifactId:e.artifactRef?.id??null,...t}}function Tr(e,t,n,r,i,a){let o=[...e?[M(a.workflowId,e)]:[],...n?[M(a.status,n)]:[],...i===void 0?[]:[M(a.artifactKind,i.kind),M(a.artifactId,i.id)]];if(t&&o.push(...Jt(a,t)),r){let e=jt(Ot(a.startedAt,r.startedAt),O(M(a.startedAt,r.startedAt),Ot(a.id,r.id)));e&&o.push(e)}return o}async function Er(e,t,n,r,i){if(n.executionId!==t.id)throw Error(`setExecutionStart requires execution.id to match runContext.executionId`);for(let e of i??[])if(e.targetExecutionId!==t.id)throw Error(`setExecutionStart requires executionLinks.targetExecutionId to match execution.id`);let{workflowExecutions:a,workflowRunContexts:o,workflowExecutionState:s,workflowExecutionStateEvents:c,workflowExecutionLinks:l}=E(e,I),u=Z(t);await T(e,async d=>{await d.insert(a).values(u).onConflictDoUpdate({target:a.id,set:u});let f=(n.dispatchMetadata===void 0?await d.select({dispatchMetadata:o.dispatchMetadata}).from(o).where(M(o.executionId,n.executionId)).limit(1):[])[0]?.dispatchMetadata;if(await dn(d,n.dispatchMetadata===void 0&&f!=null?{...n,dispatchMetadata:f}:n,o),r!==void 0){let n=Date.now(),i=H(e,r);await d.insert(s).values({executionId:t.id,sequence:0,value:i,updatedAt:n}).onConflictDoNothing(),await d.insert(c).values({executionId:t.id,sequence:0,patch:[],value:i,createdAt:n}).onConflictDoNothing()}for(let e of i??[])await d.insert(l).values(e).onConflictDoUpdate({target:[l.sourceExecutionId,l.targetExecutionId],set:e})})}async function Dr(e,t,n){if(n.executionId!==t.id)throw Error(`restorePausedGateResumeState requires execution.id to match gate.executionId`);if(t.status!==`paused`||n.status!==`waiting`)throw Error(`restorePausedGateResumeState requires a paused execution and waiting gate`);let{workflowExecutions:r,workflowGateInstances:i}=E(e,I),a=Z(t),o=V(n);await T(e,async e=>{await e.insert(r).values(a).onConflictDoUpdate({target:r.id,set:a}),await e.insert(i).values(o).onConflictDoUpdate({target:i.id,set:o})})}async function Or(e,t,n,r){let{workflowExecutions:i,workflowGateInstances:a}=E(e,I);return T(e,async e=>{if((await e.select().from(i).where(M(i.id,t)).limit(1))[0]?.status!==`paused`)return{cancelled:!1,gates:[]};let o=(await e.select().from(a).where(O(M(a.executionId,t),M(a.status,`waiting`)))).map(e=>({...B(e),status:`cancelled`,resolvedAt:n}));await e.update(i).set({status:`cancelled`,completedAt:n,reason:r??null}).where(M(i.id,t));for(let t of o){let n=V(t);await e.update(a).set(n).where(M(a.id,n.id))}return{cancelled:!0,gates:o}})}async function kr(e,t,n,r,i,a){let{workflowExecutions:o}=E(e,I);return T(e,async e=>{if((await e.select({id:o.id}).from(o).where(M(o.id,t)).limit(1))[0]===void 0)return!1;let s={};return n!==void 0&&(s.status=n),r!==void 0&&(s.error=r),i!==void 0&&(s.reason=i),a!==void 0&&(s.completedAt=a),Object.keys(s).length>0&&await e.update(o).set(s).where(M(o.id,t)),!0})}function Ar(e,t){let{workflowExecutions:n}=E(t,I),r=e.on(h.getExecution,async e=>{let{executionId:r}=e.payload;if(!m(e,r))throw Error(`Unauthorized execution read: ${r}`);let i=await t.select().from(n).where(M(n.id,r));e.setResult({execution:i[0]?wr(i[0]):null})}),i=e.on(h.setExecution,async e=>{let r=e.payload.execution,i=Z(r);await D(t,()=>t.insert(n).values(i).onConflictDoUpdate({target:n.id,set:i})),e.setResult({id:r.id})}),a=e.on(h.setExecutionStart,async e=>{let n=e.payload.execution,r=e.payload.runContext;await Er(t,n,r,e.payload.initialState,e.payload.executionLinks),e.setResult({id:n.id,executionId:n.id})}),o=e.on(h.restorePausedGateResumeState,async e=>{let n=e.payload.execution,r=e.payload.gate;await Dr(t,n,r),e.setResult({executionId:n.id,gateId:r.nodeId})}),s=e.on(h.updateExecution,async e=>{let{executionId:n,status:r,error:i,reason:a,completedAt:o}=e.payload,s=await kr(t,n,r,i,a,o);e.setResult({success:s})}),c=e.on(h.pauseRunningExecution,async e=>{let{workflowExecutions:n}=E(t,I),r=await D(t,()=>t.update(n).set({status:`paused`}).where(O(M(n.id,e.payload.executionId),M(n.status,`running`))).returning({id:n.id}));e.setResult({paused:r.length===1})}),l=e.on(h.cancelPausedExecution,async e=>{let{executionId:n,completedAt:r,reason:i}=e.payload;e.setResult(await Or(t,n,r,i))});return()=>{r(),i(),a(),o(),s(),c(),l()}}function jr(e,t){let{workflowExecutions:n}=E(t,I),r=e.on(h.listExecutions,async e=>{let{workflowId:r,scope:i,status:a,limit:o,cursor:s,artifactRef:c}=e.payload;if(r===void 0&&i===void 0&&c===void 0)throw Error(`Either workflowId, scope, or artifactRef is required to list executions.`);let l=Tr(r,i,a,s,c,n),u=o??et;if(!Number.isInteger(u)||u<y||u>v)throw Error(`Execution list limit must be an integer between ${y} and ${v}.`);let d=await t.select().from(n).where(O(...l)).orderBy(j(n.startedAt),j(n.id)).limit(u);e.setResult({executions:d.map(wr)})}),i=e.on(h.listExecutionsByArtifactRefs,async e=>{let r=tt.safeParse(e.payload);if(!r.success)throw Error(`Invalid listExecutionsByArtifactRefs query: ${r.error.message}`);let{refs:i,limitPerRef:a}=r.data,o={};for(let e of i){let r=await t.select().from(n).where(O(M(n.artifactKind,e.kind),M(n.artifactId,e.id))).orderBy(j(n.startedAt),j(n.id)).limit(a);r.length>0&&(o[yt(e)]=r.map(wr))}e.setResult({executionsByRef:o})});return()=>{r(),i()}}function Mr(e,t){let n=Xt(e,t),r=Ar(e,t),i=jr(e,t),a=$t(e,t),o=nn(e,t),s=on(e,t),c=fn(e,t),l=gn(e,t),u=Zn(e,t),d=mr(e,t,Z),f=Cr(e,t);return()=>{n(),r(),i(),a(),o(),s(),c(),l(),u(),d(),f()}}function Nr(e){return e.startsWith(b)}function Pr(e){let t={};return e.artifactRef!==void 0&&(t.artifactRef=e.artifactRef),e.triggerPayload!==void 0&&(t.triggerPayload=e.triggerPayload),t}function Fr(e){if(e.status===`failed`){if(e.error===void 0)throw Error(`status 'failed' requires a non-empty 'error' message`);return{error:e.error}}if(e.status===`cancelled`){if(e.reason===void 0)throw Error(`status 'cancelled' requires a non-empty 'reason' string`);return{reason:e.reason}}return{}}async function Ir(e,t){let{runContext:n}=await e.request(h.getRunContext,{executionId:t});if(n===null)throw Error(`Run context not found for execution: ${t}`);if(n.definitionSnapshot!==void 0)return n.definitionSnapshot;let{workflow:r}=await e.request(h.get,{id:n.workflowId});return r??void 0}function Lr(e){return[e.on(g.getDefinition,async t=>{let n=await e.request(h.get,{id:t.payload.id});t.setResult(n)}),e.on(g.setDefinition,async t=>{let n=await e.request(h.set,{workflow:t.payload.workflow});t.setResult(n)}),e.on(g.deleteDefinition,async t=>{let n=await e.request(h.delete,{id:t.payload.id});t.setResult(n)}),e.on(g.listDefinitions,async t=>{let n=await e.request(h.list,t.payload);t.setResult(n)}),e.on(g.getExecution,async t=>{let n=await e.request(h.getExecution,{executionId:t.payload.executionId});t.setResult(n)}),e.on(g.listExecutions,async t=>{let n=await e.request(h.listExecutions,t.payload);t.setResult(n)}),e.on(g.listExecutionsByArtifactRefs,async t=>{let n=await e.request(h.listExecutionsByArtifactRefs,t.payload);t.setResult(n)}),e.on(g.listSpans,async t=>{let n=await e.request(h.listSpans,{executionId:t.payload.executionId});t.setResult(n)}),e.on(g.listFrames,async t=>{let n=await e.request(h.listFrames,{executionId:t.payload.executionId});t.setResult(n)}),e.on(g.listGateInstances,async t=>{let n=await e.request(h.listGateInstances,t.payload);t.setResult(n)}),e.on(g.setExecutionLink,async t=>{let n=await e.request(h.setExecutionLink,{link:t.payload.link});t.setResult(n)}),e.on(g.listExecutionLinks,async t=>{let n=await e.request(h.listExecutionLinks,t.payload);t.setResult(n)}),e.on(g.getRunContext,async t=>{let{executionId:n}=t.payload;if(!m(t,n))throw Error(`Unauthorized: caller is not permitted to read run context for execution: ${n}`);let{runContext:r}=await e.request(h.getRunContext,{executionId:n});if(!r)throw Error(`Run context not found for execution: ${n}`);t.setResult(r)}),...Rr(e)]}function Rr(e){return[e.on(g.registerExternalExecution,async t=>{let n=Ve.registerExternalExecution.request.parse(t.payload),{name:r,scope:i,input:a}=n;if(n.executionId!==void 0&&!t.origin.local)throw Error(`registerExternalExecution: caller-supplied executionId is restricted to local callers`);let o=n.executionId??s(`wfx-ext`);if(!Nr(o))throw Error(`registerExternalExecution: executionId must use the wfx-ext- prefix`);let c=n.startedAt??Date.now(),l={id:o,workflowId:r,status:`running`,inputs:a===void 0?{}:a,startedAt:c,scope:i??{type:`global`},...Pr(n)},u=zr(o,c,n.frame),d=await e.request(h.setExternalExecutionStart,{execution:l,...u===void 0?{}:{frame:u}});t.setResult(d)}),e.on(g.completeExternalExecution,async t=>{let n=Ve.completeExternalExecution.request.parse(t.payload),{executionId:r,status:i}=n;if(!m(t,r))throw Error(`Unauthorized: caller is not permitted to settle execution: ${r}`);if(!Nr(r))throw Error(`completeExternalExecution: execution "${r}" is engine-owned and must be completed through the engine finalizer, not this API`);let a=Br(n),o=await e.request(h.settleExternalExecution,{executionId:r,status:i,...Fr(n),...n.completedAt===void 0?{}:{completedAt:n.completedAt},...a===void 0?{}:{frame:a}});t.setResult({success:o.success})})]}function zr(e,t,n){if(n===void 0)return;let r=n.frameId??`${e}:${n.nodeId}`;return{executionId:e,frameId:r,nodeId:n.nodeId,nodeType:n.nodeType,path:n.path??[r],status:`running`,attempt:n.attempt,...n.iteration===void 0?{}:{iteration:n.iteration},...n.branchKey===void 0?{}:{branchKey:n.branchKey},startedAt:n.startedAt??t}}function Br(e){if(e.frame===void 0)return;if(e.completedAt===void 0)throw Error(`completedAt is required when frame metadata is supplied`);let t=e.completedAt-e.frame.startedAt;if(t<0)throw Error(`completedAt must not precede frame.startedAt`);if(e.frame.durationMs!==void 0&&e.frame.durationMs!==t)throw Error(`frame.durationMs must equal completedAt - frame.startedAt`);return{executionId:e.executionId,frameId:e.frame.frameId,nodeId:e.frame.nodeId,nodeType:e.frame.nodeType,path:e.frame.path,status:e.status,attempt:e.frame.attempt,...e.frame.iteration===void 0?{}:{iteration:e.frame.iteration},...e.frame.branchKey===void 0?{}:{branchKey:e.frame.branchKey},startedAt:e.frame.startedAt,completedAt:e.completedAt,durationMs:t,...e.status===`failed`&&e.error!==void 0?{error:e.error}:{}}}function Vr(e){return[e.on(g.state.get,async t=>{let{executionId:n}=t.payload;if(!m(t,n))throw Error(`Unauthorized: caller is not permitted to read state for execution: ${n}`);let{state:r}=await e.request(h.getState,{executionId:n});if(r===null)throw Error(`no workflow state for execution ${n}`);t.setResult(r)}),e.on(g.state.patch,async t=>{let{executionId:n,expectedSequence:r,patch:i,nextValue:a}=t.payload;if(!m(t,n))throw Error(`Unauthorized: caller is not permitted to patch state for execution: ${n}`);if(r===void 0)throw Error(`expectedSequence is required to patch workflow state`);let o=await Ir(e,n);o!==void 0&&te(o,a,`next`),nt.array().parse(i);let s=await e.request(h.patchState,{executionId:n,expectedSequence:r,nextValue:a});e.emit(g.state.updated,{executionId:s.executionId,sequence:s.sequence,patch:s.patch,value:s.value,updatedAt:Date.now()}).catch(()=>{}),t.setResult({executionId:s.executionId,sequence:s.sequence,value:s.value})})]}async function Hr(e,t){let{runContext:n}=await e.bus.request(h.getRunContext,{executionId:t});if(n===null)throw new C(lt.RUN_CONTEXT_NOT_FOUND,`Run context not found for workflow execution '${t}'.`);return n}function Ur(e,t){return t===void 0?{mode:e}:{mode:e,reason:t}}async function Wr(e,t){let n=await Hr(e,t.executionId),r=t.input===void 0?n.inputs:t.input,i=t.config??n.config??{},a=t.triggerPayload??n.triggerPayload,o=t.artifactRef??n.artifactRef,s=t.scopeOverride??n.scope,c={input:r,config:i,parentSessionId:t.parentSessionId,triggerPayload:a,artifactRef:o,scopeOverride:s,executionLinks:e=>[{sourceExecutionId:t.executionId,targetExecutionId:e,linkType:`rerun-of`,metadata:Ur(t.mode,t.reason)}]};return t.mode===`snapshot`?await Jr(e,n,c):Kr(n)?await Yr(e,n,c):await pe(e,n.workflowId,c)}function Gr(e,t){return Kr(e)?t.id:e.workflowId}function Kr(e){return e.source.kind!==`definition`&&e.workflowId===e.executionId}function qr(e){let t=e.definitionSnapshot;if(t===void 0)throw new C(lt.SNAPSHOT_UNAVAILABLE,`Workflow execution '${e.executionId}' does not have a definition snapshot.`);return t}async function Jr(e,t,n){let r=qr(t);return we(e,Gr(t,r),{workflow:r,executionSource:t.source,definitionSnapshot:r,input:n.input,config:n.config,parentSessionId:n.parentSessionId,triggerPayload:n.triggerPayload,artifactRef:n.artifactRef,scopeOverride:n.scopeOverride,executionLinks:n.executionLinks,...t.materializationSpec===void 0?{}:{materializationSpec:t.materializationSpec}})}async function Yr(e,t,n){if(t.definitionSnapshot===void 0&&t.source.kind===`path`){let{materializationSpec:r}=t;if(r===void 0)throw Error(`Invalid persisted path-backed run context: materializationSpec is required`);return Ae(e,t.source.path,{...n,materializationSpec:r})}let r=qr(t);return we(e,r.id,{workflow:r,executionSource:t.source,input:n.input,config:n.config,parentSessionId:n.parentSessionId,triggerPayload:n.triggerPayload,artifactRef:n.artifactRef,scopeOverride:n.scopeOverride,executionLinks:n.executionLinks,...t.materializationSpec===void 0?{}:{materializationSpec:t.materializationSpec}})}var Xr=class{bus;resumePausedExecution;handles=new Map;constructor(e,t){this.bus=e,this.resumePausedExecution=t}dispose(){for(let e of this.handles.values())clearTimeout(e);this.handles.clear()}clear(e,t,n){let r=this.makeKey(e,t,n),i=this.handles.get(r);i!==void 0&&(clearTimeout(i),this.handles.delete(r))}schedule(e){e.timeoutMs!==null&&(this.clear(e.executionId,e.nodeId,e.frameId),this.scheduleNextWakeup({...e,timeoutMs:e.timeoutMs}))}scheduleNextWakeup(e){let t=this.makeKey(e.executionId,e.nodeId,e.frameId),n=Math.max(0,e.openedAt+e.timeoutMs-Date.now()),r=setTimeout(()=>{if(this.handles.delete(t),Date.now()<e.openedAt+e.timeoutMs){this.scheduleNextWakeup(e);return}this.handleExpiredWakeup(e)},Math.min(n,2147483647));this.handles.set(t,r)}scheduleNextWakeupAfterDelay(e,t){let n=this.makeKey(e.executionId,e.nodeId,e.frameId),r=setTimeout(()=>{this.handles.delete(n),this.handleExpiredWakeup(e)},t);this.handles.set(n,r)}async handleExpiredWakeup(e){try{await this.resumeTimedOutPausedGate(e)===`retry`&&this.scheduleNextWakeupAfterDelay(e,25)}catch(t){this.scheduleFailedWakeupRetry(e,t)}}scheduleFailedWakeupRetry(e,t){let n=(e.failedWakeupAttempts??0)+1;if(n>4){console.error(`[WorkflowExecutor] Giving up on timed-out gate '${e.nodeId}' after 4 failed wakeup retries:`,t);return}let r=Math.min(250*2**(n-1),2e3);console.error(`[WorkflowExecutor] Failed to resume timed-out gate '${e.nodeId}', retrying in ${r} ms:`,t),this.scheduleNextWakeupAfterDelay({...e,failedWakeupAttempts:n},r)}makeKey(e,t,n){return`${e}:${t}:${n}`}async resumeTimedOutPausedGate(e){this.clear(e.executionId,e.nodeId,e.frameId);let{gate:t}=await this.bus.request(h.getGateInstance,{executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId});if(t===null||t.status!==`waiting`)return`settled`;let{execution:n}=await this.bus.request(h.getExecution,{executionId:e.executionId});return n?.status===`running`?`retry`:n?.status===`paused`?(await this.resumePausedExecution(e.executionId),`resumed`):`settled`}};function Zr(e){if(e!==void 0)return Qr(e)?e:{}}function Qr(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function $r(e){if(e!==void 0)return rt.parse(e)}function ei(e,t){return dt.parse({executionId:e.executionId,workflowId:e.workflowId,source:e.source,...e.definitionSnapshot===void 0?{}:{definitionSnapshot:e.definitionSnapshot},workerManifest:{contributionRefs:[]},inputs:e.inputs,config:e.config,scope:e.scope,triggerPayload:e.triggerPayload,triggerMode:e.triggerMode??`immediate`,...e.artifactRef===void 0?{}:{artifactRef:e.artifactRef},coordinatorSessionId:e.coordinatorSessionId,cancelSubject:`workflow.${e.executionId}.cancel`,env:t.platformDefaults.env??{},createdAt:Date.now(),suspensionStrategy:e.suspensionStrategy??`wait-in-process`,...e.terminalAuthority===void 0?{}:{terminalAuthority:e.terminalAuthority},...e.materializationSpec===void 0?{}:{materializationSpec:e.materializationSpec}})}function ti(e){return e?.status===`paused`}function ni(e){return e?.status===`waiting`}async function ri(e,t,n,r,a,o,s){try{await i(e,a.id,async()=>{let i=await e.bus.request(h.getExecution,{executionId:a.id});i.execution?.status!==`paused`&&i.execution?.status!==`running`||(t.delete(a.id),n.delete(a.id),r.delete(a.id),await e.bus.request(h.restorePausedGateResumeState,{execution:a,gate:o}))})}catch(e){console.error(`[WorkflowExecutor] Failed to restore paused gate '${s}' after resume launch failure:`,e)}}async function ii(e,t){if(t.suspensionStrategy===`wait-in-process`)return;let{frames:n}=await e.request(h.listFrames,{executionId:t.executionId});if(n.length===0)throw Error(`[WorkflowExecutor] Missing resume frames for paused execution: ${t.executionId}`)}function ai(e){return{executionId:e.executionId,nodeId:e.nodeId,frameId:e.frameId,timeoutMs:e.timeoutMs,openedAt:e.createdAt}}async function oi(e,t){if(t.frameId!==void 0){let{gate:n}=await e.request(h.getGateInstance,t);return ni(n)?n:null}let{gates:n}=await e.request(h.listGateInstances,{executionId:t.executionId}),r=n.filter(e=>e.nodeId===t.nodeId&&e.status===`waiting`);return r.length===1?r[0]:null}async function si(e,t){let n=e.authority.canonicalizeOutcome(t.outcome),r=t.runtimeFence===void 0?void 0:{...t.runtimeFence};await e.validation?.validate(t.executionId,n.outcome);let i=await e.authority.commitOutcome(t.executionAttemptId,t.executionId,n,r);return(i.kind===`accepted`||i.kind===`duplicate`)&&(await e.convergence.converge({executionId:t.executionId,executionAttemptId:t.executionAttemptId,outcome:i.outcome,decision:i.kind}),e.authority.settleOutcome(t.executionAttemptId,{kind:i.kind,outcome:e.authority.decodeOutcome(i.text),text:i.text,controlObservation:i.controlObservation})),i.kind}function ci(e,t){let n=o(e);if(n===null)throw Error(`Attempt requests require an authenticated workflow-execution-attempt peer`);if(n.executionAttemptId!==t)throw Error(`Request executionAttemptId does not match authenticated peer identity`);return n}function li(e,t){if(e===null||e.runtimeGeneration!==t.runtimeGeneration)return!1;if(t.outcome.kind===`cancelled`&&t.operationId===void 0)return e.activeOperationId===null;let n=t.outcome.kind===`technical-failure`?t.outcome.stage:t.outcome.kind===`cancelled`?e.activeOperationKind:`workload-invocation`;return n===`startup`?t.operationId===void 0&&e.activeOperationId===null:!(e.activeOperationId!==t.operationId||e.activeOperationGeneration!==t.runtimeGeneration||e.activeOperationKind!==n||n!==`workspace-preparation`&&n!==`workload-invocation`)}function ui(e,t){return e.on(S.instruction.get,async e=>{let n=x[`instruction.get`].request.parse(e.payload),r=ci(e,n.executionAttemptId),i=await t.getInstruction(r);if(i===null){e.setResult({decision:`refused`,refusalReason:`not-found`});return}if((await t.getAttemptControlState(r.executionAttemptId))?.runtimeGeneration!==n.runtimeGeneration){e.setResult({decision:`refused`,refusalReason:`stale-generation`});return}e.setResult({decision:`found`,instruction:i})})}function di(e,t){let n=[ui(e,t.authority),e.on(S.operation.report,async e=>{let n=x[`operation.report`].request.parse(e.payload),r=ci(e,n.executionAttemptId),i=await t.authority.reportOperation({...n,executionId:r.executionId});i.kind===`accepted`||i.kind===`duplicate`?e.setResult({decision:i.kind,binding:i.binding}):e.setResult({decision:`refused`,refusalReason:i.kind})}),e.on(S.outcome.submit,async e=>{let n=x[`outcome.submit`].request.parse(e.payload),r=ci(e,n.executionAttemptId),i=await t.authority.getInstruction(r);if(i===null)throw Error(`No instruction belongs to this authenticated Attempt`);if(!li(await t.authority.getAttemptControlState(r.executionAttemptId),n)){e.setResult({decision:`fenced`});return}let a={runtimeGeneration:n.runtimeGeneration,operationId:n.operationId??null},o=await t.decodeOutcome({instruction:i,outcome:n.outcome});try{let n=await si(t,{...r,outcome:o,runtimeFence:a});e.setResult({decision:n})}catch(t){if(!(t instanceof Ge))throw t;e.setResult({decision:`fenced`})}})];return()=>{for(let e of n)e()}}function fi(e,t){return e.origin.local?{executionAttemptId:t.executionAttemptId,executionId:t.executionId}:o(e)}async function pi(e,t,n){if(n.pausedAtGateId===void 0||n.pausedAtFrameId===void 0)throw Error(`Paused outcome for '${t}' is missing gate identity`);let{paused:r}=await e.request(h.pauseRunningExecution,{executionId:t});if(!r){let{execution:n}=await e.request(h.getExecution,{executionId:t});if(n?.status!==`paused`)throw Error(`Failed to park execution '${t}': status is '${n?.status??`missing`}'`);return}await e.emit(g.execution.paused,{executionId:t,workflowId:n.workflowId,pausedAtGateId:n.pausedAtGateId,pausedAtFrameId:n.pausedAtFrameId})}var mi=class{bus;acceptTerminalResult;acceptTechnicalFailure;acceptCancellation;constructor(e,t,n,r){this.bus=e,this.acceptTerminalResult=t,this.acceptTechnicalFailure=n,this.acceptCancellation=r}async converge(e){if(`kind`in e.outcome){if(e.outcome.kind===`cancelled`){let t=await this.acceptCancellation(e.executionId,e.outcome);if(!t.accepted||t.status!==`cancelled`)throw Error(`Cancellation did not converge workflow execution '${e.executionId}'`);return}let t=await this.acceptTechnicalFailure(e.executionId,e.outcome);if(!t.accepted||t.status!==`failed`&&t.status!==`cancelled`)throw Error(`Technical failure did not converge workflow execution '${e.executionId}'`);return}if(e.outcome.status===`paused`){await pi(this.bus,e.executionId,e.outcome);return}let t=await this.acceptTerminalResult(e.executionId,e.outcome);if(!t.accepted||!u(t.status,e.outcome.status))throw Error(`Workflow result did not converge execution '${e.executionId}'`)}};function hi(e,t){return{authority:t.authority,decodeOutcome:ze,convergence:new mi(e,t.acceptTerminalResult,t.acceptTechnicalFailure,t.acceptCancellation)}}function gi(e,t){let n=hi(e,t),r=di(e,n),i=e.on(st.control.outcome.submit,async e=>{let r=fi(e,e.payload);if(r===null)throw Error(`Outcome submission requires an authenticated workflow-execution-attempt peer`);let{result:i}=e.payload;if(!e.origin.local){if(e.payload.executionId!==r.executionId)throw Error(`Outcome payload executionId '${e.payload.executionId}' does not match authenticated peer claim '${r.executionId}'`);if(e.payload.executionAttemptId!==r.executionAttemptId)throw Error(`Outcome payload executionAttemptId '${e.payload.executionAttemptId}' does not match authenticated peer identity '${r.executionAttemptId}'`)}if(i.executionId!==r.executionId)throw Error(`Nested result.executionId '${i.executionId}' does not match trusted identity '${r.executionId}'`);let a=ft.parse(i),o=await t.authority.getInstruction(r);if(o===null)throw Error(`No instruction belongs to this workflow Attempt`);let s=await n.decodeOutcome({instruction:o,outcome:{kind:`workload-result`,result:a}}),c=await si(n,{executionId:r.executionId,executionAttemptId:r.executionAttemptId,outcome:s});e.setResult({decision:_i(c)})});return()=>{i(),r()}}function _i(e){return e}function vi(e,t){return e.on(S.operation.admit,async e=>{let n=o(e);if(n===null)throw Error(`Operation admission requires an authenticated workflow-execution-attempt peer`);let{executionAttemptId:r,operationKind:i,admissionKey:a,runtimeGeneration:s}=x[`operation.admit`].request.parse(e.payload);if(r!==n.executionAttemptId)throw Error(`Admission payload executionAttemptId '${r}' does not match authenticated peer identity '${n.executionAttemptId}'`);if(i===`runtime-probe`)throw Error(`Operation admission does not accept 'runtime-probe' (executionAttemptId='${r}'): the bounded probe is admitted only by runtime registration`);let c=await t.authority.admitOperation({executionAttemptId:r,executionId:n.executionId,operationKind:i,admissionKey:a,runtimeGeneration:s});if(c.kind===`admitted`||c.kind===`duplicate`){await t.bus.emit(S.operation.admitted,{executionAttemptId:r,operationId:c.operationId,operationKind:i,runtimeGeneration:c.runtimeGeneration,admittedAt:c.admittedAt}),e.setResult({decision:c.kind,operationId:c.operationId});return}e.setResult({decision:`refused`,refusalReason:c.kind})})}const yi=1e4;function bi(e,t){let n=t.probeDeliveryTimeoutMs??1e4;return e.on(S.runtime.register,async e=>{let r=o(e);if(r===null)throw Error(`Runtime registration requires an authenticated workflow-execution-attempt peer`);let{executionAttemptId:i,runtimeIncarnationId:a}=x[`runtime.register`].request.parse(e.payload);if(i!==r.executionAttemptId)throw Error(`Registration payload executionAttemptId '${i}' does not match authenticated peer identity '${r.executionAttemptId}'`);let s=await t.authority.registerRuntime({executionAttemptId:i,executionId:r.executionId,runtimeIncarnationId:a});if(s.kind===`duplicate`&&s.runtimeReadyAt!==null){await xi(t,i,s.runtimeGeneration),e.setResult({decision:`duplicate`,runtimeGeneration:s.runtimeGeneration});return}if(s.kind!==`registered`&&s.kind!==`duplicate`){e.setResult(wi(s.kind));return}let c=s.runtimeGeneration;if(await Si(t,n,{executionAttemptId:i,executionId:r.executionId,runtimeIncarnationId:a,runtimeGeneration:c})===null){e.setResult(wi(`probe-failed`));return}await xi(t,i,c),e.setResult({decision:`ready`,runtimeGeneration:c})})}async function xi(e,t,n){let r=await e.authority.getAttemptControlState(t);r===null||r.runtimeGeneration!==n||r.runtimeReadyAt===null||await e.bus.emit(S.runtime.ready,{executionAttemptId:t,runtimeGeneration:n,acceptedAt:r.runtimeReadyAt})}async function Si(e,t,n){let{executionAttemptId:r,executionId:i,runtimeIncarnationId:a,runtimeGeneration:o}=n,s=await e.authority.admitOperation({executionAttemptId:r,executionId:i,operationKind:`runtime-probe`,admissionKey:`probe:${a}`,runtimeGeneration:o});if(s.kind!==`admitted`&&s.kind!==`duplicate`)return null;let c=s.operationId,l=()=>Ci(e,{executionAttemptId:r,operationId:c,runtimeGeneration:o}),u;try{u=(await e.bus.request(S.operation.deliver,{executionAttemptId:r,runtimeIncarnationId:a,operationId:c,operationKind:`runtime-probe`,runtimeGeneration:o},{timeout:t})).receipt}catch{return await l(),null}if(u!==`completed`&&u!==`duplicate`)return await l(),null;let d=await e.authority.completeOperation({executionAttemptId:r,operationId:c,runtimeGeneration:o});if(d.kind!==`completed`&&d.kind!==`duplicate`)return null;let f=await e.authority.markRuntimeReady({executionAttemptId:r,executionId:i,runtimeGeneration:o,readyAt:new Date().toISOString()});return f.kind!==`ready`&&f.kind!==`duplicate`?null:{kind:f.kind,acceptedAt:f.acceptedAt}}async function Ci(e,t){try{await e.authority.completeOperation(t)}catch{}}function wi(e){return{decision:`refused`,runtimeGeneration:0,refusalReason:e}}function Ti(e,t,n){n(bi(e,{bus:e,authority:t})),n(vi(e,{bus:e,authority:t}))}function Ei(e,t){let n=new AbortController,r=e.on(S.bootstrap.awaitStart,async e=>{let r=o(e);if(r===null)throw Error(`Bootstrap start requires an authenticated workflow-execution-attempt peer`);let{executionAttemptId:i}=x[`bootstrap.awaitStart`].request.parse(e.payload);if(i!==r.executionAttemptId)throw Error(`Bootstrap start executionAttemptId does not match authenticated peer identity`);let a=e.signal?AbortSignal.any([e.signal,n.signal]):n.signal;e.setResult(await t.awaitBootstrapStart({executionAttemptId:i,executionId:r.executionId},{signal:a,deadline:e.deadline??Date.now()+31e3}))});return()=>{n.signal.aborted||(n.abort(Error(`Bootstrap start handler shut down`)),r())}}function Di(e){return e.on(g.finalizeDelegateResult,async t=>{let n=t.payload;Oi(t,n.executionId);let{execution:r}=await e.request(h.getExecution,{executionId:n.executionId});if(r===null||r.workflowId!==n.workflowId)throw Error(`delegate result finalization execution does not own the requested workflow`);let{runContext:i}=await e.request(h.getRunContext,{executionId:n.executionId});if(i===null||i.executionId!==n.executionId||i.workflowId!==n.workflowId)throw Error(`delegate result finalization run context does not own the requested workflow execution`);if(i.definitionSnapshot===void 0)throw Error(`delegate result finalization requires an Authority-owned definition snapshot`);ki(i.definitionSnapshot,n.nodeId,n.nodeType,n.finalizerId);let{subjects:a}=ht(n.finalizerId),o=await e.request(a.finalize,{executionId:n.executionId,workflowId:n.workflowId,frameId:n.frameId,nodeId:n.nodeId,nodeType:n.nodeType,rawResult:n.rawResult,toolObservations:n.toolObservations,...n.economics===void 0?{}:{economics:n.economics}});t.setResult(o)})}function Oi(e,t){if(!m(e,t))throw Error(`delegate result finalization requires its authenticated workflow-execution-attempt peer`)}function ki(e,t,n,r){let i=!1;if(bt(e.root,{enter(e){if(!(e.type!==`delegate-agent`&&e.type!==`delegate-role`||e.id!==t||e.type!==n))return e.resultFinalizerId===r&&(i=!0),!1}}),!i)throw Error(`delegate result finalizer is not selected by the requested durable delegate node`)}async function Ai(e,n,r){let[{execution:i},{runContext:a}]=await Promise.all([e.bus.request(h.getExecution,{executionId:n}),e.bus.request(h.getRunContext,{executionId:n})]);if(!i)throw Error(`Authority execution not found: ${n}`);if(a?.executionId!==n||a.workflowId!==i.workflowId)throw Error(`authority technical failure run context identity mismatch`);if(a.terminalAuthority!==`authority`)throw Error(`authority technical failure requires terminalAuthority=authority`);if(i.status===`failed`||i.status===`cancelled`)return{accepted:!0,status:i.status};if(i.status!==`running`)throw Error(`Authority technical failure conflicts with execution status: ${i.status}`);await t(e,i,n,`${r.stage}: ${r.message}`);let o=await e.bus.request(h.getExecution,{executionId:n});if(o.execution?.status!==`failed`&&o.execution?.status!==`cancelled`)throw Error(`Authority technical failure did not settle as failed or cancelled`);return{accepted:!0,status:o.execution.status}}async function ji(e,t,n){let[{execution:r},{runContext:i}]=await Promise.all([e.bus.request(h.getExecution,{executionId:t}),e.bus.request(h.getRunContext,{executionId:t})]);if(!r)throw Error(`Authority execution not found: ${t}`);if(i?.executionId!==t||i.workflowId!==r.workflowId)throw Error(`authority cancellation run context identity mismatch`);if(i.terminalAuthority!==`authority`)throw Error(`authority cancellation requires terminalAuthority=authority`);if(r.status===`cancelled`)return{accepted:!0,status:`cancelled`};if(r.status!==`running`)throw Error(`Authority cancellation conflicts with execution status: ${r.status}`);if(await _(e,t,n.reason),(await e.bus.request(h.getExecution,{executionId:t})).execution?.status!==`cancelled`)throw Error(`Authority cancellation did not settle as cancelled`);return{accepted:!0,status:`cancelled`}}var Mi=class extends xt{workflowRunner;executionAttemptAuthority;static storage={drizzle:Mr};config;stopBootstrapWaits;activeExecutions=new Map;executionTasks=new Map;shellAbortControllers=new Map;activeRunnerSteps=new Map;gateTimeoutScheduler;resumeDispatches=new Set;workflowAbortControllers=new Map;successFinalizers=new Map;durableLifecycleTransitions=new Map;lifecyclePublications=new Map;publishingLifecycleExecutions=new Set;materializationSpecResolvers=new Set;constructor(e,t,n,r){super(e),this.workflowRunner=n,this.executionAttemptAuthority=r,this.config={...He,...t},this.gateTimeoutScheduler=new Xr(e,e=>this.resumePausedExecution(e))}registerWorkflowMaterializationSpecResolver(e){return this.materializationSpecResolvers.add(e),()=>this.materializationSpecResolvers.delete(e)}async registerSuccessFinalizer(e){if(!this.initialized)throw Error(`[WorkflowExecutor] Initialize the executor before registering success finalizers`);if(this.successFinalizers.has(e))throw Error(`[WorkflowExecutor] Success finalizer already registered: ${e}`);let{namespace:t,subjects:n}=gt(e);this.bus.registerNamespace(t);let r={finalizerId:e,finalizeSubject:n.finalize};this.successFinalizers.set(e,r);try{await d(this.buildFinalizerDeps())}catch(t){throw this.successFinalizers.get(e)===r&&this.successFinalizers.delete(e),t}let i=!1;return()=>{i||(i=!0,this.successFinalizers.get(e)===r&&this.successFinalizers.delete(e))}}async acceptAuthorityRunnerResult(e,t){if(t.status===`paused`)throw Error(`authority runner result must be terminal`);if(t.executionId!==e)throw Error(`authority runner result execution identity mismatch`);let{execution:n}=await this.bus.request(h.getExecution,{executionId:e});if(!n)throw Error(`Authority runner execution not found: ${e}`);if(n.workflowId!==t.workflowId)throw Error(`authority runner result workflow identity mismatch`);let r;if(n.status===`finalizing`){let{workflow:n}=await this.loadAuthorityRunnerContext(e,t.workflowId);r=await this.registerAuthorityResultFinalizer(n)}let i=await this.resolveAuthorityRunnerReplay(n,t).finally(()=>r?.());if(i!==void 0)return{accepted:!0,status:i};if(n.status!==`running`)throw Error(`Authority runner execution is ${n.status}`);let{runContext:a,workflow:o}=await this.loadAuthorityRunnerContext(e,t.workflowId),s=await this.registerAuthorityResultFinalizer(o),c=this.activeExecutions.get(e),l=!1;if(!c)this.activeExecutions.set(e,{execution:n,workflow:o,runContext:a,runtimeHandlers:new Map,runtimeLoopGates:new Map}),l=!0;else if(c.execution.workflowId!==t.workflowId)throw Error(`authority runner active execution identity mismatch`);try{await f({activeExecutions:this.activeExecutions,buildFinalizerDeps:()=>this.buildFinalizerDeps()},t)}finally{l&&this.activeExecutions.delete(e),s?.()}let d=await this.bus.request(h.getExecution,{executionId:e});if(!d.execution||!u(d.execution.status,t.status))throw Error(`Authority runner result did not settle compatibly with ${t.status}`);return{accepted:!0,status:d.execution.status}}acceptAuthorityTechnicalFailure=(e,t)=>Ai(this.buildFinalizerDeps(),e,t);acceptAuthorityCancellation=(e,t)=>ji(this.buildFinalizerDeps(),e,t);async resolveAuthorityRunnerReplay(e,t){if(e.status===`finalizing`){if(t.status!==`completed`)throw Error(`authority runner result conflicts with terminal execution`);await d(this.buildFinalizerDeps());let n=await this.bus.request(h.getExecution,{executionId:e.id});if(!n.execution)throw Error(`Authority runner success finalization execution is missing`);if(!u(n.execution.status,t.status))throw Error(`authority runner result conflicts with terminal execution`);return n.execution.status}if(!(e.status!==`completed`&&e.status!==`failed`&&e.status!==`cancelled`)){if(!u(e.status,t.status))throw Error(`authority runner result conflicts with terminal execution`);return e.status}}async loadAuthorityRunnerContext(e,t){let{runContext:n}=await this.bus.request(h.getRunContext,{executionId:e});if(!n)throw Error(`Authority runner run context not found: ${e}`);if(n.executionId!==e||n.workflowId!==t)throw Error(`authority runner run context identity mismatch`);if(n.terminalAuthority!==`authority`)throw Error(`authority runner result requires terminalAuthority=authority`);let r=n.definitionSnapshot??(await this.bus.request(h.get,{id:n.workflowId})).workflow;if(!r||r.id!==t)throw Error(`authority runner workflow definition is unavailable or mismatched`);return{runContext:n,workflow:r}}registerAuthorityResultFinalizer(e){return!e.successFinalizerId||this.successFinalizers.has(e.successFinalizerId)?Promise.resolve(void 0):this.registerSuccessFinalizer(e.successFinalizerId)}async onInit(){this.registerExecutionHandlers(),this.addCleanup(Ee(this.bus,(e,t)=>{let n=this.activeExecutions.get(e);n!==void 0&&(n.workflow=t)})),this.addCleanup(Di(this.bus)),this.executionAttemptAuthority!==void 0&&(this.stopBootstrapWaits=Ei(this.bus,this.executionAttemptAuthority),this.addCleanup(this.stopBootstrapWaits),this.addCleanup(gi(this.bus,{bus:this.bus,authority:this.executionAttemptAuthority,acceptTerminalResult:(e,t)=>this.acceptAuthorityRunnerResult(e,t),acceptTechnicalFailure:this.acceptAuthorityTechnicalFailure,acceptCancellation:this.acceptAuthorityCancellation})),Ti(this.bus,this.executionAttemptAuthority,e=>this.addCleanup(e))),Lr(this.bus).forEach(e=>this.addCleanup(e)),Vr(this.bus).forEach(e=>this.addCleanup(e)),await this.rehydratePausedGateTimeouts()}async onDestroy(){this.stopBootstrapWaits?.();let e=this.buildFinalizerDeps();await Promise.allSettled([...this.activeExecutions.keys()].map(async t=>{await p(e,t,`Workflow engine shutdown`)&&(this.workflowAbortControllers.get(t)?.abort(),this.workflowAbortControllers.delete(t))}));for(let e of this.workflowAbortControllers.values())e.abort();this.workflowAbortControllers.clear(),await Promise.allSettled(this.executionTasks.values()),await Promise.allSettled(this.durableLifecycleTransitions.values()),await Promise.allSettled(this.lifecyclePublications.values());for(let e of this.shellAbortControllers.values())e.abort();this.shellAbortControllers.clear();for(let e of this.activeRunnerSteps.values())e.hardKillTimer&&clearTimeout(e.hardKillTimer);this.activeRunnerSteps.clear(),this.gateTimeoutScheduler.dispose(),await this.workflowRunner?.dispose?.(),this.activeExecutions.clear()}buildFinalizerDeps(){let e=this.executionAttemptAuthority;return{bus:this.bus,activeExecutions:this.activeExecutions,shellAbortControllers:this.shellAbortControllers,activeRunnerSteps:this.activeRunnerSteps,cancelTimeoutMs:this.config.cancelTimeoutMs,requestAttemptCancellation:e===void 0?void 0:(t,n)=>e.requestCancellation({executionId:t,reason:n}),notifyAttemptCancellation:(e,t)=>this.notifyAttemptCancellation(e,t),successFinalizers:this.successFinalizers,resolveSuccessFinalizerId:e=>this.activeExecutions.get(e)?.workflow.successFinalizerId,durableLifecycleTransitions:this.durableLifecycleTransitions,lifecyclePublications:this.lifecyclePublications,publishingLifecycleExecutions:this.publishingLifecycleExecutions}}async notifyAttemptCancellation(e,t){this.workflowAbortControllers.get(e)?.abort(t??at),await this.bus.emit(mt(`workflow.${e}.cancel`),{executionId:e,reason:t}).catch(t=>{console.error(`[WorkflowExecutor] Failed to emit workflow cancel for ${e}:`,t)})}buildRunnerTaskDeps(e){return{workflowRunner:e,workflowAbortControllers:this.workflowAbortControllers,executionTasks:this.executionTasks,activeExecutions:this.activeExecutions,buildFinalizerDeps:()=>this.buildFinalizerDeps(),config:this.config}}async resolveExecutionWorkspaceRoot(e){if(!e)return this.config.platformDefaults.cwd;let{session:t}=await this.bus.request(it.get,{sessionId:e});if(t===null)throw Error(`[WorkflowExecutor] Parent session not found: ${e}`);return t.targetWorkingDirectory??this.config.platformDefaults.cwd}resolveEphemeralPlatformFields(){return Le(this.config.platformDefaults.cwd,this.config.makaioHome)}buildStartDeps(){return{bus:this.bus,config:this.config,activeExecutions:this.activeExecutions,executionTasks:this.executionTasks,workflowRunner:this.workflowRunner,buildRunContext:e=>ei(e,this.config),buildRunnerTaskDeps:e=>this.buildRunnerTaskDeps(e),buildFinalizerDeps:()=>this.buildFinalizerDeps(),resolveExecutionWorkspaceRoot:e=>this.resolveExecutionWorkspaceRoot(e),runExecution:e=>this.runExecution(e),executionAttemptAuthority:this.executionAttemptAuthority,materializationSpecResolvers:this.materializationSpecResolvers}}registerExecutionHandlers(){this.registerHandler(g.acceptAuthorityRunnerResult,async e=>{if(!e.origin.local)throw Error(`authority runner result acceptance is local-authority only`);let{executionId:t,result:n}=e.payload;e.setResult(await this.acceptAuthorityRunnerResult(t,n))}),this.registerHandler(g.start,async e=>{let{workflowId:t,input:n,config:r,parentSessionId:i,triggerPayload:a,artifactRef:o,scope:s}=e.payload;try{let c=await pe(this.buildStartDeps(),t,{input:$r(n),config:Zr(r)??{},parentSessionId:i,triggerPayload:a,artifactRef:o,scopeOverride:s});e.setResult({executionId:c})}catch(e){if(e instanceof C)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Failed to start workflow: ${t}`)}}),this.registerHandler(g.rerun,async e=>{let{executionId:t,mode:n,input:r,config:i,parentSessionId:a,triggerPayload:o,artifactRef:s,scope:c,reason:l}=e.payload;try{let u=await Wr(this.buildStartDeps(),{executionId:t,mode:n,input:$r(r),config:Zr(i),parentSessionId:a,triggerPayload:o,artifactRef:s,scopeOverride:c,reason:l});e.setResult({executionId:u})}catch(e){if(e instanceof C)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Failed to rerun workflow: ${t}`)}}),this.registerHandler(g.runFile,async e=>{if(this.workflowRunner===void 0)throw Error(`workflow.runFile requires a workflow runner — configure a ThinWorkflowPiscinaRunner or equivalent.`);let{filePath:t,materializationSpec:n,triggerPayload:r,triggerMode:i,scope:a}=e.payload;try{let o=await Ae(this.buildStartDeps(),t,{...n===void 0?{}:{materializationSpec:n},triggerPayload:r,triggerMode:i,scopeOverride:a});e.setResult({executionId:o})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to start workflow file: ${t}`)}}),this.registerHandler(g.cancel,async e=>{let{executionId:t,reason:n}=e.payload,r=await p(this.buildFinalizerDeps(),t,n);e.setResult({cancelled:r})}),this.registerGateTimeoutHandlers(),this.addCleanup(this.bus.on(g.gate.respond,async e=>{let{executionId:t,gateId:n,frameId:r,action:i,resumeData:a,reason:o}=e.payload,s=await this.respondToPausedGate({executionId:t,gateId:n,frameId:r,action:i,resumeData:a,reason:o});e.setResult({accepted:s})},{priority:-100}))}registerGateTimeoutHandlers(){this.addCleanup(this.bus.on(g.gate.suspended,e=>{this.gateTimeoutScheduler.schedule(e.payload)})),this.addCleanup(this.bus.on(g.gate.resolved,e=>{this.gateTimeoutScheduler.clear(e.payload.executionId,e.payload.stepId,e.payload.frameId)}))}async rehydratePausedGateTimeouts(){let{gates:e}=await this.bus.request(h.listPausedGateTimeouts,{});for(let t of e)this.gateTimeoutScheduler.schedule(ai(t))}async runExecution(e){let n=this.activeExecutions.get(e);if(!n)return;let r=new AbortController;this.workflowAbortControllers.set(e,r);try{let i;try{let t=await le({definition:n.workflow,execution:n.execution,runContext:n.runContext,bus:this.bus}),a=new Se(e,n.workflow.id,n.workflow,n.execution,n.runtimeHandlers,this.bus,r.signal,void 0,t,{context:this.resolveEphemeralPlatformFields(),env:n.runContext.env},{runtimeLoopGates:n.runtimeLoopGates});Ne(n.workflow,n.runtimeLoopGates);let o=a.buildExpressionContext();i=await ye(n.workflow.root,a,o)}catch(i){if(r.signal.aborted||n.execution.status===`cancelled`){await _(this.buildFinalizerDeps(),e,at);return}let a=i instanceof Error?i.message:String(i);await t(this.buildFinalizerDeps(),n.execution,e,a);return}let a=this.buildFinalizerDeps();i.status===`cancelled`||r.signal.aborted||n.execution.status===`cancelled`?await _(a,e,at):i.status===`failed`?await t(a,n.execution,e,i.error):i.status===`paused`?(n.execution.status=`paused`,await this.bus.request(h.setExecution,{execution:n.execution}),this.activeExecutions.delete(e)):await xe(a,n.execution,e,n.execution.startedAt)}finally{this.workflowAbortControllers.delete(e)}}async respondToPausedGate(e){let{executionId:t,gateId:n,frameId:r,resumeData:i,reason:a}=e,{execution:o}=await this.bus.request(h.getExecution,{executionId:t});if(!ti(o))return!1;let s=await oi(this.bus,{executionId:t,nodeId:n,frameId:r});if(s===null||!Oe(n,s.schema,i).valid)return!1;let{runContext:c}=await this.bus.request(h.getRunContext,{executionId:t});if(c===null)throw Error(`[WorkflowExecutor] Run context not found for paused execution: ${t}`);await ii(this.bus,c);let{accepted:l}=await this.bus.request(h.resolveWaitingGateInstance,{gate:{...s,status:e.action===`reject`?`rejected`:`resumed`,resumeData:i,...a===void 0?{}:{reason:a},resolvedAt:Date.now()}});if(!l)return!1;try{await this.resumePausedExecution(o.id)}catch(e){throw await ri(this.buildFinalizerDeps(),this.activeExecutions,this.executionTasks,this.workflowAbortControllers,o,s,n),e}return this.gateTimeoutScheduler.clear(t,n,s.frameId),!0}async resumePausedExecution(e){if(!this.resumeDispatches.has(e)){this.resumeDispatches.add(e);try{await this.dispatchPausedExecutionResume(e)||this.resumeDispatches.delete(e)}catch(t){throw this.resumeDispatches.delete(e),t}}}async dispatchPausedExecutionResume(e){let{runContext:t}=await this.bus.request(h.getRunContext,{executionId:e});if(t===null)throw Error(`[WorkflowExecutor] Run context not found for paused execution: ${e}`);let n=t.definitionSnapshot??(await this.bus.request(h.get,{id:t.workflowId})).workflow??(()=>{throw Error(`[WorkflowExecutor] Workflow definition not found for paused execution: ${e}`)})();await ii(this.bus,t);let a=r(t,n,{resume:!0}),o=he(this.buildStartDeps(),a);return i(this.buildFinalizerDeps(),e,async()=>{let{execution:r}=await this.bus.request(h.getExecution,{executionId:e});if(r===null)throw Error(`[WorkflowExecutor] Execution not found for paused execution: ${e}`);if(r.status!==`paused`)return!1;await this.bus.request(h.setExecution,{execution:{...r,status:`running`}}),this.activeExecutions.set(e,{execution:{...r,status:`running`},workflow:n,runContext:t,runtimeHandlers:new Map,runtimeLoopGates:new Map});let i=_e(this.buildStartDeps(),a,o).finally(()=>this.resumeDispatches.delete(e));return this.executionTasks.set(e,i),!0})}};const Q=`[WorkflowTriggerReconciler]`;function Ni(e){return e.map(Pi)}function Pi(e){let t=ct.parse(e);return{binding:t,matches:qe(t),subscription:void 0}}function Fi(e,t,n){let r=e.triggers??[];try{return n===void 0?Ni(r):r.map(e=>n.has(e.kind)?Pi(e):void 0)}catch(i){if(t){console.error(`${Q} keeping last-good triggers for workflow "${e.id}": its trigger bindings are invalid`,i);return}return r.map((t,r)=>{if(!(n!==void 0&&!n.has(t.kind)))try{return Pi(t)}catch(t){console.error(`${Q} leaving invalid trigger ${r} of workflow "${e.id}" inactive`,t);return}})}}function Ii(e,t){return e.scope.type!==`global`||t.kind!==$e}async function Li(e,t,n,r){if(r!==void 0)for(let[i,a]of Array.from(r)){let o=e.triggers?.[i];if(o!==void 0&&n!==void 0&&!n.has(o.kind))continue;let s=t[i];s!==void 0&&Ii(e,s.binding)||(r.delete(i),await $(a.subscription))}}async function $(e){if(e!==void 0)try{await e.detach()}catch(t){console.error(`${Q} detach failed for '${e.bindingKey}':`,t)}}var Ri=class{bus;resolveRuntime;consumers=new Map;cleanupFns=[];initialized=!1;initialization;lane=new Xe;pendingChanges=[];constructor(e,t){this.bus=e,this.resolveRuntime=t}async init(){if(this.initialized)return;if(this.initialization!==void 0)return this.initialization;let e=this.initialize();return this.initialization=e,e.then(()=>this.clearInitialization(e),()=>this.clearInitialization(e)),e}clearInitialization(e){this.initialization===e&&(this.initialization=void 0)}async initialize(){try{let e=({payload:e})=>{this.onSignal(`refresh of workflow "${e.id}"`,()=>this.refreshDefinition(e.id))};this.cleanupFns.push(this.bus.on(w.definition.created,e),this.bus.on(w.definition.updated,e),this.bus.on(w.definition.deleted,e),this.bus.on(Qe.changed,e=>{this.scheduleRegistryReconcile(e.payload)})),await this.reconcileStored(`keep-last-good`),this.initialized=!0}catch(e){throw await this.teardown(),e}}async destroy(){await this.teardown(),this.initialized=!1}activeConsumerCount(){let e=0;for(let t of this.consumers.values())e+=t.size;return e}onSignal(e,t){t().catch(t=>{console.error(`${Q} ${e} failed:`,t)})}scheduleRegistryReconcile(e){let t=this.pendingChanges.length>0;this.pendingChanges.push(e),!t&&queueMicrotask(()=>{if(this.pendingChanges.length===0)return;let e=this.pendingChanges.splice(0),t=new Set(e.flatMap(({kinds:e})=>e)),n=e.map(({owner:e,revision:t})=>`${e}@${t}`).join(`, `);this.onSignal(`reconciliation after trigger registry changes (${n})`,()=>this.reconcileStored(`drop-unavailable`,t))})}async reconcileStored(e,t){await this.lane.run(async()=>{let{workflows:n}=await this.bus.request(h.list,{}),r=new Set(n.map(e=>e.id));for(let r of n){let n=r.triggers??[];t!==void 0&&!n.some(e=>t.has(e.kind))||await this.applyDefinitionWithinLane(r,e,t)}for(let e of Array.from(this.consumers.keys()))r.has(e)||await this.forgetWorkflowWithinLane(e)})}async refreshDefinition(e){await this.lane.run(async()=>{let{workflow:t}=await this.bus.request(h.get,{id:e});if(t===null){await this.forgetWorkflowWithinLane(e);return}await this.applyDefinitionWithinLane(t,`keep-last-good`)})}async applyDefinitionWithinLane(e,t,n){let r=Fi(e,(this.consumers.get(e.id)?.size??0)>0,n);if(r===void 0)return;let i=this.consumers.get(e.id);if(await Li(e,r,n,i),i?.size===0&&this.consumers.delete(e.id),!r.some(t=>t!==void 0&&Ii(e,t.binding)&&(n===void 0||n.has(t.binding.kind))))return;let a=this.resolveRuntime();if(a===void 0){r.length>0&&console.warn(`${Q} no automation trigger binding runtime is available; declarative triggers of workflow "${e.id}" stay inactive`);return}let o=this.consumers.get(e.id);o===void 0&&(o=new Map,this.consumers.set(e.id,o));for(let[i,s]of r.entries())s!==void 0&&Ii(e,s.binding)&&(n!==void 0&&!n.has(s.binding.kind)||await this.refreshConsumerWithinLane(a,e.id,i,s,o,t));o.size===0&&this.consumers.delete(e.id)}async refreshConsumerWithinLane(e,t,n,r,i,a){let o=i.get(n),s=this.createListener(t,n,r);try{let t=o?.subscription?.bindingKey,a=e.prepareBinding(r.binding);if(a===void 0)throw Error(`Automation trigger kind '${r.binding.kind}' is not registered`);if(!a.workflowCompatible)throw Error(`Automation trigger kind '${r.binding.kind}' does not emit an object-root payload`);(t===void 0||t!==a.bindingKey)&&i.set(n,r),r.subscription=await a.subscribe(s),i.set(n,r),await $(o?.subscription);return}catch(e){if(o===void 0?i.delete(n):i.set(n,o),a===`keep-last-good`){console.error(`${Q} keeping last-good trigger ${n} of workflow "${t}": binding '${r.binding.kind}' could not be activated`,e);return}console.warn(`${Q} dropping trigger ${n} of workflow "${t}": binding '${r.binding.kind}' is no longer available`,e),i.delete(n),await $(o?.subscription)}}async forgetWorkflowWithinLane(e){let t=this.consumers.get(e);if(t!==void 0){this.consumers.delete(e);for(let e of t.values())await $(e.subscription)}}createListener(e,t,n){let r=`trigger ${t} ('${n.binding.kind}') of workflow "${e}"`;return async i=>{if(this.consumers.get(e)?.get(t)!==n)return;let a;try{a=n.matches(i.payload)}catch(e){console.error(`${Q} filter evaluation failed for ${r}:`,e);return}if(a)try{await this.bus.request(w.start,{workflowId:e,triggerPayload:Ke(i.payload)})}catch(t){console.error(`${Q} failed to start workflow "${e}" from ${r}:`,t)}}}async teardown(){this.cleanupFns.forEach(e=>e()),this.cleanupFns.length=0,this.pendingChanges.length=0,await this.lane.run(async()=>{for(let e of Array.from(this.consumers.keys()))await this.forgetWorkflowWithinLane(e)})}};const zi=1e3;function Bi(e){if(e===null)return{status:`refused`,reason:`not-found`};if(e.settled)return{status:`refused`,reason:`resolved`};if(!e.active)return{status:`refused`,reason:`fenced`};if(e.allocationTerminated)return{status:`refused`,reason:`allocation-terminated`};if(e.operationStartGate===`closed`)return{status:`refused`,reason:`gate-closed`};let t=e.bootstrapDeadlineAt===null?NaN:Date.parse(e.bootstrapDeadlineAt);return!Number.isFinite(t)||t<=Date.now()?{status:`refused`,reason:`bootstrap-expired`}:{status:e.allocated?`permitted`:`pending`}}function Vi(e,t){return new Promise((n,r)=>{let i=()=>{t.removeEventListener(`abort`,i),r(t.reason)};t.addEventListener(`abort`,i,{once:!0}),t.aborted&&i(),e.then(n,r).finally(()=>t.removeEventListener(`abort`,i))})}function Hi(e,t){return new Promise((n,r)=>{let i=()=>{clearTimeout(o),t.removeEventListener(`abort`,a),n()},a=()=>{clearTimeout(o),t.removeEventListener(`abort`,a),r(t.reason)},o=setTimeout(i,e);t.addEventListener(`abort`,a,{once:!0}),t.aborted&&a()})}function Ui(e,t){return setTimeout(()=>e.abort(Error(`Bootstrap start observation timed out`)),Math.max(0,t-Date.now()))}async function Wi(e,t,n){if(n.signal.throwIfAborted(),!Number.isFinite(n.deadline))throw Error(`Bootstrap start request requires a finite deadline`);let r=Math.min(Date.now()+3e4,n.deadline-zi),i=new AbortController,a=AbortSignal.any([n.signal,i.signal]),o=Math.min(n.deadline,r+zi),s=Ui(i,o);try{for(;;){a.throwIfAborted();let n=await Vi(e.readBootstrapStartState(t),a);a.throwIfAborted();let c=Bi(n);if(c.status!==`pending`)return c;let l=Date.parse(n?.bootstrapDeadlineAt??``);clearTimeout(s),s=Ui(i,Math.min(o,l+zi));let u=Math.min(r,l)-Date.now();if(u<=0)return c;await Hi(Math.min(100,u),a)}}finally{clearTimeout(s)}}var Gi=class{repository;bootstrapTimeoutMs;waiters=new Map;constructor(e,t){if(!Number.isSafeInteger(t?.bootstrapTimeoutMs)||t.bootstrapTimeoutMs<=0)throw Error(`ExecutionAttemptAuthority requires an explicit positive safe-integer bootstrapTimeoutMs`);this.repository=e,this.bootstrapTimeoutMs=t.bootstrapTimeoutMs}awaitBootstrapStart(e,t){return Wi(this.repository,e,t)}async createAttempt(e,t){let n=crypto.randomUUID(),r=await this.repository.createAttempt({executionAttemptId:n,executionId:e,instruction:t,bootstrapTimeoutMs:this.bootstrapTimeoutMs});return this.installWaiter(n),r}async ensureAttempt(e){let t=Ye(e);return this.repository.ensureAttempt({...t,executionAttemptId:crypto.randomUUID(),bootstrapTimeoutMs:this.bootstrapTimeoutMs})}async readAttemptSettlement(e){return this.repository.readAttemptSettlement(Je(e))}async getInstruction(e){return this.repository.getInstruction(e)}async requestAttemptCancellation(e){return this.repository.requestAttemptCancellation(Ue(e))}async requestCancellation(e){return this.repository.requestCancellation(We(e))}async readCancellation(e){return this.repository.readCancellation(e)}async reportOperation(e){return this.repository.reportOperation(e)}async beginProvisioning(e){return this.repository.beginProvisioning(e)}async getProviderOperation(e){return this.repository.getProviderOperation(e)}async renewProviderOperationClaim(e){return this.repository.renewProviderOperationClaim(e)}async takeOverProviderOperation(e){return this.repository.takeOverProviderOperation(e)}async handoffProviderOperation(e){return this.repository.handoffProviderOperation(e)}async recordProviderOperationUncertainty(e){return this.repository.recordProviderOperationUncertainty(e)}async completeProviderOperation(e){return this.repository.completeProviderOperation(e)}async recordAllocation(e){return this.repository.recordAllocation(e)}async recordProvisioningAbsent(e){let t=await this.repository.recordProvisioningAbsent(e);return t.kind===`recorded`&&this.rejectWaiterWith(e.claim.executionAttemptId,()=>Error(`Attempt '${e.claim.executionAttemptId}' provisioning produced no allocation: ${e.evidence.source} reported '${e.evidence.summary}'`)),t}async recordProvisionerIncarnationLost(e){let t=await this.repository.recordProvisionerIncarnationLost(e);if(t.kind===`recorded`){let{evidence:t,provisionerIncarnationId:n}=e.proof;this.rejectWaiterWith(e.claim.executionAttemptId,()=>Error(`Attempt '${e.claim.executionAttemptId}' lost the provisioner incarnation '${n}' its allocation was bound to: ${t.source} reported '${t.summary}'`))}return t}async recordAllocationTerminated(e){return this.repository.recordAllocationTerminated(e)}async registerRuntime(e){return this.repository.registerRuntime(e)}async admitOperation(e){return this.repository.admitOperation(e)}async completeOperation(e){return this.repository.completeOperation(e)}async markRuntimeReady(e){return this.repository.markRuntimeReady(e)}async getAttemptControlState(e){return this.repository.getAttemptControlState(e)}async getActiveAttempt(e,t){return this.repository.getActiveAttempt(e,t)}canonicalizeOutcome(e){return this.repository.canonicalizeOutcome(e)}decodeOutcome(e){return this.repository.decodeOutcome(e)}async commitOutcome(e,t,n,r){let i=await this.repository.commitOutcome({executionAttemptId:e,executionId:t,result:n,...r===void 0?{}:{runtimeFence:r}});return(i.kind===`conflict`||i.kind===`fenced`)&&this.settleWaiterInternal(e,i),i}waitForOutcome(e){return this.waiters.get(e)?.promise}settleOutcome(e,t){this.settleWaiterInternal(e,t)}discardWaiter(e){this.waiters.delete(e)}rejectAndDiscardWaiter(e,t){this.rejectWaiterWith(e,()=>t)}rejectWaiterWith(e,t){let n=this.waiters.get(e);n!==void 0&&(n.promise.catch(()=>void 0),n.reject(t()),this.waiters.delete(e))}get supportsRecovery(){return this.repository.recovery!==void 0}async getAttemptWithAllocation(e){return this.requireRecovery(`getAttemptWithAllocation`).getAttemptWithAllocation(e)}async recordDiscoveredAllocation(e){return this.requireRecovery(`recordDiscoveredAllocation`).recordDiscoveredAllocation(e)}async evolveAllocationRef(e){let t=this.requireRecovery(`evolveAllocationRef`);if(e.currentRef.providerId!==e.nextRef.providerId)throw Error(`Provider identity mismatch in allocation ref evolution: currentRef.providerId '${e.currentRef.providerId}' !== nextRef.providerId '${e.nextRef.providerId}'. Provider identity must not change during correlation.`);return t.evolveAllocationRef(e)}async getRecoverableAttempts(e){return this.requireRecovery(`getRecoverableAttempts`).getRecoverableAttempts(e)}async listOpenProviderOperations(e){return this.requireRecovery(`listOpenProviderOperations`).listOpenProviderOperations(e)}async recordInfrastructureFailure(e){let t=await this.repository.recordInfrastructureFailure(e);return t.kind===`recorded`&&this.rejectWaiterWith(e.claim.executionAttemptId,()=>Error(`Attempt '${e.claim.executionAttemptId}' suffered infrastructure failure: the provider allocation terminated without an acknowledged outcome`)),t}async abandonPendingAttempt(e,t){let n=await this.repository.abandonPendingAttempt(e,t);return(n.kind===`abandoned`||n.kind===`already-abandoned`)&&this.waiters.delete(e),n}requireRecovery(e){let{recovery:t}=this.repository;if(t===void 0)throw Error(`Recovery operation '${e}' requires a repository that exposes recovery operations. The injected repository does not support recovery.`);return t}installWaiter(e){this.waiters.set(e,se())}settleWaiterInternal(e,t){let n=this.waiters.get(e);if(n){switch(t.kind){case`accepted`:case`duplicate`:n.resolve(t.outcome);break;case`conflict`:n.reject(Error(`Outcome conflict for attempt '${e}': a different outcome was already committed`));break;case`fenced`:n.reject(Error(`Attempt '${e}' has been fenced: it is no longer the active attempt for this execution`));break}this.waiters.delete(e)}}},Ki=class extends xt{workflowExecutor;triggerReconcilerInstance;attemptAuthority;workspaceRootResolvers=new Set;constructor(e,t){super(e);let n=t?.executionAttemptAuthority;if(!n&&t?.executionAttemptRepository){let e=t.executionAttemptBootstrapTimeoutMs;if(e===void 0)throw Error(`An ExecutionAttemptRepository requires executionAttemptBootstrapTimeoutMs`);n=new Gi(t.executionAttemptRepository,{bootstrapTimeoutMs:e})}this.attemptAuthority=n,this.workflowExecutor=new Mi(e,t?.executorConfig,t?.workflowRunner,this.attemptAuthority);for(let e of t?.workflowMaterializationSpecResolvers??[])this.workflowExecutor.registerWorkflowMaterializationSpecResolver(e);let r=t?.automationTriggerBindingRuntime;this.triggerReconcilerInstance=new Ri(e,()=>r?.())}get executor(){return this.workflowExecutor}get executionAttemptAuthority(){return this.attemptAuthority}registerSuccessFinalizer(e){return this.workflowExecutor.registerSuccessFinalizer(e)}acceptAuthorityRunnerResult(e,t){return this.workflowExecutor.acceptAuthorityRunnerResult(e,t)}get triggerReconciler(){return this.triggerReconcilerInstance}registerWorkflowMaterializationSpecResolver(e){return this.workflowExecutor.registerWorkflowMaterializationSpecResolver(e)}registerWorkspaceRootResolver(e){return this.workspaceRootResolvers.add(e),()=>{this.workspaceRootResolvers.delete(e)}}async resolveWorkspaceRoot(e){for(let t of this.workspaceRootResolvers){let n=await t(e);if(n!==void 0)return n}}async onInit(){this.addCleanup(()=>this.destroyOwnedServices()),await this.workflowExecutor.init(),await this.triggerReconcilerInstance.init()}async destroyOwnedServices(){let e=[];for(let t of[()=>this.triggerReconcilerInstance.destroy(),()=>this.workflowExecutor.destroy()])try{await t()}catch(t){e.push(t)}if(e.length===1)throw e[0];if(e.length>1)throw AggregateError(e,`Workflow engine service teardown failed`)}};const qi=vt(`makaio.workflow-engine`);function Ji(e){return{name:qi.name,displayName:`Workflow Engine`,version:`0.1.0`,dependencies:[_t(Mt.name),_t(Nt.name,void 0,!0)],critical:!0,namespaces:[ut,ne],storage:{registerHandlers:wt(Mr)},create:t=>new Ki(t.bus,{...e,automationTriggerBindingRuntime:()=>t.getService(Nt)})}}const Yi=Ji();export{hn as _,Gi as a,Ei as c,vi as d,di as f,pn as g,mn as h,Ki as i,yi as l,Mr as m,Ji as n,Ri as o,si as p,Yi as r,Mi as s,qi as t,bi as u};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { A as
|
|
1
|
+
import { A as OperationReportDecision, B as RecordProvisioningAbsentInput, D as MarkRuntimeReadyInput, E as InfrastructureFailureDecision, F as ReadBootstrapStartStateInput, Ft as RequestAttemptCancellationInput, G as RuntimeRegistrationDecision, H as RegisterRuntimeInput, I as RecordAllocationInput, It as RequestExecutionCancellationInput, Kt as ReadAttemptSettlementInput, L as RecordAllocationTerminatedInput, M as PendingAttemptAbandonmentDecision, Nt as ExecutionAttemptCancellationDecision, O as OperationAdmissionDecision, P as ProvisioningClaimDecision, Pt as ExecutionAttemptCancellationIntent, R as RecordInfrastructureFailureInput, St as RuntimeOutcomeFence, T as GetInstructionInput, U as ReportOperationInput, Ut as EnsureExecutionAttemptDecision, V as RecoverableAttemptRecord, Vt as AttemptSettlementRead, W as RuntimeReadinessDecision, Wt as EnsureExecutionAttemptInput, X as CompleteProviderOperationInput, Z as HandoffProviderOperationInput, a as AllocationRefEvolutionDecision, at as ProviderOperationClaimDecision, dt as ProviderOperationOwnershipRecord, et as ListOpenProviderOperationsInput, f as CompleteOperationInput, ft as ProvisionerIncarnationLossDecision, gt as TakeOverProviderOperationInput, h as DurableOutcome, ht as RenewProviderOperationClaimInput, i as AllocationRefEvolution, j as OutcomeCodec, k as OperationCompletionDecision, lt as ProviderOperationMutationDecision, mt as RecordProviderOperationUncertaintyInput, n as AdmitOperationInput, o as AllocationTerminationDecision, ot as ProviderOperationCompletionDecision, p as DiscoveredAllocationDecision, pt as ProvisioningAbsenceDecision, r as AllocationRecordingDecision, s as AttemptControlState, tt as OpenProviderOperationRecord, u as BeginProvisioningInput, w as ExecutionOwnerId, x as ExecutionAttemptRepository, y as ExecutionAttemptRecord, yt as ExecutionAttemptOutcomeDecision, z as RecordProvisionerIncarnationLostInput } from "./execution-attempt-repository--RVils5-.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { IMakaioBus } from "@makaio/framework/bus";
|
|
4
3
|
import * as _$_makaio_contracts0 from "@makaio/framework/contracts";
|
|
5
4
|
import { ExecutionAttemptBootstrapAwaitStartResponse, ExecutionAttemptInstruction, ExecutionAttemptOutcome, IWorkflowRunner, LoopGateHandler, MakaioNodeExtension, StationHandler, StepRunnerBusAuth, StepRunnerPlatformDefaults, WorkerMaterializationSpec, WorkflowDefinition, WorkflowExecution, WorkflowRunContext, WorkflowRunResult } from "@makaio/framework/contracts";
|
|
5
|
+
import { IMakaioBus } from "@makaio/framework/bus";
|
|
6
6
|
import { BaseService } from "@makaio/framework/service-base";
|
|
7
7
|
import { MakaioDatabase } from "@makaio/framework/storage/drizzle";
|
|
8
8
|
import { AutomationTriggerBindingRuntime } from "@makaio/framework/services/automation-trigger";
|
|
@@ -186,6 +186,13 @@ declare class ExecutionAttemptAuthority<TOutcome> implements BootstrapStartAutho
|
|
|
186
186
|
* @returns The stored assignment, or null for an owner mismatch or missing attempt.
|
|
187
187
|
*/
|
|
188
188
|
getInstruction(input: GetInstructionInput): Promise<ExecutionAttemptInstruction | null>;
|
|
189
|
+
/**
|
|
190
|
+
* Commit one owner-authorized Cancel before any best-effort control notification.
|
|
191
|
+
* Historical cleanup does not restore outcome or owner mutation authority.
|
|
192
|
+
* @param input - Trusted owner, exact attempt and stable cancellation request key.
|
|
193
|
+
* @returns Winning durable receipt, replay or refusal without waiter settlement.
|
|
194
|
+
*/
|
|
195
|
+
requestAttemptCancellation(input: RequestAttemptCancellationInput): Promise<ExecutionAttemptCancellationDecision>;
|
|
189
196
|
/**
|
|
190
197
|
* Commit cancellation intent before any best-effort control notification.
|
|
191
198
|
* @param input - Owner of existing attempts and optional cancellation reason.
|
|
@@ -792,7 +799,10 @@ declare const WorkflowAttemptOutcomeSchema: z.ZodUnion<readonly [z.ZodDiscrimina
|
|
|
792
799
|
evidence: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
793
800
|
source: z.ZodObject<{
|
|
794
801
|
kind: z.ZodLiteral<"git-file">;
|
|
795
|
-
repository: z.
|
|
802
|
+
repository: z.ZodObject<{
|
|
803
|
+
kind: z.ZodString;
|
|
804
|
+
path: z.ZodString;
|
|
805
|
+
}, z.core.$strict>;
|
|
796
806
|
path: z.ZodString;
|
|
797
807
|
commit: z.ZodString;
|
|
798
808
|
}, z.core.$strict>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{ExecutionTargetSubjects as t}from"./services/execution-target/namespace.mjs";import{r as n}from"./attach-error-B-vXQFLQ.mjs";import{MakaioBus as r}from"@makaio/framework/bus";import{AdapterSubjects as i,AgentSubjects as a,DEFAULT_CONSTRAINTS as o,SessionSubjects as s,SpawnSubagentRpcRequestSchema as c,SubagentConfigSchema as l,SubagentError as u,SubagentErrorCode as d,SubagentSubjects as f,dep as p,extensionToken as m}from"@makaio/framework/contracts";import{BaseService as h}from"@makaio/framework/service-base";import{RuntimeProviderContextResolutionError as g,resolveRuntimeProviderContext as _}from"@makaio/framework/services/provider-context";function v(e,t){return`${e}:${t}`}function y(e,t){return e?.authenticated!==!0||!e.id?!1:e.kind===`workflow-execution`?!0:t.size===0?!1:t.has(v(e.kind,e.id))}var b=class{maxSize;items=[];constructor(e=50){this.maxSize=e}push(e){this.items.push(e),this.items.length>this.maxSize&&this.items.shift()}toArray(){return[...this.items]}get length(){return this.items.length}clear(){this.items=[]}};const x=[`completed`,`failed`,`cancelled`];function S(e){return x.includes(e)}var C=class{constraints;subagents=new Map;awaiters=new Map;constructor(e){this.constraints=e}track(e){let t=Date.now(),n={subagentId:e.subagentId,parentSessionId:e.parentSessionId,childSessionId:void 0,status:`spawning`,config:e.config,depth:e.depth,progressUpdates:new b(50),toolObservations:[],completedTurnUsage:new Map,completedTurnSuccess:new Map,toolCallIds:new Set,startTime:t,lastActivityAt:t};return this.subagents.set(e.subagentId,n),n}setChildSessionId(e,t){let n=this.subagents.get(e);n&&(n.childSessionId=t,n.lastActivityAt=Date.now())}markStarted(e){let t=this.subagents.get(e);t&&t.status===`spawning`&&this.applyStatus(t,`running`)}get(e){return this.subagents.get(e)}getByChildSessionId(e){return[...this.subagents.values()].find(t=>t.childSessionId===e)}recordTurnStarted(e,t){let n=this.getByChildSessionId(e);n===void 0||S(n.status)||(n.activeTurnId=t,n.lastActivityAt=Date.now())}recordTurnCompleted(e,t){let n=this.getByChildSessionId(e);n===void 0||S(n.status)||(n.activeTurnId===t&&(n.activeTurnId=void 0),n.lastActivityAt=Date.now())}recordToolObservation(e,t,n){let r=this.getByChildSessionId(e);if(!(r===void 0||S(r.status))){if(n!==void 0){if(r.toolCallIds.has(n))return;r.toolCallIds.add(n)}r.toolObservations.push(t),r.lastActivityAt=Date.now()}}getAllNonTerminal(){let e=[];for(let t of this.subagents.values())S(t.status)||e.push(t);return e}countActiveBySession(e){let t=0;for(let n of this.subagents.values())n.parentSessionId===e&&!S(n.status)&&t++;return t}countTotalActive(){let e=0;for(let t of this.subagents.values())S(t.status)||e++;return e}updateStatus(e,t){let n=this.subagents.get(e);n&&this.applyStatus(n,t)}applyStatus(e,t){let n=Date.now();e.status=t,e.lastActivityAt=n,S(t)&&(e.activeTurnId=void 0,e.endTime=n)}addProgress(e,t){let n=this.subagents.get(e);n&&(n.progressUpdates.push(t),n.lastActivityAt=Date.now())}setPendingRequest(e,t){let n=this.subagents.get(e);if(!n)throw new u(d.NOT_FOUND,`Subagent ${e} not found`);if(n.pendingRequest)throw new u(d.REQUEST_PENDING,`Cannot call request_input while another request is pending`);if(n.completionCandidate!==void 0)throw new u(d.INVALID_STATE,`Cannot request input while completion is pending`);n.pendingRequest=t,n.status=`waiting_input`,n.lastActivityAt=Date.now()}resolvePendingRequest(e,t){let n=this.subagents.get(e);n?.pendingRequest&&(n.pendingRequest.resolver(t),n.pendingRequest=void 0,n.lastActivityAt=Date.now(),n.status===`waiting_input`&&(n.status=`running`))}markCompleted(e,t,n,r){let i=this.subagents.get(e);if(!i)throw new u(d.NOT_FOUND,`Subagent ${e} not found`);if(S(i.status))throw new u(d.ALREADY_TERMINAL,`Subagent already in terminal state: ${i.status}`);this.applyStatus(i,`completed`),i.result=t,i.summary=n,i.completionSource=r,this.resolveAwaiters(e)}recordCompletionCandidate(e,t,n,r,i){let a=this.subagents.get(e);if(!a)throw new u(d.NOT_FOUND,`Subagent ${e} not found`);let o=a.completionCandidate;if(o!==void 0){if(o.turnId===t&&o.result===n&&o.summary===r&&o.source===i)return;throw new u(d.INVALID_STATE,`Conflicting subagent completion candidate`)}if(S(a.status))throw new u(d.ALREADY_TERMINAL,`Subagent already in terminal state: ${a.status}`);if(a.pendingRequest!==void 0)throw new u(d.INVALID_STATE,`Cannot complete while an input request is pending`);a.completionCandidate={turnId:t,result:n,summary:r,source:i},a.status=`completing`,a.lastActivityAt=Date.now()}recordCompletedTurn(e,t,n,r=!0,i){let a=this.subagents.get(e);a===void 0||S(a.status)||(a.completedTurnUsage.has(t)||(a.completedTurnUsage.set(t,n===void 0?void 0:{total:{...n.total},...n.byAgent===void 0?{}:{byAgent:Object.fromEntries(Object.entries(n.byAgent).map(([e,t])=>[e,{...t}]))}}),a.completedTurnSuccess.set(t,{success:r,...i!==void 0&&{error:i}})),a.lastActivityAt=Date.now())}finalizeCompletionIfReady(e){let t=this.subagents.get(e);if(!t)throw new u(d.NOT_FOUND,`Subagent ${e} not found`);if(S(t.status))return!1;let n=t.completionCandidate;if(n===void 0||!t.completedTurnUsage.has(n.turnId))return!1;let r=t.completedTurnSuccess.get(n.turnId);if(r?.success===!1)return this.markFailed(e,r.error??`child turn failed`),!0;let i=this.freezeUsage(t);return this.applyStatus(t,`completed`),t.result=n.result,t.summary=n.summary,t.completionSource=n.source,t.usage=i,this.resolveAwaiters(e),!0}freezeUsage(e){let t=0,n=0,r=0,i=!1;for(let a of e.completedTurnUsage.values())a!==void 0&&(i=!0,t+=a.total.inputTokens,n+=a.total.cachedInputTokens??0,r+=a.total.outputTokens);return Object.freeze({...i?{inputTokens:t,cachedInputTokens:n,outputTokens:r}:{},toolCallCount:e.toolCallIds.size})}markFailed(e,t){let n=this.subagents.get(e);!n||S(n.status)||(this.applyStatus(n,`failed`),n.error=t,this.resolveAwaiters(e))}markCancelled(e){let t=this.subagents.get(e);return!t||S(t.status)?!1:(this.applyStatus(t,`cancelled`),t.pendingRequest&&=(t.pendingRequest.resolver(null),void 0),this.resolveAwaiters(e),!0)}addAwaiter(e,t){let n=this.awaiters.get(e)??[];n.push(t),this.awaiters.set(e,n)}removeAwaiter(e,t){let n=this.awaiters.get(e);if(!n)return!1;let r=n.indexOf(t);return r===-1?!1:(n.splice(r,1),n.length===0&&this.awaiters.delete(e),!0)}resolveAwaiters(e){let t=this.subagents.get(e),n=this.awaiters.get(e);if(!n||!t)return;let r={status:t.status,result:t.result,error:t.error,completionSource:t.completionSource,usage:t.usage,toolObservations:[...t.toolObservations]};for(let e of n)e(r);this.awaiters.delete(e)}cleanup(){let e=Date.now(),t=0;for(let[n,r]of this.subagents)S(r.status)&&r.endTime&&e-r.endTime>this.constraints.stateRetentionMs&&(this.subagents.delete(n),t++);return t}sweepHung(e){if(e<=0)return 0;let t=Date.now(),n=0;for(let r of this.subagents.values())S(r.status)||r.status!==`spawning`&&r.status!==`waiting_input`&&r.status!==`hung`&&t-r.lastActivityAt>=e&&(r.status=`hung`,r.lastActivityAt=t,n++);return n}};async function w(e,t,n){let r=n?.trim();if(r)return r;let{session:i}=await e.request(s.get,{sessionId:t});return(i?.agents.find(e=>e.agentId===i.leadAgentId)??i?.agents[0])?.adapterName?.trim()}function T(e,t){let n=e.manager.get(t.subagentId);if(!n)throw Error(`Subagent not found: ${t.subagentId}`);return{status:n.status,childSessionId:n.childSessionId,pendingRequest:n.pendingRequest?{messageId:n.pendingRequest.messageId,question:n.pendingRequest.question,context:n.pendingRequest.context}:void 0,progress:n.progressUpdates.toArray(),result:n.result,summary:n.summary,error:n.error,usage:n.usage}}async function E(e,t){let{parentSessionId:n,config:r,depth:i,spawningToolCallId:a}=t,{constraints:o}=e.manager,s=Math.min(r.maxDepth??o.maxDepth,o.maxDepth);if(i>s)throw new u(d.DEPTH_EXCEEDED,`Maximum subagent depth (${s}) exceeded`);if(e.manager.countActiveBySession(n)>=o.maxConcurrentPerSession)throw new u(d.SESSION_LIMIT,`Maximum concurrent subagents per session (${o.maxConcurrentPerSession}) reached`);if(e.manager.countTotalActive()>=o.maxTotalActive)throw new u(d.GLOBAL_LIMIT,`Maximum total active subagents (${o.maxTotalActive}) reached`);let c=await w(e.bus,n,r.adapterName);if(!c)throw new u(d.ADAPTER_NOT_ALLOWED,`adapterName is required for subagent spawn when parent session has no inheritable adapter`);if(o.allowedAdapters.length>0&&!o.allowedAdapters.includes(c))throw new u(d.ADAPTER_NOT_ALLOWED,`Adapter '${c}' is not allowed`);if(r.model&&o.allowedModels.length>0&&!o.allowedModels.includes(r.model))throw new u(d.MODEL_NOT_ALLOWED,`Model '${r.model}' is not allowed`);let l={...r,adapterName:c},p=crypto.randomUUID();return e.manager.track({subagentId:p,parentSessionId:n,config:l,depth:i}),await e.bus.emit(f.spawned,{subagentId:p,parentSessionId:n,task:l.task,config:l,depth:i,...e.executionOwnerId!==void 0&&{executionOwnerId:e.executionOwnerId},...a!==void 0&&{spawningToolCallId:a}}),{subagentId:p,status:`spawning`}}async function D(e,t){let{subagentId:n,timeoutMs:r}=t,i=e.manager.get(n);if(!i)throw Error(`Subagent not found: ${n}`);if([`completed`,`failed`,`cancelled`].includes(i.status))return{status:i.status,result:i.result,error:i.error,completionSource:i.completionSource,toolObservations:[...i.toolObservations],usage:i.usage};if(i.status===`waiting_input`&&i.pendingRequest)return{status:`waiting_input`,pendingRequest:{messageId:i.pendingRequest.messageId,question:i.pendingRequest.question,context:i.pendingRequest.context}};let a=r??e.manager.constraints.defaultAwaitTimeoutMs;return new Promise(t=>{let r=!1,i,o=e=>{r||(r=!0,i&&clearTimeout(i),t({status:e.status,result:e.result,error:e.error,pendingRequest:e.pendingRequest,completionSource:e.completionSource,toolObservations:e.toolObservations,usage:e.usage}))};e.manager.addAwaiter(n,o),a>0&&(i=setTimeout(()=>{r||(r=!0,e.manager.removeAwaiter(n,o),t({status:`timeout`}))},a))})}async function O(e,t){let{subagentId:n,content:r,inResponseTo:i}=t,a=e.manager.get(n);if(!a)throw Error(`Subagent not found: ${n}`);if(a.status===`spawning`)throw new u(d.INVALID_STATE,`Cannot send to a subagent before startup completes`);if(a.completionCandidate!==void 0)throw new u(d.INVALID_STATE,`Cannot send to a subagent while completion is pending`);let o=!1;return i&&a.pendingRequest?.messageId===i&&(e.manager.resolvePendingRequest(n,r),o=!0),await e.bus.emit(f.toChild,{subagentId:n,messageId:crypto.randomUUID(),content:r,inResponseTo:i}),{sent:!0,resolvedPending:o}}async function k(e,t){let{subagentId:n,reason:r}=t,i=e.manager.markCancelled(n);return i&&await e.bus.emit(f.cancelled,{subagentId:n,reason:r??`Killed by parent`}),{killed:i}}async function A(e,t){let{subagentId:n,update:r,percentComplete:i}=t;if(!e.manager.get(n))throw Error(`Subagent not found: ${n}`);let a=i===void 0?r:`[${i}%] ${r}`;return e.manager.addProgress(n,a),await e.bus.emit(f.toParent,{subagentId:n,messageId:crypto.randomUUID(),type:`progress`,content:a}),{reported:!0}}async function j(e,t){let{subagentId:n,question:r,context:i,timeoutMs:a}=t,o=e.manager.get(n);if(!o)throw Error(`Subagent not found: ${n}`);if(o.completionCandidate!==void 0)throw new u(d.INVALID_STATE,`Cannot request input while completion is pending`);let s=crypto.randomUUID(),c=a??e.manager.constraints.defaultRequestTimeoutMs,l=!1,p,m,h=new Promise(e=>{m=e});e.manager.setPendingRequest(n,{messageId:s,question:r,context:i,resolver:e=>{l||(l=!0,p&&clearTimeout(p),m(e===null?{responded:!1,timedOut:!0}:{responded:!0,response:e,timedOut:!1}))}}),c>0&&(p=setTimeout(()=>{l||e.manager.resolvePendingRequest(n,null)},c));let g=e.bus.emit(f.toParent,{subagentId:n,messageId:s,type:`request_input`,content:r,context:i}).then(()=>({published:!0}),e=>({published:!1,error:e})),_=await Promise.race([h.then(e=>({response:e})),g]);if(`response`in _)return _.response;if(!_.published)throw e.manager.resolvePendingRequest(n,null),_.error;return h}async function M(e,t){let{sessionId:n,turnId:r,result:i,summary:a}=t,o=e.manager.getByChildSessionId(n);if(o===void 0)throw new u(d.NOT_FOUND,`No subagent owns this child session`);if(o.status===`completed`||o.status===`failed`||o.status===`cancelled`)throw new u(d.ALREADY_TERMINAL,`Subagent already in terminal state: ${o.status}`);let s=o.activeTurnId;if(s===void 0)throw new u(d.INVALID_STATE,`No active turn exists for this child session`);if(r!==void 0&&r!==s)throw new u(d.INVALID_STATE,`Completion turn does not match the active child turn`);return e.manager.recordCompletionCandidate(o.subagentId,s,i,a,`tool`),await e.onCompletionCandidate?.(o.subagentId),{completed:!0}}function N(e,t){let{parentSessionId:n}=t;return{subagents:e.manager.getAllNonTerminal().filter(e=>e.parentSessionId===n).map(e=>({subagentId:e.subagentId,task:e.config.task,status:e.status}))}}function P(e,t,n,r){return{kind:`adapter`,adapterName:e,...n!==void 0&&{providerContext:n},...t.model!==void 0&&{model:t.model},...t.reasoningEffort!==void 0&&{reasoningEffort:t.reasoningEffort},...t.systemPrompt!==void 0&&{systemPrompt:t.systemPrompt},...t.adapterConfig!==void 0&&{adapterConfig:t.adapterConfig},...r!==void 0&&{cwd:r},...t.tools!==void 0&&{allowedTools:t.tools},...t.disallowedTools!==void 0&&{disallowedTools:t.disallowedTools},...t.allowedDirectories!==void 0&&{allowedDirectories:t.allowedDirectories}}}async function F(e,t){let{subagentId:n,adapterName:r,config:i,sessionId:a,task:o,targetWorkingDirectory:c,assertAdmission:l}=t,u=i.providerContext;if(u?.state===`resolved`&&i.providerConfigId!==void 0&&i.providerConfigId!==u.providerConfigId)throw Error(`Subagent providerConfigId "${i.providerConfigId}" does not match its resolved provider context "${u.providerConfigId}".`);if(u?.state===`unresolved`&&i.providerConfigId!==void 0)throw new g(`provider-context-unresolved`,r,i.providerConfigId);let d=u??(i.providerConfigId?await _(e,{adapterName:r,providerConfigId:i.providerConfigId}):void 0);await e.request(s.agent.attachResolved,{sessionId:a,role:`lead`,initialMessage:o,source:`system`,assertInitialMessageAdmission:()=>{try{l()}catch{throw Error(`Subagent startup was cancelled before initial task admission: ${n}`)}},...i.responseSchema!==void 0&&{responseSchema:i.responseSchema},...i.harnessId!==void 0&&{harnessId:i.harnessId},agent:P(r,i,d,c)},{timeout:0})}const I={id:`system:local`,name:`Local`,description:`Default local process execution`,type:`local`,scope:`default`,enabled:!0,createdAt:Date.now(),updatedAt:Date.now()};var L=class extends Error{code;constructor(e){super(`Subagent failure finalization failed (${e}).`),this.code=e,this.name=`SubagentFailureFinalizationError`}},R=class extends h{delegationAllowSet;requestHandlerPriority;executionOwnerId;manager;pendingChildSessionClose=new Set;spawningExecutions=new Set;constructor(e=r,t=o,n=new Set,i=0,a=crypto.randomUUID()){super(e),this.delegationAllowSet=n,this.requestHandlerPriority=i,this.executionOwnerId=a,this.manager=new C(t)}grantDelegation(e,t){this.delegationAllowSet.add(`${e}:${t}`)}revokeDelegation(e,t){this.delegationAllowSet.delete(`${e}:${t}`)}onInit(){this.registerHandler(f.spawned,async e=>{e.payload.executionOwnerId!==void 0&&e.payload.executionOwnerId!==this.executionOwnerId||this.handleSpawned(e.payload).catch(e=>{console.error(`[SubagentService] handleSpawned error:`,e)})}),this.registerHandler(f.execute,async e=>{if(!this.isRemoteDelegationAllowed(e))return;let t=await this.handleExecute(e.payload);e.setResult(t)}),this.registerHandler(f.toChild,async e=>{await this.handleToChild(e.payload)}),this.registerHandler(f.completed,async e=>{await this.handleCompleted(e.payload.subagentId)}),this.registerHandler(f.cancelled,async e=>{await this.handleCancelled(e.payload.subagentId)}),this.registerHandler(i.session.closed,e=>{this.handleAdapterSessionClosed(e.payload.sessionId)}),this.registerHandler(a.complete,async e=>{await this.handleAgentComplete(e.payload)}),this.registerHandler(s.turn.completed,async e=>{await this.handleSessionTurnCompleted(e.payload)}),this.registerHandler(s.turn.started,e=>{this.handleSessionTurnStarted(e.payload)}),this.registerHandler(a.tool.completed,e=>{e.payload._import||e.payload.sessionId===void 0||e.payload.success===void 0||this.manager.recordToolObservation(e.payload.sessionId,{toolName:e.payload.toolName,outcome:e.payload.success?`success`:`failure`,...e.payload.success===!0&&e.payload.artifactResult!==void 0?{artifact:e.payload.artifactResult}:{}},e.payload.toolCallId)}),this.registerRpcHandlers(),this.wirePeriodicSweep()}wirePeriodicSweep(){let{inactivityTimeoutMs:e,sweepIntervalMs:t}=this.manager.constraints;if(t<=0)return;let n=setInterval(()=>{let t=this.manager.sweepHung(e);t>0&&console.warn(`[SubagentService] Swept ${t} hung subagent(s) due to inactivity`),this.manager.cleanup()},t);this.addCleanup(()=>clearInterval(n))}registerRpcHandlers(){let e={manager:this.manager,bus:this.bus,executionOwnerId:this.executionOwnerId,onCompletionCandidate:e=>this.finalizeSubagentIfReady(e)};this.registerHandler(f.getStatus,t=>{let n=T(e,t.payload);t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(f.spawn,async t=>{if(!this.isRemoteDelegationAllowed(t))return;let n=await E(e,c.parse(t.payload));t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(f.await,async t=>{let n=await D(e,t.payload);t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(f.send,async t=>{let n=await O(e,t.payload);t.setResult(n)}),this.registerHandler(f.kill,async t=>{let n=await k(e,t.payload);t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(f.reportProgress,async t=>{let n=await A(e,t.payload);t.setResult(n)}),this.registerHandler(f.requestInput,async t=>{let n=await j(e,t.payload);t.setResult(n)}),this.registerHandler(f.completeTask,async t=>{let n=await M(e,t.payload);t.setResult(n)}),this.registerHandler(f.listBySession,t=>{let n=N(e,t.payload);t.setResult(n)})}onDestroy(){this.pendingChildSessionClose.clear(),this.spawningExecutions.clear()}async handleSpawned(e){let{subagentId:t,parentSessionId:n,task:r,spawningToolCallId:i}=e,a=this.manager.get(t);if(!(a&&a.status!==`spawning`)&&!this.spawningExecutions.has(t)){this.spawningExecutions.add(t);try{return await this.executeSpawned(e,n,r,i)}finally{this.spawningExecutions.delete(t)}}}async executeSpawned(e,n,r,i){let{subagentId:a}=e,o=()=>this.shouldAbortSpawn(this.manager.get(a)?.status),s=l.parse({...e.config,task:r}),c=s.adapterName?.trim();if(!c)return this.failSpawn(a,n,`adapter_start`,`Subagent spawn requires a non-empty adapterName`);this.manager.get(a)||this.manager.track({subagentId:a,parentSessionId:n,config:s,depth:e.depth??1});let u,d;try{d=await this.buildExecutionTargetResolutionParams(n,s.executionTargetId);let e=await this.bus.requestOptional(t.resolve,d),r;if(e.handled)r=e.data.executionTarget;else if(d.executionTargetId!=null)throw Error(`Execution target resolver unavailable for explicit target '${d.executionTargetId}'`);else r=I;if(r.type!==`local`)return this.failSpawn(a,n,`adapter_start`,`Execution target type '${r.type}' is not yet supported for subagents`);u=d.executionTargetId??void 0}catch(e){return this.failSpawn(a,n,`adapter_start`,e)}let f;try{f=await this.createChildSessionForSpawn(a,n,s,u,d,i)}catch(e){return this.failSpawn(a,n,`session_create`,e)}if(!o())return this.attachSpawnedSubagent({subagentId:a,parentSessionId:n,adapterName:c,config:s,sessionId:f,task:r,targetWorkingDirectory:d.targetWorkingDirectory,shouldAbort:o})}async attachSpawnedSubagent(e){let{subagentId:t,parentSessionId:r,adapterName:i,config:a,sessionId:o,task:s,targetWorkingDirectory:c,shouldAbort:l}=e;try{await F(this.bus,{subagentId:t,adapterName:i,config:a,sessionId:o,task:s,targetWorkingDirectory:c,assertAdmission:()=>{if(this.shouldAbortSpawn(this.manager.get(t)?.status))throw Error(`startup cancelled`)}})}catch(e){if(l())return;let i=n(e);return this.failSpawn(t,r,i?.stage===`initial_message`?`agent_start`:`adapter_start`,e)}l()||this.manager.markStarted(t)}async createChildSessionForSpawn(e,t,n,r,i,a){let{sessionId:o}=await this.bus.request(s.create,this.buildChildSessionCreatePayload(t,n,r,i.targetWorkingDirectory,a));return this.manager.setChildSessionId(e,o),this.pendingChildSessionClose.has(e)&&await this.closeChildSession(e),o}async failSpawn(e,t,n,r){let i=r instanceof Error?r:Error(String(r));this.manager.markFailed(e,i.message);let[a,o]=await Promise.allSettled([this.manager.get(e)?.childSessionId===void 0?Promise.resolve():this.requestChildSessionClose(e),this.emitExecutionFailed(e,t,n,i)]),s=[];if(a.status===`rejected`&&s.push(new L(`child-session-close-failed`)),o.status===`rejected`&&s.push(new L(`failure-publication-failed`)),s.length>0)throw AggregateError([i,...s],`Subagent spawn failed and failure finalization also failed.`);return i.message}async buildExecutionTargetResolutionParams(t,n){if(n!==void 0)return{executionTargetId:n};let{session:r}=await this.bus.request(e.get,{sessionId:t});if(!r)throw Error(`Parent session not found: ${t}`);return{...r.executionTargetId!==void 0&&{executionTargetId:r.executionTargetId},...r.targetWorkingDirectory!==void 0&&{targetWorkingDirectory:r.targetWorkingDirectory}}}buildChildSessionCreatePayload(e,t,n,r,i){return{branchKind:`subagent`,parentSessionId:e,contextInheritance:t.contextMode===`fork`?`parent-history`:`none`,...n!==void 0&&{executionTargetId:n},...r!==void 0&&{targetWorkingDirectory:r},...i!==void 0&&{spawningToolCallId:i}}}async handleExecute(e){let t=l.parse({...e.config,task:e.task});this.manager.track({subagentId:e.subagentId,parentSessionId:e.parentSessionId,config:t,depth:e.depth});let n=await this.handleSpawned({subagentId:e.subagentId,parentSessionId:e.parentSessionId,task:e.task,config:t,depth:e.depth});return n?{success:!1,error:n}:{success:!0}}async handleToChild(e){let{subagentId:t,content:n}=e,r=this.manager.get(t);if(!r){console.warn(`[SubagentService] No subagent found: ${t}`);return}if(!r.childSessionId){console.warn(`[SubagentService] No child session for subagent: ${t}`);return}try{await this.bus.request(s.sendMessage,{sessionId:r.childSessionId,message:n,source:`system`})}catch(e){console.error(`[SubagentService] Failed to route message to child session:`,e)}}async handleCompleted(e){await this.closeChildSession(e)}async handleCancelled(e){await this.closeChildSession(e)}async closeChildSession(e){try{await this.requestChildSessionClose(e)}catch{console.error(`[SubagentService] Failed to close child session for subagent ${e}:`,new L(`child-session-close-failed`))}}async requestChildSessionClose(e){let t=this.manager.get(e);if(t){if(!t.childSessionId){this.pendingChildSessionClose.add(e);return}this.pendingChildSessionClose.delete(e),await this.bus.request(s.close,{sessionId:t.childSessionId})}}shouldAbortSpawn(e){return e===void 0||e===`completed`||e===`failed`||e===`cancelled`}handleAdapterSessionClosed(e){for(let t of this.manager.getAllNonTerminal())if(t.childSessionId===e){console.warn(`[SubagentService] Adapter session closed for subagent ${t.subagentId}: ${e}`),this.manager.markFailed(t.subagentId,`adapter-session-closed`);return}}async handleAgentComplete(e){let{sessionId:t,turnId:n,outcome:r,message:i,error:a}=e;if(!(!t||!n))for(let e of this.manager.getAllNonTerminal()){if(e.childSessionId!==t)continue;if((e.config.completion??`tool`)!==`turn`||e.status===`waiting_input`)return;let o=r??`completed`;if(o===`completed`)try{this.manager.recordCompletionCandidate(e.subagentId,n,i??``,void 0,`turn`),await this.finalizeSubagentIfReady(e.subagentId)}catch{return}else if(o===`error`)try{this.manager.recordCompletionCandidate(e.subagentId,n,a??`child turn failed`,void 0,`turn`),await this.finalizeSubagentIfReady(e.subagentId)}catch{return}return}}async handleSessionTurnCompleted(e){if(e.ingestionMarker!==`backfill`){for(let t of this.manager.getAllNonTerminal())if(t.childSessionId===e.sessionId){if(this.manager.recordTurnCompleted(e.sessionId,e.turnId),this.manager.recordCompletedTurn(t.subagentId,e.turnId,e.usage,e.success,e.error),t.completionCandidate?.turnId!==e.turnId)return;await this.finalizeSubagentIfReady(t.subagentId);return}}}handleSessionTurnStarted(e){e.ingestionMarker!==`backfill`&&this.manager.recordTurnStarted(e.sessionId,e.turnId)}async finalizeSubagentIfReady(e){if(!this.manager.finalizeCompletionIfReady(e))return;let t=this.manager.get(e);await this.bus.emit(f.completed,{subagentId:e,success:t?.status===`completed`,...t?.status===`completed`?{result:t.summary?`${t.summary}\n\n${t.result??``}`:t?.result,usage:t.usage}:{error:t?.error??`child turn failed`}})}isRemoteDelegationAllowed(e){return e.origin.local||y(e.transport?.peer,this.delegationAllowSet)}async emitExecutionFailed(e,t,n,r){let i=r instanceof Error?r.message:String(r);await this.bus.emit(f.executionFailed,{subagentId:e,parentSessionId:t,phase:n,error:i})}};const z=m(`subagent-service`);function B(e=0){return{name:z.name,displayName:`Subagent Service`,version:`0.1.0`,critical:!0,surface:`headless`,dependencies:[p(`session`)],create:t=>new R(t.bus,o,new Set,e)}}const V=B();export{R as a,L as i,B as n,C as o,V as r,y as s,z as t};
|
|
1
|
+
import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{ExecutionTargetSubjects as t}from"./services/execution-target/namespace.mjs";import{r as n}from"./attach-error-DOlUtquX.mjs";import{AdapterSubjects as r,AgentSubjects as i,DEFAULT_CONSTRAINTS as a,SessionSubjects as o,SpawnSubagentRpcRequestSchema as s,SubagentConfigSchema as c,SubagentError as l,SubagentErrorCode as u,SubagentSubjects as d,dep as f,extensionToken as p}from"@makaio/framework/contracts";import{MakaioBus as m}from"@makaio/framework/bus";import{BaseService as h}from"@makaio/framework/service-base";import{RuntimeProviderContextResolutionError as g,resolveRuntimeProviderContext as _}from"@makaio/framework/services/provider-context";function v(e,t){return`${e}:${t}`}function y(e,t){return e?.authenticated!==!0||!e.id?!1:e.kind===`workflow-execution`?!0:t.size===0?!1:t.has(v(e.kind,e.id))}var b=class{maxSize;items=[];constructor(e=50){this.maxSize=e}push(e){this.items.push(e),this.items.length>this.maxSize&&this.items.shift()}toArray(){return[...this.items]}get length(){return this.items.length}clear(){this.items=[]}};const x=[`completed`,`failed`,`cancelled`];function S(e){return x.includes(e)}var C=class{constraints;subagents=new Map;awaiters=new Map;constructor(e){this.constraints=e}track(e){let t=Date.now(),n={subagentId:e.subagentId,parentSessionId:e.parentSessionId,childSessionId:void 0,status:`spawning`,config:e.config,depth:e.depth,progressUpdates:new b(50),toolObservations:[],completedTurnUsage:new Map,completedTurnSuccess:new Map,toolCallIds:new Set,startTime:t,lastActivityAt:t};return this.subagents.set(e.subagentId,n),n}setChildSessionId(e,t){let n=this.subagents.get(e);n&&(n.childSessionId=t,n.lastActivityAt=Date.now())}markStarted(e){let t=this.subagents.get(e);t&&t.status===`spawning`&&this.applyStatus(t,`running`)}get(e){return this.subagents.get(e)}getByChildSessionId(e){return[...this.subagents.values()].find(t=>t.childSessionId===e)}recordTurnStarted(e,t){let n=this.getByChildSessionId(e);n===void 0||S(n.status)||(n.activeTurnId=t,n.lastActivityAt=Date.now())}recordTurnCompleted(e,t){let n=this.getByChildSessionId(e);n===void 0||S(n.status)||(n.activeTurnId===t&&(n.activeTurnId=void 0),n.lastActivityAt=Date.now())}recordToolObservation(e,t,n){let r=this.getByChildSessionId(e);if(!(r===void 0||S(r.status))){if(n!==void 0){if(r.toolCallIds.has(n))return;r.toolCallIds.add(n)}r.toolObservations.push(t),r.lastActivityAt=Date.now()}}getAllNonTerminal(){let e=[];for(let t of this.subagents.values())S(t.status)||e.push(t);return e}countActiveBySession(e){let t=0;for(let n of this.subagents.values())n.parentSessionId===e&&!S(n.status)&&t++;return t}countTotalActive(){let e=0;for(let t of this.subagents.values())S(t.status)||e++;return e}updateStatus(e,t){let n=this.subagents.get(e);n&&this.applyStatus(n,t)}applyStatus(e,t){let n=Date.now();e.status=t,e.lastActivityAt=n,S(t)&&(e.activeTurnId=void 0,e.endTime=n)}addProgress(e,t){let n=this.subagents.get(e);n&&(n.progressUpdates.push(t),n.lastActivityAt=Date.now())}setPendingRequest(e,t){let n=this.subagents.get(e);if(!n)throw new l(u.NOT_FOUND,`Subagent ${e} not found`);if(n.pendingRequest)throw new l(u.REQUEST_PENDING,`Cannot call request_input while another request is pending`);if(n.completionCandidate!==void 0)throw new l(u.INVALID_STATE,`Cannot request input while completion is pending`);n.pendingRequest=t,n.status=`waiting_input`,n.lastActivityAt=Date.now()}resolvePendingRequest(e,t){let n=this.subagents.get(e);n?.pendingRequest&&(n.pendingRequest.resolver(t),n.pendingRequest=void 0,n.lastActivityAt=Date.now(),n.status===`waiting_input`&&(n.status=`running`))}markCompleted(e,t,n,r){let i=this.subagents.get(e);if(!i)throw new l(u.NOT_FOUND,`Subagent ${e} not found`);if(S(i.status))throw new l(u.ALREADY_TERMINAL,`Subagent already in terminal state: ${i.status}`);this.applyStatus(i,`completed`),i.result=t,i.summary=n,i.completionSource=r,this.resolveAwaiters(e)}recordCompletionCandidate(e,t,n,r,i){let a=this.subagents.get(e);if(!a)throw new l(u.NOT_FOUND,`Subagent ${e} not found`);let o=a.completionCandidate;if(o!==void 0){if(o.turnId===t&&o.result===n&&o.summary===r&&o.source===i)return;throw new l(u.INVALID_STATE,`Conflicting subagent completion candidate`)}if(S(a.status))throw new l(u.ALREADY_TERMINAL,`Subagent already in terminal state: ${a.status}`);if(a.pendingRequest!==void 0)throw new l(u.INVALID_STATE,`Cannot complete while an input request is pending`);a.completionCandidate={turnId:t,result:n,summary:r,source:i},a.status=`completing`,a.lastActivityAt=Date.now()}recordCompletedTurn(e,t,n,r=!0,i){let a=this.subagents.get(e);a===void 0||S(a.status)||(a.completedTurnUsage.has(t)||(a.completedTurnUsage.set(t,n===void 0?void 0:{total:{...n.total},...n.byAgent===void 0?{}:{byAgent:Object.fromEntries(Object.entries(n.byAgent).map(([e,t])=>[e,{...t}]))}}),a.completedTurnSuccess.set(t,{success:r,...i!==void 0&&{error:i}})),a.lastActivityAt=Date.now())}finalizeCompletionIfReady(e){let t=this.subagents.get(e);if(!t)throw new l(u.NOT_FOUND,`Subagent ${e} not found`);if(S(t.status))return!1;let n=t.completionCandidate;if(n===void 0||!t.completedTurnUsage.has(n.turnId))return!1;let r=t.completedTurnSuccess.get(n.turnId);if(r?.success===!1)return this.markFailed(e,r.error??`child turn failed`),!0;let i=this.freezeUsage(t);return this.applyStatus(t,`completed`),t.result=n.result,t.summary=n.summary,t.completionSource=n.source,t.usage=i,this.resolveAwaiters(e),!0}freezeUsage(e){let t=0,n=0,r=0,i=!1;for(let a of e.completedTurnUsage.values())a!==void 0&&(i=!0,t+=a.total.inputTokens,n+=a.total.cachedInputTokens??0,r+=a.total.outputTokens);return Object.freeze({...i?{inputTokens:t,cachedInputTokens:n,outputTokens:r}:{},toolCallCount:e.toolCallIds.size})}markFailed(e,t){let n=this.subagents.get(e);!n||S(n.status)||(this.applyStatus(n,`failed`),n.error=t,this.resolveAwaiters(e))}markCancelled(e){let t=this.subagents.get(e);return!t||S(t.status)?!1:(this.applyStatus(t,`cancelled`),t.pendingRequest&&=(t.pendingRequest.resolver(null),void 0),this.resolveAwaiters(e),!0)}addAwaiter(e,t){let n=this.awaiters.get(e)??[];n.push(t),this.awaiters.set(e,n)}removeAwaiter(e,t){let n=this.awaiters.get(e);if(!n)return!1;let r=n.indexOf(t);return r===-1?!1:(n.splice(r,1),n.length===0&&this.awaiters.delete(e),!0)}resolveAwaiters(e){let t=this.subagents.get(e),n=this.awaiters.get(e);if(!n||!t)return;let r={status:t.status,result:t.result,error:t.error,completionSource:t.completionSource,usage:t.usage,toolObservations:[...t.toolObservations]};for(let e of n)e(r);this.awaiters.delete(e)}cleanup(){let e=Date.now(),t=0;for(let[n,r]of this.subagents)S(r.status)&&r.endTime&&e-r.endTime>this.constraints.stateRetentionMs&&(this.subagents.delete(n),t++);return t}sweepHung(e){if(e<=0)return 0;let t=Date.now(),n=0;for(let r of this.subagents.values())S(r.status)||r.status!==`spawning`&&r.status!==`waiting_input`&&r.status!==`hung`&&t-r.lastActivityAt>=e&&(r.status=`hung`,r.lastActivityAt=t,n++);return n}};async function w(e,t,n){let r=n?.trim();if(r)return r;let{session:i}=await e.request(o.get,{sessionId:t});return(i?.agents.find(e=>e.agentId===i.leadAgentId)??i?.agents[0])?.adapterName?.trim()}function T(e,t){let n=e.manager.get(t.subagentId);if(!n)throw Error(`Subagent not found: ${t.subagentId}`);return{status:n.status,childSessionId:n.childSessionId,pendingRequest:n.pendingRequest?{messageId:n.pendingRequest.messageId,question:n.pendingRequest.question,context:n.pendingRequest.context}:void 0,progress:n.progressUpdates.toArray(),result:n.result,summary:n.summary,error:n.error,usage:n.usage}}async function E(e,t){let{parentSessionId:n,config:r,depth:i,spawningToolCallId:a}=t,{constraints:o}=e.manager,s=Math.min(r.maxDepth??o.maxDepth,o.maxDepth);if(i>s)throw new l(u.DEPTH_EXCEEDED,`Maximum subagent depth (${s}) exceeded`);if(e.manager.countActiveBySession(n)>=o.maxConcurrentPerSession)throw new l(u.SESSION_LIMIT,`Maximum concurrent subagents per session (${o.maxConcurrentPerSession}) reached`);if(e.manager.countTotalActive()>=o.maxTotalActive)throw new l(u.GLOBAL_LIMIT,`Maximum total active subagents (${o.maxTotalActive}) reached`);let c=await w(e.bus,n,r.adapterName);if(!c)throw new l(u.ADAPTER_NOT_ALLOWED,`adapterName is required for subagent spawn when parent session has no inheritable adapter`);if(o.allowedAdapters.length>0&&!o.allowedAdapters.includes(c))throw new l(u.ADAPTER_NOT_ALLOWED,`Adapter '${c}' is not allowed`);if(r.model&&o.allowedModels.length>0&&!o.allowedModels.includes(r.model))throw new l(u.MODEL_NOT_ALLOWED,`Model '${r.model}' is not allowed`);let f={...r,adapterName:c},p=crypto.randomUUID();return e.manager.track({subagentId:p,parentSessionId:n,config:f,depth:i}),await e.bus.emit(d.spawned,{subagentId:p,parentSessionId:n,task:f.task,config:f,depth:i,...e.executionOwnerId!==void 0&&{executionOwnerId:e.executionOwnerId},...a!==void 0&&{spawningToolCallId:a}}),{subagentId:p,status:`spawning`}}async function D(e,t){let{subagentId:n,timeoutMs:r}=t,i=e.manager.get(n);if(!i)throw Error(`Subagent not found: ${n}`);if([`completed`,`failed`,`cancelled`].includes(i.status))return{status:i.status,result:i.result,error:i.error,completionSource:i.completionSource,toolObservations:[...i.toolObservations],usage:i.usage};if(i.status===`waiting_input`&&i.pendingRequest)return{status:`waiting_input`,pendingRequest:{messageId:i.pendingRequest.messageId,question:i.pendingRequest.question,context:i.pendingRequest.context}};let a=r??e.manager.constraints.defaultAwaitTimeoutMs;return new Promise(t=>{let r=!1,i,o=e=>{r||(r=!0,i&&clearTimeout(i),t({status:e.status,result:e.result,error:e.error,pendingRequest:e.pendingRequest,completionSource:e.completionSource,toolObservations:e.toolObservations,usage:e.usage}))};e.manager.addAwaiter(n,o),a>0&&(i=setTimeout(()=>{r||(r=!0,e.manager.removeAwaiter(n,o),t({status:`timeout`}))},a))})}async function O(e,t){let{subagentId:n,content:r,inResponseTo:i}=t,a=e.manager.get(n);if(!a)throw Error(`Subagent not found: ${n}`);if(a.status===`spawning`)throw new l(u.INVALID_STATE,`Cannot send to a subagent before startup completes`);if(a.completionCandidate!==void 0)throw new l(u.INVALID_STATE,`Cannot send to a subagent while completion is pending`);let o=!1;return i&&a.pendingRequest?.messageId===i&&(e.manager.resolvePendingRequest(n,r),o=!0),await e.bus.emit(d.toChild,{subagentId:n,messageId:crypto.randomUUID(),content:r,inResponseTo:i}),{sent:!0,resolvedPending:o}}async function k(e,t){let{subagentId:n,reason:r}=t,i=e.manager.markCancelled(n);return i&&await e.bus.emit(d.cancelled,{subagentId:n,reason:r??`Killed by parent`}),{killed:i}}async function A(e,t){let{subagentId:n,update:r,percentComplete:i}=t;if(!e.manager.get(n))throw Error(`Subagent not found: ${n}`);let a=i===void 0?r:`[${i}%] ${r}`;return e.manager.addProgress(n,a),await e.bus.emit(d.toParent,{subagentId:n,messageId:crypto.randomUUID(),type:`progress`,content:a}),{reported:!0}}async function j(e,t){let{subagentId:n,question:r,context:i,timeoutMs:a}=t,o=e.manager.get(n);if(!o)throw Error(`Subagent not found: ${n}`);if(o.completionCandidate!==void 0)throw new l(u.INVALID_STATE,`Cannot request input while completion is pending`);let s=crypto.randomUUID(),c=a??e.manager.constraints.defaultRequestTimeoutMs,f=!1,p,m,h=new Promise(e=>{m=e});e.manager.setPendingRequest(n,{messageId:s,question:r,context:i,resolver:e=>{f||(f=!0,p&&clearTimeout(p),m(e===null?{responded:!1,timedOut:!0}:{responded:!0,response:e,timedOut:!1}))}}),c>0&&(p=setTimeout(()=>{f||e.manager.resolvePendingRequest(n,null)},c));let g=e.bus.emit(d.toParent,{subagentId:n,messageId:s,type:`request_input`,content:r,context:i}).then(()=>({published:!0}),e=>({published:!1,error:e})),_=await Promise.race([h.then(e=>({response:e})),g]);if(`response`in _)return _.response;if(!_.published)throw e.manager.resolvePendingRequest(n,null),_.error;return h}async function M(e,t){let{sessionId:n,turnId:r,result:i,summary:a}=t,o=e.manager.getByChildSessionId(n);if(o===void 0)throw new l(u.NOT_FOUND,`No subagent owns this child session`);if(o.status===`completed`||o.status===`failed`||o.status===`cancelled`)throw new l(u.ALREADY_TERMINAL,`Subagent already in terminal state: ${o.status}`);let s=o.activeTurnId;if(s===void 0)throw new l(u.INVALID_STATE,`No active turn exists for this child session`);if(r!==void 0&&r!==s)throw new l(u.INVALID_STATE,`Completion turn does not match the active child turn`);return e.manager.recordCompletionCandidate(o.subagentId,s,i,a,`tool`),await e.onCompletionCandidate?.(o.subagentId),{completed:!0}}function N(e,t){let{parentSessionId:n}=t;return{subagents:e.manager.getAllNonTerminal().filter(e=>e.parentSessionId===n).map(e=>({subagentId:e.subagentId,task:e.config.task,status:e.status}))}}function P(e,t,n,r){return{kind:`adapter`,adapterName:e,...n!==void 0&&{providerContext:n},...t.model!==void 0&&{model:t.model},...t.reasoningEffort!==void 0&&{reasoningEffort:t.reasoningEffort},...t.systemPrompt!==void 0&&{systemPrompt:t.systemPrompt},...t.adapterConfig!==void 0&&{adapterConfig:t.adapterConfig},...r!==void 0&&{cwd:r},...t.tools!==void 0&&{allowedTools:t.tools},...t.disallowedTools!==void 0&&{disallowedTools:t.disallowedTools},...t.allowedDirectories!==void 0&&{allowedDirectories:t.allowedDirectories}}}async function F(e,t){let{subagentId:n,adapterName:r,config:i,sessionId:a,task:s,targetWorkingDirectory:c,assertAdmission:l}=t,u=i.providerContext;if(u?.state===`resolved`&&i.providerConfigId!==void 0&&i.providerConfigId!==u.providerConfigId)throw Error(`Subagent providerConfigId "${i.providerConfigId}" does not match its resolved provider context "${u.providerConfigId}".`);if(u?.state===`unresolved`&&i.providerConfigId!==void 0)throw new g(`provider-context-unresolved`,r,i.providerConfigId);let d=u??(i.providerConfigId?await _(e,{adapterName:r,providerConfigId:i.providerConfigId}):void 0);await e.request(o.agent.attachResolved,{sessionId:a,role:`lead`,initialMessage:s,source:`system`,assertInitialMessageAdmission:()=>{try{l()}catch{throw Error(`Subagent startup was cancelled before initial task admission: ${n}`)}},...i.responseSchema!==void 0&&{responseSchema:i.responseSchema},...i.harnessId!==void 0&&{harnessId:i.harnessId},agent:P(r,i,d,c)},{timeout:0})}const I={id:`system:local`,name:`Local`,description:`Default local process execution`,type:`local`,scope:`default`,enabled:!0,createdAt:Date.now(),updatedAt:Date.now()};var L=class extends Error{code;constructor(e){super(`Subagent failure finalization failed (${e}).`),this.code=e,this.name=`SubagentFailureFinalizationError`}},R=class extends h{delegationAllowSet;requestHandlerPriority;executionOwnerId;manager;pendingChildSessionClose=new Set;spawningExecutions=new Set;constructor(e=m,t=a,n=new Set,r=0,i=crypto.randomUUID()){super(e),this.delegationAllowSet=n,this.requestHandlerPriority=r,this.executionOwnerId=i,this.manager=new C(t)}grantDelegation(e,t){this.delegationAllowSet.add(`${e}:${t}`)}revokeDelegation(e,t){this.delegationAllowSet.delete(`${e}:${t}`)}onInit(){this.registerHandler(d.spawned,async e=>{e.payload.executionOwnerId!==void 0&&e.payload.executionOwnerId!==this.executionOwnerId||this.handleSpawned(e.payload).catch(e=>{console.error(`[SubagentService] handleSpawned error:`,e)})}),this.registerHandler(d.execute,async e=>{if(!this.isRemoteDelegationAllowed(e))return;let t=await this.handleExecute(e.payload);e.setResult(t)}),this.registerHandler(d.toChild,async e=>{await this.handleToChild(e.payload)}),this.registerHandler(d.completed,async e=>{await this.handleCompleted(e.payload.subagentId)}),this.registerHandler(d.cancelled,async e=>{await this.handleCancelled(e.payload.subagentId)}),this.registerHandler(r.session.closed,e=>{this.handleAdapterSessionClosed(e.payload.sessionId)}),this.registerHandler(i.complete,async e=>{await this.handleAgentComplete(e.payload)}),this.registerHandler(o.turn.completed,async e=>{await this.handleSessionTurnCompleted(e.payload)}),this.registerHandler(o.turn.started,e=>{this.handleSessionTurnStarted(e.payload)}),this.registerHandler(i.tool.completed,e=>{e.payload._import||e.payload.sessionId===void 0||e.payload.success===void 0||this.manager.recordToolObservation(e.payload.sessionId,{toolName:e.payload.toolName,outcome:e.payload.success?`success`:`failure`,...e.payload.success===!0&&e.payload.artifactResult!==void 0?{artifact:e.payload.artifactResult}:{}},e.payload.toolCallId)}),this.registerRpcHandlers(),this.wirePeriodicSweep()}wirePeriodicSweep(){let{inactivityTimeoutMs:e,sweepIntervalMs:t}=this.manager.constraints;if(t<=0)return;let n=setInterval(()=>{let t=this.manager.sweepHung(e);t>0&&console.warn(`[SubagentService] Swept ${t} hung subagent(s) due to inactivity`),this.manager.cleanup()},t);this.addCleanup(()=>clearInterval(n))}registerRpcHandlers(){let e={manager:this.manager,bus:this.bus,executionOwnerId:this.executionOwnerId,onCompletionCandidate:e=>this.finalizeSubagentIfReady(e)};this.registerHandler(d.getStatus,t=>{let n=T(e,t.payload);t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(d.spawn,async t=>{if(!this.isRemoteDelegationAllowed(t))return;let n=await E(e,s.parse(t.payload));t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(d.await,async t=>{let n=await D(e,t.payload);t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(d.send,async t=>{let n=await O(e,t.payload);t.setResult(n)}),this.registerHandler(d.kill,async t=>{let n=await k(e,t.payload);t.setResult(n)},{priority:this.requestHandlerPriority}),this.registerHandler(d.reportProgress,async t=>{let n=await A(e,t.payload);t.setResult(n)}),this.registerHandler(d.requestInput,async t=>{let n=await j(e,t.payload);t.setResult(n)}),this.registerHandler(d.completeTask,async t=>{let n=await M(e,t.payload);t.setResult(n)}),this.registerHandler(d.listBySession,t=>{let n=N(e,t.payload);t.setResult(n)})}onDestroy(){this.pendingChildSessionClose.clear(),this.spawningExecutions.clear()}async handleSpawned(e){let{subagentId:t,parentSessionId:n,task:r,spawningToolCallId:i}=e,a=this.manager.get(t);if(!(a&&a.status!==`spawning`)&&!this.spawningExecutions.has(t)){this.spawningExecutions.add(t);try{return await this.executeSpawned(e,n,r,i)}finally{this.spawningExecutions.delete(t)}}}async executeSpawned(e,n,r,i){let{subagentId:a}=e,o=()=>this.shouldAbortSpawn(this.manager.get(a)?.status),s=c.parse({...e.config,task:r}),l=s.adapterName?.trim();if(!l)return this.failSpawn(a,n,`adapter_start`,`Subagent spawn requires a non-empty adapterName`);this.manager.get(a)||this.manager.track({subagentId:a,parentSessionId:n,config:s,depth:e.depth??1});let u,d;try{d=await this.buildExecutionTargetResolutionParams(n,s.executionTargetId);let e=await this.bus.requestOptional(t.resolve,d),r;if(e.handled)r=e.data.executionTarget;else if(d.executionTargetId!=null)throw Error(`Execution target resolver unavailable for explicit target '${d.executionTargetId}'`);else r=I;if(r.type!==`local`)return this.failSpawn(a,n,`adapter_start`,`Execution target type '${r.type}' is not yet supported for subagents`);u=d.executionTargetId??void 0}catch(e){return this.failSpawn(a,n,`adapter_start`,e)}let f;try{f=await this.createChildSessionForSpawn(a,n,s,u,d,i)}catch(e){return this.failSpawn(a,n,`session_create`,e)}if(!o())return this.attachSpawnedSubagent({subagentId:a,parentSessionId:n,adapterName:l,config:s,sessionId:f,task:r,targetWorkingDirectory:d.targetWorkingDirectory,shouldAbort:o})}async attachSpawnedSubagent(e){let{subagentId:t,parentSessionId:r,adapterName:i,config:a,sessionId:o,task:s,targetWorkingDirectory:c,shouldAbort:l}=e;try{await F(this.bus,{subagentId:t,adapterName:i,config:a,sessionId:o,task:s,targetWorkingDirectory:c,assertAdmission:()=>{if(this.shouldAbortSpawn(this.manager.get(t)?.status))throw Error(`startup cancelled`)}})}catch(e){if(l())return;let i=n(e);return this.failSpawn(t,r,i?.stage===`initial_message`?`agent_start`:`adapter_start`,e)}l()||this.manager.markStarted(t)}async createChildSessionForSpawn(e,t,n,r,i,a){let{sessionId:s}=await this.bus.request(o.create,this.buildChildSessionCreatePayload(t,n,r,i.targetWorkingDirectory,a));return this.manager.setChildSessionId(e,s),this.pendingChildSessionClose.has(e)&&await this.closeChildSession(e),s}async failSpawn(e,t,n,r){let i=r instanceof Error?r:Error(String(r));this.manager.markFailed(e,i.message);let[a,o]=await Promise.allSettled([this.manager.get(e)?.childSessionId===void 0?Promise.resolve():this.requestChildSessionClose(e),this.emitExecutionFailed(e,t,n,i)]),s=[];if(a.status===`rejected`&&s.push(new L(`child-session-close-failed`)),o.status===`rejected`&&s.push(new L(`failure-publication-failed`)),s.length>0)throw AggregateError([i,...s],`Subagent spawn failed and failure finalization also failed.`);return i.message}async buildExecutionTargetResolutionParams(t,n){if(n!==void 0)return{executionTargetId:n};let{session:r}=await this.bus.request(e.get,{sessionId:t});if(!r)throw Error(`Parent session not found: ${t}`);return{...r.executionTargetId!==void 0&&{executionTargetId:r.executionTargetId},...r.targetWorkingDirectory!==void 0&&{targetWorkingDirectory:r.targetWorkingDirectory}}}buildChildSessionCreatePayload(e,t,n,r,i){return{branchKind:`subagent`,parentSessionId:e,contextInheritance:t.contextMode===`fork`?`parent-history`:`none`,...n!==void 0&&{executionTargetId:n},...r!==void 0&&{targetWorkingDirectory:r},...i!==void 0&&{spawningToolCallId:i}}}async handleExecute(e){let t=c.parse({...e.config,task:e.task});this.manager.track({subagentId:e.subagentId,parentSessionId:e.parentSessionId,config:t,depth:e.depth});let n=await this.handleSpawned({subagentId:e.subagentId,parentSessionId:e.parentSessionId,task:e.task,config:t,depth:e.depth});return n?{success:!1,error:n}:{success:!0}}async handleToChild(e){let{subagentId:t,content:n}=e,r=this.manager.get(t);if(!r){console.warn(`[SubagentService] No subagent found: ${t}`);return}if(!r.childSessionId){console.warn(`[SubagentService] No child session for subagent: ${t}`);return}try{await this.bus.request(o.sendMessage,{sessionId:r.childSessionId,message:n,source:`system`})}catch(e){console.error(`[SubagentService] Failed to route message to child session:`,e)}}async handleCompleted(e){await this.closeChildSession(e)}async handleCancelled(e){await this.closeChildSession(e)}async closeChildSession(e){try{await this.requestChildSessionClose(e)}catch{console.error(`[SubagentService] Failed to close child session for subagent ${e}:`,new L(`child-session-close-failed`))}}async requestChildSessionClose(e){let t=this.manager.get(e);if(t){if(!t.childSessionId){this.pendingChildSessionClose.add(e);return}this.pendingChildSessionClose.delete(e),await this.bus.request(o.close,{sessionId:t.childSessionId})}}shouldAbortSpawn(e){return e===void 0||e===`completed`||e===`failed`||e===`cancelled`}handleAdapterSessionClosed(e){for(let t of this.manager.getAllNonTerminal())if(t.childSessionId===e){console.warn(`[SubagentService] Adapter session closed for subagent ${t.subagentId}: ${e}`),this.manager.markFailed(t.subagentId,`adapter-session-closed`);return}}async handleAgentComplete(e){let{sessionId:t,turnId:n,outcome:r,message:i,error:a}=e;if(!(!t||!n))for(let e of this.manager.getAllNonTerminal()){if(e.childSessionId!==t)continue;if((e.config.completion??`tool`)!==`turn`||e.status===`waiting_input`)return;let o=r??`completed`;if(o===`completed`)try{this.manager.recordCompletionCandidate(e.subagentId,n,i??``,void 0,`turn`),await this.finalizeSubagentIfReady(e.subagentId)}catch{return}else if(o===`error`)try{this.manager.recordCompletionCandidate(e.subagentId,n,a??`child turn failed`,void 0,`turn`),await this.finalizeSubagentIfReady(e.subagentId)}catch{return}return}}async handleSessionTurnCompleted(e){if(e.ingestionMarker!==`backfill`){for(let t of this.manager.getAllNonTerminal())if(t.childSessionId===e.sessionId){if(this.manager.recordTurnCompleted(e.sessionId,e.turnId),this.manager.recordCompletedTurn(t.subagentId,e.turnId,e.usage,e.success,e.error),t.completionCandidate?.turnId!==e.turnId)return;await this.finalizeSubagentIfReady(t.subagentId);return}}}handleSessionTurnStarted(e){e.ingestionMarker!==`backfill`&&this.manager.recordTurnStarted(e.sessionId,e.turnId)}async finalizeSubagentIfReady(e){if(!this.manager.finalizeCompletionIfReady(e))return;let t=this.manager.get(e);await this.bus.emit(d.completed,{subagentId:e,success:t?.status===`completed`,...t?.status===`completed`?{result:t.summary?`${t.summary}\n\n${t.result??``}`:t?.result,usage:t.usage}:{error:t?.error??`child turn failed`}})}isRemoteDelegationAllowed(e){return e.origin.local||y(e.transport?.peer,this.delegationAllowSet)}async emitExecutionFailed(e,t,n,r){let i=r instanceof Error?r.message:String(r);await this.bus.emit(d.executionFailed,{subagentId:e,parentSessionId:t,phase:n,error:i})}};const z=p(`subagent-service`);function B(e=0){return{name:z.name,displayName:`Subagent Service`,version:`0.1.0`,critical:!0,surface:`headless`,dependencies:[f(`session`)],create:t=>new R(t.bus,a,new Set,e)}}const V=B();export{R as a,L as i,B as n,C as o,V as r,y as s,z as t};
|