@makaio/framework 1.0.0-dev-1781117225170 → 1.0.0-dev-1781354548379
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/README.md +29 -0
- package/dist/.makaio-build.json +2 -2
- package/dist/adapter-UpcpZDOv.mjs +1 -0
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/config/index.mjs +1 -1
- package/dist/adapters/index.d.mts +13 -5
- package/dist/adapters/index.mjs +2 -2
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +1 -1
- package/dist/bus/index.mjs +1 -1
- package/dist/client-BJVDImPV.d.mts +175 -0
- package/dist/clients/index.d.mts +101 -1
- package/dist/clients/index.mjs +2 -2
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/common/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +1 -1
- package/dist/contracts/extension/index.d.mts +4 -4
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +786 -108
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/{definition-Cp-5xJp_.d.mts → definition-DqJOg6Lv.d.mts} +1 -1
- package/dist/{detached-extension-handle-oXbjv1tA.mjs → detached-extension-handle-Diiwgm13.mjs} +1 -1
- package/dist/drizzle/0001_messages_content_tsv.na.md +18 -0
- package/dist/drizzle/0012_legal_kate_bishop.sql +3 -0
- package/dist/drizzle/0013_eager_rhodey.sql +56 -0
- package/dist/drizzle/0014_fancy_ultimo.sql +1 -0
- package/dist/drizzle/0015_m_mqbh8q5b.sql +1 -0
- package/dist/drizzle/0016_m_mqbmq8h7.sql +1 -0
- package/dist/drizzle/0017_m_mqbnf924.sql +1 -0
- package/dist/drizzle/meta/0012_snapshot.json +2934 -0
- package/dist/drizzle/meta/0013_snapshot.json +2954 -0
- package/dist/drizzle/meta/0014_snapshot.json +2959 -0
- package/dist/drizzle/meta/0015_snapshot.json +2966 -0
- package/dist/drizzle/meta/0016_snapshot.json +2973 -0
- package/dist/drizzle/meta/0017_snapshot.json +2980 -0
- package/dist/drizzle/meta/_journal.json +42 -0
- package/dist/drizzle-wjquQK2m.mjs +1 -0
- package/dist/extension-DfNcE0zm.mjs +1 -0
- package/dist/extension-ZBN4BGre.mjs +1 -0
- package/dist/{filesystem-service-CBJT7A5w.mjs → filesystem-service-BjfrUmGS.mjs} +1 -1
- package/dist/{globby-C0lgTOUl.mjs → globby-BIH65cbN.mjs} +1 -1
- package/dist/handler-DqpiV9eA.mjs +1 -0
- package/dist/handlers-BAB4fQNH.mjs +41 -0
- package/dist/{index-uQl_1wQO.d.mts → index-BAhJKQLX.d.mts} +8 -8
- package/dist/{index-i7o6FtS0.d.mts → index-BDRKAxIV.d.mts} +129 -2
- package/dist/{index-CXfWW8cP.d.mts → index-BHAOu6Hs.d.mts} +20 -20
- package/dist/{index-t9Vt4Jbb.d.mts → index-BHzgDuRE.d.mts} +20 -3
- package/dist/{index-SFkbbDxs.d.mts → index-BYkOUd0x.d.mts} +1 -1
- package/dist/{index-CmGvjpUG.d.mts → index-BheaEhyI.d.mts} +6 -6
- package/dist/{index-Dsu1tPHm.d.mts → index-Bibt5jAX.d.mts} +8 -8
- package/dist/{index-Bw8SkcWG.d.mts → index-Bw_zL7Rs.d.mts} +1 -1
- package/dist/{index-ClgVA8Rz.d.mts → index-C3zfJg6s.d.mts} +6 -6
- package/dist/{index-v2kRZnfw2.d.mts → index-CH5U3zSA2.d.mts} +20 -10
- package/dist/{index-hWzUQtDn.d.mts → index-CTn_Xi-p.d.mts} +92 -19
- package/dist/{index-BY-fz0Jy.d.mts → index-DPIdX6kb.d.mts} +358 -110
- package/dist/{index-kLBWooVu.d.mts → index-Da4ABgRq.d.mts} +12 -12
- package/dist/{index-C1uZLARQ.d.mts → index-DrGLAuZc.d.mts} +1409 -72
- package/dist/{index-CT-zFurA.d.mts → index-Drz_a7kW.d.mts} +1 -1
- package/dist/{index-BELri1Hy.d.mts → index-IekAD8Gp.d.mts} +8 -8
- package/dist/{index-C_jIVT40.d.mts → index-fVgKVvta.d.mts} +1 -1
- package/dist/{index-BFaeVdsn2.d.mts → index-zgm2j9V92.d.mts} +44 -2
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/register.d.mts +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/observability/index.d.mts +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/{lib-zuQKc8ym.mjs → lib-Cq5R6Tx9.mjs} +1 -1
- package/dist/{lib-IkUYa2Qs.mjs → lib-nlcl5kRW.mjs} +1 -1
- package/dist/{load-extensions-DE8qDIqi.d.mts → load-extensions-D9nbDIiW.d.mts} +1 -1
- package/dist/{load-extensions-CwxilDj1.mjs → load-extensions-wELQ4BBN.mjs} +1 -1
- package/dist/mcp-http-server/index.d.mts +132 -19
- package/dist/mcp-http-server/index.mjs +2 -2
- package/dist/{namespace-Dik_dNeE.d.mts → namespace--s0d86h-.d.mts} +144 -0
- package/dist/{namespace-ffepZB8Y.d.mts → namespace-B73Sxj5L.d.mts} +6 -6
- package/dist/{namespace-CZPu_jvy.d.mts → namespace-Boe6l5n9.d.mts} +82 -46
- package/dist/{namespace-Da_dHfdm.d.mts → namespace-BxxBhcV_.d.mts} +2 -2
- package/dist/namespace-Dfq6MDN9.mjs +1 -0
- package/dist/{namespace-DvHoeMUV.d.mts → namespace-aJJfBJU5.d.mts} +173 -3
- 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-FnWrPS09.mjs → orchestrator-shared-BKFXaKPL.mjs} +1 -1
- package/dist/{package-B2HkKyRz.d.mts → package--RZnpN2J.d.mts} +2 -3
- package/dist/package-BzJvtM5O.mjs +1 -0
- package/dist/package-DzN_jdqd.mjs +1 -0
- package/dist/package.json +1 -1
- package/dist/primitive-runtime-CNC_bSac.mjs +1 -0
- package/dist/registry-RG-bkw3c.mjs +146 -0
- 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/bus/runtime/namespace.d.mts +8 -8
- package/dist/runtime-node/bus/runtime/schemas.d.mts +11 -4
- package/dist/runtime-node/bus/runtime/schemas.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 +77 -38
- package/dist/runtime-node/index.mjs +26 -53
- 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-C3TgjrsV.mjs +1 -0
- package/dist/schema-CzhOc7TV.mjs +1 -0
- package/dist/{schema-CfuF2cXW.d.mts → schema-DGMLvVoQ.d.mts} +237 -11
- package/dist/schemas-CuKayWhA.mjs +1 -0
- package/dist/{schemas-SPI-Y87l2.d.mts → schemas-kVcJMjjn2.d.mts} +6 -6
- package/dist/{schemas-BiMxSTUx.d.mts → schemas-t1VR6_b_.d.mts} +3 -3
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- 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 +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +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/capability/index.d.mts +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/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/schemas.d.mts +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/harness/index.d.mts +31 -20
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/harness/storage/schema.d.mts +60 -16
- package/dist/services/harness/storage/schema.mjs +1 -1
- package/dist/services/index.d.mts +166 -69
- 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 +9 -15
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/model-registry/index.d.mts +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/session/handlers/index.d.mts +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +10 -10
- 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 +2 -2
- package/dist/services/session/storage/schema.mjs +1 -1
- package/dist/services/session/testing/index.d.mts +18 -2
- package/dist/services/session/testing/index.mjs +54 -3
- 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/settings/index.d.mts +3 -3
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/namespace.d.mts +6 -6
- 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/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/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/turn/schemas.d.mts +72 -0
- package/dist/services/turn/schemas.mjs +1 -1
- package/dist/{session-C1Cami7U.mjs → session-BwX5_k47.mjs} +1 -1
- package/dist/session-P4nX60Xx.mjs +39 -0
- package/dist/{src-DI5TcYUW.mjs → src-CBG3IHUl.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +2 -78
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/columns/postgres.d.mts +88 -0
- package/dist/storage/drizzle/columns/postgres.mjs +1 -0
- package/dist/storage/drizzle/columns/sqlite.d.mts +81 -0
- package/dist/storage/drizzle/columns/sqlite.mjs +1 -0
- package/dist/storage/drizzle/index.d.mts +976 -23
- 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/drizzle-harness.d.mts +52 -6
- package/dist/testing/drizzle-harness.mjs +1 -1
- package/dist/testing/index.d.mts +34 -2
- package/dist/testing/index.mjs +1 -1
- package/dist/{tool-approval-service-BgNcJvKx.mjs → tool-approval-service-DNHV5x0M.mjs} +1 -1
- package/dist/tools-CQImrHAp.mjs +1 -0
- package/dist/{types-CZHV05Lu.d.mts → types-BpuLMR2m.d.mts} +616 -433
- package/dist/{types-C5Uy3WEy.d.mts → types-D0fPFh-D.d.mts} +1 -1
- package/dist/{types-0u6hpELc.d.mts → types-D6jnDjP2.d.mts} +18 -5
- package/dist/ui-components/index.d.mts +36 -37
- package/dist/ui-kernel/index.d.mts +1 -1
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/ui-views/index.d.mts +2 -2
- package/dist/workflow-engine/index.d.mts +539 -110
- 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/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-worker-hDaQzTBl.mjs → workflow-worker-CK9Sqj7D.mjs} +1 -1
- package/package.json +49 -1
- package/dist/adapter-Dt2FDMs4.mjs +0 -1
- package/dist/drizzle-DpjZFY_j.mjs +0 -1
- package/dist/extension--5Q190u_.mjs +0 -1
- package/dist/extension-DFIZ3FCJ.mjs +0 -1
- package/dist/handlers-Bev7-xjL.mjs +0 -41
- package/dist/namespace-CDiM5Bcr.mjs +0 -1
- package/dist/namespace-h0HIuqx0.mjs +0 -1
- package/dist/package-C9wOiMK9.mjs +0 -1
- package/dist/package-OE9dMQsq.mjs +0 -1
- package/dist/primitive-runtime-1Z3JbRUj.mjs +0 -1
- package/dist/schema-DCJyzRHe.mjs +0 -1
- package/dist/schema-DOnJmAPw.mjs +0 -1
- package/dist/schemas-CSUwpaNm.mjs +0 -1
- package/dist/session-BnfsJoZi.mjs +0 -134
- package/dist/tools-B8d8Iqqx.mjs +0 -1
- package/dist/types-yTKQTAok.d.mts +0 -31
- /package/dist/{ajv-0JG5NFEd.mjs → ajv-BA2z5ztb.mjs} +0 -0
- /package/dist/{await-trigger-CHuOd5co.mjs → await-trigger-DREnXCEJ.mjs} +0 -0
- /package/dist/{base-orchestrator-D-S9v5VY.d.mts → base-orchestrator-M5mAB5-w.d.mts} +0 -0
- /package/dist/{cleanEnvForAdapter-BlpmyXYk.mjs → cleanEnvForAdapter-vZfPGi0X.mjs} +0 -0
- /package/dist/{clients-namespace-E97p_GKF.d.mts → clients-namespace-SFk7OTop.d.mts} +0 -0
- /package/dist/{config-namespace-R_34Wfps.d.mts → config-namespace-BzAvE2nY.d.mts} +0 -0
- /package/dist/{create-static-mount-B9Szo_7y.mjs → create-static-mount-BB1MIQ9J.mjs} +0 -0
- /package/dist/{cross-spawn-CTptpCy4.mjs → cross-spawn-BL6EvJBv.mjs} +0 -0
- /package/dist/{cursor-storage-YikwAZR5.mjs → cursor-storage-CmKjSvKY.mjs} +0 -0
- /package/dist/{definition-CYzWS2eR.d.mts → definition-BSghHJpQ.d.mts} +0 -0
- /package/dist/{definition-CvOuzWNT.d.mts → definition-q6iLw11H.d.mts} +0 -0
- /package/dist/{descriptor-to-package-9nrAH_D5.mjs → descriptor-to-package-CY8oc2gl.mjs} +0 -0
- /package/dist/{esm-CglYG5aA.mjs → esm-CQVFKEW5.mjs} +0 -0
- /package/dist/{extension-discovery-BD1-oNU_.d.mts → extension-discovery-CkV_VRdJ.d.mts} +0 -0
- /package/dist/{filesystem-service-BcwRp4k1.d.mts → filesystem-service-Ddngll0j.d.mts} +0 -0
- /package/dist/{index-DJQew2k-.d.mts → index-9IDJUJ4X.d.mts} +0 -0
- /package/dist/{index-CNYPKkyH.d.mts → index-BBvcP-P0.d.mts} +0 -0
- /package/dist/{index-DfUBcVtG.d.mts → index-BCKRUuI2.d.mts} +0 -0
- /package/dist/{index-Dn9Uum3F.d.mts → index-BMpRB6iE.d.mts} +0 -0
- /package/dist/{index-CdNDnxXR.d.mts → index-BbCjtc3h.d.mts} +0 -0
- /package/dist/{index-B6RGNugn.d.mts → index-BnQSPC6c.d.mts} +0 -0
- /package/dist/{index-DUPZKsd3.d.mts → index-BpXX9WZJ.d.mts} +0 -0
- /package/dist/{index-DUhXk_q6.d.mts → index-BpniJgxu.d.mts} +0 -0
- /package/dist/{index-ChG8ZUNP.d.mts → index-Bsp0O_sI.d.mts} +0 -0
- /package/dist/{index-CF7dnqQj.d.mts → index-Buo9H8RK.d.mts} +0 -0
- /package/dist/{index-9KnLzPYu.d.mts → index-BxFA1XcP.d.mts} +0 -0
- /package/dist/{index-AZ4iLe7O2.d.mts → index-C33Tq1ei2.d.mts} +0 -0
- /package/dist/{index--0CnhN0g.d.mts → index-C6BhKRnH.d.mts} +0 -0
- /package/dist/{index-BV8rSmDZ.d.mts → index-CDU_s69P.d.mts} +0 -0
- /package/dist/{index-BDlpFEsp2.d.mts → index-CGJjA-hR2.d.mts} +0 -0
- /package/dist/{index-DNGUXQGC.d.mts → index-Cz9JMjZK.d.mts} +0 -0
- /package/dist/{index-C-YBGCCG.d.mts → index-D0SUjZmU.d.mts} +0 -0
- /package/dist/{index-yNb7G73-.d.mts → index-D6Iyvz9T.d.mts} +0 -0
- /package/dist/{index-ziQTLYUO.d.mts → index-DOfq0qqv.d.mts} +0 -0
- /package/dist/{index-BYxgW2i0.d.mts → index-DSV1aFgK.d.mts} +0 -0
- /package/dist/{index-Dbwm5Y-Q.d.mts → index-Dsq2zKvu.d.mts} +0 -0
- /package/dist/{jsonl-transport-DBHQgcIm.mjs → jsonl-transport-C21tpVfe.mjs} +0 -0
- /package/dist/{lib-CaOdTS9F.mjs → lib-CNOQJtgs.mjs} +0 -0
- /package/dist/{namespace-DnZ4rS6T2.d.mts → namespace-B60mn8J-2.d.mts} +0 -0
- /package/dist/{namespace-DfYutvMT.d.mts → namespace-BBVtD1gu.d.mts} +0 -0
- /package/dist/{namespace-BaJJxBsI.d.mts → namespace-CHMszppN.d.mts} +0 -0
- /package/dist/{namespace-uGw5nK6d.d.mts → namespace-CqUGzG53.d.mts} +0 -0
- /package/dist/{namespace-13uMtVGj.d.mts → namespace-DRFJN-_z.d.mts} +0 -0
- /package/dist/{namespace-TfZGCy7N.d.mts → namespace-DzVf1hVH.d.mts} +0 -0
- /package/dist/{namespace-QTFnJWHC.d.mts → namespace-XTGCaSXj.d.mts} +0 -0
- /package/dist/{namespace-CTrNKkxY.d.mts → namespace-nlsvvMtD.d.mts} +0 -0
- /package/dist/{namespace-DkDvQJhB.d.mts → namespace-uuR0Fg5r.d.mts} +0 -0
- /package/dist/{orchestrator-shared-BZVeoRfr.d.mts → orchestrator-shared-D91Wk7z-.d.mts} +0 -0
- /package/dist/{out-CiFds_ap.mjs → out-C1JFb2Bp.mjs} +0 -0
- /package/dist/{provider-context-lfG0BpqX.mjs → provider-context-wp4VSJFI.mjs} +0 -0
- /package/dist/{providers-namespace-Cc9FQ-Zt.d.mts → providers-namespace-BqWYkydw.d.mts} +0 -0
- /package/dist/{schemas-BD-1NGmS.d.mts → schemas-B5ToLwIs.d.mts} +0 -0
- /package/dist/{schemas-Hy-lsBpg.d.mts → schemas-B77Gi8Xr.d.mts} +0 -0
- /package/dist/{schemas-BzK1I1eX.d.mts → schemas-C792eVAZ.d.mts} +0 -0
- /package/dist/{schemas-CYS6bkht.d.mts → schemas-Chyj6HuZ.d.mts} +0 -0
- /package/dist/{schemas-DL_bGYyZ.d.mts → schemas-DZUaRcYl.d.mts} +0 -0
- /package/dist/{schemas-DdZwjeF0.d.mts → schemas-Dv5FxHDT.d.mts} +0 -0
- /package/dist/{schemas-CsjB6gel.d.mts → schemas-Dyk7JuVl.d.mts} +0 -0
- /package/dist/{schemas-DFWGb4uj.d.mts → schemas-Kq33MTPY.d.mts} +0 -0
- /package/dist/{schemas-BFeP62V4.d.mts → schemas-lqvZ6UpK.d.mts} +0 -0
- /package/dist/{server-lifecycle-DVAbXQzg.d.mts → server-lifecycle-47mygK3E.d.mts} +0 -0
- /package/dist/{server-lifecycle-JTFuSJhg.mjs → server-lifecycle-Cg47L59Q.mjs} +0 -0
- /package/dist/{session-lineage-CxHc3_bm.d.mts → session-lineage-CKg6mErA.d.mts} +0 -0
- /package/dist/{shared-schemas-CKe2uN4-.mjs → shared-schemas-DYL7a-No.mjs} +0 -0
- /package/dist/{src-4_2jBceX.mjs → src-DedDL9iv.mjs} +0 -0
- /package/dist/{storage-namespace-I30TaZP7.d.mts → storage-namespace-BXmMUd7a.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-ZNBL3v2h.d.mts → storage-namespace-definition-C3XbpiP8.d.mts} +0 -0
- /package/dist/{types-11QnNmpW.d.mts → types-5Gw3iVpK.d.mts} +0 -0
- /package/dist/{types-BKNpS4Xw.d.mts → types-B0BtvVAq.d.mts} +0 -0
- /package/dist/{types-BtMNh2FS.d.mts → types-D-bP8RRE.d.mts} +0 -0
- /package/dist/{window-registry-QD1rTk_f.d.mts → window-registry-CfEi_Ji4.d.mts} +0 -0
package/dist/adapters/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e,t}from"../chunk-DTipWd-i.mjs";import{t as n}from"../cleanEnvForAdapter-
|
|
1
|
+
import{o as e,t}from"../chunk-DTipWd-i.mjs";import{t as n}from"../cleanEnvForAdapter-vZfPGi0X.mjs";import{i as r,n as i,r as a,t as o}from"../cursor-storage-CmKjSvKY.mjs";import{_ as s,a as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,n as _,o as v,p as y,r as ee,s as b,t as te,u as x,v as S}from"../ajv-BA2z5ztb.mjs";import{z as C}from"zod";import*as ne from"node:fs";import{AuthenticationError as re,DirectoryNotFoundError as ie,ModelUnavailableError as ae,QuotaExceededError as oe,RateLimitError as se,createBusNamespace as ce}from"@makaio/framework/core";import{MakaioBus as w,NoHandlerError as le,RequestError as ue}from"@makaio/framework/bus";import{AdapterSubjects as T,AgentSubjects as E,AgentToolApproveSchema as D,HarnessSubjects as O,MCP_CALL_TOOL_NAME as de,McpSubjects as k,SessionContextSchema as A,SessionSubjects as j}from"@makaio/framework/contracts";import{TurnStorageSubjects as fe}from"@makaio/framework/services/turn";import{CredentialRefSchema as pe}from"@makaio/framework/contracts/config";import{runPostUserMessageHooks as me,runPreUserMessageHooks as he}from"@makaio/framework/hooks";import{activateProviderContextStrict as ge,buildProviderContext as _e}from"@makaio/framework/services/provider-context";import ve from"node:os";import{AgentStorageSubjects as M}from"@makaio/framework/services/session";import{DeferredPromise as N,resolveTimeouts as ye}from"@makaio/framework/utils";import*as be from"node:process";function xe(e,t,n){return w.registerNamespace(ce(e,t,n))}function P(e){let t=[];try{return JSON.stringify(e,function(e,n){if(typeof n==`bigint`)return n.toString();if(typeof n==`object`&&n){for(;t.length>0&&t[t.length-1]!==this;)t.pop();if(t.includes(n))return`[Circular]`;t.push(n)}return n},2)??`[Non-serializable value]`}catch{try{return String(e)}catch{return`[Non-serializable value]`}}}function Se(e){return e.replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`).replaceAll(`'`,`'`)}function Ce(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length===0?`context`:/^[A-Za-z_]/.test(t)?t:`context_${t}`}function we(e,t){let n=Ce(e);return`<${n}>\n${Se(t)}\n</${n}>`}function Te(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`&&typeof t.description==`string`&&(t.compatibility===void 0||typeof t.compatibility==`string`)}function Ee(e){if(typeof e!=`object`||!e)return!1;let t=e,n=t.metadata,r=n;return typeof t.name==`string`&&typeof t.content==`string`&&(t.license===void 0||typeof t.license==`string`)&&(t.compatibility===void 0||typeof t.compatibility==`string`)&&(t.allowedTools===void 0||typeof t.allowedTools==`string`)&&(n===void 0||typeof n==`object`&&!!n&&Object.values(r??{}).every(e=>typeof e==`string`))}function De(e){if(!Array.isArray(e))return;let t=e.filter(Te).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>e.compatibility?`- ${e.name}: ${e.description} Compatibility: ${e.compatibility}`:`- ${e.name}: ${e.description}`);return t.length>0?t.join(`
|
|
2
2
|
`):void 0}function Oe(e){if(!Array.isArray(e))return;let t=e.filter(Ee).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>{let t=[`## ${e.name}`];return e.compatibility&&t.push(`Compatibility: ${e.compatibility}`),t.push(e.content),t.join(`
|
|
3
3
|
`)});return t.length>0?t.join(`
|
|
4
4
|
|
|
@@ -8,4 +8,4 @@ import{o as e,t}from"../chunk-DTipWd-i.mjs";import{t as n}from"../cleanEnvForAda
|
|
|
8
8
|
|
|
9
9
|
`)}function Fe(e){let t=new Set(e),n={hasAll:e=>e.every(e=>t.has(e)),hasAny:e=>e.some(e=>t.has(e))};for(let t of e){let e=t.split(`:`).map((e,t)=>t===0?e:e.charAt(0).toUpperCase()+e.slice(1)).join(``);n[e]=!0}return n}function F(e){if(typeof e==`string`)return{role:`user`,blocks:[{type:`text`,content:e}],message:e};let t=Array.isArray(e.blocks)?e.blocks:[e.blocks],n=t.find(e=>e.type===`text`);return{role:e.role??`user`,blocks:t,message:n?.content}}function Ie(e,t){return{discriminator:e,handlers:t}}function Le(e,t){return{discriminator:e,handlers:t}}async function Re(e,t,n){let r=Array.isArray(e)?e:[e];for(let e of r){let r=e[t.discriminator],i=t.handlers[r];i&&await i(e,n)}}function ze(e,t,n){let r=Array.isArray(e)?e:[e];for(let e of r){let r=e[t.discriminator],i=t.handlers[r];if(i&&i(e,n)instanceof Promise)throw Error(`processDiscriminatedItemsSync: Handler for '${r}' returned a Promise. Use processDiscriminatedItems (async) instead, or ensure all handlers are synchronous.`)}}function I(e){return e?.trim()||void 0}function Be(e){return[...new Set(e.flatMap(e=>e.credentialEnvVars?Object.values(e.credentialEnvVars):[]))]}function L(e,t=e?[e]:[]){let n={},r=Be(t);if(e?.credentialEnvVars)for(let[t,r]of Object.entries(e.credentialEnvVars))n[t]=pe.parse(`env:${r}`);return{providerConfigId:`test-provider-config-id`,definitionId:e?.id??`test`,credentialRefs:n,...e?.credentialEnvVars?{credentialEnvVars:{...e.credentialEnvVars}}:void 0,...r.length>0?{ambientCredentialEnvVars:r}:{},...e?.endpoints?{endpointOverrides:{...e.endpoints}}:{}}}function Ve(e,t,n,r=n?[n]:[]){return{...e,bus:t,agentId:crypto.randomUUID(),adapterId:crypto.randomUUID(),adapterName:e?.adapterName??`test-adapter`,providerContext:e?.providerContext??L(n,r)}}const He=`MAKAIO_CONFORMANCE_PROVIDER`,Ue=`MAKAIO_CONFORMANCE_PRIMARY_MODEL`,We=`MAKAIO_CONFORMANCE_SECONDARY_MODEL`,R=`MAKAIO_CONFORMANCE_PROVIDER_DEFINITIONS`;function Ge(e){let t=[],n=new Set;for(let r of e)n.has(r.id)||(n.add(r.id),t.push(r));return t}function Ke(e){let t=I(e);if(!t)return[];let n;try{n=JSON.parse(t)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`${R} must contain valid JSON: ${t}`,{cause:e})}if(!Array.isArray(n))throw Error(`${R} must be a JSON array`);for(let[e,t]of n.entries())if(!t||typeof t!=`object`||typeof t.id!=`string`)throw Error(`${R}[${e}] must be a provider object with an id`);return n}function qe(e,t,n,r){let i=new Map;for(let e of[...r,...n])i.set(e.id,e);let a=t.map(e=>i.get(e)).filter(e=>!!e),o=t.filter(e=>!i.has(e));if(o.length>0)throw Error(`[${e}] Conformance provider catalog is missing provider definitions: ${o.join(`, `)}. Run through yarn test:conformance so provider contributions are loaded.`);return Ge(a)}function z(e,t,n,r,i){if(r)return r;let a=n===`primary`?`fastModel/defaultModel`:`defaultModel`;throw Error(`[${e}] Provider '${t.id}' cannot be used for conformance tests: missing ${a}. Set ${i} or add a model to the provider definition.`)}function Je(e){let t=e.readEnv??(e=>process.env[e]),n=e.providerEnvVar??`MAKAIO_CONFORMANCE_PROVIDER`,r=e.primaryModelEnvVar??`MAKAIO_CONFORMANCE_PRIMARY_MODEL`,i=e.secondaryModelEnvVar??`MAKAIO_CONFORMANCE_SECONDARY_MODEL`,a=Ke(t(R)),o=qe(e.adapterName,e.providerIds,e.providerDefinitions??[],a),s=I(t(n)),c=s??e.defaultProviderId,l=o.find(e=>e.id===c);if(!l){let t=o.map(e=>e.id).join(`, `);throw Error(`[${e.adapterName}] Unknown conformance provider '${c}' from ${s?n:`defaultProviderId`}. Available providers: ${t}`)}let u=z(e.adapterName,l,`primary`,I(t(r))??l.primaryTestModel??l.fastModel??l.defaultModel,r),d=z(e.adapterName,l,`secondary`,I(t(i))??l.secondaryTestModel??l.defaultModel,i);return{provider:l,providers:o,providerContext:L(l,o),primaryModel:{definitionId:l.id,modelName:u,...e.reasoningEffort?{reasoningEffort:e.reasoningEffort}:void 0},secondaryModel:{definitionId:l.id,modelName:d,...e.reasoningEffort?{reasoningEffort:e.reasoningEffort}:void 0}}}async function Ye(e,t,n,r){let i=n===void 0?await e.requestOptional(O.getDefault,{adapterName:t,clientId:r}):await e.requestOptional(O.get,{id:n});return i.handled?i.data.nativeTools.disabled:[]}function Xe(e){switch(e.type){case`text`:return e.content;case`image`:return`[Image]`;case`document`:return`[Document]`;case`attachment`:return`[Attachment: ${e.displayName??e.fileName}]`;case`reasoning`:return`[Reasoning]\n${e.content}`;case`tool_call`:return`[Tool: ${e.name}]\n${JSON.stringify(e.args,null,2)}`;case`tool_output`:return`[Tool ${e.isError?`Error`:`Result`}]\n${e.output}`}}function Ze(e){return e.map(e=>{let t=e.role??`user`;return`${t.charAt(0).toUpperCase()+t.slice(1)}: ${(Array.isArray(e.blocks)?e.blocks:[e.blocks]).map(Xe).join(`
|
|
10
10
|
`)}`}).join(`
|
|
11
|
-
`)}function Qe(e){throw Error(`Unhandled MessageBlock variant: ${JSON.stringify(e)}`)}function $e(e){switch(e.type){case`text`:return e.content;case`reasoning`:return e.content;case`tool_call`:return`[Tool: ${e.name}]\n${JSON.stringify(e.args)}`;case`tool_output`:return`[Tool ${e.isError?`Error`:`Result`} ${e.toolCallId}]\n${e.output}`;case`image`:return`[Image]`;case`document`:return`[Document]`;case`attachment`:return`[Attachment: ${e.displayName?.trim()?e.displayName:e.fileName||`Attachment`}]`;default:return Qe(e)}}function B(e,t,n,r,i){let a=e??(i?t:void 0);if(!a)throw Error(`[${r}] toGlobalToolApproval: ${n} must come from tool approval context`+(i?` or trusted payload`:``));return a}function V(e,t,n,r=!1){return B(e,t,`sessionId`,n,r)}function et(e,t,n,r={}){let i=r.allowPayloadIdentityFallback??!1;if(i){let e=[t.agentId,t.adapterId,t.adapterName,t.adapterSessionId],r=e.filter(Boolean).length;if(r>0&&r<e.length)throw Error(`[${n}] toGlobalToolApproval: context must supply all four identity fields (agentId, adapterId, adapterName, adapterSessionId) or none — partial context with allowPayloadIdentityFallback creates a mixed-source identity tuple`)}let a=V(t.sessionId,e.sessionId,n,r.allowPayloadSessionFallback??!1);return{...e,agentId:B(t.agentId,e.agentId,`agentId`,n,i),adapterId:B(t.adapterId,e.adapterId,`adapterId`,n,i),adapterName:B(t.adapterName,e.adapterName,`adapterName`,n,i),adapterSessionId:B(t.adapterSessionId,e.adapterSessionId,`adapterSessionId`,n,i),sessionId:a}}const tt={request:D.request.extend({sessionId:C.string().optional()}),response:D.response};function nt(e,t,n){return function(r,i){return r.on(e,async e=>{try{let r=typeof i==`function`?await i():i,a=t(e.payload,r),o=await w.request(E.toolApprove,a);e.setResult(n(o))}catch(t){console.error(`[createToolApprovalHandler] Tool approval request failed:`,t);let r=t instanceof Error?`: ${t.message}`:``;e.setResult(n({action:`deny`,message:`Tool approval request failed${r}`,shouldAbort:!0}))}})}}function H(e){return e&&e.split(`;`)[0].trim().toLowerCase()||`application/octet-stream`}function rt(e){let t=H(e);return t.startsWith(`text/`)?!0:[`application/json`,`application/xml`,`application/sql`,`application/graphql`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/toml`].includes(t)}function it(e){if(!e.credentialEnvVars)return;let t={};for(let[n,r]of Object.entries(e.credentialEnvVars)){let e=process.env[r];e!==void 0&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}function U(){return{providerConfigId:`sentinel`,definitionId:`unresolved`,credentialRefs:{}}}var at=class{abortController;terminated=!1;constructor(e){this.abortController=e??new AbortController}get signal(){return this.abortController.signal}get isTerminated(){return this.terminated}abort(e){this.terminated||(this.terminated=!0,this.abortController.abort(),e&&Promise.resolve(e()).catch(e=>{console.error(`Error during session cleanup:`,e)}))}onAbort(e){this.abortController.signal.addEventListener(`abort`,e)}},ot=class{queue=[];enqueue(e){if(e.deliveryMode===`replace`){for(let t of this.queue)t.state===`queued`&&(t.supersededBy=e.messageId,t.markCompleted({outcome:`superseded`,supersededBy:e.messageId}));this.removeSuperseded()}if(e.internalRetry&&e.deliveryMode===`enqueue`){this.enqueueInternalRetry(e);return}this.queue.push(e)}enqueueInternalRetry(e){let t=this.queue.findIndex(e=>e.deliveryMode!==`immediate`&&!e.internalRetry);if(t===-1){this.queue.push(e);return}this.queue.splice(t,0,e)}removeSuperseded(){for(let e=this.queue.length-1;e>=0;e--)this.queue[e].supersededBy&&this.queue.splice(e,1)}dequeue(){return this.queue.shift()}peek(){return this.queue[0]}isEmpty(){return this.queue.length===0}size(){return this.queue.length}clear(){this.queue.length=0}findImmediate(){return this.queue.find(e=>e.deliveryMode===`immediate`)}removeImmediate(e){let t=this.queue.indexOf(e);t>=0&&this.queue.splice(t,1)}drainEnqueued(){let e=[];for(let t=this.queue.length-1;t>=0;t--)this.queue[t].deliveryMode===`enqueue`&&e.unshift(this.queue.splice(t,1)[0]);return e}};async function W(e,t){let n=t.getCurrentTurn(),r=t.extractContent??st;if(n?.canAcceptImmediate()){let i=e.findImmediate();if(i)if(e.removeImmediate(i),(await n.pause()).turnEnded)i.markCompleted({outcome:`rejected`});else{let a=n.getMessageHandle(),o=e.drainEnqueued(),s=[];a&&!a.isProcessed&&(s.push(r(a)),a.supersededBy=i.messageId,a.markCompleted({outcome:`superseded`,supersededBy:i.messageId}));for(let e of o)s.push(r(e)),e.supersededBy=i.messageId,e.markCompleted({outcome:`merged`,mergedInto:i.messageId});let c=t.collectMergeExtra?.(a,o);return await t.onBeforeImmediateTurn?.(),await t.startNewTurn(i,s,c),!0}}let i=e.peek();return(!n||n.isCompleted()||i?.internalRetry===!0&&n.getMessageHandle().isProcessed)&&i?i.deliveryMode===`immediate`&&n?.isCompleted()?(e.dequeue(),i.markCompleted({outcome:`rejected`}),W(e,t)):(e.dequeue(),await t.startNewTurn(i),!0):!1}function st(e){return e.message.message}const ct=[`active`,`step_finished`,`turn_finished`,`processing_finished`];function lt(e,t){if(e===t)return null;let n=[];switch(t){case`processing_started`:break;case`turn_started`:([`idle`,`processing_finished`,`paused`].includes(e)||e===`active`)&&n.push(`processing_started`);break;case`step_started`:[`idle`,`processing_finished`,`paused`].includes(e)||e===`active`?n.push(`processing_started`,`turn_started`):[`processing_started`,`turn_finished`].includes(e)&&n.push(`turn_started`);break;case`step_finished`:break;case`turn_finished`:e===`step_started`&&n.push(`step_finished`);break;case`processing_finished`:e===`step_started`?n.push(`step_finished`,`turn_finished`):[`turn_started`,`step_finished`].includes(e)&&n.push(`turn_finished`);break}return{isCompletionState:ct.includes(t),statesToEmit:[...n,t]}}var G=class{messageId;message;deliveryMode;responseSchema;internalRetry;deferredCompletion;deferredAcknowledgement;state;isAcknowledged=void 0;completionResult=void 0;completionStarted=!1;completionTransforms=[];completionObservers=[];mergedInto;mergedFrom;supersededBy;deferredAdapterSessionId=new N;_adapterSessionId;_messageHistory;_turnContext;constructor(e,t,n,r,i,a,o=!1){this.messageId=e,this.message=t,this.deliveryMode=n,this.responseSchema=a,this.internalRetry=o,this.deferredCompletion=new N,this.deferredAcknowledgement=new N,this.state=`queued`,this._messageHistory=r,this._turnContext=i}get messageHistory(){return this._messageHistory}set messageHistory(e){this._messageHistory=e}get turnContext(){return this._turnContext}set turnContext(e){this._turnContext=e}get adapterSessionId(){return this._adapterSessionId}set adapterSessionId(e){e&&!this._adapterSessionId&&(this._adapterSessionId=e,this.deferredAdapterSessionId.resolve(e))}waitForAdapterSessionId(){return this._adapterSessionId?Promise.resolve(this._adapterSessionId):this.deferredAdapterSessionId.getPromise()}get isProcessed(){return this.state===`completed`||this.state===`cancelled`}getState(){return this.state}updateState(e){this.state=e}async cancel(){return this.updateState(`cancelled`),this.completionStarted=!0,this.completionResult={outcome:`cancelled`},this.deferredAcknowledgement.reject(Error(`Message cancelled`)),this.deferredCompletion.resolve(this.completionResult),!0}markAcknowledged(e=!0){this.isAcknowledged===void 0&&(this.isAcknowledged=e,this.updateState(`acknowledged`),this.deferredAcknowledgement.resolve(e))}addCompletionTransform(e){if(this.completionStarted)throw Error(`Cannot add a completion transform after completion has started`);this.completionTransforms.push(e)}addCompletionObserver(e){if(this.completionStarted)throw Error(`Cannot add a completion observer after completion has started`);this.completionObservers.push(e)}markCompleted(e){this.completionStarted?console.warn(`markCompleted called for messageId: ${this.messageId} but already completed.`):(this.completionStarted=!0,this.updateState(`completed`),this.isAcknowledged===void 0&&(this.isAcknowledged=!1,this.deferredAcknowledgement.resolve(!1)),this.resolveCompletion(e))}async resolveCompletion(e){let t=e;try{for(let e of this.completionTransforms)t=await e(t)}catch(e){t={outcome:`error`,error:e instanceof Error?e:String(e)}}this.completionResult=t,this.notifyCompletionObservers(t),this.deferredCompletion.resolve(t)}notifyCompletionObservers(e){for(let t of this.completionObservers)try{t(e)}catch(e){console.warn(`[MessageHandle] completion observer failed for messageId: ${this.messageId}`,e)}}async waitForAcknowledgment(e){if(this.isAcknowledged!==void 0)return this.isAcknowledged;if(e){let t=await Promise.race([this.deferredAcknowledgement.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Acknowledgment timeout`)),e))]);if(t instanceof Error)throw this.markCompleted({outcome:`error`,error:t}),t;return t}return this.deferredAcknowledgement.getPromise()}async waitForCompletion(e){if(this.completionResult)return this.completionResult;if(e){let t=await Promise.race([this.deferredCompletion.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Completion timeout`)),e))]);if(t instanceof Error)throw t;return t}return this.deferredCompletion.getPromise()}};function ut(e,t,n){let r=n!==void 0&&!e.isProcessed;return e.markCompleted(t),r?e.waitForCompletion().then(async t=>{try{await n(e,t)}catch(t){console.warn(`[MessageHandle] completion notification failed for messageId: ${e.messageId}`,t)}}):Promise.resolve()}var K=class{agentId;adapterSessionId;sessionId;pendingMessageHandle;scopedBus;filteredBus;errorHandler;deferredInterrupt;emittery=new r;processingState=`idle`;adapterId;timeouts;lastResult=null;config;model;providerConfigId;cwd;currentReasoningEffort;supportedReasoningLevels;env;_currentTurnNumber=0;_pendingCanonicalTurnNumber;adapterName;systemPrompt;constructor(e){let t=e.cwd??ve.tmpdir();if(!ne.existsSync(t))throw new ie(t);this.agentId=e.agentId??crypto.randomUUID(),this.scopedBus=e.bus,this.filteredBus=e.bus.withFilter({agentId:this.agentId}),this.adapterId=e.adapterId,this.adapterName=e.adapterName,this.adapterSessionId=e.adapterSessionId,this.sessionId=e.sessionId,this.timeouts=e.timeouts??ye([]),this.errorHandler=e.errorHandler,this.model=e.model,this.providerConfigId=e.providerConfigId,this.cwd=t,this.currentReasoningEffort=e.reasoningEffort,this.supportedReasoningLevels=e.supportedReasoningLevels,this.config=e,this.env=n(e?.env??be.env)}getProcessingState(){return this.processingState}handlePause(e){this.updateProcessingState(`paused`)}captureSystemPrompt(e){e!==void 0&&(this.systemPrompt=e)}async updateProcessingState(e){let t=lt(this.processingState,e);if(!t)return;let{statesToEmit:n}=t;this.processingState=e;for(let e of n)await this.emittery.emit(`processingStateChanged`,e)}onProcessingStateChanged(e){return this.emittery.on(`processingStateChanged`,e)}async onceProcessingStateChanged(e){return this.emittery.once(`processingStateChanged`,e)}createMessageHandle(e,t){let n=new G(t?.messageId??crypto.randomUUID(),e,t?.deliveryMode??`enqueue`,t?.messageHistory,t?.turnContext,t?.responseSchema,t?.internalRetry??!1);return n.adapterSessionId=this.adapterSessionId,t?.internalRetry||this.config.onMessageSent?.(n),n}markToolRefreshPending(){}setCanonicalTurnNumber(e){if(!Number.isInteger(e)||e<1)throw RangeError(`setCanonicalTurnNumber: expected positive integer, got ${e}`);if(e<=this._currentTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} ≤ current (${this._currentTurnNumber})`);if(this._pendingCanonicalTurnNumber!==void 0&&e<this._pendingCanonicalTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} < pending (${this._pendingCanonicalTurnNumber})`);this._pendingCanonicalTurnNumber=e}consumeTurnNumber(){return this._pendingCanonicalTurnNumber===void 0?(this._currentTurnNumber+=1,this._currentTurnNumber):(this._currentTurnNumber=this._pendingCanonicalTurnNumber,this._pendingCanonicalTurnNumber=void 0,this._currentTurnNumber)}get currentTurnNumber(){return this._currentTurnNumber}get pendingTurnNumber(){return this._pendingCanonicalTurnNumber}async changeModelInPlace(e){return!1}async changeCwdInPlace(e){return!1}async changeReasoningInPlace(e){return!1}handleError(e,t=!1){let n=e instanceof Error?e:Error(String(e));console.warn(`[AIAgentConnector:handleError] pendingMessageHandle=${this.pendingMessageHandle?.messageId}, errorType=${n.name}, terminate=${t}`),this.errorHandler?.(n,t),this.pendingMessageHandle&&(this.pendingMessageHandle.markCompleted({outcome:`error`,error:n}),this.pendingMessageHandle=void 0,this.handlePause(`error`)),t&&this.abort()}handleToolApprovalDenied(e,t){e!==`not_requested`&&queueMicrotask(()=>{this.handleError(Error(`Tool use denied by approval handler: ${t}`),!1)})}getAgentId(){return this.agentId}getAdapterName(){return this.adapterName}getTimeoutMs(e){return this.timeouts.values[e]}requestToolApproval(e,t){return this.scopedBus.request(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId,sessionId:this.sessionId})}async requestToolApprovalWithHandling(e,t){return this.requestToolApproval(e,t).catch(e=>{let t=e;throw(e instanceof ue||e instanceof le)&&(t=Error(`Tool approval request failed, make sure that there's a handler registered: `+e.message)),this.handleError(t,!1),e})}emit(e,t){return this.scopedBus.emit(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId})}on(e,t,n){return this.filteredBus.on(e,t,n)}once(e,t){return this.filteredBus.once(e,t)}logLowLevelEvent(e){}},dt=class{config;bus;sessionId;currentTurn;constructor(e){this.config=e,this.bus=e.bus}async abort(){await this.currentTurn?.pause()}async sendMessage(e,t){throw Error(`Use processQueue instead`)}async getAdapterSessionId(){return this.sessionId}},q=class{state;bus;adapterId;adapterName;stateChangedCallback;constructor(e,t,n,r){this.bus=e,this.adapterId=t,this.adapterName=n,this.state=r}onStateChanged(e){this.stateChangedCallback=e}async transitionTo(e){let t=this.state;this.state=e,await this.emitStateChange(t,e),await this.stateChangedCallback?.(t,e)}getState(){return this.state}getMessageHandle(){return this.activeMessageHandle}markAcknowledged(){this.activeMessageHandle.markAcknowledged()}markCompleted(e){this.activeMessageHandle.markCompleted(e)}},ft=class extends q{activeMessageHandle;connectorBus;agentId;turnSubjects;aborted=!1;constructor(e,t){super(e.bus,e.adapterId,e.adapterName,t),this.connectorBus=e.bus,this.agentId=e.agentId,this.activeMessageHandle=e.messageHandle,this.turnSubjects=e.turnSubjects}async emitStateChange(e,t){let n={adapterId:this.adapterId,agentId:this.agentId,oldState:e,newState:t,timestamp:Date.now()};switch(await this.connectorBus.emit(this.turnSubjects.state_changed,n),t){case`turn_started`:await this.connectorBus.emit(this.turnSubjects.turn_started,n);break;case`step_started`:await this.connectorBus.emit(this.turnSubjects.step_started,n);break;case`step_finished`:await this.connectorBus.emit(this.turnSubjects.step_finished,n);break;case`turn_finished`:await this.connectorBus.emit(this.turnSubjects.turn_finished,n);break}}async start(){await this.transitionTo(`turn_started`)}async markStepStarted(){(this.state===`turn_started`||this.state===`step_finished`)&&await this.transitionTo(`step_started`)}async markStepFinished(){this.state===`step_started`&&await this.transitionTo(`step_finished`)}async markTurnFinished(){await this.transitionTo(`turn_finished`)}async pause(){if(this.state===`turn_finished`)return{stateBeforePause:this.state,turnEnded:!0};let e=this.state;return this.aborted=!0,{stateBeforePause:e,turnEnded:!1}}async resume(e){throw Error(`${this.adapterName} does not support resume - create new turn with merged content`)}isPaused(){return this.aborted}isCompleted(){return this.state===`turn_finished`}canAcceptImmediate(){return this.state!==`turn_finished`&&!this.aborted}},pt=class extends K{turnEventsWired=!1;getWireSessionConfig(){}wireSessionEvents(){if(this.turnEventsWired)return;this.turnEventsWired=!0;let e=this.getTurnSubjects(),t=this.getWireSessionConfig();this.on(e.turn_started,(async()=>{try{await t?.onTurnStarted?.()}catch(e){console.error(`[ProceduralAgentConnector] onTurnStarted hook failed:`,e)}await this.updateProcessingState(`turn_started`)})),this.on(e.step_started,(async()=>{await this.updateProcessingState(`step_started`)})),this.on(e.step_finished,(async()=>{await this.updateProcessingState(`step_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()&&await e.processQueue(t)})),this.on(e.turn_finished,(async()=>{await this.updateProcessingState(`turn_finished`);let e=async()=>{await this.updateProcessingState(`processing_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()?await e.processQueue(t):await this.updateProcessingState(`idle`)};t?.onTurnFinished?await t.onTurnFinished(e):await e()}))}async processUserMessages(e){let[t]=e,n=await this.ensureSession(),r=this.getSessionQueue();return r.enqueue(t),t.adapterSessionId=this.adapterSessionId,(this.getProcessingState()===`idle`||this.getProcessingState()===`paused`)&&await this.updateProcessingState(`active`),await n.processQueue(r),new Set([t])}async initialize(e){this.getSession()||(this.captureSystemPrompt(e?.systemPrompt),await this.ensureSession())}async start(e,t){this.captureSystemPrompt(t?.systemPrompt);let n=await this.sendMessage(e,t);return{adapterSessionId:await this.getAdapterSessionId(),messageHandle:n,agentId:this.agentId}}async complete(){for(;this.getProcessingState()!==`idle`&&this.getProcessingState()!==`paused`;)await this.onceProcessingStateChanged();return this.lastResult}acceptsImmediate(){return this.getSession()?.getCurrentTurn()?.canAcceptImmediate()??!1}};function mt(e,t,n,r,i,a,o){let s=t=>async(n,r)=>{let i=t,a={...r,agentId:i.agentId,adapterId:i.adapterId,adapterName:i.adapterName,adapterSessionId:i.adapterSessionId,messageId:i.messageId};await e.emit(n,a)};return t.on(n,(async t=>{let n=r?t.payload[r]:t.payload;if(!n||typeof n!=`object`)return;let c=a[n[i]];if(!c)return;let l=await o(n),u=s(l);if(typeof c==`function`)await c(l,u);else{let{sessionId:t,...n}=l;await e.emit(c,n)}}))}var J=class{currentMessageId;currentTurnId;emitGlobal;constructor(e){this.emitGlobal=e.emitGlobal}getCurrentMessageId(){return this.currentMessageId}setCurrentTurnId(e){this.currentTurnId=e}clearCurrentTurnId(){this.currentTurnId=void 0}getCurrentTurnId(){return this.currentTurnId}acknowledge(e){let{messageId:t,message:n,mergedFrom:r}=e;this.currentMessageId=t,this.emitGlobal(E.user_message.acknowledged,{messageId:t,mergedFrom:r}),this.emitGlobal(E.turn.started,{messageId:t,content:n,mergedFrom:r})}complete(e,t){let{messageId:n}=e;this.currentMessageId===n&&(this.currentMessageId=void 0,this.currentTurnId=void 0),this.emitGlobal(E.turn.completed,{messageId:n,message:t.result?.message,outcome:t.outcome,error:t.error instanceof Error?t.error.message:typeof t.error==`string`?t.error:void 0,...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation}}),this.emitGlobal(E.user_message.completed,{messageId:n,outcome:t.outcome,supersededBy:t.supersededBy,mergedInto:t.mergedInto})}track(e,t,n){n!==void 0&&e.addCompletionTransform(async e=>{try{return await n(e)}catch(t){let n={status:`failed`,errors:[{message:t instanceof Error?t.message:`Structured output validation failed`,instancePath:``,schemaPath:`#`}]};return{...e,structuredOutputValidation:n}}}),e.waitForAcknowledgment().then(()=>{this.acknowledge(e)}),e.waitForCompletion().then(n=>{this.complete(e,n),t&&t(e.messageId,n)})}},Y=class{pending=[];register(e,t,n){let r=n??crypto.randomUUID();return this.pending.push({correlationId:r,toolName:e,args:t,nativeId:n,registeredAt:Date.now()}),r}resolve(e){if(e.nativeId){let t=this.pending.findIndex(t=>t.nativeId===e.nativeId);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`nativeId`,toolName:e.toolName,args:e.args}}}if(e.toolName){let t=this.pending.findIndex(t=>t.toolName===e.toolName);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`toolName`,toolName:e.toolName,args:e.args}}}if(!e.nativeId&&!e.toolName&&this.pending.length>0){let[e]=this.pending.splice(0,1);return{correlationId:e.correlationId,strategy:`oldest`,toolName:e.toolName,args:e.args}}return{correlationId:null,strategy:`none`}}clear(){this.pending=[]}};function ht(e){let t=e.globalBus.withFilter({agentId:e.agentId});return[t.on(E.sendMessage,e.onSendMessage),t.on(E.interrupt,e.onInterrupt),t.on(E.getCapabilities,t=>{t.setResult(e.getCapabilities())}),t.on(E.cwd.change,e.onCwdChange),t.on(E.model.change,e.onModelChange),t.on(E.mcp.servers.set,e.onMcpServersSet),t.on(E.credential.change,e.onCredentialChange)]}var X=class{sessionClosedEmitted=!1;agentStartedEmitted=!1;agentCompleteEmitted=!1;pendingErrorCategory;config;constructor(e){this.config=e}async emitStart(e){this.agentStartedEmitted=!0,this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0,await this.config.emitStarted(e)}resetTurnState(){this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0}async emitCompletion(e){if(this.agentCompleteEmitted)return;await this.config.onBeforeEmitCompletion(),this.agentCompleteEmitted=!0,this.config.clearToolCallTracker();let t=this.pendingErrorCategory;this.pendingErrorCategory=void 0,this.config.globalBus.requestOptional(M.updateStatus,{agentId:this.config.agentId,status:`idle`}),await this.config.emitComplete({...e,...t&&{errorCategory:t}})}emitError(e){this.config.clearToolCallTracker(),this.pendingErrorCategory=e.errorCategory}emitSessionClosed(e){this.sessionClosedEmitted||(this.sessionClosedEmitted=!0,this.config.emitSessionClosed({reason:e}).catch(e=>{console.warn(`[AIAgent] Failed to emit session.closed for agent ${this.config.agentId}:`,e)}))}},Z=class{emitUsagePayload;emitContextWindowUpdatedPayload;emitToolUsePayload;emitToolOutputPayload;emitAdapterLogPayload;emitStepStartedPayload;emitStepFinishedPayload;toolCallTracker;getBlockIndex;incrementBlockIndex;getUsageModel;constructor(e){this.emitUsagePayload=e.emitUsage,this.emitContextWindowUpdatedPayload=e.emitContextWindowUpdated,this.emitToolUsePayload=e.emitToolUse,this.emitToolOutputPayload=e.emitToolOutput,this.emitAdapterLogPayload=e.emitAdapterLog,this.emitStepStartedPayload=e.emitStepStarted,this.emitStepFinishedPayload=e.emitStepFinished,this.toolCallTracker=e.toolCallTracker,this.getBlockIndex=e.getBlockIndex,this.incrementBlockIndex=e.incrementBlockIndex,this.getUsageModel=e.getUsageModel}async trackUsage(e){await this.emitUsagePayload({...e,model:this.getUsageModel()??`unknown`})}async emitContextWindowUpdate(e){let{currentTokens:t,maxTokens:n,cachedTokens:r}=e,i=n>0&&Number.isFinite(n)&&Number.isFinite(t),a=i?Math.min(100,t/n*100):0,o=i?a>=80?`critical`:a>=60?`warn`:`ok`:`critical`;await this.emitContextWindowUpdatedPayload({currentTokens:t,maxTokens:n,cachedTokens:r,percentage:a,level:o})}async emitToolUse(e,t,n){let r=this.toolCallTracker.register(e,t,n);return await this.emitToolUsePayload({toolName:e,args:t,toolCallId:r}),r}async emitToolOutput(e,t){let{correlationId:n,strategy:r,toolName:i,args:a}=this.toolCallTracker.resolve(t);if(!n){await this.emitAdapterLogPayload({level:`warn`,message:`Tool output arrived with no pending tool calls. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()});let n=crypto.randomUUID();return await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:t.toolName??i}),{toolCallId:n,toolName:t.toolName??i??`unknown`}}return r===`oldest`&&await this.emitAdapterLogPayload({level:`warn`,message:`Tool output correlation used fallback. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()}),await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:i,args:a}),{toolCallId:n,toolName:i??`unknown`,args:a}}async emitStepStarted(e,t,n){await this.emitStepStartedPayload({stepType:e,blockIndex:this.getBlockIndex(),blockData:t,content:n})}async emitStepFinished(e,t){await this.emitStepFinishedPayload({stepType:e,blockIndex:this.getBlockIndex(),content:t}),this.incrementBlockIndex()}},gt=class{config;constructor(e){this.config=e}async enrichPayload(e,t,n){let r=t??this.config.getCurrentMessageId(),i=this.config.getCurrentTurnId(),a=e,o=n?.includeEventMetadata??!0,s=o?this.config.getEventMetadataDefaults():{},c=this.config.getConnectorAdapterSessionId()??this.config.getLastKnownAdapterSessionId()??await this.config.getAdapterSessionId(),l=o?a.clientId??s.clientId:void 0,u=o?a.providerConfigId??s.providerConfigId:void 0,d=o?a.occurredAt??s.occurredAt:void 0;this.config.setLastKnownAdapterSessionId(c);let f=this.config.getAgentContextBase();return{...e,agentId:f.agentId,adapterId:f.adapterId,adapterName:f.adapterName,adapterSessionId:c,...r!==void 0&&{messageId:r},...i!==void 0&&{turnId:i},...f.sessionId!==void 0&&{sessionId:f.sessionId},...l!==void 0&&{clientId:l},...u!==void 0&&{providerConfigId:u},...d!==void 0&&{occurredAt:d}}}async emitGlobal(e,t,n){let r=await this.enrichPayload(t,t.messageId,n);await this.config.globalBus.emit(e,r)}};function Q(e,t,n){return!t||n.includes(`structuredOutput`)?e:{...e,structuredOutput:`Respond ONLY with valid JSON conforming to this schema:\n${JSON.stringify(t.schema,null,2)}\nDo not include any other text, markdown formatting, or explanation.`}}var _t=class{agentId;adapterId;sessionId;adapterCapabilities;globalBus;getConnector;shouldUseNativeResume;onMessageHandle;onBeforeDispatch;ephemeral;constructor(e){this.agentId=e.agentId,this.adapterId=e.adapterId,this.sessionId=e.sessionId,this.adapterCapabilities=e.adapterCapabilities??[],this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.shouldUseNativeResume=e.shouldUseNativeResume,this.onMessageHandle=e.onMessageHandle,this.onBeforeDispatch=e.onBeforeDispatch,this.ephemeral=e.ephemeral??!1}async executeSendMessage(e){await this.onBeforeDispatch?.();let t=this.getConnector(),n=e.sessionContext?A.parse(e.sessionContext):void 0,r=await this.resolvePreUserMessageTurn({message:e.message,sessionContext:n,cwd:t.cwd,messageId:e.messageId}),i=this.shouldUseNativeResume(r.sessionContext),a=F(r.message),o=await t.sendMessage(a,{deliveryMode:e.deliveryMode,messageId:e.messageId,messageHistory:i?void 0:r.sessionContext?.messageHistory,turnContext:Q(r.sessionContext?.turnContext,e.responseSchema,this.adapterCapabilities),...e.responseSchema!==void 0&&{responseSchema:e.responseSchema}});return this.firePostUserMessageHooks(o.messageId),await this.onMessageHandle(o),{messageId:o.messageId}}async executeStart(e,t,n,r){await this.onBeforeDispatch?.();let i=this.getConnector(),a=t?.sessionContext?A.parse(t.sessionContext):void 0,o=await this.resolvePreUserMessageTurn({message:e,sessionContext:a,cwd:i.cwd}),s=this.shouldUseNativeResume(o.sessionContext),c=F(o.message),l={systemPrompt:n,messageHistory:s?void 0:o.sessionContext?.messageHistory,turnContext:Q(o.sessionContext?.turnContext,r,this.adapterCapabilities),...r!==void 0&&{responseSchema:r}},u=await i.start(c,l);return this.firePostUserMessageHooks(u.messageHandle.messageId),await this.onMessageHandle(u.messageHandle),u}async resolvePreUserMessageTurn(e){return this.ephemeral?{message:e.message,sessionContext:e.sessionContext}:he({agentId:this.agentId,adapterId:this.adapterId,message:e.message,sessionId:this.sessionId,cwd:e.cwd,sessionContext:e.sessionContext,messageId:e.messageId},this.globalBus)}firePostUserMessageHooks(e){me({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,messageId:e},this.globalBus).catch(e=>{console.error(`[AIAgent] PostUserMessage hook error:`,e)})}},vt=class{queuedSequences=new Map;appliedSequences=new Map;barrier=Promise.resolve();queue(e,t){if(!Number.isSafeInteger(t)||t<0)return!1;let n=this.appliedSequences.get(e);if(n!==void 0&&t<=n)return!1;let r=this.queuedSequences.get(e);return r!==void 0&&t<=r?!1:(this.queuedSequences.set(e,t),!0)}isLatest(e,t){return this.queuedSequences.get(e)===t}markApplied(e,t){let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.appliedSequences.set(e,t),this.queuedSequences.get(e)===t&&this.queuedSequences.delete(e)}release(e,t){if(this.queuedSequences.get(e)!==t)return;let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.queuedSequences.delete(e)}clear(e){this.queuedSequences.delete(e),this.appliedSequences.delete(e)}async runExclusive(e){let t=this.barrier,n;this.barrier=new Promise(e=>{n=e}),await t;try{return await e()}finally{n?.()}}};async function yt(e){let{bus:t,agentId:n,currentModel:r,nextModel:i,skipWarning:a}=e;if(a)return{proceed:!0,requestEditHistory:!1};let o=await t.requestOptional(E.validateModelChange,{agentId:n,currentModel:r,nextModel:i});return o.handled?{proceed:o.data.proceed,requestEditHistory:o.data.requestEditHistory??!1}:{proceed:!0,requestEditHistory:!1}}var bt=class{getConnector;swapConnector;setMcpSessionContext;stagedMcpServersSet;constructor(e){this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.setMcpSessionContext=e.setMcpSessionContext}async applyStagedMutation(){let e=this.stagedMcpServersSet;if(e===void 0)return;this.stagedMcpServersSet=void 0;let t=await this.handleMcpServersSet(e);if(!t.success)throw Error(`Failed to apply staged MCP server replacement: ${t.reason??`unknown error`}`)}async handleMcpServersSet(e){if(this.getConnector().getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedMcpServersSet={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0}):{success:!1,reason:`turn_active`};try{return await this.swapConnector({mcpSessionContext:e.mcpSessionContext}),this.setMcpSessionContext(e.mcpSessionContext),{success:!0,swapped:!0}}catch(e){return{success:!1,reason:`mcp_servers_set_failed: ${e.message}`}}}},xt=class{agentId;sessionId;globalBus;getConnector;swapConnector;emitCwdChanged;emitModelChanged;getProviderContext;setProviderContext;setReasoningEffort;setMcpSessionContext;resolveSupportedReasoningLevels;mcpServersMutationManager;credentialChangeSequencer=new vt;stagedModelChange;constructor(e){this.agentId=e.agentId,this.sessionId=e.sessionId,this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.emitCwdChanged=e.emitCwdChanged,this.emitModelChanged=e.emitModelChanged,this.getProviderContext=e.getProviderContext,this.setProviderContext=e.setProviderContext,this.setReasoningEffort=e.setReasoningEffort,this.setMcpSessionContext=e.setMcpSessionContext,this.resolveSupportedReasoningLevels=e.resolveSupportedReasoningLevels,this.mcpServersMutationManager=new bt({getConnector:this.getConnector,swapConnector:this.swapConnector,setMcpSessionContext:this.setMcpSessionContext})}async handleCwdChange(e){let t=this.getConnector(),{newCwd:n}=e;if(t.cwd===n)return{success:!0};if(t.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let e=t.cwd;return await t.changeCwdInPlace(n).catch(()=>!1)?t.cwd=n:await this.swapConnector({cwd:n}),await this.persistRuntimeMutation({cwd:n}),await this.emitCwdChanged({previousCwd:e,newCwd:n}),{success:!0,previousCwd:e}}catch(e){return{success:!1,reason:`cwd_change_failed: ${e.message}`}}}async applyStagedMutations(){if(this.getConnector().getProcessingState()!==`idle`)return;let e=this.stagedModelChange;if(e!==void 0){this.stagedModelChange=void 0;let t=await this.handleModelChange(e);if(!t.success)throw Error(`Failed to apply staged model change: ${t.reason??`unknown error`}`)}await this.mcpServersMutationManager.applyStagedMutation()}async handleMcpServersSet(e){return this.mcpServersMutationManager.handleMcpServersSet(e)}async handleModelChange(e){let t=this.getConnector(),{newModel:n,reasoningEffort:r,skipWarning:i}=e,a=e.providerContext,o=t.model,s=t.currentReasoningEffort,c=this.getProviderContext(),l=this.hasProviderContextChanged(c,a);if(!n&&!r&&!l)return{success:!0,swapped:!1};if(t.getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedModelChange={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0,...n!==void 0&&{model:n}}):{success:!1,reason:`turn_active`};if(!n&&!l)return this.handleReasoningOnlyChange(t,o,s,r);let u=n??o;return o===u&&!l?r===void 0?{success:!0,swapped:!1}:this.handleReasoningOnlyChange(t,o,s,r):this.handleModelSwap({connector:t,currentModel:o,newModel:u,reasoningEffort:r,previousReasoningEffort:s,providerContext:a,isProviderChange:l,skipWarning:i})}async handleReasoningOnlyChange(e,t,n,r){if(e.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let i=await e.changeReasoningInPlace(r).catch(()=>!1);i||await this.swapConnector({model:e.model});let a=this.getConnector(),o=this.resolveReasoningEffort(r,n,a.supportedReasoningLevels);return a.currentReasoningEffort=o,this.setReasoningEffort(o),await this.emitModelChanged({previousModel:t,newModel:t,previousReasoningEffort:n,newReasoningEffort:o}),{success:!0,swapped:!i,model:t,appliedReasoningEffort:o,supportedReasoningLevels:a.supportedReasoningLevels}}catch(e){return{success:!1,reason:`reasoning_change_failed: ${e.message}`}}}async handleModelSwap(e){let{connector:t,currentModel:n,newModel:r,reasoningEffort:i,previousReasoningEffort:a,providerContext:o,isProviderChange:s,skipWarning:c}=e;try{let e=!s&&await t.changeModelInPlace(r).catch(()=>!1);if(e)t.model=r,t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r);else{let e=await this.confirmConnectorSwap(n,r,c);if(!e.proceed)return e.result;await this.swapConnector({model:r,...o&&{providerContext:o}}),o&&this.setProviderContext(o);let t=this.getConnector();t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r),e.requestEditHistory&&this.sessionId&&await this.globalBus.emit(j.connectorSwap.editRequested,{sessionId:this.sessionId,agentId:this.agentId,previousModel:n,newModel:r})}let l=this.getConnector(),u=l.supportedReasoningLevels,d=this.resolveReasoningEffort(i,a,u);l.currentReasoningEffort=d,this.setReasoningEffort(d),d!==void 0&&await l.changeReasoningInPlace(d).catch(()=>{});let f=n!==r||d!==a;return(n!==r||s)&&await this.persistRuntimeMutation({...n!==r&&{model:r},...s&&o&&{providerConfigId:o.providerConfigId}}),f&&await this.emitModelChanged({previousModel:n,newModel:r,previousReasoningEffort:a,newReasoningEffort:d}),{success:!0,swapped:!e,model:r,appliedReasoningEffort:d,supportedReasoningLevels:u}}catch(e){return{success:!1,reason:`model_change_failed: ${e.message}`}}}resolveReasoningEffort(e,t,n){if(!n||Object.keys(n).length===0)return;let r=e=>e in n;return e!==void 0&&r(e)?e:t!==void 0&&r(t)?t:r(`medium`)?`medium`:Object.keys(n)[0]}async confirmConnectorSwap(e,t,n){if(e===t)return{proceed:!0,requestEditHistory:!1};let r=await yt({bus:this.globalBus,agentId:this.agentId,currentModel:e,nextModel:t,skipWarning:n});return r.proceed?{proceed:!0,requestEditHistory:r.requestEditHistory}:{proceed:!1,result:{success:!1,reason:`cancelled`}}}hasProviderContextChanged(e,t){return t===void 0?!1:e===void 0?!0:e.providerConfigId!==t.providerConfigId||e.definitionId!==t.definitionId||!this.haveEqualStringRecords(e.endpointOverrides,t.endpointOverrides)||!this.haveEqualStringRecords(e.credentialEnvVars,t.credentialEnvVars)||!this.haveEqualStringRecords(e.credentialRefs,t.credentialRefs)}haveEqualStringRecords(e,t){if(e===t)return!0;let n=e?Object.keys(e):[],r=t?Object.keys(t):[];return n.length===r.length?n.every(n=>e[n]===t[n]):!1}async handleCredentialChanged(e){let t=this.getProviderContext()?.providerConfigId;return t&&t!==e.providerConfigId?{success:!1,reason:`provider_mismatch`}:this.credentialChangeSequencer.queue(e.providerConfigId,e.changeSequence)?this.credentialChangeSequencer.runExclusive(async()=>{let t=this.getProviderContext()?.providerConfigId;if(t&&t!==e.providerConfigId)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`provider_mismatch`};if(!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))return{success:!1,reason:`stale_change`};let n=this.getConnector();if(n.getProcessingState()!==`idle`)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`};let r=e.credentialRefs;try{let t=await _e(this.globalBus,e.providerConfigId);return t.credentialRefs=r,!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence)||(await ge(this.globalBus,t),!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))?{success:!1,reason:`stale_change`}:n.getProcessingState()===`idle`?(await this.swapConnector({providerContext:t}),this.setProviderContext(t),this.credentialChangeSequencer.markApplied(e.providerConfigId,e.changeSequence),await this.persistRuntimeMutation({providerConfigId:t.providerConfigId}),{success:!0,swapped:!0}):(this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`})}catch(t){return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`credential_swap_failed: ${t instanceof Error?t.message:String(t)}`}}}):{success:!1,reason:`stale_change`}}async persistRuntimeMutation(e){await this.globalBus.requestOptional(M.updateRuntime,{agentId:this.agentId,cwd:e.cwd,model:e.model,providerConfigId:e.providerConfigId})}},St=class{connectorWiringCleanups=[];config;constructor(e){this.config=e}addConnectorWiringCleanup(e){this.connectorWiringCleanups.push(e)}clearConnectorWiring(){for(let e of this.connectorWiringCleanups)try{e()}catch(e){console.warn(`[AIAgent] Connector wiring cleanup failed for agent ${this.config.agentId}:`,e)}this.connectorWiringCleanups=[]}async wireAllConnectorEvents(e){let t=e.onProcessingStateChanged(e=>{e===`idle`&&this.config.emitIdle().catch(e=>{console.warn(`[AIAgent] Failed to emit idle for agent ${this.config.agentId}:`,e)})});this.addConnectorWiringCleanup(t),await this.config.wireEvents(e)}async swapConnector(e){let t=this.config.getConnector();if(t.getProcessingState()!==`idle`)throw Error(`Cannot swap connector while processing (state: ${t.getProcessingState()})`);let n=this.config.buildConfigInput({cwd:e?.cwd??t.cwd,model:e?.model??t.model,...e?.providerContext&&{providerContext:e.providerContext},...e?.mcpSessionContext&&{mcpSessionContext:e.mcpSessionContext},adapterSessionId:crypto.randomUUID()}),r=await this.config.configFactory(n),i=await this.config.connectorFactory({...r,onMessageSent:this.config.createOnMessageSent()}),a=this.connectorWiringCleanups;this.connectorWiringCleanups=[];try{await this.wireAllConnectorEvents(i),await i.initialize({systemPrompt:this.config.getRuntimeSystemPrompt()})}catch(e){try{await i.close()}catch(e){console.warn(`[AIAgent] Failed to close newly-created connector for agent ${this.config.agentId}:`,e)}throw this.connectorWiringCleanups=a,e}this.config.setLastKnownAdapterSessionId(i.adapterSessionId);for(let e of a)try{e()}catch(e){console.warn(`[AIAgent] Previous connector cleanup failed during swap for agent ${this.config.agentId}:`,e)}let o=t;this.config.setConnector(i);try{await o.close()}catch(e){console.warn(`[AIAgent] Failed to close previous connector for agent ${this.config.agentId}:`,e)}}};function Ct(e){return new gt({globalBus:e.globalBus,getAgentContextBase:e.getAgentContextBase,getCurrentMessageId:()=>e.lifecycleTracker.getCurrentMessageId(),getCurrentTurnId:()=>e.lifecycleTracker.getCurrentTurnId(),getConnectorAdapterSessionId:e.getConnectorAdapterSessionId,getLastKnownAdapterSessionId:e.getLastKnownAdapterSessionId,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId,getAdapterSessionId:e.getAdapterSessionId,getEventMetadataDefaults:e.getEventMetadataDefaults})}function wt(e){return new Z({emitUsage:async t=>{await e.emitGlobal(E.usage,t)},emitContextWindowUpdated:async t=>{await e.emitGlobal(E.contextWindow.updated,t)},emitToolUse:async t=>{await e.emitGlobal(E.tool.use,t)},emitToolOutput:async t=>{await e.emitGlobal(E.tool.output,t)},emitAdapterLog:async t=>{await e.emitGlobal(T.log,t,{includeEventMetadata:!1})},emitStepStarted:async t=>{await e.emitGlobal(E.step.started,t)},emitStepFinished:async t=>{await e.emitGlobal(E.step.finished,t)},toolCallTracker:e.toolCallTracker,getBlockIndex:e.getBlockIndex,incrementBlockIndex:e.incrementBlockIndex,getUsageModel:e.getUsageModel})}function Tt(e){return new _t(e)}function Et(e){return new xt({agentId:e.agentId,sessionId:e.sessionId,globalBus:e.globalBus,getConnector:e.getConnector,swapConnector:e.swapConnector,emitCwdChanged:async t=>{await e.emitGlobal(E.cwd.changed,t)},emitModelChanged:async t=>{await e.emitGlobal(E.model.changed,t)},getProviderContext:e.getProviderContext,setProviderContext:e.setProviderContext,setReasoningEffort:e.setReasoningEffort,setMcpSessionContext:e.setMcpSessionContext,resolveSupportedReasoningLevels:e.resolveSupportedReasoningLevels})}function Dt(e){return new St({agentId:e.agentId,buildConfigInput:e.buildConfigInput,configFactory:e.configFactory,connectorFactory:e.connectorFactory,createOnMessageSent:e.createOnMessageSent,wireEvents:e.wireEvents,emitIdle:async()=>{await e.emitGlobal(E.idle,{})},getConnector:e.getConnector,setConnector:e.setConnector,getRuntimeSystemPrompt:e.getRuntimeSystemPrompt,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId})}var Ot=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicAnchor=void 0;let t=S(),n=f(),r=d(),i=x(),a={keyword:`$dynamicAnchor`,schemaType:`string`,code:e=>o(e,e.schema)};function o(e,r){let{gen:i,it:a}=e;a.schemaEnv.root.dynamicAnchors[r]=!0;let o=(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(r)}`,c=a.errSchemaPath===`#`?a.validateName:s(e);i.if((0,t._)`!${o}`,()=>i.assign(o,c))}e.dynamicAnchor=o;function s(e){let{schemaEnv:t,schema:n,self:a}=e.it,{root:o,baseId:s,localRefs:c,meta:l}=t.root,{schemaId:u}=a.opts,d=new r.SchemaEnv({schema:n,schemaId:u,root:o,baseId:s,localRefs:c,meta:l});return r.compileSchema.call(a,d),(0,i.getValidate)(e,d)}e.default=a})),kt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicRef=void 0;let t=S(),n=f(),r=x(),i={keyword:`$dynamicRef`,schemaType:`string`,code:e=>a(e,e.schema)};function a(e,i){let{gen:a,keyword:o,it:s}=e;if(i[0]!==`#`)throw Error(`"${o}" only supports hash fragment reference`);let c=i.slice(1);if(s.allErrors)l();else{let t=a.let(`valid`,!1);l(t),e.ok(t)}function l(e){if(s.schemaEnv.root.dynamicAnchors[c]){let r=a.let(`_v`,(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(c)}`);a.if(r,u(r,e),u(s.validateName,e))}else u(s.validateName,e)()}function u(t,n){return n?()=>a.block(()=>{(0,r.callRef)(e,t),a.let(n,!0)}):()=>(0,r.callRef)(e,t)}}e.dynamicRef=a,e.default=i})),At=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ot(),n=s();e.default={keyword:`$recursiveAnchor`,schemaType:`boolean`,code(e){e.schema?(0,t.dynamicAnchor)(e,``):(0,n.checkStrictMode)(e.it,`$recursiveAnchor: false is ignored`)}}})),jt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=kt();e.default={keyword:`$recursiveRef`,schemaType:`string`,code:e=>(0,t.dynamicRef)(e,e.schema)}})),Mt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ot(),n=kt(),r=At(),i=jt();e.default=[t.default,n.default,r.default,i.default]})),Nt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=b();e.default={keyword:`dependentRequired`,type:`object`,schemaType:`object`,error:t.error,code:e=>(0,t.validatePropertyDeps)(e)}})),Pt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=b();e.default={keyword:`dependentSchemas`,type:`object`,schemaType:`object`,code:e=>(0,t.validateSchemaDeps)(e)}})),Ft=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=s();e.default={keyword:[`maxContains`,`minContains`],type:`array`,schemaType:`number`,code({keyword:e,parentSchema:n,it:r}){n.contains===void 0&&(0,t.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}}})),It=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Nt(),n=Pt(),r=Ft();e.default=[t.default,n.default,r.default]})),Lt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=S(),n=s(),r=f();e.default={keyword:`unevaluatedProperties`,type:`object`,schemaType:[`boolean`,`object`],trackErrors:!0,error:{message:`must NOT have unevaluated properties`,params:({params:e})=>(0,t._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},code(e){let{gen:i,schema:a,data:o,errsCount:s,it:c}=e;if(!s)throw Error(`ajv implementation error`);let{allErrors:l,props:u}=c;u instanceof t.Name?i.if((0,t._)`${u} !== true`,()=>i.forIn(`key`,o,e=>i.if(f(u,e),()=>d(e)))):u!==!0&&i.forIn(`key`,o,e=>u===void 0?d(e):i.if(p(u,e),()=>d(e))),c.props=!0,e.ok((0,t._)`${s} === ${r.default.errors}`);function d(r){if(a===!1){e.setParams({unevaluatedProperty:r}),e.error(),l||i.break();return}if(!(0,n.alwaysValidSchema)(c,a)){let a=i.name(`valid`);e.subschema({keyword:`unevaluatedProperties`,dataProp:r,dataPropType:n.Type.Str},a),l||i.if((0,t.not)(a),()=>i.break())}}function f(e,n){return(0,t._)`!${e} || !${e}[${n}]`}function p(e,n){let r=[];for(let i in e)e[i]===!0&&r.push((0,t._)`${n} !== ${i}`);return(0,t.and)(...r)}}}})),Rt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=S(),n=s();e.default={keyword:`unevaluatedItems`,type:`array`,schemaType:[`boolean`,`object`],error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{gen:r,schema:i,data:a,it:o}=e,s=o.items||0;if(s===!0)return;let c=r.const(`len`,(0,t._)`${a}.length`);if(i===!1)e.setParams({len:s}),e.fail((0,t._)`${c} > ${s}`);else if(typeof i==`object`&&!(0,n.alwaysValidSchema)(o,i)){let n=r.var(`valid`,(0,t._)`${c} <= ${s}`);r.if((0,t.not)(n),()=>l(n,s)),e.ok(n)}o.items=!0;function l(i,a){r.forRange(`i`,a,c,a=>{e.subschema({keyword:`unevaluatedItems`,dataProp:a,dataPropType:n.Type.Num},i),o.allErrors||r.if((0,t.not)(i),()=>r.break())})}}}})),$=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Lt(),n=Rt();e.default=[t.default,n.default]})),zt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/schema`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format`},{$ref:`meta/content`}],type:[`object`,`boolean`],properties:{definitions:{$comment:`While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.`,type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},dependencies:{$comment:`"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"`,type:`object`,additionalProperties:{anyOf:[{$recursiveRef:`#`},{$ref:`meta/validation#/$defs/stringArray`}]}}}}})),Bt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/applicator":!0},$recursiveAnchor:!0,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{additionalItems:{$recursiveRef:`#`},unevaluatedItems:{$recursiveRef:`#`},items:{anyOf:[{$recursiveRef:`#`},{$ref:`#/$defs/schemaArray`}]},contains:{$recursiveRef:`#`},additionalProperties:{$recursiveRef:`#`},unevaluatedProperties:{$recursiveRef:`#`},properties:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$recursiveRef:`#`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$recursiveRef:`#`}},propertyNames:{$recursiveRef:`#`},if:{$recursiveRef:`#`},then:{$recursiveRef:`#`},else:{$recursiveRef:`#`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$recursiveRef:`#`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$recursiveRef:`#`}}}}})),Vt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/content`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentMediaType:{type:`string`},contentEncoding:{type:`string`},contentSchema:{$recursiveRef:`#`}}}})),Ht=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/core`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0},$recursiveAnchor:!0,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{type:`string`,format:`uri`},$anchor:{type:`string`,pattern:`^[A-Za-z][-A-Za-z0-9.:_]*$`},$ref:{type:`string`,format:`uri-reference`},$recursiveRef:{type:`string`,format:`uri-reference`},$recursiveAnchor:{type:`boolean`,default:!1},$vocabulary:{type:`object`,propertyNames:{type:`string`,format:`uri`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}}}}})),Ut=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/format`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/format":!0},$recursiveAnchor:!0,title:`Format vocabulary meta-schema`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),Wt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/meta-data":!0},$recursiveAnchor:!0,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),Gt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/validation":!0},$recursiveAnchor:!0,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}},const:!0,enum:{type:`array`,items:!0},type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),Kt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=zt(),n=Bt(),r=Vt(),i=Ht(),a=Ut(),o=Wt(),s=Gt(),c=[`/properties`];function l(e){return[t,n,r,i,l(this,a),o,l(this,s)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function l(t,n){return e?t.$dataMetaSchema(n,c):n}}e.default=l})),qt=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2019=void 0;let n=u(),r=ee(),i=Mt(),a=It(),o=$(),s=_(),c=Kt(),l=`https://json-schema.org/draft/2019-09/schema`;var d=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),this.addVocabulary(i.default),r.default.forEach(e=>this.addVocabulary(e)),this.addVocabulary(a.default),this.addVocabulary(o.default),this.opts.discriminator&&this.addKeyword(s.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(c.default.call(this,e),this.refs[`http://json-schema.org/schema`]=l)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}};e.Ajv2019=d,t.exports=e=d,t.exports.Ajv2019=d,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=d;var f=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return f.KeywordCxt}});var m=S();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return m._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return m.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return m.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return m.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return m.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return m.CodeGen}});var h=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return h.default}});var v=y();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return v.default}})})),Jt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=h(),n=l(),r=v(),i=Mt(),a=It(),o=$(),s=c(),u=m();e.default=[i.default,t.default,n.default,(0,r.default)(!0),s.default,u.metadataVocabulary,u.contentVocabulary,a.default,o.default]})),Yt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}}})),Xt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}}})),Zt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}}})),Qt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}}})),$t=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}}})),en=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),tn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),nn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),rn=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Yt(),n=Xt(),r=Zt(),i=Qt(),a=$t(),o=en(),s=tn(),c=nn(),l=[`/properties`];function u(e){return[t,n,r,i,a,u(this,o),s,u(this,c)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function u(t,n){return e?t.$dataMetaSchema(n,l):n}}e.default=u})),an=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2020=void 0;let n=u(),r=Jt(),i=_(),a=rn(),o=`https://json-schema.org/draft/2020-12/schema`;var s=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),r.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(a.default.call(this,e),this.refs[`http://json-schema.org/schema`]=o)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}};e.Ajv2020=s,t.exports=e=s,t.exports.Ajv2020=s,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=s;var c=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return c.KeywordCxt}});var l=S();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return l._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return l.CodeGen}});var d=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return d.default}});var f=y();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return f.default}})})),on=e(te(),1),sn=e(qt(),1),cn=e(an(),1);const ln=new Set([`https://json-schema.org/draft/2019-09/schema`,`https://json-schema.org/draft/2019-09/schema#`]),un=new Set([`https://json-schema.org/draft/2020-12/schema`,`https://json-schema.org/draft/2020-12/schema#`]);var dn=class{bus;agentId;adapterId;adapterCapabilities;draft07Ajv=new on.default({allErrors:!0,strict:!1});draft2019Ajv=new sn.default({allErrors:!0,strict:!1});draft2020Ajv=new cn.default({allErrors:!0,strict:!1});validatorCache=new WeakMap;constructor(e){this.bus=e.bus,this.agentId=e.agentId,this.adapterId=e.adapterId,this.adapterCapabilities=e.adapterCapabilities}registerDefaultHandlers(){let e=this.bus.withFilter({agentId:this.agentId});return[e.on(E.structuredOutput.retryPolicy,e=>{e.setResult({maxRetries:0})},{priority:-1e3}),e.on(E.structuredOutput.enforce,e=>{e.setResult({enforced:!1,error:`No enforce handler registered`})},{priority:-1e3})]}async validateTerminalResult(e){let{responseSchema:t,message:n,sessionId:r}=e,i=this.validate(t,n);if(i.valid)return{message:n,structuredOutputValidation:{status:`passed`}};let a=n??``,o=i.errors;if(e.retryTurn){let n=await this.bus.requestOptional(E.structuredOutput.retryPolicy,{agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.adapterCapabilities,responseSchema:t,attemptNumber:1}),r=n.handled?n.data.maxRetries:0;for(let n=1;n<=r;n+=1){a=await e.retryTurn({attemptNumber:n,validationErrors:o});let r=this.validate(t,a);if(r.valid)return{message:a,structuredOutputValidation:{status:`passed`}};o=r.errors}}let s=await this.bus.requestOptional(E.structuredOutput.enforce,{agentId:this.agentId,adapterId:this.adapterId,sessionId:r,responseSchema:t,rawOutput:a,validationErrors:o,adapterHasCapability:this.adapterCapabilities.includes(`structuredOutput`)});if(s.handled&&s.data.enforced===!0&&s.data.output!==void 0){let{valid:e}=this.validate(t,s.data.output);if(e)return{message:s.data.output,structuredOutputValidation:{status:`enforced`}}}return{message:a,structuredOutputValidation:{status:`failed`,errors:o}}}validate(e,t){if(t===void 0||t===``)return{valid:!1,errors:[{message:`Expected JSON output but received empty string`,instancePath:``,schemaPath:`#`}]};let n;try{n=JSON.parse(t)}catch{return{valid:!1,errors:[{message:`Output is not valid JSON: ${t.slice(0,120)}`,instancePath:``,schemaPath:`#`}]}}let r=this.getValidator(e);if(r(n))return{valid:!0,errors:[]};let i=this.normalizeErrors(r.errors??[]);return i.length===0&&i.push({message:`Schema validation failed`,instancePath:``,schemaPath:`#`}),{valid:!1,errors:i}}getValidator(e){let t=this.validatorCache.get(e.schema);if(t!==void 0)return t;let n=this.getValidatorCompileTarget(e.schema),r;try{r=n.compiler.compile(n.schema)}catch(e){r=this.createCompileFailureValidator(e)}return this.validatorCache.set(e.schema,r),r}createCompileFailureValidator(e){let t=[{keyword:`schema`,instancePath:``,schemaPath:`#`,params:{},message:`Failed to compile response schema: ${e instanceof Error?e.message:String(e)}`}],n=this.draft07Ajv.compile({});return Object.assign(e=>!1,{errors:t,schema:n.schema,schemaEnv:n.schemaEnv})}getValidatorCompileTarget(e){let t=this.readSchemaUri(e),n=t===void 0?void 0:this.normalizeDraft202012Uri(t),r=t===void 0?void 0:this.normalizeDraft201909Uri(t);return n!==void 0&&un.has(n)?{compiler:this.draft2020Ajv,schema:this.withSchemaUri(e,n)}:r!==void 0&&ln.has(r)?{compiler:this.draft2019Ajv,schema:this.withSchemaUri(e,r)}:{compiler:this.draft07Ajv,schema:this.withoutSchemaUri(e)}}readSchemaUri(e){let t=e.$schema;return typeof t==`string`?t:void 0}normalizeDraft202012Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2020-12\/schema#?$/,e=>e.replace(`http://`,`https://`))}normalizeDraft201909Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2019-09\/schema#?$/,e=>e.replace(`http://`,`https://`))}withSchemaUri(e,t){return e.$schema===t?e:{...e,$schema:t}}withoutSchemaUri(e){if(e.$schema===void 0)return e;let t={...e};return delete t.$schema,t}normalizeErrors(e){return e.map(e=>({message:e.message??`Validation error`,instancePath:e.instancePath,schemaPath:e.schemaPath}))}};function fn(e){if(e instanceof se||e instanceof re||e instanceof ae||e instanceof oe)return e.code}var pn=class{connector;confirmedModel;initialModel;lastKnownAdapterSessionId;busHandlerCleanups=[];initialized=!1;runtimeSystemPrompt;lifecycleTracker;toolCallTracker=new Y;eventBridge;turnExecutor;runtimeMutationManager;connectorLifecycleManager;payloadEmitter;lifecycleEmitter;structuredOutputManager;latestMessageCompletion;currentBlockIndex=0;config;availableModels;constructor(e){this.config={...e,globalBus:e.globalBus??w},this.availableModels=e.availableModels,this.lifecycleTracker=new J({emitGlobal:this.emitGlobal.bind(this)}),this.payloadEmitter=Ct({globalBus:this.globalBus,getAgentContextBase:()=>({agentId:this.agentId,adapterId:this.adapterId,adapterName:this.adapterName,sessionId:this.sessionId}),lifecycleTracker:this.lifecycleTracker,getConnectorAdapterSessionId:()=>this.connector?.adapterSessionId,getLastKnownAdapterSessionId:()=>this.lastKnownAdapterSessionId,setLastKnownAdapterSessionId:e=>{this.lastKnownAdapterSessionId=e},getAdapterSessionId:this.getAdapterSessionId.bind(this),getEventMetadataDefaults:this.getEventMetadataDefaults.bind(this)}),this.eventBridge=wt({emitGlobal:this.payloadEmitter.emitGlobal.bind(this.payloadEmitter),toolCallTracker:this.toolCallTracker,getBlockIndex:this.getBlockIndex.bind(this),incrementBlockIndex:this.incrementBlockIndex.bind(this),getUsageModel:()=>this.confirmedModel??this.initialModel}),this.turnExecutor=Tt({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,adapterCapabilities:this.capabilities,globalBus:this.globalBus,getConnector:()=>this.connector,shouldUseNativeResume:this.shouldUseNativeResume.bind(this),onMessageHandle:this.onMessageHandle.bind(this),onBeforeDispatch:()=>this.runtimeMutationManager.applyStagedMutations(),ephemeral:this.config.ephemeral}),this.runtimeMutationManager=Et({agentId:this.agentId,sessionId:this.sessionId,globalBus:this.globalBus,getConnector:()=>this.connector,swapConnector:this.swapConnector.bind(this),emitGlobal:this.payloadEmitter.emitGlobal.bind(this.payloadEmitter),getProviderContext:()=>this.config.providerContext,setProviderContext:e=>void(this.config.providerContext=e),setReasoningEffort:e=>void(this.config.reasoningEffort=e),setMcpSessionContext:e=>this.config.mcpSessionContext=e,resolveSupportedReasoningLevels:e=>this.getSupportedReasoningLevels(e)}),this.connectorLifecycleManager=Dt({agentId:this.agentId,buildConfigInput:this.buildConfigInput.bind(this),configFactory:this.config.configFactory,connectorFactory:this.config.connectorFactory,createOnMessageSent:this.createOnMessageSent.bind(this),wireEvents:this.wireEvents.bind(this),emitGlobal:this.payloadEmitter.emitGlobal.bind(this.payloadEmitter),getConnector:()=>this.connector,setConnector:e=>{this.connector=e},getRuntimeSystemPrompt:()=>this.runtimeSystemPrompt,setLastKnownAdapterSessionId:e=>{this.lastKnownAdapterSessionId=e}}),this.lifecycleEmitter=this.createLifecycleEmitter(),this.structuredOutputManager=this.createStructuredOutputManager()}getEventMetadataDefaults(){return{clientId:this.config.clientId,providerConfigId:this.connector?.providerConfigId??this.config.providerContext?.providerConfigId,occurredAt:Date.now()}}createLifecycleEmitter(){return new X({agentId:this.agentId,globalBus:this.globalBus,emitStarted:async e=>{await this.payloadEmitter.emitGlobal(E.started,e)},emitComplete:async e=>{await this.payloadEmitter.emitGlobal(E.complete,e)},emitSessionClosed:async e=>{await this.payloadEmitter.emitGlobal(E.session.closed,e)},onBeforeEmitCompletion:this.onBeforeEmitCompletion.bind(this),clearToolCallTracker:()=>this.toolCallTracker.clear()})}createStructuredOutputManager(){return new dn({bus:this.globalBus,agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.capabilities})}get agentId(){return this.config.agentId}get adapterId(){return this.config.adapterId}get adapterName(){return this.config.adapterName}get capabilities(){return this.config.capabilities}get nativeTools(){return this.config.nativeTools}get sessionId(){return this.config.sessionId}get adapterSessionId(){return this.config.adapterSessionId}get globalBus(){return this.config.globalBus}async init(){if(this.initialized)throw Error(`AIAgent ${this.agentId} already initialized. init() can only be called once.`);let e=this.buildConfigInput(),t=await this.config.configFactory(e);this.connector=await this.config.connectorFactory({...t,onMessageSent:this.createOnMessageSent()}),this.busHandlerCleanups.push(...ht({globalBus:this.globalBus,agentId:this.agentId,onSendMessage:async e=>{await this.sendMessage(e)},onInterrupt:async e=>{await this.handleInterrupt(e)},getCapabilities:()=>({capabilities:this.capabilities,nativeTools:this.nativeTools,model:this.connector?.model??this.confirmedModel??this.initialModel}),onCwdChange:async e=>{await this.handleCwdChange(e)},onModelChange:async e=>{await this.handleModelChange(e)},onMcpServersSet:async e=>{await this.handleMcpServersSet(e)},onCredentialChange:async e=>{await this.handleCredentialChanged(e)}}),...this.structuredOutputManager.registerDefaultHandlers()),this.sessionId&&this.busHandlerCleanups.push(this.globalBus.on(j.turn.started,e=>{e.payload.agentIds.includes(this.agentId)&&this.connector.setCanonicalTurnNumber(e.payload.turnNumber)},{filter:{sessionId:this.sessionId}})),this.busHandlerCleanups.push(this.globalBus.on(k.tools.updated,()=>{this.connector.markToolRefreshPending()}),this.globalBus.on(k.tools.enabled,()=>{this.connector.markToolRefreshPending()})),await this.connectorLifecycleManager.wireAllConnectorEvents(this.connector),this.initialized=!0}async emitStart(e){this.currentBlockIndex=0,await this.lifecycleEmitter.emitStart({model:this.connector.model,cwd:this.connector.cwd,...e})}async emitCompletion(e){await this.lifecycleEmitter.emitCompletion(e)}emitError(e){this.lifecycleEmitter.emitError(e)}emitSessionClosed(e){this.lifecycleEmitter.emitSessionClosed(e)}async enrichPayload(e){return this.payloadEmitter.enrichPayload(e)}async emitGlobal(e,t){await this.payloadEmitter.emitGlobal(e,t)}async trackUsage(e){await this.eventBridge.trackUsage(e)}getContextWindowSize(e){let t=e??this.confirmedModel??this.initialModel;if(!(!t||!this.availableModels))return this.availableModels.find(e=>e.name===t)?.contextWindowSize}async emitContextWindowUpdate(e){await this.eventBridge.emitContextWindowUpdate(e)}async emitToolUse(e,t,n){return this.eventBridge.emitToolUse(e,t,n)}async emitToolOutput(e,t){return this.eventBridge.emitToolOutput(e,t)}async emitStepStarted(e,t,n){await this.eventBridge.emitStepStarted(e,t,n)}async emitStepFinished(e,t){await this.eventBridge.emitStepFinished(e,t)}getBlockIndex(){return this.currentBlockIndex}incrementBlockIndex(){this.currentBlockIndex++}async sendMessage(e){this.globalBus.requestOptional(M.updateStatus,{agentId:this.agentId,status:`active`}),this.lifecycleTracker.setCurrentTurnId(e.payload.turnId);try{let t=await this.turnExecutor.executeSendMessage(e.payload);e.setResult(t)}catch(e){throw this.lifecycleTracker.clearCurrentTurnId(),e}}async handleInterrupt(e){try{await this.ensureConnector().interrupt(),e.setResult({success:!0})}catch(t){e.setResult({success:!1,reason:t instanceof Error?t.message:String(t)})}}addConnectorWiringCleanup(e){this.connectorLifecycleManager.addConnectorWiringCleanup(e)}addBusHandlerCleanup(e){this.busHandlerCleanups.push(e)}async swapConnector(e){await this.connectorLifecycleManager.swapConnector(e),e?.providerContext!==void 0&&(this.config.providerContext=e.providerContext),e?.mcpSessionContext!==void 0&&(this.config.mcpSessionContext=e.mcpSessionContext)}getSupportedReasoningLevels(e){if(e)return this.availableModels?.find(t=>t.name===e)?.supportedReasoningLevels}buildConfigInput(e){let t=this.config,n=this.connector?.currentReasoningEffort??t.reasoningEffort,r=e?.providerContext??t.providerContext;r===void 0&&console.warn(`[AIAgent] No providerContext available for agent "${t.agentId}" — falling back to sentinel. This indicates the orchestrator did not populate a provider context before calling startAgent.`);let i=r??U();return{bus:t.adapterBus,agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:i,model:e?.model??t.model,cwd:e?.cwd??t.cwd,env:t.env,adapterSessionId:e?.adapterSessionId??t.adapterSessionId,sessionId:t.sessionId,resumeAdapterSessionId:t.resumeAdapterSessionId,reasoningEffort:n,supportedReasoningLevels:this.getSupportedReasoningLevels(e?.model??t.model),allowedTools:t.allowedTools,disallowedTools:t.disallowedTools,allowedDirectories:t.allowedDirectories,mcpSessionContext:e?.mcpSessionContext??t.mcpSessionContext,toolLedger:t.toolLedger,clientId:t.clientId,clientProfileName:t.clientProfileName,harnessId:t.harnessId,errorHandler:(e,t)=>{let n=fn(e);this.emitError({error:e.message,...n&&{errorCategory:n}})}}}createOnMessageSent(){return e=>{this.emitGlobal(E.user_message.sent,{messageId:e.messageId,content:e.message,deliveryMode:e.deliveryMode})}}async handleCwdChange(e){let t=await this.runtimeMutationManager.handleCwdChange(e.payload);e.setResult(t)}async handleModelChange(e){let t=await this.runtimeMutationManager.handleModelChange(e.payload);e.setResult(t)}async handleMcpServersSet(e){let t=await this.runtimeMutationManager.handleMcpServersSet(e.payload);e.setResult(t)}async handleCredentialChanged(e){let t=await this.runtimeMutationManager.handleCredentialChanged(e.payload);e.setResult(t)}subscribeConnector(e,t,n,r){let i=e.on(t,n,r);this.connectorLifecycleManager.addConnectorWiringCleanup(i)}async close(e={}){(e.emitSessionClosed??!0)&&this.emitSessionClosed(`closed`);for(let e of this.busHandlerCleanups)try{e()}catch(e){console.warn(`[AIAgent] Bus handler cleanup failed:`,e)}this.busHandlerCleanups=[],this.connectorLifecycleManager.clearConnectorWiring(),await this.connector.close()}ensureConnector(){if(!this.connector)throw Error(`AIAgent ${this.agentId} connector not initialized. Call init() or start() first.`);return this.connector}shouldUseNativeResume(e){return this.supportsNativeResume()?e?!(e.isFirstTurn||e.hasCompression||e.hasNewTransforms||e.hasConnectorSwap):!0:!1}supportsNativeResume(){return!1}async start(e,t){return this.initialized||await this.init(),t?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=t.systemPrompt),this.turnExecutor.executeStart(e,t,this.runtimeSystemPrompt,t?.responseSchema)}async initialize(e){e?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=e.systemPrompt),this.initialized||await this.init(),await this.ensureConnector().initialize(e)}async onBeforeEmitCompletion(){}async onMessageHandle(e){this.lifecycleEmitter.resetTurnState(),this.latestMessageCompletion=e.waitForCompletion();let t=e.responseSchema,n=t===void 0?void 0:async n=>{if(n.outcome!==`completed`)return n;let r=await this.structuredOutputManager.validateTerminalResult({responseSchema:t,message:n.result?.message,sessionId:this.sessionId,retryTurn:async({attemptNumber:n,validationErrors:r})=>{let i=this.connector;return i?(await(await i.sendMessage(e.message,{deliveryMode:`enqueue`,internalRetry:!0,messageId:`${e.messageId}:structured-output-retry:${n}`,messageHistory:e.messageHistory,responseSchema:t,turnContext:{...e.turnContext,structuredOutputRetry:{attemptNumber:n,validationErrors:r,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}})).waitForCompletion()).result?.message??``:``}});return{...n,result:n.result!==null&&n.result!==void 0?{...n.result,message:r.message}:n.result,structuredOutputValidation:r.structuredOutputValidation}};this.lifecycleTracker.track(e,(e,t)=>{let n=t.error instanceof Error?t.error.message:t.error;this.emitCompletion({message:t.result?.message,messageId:e,outcome:t.outcome,...n&&{error:n},...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation}})},n)}abort(){this.emitSessionClosed(`aborted`),this.ensureConnector().abort()}async getAdapterSessionId(){return this.ensureConnector().getAdapterSessionId()}async complete(){let e=await this.ensureConnector().complete();return e===null||this.latestMessageCompletion===void 0?e:this.latestMessageCompletion}createConnectorEventMapping(e,t,n,r){let i=mt(this.globalBus,this.connector,e,r,t,n,this.enrichPayload.bind(this));return this.connectorLifecycleManager.addConnectorWiringCleanup(i),i}};function mn(e){let t=e.indexOf(`__`);return t===-1?{serverName:``,originalName:e}:{serverName:e.slice(0,t),originalName:e.slice(t+2)}}function hn(e){let{serverName:t,originalName:n}=mn(e);return{fullName:e,originalName:n,serverName:t,injected:!1,lastInjectedAtTurn:void 0,discovered:!1,firstDiscoveredAtTurn:void 0,callCount:0,lastCalledAtTurn:void 0}}var gn=class{entries=new Map;upsert(e){let t=this.entries.get(e);return t||(t=hn(e),this.entries.set(e,t)),t}recordInjection(e,t){let n=new Set(e.map(e=>e.name));for(let n of e){let e=this.upsert(n.name);e.injected=!0,e.lastInjectedAtTurn=t}for(let[e,t]of this.entries)t.injected&&!n.has(e)&&(t.injected=!1)}recordDiscovery(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t)}recordCall(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t),n.callCount+=1,n.lastCalledAtTurn=t}getInjectedTools(){return Array.from(this.entries.values()).filter(e=>e.injected)}getCallCount(e){return this.entries.get(e)?.callCount??0}getEntry(e){return this.entries.get(e)}getAllEntries(){return Array.from(this.entries.values())}async suggestInjectionSet(e,t){return e.directTools.map(e=>({name:e.fullName,description:e.description??``,toolsetName:e.serverName,inputSchema:e.inputSchema}))}};function _n(e){return typeof e.tool==`string`?e.tool:void 0}function vn(e){return e===de}var yn=class{entries=new Map;globalBus;adapterName;constructor(e){this.globalBus=e.globalBus,this.adapterName=e.adapterName}set(e,t){this.entries.set(e,t)}get(e){return this.entries.get(e)}values(){return this.entries.values()}clear(){this.entries.clear()}async evict(e,t={}){let n=this.entries.get(e);this.entries.delete(e);let r;if(n)try{await n.agent.close({emitSessionClosed:t.emitSessionClosed})}catch(e){r=e}try{await this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`dead`})}catch(t){if(r===void 0)throw t;console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as dead:`,t)}if(r!==void 0)throw r}async evictSilently(e){let t=this.entries.get(e);if(this.entries.delete(e),t)try{await t.agent.close({emitSessionClosed:!1})}catch(t){console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during silent eviction:`,t)}}dispose(e){let t=this.entries.get(e);return t?(t.agent.close().catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during dispose:`,t)}),this.entries.delete(e),this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`disposed`}).catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as disposed:`,t)}),!0):!1}accumulateUsage(e,t,n){let r=this.entries.get(e);if(r)return r.usage.totalInputTokens+=t.inputTokens,r.usage.totalOutputTokens+=t.outputTokens,r.usage.totalCalls++,n&&n!==r.adapterSessionId&&(r.adapterSessionId=n),r}agentIdsBySession(e){return[...this.entries.entries()].filter(([,t])=>t.sessionId===e).map(([e])=>e)}};async function bn(e,t,n){let r={totalInputTokens:0,totalOutputTokens:0,totalCalls:0},i=await e.requestOptional(fe.getBySession,{sessionId:t,status:`completed`});if(!i.handled)return r;for(let e of i.data.turns){let t=e.usage?.byAgent?.[n];t&&(r.totalInputTokens+=t.inputTokens,r.totalOutputTokens+=t.outputTokens)}return r}var xn=class{inFlight=new Map;globalBus;registry;createAgentFn;constructor(e){this.globalBus=e.globalBus,this.registry=e.registry,this.createAgentFn=e.createAgent}handleRehydrateAgent=async e=>{let{agentId:t,cwd:n,model:r}=e.payload,i=this.inFlight.get(t);if(i){await i,e.setResult({});return}let a=(async()=>{let e=this.registry.get(t);if(e){await e.agent.swapConnector({cwd:n,model:r});let i=await e.agent.getAdapterSessionId();i&&(e.adapterSessionId=i),(n!==void 0||r!==void 0)&&await this.globalBus.requestOptional(M.updateRuntime,{agentId:t,cwd:n,model:r}),await this.globalBus.requestOptional(M.updateStatus,{agentId:t,status:`idle`});return}let i=await this.globalBus.requestOptional(M.get,{agentId:t});if(!i.handled||!i.data.agent)throw Error(`Agent ${t} not found in storage`);let a=i.data.agent;if(a.status===`disposed`)throw Error(`Agent ${t} is disposed and cannot be rehydrated`);let o=await this.resolveMcpSessionContext(a.sessionId,a.profileId),s=a.providerConfigId===void 0?void 0:await _e(this.globalBus,a.providerConfigId).catch(()=>U()),c={model:r??a.model,cwd:n??a.cwd,...s!==void 0&&{providerContext:s},...o!==void 0&&{mcpSessionContext:o}},l=await this.createAgentFn(t,a.sessionId,c),u=await this.resolvePersistedSystemPrompt(a.sessionId,a.personaId,a.profileId);await l.initialize({...u!==void 0&&{systemPrompt:u}}),(n!==void 0||r!==void 0)&&await this.globalBus.requestOptional(M.updateRuntime,{agentId:t,cwd:n,model:r});let d=await l.getAdapterSessionId()||a.adapterSessionId;if(!d)throw Error(`Recovered agent ${t} has no adapterSessionId`);let f=await bn(this.globalBus,a.sessionId,t);this.registry.set(t,{agent:l,sessionId:a.sessionId,adapterSessionId:d,usage:f}),await this.globalBus.requestOptional(M.updateStatus,{agentId:t,status:`idle`})})().catch(e=>{let n=e instanceof Error?e.message:String(e);throw Error(`Failed to recover agent ${t}: ${n}`)});this.inFlight.set(t,a);try{await a}finally{this.inFlight.delete(t)}e.setResult({})};async resolveMcpSessionContext(e,t){let n=await this.globalBus.requestOptional(j.get,{sessionId:e});if(!n.handled||!n.data.session)return;let r=await this.globalBus.requestOptional(k.session.resolve,{sessionId:e,projectId:null,profileId:t??null});return r.handled?r.data:void 0}async resolvePersistedSystemPrompt(e,t,n){if(!(!t&&!n))try{let r=await this.globalBus.requestOptional(j.resolveSystemPrompt,{sessionId:e,personaId:t,profileId:n});return r.handled?r.data.systemPrompt:void 0}catch{return}}};async function Sn(e,t){let{prompt:n,model:r,systemPrompt:i,responseSchema:a}=e.payload,o=e.payload.providerContext??U(),s=crypto.randomUUID(),c=new dn({bus:t.globalBus,agentId:s,adapterId:t.adapterId,adapterCapabilities:t.adapterCapabilities}),l={bus:t.adapterBus,agentId:s,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:o,...r!==void 0&&{model:r},...t.platformDefaults?.cwd!==void 0&&{cwd:t.platformDefaults.cwd},...t.platformDefaults?.env!==void 0&&{env:t.platformDefaults.env},errorHandler:e=>{console.warn(`[handleInfer:${t.adapterName}] Ephemeral connector error: ${e.message}`)}},u=await t.configFactory(l),d=await t.connectorFactory(u);try{await d.initialize({...i!==void 0&&{systemPrompt:i},...a!==void 0&&{responseSchema:a}});let r=F(n),o={...i!==void 0&&{systemPrompt:i},turnContext:Q(void 0,a,t.adapterCapabilities),...a!==void 0&&{responseSchema:a}},s=await d.start(r,o),l=await s.messageHandle.waitForCompletion(),u=l.result?.message??``;a!==void 0&&l.outcome===`completed`&&(u=await Cn({connector:d,manager:c,responseSchema:a,startResult:s,text:u})),e.setResult({text:u})}finally{try{await d.close()}catch(e){console.warn(`[handleInfer:${t.adapterName}] Connector cleanup error:`,e)}}}async function Cn(e){let{connector:t,manager:n,responseSchema:r,startResult:i,text:a}=e,o=await n.validateTerminalResult({responseSchema:r,message:a,retryTurn:async({attemptNumber:e,validationErrors:n})=>{let a={deliveryMode:`enqueue`,internalRetry:!0,messageId:`${i.messageHandle.messageId}:structured-output-retry:${e}`,responseSchema:r,turnContext:{...i.messageHandle.turnContext,structuredOutputRetry:{attemptNumber:e,validationErrors:n,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}};return(await(await t.sendMessage(i.messageHandle.message,a)).waitForCompletion()).result?.message??``}});if(o.structuredOutputValidation.status===`failed`)throw wn(o.structuredOutputValidation.errors);return o.message??``}function wn(e){return Error(`Structured output validation failed: ${e.map(e=>e.message).join(`; `)}`)}function Tn(e){return{...e.platformCwd!==void 0&&{cwd:e.platformCwd},...e.platformEnv!==void 0&&{env:e.platformEnv},...e.model!==void 0&&{model:e.model},...e.cwd!==void 0&&{cwd:e.cwd},...e.env!==void 0&&{env:e.env},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:e.resumeAdapterSessionId},...e.harnessId!==void 0&&{harnessId:e.harnessId},...e.clientId!==void 0&&{clientId:e.clientId},...e.clientProfileName!==void 0&&{clientProfileName:e.clientProfileName},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.toolLedger!==void 0&&{toolLedger:e.toolLedger},...e.ephemeral!==void 0&&{ephemeral:e.ephemeral}}}function En(e,t,n){if(e.length===0)return;if(n&&n!==`unresolved`)return e.find(e=>e.definition.id===n)?.definition.availableModels;if(e.length===1)return e[0]?.definition.availableModels;if(!t)return;let r=e.filter(e=>(e.definition.availableModels??[]).some(e=>e.name===t));if(r.length===1)return r[0]?.definition.availableModels}async function Dn(e,t,n,r,i){let{adapterId:a,name:o,clientId:s,getPlatformDefaults:c,globalBus:l}=i,u=r.role,d=Date.now(),f=c(),p=r.cwd??f?.cwd,m=r.clientId??s;try{await l.requestOptional(M.set,{agentId:e,agent:{agentId:e,adapterId:a,adapterName:o,sessionId:t,adapterSessionId:n,model:r.model,cwd:p,role:u,status:`idle`,createdAt:d,lastActivityAt:d,...m!==void 0&&{clientId:m},...r.harnessId!==void 0&&{harnessId:r.harnessId}}})}catch(n){console.error(`[AIAdapter:${o}] Optional agent persistence failed:`,{agentId:e,adapterId:a,sessionId:t,error:n})}l.emit(j.agent.added,{sessionId:t,agentId:e,adapterId:a,adapterName:o,adapterSessionId:n,role:u,model:r.model,cwd:p}),l.emit(T.session.created,{adapterId:a,adapterName:o,adapterSessionId:n,sessionId:t,model:r.model??`unknown`})}async function On(e,t,n,r){try{await e.evict(t)}catch(e){throw AggregateError([r,e],`[AIAdapter:${n}] startAgent persistence failed and live agent cleanup also failed.`,{cause:e})}}async function kn(e,t,n,r){try{if(t.initialMessage!==void 0){let r=F(t.initialMessage),i=await e.start(r,{systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema});return{adapterSessionId:i.adapterSessionId,messageId:String(i.messageHandle.messageId),messageHandle:i.messageHandle}}return await e.initialize({systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema}),{adapterSessionId:await e.getAdapterSessionId()}}catch(n){try{await e.close({emitSessionClosed:!t.ephemeral})}catch(e){console.warn(`[AIAdapter:${r}] Agent cleanup failed after startAgent error:`,e)}throw n}}async function An(e,t,n,r){try{await r?.waitForCompletion(3e5)}finally{await e.evictSilently(t)}}function jn(e){if(e.ephemeral&&e.initialMessage===void 0)throw Error(`ephemeral startAgent requires initialMessage`)}function Mn(e){let{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,registry:a,globalBus:o,createAgent:s}=e;return async function(e){let c=e.payload,l=crypto.randomUUID(),u=c.providerContext??U();jn(c);let d;if(c.ephemeral)d=c.sessionId??crypto.randomUUID();else if((c.mode??`create`)===`create`){let e=await o.requestOptional(j.create,{...c.sessionId?{sessionId:c.sessionId}:{}});d=e.handled?e.data.sessionId:c.sessionId??crypto.randomUUID()}else if(c.sessionId)d=c.sessionId;else throw Error(`startAgent ${c.mode} mode requires sessionId`);let f=await s(l,d,{...c,providerContext:u}),{adapterSessionId:p,messageId:m,messageHandle:h}=await kn(f,c,c.sessionContext?A.parse(c.sessionContext):void 0,n);if(a.set(l,{agent:f,sessionId:d,adapterSessionId:p,usage:{totalInputTokens:0,totalOutputTokens:0,totalCalls:0}}),!c.ephemeral)try{await Dn(l,d,p,{...c,providerContext:u},{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,globalBus:o})}catch(e){throw await On(a,l,n,e),e}e.setResult({success:!0,agentId:l,adapterId:t,sessionId:d,adapterSessionId:p,...m!==void 0&&{messageId:m}}),c.ephemeral&&An(a,l,n,h).catch(e=>{console.warn(`[AIAdapter:${n}] Ephemeral agent cleanup failed:`,e)})}}var Nn=class{adapterId;name;capabilities;nativeTools;namespace;globalBus;adapterBus;registry;cleanupFns=[];rehydrationManager;initialized=!1;clientId;platformDefaults;definitionProviders;agentFactory;configFactory;connectorFactory;constructor(e){this.adapterId=e.adapterId??crypto.randomUUID(),this.name=e.name,this.capabilities=e.capabilities,this.nativeTools=e.nativeTools??[],this.globalBus=e.globalBus??w,this.adapterBus=e.scopedBus,this.namespace=e.namespace,this.agentFactory=e.agentFactory,this.configFactory=e.configFactory,this.connectorFactory=e.connectorFactory,this.clientId=e.clientId,this.platformDefaults=e.platformDefaults,this.definitionProviders=e.definitionProviders??[],this.registry=new yn({globalBus:this.globalBus,adapterName:this.name}),this.rehydrationManager=new xn({globalBus:this.globalBus,registry:this.registry,createAgent:this.createAgent.bind(this)})}setupHandlers(){let e=this.globalBus.withFilter({adapterId:this.adapterId});this.cleanupFns.push(e.on(T.startAgent,Mn({adapterId:this.adapterId,name:this.name,clientId:this.clientId,getPlatformDefaults:()=>this.platformDefaults,registry:this.registry,globalBus:this.globalBus,createAgent:this.createAgent.bind(this)})),e.on(T.rehydrateAgent,this.rehydrationManager.handleRehydrateAgent),e.on(T.infer,e=>Sn(e,{adapterBus:this.adapterBus,globalBus:this.globalBus,adapterId:this.adapterId,adapterName:this.name,adapterCapabilities:this.capabilities,platformDefaults:this.platformDefaults,configFactory:this.configFactory,connectorFactory:this.connectorFactory})),e.on(E.session.closed,this.handleSessionClosed),e.on(E.usage,this.handleUsage),this.globalBus.on(j.closed,this.handleSessionClosedByService),e.on(T.listAgents,e=>{e.setResult({agents:Array.from(this.registry.values()).map(e=>({agentId:e.agent.agentId,sessionId:e.adapterSessionId,adapterSessionId:e.adapterSessionId}))})}),e.on(T.getAgent,e=>{let t=this.registry.get(e.payload.agentId);e.setResult({agent:t?{agentId:t.agent.agentId,sessionId:t.sessionId,adapterSessionId:t.adapterSessionId}:null})}),e.on(T.stopAgent,e=>{e.setResult({success:this.disposeAgent(e.payload.agentId)})}),e.on(T.getCapabilities,e=>{e.setResult({capabilities:this.capabilities,nativeTools:this.nativeTools})}))}handleSessionClosed=e=>{let{agentId:t,adapterSessionId:n,reason:r}=e.payload,i=this.registry.get(t);if(!i){console.warn(`Agent ${t} not found, can't emit AgentSubjects.session.closed`);return}this.registry.evict(t).catch(e=>{console.error(`[AIAdapter:${this.name}] Failed to evict agent ${t} after session.closed:`,e)}),this.globalBus.emit(T.session.closed,{adapterId:this.adapterId,adapterName:this.name,agentId:t,sessionId:i.sessionId,adapterSessionId:n,reason:r})};handleSessionClosedByService=async e=>{let{sessionId:t}=e.payload,n=this.registry.agentIdsBySession(t);await Promise.all(n.map(e=>this.registry.evict(e,{emitSessionClosed:!1}).catch(t=>console.error(`[AIAdapter:${this.name}] Failed to evict agent ${e} after session.closed:`,t))))};handleUsage=e=>{let{agentId:t,adapterSessionId:n,inputTokens:r,outputTokens:i}=e.payload,a=this.registry.accumulateUsage(t,{inputTokens:r,outputTokens:i},n);a&&this.globalBus.emit(T.session.usage,{adapterId:this.adapterId,adapterName:this.name,sessionId:a.sessionId,adapterSessionId:a.adapterSessionId,...a.usage})};async init(){this.initialized||(this.adapterBus??=await this.namespace.scopedBus(),this.setupHandlers(),await this.onInit(),this.initialized=!0,await this.globalBus.emit(T.initialized,{adapterId:this.adapterId,adapterName:this.name,capabilities:this.capabilities,nativeTools:this.nativeTools}))}async onInit(){}async createAgent(e,t,n){if(!this.adapterBus)throw Error(`Adapter bus not initialized. Did you forget to call init()?`);let{model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,reasoningEffort:c,mcpSessionContext:l,harnessId:u,ephemeral:d}=n,f=n.clientId??this.clientId,p=`adapterSessionId`in n&&`mode`in n&&n.mode===`resume`?n.adapterSessionId:void 0,m=En(this.definitionProviders,r,n.providerContext?.definitionId),h=l===void 0?void 0:new gn,g={agentId:e,adapterId:this.adapterId,adapterName:this.name,adapterBus:this.adapterBus,capabilities:this.capabilities,nativeTools:this.nativeTools,availableModels:m,configFactory:this.configFactory,connectorFactory:this.connectorFactory,sessionId:t,...n.providerContext!==void 0&&{providerContext:n.providerContext},...Tn({platformCwd:this.platformDefaults?.cwd,platformEnv:this.platformDefaults?.env,model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,reasoningEffort:c,resumeAdapterSessionId:p,harnessId:u,clientId:f,clientProfileName:n.clientProfileName,mcpSessionContext:l,toolLedger:h,ephemeral:d})};return this.agentFactory(g)}async closeAsync(){try{let e=await Promise.allSettled([...this.registry.values()].map(e=>e.agent.close()));this.registry.clear(),await this.onClose();let t=e.filter(e=>e.status===`rejected`).map(e=>e.reason instanceof Error?e.reason:Error(String(e.reason)));t.length>0&&console.warn(`[AIAdapter] ${t.length} agent(s) failed to close:`,t)}finally{for(let e of this.cleanupFns)try{e()}catch(e){console.warn(`[AIAdapter] Cleanup function failed:`,e)}this.cleanupFns=[],this.initialized=!1}}close(){this.closeAsync()}async onClose(){}getAgent(e){let t=this.registry.get(e);if(t)return Object.assign({},t.agent,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId})}disposeAgent(e){return this.registry.dispose(e)}getActiveAgents(){return Array.from(this.registry.values()).map(e=>Object.assign({},e.agent,{sessionId:e.sessionId,adapterSessionId:e.adapterSessionId}))}isInitialized(){return this.initialized}};function Pn(e){let t={adapterSessionId:e.adapterSessionId,lineage:e.lineage,messages:e.messagePayloads};return e.compactionMetadata&&(t.compaction=e.compactionMetadata),e.compressChildren?.length&&(t.children=e.compressChildren.map(Pn)),t}var Fn=class{processLogFile(e){let t=Array.isArray(e)?e:[e],n=this.extractSessionContext(t),r=this.processRecords(t,n);return{adapterSessionId:n.adapterSessionId,sessionEvent:n.sessionEvent,messageEvents:[n.startedEvent,...r],messagePayloads:[],lineage:{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null}}}};function In(e){let t=new Map,n=[];return n.push(e.on(a.get,e=>{let{filePath:n}=e.payload,r=t.get(n)??null;e.setResult({cursor:r})})),n.push(e.on(a.set,e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;t.set(n,{filePath:n,bytesRead:r,lastModified:i}),e.setResult({success:!0})})),n.push(e.on(a.delete,e=>{let{filePath:n}=e.payload,r=t.delete(n);e.setResult({success:r})})),()=>{n.forEach(e=>e()),t.clear()}}const Ln=C.object({sessions:C.record(C.string(),C.object({state:C.enum([`idle`,`active`]),currentTurnId:C.string().optional()}))}).default({sessions:{}});var Rn=class{options;sessions=new Map;generateTurnId;constructor(e){this.options=e,this.generateTurnId=e.generateTurnId??(()=>crypto.randomUUID())}processRecord(e){let t=this.options.getSessionId(e),n=this.getOrCreateSessionState(t),r=[],i=this.options.detectTurnStart(e),a=this.options.detectTurnComplete(e);if(i){n.state===`active`&&n.currentTurnId&&r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId});let e=this.generateTurnId(t);n.state=`active`,n.currentTurnId=e,r.push({type:`turn.started`,sessionId:t,turnId:e})}else a&&n.state===`active`&&n.currentTurnId&&(r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId}),n.state=`idle`,n.currentTurnId=void 0);return r}getState(e){return this.sessions.get(e)?.state??`idle`}getCurrentTurnId(e){return this.sessions.get(e)?.currentTurnId}hasActiveTurn(e){return this.getState(e)===`active`}resetSession(e){return this.sessions.delete(e)}resetAll(){this.sessions.clear()}serialize(){let e={};for(let[t,n]of this.sessions)e[t]={state:n.state,currentTurnId:n.currentTurnId};return{sessions:e}}restore(e){this.sessions.clear();for(let[t,n]of Object.entries(e.sessions))this.sessions.set(t,{state:n.state,currentTurnId:n.currentTurnId})}getTrackedSessions(){return Array.from(this.sessions.keys())}forceCompleteTurn(e){let t=this.sessions.get(e);if(!t||t.state!==`active`||!t.currentTurnId)return;let n={type:`turn.completed`,sessionId:e,turnId:t.currentTurnId};return t.state=`idle`,t.currentTurnId=void 0,n}getOrCreateSessionState(e){let t=this.sessions.get(e);return t||(t={state:`idle`,currentTurnId:void 0},this.sessions.set(e,t)),t}};const zn=C.object({eventType:C.literal(`agent_started`),model:C.string().optional()}),Bn=C.object({eventType:C.literal(`agent_complete`),message:C.string().optional(),error:C.string().optional()}),Vn=C.object({eventType:C.literal(`error`),message:C.string(),code:C.string().or(C.number()).optional(),type:C.string().optional()}),Hn=C.object({eventType:C.literal(`tool_started`),toolName:C.string(),toolCallId:C.string()}),Un=C.object({eventType:C.literal(`tool_completed`),toolName:C.string(),toolCallId:C.string(),result:C.string(),success:C.boolean()});export{Nn as AIAdapter,pn as AIAgent,K as AIAgentConnector,Bn as AgentCompleteEventSchema,St as AgentConnectorLifecycleManager,Z as AgentEventBridge,X as AgentLifecycleEmitter,gt as AgentPayloadEmitter,xt as AgentRuntimeMutationManager,zn as AgentStartedEventSchema,_t as AgentTurnExecutor,dt as BaseConnectorSession,q as BaseConnectorTurn,Fn as BaseLogImporter,Vn as ErrorEventSchema,o as ImportCursorPositionSchema,i as ImportCursorStorageNamespace,a as ImportCursorStorageSubjects,Ue as MAKAIO_CONFORMANCE_PRIMARY_MODEL_ENV,R as MAKAIO_CONFORMANCE_PROVIDER_DEFINITIONS_ENV,He as MAKAIO_CONFORMANCE_PROVIDER_ENV,We as MAKAIO_CONFORMANCE_SECONDARY_MODEL_ENV,G as MessageHandle,J as MessageLifecycleTracker,pt as ProceduralAgentConnector,ft as ProceduralConnectorTurn,tt as ScopedToolApprovalSchema,at as SessionLifecycle,gn as SessionToolLedger,Y as ToolCallTracker,Un as ToolCompletedEventSchema,Hn as ToolStartedEventSchema,Rn as TurnTracker,Ln as TurnTrackerSerializedStateSchema,ot as UserMessageQueue,n as cleanEnvForAdapter,xe as createAdapterNamespace,L as createTestProviderContext,nt as createToolApprovalHandler,Ie as defineDiscriminatedHandlers,Le as defineDiscriminatedHandlersSync,_n as extractMcpCallTarget,we as formatContextBlockAsText,Pe as formatContextBlocksAsText,Ze as formatMessageHistoryAsTranscript,vn as isMcpCallTool,rt as isTextLikeMimeType,ut as markCompletedWithFinalResult,et as mergeScopedToolApproval,I as normalizeEnvValue,F as normalizeMessageInput,H as normalizeMimeType,Fe as parseAIAdapterCapabilities,Re as processDiscriminatedItems,ze as processDiscriminatedItemsSync,W as processQueueMessages,ht as registerAgentBusHandlers,In as registerMemoryImportCursorStorage,Je as resolveConformanceTestPreset,Ye as resolveDisabledNativeTools,it as resolvePresetCredentials,V as resolveRequiredSessionId,Ve as resolveTestConfig,P as safeJsonStringify,$e as serializeBlockToText,Me as serializeTurnContext,Pn as toImportSegment};
|
|
11
|
+
`)}function Qe(e){throw Error(`Unhandled MessageBlock variant: ${JSON.stringify(e)}`)}function $e(e){switch(e.type){case`text`:return e.content;case`reasoning`:return e.content;case`tool_call`:return`[Tool: ${e.name}]\n${JSON.stringify(e.args)}`;case`tool_output`:return`[Tool ${e.isError?`Error`:`Result`} ${e.toolCallId}]\n${e.output}`;case`image`:return`[Image]`;case`document`:return`[Document]`;case`attachment`:return`[Attachment: ${e.displayName?.trim()?e.displayName:e.fileName||`Attachment`}]`;default:return Qe(e)}}function B(e,t,n,r,i){let a=e??(i?t:void 0);if(!a)throw Error(`[${r}] toGlobalToolApproval: ${n} must come from tool approval context`+(i?` or trusted payload`:``));return a}function V(e,t,n,r=!1){return B(e,t,`sessionId`,n,r)}function et(e,t,n,r={}){let i=r.allowPayloadIdentityFallback??!1;if(i){let e=[t.agentId,t.adapterId,t.adapterName,t.adapterSessionId],r=e.filter(Boolean).length;if(r>0&&r<e.length)throw Error(`[${n}] toGlobalToolApproval: context must supply all four identity fields (agentId, adapterId, adapterName, adapterSessionId) or none — partial context with allowPayloadIdentityFallback creates a mixed-source identity tuple`)}let a=V(t.sessionId,e.sessionId,n,r.allowPayloadSessionFallback??!1);return{...e,agentId:B(t.agentId,e.agentId,`agentId`,n,i),adapterId:B(t.adapterId,e.adapterId,`adapterId`,n,i),adapterName:B(t.adapterName,e.adapterName,`adapterName`,n,i),adapterSessionId:B(t.adapterSessionId,e.adapterSessionId,`adapterSessionId`,n,i),sessionId:a}}const tt={request:D.request.extend({sessionId:C.string().optional()}),response:D.response};function nt(e,t,n){return function(r,i){return r.on(e,async e=>{try{let r=typeof i==`function`?await i():i,a=t(e.payload,r),o=await w.request(E.toolApprove,a);e.setResult(n(o))}catch(t){console.error(`[createToolApprovalHandler] Tool approval request failed:`,t);let r=t instanceof Error?`: ${t.message}`:``;e.setResult(n({action:`deny`,message:`Tool approval request failed${r}`,shouldAbort:!0}))}})}}function H(e){return e&&e.split(`;`)[0].trim().toLowerCase()||`application/octet-stream`}function rt(e){let t=H(e);return t.startsWith(`text/`)?!0:[`application/json`,`application/xml`,`application/sql`,`application/graphql`,`application/javascript`,`application/typescript`,`application/x-yaml`,`application/toml`].includes(t)}function it(e){if(!e.credentialEnvVars)return;let t={};for(let[n,r]of Object.entries(e.credentialEnvVars)){let e=process.env[r];e!==void 0&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}function U(){return{providerConfigId:`sentinel`,definitionId:`unresolved`,credentialRefs:{}}}var at=class{abortController;terminated=!1;constructor(e){this.abortController=e??new AbortController}get signal(){return this.abortController.signal}get isTerminated(){return this.terminated}abort(e){this.terminated||(this.terminated=!0,this.abortController.abort(),e&&Promise.resolve(e()).catch(e=>{console.error(`Error during session cleanup:`,e)}))}onAbort(e){this.abortController.signal.addEventListener(`abort`,e)}},ot=class{queue=[];enqueue(e){if(e.deliveryMode===`replace`){for(let t of this.queue)t.state===`queued`&&(t.supersededBy=e.messageId,t.markCompleted({outcome:`superseded`,supersededBy:e.messageId}));this.removeSuperseded()}if(e.internalRetry&&e.deliveryMode===`enqueue`){this.enqueueInternalRetry(e);return}this.queue.push(e)}enqueueInternalRetry(e){let t=this.queue.findIndex(e=>e.deliveryMode!==`immediate`&&!e.internalRetry);if(t===-1){this.queue.push(e);return}this.queue.splice(t,0,e)}removeSuperseded(){for(let e=this.queue.length-1;e>=0;e--)this.queue[e].supersededBy&&this.queue.splice(e,1)}dequeue(){return this.queue.shift()}peek(){return this.queue[0]}isEmpty(){return this.queue.length===0}size(){return this.queue.length}clear(){this.queue.length=0}findImmediate(){return this.queue.find(e=>e.deliveryMode===`immediate`)}removeImmediate(e){let t=this.queue.indexOf(e);t>=0&&this.queue.splice(t,1)}drainEnqueued(){let e=[];for(let t=this.queue.length-1;t>=0;t--)this.queue[t].deliveryMode===`enqueue`&&e.unshift(this.queue.splice(t,1)[0]);return e}};async function W(e,t){let n=t.getCurrentTurn(),r=t.extractContent??st;if(n?.canAcceptImmediate()){let i=e.findImmediate();if(i)if(e.removeImmediate(i),(await n.pause()).turnEnded)i.markCompleted({outcome:`rejected`});else{let a=n.getMessageHandle(),o=e.drainEnqueued(),s=[];a&&!a.isProcessed&&(s.push(r(a)),a.supersededBy=i.messageId,a.markCompleted({outcome:`superseded`,supersededBy:i.messageId}));for(let e of o)s.push(r(e)),e.supersededBy=i.messageId,e.markCompleted({outcome:`merged`,mergedInto:i.messageId});let c=t.collectMergeExtra?.(a,o);return await t.onBeforeImmediateTurn?.(),await t.startNewTurn(i,s,c),!0}}let i=e.peek();return(!n||n.isCompleted()||i?.internalRetry===!0&&n.getMessageHandle().isProcessed)&&i?i.deliveryMode===`immediate`&&n?.isCompleted()?(e.dequeue(),i.markCompleted({outcome:`rejected`}),W(e,t)):(e.dequeue(),await t.startNewTurn(i),!0):!1}function st(e){return e.message.message}const ct=[`active`,`step_finished`,`turn_finished`,`processing_finished`];function lt(e,t){if(e===t)return null;let n=[];switch(t){case`processing_started`:break;case`turn_started`:([`idle`,`processing_finished`,`paused`].includes(e)||e===`active`)&&n.push(`processing_started`);break;case`step_started`:[`idle`,`processing_finished`,`paused`].includes(e)||e===`active`?n.push(`processing_started`,`turn_started`):[`processing_started`,`turn_finished`].includes(e)&&n.push(`turn_started`);break;case`step_finished`:break;case`turn_finished`:e===`step_started`&&n.push(`step_finished`);break;case`processing_finished`:e===`step_started`?n.push(`step_finished`,`turn_finished`):[`turn_started`,`step_finished`].includes(e)&&n.push(`turn_finished`);break}return{isCompletionState:ct.includes(t),statesToEmit:[...n,t]}}var G=class{messageId;message;deliveryMode;responseSchema;internalRetry;deferredCompletion;deferredAcknowledgement;state;isAcknowledged=void 0;completionResult=void 0;completionStarted=!1;completionTransforms=[];completionObservers=[];mergedInto;mergedFrom;supersededBy;deferredAdapterSessionId=new N;_adapterSessionId;_messageHistory;_turnContext;constructor(e,t,n,r,i,a,o=!1){this.messageId=e,this.message=t,this.deliveryMode=n,this.responseSchema=a,this.internalRetry=o,this.deferredCompletion=new N,this.deferredAcknowledgement=new N,this.state=`queued`,this._messageHistory=r,this._turnContext=i}get messageHistory(){return this._messageHistory}set messageHistory(e){this._messageHistory=e}get turnContext(){return this._turnContext}set turnContext(e){this._turnContext=e}get adapterSessionId(){return this._adapterSessionId}set adapterSessionId(e){e&&!this._adapterSessionId&&(this._adapterSessionId=e,this.deferredAdapterSessionId.resolve(e))}waitForAdapterSessionId(){return this._adapterSessionId?Promise.resolve(this._adapterSessionId):this.deferredAdapterSessionId.getPromise()}get isProcessed(){return this.state===`completed`||this.state===`cancelled`}getState(){return this.state}updateState(e){this.state=e}async cancel(){return this.updateState(`cancelled`),this.completionStarted=!0,this.completionResult={outcome:`cancelled`},this.deferredAcknowledgement.reject(Error(`Message cancelled`)),this.deferredCompletion.resolve(this.completionResult),!0}markAcknowledged(e=!0){this.isAcknowledged===void 0&&(this.isAcknowledged=e,this.updateState(`acknowledged`),this.deferredAcknowledgement.resolve(e))}addCompletionTransform(e){if(this.completionStarted)throw Error(`Cannot add a completion transform after completion has started`);this.completionTransforms.push(e)}addCompletionObserver(e){if(this.completionStarted)throw Error(`Cannot add a completion observer after completion has started`);this.completionObservers.push(e)}markCompleted(e){this.completionStarted?console.warn(`markCompleted called for messageId: ${this.messageId} but already completed.`):(this.completionStarted=!0,this.updateState(`completed`),this.isAcknowledged===void 0&&(this.isAcknowledged=!1,this.deferredAcknowledgement.resolve(!1)),this.resolveCompletion(e))}async resolveCompletion(e){let t=e;try{for(let e of this.completionTransforms)t=await e(t)}catch(e){t={outcome:`error`,error:e instanceof Error?e:String(e)}}this.completionResult=t,this.notifyCompletionObservers(t),this.deferredCompletion.resolve(t)}notifyCompletionObservers(e){for(let t of this.completionObservers)try{t(e)}catch(e){console.warn(`[MessageHandle] completion observer failed for messageId: ${this.messageId}`,e)}}async waitForAcknowledgment(e){if(this.isAcknowledged!==void 0)return this.isAcknowledged;if(e){let t=await Promise.race([this.deferredAcknowledgement.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Acknowledgment timeout`)),e))]);if(t instanceof Error)throw this.markCompleted({outcome:`error`,error:t}),t;return t}return this.deferredAcknowledgement.getPromise()}async waitForCompletion(e){if(this.completionResult)return this.completionResult;if(e){let t=await Promise.race([this.deferredCompletion.getPromise(),new Promise(t=>setTimeout(()=>t(Error(`Completion timeout`)),e))]);if(t instanceof Error)throw t;return t}return this.deferredCompletion.getPromise()}};function ut(e,t,n){let r=n!==void 0&&!e.isProcessed;return e.markCompleted(t),r?e.waitForCompletion().then(async t=>{try{await n(e,t)}catch(t){console.warn(`[MessageHandle] completion notification failed for messageId: ${e.messageId}`,t)}}):Promise.resolve()}var K=class{agentId;adapterSessionId;sessionId;pendingMessageHandle;scopedBus;filteredBus;errorHandler;deferredInterrupt;emittery=new r;processingState=`idle`;adapterId;timeouts;lastResult=null;config;model;providerConfigId;cwd;currentReasoningEffort;supportedReasoningLevels;env;_currentTurnNumber=0;_pendingCanonicalTurnNumber;adapterName;systemPrompt;constructor(e){let t=e.cwd??ve.tmpdir();if(!ne.existsSync(t))throw new ie(t);this.agentId=e.agentId??crypto.randomUUID(),this.scopedBus=e.bus,this.filteredBus=e.bus.withFilter({agentId:this.agentId}),this.adapterId=e.adapterId,this.adapterName=e.adapterName,this.adapterSessionId=e.adapterSessionId,this.sessionId=e.sessionId,this.timeouts=e.timeouts??ye([]),this.errorHandler=e.errorHandler,this.model=e.model,this.providerConfigId=e.providerConfigId,this.cwd=t,this.currentReasoningEffort=e.reasoningEffort,this.supportedReasoningLevels=e.supportedReasoningLevels,this.config=e,this.env=n(e?.env??be.env)}getProcessingState(){return this.processingState}handlePause(e){this.updateProcessingState(`paused`)}captureSystemPrompt(e){e!==void 0&&(this.systemPrompt=e)}async updateProcessingState(e){let t=lt(this.processingState,e);if(!t)return;let{statesToEmit:n}=t;this.processingState=e;for(let e of n)await this.emittery.emit(`processingStateChanged`,e)}onProcessingStateChanged(e){return this.emittery.on(`processingStateChanged`,e)}async onceProcessingStateChanged(e){return this.emittery.once(`processingStateChanged`,e)}createMessageHandle(e,t){let n=new G(t?.messageId??crypto.randomUUID(),e,t?.deliveryMode??`enqueue`,t?.messageHistory,t?.turnContext,t?.responseSchema,t?.internalRetry??!1);return n.adapterSessionId=this.adapterSessionId,t?.internalRetry||this.config.onMessageSent?.(n),n}markToolRefreshPending(){}setCanonicalTurnNumber(e){if(!Number.isInteger(e)||e<1)throw RangeError(`setCanonicalTurnNumber: expected positive integer, got ${e}`);if(e<=this._currentTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} ≤ current (${this._currentTurnNumber})`);if(this._pendingCanonicalTurnNumber!==void 0&&e<this._pendingCanonicalTurnNumber)throw RangeError(`setCanonicalTurnNumber: ${e} < pending (${this._pendingCanonicalTurnNumber})`);this._pendingCanonicalTurnNumber=e}consumeTurnNumber(){return this._pendingCanonicalTurnNumber===void 0?(this._currentTurnNumber+=1,this._currentTurnNumber):(this._currentTurnNumber=this._pendingCanonicalTurnNumber,this._pendingCanonicalTurnNumber=void 0,this._currentTurnNumber)}get currentTurnNumber(){return this._currentTurnNumber}get pendingTurnNumber(){return this._pendingCanonicalTurnNumber}async changeModelInPlace(e){return!1}async changeCwdInPlace(e){return!1}async changeReasoningInPlace(e){return!1}handleError(e,t=!1){let n=e instanceof Error?e:Error(String(e));console.warn(`[AIAgentConnector:handleError] pendingMessageHandle=${this.pendingMessageHandle?.messageId}, errorType=${n.name}, terminate=${t}`),this.errorHandler?.(n,t),this.pendingMessageHandle&&(this.pendingMessageHandle.markCompleted({outcome:`error`,error:n}),this.pendingMessageHandle=void 0,this.handlePause(`error`)),t&&this.abort()}handleToolApprovalDenied(e,t){e!==`not_requested`&&queueMicrotask(()=>{this.handleError(Error(`Tool use denied by approval handler: ${t}`),!1)})}getAgentId(){return this.agentId}getAdapterName(){return this.adapterName}getTimeoutMs(e){return this.timeouts.values[e]}requestToolApproval(e,t){return this.scopedBus.request(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId,sessionId:this.sessionId})}async requestToolApprovalWithHandling(e,t){return this.requestToolApproval(e,t).catch(e=>{let t=e;throw(e instanceof ue||e instanceof le)&&(t=Error(`Tool approval request failed, make sure that there's a handler registered: `+e.message)),this.handleError(t,!1),e})}emit(e,t){return this.scopedBus.emit(e,{...t,adapterName:this.adapterName,agentId:this.agentId,adapterId:this.adapterId,adapterSessionId:this.adapterSessionId})}on(e,t,n){return this.filteredBus.on(e,t,n)}once(e,t){return this.filteredBus.once(e,t)}logLowLevelEvent(e){}},dt=class{config;bus;sessionId;currentTurn;constructor(e){this.config=e,this.bus=e.bus}async abort(){await this.currentTurn?.pause()}async sendMessage(e,t){throw Error(`Use processQueue instead`)}async getAdapterSessionId(){return this.sessionId}},q=class{state;bus;adapterId;adapterName;stateChangedCallback;constructor(e,t,n,r){this.bus=e,this.adapterId=t,this.adapterName=n,this.state=r}onStateChanged(e){this.stateChangedCallback=e}async transitionTo(e){let t=this.state;this.state=e,await this.emitStateChange(t,e),await this.stateChangedCallback?.(t,e)}getState(){return this.state}getMessageHandle(){return this.activeMessageHandle}markAcknowledged(){this.activeMessageHandle.markAcknowledged()}markCompleted(e){this.activeMessageHandle.markCompleted(e)}},ft=class extends q{activeMessageHandle;connectorBus;agentId;turnSubjects;aborted=!1;constructor(e,t){super(e.bus,e.adapterId,e.adapterName,t),this.connectorBus=e.bus,this.agentId=e.agentId,this.activeMessageHandle=e.messageHandle,this.turnSubjects=e.turnSubjects}async emitStateChange(e,t){let n={adapterId:this.adapterId,agentId:this.agentId,oldState:e,newState:t,timestamp:Date.now()};switch(await this.connectorBus.emit(this.turnSubjects.state_changed,n),t){case`turn_started`:await this.connectorBus.emit(this.turnSubjects.turn_started,n);break;case`step_started`:await this.connectorBus.emit(this.turnSubjects.step_started,n);break;case`step_finished`:await this.connectorBus.emit(this.turnSubjects.step_finished,n);break;case`turn_finished`:await this.connectorBus.emit(this.turnSubjects.turn_finished,n);break}}async start(){await this.transitionTo(`turn_started`)}async markStepStarted(){(this.state===`turn_started`||this.state===`step_finished`)&&await this.transitionTo(`step_started`)}async markStepFinished(){this.state===`step_started`&&await this.transitionTo(`step_finished`)}async markTurnFinished(){await this.transitionTo(`turn_finished`)}async pause(){if(this.state===`turn_finished`)return{stateBeforePause:this.state,turnEnded:!0};let e=this.state;return this.aborted=!0,{stateBeforePause:e,turnEnded:!1}}async resume(e){throw Error(`${this.adapterName} does not support resume - create new turn with merged content`)}isPaused(){return this.aborted}isCompleted(){return this.state===`turn_finished`}canAcceptImmediate(){return this.state!==`turn_finished`&&!this.aborted}},pt=class extends K{turnEventsWired=!1;getWireSessionConfig(){}wireSessionEvents(){if(this.turnEventsWired)return;this.turnEventsWired=!0;let e=this.getTurnSubjects(),t=this.getWireSessionConfig();this.on(e.turn_started,(async()=>{try{await t?.onTurnStarted?.()}catch(e){console.error(`[ProceduralAgentConnector] onTurnStarted hook failed:`,e)}await this.updateProcessingState(`turn_started`)})),this.on(e.step_started,(async()=>{await this.updateProcessingState(`step_started`)})),this.on(e.step_finished,(async()=>{await this.updateProcessingState(`step_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()&&await e.processQueue(t)})),this.on(e.turn_finished,(async()=>{await this.updateProcessingState(`turn_finished`);let e=async()=>{await this.updateProcessingState(`processing_finished`);let e=this.getSession(),t=this.getSessionQueue();e&&!t.isEmpty()?await e.processQueue(t):await this.updateProcessingState(`idle`)};t?.onTurnFinished?await t.onTurnFinished(e):await e()}))}async processUserMessages(e){let[t]=e,n=await this.ensureSession(),r=this.getSessionQueue();return r.enqueue(t),t.adapterSessionId=this.adapterSessionId,(this.getProcessingState()===`idle`||this.getProcessingState()===`paused`)&&await this.updateProcessingState(`active`),await n.processQueue(r),new Set([t])}async initialize(e){this.getSession()||(this.captureSystemPrompt(e?.systemPrompt),await this.ensureSession())}async start(e,t){this.captureSystemPrompt(t?.systemPrompt);let n=await this.sendMessage(e,t);return{adapterSessionId:await this.getAdapterSessionId(),messageHandle:n,agentId:this.agentId}}async complete(){for(;this.getProcessingState()!==`idle`&&this.getProcessingState()!==`paused`;)await this.onceProcessingStateChanged();return this.lastResult}acceptsImmediate(){return this.getSession()?.getCurrentTurn()?.canAcceptImmediate()??!1}};function mt(e,t,n,r,i,a,o){let s=t=>async(n,r)=>{let i=t,a={...r,agentId:i.agentId,adapterId:i.adapterId,adapterName:i.adapterName,adapterSessionId:i.adapterSessionId,messageId:i.messageId};await e.emit(n,a)};return t.on(n,(async t=>{let n=r?t.payload[r]:t.payload;if(!n||typeof n!=`object`)return;let c=a[n[i]];if(!c)return;let l=await o(n),u=s(l);if(typeof c==`function`)await c(l,u);else{let{sessionId:t,...n}=l;await e.emit(c,n)}}))}var J=class{currentMessageId;currentTurnId;emitGlobal;constructor(e){this.emitGlobal=e.emitGlobal}getCurrentMessageId(){return this.currentMessageId}setCurrentTurnId(e){this.currentTurnId=e}clearCurrentTurnId(){this.currentTurnId=void 0}getCurrentTurnId(){return this.currentTurnId}acknowledge(e){let{messageId:t,message:n,mergedFrom:r}=e;this.currentMessageId=t,this.emitGlobal(E.user_message.acknowledged,{messageId:t,mergedFrom:r}),this.emitGlobal(E.turn.started,{messageId:t,content:n,mergedFrom:r})}complete(e,t){let{messageId:n}=e;this.currentMessageId===n&&(this.currentMessageId=void 0,this.currentTurnId=void 0),this.emitGlobal(E.turn.completed,{messageId:n,message:t.result?.message,outcome:t.outcome,error:t.error instanceof Error?t.error.message:typeof t.error==`string`?t.error:void 0,...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation}}),this.emitGlobal(E.user_message.completed,{messageId:n,outcome:t.outcome,supersededBy:t.supersededBy,mergedInto:t.mergedInto})}track(e,t,n){n!==void 0&&e.addCompletionTransform(async e=>{try{return await n(e)}catch(t){let n={status:`failed`,errors:[{message:t instanceof Error?t.message:`Structured output validation failed`,instancePath:``,schemaPath:`#`}]};return{...e,structuredOutputValidation:n}}}),e.waitForAcknowledgment().then(()=>{this.acknowledge(e)}),e.waitForCompletion().then(n=>{this.complete(e,n),t&&t(e.messageId,n)})}},Y=class{pending=[];register(e,t,n){let r=n??crypto.randomUUID();return this.pending.push({correlationId:r,toolName:e,args:t,nativeId:n,registeredAt:Date.now()}),r}resolve(e){if(e.nativeId){let t=this.pending.findIndex(t=>t.nativeId===e.nativeId);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`nativeId`,toolName:e.toolName,args:e.args}}}if(e.toolName){let t=this.pending.findIndex(t=>t.toolName===e.toolName);if(t>=0){let[e]=this.pending.splice(t,1);return{correlationId:e.correlationId,strategy:`toolName`,toolName:e.toolName,args:e.args}}}if(!e.nativeId&&!e.toolName&&this.pending.length>0){let[e]=this.pending.splice(0,1);return{correlationId:e.correlationId,strategy:`oldest`,toolName:e.toolName,args:e.args}}return{correlationId:null,strategy:`none`}}clear(){this.pending=[]}};function ht(e){let t=e.globalBus.withFilter({agentId:e.agentId});return[t.on(E.sendMessage,e.onSendMessage),t.on(E.interrupt,e.onInterrupt),t.on(E.getCapabilities,t=>{t.setResult(e.getCapabilities())}),t.on(E.cwd.change,e.onCwdChange),t.on(E.model.change,e.onModelChange),t.on(E.mcp.servers.set,e.onMcpServersSet),t.on(E.credential.change,e.onCredentialChange)]}var X=class{sessionClosedEmitted=!1;agentStartedEmitted=!1;agentCompleteEmitted=!1;pendingErrorCategory;config;constructor(e){this.config=e}async emitStart(e){this.agentStartedEmitted=!0,this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0,await this.config.emitStarted(e)}resetTurnState(){this.agentCompleteEmitted=!1,this.pendingErrorCategory=void 0}async emitCompletion(e){if(this.agentCompleteEmitted)return;await this.config.onBeforeEmitCompletion(),this.agentCompleteEmitted=!0,this.config.clearToolCallTracker();let t=this.pendingErrorCategory;this.pendingErrorCategory=void 0,this.config.globalBus.requestOptional(M.updateStatus,{agentId:this.config.agentId,status:`idle`}),await this.config.emitComplete({...e,...t&&{errorCategory:t}})}emitError(e){this.config.clearToolCallTracker(),this.pendingErrorCategory=e.errorCategory}emitSessionClosed(e){this.sessionClosedEmitted||(this.sessionClosedEmitted=!0,this.config.emitSessionClosed({reason:e}).catch(e=>{console.warn(`[AIAgent] Failed to emit session.closed for agent ${this.config.agentId}:`,e)}))}},Z=class{emitUsagePayload;emitContextWindowUpdatedPayload;emitToolUsePayload;emitToolOutputPayload;emitAdapterLogPayload;emitStepStartedPayload;emitStepFinishedPayload;toolCallTracker;getBlockIndex;incrementBlockIndex;getUsageModel;constructor(e){this.emitUsagePayload=e.emitUsage,this.emitContextWindowUpdatedPayload=e.emitContextWindowUpdated,this.emitToolUsePayload=e.emitToolUse,this.emitToolOutputPayload=e.emitToolOutput,this.emitAdapterLogPayload=e.emitAdapterLog,this.emitStepStartedPayload=e.emitStepStarted,this.emitStepFinishedPayload=e.emitStepFinished,this.toolCallTracker=e.toolCallTracker,this.getBlockIndex=e.getBlockIndex,this.incrementBlockIndex=e.incrementBlockIndex,this.getUsageModel=e.getUsageModel}async trackUsage(e){await this.emitUsagePayload({...e,model:this.getUsageModel()??`unknown`})}async emitContextWindowUpdate(e){let{currentTokens:t,maxTokens:n,cachedTokens:r}=e,i=n>0&&Number.isFinite(n)&&Number.isFinite(t),a=i?Math.min(100,t/n*100):0,o=i?a>=80?`critical`:a>=60?`warn`:`ok`:`critical`;await this.emitContextWindowUpdatedPayload({currentTokens:t,maxTokens:n,cachedTokens:r,percentage:a,level:o})}async emitToolUse(e,t,n){let r=this.toolCallTracker.register(e,t,n);return await this.emitToolUsePayload({toolName:e,args:t,toolCallId:r}),r}async emitToolOutput(e,t){let{correlationId:n,strategy:r,toolName:i,args:a}=this.toolCallTracker.resolve(t);if(!n){await this.emitAdapterLogPayload({level:`warn`,message:`Tool output arrived with no pending tool calls. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()});let n=crypto.randomUUID();return await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:t.toolName??i}),{toolCallId:n,toolName:t.toolName??i??`unknown`}}return r===`oldest`&&await this.emitAdapterLogPayload({level:`warn`,message:`Tool output correlation used fallback. Hints: ${JSON.stringify(t)}`,timestamp:Date.now()}),await this.emitToolOutputPayload({output:e,toolCallId:n,toolName:i,args:a}),{toolCallId:n,toolName:i??`unknown`,args:a}}async emitStepStarted(e,t,n){await this.emitStepStartedPayload({stepType:e,blockIndex:this.getBlockIndex(),blockData:t,content:n})}async emitStepFinished(e,t){await this.emitStepFinishedPayload({stepType:e,blockIndex:this.getBlockIndex(),content:t}),this.incrementBlockIndex()}},gt=class{config;constructor(e){this.config=e}async enrichPayload(e,t,n){let r=t??this.config.getCurrentMessageId(),i=this.config.getCurrentTurnId(),a=e,o=n?.includeEventMetadata??!0,s=o?this.config.getEventMetadataDefaults():{},c=this.config.getConnectorAdapterSessionId()??this.config.getLastKnownAdapterSessionId()??await this.config.getAdapterSessionId(),l=o?a.clientId??s.clientId:void 0,u=o?a.providerConfigId??s.providerConfigId:void 0,d=o?a.occurredAt??s.occurredAt:void 0;this.config.setLastKnownAdapterSessionId(c);let f=this.config.getAgentContextBase();return{...e,agentId:f.agentId,adapterId:f.adapterId,adapterName:f.adapterName,adapterSessionId:c,...r!==void 0&&{messageId:r},...i!==void 0&&{turnId:i},...f.sessionId!==void 0&&{sessionId:f.sessionId},...l!==void 0&&{clientId:l},...u!==void 0&&{providerConfigId:u},...d!==void 0&&{occurredAt:d}}}async emitGlobal(e,t,n){let r=await this.enrichPayload(t,t.messageId,n);await this.config.globalBus.emit(e,r)}};function Q(e,t,n){return!t||n.includes(`structuredOutput`)?e:{...e,structuredOutput:`Respond ONLY with valid JSON conforming to this schema:\n${JSON.stringify(t.schema,null,2)}\nDo not include any other text, markdown formatting, or explanation.`}}var _t=class{agentId;adapterId;sessionId;adapterCapabilities;globalBus;getConnector;shouldUseNativeResume;onMessageHandle;onBeforeDispatch;ephemeral;constructor(e){this.agentId=e.agentId,this.adapterId=e.adapterId,this.sessionId=e.sessionId,this.adapterCapabilities=e.adapterCapabilities??[],this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.shouldUseNativeResume=e.shouldUseNativeResume,this.onMessageHandle=e.onMessageHandle,this.onBeforeDispatch=e.onBeforeDispatch,this.ephemeral=e.ephemeral??!1}async executeSendMessage(e){await this.onBeforeDispatch?.();let t=this.getConnector(),n=e.sessionContext?A.parse(e.sessionContext):void 0,r=await this.resolvePreUserMessageTurn({message:e.message,sessionContext:n,cwd:t.cwd,messageId:e.messageId}),i=this.shouldUseNativeResume(r.sessionContext),a=F(r.message),o=await t.sendMessage(a,{deliveryMode:e.deliveryMode,messageId:e.messageId,messageHistory:i?void 0:r.sessionContext?.messageHistory,turnContext:Q(r.sessionContext?.turnContext,e.responseSchema,this.adapterCapabilities),...e.responseSchema!==void 0&&{responseSchema:e.responseSchema}});return this.firePostUserMessageHooks(o.messageId),await this.onMessageHandle(o),{messageId:o.messageId}}async executeStart(e,t,n,r){await this.onBeforeDispatch?.();let i=this.getConnector(),a=t?.sessionContext?A.parse(t.sessionContext):void 0,o=await this.resolvePreUserMessageTurn({message:e,sessionContext:a,cwd:i.cwd}),s=this.shouldUseNativeResume(o.sessionContext),c=F(o.message),l={systemPrompt:n,messageHistory:s?void 0:o.sessionContext?.messageHistory,turnContext:Q(o.sessionContext?.turnContext,r,this.adapterCapabilities),...r!==void 0&&{responseSchema:r}},u=await i.start(c,l);return this.firePostUserMessageHooks(u.messageHandle.messageId),await this.onMessageHandle(u.messageHandle),u}async resolvePreUserMessageTurn(e){return this.ephemeral?{message:e.message,sessionContext:e.sessionContext}:he({agentId:this.agentId,adapterId:this.adapterId,message:e.message,sessionId:this.sessionId,cwd:e.cwd,sessionContext:e.sessionContext,messageId:e.messageId},this.globalBus)}firePostUserMessageHooks(e){me({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,messageId:e},this.globalBus).catch(e=>{console.error(`[AIAgent] PostUserMessage hook error:`,e)})}},vt=class{queuedSequences=new Map;appliedSequences=new Map;barrier=Promise.resolve();queue(e,t){if(!Number.isSafeInteger(t)||t<0)return!1;let n=this.appliedSequences.get(e);if(n!==void 0&&t<=n)return!1;let r=this.queuedSequences.get(e);return r!==void 0&&t<=r?!1:(this.queuedSequences.set(e,t),!0)}isLatest(e,t){return this.queuedSequences.get(e)===t}markApplied(e,t){let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.appliedSequences.set(e,t),this.queuedSequences.get(e)===t&&this.queuedSequences.delete(e)}release(e,t){if(this.queuedSequences.get(e)!==t)return;let n=this.appliedSequences.get(e);(n===void 0||t>n)&&this.queuedSequences.delete(e)}clear(e){this.queuedSequences.delete(e),this.appliedSequences.delete(e)}async runExclusive(e){let t=this.barrier,n;this.barrier=new Promise(e=>{n=e}),await t;try{return await e()}finally{n?.()}}};async function yt(e){let{bus:t,agentId:n,currentModel:r,nextModel:i,skipWarning:a}=e;if(a)return{proceed:!0,requestEditHistory:!1};let o=await t.requestOptional(E.validateModelChange,{agentId:n,currentModel:r,nextModel:i});return o.handled?{proceed:o.data.proceed,requestEditHistory:o.data.requestEditHistory??!1}:{proceed:!0,requestEditHistory:!1}}var bt=class{getConnector;swapConnector;setMcpSessionContext;stagedMcpServersSet;constructor(e){this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.setMcpSessionContext=e.setMcpSessionContext}async applyStagedMutation(){let e=this.stagedMcpServersSet;if(e===void 0)return;this.stagedMcpServersSet=void 0;let t=await this.handleMcpServersSet(e);if(!t.success)throw Error(`Failed to apply staged MCP server replacement: ${t.reason??`unknown error`}`)}async handleMcpServersSet(e){if(this.getConnector().getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedMcpServersSet={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0}):{success:!1,reason:`turn_active`};try{return await this.swapConnector({mcpSessionContext:e.mcpSessionContext}),this.setMcpSessionContext(e.mcpSessionContext),{success:!0,swapped:!0}}catch(e){return{success:!1,reason:`mcp_servers_set_failed: ${e.message}`}}}},xt=class{agentId;sessionId;globalBus;getConnector;swapConnector;emitCwdChanged;emitModelChanged;getProviderContext;setProviderContext;setReasoningEffort;setMcpSessionContext;resolveSupportedReasoningLevels;mcpServersMutationManager;credentialChangeSequencer=new vt;stagedModelChange;constructor(e){this.agentId=e.agentId,this.sessionId=e.sessionId,this.globalBus=e.globalBus,this.getConnector=e.getConnector,this.swapConnector=e.swapConnector,this.emitCwdChanged=e.emitCwdChanged,this.emitModelChanged=e.emitModelChanged,this.getProviderContext=e.getProviderContext,this.setProviderContext=e.setProviderContext,this.setReasoningEffort=e.setReasoningEffort,this.setMcpSessionContext=e.setMcpSessionContext,this.resolveSupportedReasoningLevels=e.resolveSupportedReasoningLevels,this.mcpServersMutationManager=new bt({getConnector:this.getConnector,swapConnector:this.swapConnector,setMcpSessionContext:this.setMcpSessionContext})}async handleCwdChange(e){let t=this.getConnector(),{newCwd:n}=e;if(t.cwd===n)return{success:!0};if(t.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let e=t.cwd;return await t.changeCwdInPlace(n).catch(()=>!1)?t.cwd=n:await this.swapConnector({cwd:n}),await this.persistRuntimeMutation({cwd:n}),await this.emitCwdChanged({previousCwd:e,newCwd:n}),{success:!0,previousCwd:e}}catch(e){return{success:!1,reason:`cwd_change_failed: ${e.message}`}}}async applyStagedMutations(){if(this.getConnector().getProcessingState()!==`idle`)return;let e=this.stagedModelChange;if(e!==void 0){this.stagedModelChange=void 0;let t=await this.handleModelChange(e);if(!t.success)throw Error(`Failed to apply staged model change: ${t.reason??`unknown error`}`)}await this.mcpServersMutationManager.applyStagedMutation()}async handleMcpServersSet(e){return this.mcpServersMutationManager.handleMcpServersSet(e)}async handleModelChange(e){let t=this.getConnector(),{newModel:n,reasoningEffort:r,skipWarning:i}=e,a=e.providerContext,o=t.model,s=t.currentReasoningEffort,c=this.getProviderContext(),l=this.hasProviderContextChanged(c,a);if(!n&&!r&&!l)return{success:!0,swapped:!1};if(t.getProcessingState()!==`idle`)return e.turnActiveBehavior===`stageForNextTurn`?(this.stagedModelChange={...e,turnActiveBehavior:`reject`},{success:!0,swapped:!1,staged:!0,...n!==void 0&&{model:n}}):{success:!1,reason:`turn_active`};if(!n&&!l)return this.handleReasoningOnlyChange(t,o,s,r);let u=n??o;return o===u&&!l?r===void 0?{success:!0,swapped:!1}:this.handleReasoningOnlyChange(t,o,s,r):this.handleModelSwap({connector:t,currentModel:o,newModel:u,reasoningEffort:r,previousReasoningEffort:s,providerContext:a,isProviderChange:l,skipWarning:i})}async handleReasoningOnlyChange(e,t,n,r){if(e.getProcessingState()!==`idle`)return{success:!1,reason:`turn_active`};try{let i=await e.changeReasoningInPlace(r).catch(()=>!1);i||await this.swapConnector({model:e.model});let a=this.getConnector(),o=this.resolveReasoningEffort(r,n,a.supportedReasoningLevels);return a.currentReasoningEffort=o,this.setReasoningEffort(o),await this.emitModelChanged({previousModel:t,newModel:t,previousReasoningEffort:n,newReasoningEffort:o}),{success:!0,swapped:!i,model:t,appliedReasoningEffort:o,supportedReasoningLevels:a.supportedReasoningLevels}}catch(e){return{success:!1,reason:`reasoning_change_failed: ${e.message}`}}}async handleModelSwap(e){let{connector:t,currentModel:n,newModel:r,reasoningEffort:i,previousReasoningEffort:a,providerContext:o,isProviderChange:s,skipWarning:c}=e;try{let e=!s&&await t.changeModelInPlace(r).catch(()=>!1);if(e)t.model=r,t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r);else{let e=await this.confirmConnectorSwap(n,r,c);if(!e.proceed)return e.result;await this.swapConnector({model:r,...o&&{providerContext:o}}),o&&this.setProviderContext(o);let t=this.getConnector();t.supportedReasoningLevels=this.resolveSupportedReasoningLevels(r),e.requestEditHistory&&this.sessionId&&await this.globalBus.emit(j.connectorSwap.editRequested,{sessionId:this.sessionId,agentId:this.agentId,previousModel:n,newModel:r})}let l=this.getConnector(),u=l.supportedReasoningLevels,d=this.resolveReasoningEffort(i,a,u);l.currentReasoningEffort=d,this.setReasoningEffort(d),d!==void 0&&await l.changeReasoningInPlace(d).catch(()=>{});let f=n!==r||d!==a;return(n!==r||s)&&await this.persistRuntimeMutation({...n!==r&&{model:r},...s&&o&&{providerConfigId:o.providerConfigId}}),f&&await this.emitModelChanged({previousModel:n,newModel:r,previousReasoningEffort:a,newReasoningEffort:d}),{success:!0,swapped:!e,model:r,appliedReasoningEffort:d,supportedReasoningLevels:u}}catch(e){return{success:!1,reason:`model_change_failed: ${e.message}`}}}resolveReasoningEffort(e,t,n){if(!n||Object.keys(n).length===0)return;let r=e=>e in n;return e!==void 0&&r(e)?e:t!==void 0&&r(t)?t:r(`medium`)?`medium`:Object.keys(n)[0]}async confirmConnectorSwap(e,t,n){if(e===t)return{proceed:!0,requestEditHistory:!1};let r=await yt({bus:this.globalBus,agentId:this.agentId,currentModel:e,nextModel:t,skipWarning:n});return r.proceed?{proceed:!0,requestEditHistory:r.requestEditHistory}:{proceed:!1,result:{success:!1,reason:`cancelled`}}}hasProviderContextChanged(e,t){return t===void 0?!1:e===void 0?!0:e.providerConfigId!==t.providerConfigId||e.definitionId!==t.definitionId||!this.haveEqualStringRecords(e.endpointOverrides,t.endpointOverrides)||!this.haveEqualStringRecords(e.credentialEnvVars,t.credentialEnvVars)||!this.haveEqualStringRecords(e.credentialRefs,t.credentialRefs)}haveEqualStringRecords(e,t){if(e===t)return!0;let n=e?Object.keys(e):[],r=t?Object.keys(t):[];return n.length===r.length?n.every(n=>e[n]===t[n]):!1}async handleCredentialChanged(e){let t=this.getProviderContext()?.providerConfigId;return t&&t!==e.providerConfigId?{success:!1,reason:`provider_mismatch`}:this.credentialChangeSequencer.queue(e.providerConfigId,e.changeSequence)?this.credentialChangeSequencer.runExclusive(async()=>{let t=this.getProviderContext()?.providerConfigId;if(t&&t!==e.providerConfigId)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`provider_mismatch`};if(!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))return{success:!1,reason:`stale_change`};let n=this.getConnector();if(n.getProcessingState()!==`idle`)return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`};let r=e.credentialRefs;try{let t=await _e(this.globalBus,e.providerConfigId);return t.credentialRefs=r,!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence)||(await ge(this.globalBus,t),!this.credentialChangeSequencer.isLatest(e.providerConfigId,e.changeSequence))?{success:!1,reason:`stale_change`}:n.getProcessingState()===`idle`?(await this.swapConnector({providerContext:t}),this.setProviderContext(t),this.credentialChangeSequencer.markApplied(e.providerConfigId,e.changeSequence),await this.persistRuntimeMutation({providerConfigId:t.providerConfigId}),{success:!0,swapped:!0}):(this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`turn_active`})}catch(t){return this.credentialChangeSequencer.release(e.providerConfigId,e.changeSequence),{success:!1,reason:`credential_swap_failed: ${t instanceof Error?t.message:String(t)}`}}}):{success:!1,reason:`stale_change`}}async persistRuntimeMutation(e){await this.globalBus.requestOptional(M.updateRuntime,{agentId:this.agentId,cwd:e.cwd,model:e.model,providerConfigId:e.providerConfigId})}},St=class{connectorWiringCleanups=[];config;constructor(e){this.config=e}addConnectorWiringCleanup(e){this.connectorWiringCleanups.push(e)}clearConnectorWiring(){for(let e of this.connectorWiringCleanups)try{e()}catch(e){console.warn(`[AIAgent] Connector wiring cleanup failed for agent ${this.config.agentId}:`,e)}this.connectorWiringCleanups=[]}async wireAllConnectorEvents(e){let t=e.onProcessingStateChanged(e=>{e===`idle`&&this.config.emitIdle().catch(e=>{console.warn(`[AIAgent] Failed to emit idle for agent ${this.config.agentId}:`,e)})});this.addConnectorWiringCleanup(t),await this.config.wireEvents(e)}async swapConnector(e){let t=this.config.getConnector();if(t.getProcessingState()!==`idle`)throw Error(`Cannot swap connector while processing (state: ${t.getProcessingState()})`);let n=this.config.buildConfigInput({cwd:e?.cwd??t.cwd,model:e?.model??t.model,...e?.providerContext&&{providerContext:e.providerContext},...e?.mcpSessionContext&&{mcpSessionContext:e.mcpSessionContext},adapterSessionId:e?.adapterSessionId??crypto.randomUUID(),...e?.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:e.resumeAdapterSessionId}}),r=await this.config.configFactory(n),i=await this.config.connectorFactory({...r,onMessageSent:this.config.createOnMessageSent()}),a=this.connectorWiringCleanups;this.connectorWiringCleanups=[];try{await this.wireAllConnectorEvents(i),await i.initialize({systemPrompt:this.config.getRuntimeSystemPrompt()})}catch(e){try{await i.close()}catch(e){console.warn(`[AIAgent] Failed to close newly-created connector for agent ${this.config.agentId}:`,e)}throw this.connectorWiringCleanups=a,e}this.config.setLastKnownAdapterSessionId(i.adapterSessionId);for(let e of a)try{e()}catch(e){console.warn(`[AIAgent] Previous connector cleanup failed during swap for agent ${this.config.agentId}:`,e)}let o=t;this.config.setConnector(i);try{await o.close()}catch(e){console.warn(`[AIAgent] Failed to close previous connector for agent ${this.config.agentId}:`,e)}}};function Ct(e){return new gt({globalBus:e.globalBus,getAgentContextBase:e.getAgentContextBase,getCurrentMessageId:()=>e.lifecycleTracker.getCurrentMessageId(),getCurrentTurnId:()=>e.lifecycleTracker.getCurrentTurnId(),getConnectorAdapterSessionId:e.getConnectorAdapterSessionId,getLastKnownAdapterSessionId:e.getLastKnownAdapterSessionId,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId,getAdapterSessionId:e.getAdapterSessionId,getEventMetadataDefaults:e.getEventMetadataDefaults})}function wt(e){return new Z({emitUsage:async t=>{await e.emitGlobal(E.usage,t)},emitContextWindowUpdated:async t=>{await e.emitGlobal(E.contextWindow.updated,t)},emitToolUse:async t=>{await e.emitGlobal(E.tool.use,t)},emitToolOutput:async t=>{await e.emitGlobal(E.tool.output,t)},emitAdapterLog:async t=>{await e.emitGlobal(T.log,t,{includeEventMetadata:!1})},emitStepStarted:async t=>{await e.emitGlobal(E.step.started,t)},emitStepFinished:async t=>{await e.emitGlobal(E.step.finished,t)},toolCallTracker:e.toolCallTracker,getBlockIndex:e.getBlockIndex,incrementBlockIndex:e.incrementBlockIndex,getUsageModel:e.getUsageModel})}function Tt(e){return new _t(e)}function Et(e){return new xt({agentId:e.agentId,sessionId:e.sessionId,globalBus:e.globalBus,getConnector:e.getConnector,swapConnector:e.swapConnector,emitCwdChanged:async t=>{await e.emitGlobal(E.cwd.changed,t)},emitModelChanged:async t=>{await e.emitGlobal(E.model.changed,t)},getProviderContext:e.getProviderContext,setProviderContext:e.setProviderContext,setReasoningEffort:e.setReasoningEffort,setMcpSessionContext:e.setMcpSessionContext,resolveSupportedReasoningLevels:e.resolveSupportedReasoningLevels})}function Dt(e){return new St({agentId:e.agentId,buildConfigInput:e.buildConfigInput,configFactory:e.configFactory,connectorFactory:e.connectorFactory,createOnMessageSent:e.createOnMessageSent,wireEvents:e.wireEvents,emitIdle:async()=>{await e.emitGlobal(E.idle,{})},getConnector:e.getConnector,setConnector:e.setConnector,getRuntimeSystemPrompt:e.getRuntimeSystemPrompt,setLastKnownAdapterSessionId:e.setLastKnownAdapterSessionId})}var Ot=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicAnchor=void 0;let t=S(),n=f(),r=d(),i=x(),a={keyword:`$dynamicAnchor`,schemaType:`string`,code:e=>o(e,e.schema)};function o(e,r){let{gen:i,it:a}=e;a.schemaEnv.root.dynamicAnchors[r]=!0;let o=(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(r)}`,c=a.errSchemaPath===`#`?a.validateName:s(e);i.if((0,t._)`!${o}`,()=>i.assign(o,c))}e.dynamicAnchor=o;function s(e){let{schemaEnv:t,schema:n,self:a}=e.it,{root:o,baseId:s,localRefs:c,meta:l}=t.root,{schemaId:u}=a.opts,d=new r.SchemaEnv({schema:n,schemaId:u,root:o,baseId:s,localRefs:c,meta:l});return r.compileSchema.call(a,d),(0,i.getValidate)(e,d)}e.default=a})),kt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.dynamicRef=void 0;let t=S(),n=f(),r=x(),i={keyword:`$dynamicRef`,schemaType:`string`,code:e=>a(e,e.schema)};function a(e,i){let{gen:a,keyword:o,it:s}=e;if(i[0]!==`#`)throw Error(`"${o}" only supports hash fragment reference`);let c=i.slice(1);if(s.allErrors)l();else{let t=a.let(`valid`,!1);l(t),e.ok(t)}function l(e){if(s.schemaEnv.root.dynamicAnchors[c]){let r=a.let(`_v`,(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(c)}`);a.if(r,u(r,e),u(s.validateName,e))}else u(s.validateName,e)()}function u(t,n){return n?()=>a.block(()=>{(0,r.callRef)(e,t),a.let(n,!0)}):()=>(0,r.callRef)(e,t)}}e.dynamicRef=a,e.default=i})),At=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ot(),n=s();e.default={keyword:`$recursiveAnchor`,schemaType:`boolean`,code(e){e.schema?(0,t.dynamicAnchor)(e,``):(0,n.checkStrictMode)(e.it,`$recursiveAnchor: false is ignored`)}}})),jt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=kt();e.default={keyword:`$recursiveRef`,schemaType:`string`,code:e=>(0,t.dynamicRef)(e,e.schema)}})),Mt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Ot(),n=kt(),r=At(),i=jt();e.default=[t.default,n.default,r.default,i.default]})),Nt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=b();e.default={keyword:`dependentRequired`,type:`object`,schemaType:`object`,error:t.error,code:e=>(0,t.validatePropertyDeps)(e)}})),Pt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=b();e.default={keyword:`dependentSchemas`,type:`object`,schemaType:`object`,code:e=>(0,t.validateSchemaDeps)(e)}})),Ft=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=s();e.default={keyword:[`maxContains`,`minContains`],type:`array`,schemaType:`number`,code({keyword:e,parentSchema:n,it:r}){n.contains===void 0&&(0,t.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}}})),It=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Nt(),n=Pt(),r=Ft();e.default=[t.default,n.default,r.default]})),Lt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=S(),n=s(),r=f();e.default={keyword:`unevaluatedProperties`,type:`object`,schemaType:[`boolean`,`object`],trackErrors:!0,error:{message:`must NOT have unevaluated properties`,params:({params:e})=>(0,t._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},code(e){let{gen:i,schema:a,data:o,errsCount:s,it:c}=e;if(!s)throw Error(`ajv implementation error`);let{allErrors:l,props:u}=c;u instanceof t.Name?i.if((0,t._)`${u} !== true`,()=>i.forIn(`key`,o,e=>i.if(f(u,e),()=>d(e)))):u!==!0&&i.forIn(`key`,o,e=>u===void 0?d(e):i.if(p(u,e),()=>d(e))),c.props=!0,e.ok((0,t._)`${s} === ${r.default.errors}`);function d(r){if(a===!1){e.setParams({unevaluatedProperty:r}),e.error(),l||i.break();return}if(!(0,n.alwaysValidSchema)(c,a)){let a=i.name(`valid`);e.subschema({keyword:`unevaluatedProperties`,dataProp:r,dataPropType:n.Type.Str},a),l||i.if((0,t.not)(a),()=>i.break())}}function f(e,n){return(0,t._)`!${e} || !${e}[${n}]`}function p(e,n){let r=[];for(let i in e)e[i]===!0&&r.push((0,t._)`${n} !== ${i}`);return(0,t.and)(...r)}}}})),Rt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=S(),n=s();e.default={keyword:`unevaluatedItems`,type:`array`,schemaType:[`boolean`,`object`],error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{gen:r,schema:i,data:a,it:o}=e,s=o.items||0;if(s===!0)return;let c=r.const(`len`,(0,t._)`${a}.length`);if(i===!1)e.setParams({len:s}),e.fail((0,t._)`${c} > ${s}`);else if(typeof i==`object`&&!(0,n.alwaysValidSchema)(o,i)){let n=r.var(`valid`,(0,t._)`${c} <= ${s}`);r.if((0,t.not)(n),()=>l(n,s)),e.ok(n)}o.items=!0;function l(i,a){r.forRange(`i`,a,c,a=>{e.subschema({keyword:`unevaluatedItems`,dataProp:a,dataPropType:n.Type.Num},i),o.allErrors||r.if((0,t.not)(i),()=>r.break())})}}}})),$=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Lt(),n=Rt();e.default=[t.default,n.default]})),zt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/schema`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format`},{$ref:`meta/content`}],type:[`object`,`boolean`],properties:{definitions:{$comment:`While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.`,type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},dependencies:{$comment:`"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"`,type:`object`,additionalProperties:{anyOf:[{$recursiveRef:`#`},{$ref:`meta/validation#/$defs/stringArray`}]}}}}})),Bt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/applicator":!0},$recursiveAnchor:!0,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{additionalItems:{$recursiveRef:`#`},unevaluatedItems:{$recursiveRef:`#`},items:{anyOf:[{$recursiveRef:`#`},{$ref:`#/$defs/schemaArray`}]},contains:{$recursiveRef:`#`},additionalProperties:{$recursiveRef:`#`},unevaluatedProperties:{$recursiveRef:`#`},properties:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$recursiveRef:`#`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$recursiveRef:`#`}},propertyNames:{$recursiveRef:`#`},if:{$recursiveRef:`#`},then:{$recursiveRef:`#`},else:{$recursiveRef:`#`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$recursiveRef:`#`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$recursiveRef:`#`}}}}})),Vt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/content`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentMediaType:{type:`string`},contentEncoding:{type:`string`},contentSchema:{$recursiveRef:`#`}}}})),Ht=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/core`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0},$recursiveAnchor:!0,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{type:`string`,format:`uri`},$anchor:{type:`string`,pattern:`^[A-Za-z][-A-Za-z0-9.:_]*$`},$ref:{type:`string`,format:`uri-reference`},$recursiveRef:{type:`string`,format:`uri-reference`},$recursiveAnchor:{type:`boolean`,default:!1},$vocabulary:{type:`object`,propertyNames:{type:`string`,format:`uri`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$recursiveRef:`#`},default:{}}}}})),Ut=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/format`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/format":!0},$recursiveAnchor:!0,title:`Format vocabulary meta-schema`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),Wt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/meta-data":!0},$recursiveAnchor:!0,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),Gt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2019-09/schema`,$id:`https://json-schema.org/draft/2019-09/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/validation":!0},$recursiveAnchor:!0,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}},const:!0,enum:{type:`array`,items:!0},type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),Kt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=zt(),n=Bt(),r=Vt(),i=Ht(),a=Ut(),o=Wt(),s=Gt(),c=[`/properties`];function l(e){return[t,n,r,i,l(this,a),o,l(this,s)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function l(t,n){return e?t.$dataMetaSchema(n,c):n}}e.default=l})),qt=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2019=void 0;let n=u(),r=ee(),i=Mt(),a=It(),o=$(),s=_(),c=Kt(),l=`https://json-schema.org/draft/2019-09/schema`;var d=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),this.addVocabulary(i.default),r.default.forEach(e=>this.addVocabulary(e)),this.addVocabulary(a.default),this.addVocabulary(o.default),this.opts.discriminator&&this.addKeyword(s.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(c.default.call(this,e),this.refs[`http://json-schema.org/schema`]=l)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}};e.Ajv2019=d,t.exports=e=d,t.exports.Ajv2019=d,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=d;var f=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return f.KeywordCxt}});var m=S();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return m._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return m.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return m.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return m.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return m.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return m.CodeGen}});var h=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return h.default}});var v=y();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return v.default}})})),Jt=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=h(),n=l(),r=v(),i=Mt(),a=It(),o=$(),s=c(),u=m();e.default=[i.default,t.default,n.default,(0,r.default)(!0),s.default,u.metadataVocabulary,u.contentVocabulary,a.default,o.default]})),Yt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}}})),Xt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}}})),Zt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}}})),Qt=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}}})),$t=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}}})),en=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),tn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),nn=t(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),rn=t((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let t=Yt(),n=Xt(),r=Zt(),i=Qt(),a=$t(),o=en(),s=tn(),c=nn(),l=[`/properties`];function u(e){return[t,n,r,i,a,u(this,o),s,u(this,c)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function u(t,n){return e?t.$dataMetaSchema(n,l):n}}e.default=u})),an=t(((e,t)=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2020=void 0;let n=u(),r=Jt(),i=_(),a=rn(),o=`https://json-schema.org/draft/2020-12/schema`;var s=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),r.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(a.default.call(this,e),this.refs[`http://json-schema.org/schema`]=o)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(o)?o:void 0)}};e.Ajv2020=s,t.exports=e=s,t.exports.Ajv2020=s,Object.defineProperty(e,`__esModule`,{value:!0}),e.default=s;var c=p();Object.defineProperty(e,`KeywordCxt`,{enumerable:!0,get:function(){return c.KeywordCxt}});var l=S();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return l._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(e,`CodeGen`,{enumerable:!0,get:function(){return l.CodeGen}});var d=g();Object.defineProperty(e,`ValidationError`,{enumerable:!0,get:function(){return d.default}});var f=y();Object.defineProperty(e,`MissingRefError`,{enumerable:!0,get:function(){return f.default}})})),on=e(te(),1),sn=e(qt(),1),cn=e(an(),1);const ln=new Set([`https://json-schema.org/draft/2019-09/schema`,`https://json-schema.org/draft/2019-09/schema#`]),un=new Set([`https://json-schema.org/draft/2020-12/schema`,`https://json-schema.org/draft/2020-12/schema#`]);var dn=class{bus;agentId;adapterId;adapterCapabilities;draft07Ajv=new on.default({allErrors:!0,strict:!1});draft2019Ajv=new sn.default({allErrors:!0,strict:!1});draft2020Ajv=new cn.default({allErrors:!0,strict:!1});validatorCache=new WeakMap;constructor(e){this.bus=e.bus,this.agentId=e.agentId,this.adapterId=e.adapterId,this.adapterCapabilities=e.adapterCapabilities}registerDefaultHandlers(){let e=this.bus.withFilter({agentId:this.agentId});return[e.on(E.structuredOutput.retryPolicy,e=>{e.setResult({maxRetries:0})},{priority:-1e3}),e.on(E.structuredOutput.enforce,e=>{e.setResult({enforced:!1,error:`No enforce handler registered`})},{priority:-1e3})]}async validateTerminalResult(e){let{responseSchema:t,message:n,sessionId:r}=e,i=this.validate(t,n);if(i.valid)return{message:n,structuredOutputValidation:{status:`passed`}};let a=n??``,o=i.errors;if(e.retryTurn){let n=await this.bus.requestOptional(E.structuredOutput.retryPolicy,{agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.adapterCapabilities,responseSchema:t,attemptNumber:1}),r=n.handled?n.data.maxRetries:0;for(let n=1;n<=r;n+=1){a=await e.retryTurn({attemptNumber:n,validationErrors:o});let r=this.validate(t,a);if(r.valid)return{message:a,structuredOutputValidation:{status:`passed`}};o=r.errors}}let s=await this.bus.requestOptional(E.structuredOutput.enforce,{agentId:this.agentId,adapterId:this.adapterId,sessionId:r,responseSchema:t,rawOutput:a,validationErrors:o,adapterHasCapability:this.adapterCapabilities.includes(`structuredOutput`)});if(s.handled&&s.data.enforced===!0&&s.data.output!==void 0){let{valid:e}=this.validate(t,s.data.output);if(e)return{message:s.data.output,structuredOutputValidation:{status:`enforced`}}}return{message:a,structuredOutputValidation:{status:`failed`,errors:o}}}validate(e,t){if(t===void 0||t===``)return{valid:!1,errors:[{message:`Expected JSON output but received empty string`,instancePath:``,schemaPath:`#`}]};let n;try{n=JSON.parse(t)}catch{return{valid:!1,errors:[{message:`Output is not valid JSON: ${t.slice(0,120)}`,instancePath:``,schemaPath:`#`}]}}let r=this.getValidator(e);if(r(n))return{valid:!0,errors:[]};let i=this.normalizeErrors(r.errors??[]);return i.length===0&&i.push({message:`Schema validation failed`,instancePath:``,schemaPath:`#`}),{valid:!1,errors:i}}getValidator(e){let t=this.validatorCache.get(e.schema);if(t!==void 0)return t;let n=this.getValidatorCompileTarget(e.schema),r;try{r=n.compiler.compile(n.schema)}catch(e){r=this.createCompileFailureValidator(e)}return this.validatorCache.set(e.schema,r),r}createCompileFailureValidator(e){let t=[{keyword:`schema`,instancePath:``,schemaPath:`#`,params:{},message:`Failed to compile response schema: ${e instanceof Error?e.message:String(e)}`}],n=this.draft07Ajv.compile({});return Object.assign(e=>!1,{errors:t,schema:n.schema,schemaEnv:n.schemaEnv})}getValidatorCompileTarget(e){let t=this.readSchemaUri(e),n=t===void 0?void 0:this.normalizeDraft202012Uri(t),r=t===void 0?void 0:this.normalizeDraft201909Uri(t);return n!==void 0&&un.has(n)?{compiler:this.draft2020Ajv,schema:this.withSchemaUri(e,n)}:r!==void 0&&ln.has(r)?{compiler:this.draft2019Ajv,schema:this.withSchemaUri(e,r)}:{compiler:this.draft07Ajv,schema:this.withoutSchemaUri(e)}}readSchemaUri(e){let t=e.$schema;return typeof t==`string`?t:void 0}normalizeDraft202012Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2020-12\/schema#?$/,e=>e.replace(`http://`,`https://`))}normalizeDraft201909Uri(e){return e.replace(/^http:\/\/json-schema\.org\/draft\/2019-09\/schema#?$/,e=>e.replace(`http://`,`https://`))}withSchemaUri(e,t){return e.$schema===t?e:{...e,$schema:t}}withoutSchemaUri(e){if(e.$schema===void 0)return e;let t={...e};return delete t.$schema,t}normalizeErrors(e){return e.map(e=>({message:e.message??`Validation error`,instancePath:e.instancePath,schemaPath:e.schemaPath}))}};function fn(e){if(e instanceof se||e instanceof re||e instanceof ae||e instanceof oe)return e.code}var pn=class{connector;confirmedModel;initialModel;lastKnownAdapterSessionId;busHandlerCleanups=[];initialized=!1;runtimeSystemPrompt;lifecycleTracker;toolCallTracker=new Y;eventBridge;turnExecutor;runtimeMutationManager;connectorLifecycleManager;payloadEmitter;lifecycleEmitter;structuredOutputManager;latestMessageCompletion;currentBlockIndex=0;config;availableModels;constructor(e){this.config={...e,globalBus:e.globalBus??w},this.availableModels=e.availableModels,this.lifecycleTracker=new J({emitGlobal:this.emitGlobal.bind(this)}),this.payloadEmitter=Ct({globalBus:this.globalBus,getAgentContextBase:()=>({agentId:this.agentId,adapterId:this.adapterId,adapterName:this.adapterName,sessionId:this.sessionId}),lifecycleTracker:this.lifecycleTracker,getConnectorAdapterSessionId:()=>this.connector?.adapterSessionId,getLastKnownAdapterSessionId:()=>this.lastKnownAdapterSessionId,setLastKnownAdapterSessionId:e=>{this.lastKnownAdapterSessionId=e},getAdapterSessionId:this.getAdapterSessionId.bind(this),getEventMetadataDefaults:this.getEventMetadataDefaults.bind(this)}),this.eventBridge=wt({emitGlobal:this.payloadEmitter.emitGlobal.bind(this.payloadEmitter),toolCallTracker:this.toolCallTracker,getBlockIndex:this.getBlockIndex.bind(this),incrementBlockIndex:this.incrementBlockIndex.bind(this),getUsageModel:()=>this.confirmedModel??this.initialModel}),this.turnExecutor=Tt({agentId:this.agentId,adapterId:this.adapterId,sessionId:this.sessionId,adapterCapabilities:this.capabilities,globalBus:this.globalBus,getConnector:()=>this.connector,shouldUseNativeResume:this.shouldUseNativeResume.bind(this),onMessageHandle:this.onMessageHandle.bind(this),onBeforeDispatch:()=>this.runtimeMutationManager.applyStagedMutations(),ephemeral:this.config.ephemeral}),this.runtimeMutationManager=Et({agentId:this.agentId,sessionId:this.sessionId,globalBus:this.globalBus,getConnector:()=>this.connector,swapConnector:this.swapConnector.bind(this),emitGlobal:this.payloadEmitter.emitGlobal.bind(this.payloadEmitter),getProviderContext:()=>this.config.providerContext,setProviderContext:e=>void(this.config.providerContext=e),setReasoningEffort:e=>void(this.config.reasoningEffort=e),setMcpSessionContext:e=>this.config.mcpSessionContext=e,resolveSupportedReasoningLevels:e=>this.getSupportedReasoningLevels(e)}),this.connectorLifecycleManager=Dt({agentId:this.agentId,buildConfigInput:this.buildConfigInput.bind(this),configFactory:this.config.configFactory,connectorFactory:this.config.connectorFactory,createOnMessageSent:this.createOnMessageSent.bind(this),wireEvents:this.wireEvents.bind(this),emitGlobal:this.payloadEmitter.emitGlobal.bind(this.payloadEmitter),getConnector:()=>this.connector,setConnector:e=>{this.connector=e},getRuntimeSystemPrompt:()=>this.runtimeSystemPrompt,setLastKnownAdapterSessionId:e=>{this.lastKnownAdapterSessionId=e}}),this.lifecycleEmitter=this.createLifecycleEmitter(),this.structuredOutputManager=this.createStructuredOutputManager()}getEventMetadataDefaults(){return{clientId:this.config.clientId,providerConfigId:this.connector?.providerConfigId??this.config.providerContext?.providerConfigId,occurredAt:Date.now()}}createLifecycleEmitter(){return new X({agentId:this.agentId,globalBus:this.globalBus,emitStarted:async e=>{await this.payloadEmitter.emitGlobal(E.started,e)},emitComplete:async e=>{await this.payloadEmitter.emitGlobal(E.complete,e)},emitSessionClosed:async e=>{await this.payloadEmitter.emitGlobal(E.session.closed,e)},onBeforeEmitCompletion:this.onBeforeEmitCompletion.bind(this),clearToolCallTracker:()=>this.toolCallTracker.clear()})}createStructuredOutputManager(){return new dn({bus:this.globalBus,agentId:this.agentId,adapterId:this.adapterId,adapterCapabilities:this.capabilities})}get agentId(){return this.config.agentId}get adapterId(){return this.config.adapterId}get adapterName(){return this.config.adapterName}get capabilities(){return this.config.capabilities}get nativeTools(){return this.config.nativeTools}get sessionId(){return this.config.sessionId}get adapterSessionId(){return this.config.adapterSessionId}get globalBus(){return this.config.globalBus}async init(){if(this.initialized)throw Error(`AIAgent ${this.agentId} already initialized. init() can only be called once.`);let e=this.buildConfigInput(),t=await this.config.configFactory(e);this.connector=await this.config.connectorFactory({...t,onMessageSent:this.createOnMessageSent()}),this.busHandlerCleanups.push(...ht({globalBus:this.globalBus,agentId:this.agentId,onSendMessage:async e=>{await this.sendMessage(e)},onInterrupt:async e=>{await this.handleInterrupt(e)},getCapabilities:()=>({capabilities:this.capabilities,nativeTools:this.nativeTools,model:this.connector?.model??this.confirmedModel??this.initialModel}),onCwdChange:async e=>{await this.handleCwdChange(e)},onModelChange:async e=>{await this.handleModelChange(e)},onMcpServersSet:async e=>{await this.handleMcpServersSet(e)},onCredentialChange:async e=>{await this.handleCredentialChanged(e)}}),...this.structuredOutputManager.registerDefaultHandlers()),this.sessionId&&this.busHandlerCleanups.push(this.globalBus.on(j.turn.started,e=>{e.payload.agentIds.includes(this.agentId)&&this.connector.setCanonicalTurnNumber(e.payload.turnNumber)},{filter:{sessionId:this.sessionId}})),this.busHandlerCleanups.push(this.globalBus.on(k.tools.updated,()=>{this.connector.markToolRefreshPending()}),this.globalBus.on(k.tools.enabled,()=>{this.connector.markToolRefreshPending()})),await this.connectorLifecycleManager.wireAllConnectorEvents(this.connector),this.initialized=!0}async emitStart(e){this.currentBlockIndex=0,await this.lifecycleEmitter.emitStart({model:this.connector.model,cwd:this.connector.cwd,...e})}async emitCompletion(e){await this.lifecycleEmitter.emitCompletion(e)}emitError(e){this.lifecycleEmitter.emitError(e)}emitSessionClosed(e){this.lifecycleEmitter.emitSessionClosed(e)}async enrichPayload(e){return this.payloadEmitter.enrichPayload(e)}async emitGlobal(e,t){await this.payloadEmitter.emitGlobal(e,t)}async trackUsage(e){await this.eventBridge.trackUsage(e)}getContextWindowSize(e){let t=e??this.confirmedModel??this.initialModel;if(!(!t||!this.availableModels))return this.availableModels.find(e=>e.name===t)?.contextWindowSize}async emitContextWindowUpdate(e){await this.eventBridge.emitContextWindowUpdate(e)}async emitToolUse(e,t,n){return this.eventBridge.emitToolUse(e,t,n)}async emitToolOutput(e,t){return this.eventBridge.emitToolOutput(e,t)}async emitStepStarted(e,t,n){await this.eventBridge.emitStepStarted(e,t,n)}async emitStepFinished(e,t){await this.eventBridge.emitStepFinished(e,t)}getBlockIndex(){return this.currentBlockIndex}incrementBlockIndex(){this.currentBlockIndex++}async sendMessage(e){this.globalBus.requestOptional(M.updateStatus,{agentId:this.agentId,status:`active`}),this.lifecycleTracker.setCurrentTurnId(e.payload.turnId);try{let t=await this.turnExecutor.executeSendMessage(e.payload);e.setResult(t)}catch(e){throw this.lifecycleTracker.clearCurrentTurnId(),e}}async handleInterrupt(e){try{await this.ensureConnector().interrupt(),e.setResult({success:!0})}catch(t){e.setResult({success:!1,reason:t instanceof Error?t.message:String(t)})}}addConnectorWiringCleanup(e){this.connectorLifecycleManager.addConnectorWiringCleanup(e)}addBusHandlerCleanup(e){this.busHandlerCleanups.push(e)}async swapConnector(e){await this.connectorLifecycleManager.swapConnector(e),e?.providerContext!==void 0&&(this.config.providerContext=e.providerContext),e?.mcpSessionContext!==void 0&&(this.config.mcpSessionContext=e.mcpSessionContext)}getSupportedReasoningLevels(e){if(e)return this.availableModels?.find(t=>t.name===e)?.supportedReasoningLevels}buildConfigInput(e){let t=this.config,n=this.connector?.currentReasoningEffort??t.reasoningEffort,r=e?.providerContext??t.providerContext;r===void 0&&console.warn(`[AIAgent] No providerContext available for agent "${t.agentId}" — falling back to sentinel. This indicates the orchestrator did not populate a provider context before calling startAgent.`);let i=r??U();return{bus:t.adapterBus,agentId:t.agentId,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:i,model:e?.model??t.model,cwd:e?.cwd??t.cwd,env:t.env,adapterSessionId:e?.adapterSessionId??t.adapterSessionId,sessionId:t.sessionId,resumeAdapterSessionId:e?.resumeAdapterSessionId??t.resumeAdapterSessionId,reasoningEffort:n,supportedReasoningLevels:this.getSupportedReasoningLevels(e?.model??t.model),allowedTools:t.allowedTools,disallowedTools:t.disallowedTools,allowedDirectories:t.allowedDirectories,providerConfig:t.adapterConfig,mcpSessionContext:e?.mcpSessionContext??t.mcpSessionContext,toolLedger:t.toolLedger,clientId:t.clientId,clientProfileName:t.clientProfileName,harnessId:t.harnessId,errorHandler:(e,t)=>{let n=fn(e);this.emitError({error:e.message,...n&&{errorCategory:n}})}}}createOnMessageSent(){return e=>{this.emitGlobal(E.user_message.sent,{messageId:e.messageId,content:e.message,deliveryMode:e.deliveryMode})}}async handleCwdChange(e){let t=await this.runtimeMutationManager.handleCwdChange(e.payload);e.setResult(t)}async handleModelChange(e){let t=await this.runtimeMutationManager.handleModelChange(e.payload);e.setResult(t)}async handleMcpServersSet(e){let t=await this.runtimeMutationManager.handleMcpServersSet(e.payload);e.setResult(t)}async handleCredentialChanged(e){let t=await this.runtimeMutationManager.handleCredentialChanged(e.payload);e.setResult(t)}subscribeConnector(e,t,n,r){let i=e.on(t,n,r);this.connectorLifecycleManager.addConnectorWiringCleanup(i)}async close(e={}){(e.emitSessionClosed??!0)&&this.emitSessionClosed(`closed`);for(let e of this.busHandlerCleanups)try{e()}catch(e){console.warn(`[AIAgent] Bus handler cleanup failed:`,e)}this.busHandlerCleanups=[],this.connectorLifecycleManager.clearConnectorWiring(),await this.connector.close()}ensureConnector(){if(!this.connector)throw Error(`AIAgent ${this.agentId} connector not initialized. Call init() or start() first.`);return this.connector}shouldUseNativeResume(e){return this.supportsNativeResume()?e?!(e.isFirstTurn||e.hasCompression||e.hasNewTransforms||e.hasConnectorSwap):!0:!1}supportsNativeResume(){return!1}async start(e,t){return this.initialized||await this.init(),t?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=t.systemPrompt),this.turnExecutor.executeStart(e,t,this.runtimeSystemPrompt,t?.responseSchema)}async initialize(e){e?.systemPrompt!==void 0&&this.runtimeSystemPrompt===void 0&&(this.runtimeSystemPrompt=e.systemPrompt),this.initialized||await this.init(),await this.ensureConnector().initialize(e)}async onBeforeEmitCompletion(){}async onMessageHandle(e){this.lifecycleEmitter.resetTurnState(),this.latestMessageCompletion=e.waitForCompletion();let t=e.responseSchema,n=t===void 0?void 0:async n=>{if(n.outcome!==`completed`)return n;let r=await this.structuredOutputManager.validateTerminalResult({responseSchema:t,message:n.result?.message,sessionId:this.sessionId,retryTurn:async({attemptNumber:n,validationErrors:r})=>{let i=this.connector;return i?(await(await i.sendMessage(e.message,{deliveryMode:`enqueue`,internalRetry:!0,messageId:`${e.messageId}:structured-output-retry:${n}`,messageHistory:e.messageHistory,responseSchema:t,turnContext:{...e.turnContext,structuredOutputRetry:{attemptNumber:n,validationErrors:r,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}})).waitForCompletion()).result?.message??``:``}});return{...n,result:n.result!==null&&n.result!==void 0?{...n.result,message:r.message}:n.result,structuredOutputValidation:r.structuredOutputValidation}};this.lifecycleTracker.track(e,(e,t)=>{let n=t.error instanceof Error?t.error.message:t.error;this.emitCompletion({message:t.result?.message,messageId:e,outcome:t.outcome,...n&&{error:n},...t.structuredOutputValidation===void 0?{}:{structuredOutputValidation:t.structuredOutputValidation}})},n)}abort(){this.emitSessionClosed(`aborted`),this.ensureConnector().abort()}async getAdapterSessionId(){return this.ensureConnector().getAdapterSessionId()}async complete(){let e=await this.ensureConnector().complete();return e===null||this.latestMessageCompletion===void 0?e:this.latestMessageCompletion}createConnectorEventMapping(e,t,n,r){let i=mt(this.globalBus,this.connector,e,r,t,n,this.enrichPayload.bind(this));return this.connectorLifecycleManager.addConnectorWiringCleanup(i),i}};function mn(e){let t=e.indexOf(`__`);return t===-1?{serverName:``,originalName:e}:{serverName:e.slice(0,t),originalName:e.slice(t+2)}}function hn(e){let{serverName:t,originalName:n}=mn(e);return{fullName:e,originalName:n,serverName:t,injected:!1,lastInjectedAtTurn:void 0,discovered:!1,firstDiscoveredAtTurn:void 0,callCount:0,lastCalledAtTurn:void 0}}var gn=class{entries=new Map;upsert(e){let t=this.entries.get(e);return t||(t=hn(e),this.entries.set(e,t)),t}recordInjection(e,t){let n=new Set(e.map(e=>e.name));for(let n of e){let e=this.upsert(n.name);e.injected=!0,e.lastInjectedAtTurn=t}for(let[e,t]of this.entries)t.injected&&!n.has(e)&&(t.injected=!1)}recordDiscovery(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t)}recordCall(e,t){let n=this.upsert(e);n.discovered=!0,n.firstDiscoveredAtTurn===void 0&&(n.firstDiscoveredAtTurn=t),n.callCount+=1,n.lastCalledAtTurn=t}getInjectedTools(){return Array.from(this.entries.values()).filter(e=>e.injected)}getCallCount(e){return this.entries.get(e)?.callCount??0}getEntry(e){return this.entries.get(e)}getAllEntries(){return Array.from(this.entries.values())}async suggestInjectionSet(e,t){return e.directTools.map(e=>({name:e.fullName,description:e.description??``,toolsetName:e.serverName,inputSchema:e.inputSchema}))}};function _n(e){return typeof e.tool==`string`?e.tool:void 0}function vn(e){return e===de}var yn=class{entries=new Map;globalBus;adapterName;constructor(e){this.globalBus=e.globalBus,this.adapterName=e.adapterName}set(e,t){this.entries.set(e,t)}get(e){return this.entries.get(e)}values(){return this.entries.values()}clear(){this.entries.clear()}async evict(e,t={}){let n=this.entries.get(e);this.entries.delete(e);let r;if(n)try{await n.agent.close({emitSessionClosed:t.emitSessionClosed})}catch(e){r=e}try{await this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`dead`})}catch(t){if(r===void 0)throw t;console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as dead:`,t)}if(r!==void 0)throw r}async evictSilently(e){let t=this.entries.get(e);if(this.entries.delete(e),t)try{await t.agent.close({emitSessionClosed:!1})}catch(t){console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during silent eviction:`,t)}}dispose(e){let t=this.entries.get(e);return t?(t.agent.close().catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Agent ${e} close error during dispose:`,t)}),this.entries.delete(e),this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`disposed`}).catch(t=>{console.warn(`[ActiveAgentRegistry:${this.adapterName}] Failed to mark agent ${e} as disposed:`,t)}),!0):!1}accumulateUsage(e,t,n){let r=this.entries.get(e);if(r)return r.usage.totalInputTokens+=t.inputTokens,r.usage.totalOutputTokens+=t.outputTokens,r.usage.totalCalls++,n&&n!==r.adapterSessionId&&(r.adapterSessionId=n),r}agentIdsBySession(e){return[...this.entries.entries()].filter(([,t])=>t.sessionId===e).map(([e])=>e)}};async function bn(e,t,n){let r={totalInputTokens:0,totalOutputTokens:0,totalCalls:0},i=await e.requestOptional(fe.getBySession,{sessionId:t,status:`completed`});if(!i.handled)return r;for(let e of i.data.turns){let t=e.usage?.byAgent?.[n];t&&(r.totalInputTokens+=t.inputTokens,r.totalOutputTokens+=t.outputTokens)}return r}var xn=class{inFlight=new Map;globalBus;registry;createAgentFn;constructor(e){this.globalBus=e.globalBus,this.registry=e.registry,this.createAgentFn=e.createAgent}handleRehydrateAgent=async e=>{let{agentId:t,cwd:n,model:r,adapterSessionId:i}=e.payload,a=this.inFlight.get(t);if(a){await a,e.setResult({});return}let o=(async()=>{let e=this.registry.get(t);if(e){await this.rehydrateRegisteredAgent(t,e,{adapterSessionId:i,cwd:n,model:r});return}let a=await this.globalBus.requestOptional(M.get,{agentId:t});if(!a.handled||!a.data.agent)throw Error(`Agent ${t} not found in storage`);let o=a.data.agent;if(o.status===`disposed`)throw Error(`Agent ${t} is disposed and cannot be rehydrated`);let s=await this.resolveMcpSessionContext(o.sessionId,o.profileId),c=o.providerConfigId===void 0?void 0:await _e(this.globalBus,o.providerConfigId).catch(U),l={model:r??o.model,cwd:n??o.cwd,allowedDirectories:o.allowedDirectories,adapterSessionId:i??o.adapterSessionId,resumeAdapterSessionId:i??o.adapterSessionId,...c!==void 0&&{providerContext:c},...s!==void 0&&{mcpSessionContext:s}},u=await this.createAgentFn(t,o.sessionId,l),d=await this.resolvePersistedSystemPrompt(o.sessionId,o.personaId,o.profileId);await u.initialize({...d!==void 0&&{systemPrompt:d}}),(n!==void 0||r!==void 0)&&await this.globalBus.requestOptional(M.updateRuntime,{agentId:t,cwd:n,model:r});let f=await u.getAdapterSessionId()||o.adapterSessionId;if(!f)throw Error(`Recovered agent ${t} has no adapterSessionId`);let p=await bn(this.globalBus,o.sessionId,t);this.registry.set(t,{agent:u,sessionId:o.sessionId,adapterSessionId:f,usage:p}),await this.globalBus.requestOptional(M.updateStatus,{agentId:t,status:`idle`})})().catch(e=>{let n=e instanceof Error?e.message:String(e);throw Error(`Failed to recover agent ${t}: ${n}`)});this.inFlight.set(t,o);try{await o}finally{this.inFlight.delete(t)}e.setResult({})};async rehydrateRegisteredAgent(e,t,n){let r=n.adapterSessionId??t.adapterSessionId;await t.agent.swapConnector({cwd:n.cwd,model:n.model,adapterSessionId:r,resumeAdapterSessionId:r});let i=await t.agent.getAdapterSessionId();i&&(t.adapterSessionId=i),(n.cwd!==void 0||n.model!==void 0)&&await this.globalBus.requestOptional(M.updateRuntime,{agentId:e,cwd:n.cwd,model:n.model}),await this.globalBus.requestOptional(M.updateStatus,{agentId:e,status:`idle`})}async resolveMcpSessionContext(e,t){let n=await this.globalBus.requestOptional(j.get,{sessionId:e});if(!n.handled||!n.data.session)return;let r=await this.globalBus.requestOptional(k.session.resolve,{sessionId:e,projectId:null,profileId:t??null});return r.handled?r.data:void 0}async resolvePersistedSystemPrompt(e,t,n){if(!(!t&&!n))try{let r=await this.globalBus.requestOptional(j.resolveSystemPrompt,{sessionId:e,personaId:t,profileId:n});return r.handled?r.data.systemPrompt:void 0}catch{return}}};async function Sn(e,t){let{prompt:n,model:r,systemPrompt:i,responseSchema:a}=e.payload,o=e.payload.providerContext??U(),s=crypto.randomUUID(),c=new dn({bus:t.globalBus,agentId:s,adapterId:t.adapterId,adapterCapabilities:t.adapterCapabilities}),l={bus:t.adapterBus,agentId:s,adapterId:t.adapterId,adapterName:t.adapterName,providerContext:o,...r!==void 0&&{model:r},...t.platformDefaults?.cwd!==void 0&&{cwd:t.platformDefaults.cwd},...t.platformDefaults?.env!==void 0&&{env:t.platformDefaults.env},errorHandler:e=>{console.warn(`[handleInfer:${t.adapterName}] Ephemeral connector error: ${e.message}`)}},u=await t.configFactory(l),d=await t.connectorFactory(u);try{await d.initialize({...i!==void 0&&{systemPrompt:i},...a!==void 0&&{responseSchema:a}});let r=F(n),o={...i!==void 0&&{systemPrompt:i},turnContext:Q(void 0,a,t.adapterCapabilities),...a!==void 0&&{responseSchema:a}},s=await d.start(r,o),l=await s.messageHandle.waitForCompletion(),u=l.result?.message??``;a!==void 0&&l.outcome===`completed`&&(u=await Cn({connector:d,manager:c,responseSchema:a,startResult:s,text:u})),e.setResult({text:u})}finally{try{await d.close()}catch(e){console.warn(`[handleInfer:${t.adapterName}] Connector cleanup error:`,e)}}}async function Cn(e){let{connector:t,manager:n,responseSchema:r,startResult:i,text:a}=e,o=await n.validateTerminalResult({responseSchema:r,message:a,retryTurn:async({attemptNumber:e,validationErrors:n})=>{let a={deliveryMode:`enqueue`,internalRetry:!0,messageId:`${i.messageHandle.messageId}:structured-output-retry:${e}`,responseSchema:r,turnContext:{...i.messageHandle.turnContext,structuredOutputRetry:{attemptNumber:e,validationErrors:n,instruction:`Previous output did not match the requested JSON schema. Respond only with corrected JSON.`}}};return(await(await t.sendMessage(i.messageHandle.message,a)).waitForCompletion()).result?.message??``}});if(o.structuredOutputValidation.status===`failed`)throw wn(o.structuredOutputValidation.errors);return o.message??``}function wn(e){return Error(`Structured output validation failed: ${e.map(e=>e.message).join(`; `)}`)}function Tn(e){let t=e.platformEnv!==void 0||e.env!==void 0?{...e.platformEnv,...e.env}:void 0;return{...e.platformCwd!==void 0&&{cwd:e.platformCwd},...t!==void 0&&{env:t},...e.model!==void 0&&{model:e.model},...e.cwd!==void 0&&{cwd:e.cwd},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.adapterSessionId!==void 0&&{adapterSessionId:e.adapterSessionId},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...e.resumeAdapterSessionId!==void 0&&{resumeAdapterSessionId:e.resumeAdapterSessionId},...e.harnessId!==void 0&&{harnessId:e.harnessId},...e.clientId!==void 0&&{clientId:e.clientId},...e.clientProfileName!==void 0&&{clientProfileName:e.clientProfileName},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.toolLedger!==void 0&&{toolLedger:e.toolLedger},...e.ephemeral!==void 0&&{ephemeral:e.ephemeral}}}function En(e,t,n){if(e.length===0)return;if(n&&n!==`unresolved`)return e.find(e=>e.definition.id===n)?.definition.availableModels;if(e.length===1)return e[0]?.definition.availableModels;if(!t)return;let r=e.filter(e=>(e.definition.availableModels??[]).some(e=>e.name===t));if(r.length===1)return r[0]?.definition.availableModels}async function Dn(e,t,n,r,i){let{adapterId:a,name:o,clientId:s,getPlatformDefaults:c,globalBus:l}=i,u=r.role,d=Date.now(),f=c(),p=r.cwd??f?.cwd,m=r.clientId??s;try{await l.requestOptional(M.set,{agentId:e,agent:{agentId:e,adapterId:a,adapterName:o,sessionId:t,adapterSessionId:n,model:r.model,cwd:p,allowedDirectories:r.allowedDirectories,role:u,status:`idle`,createdAt:d,lastActivityAt:d,...m!==void 0&&{clientId:m},...r.harnessId!==void 0&&{harnessId:r.harnessId}}})}catch(n){console.error(`[AIAdapter:${o}] Optional agent persistence failed:`,{agentId:e,adapterId:a,sessionId:t,error:n})}l.emit(j.agent.added,{sessionId:t,agentId:e,adapterId:a,adapterName:o,adapterSessionId:n,role:u,model:r.model,cwd:p}),l.emit(T.session.created,{adapterId:a,adapterName:o,adapterSessionId:n,sessionId:t,model:r.model??`unknown`})}async function On(e,t,n,r){try{await e.evict(t)}catch(e){throw AggregateError([r,e],`[AIAdapter:${n}] startAgent persistence failed and live agent cleanup also failed.`,{cause:e})}}async function kn(e,t,n,r){try{if(t.initialMessage!==void 0){let r=F(t.initialMessage),i=await e.start(r,{systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema});return{adapterSessionId:i.adapterSessionId,messageId:String(i.messageHandle.messageId),messageHandle:i.messageHandle}}return await e.initialize({systemPrompt:t.systemPrompt,sessionContext:n,responseSchema:t.responseSchema}),{adapterSessionId:await e.getAdapterSessionId()}}catch(n){try{await e.close({emitSessionClosed:!t.ephemeral})}catch(e){console.warn(`[AIAdapter:${r}] Agent cleanup failed after startAgent error:`,e)}throw n}}async function An(e,t,n,r){try{await r?.waitForCompletion(3e5)}finally{await e.evictSilently(t)}}function jn(e){if(e.ephemeral&&e.initialMessage===void 0)throw Error(`ephemeral startAgent requires initialMessage`)}function Mn(e){let{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,registry:a,globalBus:o,createAgent:s}=e;return async function(e){let c=e.payload,l=crypto.randomUUID(),u=c.providerContext??U();jn(c);let d;if(c.ephemeral)d=c.sessionId??crypto.randomUUID();else if((c.mode??`create`)===`create`){let e=await o.requestOptional(j.create,{...c.sessionId?{sessionId:c.sessionId}:{}});d=e.handled?e.data.sessionId:c.sessionId??crypto.randomUUID()}else if(c.sessionId)d=c.sessionId;else throw Error(`startAgent ${c.mode} mode requires sessionId`);let f=await s(l,d,{...c,providerContext:u}),{adapterSessionId:p,messageId:m,messageHandle:h}=await kn(f,c,c.sessionContext?A.parse(c.sessionContext):void 0,n);if(a.set(l,{agent:f,sessionId:d,adapterSessionId:p,usage:{totalInputTokens:0,totalOutputTokens:0,totalCalls:0}}),!c.ephemeral)try{await Dn(l,d,p,{...c,providerContext:u},{adapterId:t,name:n,clientId:r,getPlatformDefaults:i,globalBus:o})}catch(e){throw await On(a,l,n,e),e}e.setResult({success:!0,agentId:l,adapterId:t,sessionId:d,adapterSessionId:p,...m!==void 0&&{messageId:m}}),c.ephemeral&&An(a,l,n,h).catch(e=>{console.warn(`[AIAdapter:${n}] Ephemeral agent cleanup failed:`,e)})}}var Nn=class{adapterId;name;capabilities;nativeTools;namespace;globalBus;adapterBus;registry;cleanupFns=[];rehydrationManager;initialized=!1;clientId;platformDefaults;definitionProviders;agentFactory;configFactory;connectorFactory;constructor(e){this.adapterId=e.adapterId??crypto.randomUUID(),this.name=e.name,this.capabilities=e.capabilities,this.nativeTools=e.nativeTools??[],this.globalBus=e.globalBus??w,this.adapterBus=e.scopedBus,this.namespace=e.namespace,this.agentFactory=e.agentFactory,this.configFactory=e.configFactory,this.connectorFactory=e.connectorFactory,this.clientId=e.clientId,this.platformDefaults=e.platformDefaults,this.definitionProviders=e.definitionProviders??[],this.registry=new yn({globalBus:this.globalBus,adapterName:this.name}),this.rehydrationManager=new xn({globalBus:this.globalBus,registry:this.registry,createAgent:this.createAgent.bind(this)})}setupHandlers(){let e=this.globalBus.withFilter({adapterId:this.adapterId});this.cleanupFns.push(e.on(T.startAgent,Mn({adapterId:this.adapterId,name:this.name,clientId:this.clientId,getPlatformDefaults:()=>this.platformDefaults,registry:this.registry,globalBus:this.globalBus,createAgent:this.createAgent.bind(this)})),e.on(T.rehydrateAgent,this.rehydrationManager.handleRehydrateAgent),e.on(T.infer,e=>Sn(e,{adapterBus:this.adapterBus,globalBus:this.globalBus,adapterId:this.adapterId,adapterName:this.name,adapterCapabilities:this.capabilities,platformDefaults:this.platformDefaults,configFactory:this.configFactory,connectorFactory:this.connectorFactory})),e.on(E.session.closed,this.handleSessionClosed),e.on(E.usage,this.handleUsage),this.globalBus.on(j.closed,this.handleSessionClosedByService),e.on(T.listAgents,e=>{e.setResult({agents:Array.from(this.registry.values()).map(e=>({agentId:e.agent.agentId,sessionId:e.adapterSessionId,adapterSessionId:e.adapterSessionId}))})}),e.on(T.getAgent,e=>{let t=this.registry.get(e.payload.agentId);e.setResult({agent:t?{agentId:t.agent.agentId,sessionId:t.sessionId,adapterSessionId:t.adapterSessionId}:null})}),e.on(T.stopAgent,e=>{e.setResult({success:this.disposeAgent(e.payload.agentId)})}),e.on(T.getCapabilities,e=>{e.setResult({capabilities:this.capabilities,nativeTools:this.nativeTools})}))}handleSessionClosed=e=>{let{agentId:t,adapterSessionId:n,reason:r}=e.payload,i=this.registry.get(t);if(!i){console.warn(`Agent ${t} not found, can't emit AgentSubjects.session.closed`);return}this.registry.evict(t).catch(e=>{console.error(`[AIAdapter:${this.name}] Failed to evict agent ${t} after session.closed:`,e)}),this.globalBus.emit(T.session.closed,{adapterId:this.adapterId,adapterName:this.name,agentId:t,sessionId:i.sessionId,adapterSessionId:n,reason:r})};handleSessionClosedByService=async e=>{let{sessionId:t}=e.payload,n=this.registry.agentIdsBySession(t);await Promise.all(n.map(e=>this.registry.evict(e,{emitSessionClosed:!1}).catch(t=>console.error(`[AIAdapter:${this.name}] Failed to evict agent ${e} after session.closed:`,t))))};handleUsage=e=>{let{agentId:t,adapterSessionId:n,inputTokens:r,outputTokens:i}=e.payload,a=this.registry.accumulateUsage(t,{inputTokens:r,outputTokens:i},n);a&&this.globalBus.emit(T.session.usage,{adapterId:this.adapterId,adapterName:this.name,sessionId:a.sessionId,adapterSessionId:a.adapterSessionId,...a.usage})};async init(){this.initialized||(this.adapterBus??=await this.namespace.scopedBus(),this.setupHandlers(),await this.onInit(),this.initialized=!0,await this.globalBus.emit(T.initialized,{adapterId:this.adapterId,adapterName:this.name,capabilities:this.capabilities,nativeTools:this.nativeTools}))}async onInit(){}async createAgent(e,t,n){if(!this.adapterBus)throw Error(`Adapter bus not initialized. Did you forget to call init()?`);let{model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,reasoningEffort:c,mcpSessionContext:l,harnessId:u,ephemeral:d}=n,f=n.clientId??this.clientId,p=n.resumeAdapterSessionId??(`adapterSessionId`in n&&`mode`in n&&n.mode===`resume`?n.adapterSessionId:void 0),m=En(this.definitionProviders,r,n.providerContext?.definitionId),h=l===void 0?void 0:new gn,g={agentId:e,adapterId:this.adapterId,adapterName:this.name,adapterBus:this.adapterBus,capabilities:this.capabilities,nativeTools:this.nativeTools,availableModels:m,configFactory:this.configFactory,connectorFactory:this.connectorFactory,sessionId:t,...n.providerContext!==void 0&&{providerContext:n.providerContext},...Tn({platformCwd:this.platformDefaults?.cwd,platformEnv:this.platformDefaults?.env,model:r,cwd:i,env:a,allowedTools:o,disallowedTools:s,allowedDirectories:n.allowedDirectories,adapterSessionId:n.adapterSessionId,reasoningEffort:c,adapterConfig:n.adapterConfig,resumeAdapterSessionId:p,harnessId:u,clientId:f,clientProfileName:n.clientProfileName,mcpSessionContext:l,toolLedger:h,ephemeral:d})};return this.agentFactory(g)}async closeAsync(){try{let e=await Promise.allSettled([...this.registry.values()].map(e=>e.agent.close()));this.registry.clear(),await this.onClose();let t=e.filter(e=>e.status===`rejected`).map(e=>e.reason instanceof Error?e.reason:Error(String(e.reason)));t.length>0&&console.warn(`[AIAdapter] ${t.length} agent(s) failed to close:`,t)}finally{for(let e of this.cleanupFns)try{e()}catch(e){console.warn(`[AIAdapter] Cleanup function failed:`,e)}this.cleanupFns=[],this.initialized=!1}}close(){this.closeAsync()}async onClose(){}getAgent(e){let t=this.registry.get(e);if(t)return Object.assign({},t.agent,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId})}disposeAgent(e){return this.registry.dispose(e)}getActiveAgents(){return Array.from(this.registry.values()).map(e=>Object.assign({},e.agent,{sessionId:e.sessionId,adapterSessionId:e.adapterSessionId}))}isInitialized(){return this.initialized}};function Pn(e){let t={adapterSessionId:e.adapterSessionId,lineage:e.lineage,messages:e.messagePayloads};return e.compactionMetadata&&(t.compaction=e.compactionMetadata),e.compressChildren?.length&&(t.children=e.compressChildren.map(Pn)),t}var Fn=class{processLogFile(e){let t=Array.isArray(e)?e:[e],n=this.extractSessionContext(t),r=this.processRecords(t,n);return{adapterSessionId:n.adapterSessionId,sessionEvent:n.sessionEvent,messageEvents:[n.startedEvent,...r],messagePayloads:[],lineage:{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null}}}};function In(e){let t=new Map,n=[];return n.push(e.on(a.get,e=>{let{filePath:n}=e.payload,r=t.get(n)??null;e.setResult({cursor:r})})),n.push(e.on(a.set,e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;t.set(n,{filePath:n,bytesRead:r,lastModified:i}),e.setResult({success:!0})})),n.push(e.on(a.delete,e=>{let{filePath:n}=e.payload,r=t.delete(n);e.setResult({success:r})})),()=>{n.forEach(e=>e()),t.clear()}}const Ln=C.object({sessions:C.record(C.string(),C.object({state:C.enum([`idle`,`active`]),currentTurnId:C.string().optional()}))}).default({sessions:{}});var Rn=class{options;sessions=new Map;generateTurnId;constructor(e){this.options=e,this.generateTurnId=e.generateTurnId??(()=>crypto.randomUUID())}processRecord(e){let t=this.options.getSessionId(e),n=this.getOrCreateSessionState(t),r=[],i=this.options.detectTurnStart(e),a=this.options.detectTurnComplete(e);if(i){n.state===`active`&&n.currentTurnId&&r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId});let e=this.generateTurnId(t);n.state=`active`,n.currentTurnId=e,r.push({type:`turn.started`,sessionId:t,turnId:e})}else a&&n.state===`active`&&n.currentTurnId&&(r.push({type:`turn.completed`,sessionId:t,turnId:n.currentTurnId}),n.state=`idle`,n.currentTurnId=void 0);return r}getState(e){return this.sessions.get(e)?.state??`idle`}getCurrentTurnId(e){return this.sessions.get(e)?.currentTurnId}hasActiveTurn(e){return this.getState(e)===`active`}resetSession(e){return this.sessions.delete(e)}resetAll(){this.sessions.clear()}serialize(){let e={};for(let[t,n]of this.sessions)e[t]={state:n.state,currentTurnId:n.currentTurnId};return{sessions:e}}restore(e){this.sessions.clear();for(let[t,n]of Object.entries(e.sessions))this.sessions.set(t,{state:n.state,currentTurnId:n.currentTurnId})}getTrackedSessions(){return Array.from(this.sessions.keys())}forceCompleteTurn(e){let t=this.sessions.get(e);if(!t||t.state!==`active`||!t.currentTurnId)return;let n={type:`turn.completed`,sessionId:e,turnId:t.currentTurnId};return t.state=`idle`,t.currentTurnId=void 0,n}getOrCreateSessionState(e){let t=this.sessions.get(e);return t||(t={state:`idle`,currentTurnId:void 0},this.sessions.set(e,t)),t}};const zn=C.object({eventType:C.literal(`agent_started`),model:C.string().optional()}),Bn=C.object({eventType:C.literal(`agent_complete`),message:C.string().optional(),error:C.string().optional()}),Vn=C.object({eventType:C.literal(`error`),message:C.string(),code:C.string().or(C.number()).optional(),type:C.string().optional()}),Hn=C.object({eventType:C.literal(`tool_started`),toolName:C.string(),toolCallId:C.string()}),Un=C.object({eventType:C.literal(`tool_completed`),toolName:C.string(),toolCallId:C.string(),result:C.string(),success:C.boolean()});export{Nn as AIAdapter,pn as AIAgent,K as AIAgentConnector,Bn as AgentCompleteEventSchema,St as AgentConnectorLifecycleManager,Z as AgentEventBridge,X as AgentLifecycleEmitter,gt as AgentPayloadEmitter,xt as AgentRuntimeMutationManager,zn as AgentStartedEventSchema,_t as AgentTurnExecutor,dt as BaseConnectorSession,q as BaseConnectorTurn,Fn as BaseLogImporter,Vn as ErrorEventSchema,o as ImportCursorPositionSchema,i as ImportCursorStorageNamespace,a as ImportCursorStorageSubjects,Ue as MAKAIO_CONFORMANCE_PRIMARY_MODEL_ENV,R as MAKAIO_CONFORMANCE_PROVIDER_DEFINITIONS_ENV,He as MAKAIO_CONFORMANCE_PROVIDER_ENV,We as MAKAIO_CONFORMANCE_SECONDARY_MODEL_ENV,G as MessageHandle,J as MessageLifecycleTracker,pt as ProceduralAgentConnector,ft as ProceduralConnectorTurn,tt as ScopedToolApprovalSchema,at as SessionLifecycle,gn as SessionToolLedger,Y as ToolCallTracker,Un as ToolCompletedEventSchema,Hn as ToolStartedEventSchema,Rn as TurnTracker,Ln as TurnTrackerSerializedStateSchema,ot as UserMessageQueue,n as cleanEnvForAdapter,xe as createAdapterNamespace,L as createTestProviderContext,nt as createToolApprovalHandler,Ie as defineDiscriminatedHandlers,Le as defineDiscriminatedHandlersSync,_n as extractMcpCallTarget,we as formatContextBlockAsText,Pe as formatContextBlocksAsText,Ze as formatMessageHistoryAsTranscript,vn as isMcpCallTool,rt as isTextLikeMimeType,ut as markCompletedWithFinalResult,et as mergeScopedToolApproval,I as normalizeEnvValue,F as normalizeMessageInput,H as normalizeMimeType,Fe as parseAIAdapterCapabilities,Re as processDiscriminatedItems,ze as processDiscriminatedItemsSync,W as processQueueMessages,ht as registerAgentBusHandlers,In as registerMemoryImportCursorStorage,Je as resolveConformanceTestPreset,Ye as resolveDisabledNativeTools,it as resolvePresetCredentials,V as resolveRequiredSessionId,Ve as resolveTestConfig,P as safeJsonStringify,$e as serializeBlockToText,Me as serializeTurnContext,Pn as toImportSegment};
|
package/dist/adapters/node.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as LogImporter, i as LogFileChangeEvent, n as LogOrchestratorConfig, t as BaseLogOrchestrator } from "../base-orchestrator-
|
|
1
|
+
import { g as LogImporter, i as LogFileChangeEvent, n as LogOrchestratorConfig, t as BaseLogOrchestrator } from "../base-orchestrator-M5mAB5-w.mjs";
|
|
2
2
|
|
|
3
3
|
//#region adapters/core/src/log-importer/jsonl-parser.d.ts
|
|
4
4
|
/**
|