@makaio/framework 1.0.0-dev-1785409369816 → 1.0.0-dev-1787670071418
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 +2 -0
- package/dist/.makaio-build.json +4 -3
- package/dist/{account-identity-DFx8pwKL.mjs → account-identity-B3vLwm9O.mjs} +1 -1
- package/dist/adapter-Dz1fX5Wa.mjs +1 -0
- package/dist/adapter-subsystem/index.d.mts +194 -20
- package/dist/adapter-subsystem/index.mjs +1 -1
- package/dist/adapters/acp-client/index.d.mts +105 -7
- package/dist/adapters/acp-client/index.mjs +2 -2
- package/dist/adapters/claude/index.d.mts +5 -5
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/config/index.mjs +1 -1
- package/dist/adapters/index.d.mts +405 -824
- package/dist/adapters/index.mjs +6 -6
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +1 -1
- package/dist/adapters/stream-session/index.d.mts +28 -7
- package/dist/adapters/stream-session/index.mjs +1 -1
- package/dist/{ajv-DD3SIL2i.mjs → ajv-krzJXh1X.mjs} +2 -2
- package/dist/artifact-Btbuib48.mjs +1 -0
- package/dist/attach-error-Cb3GbeKe.mjs +1 -0
- package/dist/{auth-DGEdiHF6.mjs → auth-C6tVtaOX.mjs} +1 -1
- package/dist/authority-state-bootstrap-CLYus369.mjs +1 -0
- package/dist/automation-trigger-ByjNlClm.mjs +1 -0
- package/dist/await-trigger-Bkg2BQfg.mjs +1 -0
- package/dist/bus/index.d.mts +41 -9
- package/dist/bus/index.mjs +1 -1
- package/dist/bus-D6NoBhIV.mjs +2 -0
- package/dist/bus-UgFdHybD.mjs +1 -0
- package/dist/caller-owned-adapter-stub-C1M7FKrv.mjs +1 -0
- package/dist/{canonical-model-BAytQ4NV.mjs → canonical-model-DXOvCaVg.mjs} +1 -1
- package/dist/capabilities-BUwuA7XX.mjs +1 -0
- package/dist/capability-j3NekkIu.mjs +1 -0
- package/dist/{client-DbS847wW.mjs → client-BkznbdsO.mjs} +1 -1
- package/dist/clients/index.d.mts +2 -2
- package/dist/clients/index.mjs +1 -1
- package/dist/clients/managed-install.d.mts +1 -1
- package/dist/clients/managed-install.mjs +1 -1
- package/dist/code-execution/worker-entry.d.mts +21 -0
- package/dist/code-execution/worker-entry.mjs +1 -0
- package/dist/code-execution-Ckmn8OZu.mjs +1 -0
- package/dist/code-execution-CweDSWco.mjs +1 -0
- package/dist/code-execution-DqkQjKa1.mjs +1 -0
- package/dist/{compression-74fFeBha.mjs → compression-CtgeVLpP.mjs} +1 -1
- package/dist/{config-namespace-TVX-hG4I.mjs → config-namespace-CjWvw8ij.mjs} +1 -1
- package/dist/{context-resolution-DdyhpH4L.d.mts → context-resolution-841T7jBI.d.mts} +11 -11
- package/dist/contracts/adapter/index.d.mts +3 -3
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +3 -3
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/auth/index.d.mts +2 -2
- package/dist/contracts/auth/index.mjs +1 -1
- package/dist/contracts/automation-trigger/index.d.mts +4 -0
- package/dist/contracts/automation-trigger/index.mjs +1 -0
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/canonical-model/index.mjs +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/capabilities/index.mjs +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/code-execution/index.d.mts +2 -0
- package/dist/contracts/code-execution/index.mjs +1 -0
- package/dist/contracts/common/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +1 -1
- package/dist/contracts/config/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +6 -5
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/facet/index.mjs +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/harness/index.mjs +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/host/index.mjs +1 -1
- package/dist/contracts/index.d.mts +171 -100
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/materialization/index.mjs +1 -1
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/model-registry/index.mjs +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/platform/index.mjs +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/reaction/index.d.mts +2 -0
- package/dist/contracts/reaction/index.mjs +1 -0
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +3 -3
- package/dist/contracts/shared/index.mjs +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/skill/index.mjs +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.mjs +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/timeout/index.mjs +1 -1
- package/dist/contracts/toast/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/variant/index.mjs +1 -1
- package/dist/contracts/worker-node/index.d.mts +1 -1
- package/dist/contracts/worker-node/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +3 -3
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/contribution-CUHLVLsT.d.mts +35 -0
- package/dist/core/index.d.mts +84 -2
- package/dist/core/index.mjs +1 -1
- package/dist/{definition-CJfiv8xm.mjs → definition-BH4QLGLI.mjs} +1 -1
- package/dist/definition-DyGImhyi.d.mts +375 -0
- package/dist/{detached-extension-handle-Ddfquy5_.mjs → detached-extension-handle-D0aI0pJA.mjs} +1 -1
- package/dist/drizzle/0031_adapter_session_currency.sql +66 -0
- package/dist/drizzle/0032_native_session_ownership.sql +77 -0
- package/dist/drizzle/0033_m_msf3hu2s.sql +1 -0
- package/dist/drizzle/0034_m_msha1388.sql +41 -0
- package/dist/drizzle/0035_m_mshgj6x7.sql +40 -0
- package/dist/drizzle/0036_m_msivwbgm.sql +1 -0
- package/dist/drizzle/0037_runtime_instance_incarnation_counter.sql +6 -0
- package/dist/drizzle/meta/_journal.json +49 -0
- package/dist/event-B8ELuk6k.mjs +1 -0
- package/dist/{execution-attempt-repository-DWXKY41_.d.mts → execution-attempt-repository-BJ2W6wwx.d.mts} +1 -1
- package/dist/{execution-target-Cf645pDj.mjs → execution-target-H0RWV7Py.mjs} +1 -1
- package/dist/extension-Bfkr2DBs.mjs +1 -0
- package/dist/extension-Cz39YNXy.mjs +1 -0
- package/dist/extension-context-QmFuHdq5.d.mts +295 -0
- package/dist/{extension-discovery-CQRdbVQ6.d.mts → extension-discovery-Dhu3WplO.d.mts} +11 -1
- package/dist/{extension-namespace-Yu41YepM.mjs → extension-namespace-QoTTwKPt.mjs} +1 -1
- package/dist/extension-package-provenance-aYrZuS4W.mjs +1 -0
- package/dist/{filesystem-service-DlP2HfDg.mjs → filesystem-service-CiUw0YN5.mjs} +1 -1
- package/dist/framework-packages-BHgul8Kl.mjs +1 -0
- package/dist/git/index.mjs +2 -2
- package/dist/{globby-1yCVCk8s.mjs → globby-QBDqstzq.mjs} +1 -1
- package/dist/handlers-BsHAFtye.mjs +57 -0
- package/dist/{harness-DpwsFsE7.mjs → harness-YQ2ewID9.mjs} +1 -1
- package/dist/{hook-responses-Dh1PWXqJ.d.mts → hook-responses-9Ywsqzzq.d.mts} +2 -293
- package/dist/identity-OjRlG6dZ.mjs +1 -0
- package/dist/{index-CMgLxw14.d.mts → index-8NdPPzUh2.d.mts} +2 -2
- package/dist/{index-Ds5_rDEJ.d.mts → index-8y4hT9WL.d.mts} +1 -12
- package/dist/{index-BVlXneHH.d.mts → index-B-3I98nw.d.mts} +14 -10
- package/dist/index-B0VO0rAl.d.mts +302 -0
- package/dist/{index-gUhidukN.d.mts → index-B0yMCJW8.d.mts} +324 -2
- package/dist/index-BM56936c.d.mts +165 -0
- package/dist/{index-CLvQsL6s2.d.mts → index-BNzUyVwV.d.mts} +2105 -320
- package/dist/{index-BaZeoZoS.d.mts → index-BTEJfzjE.d.mts} +1 -1
- package/dist/{index-B0Kf_OWi.d.mts → index-BfV8U4XX.d.mts} +1 -1
- package/dist/{index-DCZ8BX9S.d.mts → index-BkbnC65b.d.mts} +487 -85
- package/dist/{index-GHASUiem.d.mts → index-BmevAPME2.d.mts} +1 -1
- package/dist/index-Bqk0pJBQ2.d.mts +138 -0
- package/dist/{index-B9UW_vPM.d.mts → index-C146Eq_J.d.mts} +2465 -273
- package/dist/{index-BAXkicoQ.d.mts → index-CIEycZrt.d.mts} +1 -1
- package/dist/{index-DkiTJM5p.d.mts → index-CMekqu_D.d.mts} +44 -10
- package/dist/{index-SsBHjUqA.d.mts → index-CPRQ4dWX.d.mts} +0 -23
- package/dist/{index-EjsSBQXy2.d.mts → index-CPi0UpRh.d.mts} +1 -1
- package/dist/{index-DSBT83c0.d.mts → index-CYjgoYeX.d.mts} +24 -3
- package/dist/{index-DnG-QFpG.d.mts → index-CmwAJ8-5.d.mts} +18 -1
- package/dist/index-Cny5RvjO.d.mts +800 -0
- package/dist/{index-BNMnIe-j.d.mts → index-D-4jv_66.d.mts} +434 -863
- package/dist/{index-brqfk9JQ.d.mts → index-D8D-yibS2.d.mts} +4 -4
- package/dist/index-DHnSLGP4.d.mts +268 -0
- package/dist/{index-D5Nb7IEP.d.mts → index-DI2lS7VT.d.mts} +79 -41
- package/dist/{index-D_ODXsBv.d.mts → index-DJ2KgJDJ2.d.mts} +51 -95
- package/dist/{index-cqLS1eFV.d.mts → index-DNI6UF9h.d.mts} +133 -134
- package/dist/index-DQ8o3JGi.d.mts +132 -0
- package/dist/index-DWBkiiXH.d.mts +18 -0
- package/dist/{index-DlsHL9Jg.d.mts → index-DXtQRehh.d.mts} +12 -12
- package/dist/{index-4VfqCjl2.d.mts → index-D_4K3Tf_.d.mts} +79 -194
- package/dist/index-Dg11JxKZ.d.mts +496 -0
- package/dist/json-value-BBZ6uGwc.mjs +1 -0
- package/dist/json-value-DPqb-SJ8.d.mts +177 -0
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/index.mjs +1 -1
- package/dist/kernel/cli/register.d.mts +1 -1
- package/dist/kernel/cli/register.mjs +1 -1
- package/dist/kernel/cli/schemas.mjs +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +9 -9
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.d.mts +2 -2
- package/dist/kernel/namespace/index.mjs +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/observability/index.mjs +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/providers/index.mjs +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/kernel/window/index.mjs +1 -1
- package/dist/{lib-DErgth_E.mjs → lib-BpGvHZye.mjs} +2 -2
- package/dist/{lib-C7-s68uf.mjs → lib-Cm-uEoC1.mjs} +1 -1
- package/dist/{load-extensions-BxsDB87B.d.mts → load-extensions-BQoXaHhR.d.mts} +17 -13
- package/dist/load-extensions-DG5LvPyM.mjs +1 -0
- package/dist/{materialization-Jd198K3y.mjs → materialization-lVd9_-jr.mjs} +1 -1
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/model-DrzPt3ou.mjs +1 -0
- package/dist/{namespace-BqxtpNAn.mjs → namespace-BL7lHlmg.mjs} +1 -1
- package/dist/{namespace-CjjFvrIA2.d.mts → namespace-BNp7n_gu.d.mts} +25 -25
- package/dist/{namespace-g_mbIZq_.d.mts → namespace-BRuHzhPo.d.mts} +564 -28
- package/dist/{namespace-DV-Hr9sZ.d.mts → namespace-C06lJSuj.d.mts} +17 -7
- package/dist/{namespace-TseEI3Pu.d.mts → namespace-DOezqDti.d.mts} +18 -10
- package/dist/{namespace-CErHuXtb.d.mts → namespace-DknCutQZ.d.mts} +50 -0
- package/dist/{namespace-B8uKAzWJ.mjs → namespace-Du0accdE.mjs} +1 -1
- package/dist/{namespace-CWUDFGOy.mjs → namespace-NXm_zvL1.mjs} +1 -1
- package/dist/{namespace-CupOzbRv.d.mts → namespace-l-HG1rLF.d.mts} +24 -20
- package/dist/namespace-sCPb79-7.mjs +1 -0
- package/dist/{native-session-supervisor-DRx0MX-d.mjs → native-session-supervisor-LKio8XZn.mjs} +1 -1
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/index.mjs +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.mjs +1 -1
- package/dist/npm-package-name-DuTYVICk.mjs +1 -0
- package/dist/orchestrator-shared-BGlN-m-V.mjs +1 -0
- package/dist/{orchestrator-shared-BHCv-l2O.d.mts → orchestrator-shared-CNHSImNY.d.mts} +10 -10
- package/dist/ownership-memory-handler-BpGdR_uG.mjs +1 -0
- package/dist/ownership-recovery-guard-DyW5vGBr.mjs +1 -0
- package/dist/package-B01gmu75.mjs +7 -0
- package/dist/{package-DWMxGfzK.d.mts → package-BNFTUFLB.d.mts} +234 -84
- package/dist/package-DttKA9wN.mjs +1 -0
- package/dist/package-EGTn-Ng1.mjs +1 -0
- package/dist/package-JtjbO-Oi.mjs +1 -0
- package/dist/package.json +1 -1
- package/dist/{profile-BTAI31Nt.mjs → profile-N5qGUpF0.mjs} +1 -1
- package/dist/{provider-context-PZIQWcqQ.mjs → provider-context-CG42JlP9.mjs} +1 -1
- package/dist/{provider-context-Dq53Cgzz.mjs → provider-context-zTDSH2x9.mjs} +1 -1
- package/dist/reaction-D3TNwPK8.mjs +1 -0
- package/dist/{registry-wfF2uTty.mjs → registry-Dk12tAfv.mjs} +2 -2
- package/dist/{resolved-DZgqql2Z.mjs → resolved-sq8RXNDf.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +1 -1
- package/dist/rules/schemas.d.mts +1 -1
- package/dist/rules/schemas.mjs +1 -1
- package/dist/runtime-bun/index.mjs +1 -1
- package/dist/runtime-node/code-execution/index.d.mts +3 -0
- package/dist/runtime-node/code-execution/index.mjs +1 -0
- package/dist/runtime-node/extension-discovery.d.mts +2 -2
- package/dist/runtime-node/extension-discovery.mjs +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 +7 -5
- package/dist/runtime-node/index.mjs +24 -24
- 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-DKUb4rkr.d.mts → schema-B3Pf7JP7.d.mts} +778 -21
- package/dist/{schema-Dd-e89MO.mjs → schema-Dq-7si8u.mjs} +1 -1
- package/dist/{schemas-B1NWNASS.d.mts → schemas-BXc9qOpl.d.mts} +2 -0
- package/dist/schemas-BfO5jkrL.mjs +1 -0
- package/dist/{schemas-CR8hSqTy.d.mts → schemas-C1mxTfd7.d.mts} +60 -4
- package/dist/schemas-C3kyQWGf.mjs +1 -0
- package/dist/{schemas-DnYiAvfz.d.mts → schemas-D7ScxLrf.d.mts} +24 -20
- package/dist/{schemas-BsVYZviy.d.mts → schemas-OWvBn7AH.d.mts} +4 -4
- package/dist/{schemas-DaHQzpgm.mjs → schemas-QWDnauKX.mjs} +1 -1
- package/dist/schemas-TK29KWx-.mjs +1 -0
- package/dist/schemas-_2Syo_01.mjs +1 -0
- package/dist/scoped-bus-DoPmCJeM.mjs +1 -0
- package/dist/{selection-BNwTKEVT.mjs → selection-DL3ric7K.mjs} +1 -1
- package/dist/services/adapter-runtime/index.d.mts +4 -4
- package/dist/services/adapter-runtime/index.mjs +1 -1
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +2 -2
- package/dist/services/adapter-runtime/schemas.mjs +1 -1
- package/dist/services/adapter-subsystem/index.d.mts +4 -4
- package/dist/services/adapter-subsystem/index.mjs +1 -1
- package/dist/services/adapter-subsystem/namespace.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.mjs +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/automation-trigger/index.d.mts +943 -0
- package/dist/services/automation-trigger/index.mjs +1 -0
- package/dist/services/capability/index.d.mts +3 -2
- package/dist/services/capability/index.mjs +1 -1
- package/dist/services/code-execution/index.d.mts +2 -0
- package/dist/services/code-execution/index.mjs +1 -0
- 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 +1 -1
- package/dist/services/context-rules/index.mjs +1 -1
- package/dist/services/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/index.mjs +1 -1
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/namespace.mjs +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/execution-target/schemas.mjs +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/index.mjs +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/git/namespace.d.mts +18 -0
- package/dist/services/git/namespace.mjs +1 -1
- package/dist/services/git/schemas.d.mts +10 -1
- package/dist/services/git/schemas.mjs +1 -1
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/index.d.mts +567 -101
- package/dist/services/index.mjs +1 -1
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +3 -3
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/log-import.mjs +1 -1
- package/dist/services/log-import/namespace.mjs +1 -1
- package/dist/services/log-import/schemas.mjs +1 -1
- package/dist/services/materialization/index.d.mts +1 -1
- package/dist/services/materialization/index.mjs +1 -1
- package/dist/services/model-registry/index.d.mts +1 -1
- package/dist/services/model-registry/index.mjs +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/provider-context/index.d.mts +1 -1
- package/dist/services/provider-context/index.mjs +1 -1
- package/dist/services/provider-runtime/index.mjs +1 -1
- package/dist/services/session/handlers/index.d.mts +2 -2
- 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 +33 -4
- package/dist/services/session/testing/index.mjs +68 -12
- package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.d.mts +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/session-editor/index.mjs +1 -1
- package/dist/services/settings/index.d.mts +3 -3
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/namespace.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
- package/dist/services/settings/storage/clients-namespace.mjs +1 -1
- package/dist/services/settings/storage/index.d.mts +3 -3
- package/dist/services/settings/storage/index.mjs +1 -1
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent/index.d.mts +1 -1
- package/dist/services/subagent/index.mjs +1 -1
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.d.mts +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +3 -3
- package/dist/services/tray-menu/index.mjs +1 -1
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/services/turn/index.d.mts +1 -1
- package/dist/services/turn/namespace.d.mts +1 -1
- package/dist/services/workflow-transitions/index.d.mts +1 -1
- package/dist/services/workflow-transitions/index.mjs +1 -1
- package/dist/session-BOpTI79g.mjs +1 -0
- package/dist/session-CXOPk3yg.mjs +95 -0
- package/dist/shared-B9AWRm9A.mjs +1 -0
- package/dist/{skill-BR6rkfLe.mjs → skill-DGNtc_ww.mjs} +1 -1
- package/dist/{src-DD0v-nIj.mjs → src-BmSQ3rlz.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +1 -1
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/index.d.mts +81 -2
- package/dist/storage/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/index.d.mts +1 -1
- package/dist/storage/handlers/index.mjs +1 -1
- package/dist/tool-approval-service-BFDOFUGC.mjs +1 -0
- package/dist/{tools-PdG9fO1M.mjs → tools-DWKWX3eV.mjs} +1 -1
- package/dist/{transition-Du3MQzJV.d.mts → transition-D3zUBTPc.d.mts} +11 -38
- package/dist/{types-D7_kevBK.d.mts → types-BlB23n4f.d.mts} +1 -1
- package/dist/{types-DMLDHFR9.d.mts → types-CtDGkyLx2.d.mts} +1 -1
- package/dist/types-Cwza95hS.mjs +1 -0
- package/dist/{types-Dzrwa1GY.d.mts → types-DcxBYlPA.d.mts} +5834 -1436
- package/dist/types-DnK6Wa_Y.d.mts +260 -0
- package/dist/types-OKJCOjme.d.mts +2937 -0
- package/dist/ui-hooks/index.d.mts +29 -2
- package/dist/ui-hooks/index.mjs +1 -1
- package/dist/ui-kernel/index.d.mts +2 -2
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/ui-views/index.d.mts +1 -1
- package/dist/utils/index.d.mts +98 -1
- package/dist/utils/index.mjs +2 -2
- package/dist/utils/project-manifest.mjs +1 -1
- package/dist/{version-CoCeMxDT.mjs → version-BYeVh1pI.mjs} +1 -1
- package/dist/{view-builder-DeFd-k7C.d.mts → view-builder-B0j9p5C0.d.mts} +4 -4
- package/dist/{visibility-qhGWmpSJ.mjs → visibility-DtDLRBdr.mjs} +1 -1
- package/dist/worker-node-CjuQb9hl.mjs +1 -0
- package/dist/{worker-node-DZTuT1DS.mjs → worker-node-Dtf9ilsR.mjs} +1 -1
- package/dist/workflow-C4mck_NW.mjs +1 -0
- package/dist/workflow-engine/execution-attempt-repository.d.mts +1 -1
- package/dist/workflow-engine/index.d.mts +237 -518
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.d.mts +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/provider-operation.d.mts +1 -1
- package/dist/workflow-engine/testing/index.d.mts +2 -2
- package/dist/workflow-engine/testing/index.mjs +1 -1
- package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
- package/dist/workflow-engine/testing/sqlite.mjs +27 -27
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/workflow-engine/workflow-trigger-binding-consumer.d.mts +46 -0
- package/dist/workflow-engine/workflow-trigger-binding-consumer.mjs +1 -0
- package/dist/{workflow-transitions-DSc45ixc.mjs → workflow-transitions-c_VQbyV0.mjs} +1 -1
- package/dist/workflow-worker-aNbdgqml.mjs +1 -0
- package/dist/zod-json-schema-Dixc-B1T.mjs +1 -0
- package/package.json +46 -1
- package/dist/adapter-D5c5LrPN.mjs +0 -1
- package/dist/artifact-DGiXqb11.mjs +0 -1
- package/dist/attach-error-C3tngg6J.mjs +0 -1
- package/dist/authority-state-bootstrap-GPL_tqaT.mjs +0 -1
- package/dist/await-trigger-I3lrepb8.mjs +0 -1
- package/dist/bus-B6SAjgOC.mjs +0 -2
- package/dist/bus-C2l3K74u.mjs +0 -1
- package/dist/capabilities-BQEp34ir.mjs +0 -1
- package/dist/capability-service-BqiLlRGA.mjs +0 -1
- package/dist/event-CmVjR6Ib.mjs +0 -1
- package/dist/extension-DCA4pYrY.mjs +0 -1
- package/dist/extension-hjOPs10e.mjs +0 -1
- package/dist/framework-packages-C3RWfJDk.mjs +0 -1
- package/dist/handlers-CfnLyLfE.mjs +0 -57
- package/dist/identity-D6guMtmi.mjs +0 -1
- package/dist/index-CRvpVIqA.d.mts +0 -89
- package/dist/json-value-Brslhqbm.d.mts +0 -57
- package/dist/json-value-DmU8ibo_.mjs +0 -1
- package/dist/load-extensions-D0DfjYLC.mjs +0 -1
- package/dist/model-BGgVmRnN.mjs +0 -1
- package/dist/namespace-DJfUADSV.mjs +0 -1
- package/dist/orchestrator-shared-BxmHCPvx.mjs +0 -1
- package/dist/package-CNUPPcU1.mjs +0 -7
- package/dist/package-Dft_RItb.mjs +0 -1
- package/dist/schemas-CRB2O5zo.mjs +0 -1
- package/dist/schemas-Cm09dXL4.mjs +0 -1
- package/dist/schemas-tDf_WiC8.mjs +0 -1
- package/dist/scoped-bus-C9BdNwfM.mjs +0 -1
- package/dist/session-BOGCd18q.mjs +0 -1
- package/dist/session-BTFiDoGz.mjs +0 -76
- package/dist/shared-BQ0CHIVy.mjs +0 -1
- package/dist/tool-approval-service-kBA0fRzm.mjs +0 -1
- package/dist/types-CJ_QZ1yW.d.mts +0 -1487
- package/dist/worker-node-Bl9_vqYi.mjs +0 -1
- package/dist/workflow-BfDbgtIQ.mjs +0 -1
- package/dist/workflow-worker-BN9XPxQO.mjs +0 -1
- package/dist/{adapter-auth-runtime-DO-FVTXg.mjs → adapter-auth-runtime-DHHppU4f.mjs} +0 -0
- package/dist/{adapter-binding-DQchUtrK.d.mts → adapter-binding-CATvmGuz.d.mts} +0 -0
- package/dist/{attempt-record-codec-CqO1_XnE.mjs → attempt-record-codec-BYfYkj4M.mjs} +0 -0
- package/dist/{base-orchestrator-BilsQNW1.d.mts → base-orchestrator-B4YW6z_Q.d.mts} +0 -0
- package/dist/{index-DN4NOCqN2.d.mts → capability-service-BW1-teFU.d.mts} +0 -0
- package/dist/{client-B--e2qcU.d.mts → client-BG0WX5Vz.d.mts} +0 -0
- package/dist/{client-binary-version-verifier-taewmKTY.mjs → client-binary-version-verifier-0lCKZOTg.mjs} +0 -0
- package/dist/{client-binary-version-verifier-CgjM_vGF.d.mts → client-binary-version-verifier-lcv83Hq3.d.mts} +0 -0
- package/dist/{clients-namespace-DfxjG2ZP.d.mts → clients-namespace-DLAjOTTb.d.mts} +0 -0
- package/dist/{config-namespace-BCqvufbD.d.mts → config-namespace-CH7sJZ4f.d.mts} +0 -0
- package/dist/{create-static-mount-bbQhTt6W.mjs → create-static-mount-DxuixuLZ.mjs} +0 -0
- package/dist/{cross-spawn-B57KZuns.mjs → cross-spawn-CZygZJMH.mjs} +0 -0
- package/dist/{cursor-storage-DIFK_9hg.mjs → cursor-storage-bsc9lZKk.mjs} +0 -0
- package/dist/{definition-gnKgXU91.d.mts → definition-BrgzUuFk.d.mts} +0 -0
- package/dist/{definitions-xrrY0wgz.mjs → definitions-CRpdnHYM.mjs} +0 -0
- package/dist/{descriptor-to-package-DvF08krT.mjs → descriptor-to-package-CcjdoWP4.mjs} +0 -0
- package/dist/{drizzle-z_0SiGY8.mjs → drizzle-Bzc-OGVI.mjs} +0 -0
- package/dist/{esm-CltRnX8_.mjs → esm-i-S5TW72.mjs} +0 -0
- package/dist/{facet-BCI00njh.mjs → facet-BnMh7Jyc.mjs} +0 -0
- package/dist/{filesystem-service-CQ9yVkSz.d.mts → filesystem-service-ZJ43SbBi.d.mts} +0 -0
- package/dist/{handler-Cbv9FqDO.mjs → handler-DF1fVDpf.mjs} +0 -0
- package/dist/{host-Caq6ZfSJ.mjs → host-B-_ntOMH.mjs} +0 -0
- package/dist/{index-ye0oklfU.d.mts → index-B2Y1Wvbh.d.mts} +0 -0
- package/dist/{index-Cv-o5Krs.d.mts → index-B4svZC6L.d.mts} +0 -0
- package/dist/{index-DZunhZec.d.mts → index-B5dP8rj6.d.mts} +0 -0
- package/dist/{index-jTaAHsul.d.mts → index-BC-6qNeo.d.mts} +0 -0
- package/dist/{index-ByKi34v5.d.mts → index-BFWvT0NG.d.mts} +0 -0
- package/dist/{index-vA--0lOM.d.mts → index-BMRB9yhF.d.mts} +0 -0
- package/dist/{index-BskPjMet.d.mts → index-BuMsrli0.d.mts} +0 -0
- package/dist/{index-DR40QWlw.d.mts → index-C4V8Pmi4.d.mts} +0 -0
- package/dist/{index-BIdsFcQs2.d.mts → index-CL0Jo1b92.d.mts} +0 -0
- package/dist/{index-CjdRdsd0.d.mts → index-CVpaGijY.d.mts} +0 -0
- package/dist/{index-vcSj12YQ.d.mts → index-CmbkCxj-.d.mts} +0 -0
- package/dist/{index-sS6KUlrx.d.mts → index-CqdMbYmR.d.mts} +0 -0
- package/dist/{index-CnMu8BQl.d.mts → index-D037TVsm.d.mts} +0 -0
- package/dist/{index-CGZQVTid.d.mts → index-DgspOUa72.d.mts} +0 -0
- package/dist/{index-dtsLKOID.d.mts → index-Ek4y8M9J2.d.mts} +0 -0
- package/dist/{index-DjgLchuQ.d.mts → index-VzLAV0Yt.d.mts} +0 -0
- package/dist/{index-DXN_L5D6.d.mts → index-jxPncqWZ2.d.mts} +0 -0
- package/dist/{index-BVRQEpAg.d.mts → index-kzIjbrS02.d.mts} +6 -6
- /package/dist/{index-Dm1nUxCF.d.mts → index-l01zsChf.d.mts} +0 -0
- /package/dist/{index-CWHfOz6d.d.mts → index-pvX-BIpr2.d.mts} +0 -0
- /package/dist/{jsonl-transport-bQl3JwIu.mjs → jsonl-transport-Cyyh5Wje.mjs} +0 -0
- /package/dist/{lib-DOBXZmYX.mjs → lib-BqV8hYtk.mjs} +0 -0
- /package/dist/{model-registry-xyBKSye-.mjs → model-registry-C9rFu3kV.mjs} +0 -0
- /package/dist/{model-registry-CmgcPDH3.mjs → model-registry-Cixxx2jv.mjs} +0 -0
- /package/dist/{modes-BheyN7SS.mjs → modes-DwsJ3yVl.mjs} +0 -0
- /package/dist/{namespace-BOkKoq34.d.mts → namespace-B0ftHlK3.d.mts} +0 -0
- /package/dist/{namespace-YytVKIgI.d.mts → namespace-BGRHcrmp.d.mts} +0 -0
- /package/dist/{namespace-jDhZjw-i.d.mts → namespace-BUYDmd0r.d.mts} +0 -0
- /package/dist/{namespace-YxU1xf-K.mjs → namespace-BW3Bfu9h.mjs} +0 -0
- /package/dist/{namespace-DWCEo-9M.d.mts → namespace-BdAK0lD8.d.mts} +0 -0
- /package/dist/{namespace-Cv1RFP7n.d.mts → namespace-CPG6u60N.d.mts} +0 -0
- /package/dist/{namespace-GPA7zots.d.mts → namespace-CVFaZv8x.d.mts} +0 -0
- /package/dist/{namespace-Blp4c8GK.d.mts → namespace-DBO1OzYB.d.mts} +0 -0
- /package/dist/{namespace-C-9si-fV.mjs → namespace-DiwqpB-c.mjs} +0 -0
- /package/dist/{namespace-tGRAod3o.d.mts → namespace-DqZweTbX.d.mts} +0 -0
- /package/dist/{namespace-HO2J9sO8.mjs → namespace-jVTsuZHX.mjs} +0 -0
- /package/dist/{namespace-CWGKCNZm.mjs → namespace-tjoxekmf.mjs} +0 -0
- /package/dist/{out-CvjtANXN.mjs → out-8bOYN6EF.mjs} +0 -0
- /package/dist/{packages-DtEEP0Vt.mjs → packages-Bp124-gx.mjs} +0 -0
- /package/dist/{packages-BZ6pzFIq.d.mts → packages-CxPMEg8D.d.mts} +0 -0
- /package/dist/{platform-Bv8llU9c.mjs → platform-CxyYPrkf.mjs} +0 -0
- /package/dist/{provider-operation-Cxoe2SUr.d.mts → provider-operation-DbdyFwNm.d.mts} +0 -0
- /package/dist/{providers-Co5UszRH.mjs → providers-C-eekMxD.mjs} +0 -0
- /package/dist/{providers-namespace-DjFkmvBR.d.mts → providers-namespace-CfZKp-C0.d.mts} +0 -0
- /package/dist/{quick-lru-CrOpWwrf.mjs → quick-lru-CCEnf7y6.mjs} +0 -0
- /package/dist/{schema-Db-y-09L.mjs → schema-C0opCPww.mjs} +0 -0
- /package/dist/{schema-introspection-DgWQCpwx.mjs → schema-introspection-6-r_KEJQ.mjs} +0 -0
- /package/dist/{schemas-N6x2z7Lf.d.mts → schemas-B50oWBuj.d.mts} +0 -0
- /package/dist/{schemas-BO7uOum6.d.mts → schemas-B6Q-qdmn.d.mts} +0 -0
- /package/dist/{schemas-BGExwp3j.mjs → schemas-B8hKbBwI.mjs} +0 -0
- /package/dist/{schemas-miYxK_Z1.d.mts → schemas-BGvkTiCx.d.mts} +0 -0
- /package/dist/{schemas-CqRm0i9a.mjs → schemas-BivbWRkG.mjs} +0 -0
- /package/dist/{schemas-CwbYk_kZ.d.mts → schemas-ChmQldVH.d.mts} +0 -0
- /package/dist/{schemas-DrVg4aQQ.d.mts → schemas-Dd13TMgU.d.mts} +0 -0
- /package/dist/{schemas-BtZqovRH.d.mts → schemas-Pe892GgN.d.mts} +0 -0
- /package/dist/{schemas-CQyRBqD6.d.mts → schemas-bfZNpl0B.d.mts} +0 -0
- /package/dist/{schemas-Bfxskx_2.mjs → schemas-scyC2tFF.mjs} +0 -0
- /package/dist/{semver-DlM8znk4.mjs → semver-BI7kTNsY.mjs} +0 -0
- /package/dist/{server-lifecycle-kmQ5PUDv.mjs → server-lifecycle-B_OZnoe-.mjs} +0 -0
- /package/dist/{server-lifecycle-Dsq56aqC.d.mts → server-lifecycle-L8zja8t8.d.mts} +0 -0
- /package/dist/{session-lineage-B_JW5LpF.d.mts → session-lineage-bUkd3fqx.d.mts} +0 -0
- /package/dist/{shared-schemas-DXwyMCwZ.mjs → shared-schemas-CQ6blrEW.mjs} +0 -0
- /package/dist/{src-CCu8TwL6.mjs → src-BacfeiI4.mjs} +0 -0
- /package/dist/{storage-namespace-BSrv0vXR.mjs → storage-namespace-BZce8kkW.mjs} +0 -0
- /package/dist/{storage-namespace-dfywhXR3.d.mts → storage-namespace-YmE8XCCL.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-BvlX0QV_.d.mts → storage-namespace-definition-BsnYAPot.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-CkMKt7-I.mjs → storage-namespace-definition-Cca-zwXU.mjs} +0 -0
- /package/dist/{supports-color-DUugCQsK.mjs → supports-color-SV_FgSN2.mjs} +0 -0
- /package/dist/{telemetry-Pr3oP2rk.mjs → telemetry-BqoC87F-.mjs} +0 -0
- /package/dist/{timeout-DWDhddRJ.mjs → timeout-DVlN2Zhy.mjs} +0 -0
- /package/dist/{tray-menu-service-BBLa-Rcv.mjs → tray-menu-service-eVVxgPLc.mjs} +0 -0
- /package/dist/{types-BrcjaNPZ.d.mts → types-DdpSEmTO.d.mts} +0 -0
- /package/dist/{types-b54n1o57.d.mts → types-tyv0B605.d.mts} +0 -0
- /package/dist/{ui-config-CyCdlns_.mjs → ui-config-B35GloSX.mjs} +0 -0
- /package/dist/{variant-krjlTdJt.mjs → variant-Dwnge3J_.mjs} +0 -0
- /package/dist/{window-registry-I-imZHV_.mjs → window-registry-CKiMJjId.mjs} +0 -0
- /package/dist/{window-registry-BDnZLPVx.d.mts → window-registry-Pcf35cac.d.mts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isDeepStrictEqual as e}from"node:util";import*as t from"node:fs/promises";import*as n from"node:path";import{randomUUID as r}from"node:crypto";import{MakaioBus as i}from"@makaio/framework/bus";import{AdapterProviderAuthSchema as a,AdapterSubjects as o,CapabilitySubjects as s,ClientDefinitionSchema as c,CredentialSubjects as l,ProviderDefinitionSchema as u,ResolvedProviderContextSchema as d,assertAdapterAuthBindingMatchesMethod as f,extensionToken as ee,isUniversalRange as te,versionSatisfies as p}from"@makaio/framework/contracts";import{BaseService as ne}from"@makaio/framework/service-base";import{ProviderConfigAuthSchema as m,assertAdapterAuthBindingMatchesMethod as re}from"@makaio/framework/contracts/auth";import{ADAPTER_FILE_SCHEMA_VERSION as ie,AdapterFileSchema as h,PROVIDER_CONFIG_SCHEMA_VERSION as g,ProviderConfigFileSchema as ae,resolveCanonicalProviderConfigName as oe,slugifyProviderConfigName as _}from"@makaio/framework/contracts/config";import{resolveModelVisibility as se}from"@makaio/framework/contracts/provider";import{buildDeterministicAdapterId as v}from"@makaio/framework/services/adapter-runtime";import{ClientSubjects as ce}from"@makaio/framework/contracts/client";import{ClientStorageSubjects as y,ProviderStorageSubjects as b}from"@makaio/framework/services/settings/storage";import{ExtensionSubjects as x}from"@makaio/framework/kernel";import{AdapterSubsystemSubjects as S}from"@makaio/framework/services/adapter-subsystem";import{ModelRegistryProviderNotFoundError as le,ModelRegistrySubjects as ue}from"@makaio/framework/services/model-registry";function C(e){return e?{...e}:void 0}function w(e){return e?{...e}:void 0}function de(e){return e?structuredClone(e):void 0}function fe(e,t){let n=[];for(let[r,i]of t.providerConfigs){let t=e.providerConfigs.get(r);t!==i&&n.push({kind:`write-provider`,key:`provider:${r}`,id:r,next:i,previous:t})}for(let[r,i]of t.adapters){let t=e.adapters.get(r);t!==i&&n.push({kind:`write-adapter`,key:`adapter:${r}`,name:r,next:i,previous:t})}for(let[r,i]of e.providerConfigs)t.providerConfigs.has(r)||n.push({kind:`delete-provider`,key:`provider-delete:${r}`,id:r,previous:i});return n}async function pe(e,t){switch(t.kind){case`write-provider`:await e.writeProviderConfig(t.id,t.next);return;case`write-adapter`:await e.writeAdapterFile(t.name,t.next);return;case`delete-provider`:if(!await e.deleteProviderConfig(t.id))throw Error(`Provider config file missing during delete: ${t.id}`);return}}async function me(e,t){switch(t.kind){case`write-provider`:if(t.previous){await e.writeProviderConfig(t.id,t.previous);return}await e.deleteProviderConfig(t.id);return;case`write-adapter`:if(t.previous){await e.writeAdapterFile(t.name,t.previous);return}await e.deleteAdapterFile(t.name);return;case`delete-provider`:await e.writeProviderConfig(t.id,t.previous);return}}async function he(e,t,n){let r=fe(t,n);if(r.length===0)return;let i=[];try{for(let t of r)i.push(t),await pe(e,t)}catch(t){try{await ge(e,i)}catch(e){throw AggregateError([t,e],`Adapter subsystem snapshot commit failed and rollback could not restore the previous state.`,{cause:e})}throw t}}async function ge(e,t){let n=[];for(let r of[...t].reverse())try{await me(e,r)}catch(e){n.push(e instanceof Error?Error(`[${r.key}] ${e.message}`,{cause:e}):Error(`[${r.key}] ${String(e)}`))}if(n.length>0)throw AggregateError(n,`Snapshot rollback failed.`)}function T(e,t){return{id:e,definitionId:t.definitionId,name:t.name??t.definitionId,...t.endpointOverrides?{endpointOverrides:{...t.endpointOverrides}}:{},...t.modelVisibility?{modelVisibility:{...t.modelVisibility}}:{},modelFilterMode:t.modelFilterMode??`show-all`,isDefault:t.isDefault??!1,enabled:t.enabled??!0,auth:_e(t),...t.managedBy?{managedBy:{...t.managedBy}}:{}}}function _e(e){switch(e.auth.mode){case`explicit`:return{mode:`explicit`,method:{...e.auth.method},hasCredentials:!0};case`inferred`:return{mode:`inferred`,method:{...e.auth.method},...e.auth.account?{account:{...e.auth.account}}:{},hasCredentials:!1};case`none`:return{mode:`none`,method:{...e.auth.method},hasCredentials:!1}}}function E(e,t){return(t??[]).map(t=>({adapterName:e,providerConfigId:t.providerConfigId,isDefault:t.isDefault??!1}))}function ve(e,t,n){return{name:e,enabled:t.enabled??!0,...t.displayName===void 0?{}:{displayName:t.displayName},...t.description===void 0?{}:{description:t.description},...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds===void 0?{}:{providerDefinitionIds:[...t.providerDefinitionIds]},...t.settings?{settings:structuredClone(t.settings)}:{},bindings:n.map(e=>({...e}))}}function ye(e,t){let n=[],r=new Set;for(let i of e){let e=t.get(i.providerConfigId);!e||r.has(e.definitionId)||(r.add(e.definitionId),n.push(e.definitionId))}return n}function be(e){let t=new Map,n=new Map,r=new Map;for(let[i,a]of e.providerConfigs){let e=T(i,a);t.set(i,e),n.set(_(e.name),i);let o=r.get(e.definitionId)??[];o.push(i),r.set(e.definitionId,o)}let i=new Map,a=new Map,o=new Map,s=new Map;for(let[n,r]of e.adapters){let e=E(n,r.bindings),c=ve(n,r,e),l=e.filter(e=>t.get(e.providerConfigId)?.enabled);i.set(n,c),a.set(n,e),s.set(n,l.find(e=>e.isDefault)??l[0]??null);for(let t of e){let e=o.get(t.providerConfigId)??[];e.push(t),o.set(t.providerConfigId,e)}}return{providerConfigRecords:t,providerConfigSlugToId:n,providerConfigIdsByDefinition:r,adapterRecords:i,bindingsByAdapter:a,bindingsByConfig:o,defaultBindingByAdapter:s,adapterNames:new Set(i.keys())}}function D(e,t){let n=e.get(t);return n!==void 0&&(n.enabled??!0)}function xe(e,t){return e.some(e=>D(t,e.providerConfigId))}function O(e,t){let n=e.find(e=>D(t,e.providerConfigId));return{bindings:e.map(e=>({...e,isDefault:e.providerConfigId===n?.providerConfigId})),...n?{promoted:{...n,isDefault:!0}}:{}}}function Se(e,t,n){let r=[...n.entries()].filter(([n,r])=>n!==t&&r.definitionId===e).map(([e,t])=>({id:e,config:t})),i=r.find(({id:e})=>D(n,e))?.id??null;for(let{id:e,config:t}of r)n.set(e,{...t,isDefault:i!==null&&e===i});return i}function k(e){if(!e.provider.enabled)throw new A(`provider-definition-disabled`,`Provider definition is disabled for auth selection: ${e.provider.id}`);if(e.client!==void 0&&!e.client.enabled)throw new A(`client-definition-disabled`,`Client definition is disabled for auth selection: ${e.client.id}`)}var A=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderConfigAuthValidationError`}};async function j(e,t,n,r){let i=r??(await e.request(b.get,{id:t})).provider;if(!i||i.id!==t)throw new A(`provider-definition-not-found`,`Provider definition not found for auth selection: ${t}`);let a,o;if(n.method.owner===`provider`){if(n.method.providerDefinitionId!==t)throw new A(`auth-method-not-found`,`Provider auth method "${n.method.methodId}" does not belong to definition "${t}".`);a=i.authMethods.find(({id:e})=>e===n.method.methodId)}else{if({client:o}=await e.request(y.get,{id:n.method.clientId}),!o)throw new A(`client-definition-not-found`,`Client definition not found for auth selection: ${n.method.clientId}`);a=o.authMethods.find(({id:e})=>e===n.method.methodId)}if(!a){let e=n.method.owner===`provider`?n.method.providerDefinitionId:n.method.clientId;throw new A(`auth-method-not-found`,`Authentication method "${n.method.methodId}" is not declared by ${n.method.owner} "${e}".`)}if(a.mode!==n.mode)throw new A(`auth-mode-mismatch`,`Authentication method "${a.id}" declares mode "${a.mode}", not "${n.mode}".`);return a.mode===`explicit`&&n.mode===`explicit`&&Ce(a,n),{method:a,provider:i,...o?{client:o}:{}}}function Ce(e,t){let n=new Set(e.fields.map(({id:e})=>e)),r=e.fields.filter(({id:e,required:n})=>n&&t.credentialRefs[e]===void 0).map(({id:e})=>e),i=Object.keys(t.credentialRefs).filter(e=>!n.has(e));if(r.length===0&&i.length===0)return;let a=[...r.length>0?[`missing required fields [${r.join(`, `)}]`]:[],...i.length>0?[`unexpected fields [${i.join(`, `)}]`]:[]];throw new A(`auth-credential-fields-mismatch`,`Authentication method "${e.id}" has ${a.join(` and `)}.`)}var M=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderRuntimeContextError`}};async function N(e,t,n){if(n.enabled===!1)throw new M(`provider-config-disabled`,`ProviderConfig '${t}' is disabled and cannot be used for adapter startup.`);let r=await j(e,n.definitionId,n.auth);k(r);let i=we(n.auth,r.method),a={...r.provider.endpoints??{},...n.endpointOverrides??{}};return{context:d.parse({state:`resolved`,providerConfigId:t,definitionId:r.provider.id,...Object.keys(a).length>0?{endpointOverrides:a}:{},auth:i,...r.provider.capabilities?{capabilities:r.provider.capabilities}:{}}),definition:structuredClone(r.provider)}}function we(e,t){switch(e.mode){case`explicit`:if(t.mode!==`explicit`)throw P(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:structuredClone(t),credentialRefs:{...e.credentialRefs}};case`inferred`:if(t.mode!==`inferred`)throw P(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t},...e.account?{account:{...e.account}}:{}};case`none`:if(t.mode!==`none`)throw P(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t}}}}function P(e,t){return new A(`auth-mode-mismatch`,`Validated authentication mode changed during context assembly: selected "${e}", declared "${t}".`)}var Te=class{tail=Promise.resolve();async run(e){let t=this.tail.then(e,e);return this.tail=t.then(()=>void 0,()=>void 0),await t}},Ee=class{configRepository;bus;snapshot={providerConfigs:new Map,adapters:new Map};providerConfigRecords=new Map;providerConfigSlugToId=new Map;adapterRecords=new Map;bindingsByAdapter=new Map;bindingsByConfig=new Map;defaultBindingByAdapter=new Map;providerConfigIdsByDefinition=new Map;knownAdapterNames=new Set;logImportProviderKeysPromise=null;snapshotMutationQueue=new Te;constructor(e){this.configRepository=e.configRepository,this.bus=e.bus}async loadSnapshot(){let[e,t]=await Promise.all([this.configRepository.loadProviderConfigs(),this.configRepository.loadAdapterConfigs()]);this.replaceSnapshot({providerConfigs:new Map(e.configs),adapters:new Map(t.configs)})}registerListeners(e){let t=()=>{this.logImportProviderKeysPromise=null};e(this.bus.on(s.register,t,{filter:{capabilityId:`log-import`}})),e(this.bus.on(s.unregister,t,{filter:{capabilityId:`log-import`}}))}clear(){this.snapshot={providerConfigs:new Map,adapters:new Map},this.providerConfigRecords.clear(),this.providerConfigSlugToId.clear(),this.adapterRecords.clear(),this.bindingsByAdapter.clear(),this.bindingsByConfig.clear(),this.defaultBindingByAdapter.clear(),this.providerConfigIdsByDefinition.clear(),this.knownAdapterNames.clear(),this.logImportProviderKeysPromise=null}replaceSnapshot(e){this.snapshot=e,this.applyDerivedState()}cloneSnapshot(){return{providerConfigs:new Map(this.snapshot.providerConfigs),adapters:new Map(this.snapshot.adapters)}}async commitSnapshotMutation(e,t){return await this.snapshotMutationQueue.run(async()=>{let n=this.cloneSnapshot();return await e(n),await this.commitSnapshot(n),await t?.()})}async commitSnapshot(e){await he(this.configRepository,this.snapshot,e),this.replaceSnapshot(e)}applyDerivedState(){let e=be(this.snapshot);this.providerConfigRecords=e.providerConfigRecords,this.providerConfigSlugToId=e.providerConfigSlugToId,this.providerConfigIdsByDefinition=e.providerConfigIdsByDefinition,this.adapterRecords=e.adapterRecords,this.bindingsByAdapter=e.bindingsByAdapter,this.bindingsByConfig=e.bindingsByConfig,this.defaultBindingByAdapter=e.defaultBindingByAdapter,(e.adapterNames.size!==this.knownAdapterNames.size||[...e.adapterNames].some(e=>!this.knownAdapterNames.has(e)))&&(this.knownAdapterNames=e.adapterNames,this.logImportProviderKeysPromise=null)}getProviderConfig(e){let t=this.providerConfigRecords.get(e);return t?structuredClone(t):null}requireProviderConfig(e,t){let n=this.getProviderConfig(e);if(!n)throw Error(`Provider config could not be loaded after ${t}: ${e}`);return n}getAdapterConfig(e){let t=this.adapterRecords.get(e);return t?structuredClone(t):null}requireAdapterConfig(e,t){let n=this.getAdapterConfig(e);if(!n)throw Error(`Adapter config could not be loaded after ${t}: ${e}`);return n}isAdapterEnabled(e){return this.getAdapterConfig(e)?.enabled??!1}listProviderConfigs(e){let t=[...this.providerConfigRecords.values()].map(e=>structuredClone(e));return e===void 0?t:t.filter(t=>t.enabled===e)}listProviderConfigsByDefinition(e){return this.getProviderConfigIdsByDefinition(e).map(e=>this.getProviderConfig(e)).filter(e=>e!==null)}listAdapterConfigs(){return[...this.adapterRecords.values()].map(e=>structuredClone(e))}listBindings(e){return structuredClone(this.bindingsByAdapter.get(e)??[])}listBindingsByConfig(e){return structuredClone(this.bindingsByConfig.get(e)??[])}getDefaultBinding(e){let t=this.defaultBindingByAdapter.get(e)??null;return t?structuredClone(t):null}findConfigForDefinitionAndAdapter(e,t){let n=new Set((this.bindingsByAdapter.get(t)??[]).map(e=>e.providerConfigId)),r=this.getProviderConfigIdsByDefinition(e).map(e=>this.providerConfigRecords.get(e)).filter(e=>e!==void 0&&e.enabled&&n.has(e.id)),i=r.find(e=>e.isDefault)??r[0]??null;return i?structuredClone(i):null}getProviderConfigIdsByDefinition(e){return[...this.providerConfigIdsByDefinition.get(e)??[]]}assertProviderConfigNameUnique(e,t){let n=_(e),r=this.providerConfigSlugToId.get(n);if(r!==void 0&&r!==t){let t=this.providerConfigRecords.get(r)?.name??r;throw Error(`Provider config name "${e}" conflicts with existing config "${t}": both slugify to "${n}". Choose a different name.`)}}async setAdapterConfig(e,t){return{config:await this.commitSnapshotMutation(n=>{let r=n.adapters.get(e);n.adapters.set(e,this.buildNextAdapterFile(r,t))},()=>this.requireAdapterConfig(e,`update`))}}buildNextAdapterFile(e,t){return{...e??{},$schema:ie,...this.applyAdapterPatch(e,t),bindings:e?.bindings}}applyAdapterPatch(e,t){let n=e??{},r=t.helpLinks?.map(e=>({...e}))??n.helpLinks,i=t.providerDefinitionIds?[...t.providerDefinitionIds]:n.providerDefinitionIds;return{enabled:t.enabled??n.enabled??!0,displayName:t.displayName??n.displayName,description:t.description??n.description,helpLinks:r,instructions:t.instructions??n.instructions,clientId:t.clientId??n.clientId,protocol:t.protocol??n.protocol,providerDefinitionIds:i,settings:t.settings===void 0?n.settings:de(t.settings)}}async setAdapterEnabled(e,t){await this.setAdapterConfig(e,{enabled:t})}async buildEffectiveAdapters(){let e=await this.getLogImportProviderKeys();return[...this.adapterRecords.values()].map(t=>{let n=this.bindingsByAdapter.get(t.name)??[],r=n.filter(e=>this.providerConfigRecords.get(e.providerConfigId)?.enabled),i=[...t.providerDefinitionIds??ye(n,this.providerConfigRecords)];return{name:t.name,displayName:t.displayName??t.name,...t.description===void 0?{}:{description:t.description},enabled:t.enabled,configCount:n.length,readiness:r.length>0?`ready`:`needs-setup`,supportsLogImport:e.has(t.name),...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds!==void 0||i.length>0?{providerDefinitionIds:i}:{}}})}async getLogImportProviderKeys(){if(!this.logImportProviderKeysPromise){let e=this.bus.requestOptional(s.listProviders,{capabilityId:`log-import`}).then(t=>t.handled?new Set(t.data.providers.map(e=>e.providerKey??e.id)):(this.logImportProviderKeysPromise===e&&(this.logImportProviderKeysPromise=null),new Set)).catch(e=>{throw this.logImportProviderKeysPromise=null,e});this.logImportProviderKeysPromise=e}return await this.logImportProviderKeysPromise}async resolveProviderRuntimeSnapshot(e){let t=this.snapshot.providerConfigs.get(e);if(!t)return null;let{context:n,definition:r}=await N(this.bus,e,t);return{config:T(e,t),context:n,definition:r}}async resolveBoundProviderRuntimeSnapshot(e,t){let n=this.snapshot,r=n.providerConfigs.get(t),i=n.adapters.get(e),a=r!==void 0&&E(e,i?.bindings).some(e=>e.providerConfigId===t);if(!r)return{snapshot:null,isBound:!1};let{context:o,definition:s}=await N(this.bus,t,r);return{isBound:a,snapshot:{config:T(t,r),context:o,definition:s}}}removeBindingsForConfig(e,t,n){let r=new Map,i=[],a=[];for(let[o,s]of t){let t=E(o,s.bindings),c=t.findIndex(t=>t.providerConfigId===e);if(c===-1)continue;let[l]=t.splice(c,1);if(l&&i.push(l),l?.isDefault&&t.length>0){let e=O(t,n);t.splice(0,t.length,...e.bindings),e.promoted&&a.push({adapterName:o,providerConfigId:e.promoted.providerConfigId})}r.set(o,{...s,bindings:t.map(({adapterName:e,...t})=>t)})}return{changedAdapters:r,deletedBindings:i,defaultChangedBindings:a}}promoteProviderConfigDefault(e,t,n){return Se(e,t,n)}};const F=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function De(e){if(!(e===void 0||e.length===0))return e.map(e=>({...e}))}function Oe(e,t){if(e===void 0||e.length===0)return;let n=new Map(t.map(e=>[e.definition.id,e.definition]));return e.map(e=>{let t=n.get(e.id);if(t===void 0)throw Error(`Adapter client definition "${e.id}" is missing from the active contribution catalog.`);return t})}function I(e,t){return e.clientId!==void 0&&t?.some(t=>t.id===e.clientId)?e.clientId:t?.[0]?.id}async function L(e,t,n,r,i={}){if(t===void 0||t.length===0)return;let a=new Map(n.map(e=>[e.definition.id,e.definition]));for(let n of t){let t=a.get(n.id);if(t===void 0)throw Error(`Adapter "${e}" references missing client "${n.id}"`);ke(t.version,n.version,`Adapter "${e}" client "${n.id}" definition version ${t.version}`)}if(i.checkBinaryVersions===!1)return;let o=t.filter(e=>e.binaryVersion!==void 0);await Promise.all(o.map(async t=>{if(te(t.binaryVersion))return;let n=await r.requestOptional(ce.resolveBinary,{clientId:t.id});if(!n.handled){if(F){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered`)}let i=n.data.version;if(i===null){if(F){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion} — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion}`)}if(!p(i,t.binaryVersion)){let n=`Adapter "${e}" client "${t.id}" binary version ${i}`;if(F){console.warn(`[SKIP_VERSION_CHECK] ${n} does not satisfy ${t.binaryVersion} — check bypassed`);return}throw Error(`${n} does not satisfy ${t.binaryVersion}`)}}))}function ke(e,t,n){if(!p(e,t))throw Error(`${n} does not satisfy ${t}`)}function Ae(e){let t=e.split(`/`).pop()?.replace(/^ai-adapters-/,``)?.trim();return t&&t.length>0?t:e}function R(e){let t=I(e.options,e.clients);return{name:e.name,displayName:e.displayName??e.name,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:t,protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds]}}async function z(e,t,n=5e3){let r=Ne(t);if(!r)return;let i;try{await Promise.race([Promise.resolve().then(r),new Promise((t,r)=>{i=setTimeout(()=>{r(Error(`Timed out closing adapter ${e} after ${n}ms`))},n)})])}finally{i&&clearTimeout(i)}}async function B(e){for(let[t,n]of e)try{await z(t,n)}catch(e){console.error(`[adapter-runtime] Error shutting down adapter ${t}:`,e)}e.clear()}async function je(e,t,n){try{await z(e,t)}finally{n.delete(e)}}async function Me(e,t){let{config:n}=await e.request(S.getAdapterConfig,{name:t});return n?.enabled??!1}function V(e,t){return e.options.adapterId??v(t,e.name)}function Ne(e){let t=e;if(typeof t.shutdown==`function`)return t.shutdown.bind(e);if(typeof t.closeAsync==`function`)return t.closeAsync.bind(e);if(typeof t.close==`function`)return t.close.bind(e)}async function H(e,t,n,r,i){let a=[];for(let s of n)try{if(!await Me(e,s.name)){console.info(`Skipping disabled adapter: ${s.name}`);continue}let n=V(s,t),a=I(s.options,s.clients),c=await s.factory({...s.options,adapterId:n,platformDefaults:i,definitionProviders:s.providers,clientId:a,globalBus:e});if(c.adapterId!==n){let e=Error(`Adapter '${s.name}' initialized with mismatched adapterId (expected '${n}', got '${c.adapterId}')`);try{await z(n,c)}catch(e){console.error(`[adapter-runtime] Error rolling back adapter ${s.name}:`,e)}throw e}r.set(n,c);let l=c;try{await e.emit(o.initialized,{adapterId:n,adapterName:s.name,capabilities:[...l.capabilities??[]],...l.nativeTools===void 0?{}:{nativeTools:[...l.nativeTools]}})}catch(e){try{await je(n,c,r)}catch(e){console.error(`[adapter-runtime] Error rolling back adapter ${s.name}:`,e)}throw e}console.info(`Initialized adapter: ${s.name} (${s.packageName})`)}catch(e){a.push({adapterName:s.name,error:e})}if(a.length>0){let e=a.map(({adapterName:e,error:t})=>`${e}: ${t instanceof Error?t.message:String(t)}`).join(`; `);throw Error(`Failed to initialize enabled adapters: ${e}`)}}async function Pe(e,t){await t.request(S.ensureReady,{});let n=await Promise.all(e.map(async e=>({adapter:e,config:(await t.request(S.getAdapterConfig,{name:e.name})).config})));await Promise.all(n.filter(({config:e})=>!e).map(({adapter:e})=>t.request(S.setAdapterConfig,{name:e.name,patch:{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:I(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1}})))}var Fe=class{bus;machineId;loadedAdapters=new Map;adapterInstances=new Map;packageAdapters=new Map;publicationChain=Promise.resolve();constructor(e){this.bus=e.bus,this.machineId=e.machineId}getLoadedAdapters(){return[...this.loadedAdapters.values()]}getAdapterInstances(){return this.adapterInstances}hasAdapterInstance(e){return this.adapterInstances.has(this.resolveLoadedAdapterId(e))}resolveLoadedAdapterId(e){return V(e,this.machineId)}getSettingsAvailableAdapters(){return[...this.loadedAdapters.values()].map(R)}registerAdapter(e,t){let n=this.loadedAdapters.get(e.name);if(n)throw Error(`Duplicate adapter name '${e.name}' from owners '${n.packageName}' and '${t}'.`);this.loadedAdapters.set(e.name,e);let r=this.packageAdapters.get(t)??[];this.packageAdapters.set(t,[...r,e.name])}updateAdapterProviders(e,t){let n=this.loadedAdapters.get(e);if(!n)return;let r={...n,providers:t};return this.loadedAdapters.set(e,r),r}async removeProviderPackage(e,t){let n=[];for(let r of this.loadedAdapters.values()){let i=r.providers.filter(t=>t.providerPackageName!==e);if(i.length===r.providers.length)continue;let a={...r,providers:i};if(this.loadedAdapters.set(r.name,a),n.push(a),this.hasAdapterInstance(a))try{await this.restartAdapterInstance(a,t)}catch(t){console.error(`[AdapterRuntimeRegistry] Error restarting adapter "${a.name}" after provider package "${e}" stopped:`,t)}}return n}async deregisterAdapter(e){let t=this.loadedAdapters.get(e);if(!t)return;let n=this.resolveLoadedAdapterId(t),r=this.adapterInstances.get(n);r&&(await z(n,r),this.adapterInstances.delete(n)),this.loadedAdapters.delete(e)}removePackageTracking(e){this.packageAdapters.delete(e)}async deregisterPackage(e){let t=this.packageAdapters.get(e);if(!t?.length)return;let n=!1;for(let e of t)try{await this.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e}":`,t)}n||this.packageAdapters.delete(e)}publishAdapterRegistered(e){let{adapterName:t,displayName:n,packageName:r,enabled:i,adapterId:a,providerDefinitionIds:o}=e,s=this.adapterInstances.has(a),c=this.publicationChain.catch(()=>void 0).then(()=>this.bus.emit(S.adapter.registered,{adapterName:t,displayName:n??t,packageName:r,enabled:i,initialized:s,providerDefinitionIds:[...o]}));return this.publicationChain=c.catch(()=>void 0),c}async initializeAdapter(e,t){await H(this.bus,this.machineId,[e],this.adapterInstances,t)}async restartAdapterInstance(e,t){let n=this.resolveLoadedAdapterId(e),r=this.adapterInstances.get(n);if(r){try{await z(n,r)}catch(t){throw console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e.name}" before restart:`,t),t}this.adapterInstances.delete(n)}await this.initializeAdapter(e,t)}async shutdownAll(){await B(this.adapterInstances),this.loadedAdapters.clear(),this.packageAdapters.clear()}};function Ie(e,t,n,r){let i=n.isDefault??!1;return r?i?!0:![...e.entries()].some(([e,r])=>e!==t&&r.definitionId===n.definitionId&&(r.enabled??!0)&&(r.isDefault??!1)):!1}var Le=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async createProviderConfig(e){let t=await this.getProviderDefinitionOrThrow(e.definitionId),n=m.parse(e.auth),r=e.enabled??!0,i=await j(this.bus,e.definitionId,n,t);r&&k(i);let a=this.resolveProviderConfigNameFromDefinition(e.definitionId,t.name,e.name),o=_(a),s=C(e.endpointOverrides),c=w(e.modelVisibility),l=await this.configStore.commitSnapshotMutation(t=>{if(this.configStore.assertProviderConfigNameUnique(a),t.providerConfigs.has(o))throw Error(`Provider config already exists: ${o}`);t.providerConfigs.set(o,{$schema:g,definitionId:e.definitionId,name:a,auth:structuredClone(n),...e.managedBy?{managedBy:{...e.managedBy}}:{},endpointOverrides:s,modelVisibility:c,modelFilterMode:e.modelFilterMode??`show-all`,isDefault:r&&![...t.providerConfigs.values()].some(t=>t.definitionId===e.definitionId&&(t.enabled??!0)&&(t.isDefault??!1)),enabled:r})},()=>this.configStore.requireProviderConfig(o,`creation`));return await this.bus.emit(S.providerConfig.created,l),{config:l}}async updateProviderConfig(e,t){let n,r=await this.configStore.commitSnapshotMutation(async r=>{n=await this.applyProviderConfigPatch(r,e,t)},()=>this.configStore.requireProviderConfig(e,`update`));return await this.bus.emit(S.providerConfig.updated,r),n&&await this.bus.emit(S.providerConfig.defaultChanged,n),{config:r}}async applyProviderConfigPatch(e,t,n){let r=e.providerConfigs.get(t);if(!r)throw Error(`Provider config not found: ${t}`);let i=n.name??r.name??r.definitionId;n.name!==void 0&&this.configStore.assertProviderConfigNameUnique(i,t);let a=n.enabled??r.enabled??!0;a&&!(r.enabled??!0)&&k(await j(this.bus,r.definitionId,r.auth));let o=Ie(e.providerConfigs,t,r,a);return e.providerConfigs.set(t,{...r,name:i,endpointOverrides:n.endpointOverrides===null?void 0:n.endpointOverrides===void 0?r.endpointOverrides:C(n.endpointOverrides),modelVisibility:n.modelVisibility===void 0?r.modelVisibility:w(n.modelVisibility),enabled:a,isDefault:o}),(r.isDefault??!1)&&!o?{definitionId:r.definitionId,configId:this.configStore.promoteProviderConfigDefault(r.definitionId,t,e.providerConfigs)}:!(r.isDefault??!1)&&o?{definitionId:r.definitionId,configId:t}:void 0}async setProviderConfigAuth(e,t){let n=m.parse(t),r=await this.configStore.commitSnapshotMutation(async t=>{let r=t.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);let i=await j(this.bus,r.definitionId,n);(r.enabled??!0)&&k(i),t.providerConfigs.set(e,{...r,auth:structuredClone(n)})},()=>this.configStore.requireProviderConfig(e,`auth update`));return await this.bus.emit(S.providerConfig.updated,r),{config:r}}async deleteProviderConfig(e){let t=!1,n,r=``,i=!1,a=null,o={changedAdapters:new Map,deletedBindings:[],defaultChangedBindings:[]},s=await this.configStore.commitSnapshotMutation(s=>{let c=s.providerConfigs.get(e);if(c){if(c.managedBy){(c.enabled??!0)&&(i=c.isDefault??!1,r=c.definitionId,s.providerConfigs.set(e,{...c,enabled:!1,isDefault:!1}),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null,n=e);return}o=this.configStore.removeBindingsForConfig(e,s.adapters,s.providerConfigs),i=c.isDefault??!1,r=c.definitionId,t=!0,s.providerConfigs.delete(e),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null;for(let[e,t]of o.changedAdapters)s.adapters.set(e,t)}},()=>n?this.configStore.requireProviderConfig(e,`managed config disable`):null);if(!t)return n?(await this.bus.emit(S.providerConfig.updated,s),i&&await this.bus.emit(S.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!1}):{deleted:!1};await this.cleanupDeletedProviderCredentials(e);for(let e of o.deletedBindings)await this.bus.emit(S.binding.deleted,e);for(let e of o.defaultChangedBindings)await this.bus.emit(S.binding.defaultChanged,e);return await this.bus.emit(S.providerConfig.deleted,{id:e}),i&&await this.bus.emit(S.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!0}}async setDefaultProviderConfig(e){let t=``,n=await this.configStore.commitSnapshotMutation(n=>{let r=n.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);if(!(r.enabled??!0))throw Error(`Disabled provider config cannot be default: ${e}`);t=r.definitionId;for(let[r,i]of n.providerConfigs)i.definitionId===t&&n.providerConfigs.set(r,{...i,isDefault:r===e})},()=>this.configStore.requireProviderConfig(e,`setDefault`));return await this.bus.emit(S.providerConfig.updated,n),await this.bus.emit(S.providerConfig.defaultChanged,{definitionId:t,configId:e}),{config:n}}async setModelFilterMode(e,t,n){let r=await this.configStore.commitSnapshotMutation(async r=>{let i=r.providerConfigs.get(e);if(!i)throw Error(`Provider config not found: ${e}`);let a=i.modelVisibility;if(t===`allowlist`){let e=await this.selectAllowlistKeeper(i.definitionId,i,n);e&&(a={...i.modelVisibility??{},[e]:`visible`})}r.providerConfigs.set(e,{...i,modelFilterMode:t,modelVisibility:a})},()=>this.configStore.requireProviderConfig(e,`setModelFilterMode`));return await this.bus.emit(S.providerConfig.updated,r),{config:r}}async cleanupDeletedProviderCredentials(e){try{await this.bus.requestOptional(l.delete,{configId:e})}catch(t){console.warn(`[AdapterProviderConfigService] Failed to delete credentials for removed provider config "${e}":`,t)}}async resolveProviderConfigName(e,t){let n=await this.getProviderDefinitionOrThrow(e);return this.resolveProviderConfigNameFromDefinition(e,n.name,t)}resolveProviderConfigNameFromDefinition(e,t,n){let r=oe({requestedName:n,providerName:t,definitionId:e});if(r)return r;throw Error(`Unable to derive a canonical provider config name for definition: ${e}`)}async getProviderDefinitionOrThrow(e){let{provider:t}=await this.bus.request(b.get,{id:e});if(!t)throw Error(`Provider definition not found: ${e}`);return t}async selectAllowlistKeeper(e,t,n){let{provider:r}=await this.bus.request(b.get,{id:e}),i=[n,...r?.availableModels?.map(e=>e.name)??[],...Object.keys(t.modelVisibility??{})].filter(e=>typeof e==`string`&&e.length>0);for(let e of i){let n=se(e,`allowlist`,t.modelVisibility);if(n===`enabled`||n===`visible`)return}return i[0]}},Re=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async bind(e,t){let n,r=!1;if(await this.configStore.commitSnapshotMutation(i=>{let a=i.providerConfigs.get(t);if(!a)throw Error(`Provider config not found: ${t}`);let o=i.adapters.get(e);if(!o)throw Error(`Adapter config not found: ${e}`);let s=E(e,o.bindings),c=s.find(e=>e.providerConfigId===t);if(c){n={...c};return}r=!0,n={adapterName:e,providerConfigId:t,isDefault:(a.enabled??!0)&&!xe(s,i.providerConfigs)};let l=[...s,n];i.adapters.set(e,{...o,bindings:l.map(({adapterName:e,...t})=>t)})}),!n)throw Error(`Binding could not be loaded after bind: ${e}/${t}`);return r&&await this.bus.emit(S.binding.created,n),n}async unbind(e,t){let n,r=!1;await this.configStore.commitSnapshotMutation(i=>{let a=i.adapters.get(e);if(!a)return;let o=E(e,a.bindings),s=o.findIndex(e=>e.providerConfigId===t);if(s===-1)return;let[c]=o.splice(s,1);if(r=!0,c?.isDefault&&o.length>0){let e=O(o,i.providerConfigs);n=e.promoted,o.splice(0,o.length,...e.bindings)}i.adapters.set(e,{...a,bindings:o.map(({adapterName:e,...t})=>t)})}),r&&(await this.bus.emit(S.binding.deleted,{adapterName:e,providerConfigId:t}),n&&await this.bus.emit(S.binding.defaultChanged,{adapterName:e,providerConfigId:n.providerConfigId}))}async setDefaultBinding(e,t){let n=!1;await this.configStore.commitSnapshotMutation(r=>{let i=r.adapters.get(e);if(!i)throw Error(`Adapter config not found: ${e}`);let a=E(e,i.bindings),o=a.find(e=>e.providerConfigId===t);if(!o)throw Error(`Binding not found for adapter ${e} and provider config ${t}`);if(!D(r.providerConfigs,o.providerConfigId))throw Error(`Disabled provider config cannot be default binding: ${t}`);o.isDefault||(n=!0,r.adapters.set(e,{...i,bindings:a.map(({adapterName:e,...n})=>({...n,isDefault:n.providerConfigId===t}))}))}),n&&await this.bus.emit(S.binding.defaultChanged,{adapterName:e,providerConfigId:t})}};function U(e){return e.map(e=>({...e}))}function W(e){if(e instanceof le)return!0;if(typeof e!=`object`||!e)return!1;let t=e;return t.name===`ModelRegistryProviderNotFoundError`&&typeof t.providerId==`string`||e instanceof Error&&/^Request to "getProviderModels" failed: Provider ".+" is not present in the model registry$/.test(e.message)||e instanceof Error&&/^Provider ".+" is not present in the model registry$/.test(e.message)?!0:W(t.cause)}async function G(e,t,n,r={}){let i=r.providerDefinitionCache;if(!i){i=new Map;let t=await e.request(x.contributions.catalog,{});for(let e of t.providers)i.set(e.definition.id,e)}let a=[],o=[];for(let e of t){let t=i.get(e.definitionId);if(!t){o.push(e.definitionId);continue}a.push({definition:t.definition,providerPackageName:t.packageName,...e.protocol!==void 0&&{protocol:e.protocol},configSchema:e.configSchema??r.adapterConfigSchema,...e.auth!==void 0&&{auth:ze(e.auth,t.definition,r.clientDefinitions??[],n)}})}return o.length>0&&console.warn(`[AdapterContributionProcessor] Adapter "${n}" declares providers [${o.join(`, `)}] but no active extension registers them. These providers will be unavailable until their extensions are loaded.`),a}function ze(e,t,n,r){let i=a.parse(e),o=new Set(i.scrubEnvVars);K(t.authMethods??[],o);for(let e of n)K(e.authMethods,o);for(let e of i.bindings)f(e,Be(e.method,t,n,r));return a.parse({bindings:i.bindings,scrubEnvVars:[...o]})}function Be(e,t,n,r){if(e.owner===`provider`){if(e.providerDefinitionId!==t.id)throw Error(`Adapter "${r}" binds provider method "${e.methodId}" to definition "${e.providerDefinitionId}" while serving "${t.id}".`);let n=(t.authMethods??[]).find(({id:t})=>t===e.methodId);if(n===void 0)throw Error(`Adapter "${r}" binds undeclared provider auth method "${t.id}/${e.methodId}".`);return n}let i=n.find(({id:t})=>t===e.clientId);if(i===void 0)throw Error(`Adapter "${r}" binds authentication method "${e.clientId}/${e.methodId}" without declaring that client.`);let a=i.authMethods.find(({id:t})=>t===e.methodId);if(a===void 0)throw Error(`Adapter "${r}" binds undeclared client auth method "${e.clientId}/${e.methodId}".`);return a}function K(e,t){for(let n of e)if(n.mode===`explicit`)for(let e of n.fields)for(let n of e.sourceHints)t.add(n.variable)}async function q(e,t,n,r){return Promise.all(n.map(async n=>{let i=n.definition.id;try{let t=r.get(i);if(t===void 0){let a=await e.requestOptional(ue.getProviderModels,{providerId:i});t=a.handled?a.data.models:n.definition.availableModels??[],r.set(i,t)}return{...n,definition:{...n.definition,availableModels:U(t)}}}catch(e){return W(e)||console.warn(`[AdapterContributionProcessor] Failed to populate available models for provider "${i}" on adapter "${t}". Falling back to declared provider models.`,e),{...n,definition:{...n.definition,availableModels:U(n.definition.availableModels??[])}}}}))}async function Ve(e,t,n,r){let i=await G(t,e.providerRefs,e.name,{...e.providerConfigSchema!==void 0&&{adapterConfigSchema:e.providerConfigSchema},...e.clientDefinitions!==void 0&&{clientDefinitions:e.clientDefinitions},...r!==void 0&&{providerDefinitionCache:r}});return q(t,e.name,i,n)}function He(e){let t=new Set;for(let n of e){if(typeof n==`string`){(n===`anthropic`||n===`openai`)&&t.add(n);continue}n.anthropic!==void 0&&t.add(`anthropic`),n.openai!==void 0&&t.add(`openai`)}return[...t]}function Ue(e,t,n){let r=He(n);if(t!==void 0){if(!r.includes(t))throw Error(`Adapter "${e}" definition protocol "${t}" must be declared in manifest.protocols [${r.join(`, `)}].`);return t}return r.length===1?r[0]:void 0}var We=class{configStore;registry;coordinator;machineId;platformDefaults;prepareAuthRuntime;constructor(e){this.configStore=e.configStore,this.registry=e.registry,this.coordinator=e.coordinator,this.machineId=e.machineId,this.platformDefaults=e.platformDefaults,this.prepareAuthRuntime=e.prepareAuthRuntime}register(e){e(this.coordinator.registerContributionProcessor({filter:e=>!!e.adapters?.length||!!e.providers?.length,processActivated:async(e,t,n)=>{await this.onPackageActivated(e,t,n)},processStopped:async e=>{await this.onPackageStopped(e)}}))}async onPackageActivated(e,t,n){let r=t.adapters??[],i=[],a=[],o=new Map,s=await n.bus.request(x.contributions.catalog,{}),c=new Map;for(let e of s.providers)c.set(e.definition.id,e);for(let n of t.providers??[])c.set(n.id,{packageName:e,definition:n});let l=s.clients,u=this.coordinator.getLoadedProviderDefinitionIds();try{for(let t of r){let r=await this.activateAdapterContribution(e,t,n.bus,o,c,l,u);i.push(t.definition.name),a.push(r)}}catch(t){let n=!1;for(let e of i.reverse())try{await this.registry.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterContributionProcessor] Rollback error for adapter "${e}":`,t)}throw n||this.registry.removePackageTracking(e),t}await this.publishActivatedAdapters(a);let d=await this.initializeAdaptersWaitingForProviders(n.bus,o,c,u);await this.publishActivatedAdapters(d)}async processAdapterContribution(e,t,n=i){let r=this.coordinator.getLoadedProviderDefinitionIds(),a=await this.activateAdapterContribution(e,t,n,new Map,void 0,void 0,r);await this.publishActivatedAdapters([a])}async activateAdapterContribution(e,t,n,r,i,a,o){let s=await this.buildLoadedAdapter(e,t,n,r,i,a),c=!1;try{await this.ensureAdapterConfig(s);let t=this.configStore.isAdapterEnabled(s.name);t&&await this.validateEnabledAdapterClientRefs(s,n,a),this.registry.registerAdapter(s,e),c=!0,t&&(this.getMissingProviderDefinitionIds(s,o).length>0?console.info(`[AdapterContributionProcessor] Deferring adapter "${s.name}" initialization until declared providers are active.`):(await this.registry.initializeAdapter(s,this.platformDefaults),console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName})`)))}catch(e){if(c)try{await this.registry.deregisterAdapter(s.name)}catch(e){console.error(`[AdapterContributionProcessor] Rollback error for adapter "${s.name}":`,e)}throw e}return s}async initializeAdaptersWaitingForProviders(e,t,n,r){let i=[];for(let a of this.registry.getLoadedAdapters()){let o;try{if(!this.configStore.isAdapterEnabled(a.name))continue;let s=a;if(this.getMissingProviderDefinitionIds(a,r).length>0){let i=await Ve(a,e,t,n),c=this.registry.updateAdapterProviders(a.name,i);if(!c||this.getMissingProviderDefinitionIds(c,r).length>0)continue;s=c,o=c}if(this.registry.hasAdapterInstance(s)){if(s===a)continue;await this.registry.restartAdapterInstance(s,this.platformDefaults)}else await this.registry.initializeAdapter(s,this.platformDefaults);console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName}) after provider activation`),i.push(s)}catch(e){console.error(`[AdapterContributionProcessor] Deferred initialization failed for adapter "${a.name}".`,e),o&&i.push(o)}}return i}getMissingProviderDefinitionIds(e,t){let n=new Set(e.providers.map(e=>e.definition.id));return e.providerDefinitionIds.filter(e=>!n.has(e)&&t.has(e))}async validateEnabledAdapterClientRefs(e,t,n){if(e.clients===void 0||e.clients.length===0)return;let r=n??(await t.request(x.contributions.catalog,{})).clients;await L(e.name,e.clients,r,t)}async buildLoadedAdapter(e,t,n=i,r=new Map,a,o){let s=t.definition,c=t.manifest,l=s.name,u=o??(await n.request(x.contributions.catalog,{})).clients;await L(l,c.clients,u,n,{checkBinaryVersions:!1});let d=Oe(c.clients,u),f=await q(n,l,await G(n,s.providers,l,{...s.providerConfigSchema!==void 0&&{adapterConfigSchema:s.providerConfigSchema},...d!==void 0&&{clientDefinitions:d},...a!==void 0&&{providerDefinitionCache:a}}),r);return{name:l,displayName:s.displayName??c.displayName,description:s.description,packageName:e,factory:s.createAdapter,options:{adapterId:v(this.machineId,l),...this.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:this.prepareAuthRuntime}},adapterConfigSchema:s.adapterConfigSchema,providerDefinitionIds:s.providers.map(e=>e.definitionId),providerRefs:[...s.providers],providers:f,providerConfigSchema:s.providerConfigSchema,helpLinks:s.helpLinks,instructions:s.instructions,defaultPresetId:s.defaultPresetId,clients:De(c.clients),...d!==void 0&&{clientDefinitions:d},protocol:Ue(l,s.protocol,c.protocols)}}async ensureAdapterConfig(e){this.configStore.getAdapterConfig(e.name)||await this.configStore.setAdapterConfig(e.name,{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:I(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1})}async onPackageStopped(e){await this.registry.deregisterPackage(e);let t=await this.registry.removeProviderPackage(e,this.platformDefaults);await this.publishActivatedAdapters(t)}publishAdapterRegistered(e){let t=this.configStore.isAdapterEnabled(e.name),n=this.registry.resolveLoadedAdapterId(e);return this.registry.publishAdapterRegistered({adapterName:e.name,displayName:e.displayName,packageName:e.packageName,enabled:t,adapterId:n,providerDefinitionIds:e.providerDefinitionIds})}async publishActivatedAdapters(e){for(let t of e)try{await this.publishAdapterRegistered(t)}catch(e){console.error(`[AdapterContributionProcessor] Failed to publish adapter "${t.name}" registration:`,e)}}};async function Ge(e,t,n){let r=new Map,i=new Map;for(let a of[...t].sort((e,t)=>e.name.localeCompare(t.name)))for(let t of a.providers.filter(({definition:e})=>e.id===n))for(let o of t.auth?.bindings??[]){let s=await qe(e,a,t,o.method,i);re(o,s);let c=Ze(n,o.method),l=Ye(n,o.method,s),u=r.get(c);if(u){if(!Ke(u.option,l))throw Error(`Authentication method ${c} has conflicting definitions across compatible adapters "${[...u.adapterNames].join(`, `)}" and "${a.name}".`);u.adapterNames.add(a.name);continue}r.set(c,{option:l,adapterNames:new Set([a.name])})}return[...r.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([,{option:e,adapterNames:t}])=>Xe(e,[...t].sort((e,t)=>e.localeCompare(t))))}function Ke(t,n){return e(t,n)}async function qe(e,t,n,r,i){if(r.owner===`provider`){if(r.providerDefinitionId!==n.definition.id)throw Error(`Adapter "${t.name}" binds provider method "${r.methodId}" to the wrong definition ("${r.providerDefinitionId}" instead of "${n.definition.id}").`);let e=(n.definition.authMethods??[]).find(({id:e})=>e===r.methodId);if(!e)throw Error(`Adapter "${t.name}" binds undeclared provider auth method "${n.definition.id}/${r.methodId}".`);return e}if(!(t.clients??[]).some(({id:e})=>e===r.clientId))throw Error(`Adapter "${t.name}" binds auth method "${r.clientId}/${r.methodId}" without declaring that client.`);let a=i.get(r.clientId);a||(a=Je(e,r.clientId),i.set(r.clientId,a));let o=(await a).authMethods.find(({id:e})=>e===r.methodId);if(!o)throw Error(`Adapter "${t.name}" binds undeclared client auth method "${r.clientId}/${r.methodId}".`);return o}async function Je(e,t){let{client:n}=await e.request(y.get,{id:t});if(!n)throw Error(`Authentication binding references missing client definition "${t}".`);return n}function Ye(e,t,n){let r={definitionId:e,method:{...t},label:n.label,...n.description?{description:n.description}:{}};switch(n.mode){case`explicit`:return{...r,mode:`explicit`,fields:n.fields.map(e=>({...e,sourceHints:e.sourceHints.map(e=>({...e}))})),portability:`portable`};case`inferred`:if(t.owner!==`client`)throw Error(`Inferred auth method "${n.id}" must be client-owned.`);return{...r,method:{...t},mode:`inferred`,fields:[],portability:`local-only`};case`none`:return{...r,mode:`none`,fields:[],portability:`portable`}}}function Xe(e,t){switch(e.mode){case`explicit`:return{...e,compatibleAdapterNames:t};case`inferred`:return{...e,compatibleAdapterNames:t};case`none`:return{...e,compatibleAdapterNames:t}}}function Ze(e,t){return JSON.stringify(t.owner===`provider`?[e,t.owner,t.providerDefinitionId,t.methodId]:[e,t.owner,t.clientId,t.methodId])}function Qe(e,t,n=-100){let r=e.on(b.get,async n=>{let r=(await J(e,t())).get(n.payload.id)??null;n.setResult({provider:r})},{priority:n}),i=e.on(b.list,async n=>{n.setResult({providers:[...(await J(e,t())).values()]})},{priority:n}),a=e.on(b.listByProtocol,async n=>{let r=[...(await J(e,t())).values()].filter(e=>e.endpoints!==void 0&&n.payload.protocol in e.endpoints);n.setResult({providers:r})},{priority:n});return()=>{r(),i(),a()}}async function J(e,t){let n=new Map,r=new Set;for(let e of t){for(let t of e.providerDefinitionIds)r.add(t);for(let t of e.providers)Y(n,t.providerPackageName,t.definition)}let i=[...r].filter(e=>!n.has(e));if(i.length>0){let t=await e.request(x.contributions.catalog,{});for(let e of t.providers)i.includes(e.definition.id)&&Y(n,e.packageName,e.definition)}return n}function Y(e,t,n){let r=u.parse(n);e.has(r.id)||e.set(r.id,{id:r.id,packageName:t,name:r.name,...r.description===void 0?{}:{description:r.description},...r.endpoints===void 0?{}:{endpoints:r.endpoints},...r.defaultModel===void 0?{}:{defaultModel:r.defaultModel},...r.fastModel===void 0?{}:{fastModel:r.fastModel},availableModels:r.availableModels,defaultModelFilterMode:r.defaultModelFilterMode??`show-all`,authMethods:r.authMethods,...r.capabilities===void 0?{}:{capabilities:r.capabilities},enabled:!0,createdAt:0,updatedAt:0})}function $e(e,t,n=-100){let r=e.on(y.get,async n=>{let r=(await X(e,t())).get(n.payload.id)??null;n.setResult({client:r})},{priority:n}),i=e.on(y.list,async n=>{n.setResult({clients:[...(await X(e,t())).values()]})},{priority:n}),a=e.on(y.listByBinaryName,async n=>{let r=[...(await X(e,t())).values()].filter(e=>e.binary?.name===n.payload.binaryName);n.setResult({clients:r})},{priority:n});return()=>{r(),i(),a()}}async function X(e,t){let n=new Set(t.flatMap(e=>e.clients?.map(({id:e})=>e)??[]));if(n.size===0)return new Map;let r=await e.request(x.contributions.catalog,{}),i=new Map;for(let e of r.clients){if(!n.has(e.definition.id))continue;let t=c.parse(e.definition);i.set(t.id,et(e.packageName,t))}return i}function et(e,t){return{id:t.id,packageName:e,name:t.name,...t.description===void 0?{}:{description:t.description},...t.binary===void 0?{}:{binary:structuredClone(t.binary)},nativeTools:structuredClone(t.nativeTools),defaultApprovalPolicy:t.defaultApprovalPolicy,...t.logSources===void 0?{}:{logSources:structuredClone(t.logSources)},authMethods:structuredClone(t.authMethods),...t.defaultAuth===void 0?{}:{defaultAuth:{...t.defaultAuth}},enabled:!0,createdAt:0,updatedAt:0}}function tt(e,t){let n=e.providerRefs.filter(e=>e.definitionId===t),r=e.providers.filter(e=>e.definition.id===t),i=n[0],a=r[0];return n.length===1&&r.length===1&&i!==void 0&&a!==void 0?{ref:i,provider:a}:null}function nt(e,t){return t===void 0||e.clients?.some(e=>e.id===t)===!0}function rt(e,t){return e?.bindings.some(e=>ot(e.method,t))===!0}function it(e,t,n,r){return e.trim().length>0&&t.trim().length>0&&(n===void 0||(r?.trim().length??0)>0)}async function at(e){if(e.snapshot===null)return{status:`error`,code:`provider-config-not-found`};if(e.adapter===void 0)return{status:`error`,code:`adapter-not-loaded`};if(!e.isBound)return{status:`error`,code:`adapter-not-bound`};let t=e.snapshot.context.definitionId,n=tt(e.adapter,t);if(n===null)return{status:`error`,code:`provider-incompatible`};let{provider:r}=n,i=r.auth,a=e.snapshot.context.auth.method;if(!rt(i,a))return{status:`error`,code:`auth-binding-missing`};let o=a.owner===`client`?a.clientId:I(e.adapter.options,e.adapter.clients);if(!nt(e.adapter,o))return{status:`error`,code:`client-incompatible`};let s=await e.bus.request(x.contributions.catalog,{}),c=o===void 0?[]:s.clients.filter(e=>e.definition.id===o);if(o!==void 0&&c.length!==1)return{status:`error`,code:`client-incompatible`};let l=c[0]?.packageName;if(!it(e.adapter.packageName,r.providerPackageName,o,l))return{status:`error`,code:`runtime-package-metadata-missing`};let u=e.adapter.providers.flatMap(e=>e.definition.id!==t&&e.auth!==void 0?[e.auth]:[]),d=o!==void 0&&l!==void 0?{packageName:l,clientId:o}:void 0;return{status:`resolved`,runtime:{snapshot:e.snapshot,adapterName:e.adapter.name,...o!==void 0&&{adapterClientId:o},...r.protocol!==void 0&&{providerProtocol:r.protocol},adapterProviderAuth:i,compatibleProviderAuths:u,runtimePackages:{adapter:{packageName:e.adapter.packageName},provider:{packageName:r.providerPackageName,definitionId:t},...d!==void 0&&{client:d}}}}}function ot(e,t){return e.owner!==t.owner||e.methodId!==t.methodId?!1:e.owner===`provider`?t.owner===`provider`&&e.providerDefinitionId===t.providerDefinitionId:t.owner===`client`&&e.clientId===t.clientId}var Z=class extends ne{configStore;registry;providerConfigService;bindingService;contributionProcessor;runtimeSnapshotHandlerPriority;runtimeDefinitionHandlerPriority;constructor(e){super(e.bus),this.configStore=new Ee({configRepository:e.configRepository,bus:e.bus}),this.registry=new Fe({bus:e.bus,machineId:e.machineId}),this.providerConfigService=new Le({configStore:this.configStore,bus:e.bus}),this.bindingService=new Re({configStore:this.configStore,bus:e.bus}),this.contributionProcessor=new We({configStore:this.configStore,registry:this.registry,coordinator:e.coordinator,machineId:e.machineId,platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime}}),this.runtimeSnapshotHandlerPriority=e.runtimeSnapshotHandlerPriority??0,this.runtimeDefinitionHandlerPriority=e.runtimeDefinitionHandlerPriority??-100}async onInit(){await this.configStore.loadSnapshot(),this.configStore.registerListeners(e=>this.addCleanup(e)),this.registerBusHandlers(),await this.bus.emit(S.ready,{})}registerBusHandlers(){this.addCleanup(Qe(this.bus,()=>this.registry.getLoadedAdapters(),this.runtimeDefinitionHandlerPriority)),this.addCleanup($e(this.bus,()=>this.registry.getLoadedAdapters(),this.runtimeDefinitionHandlerPriority)),this.registerReadHandlers(),this.registerMutationHandlers()}registerReadHandlers(){this.registerConfigReadHandlers(),this.registerRuntimeReadHandlers()}registerConfigReadHandlers(){this.registerHandler(S.getAdapterConfig,e=>{e.setResult({config:this.configStore.getAdapterConfig(e.payload.name)})}),this.registerHandler(S.listAdapterConfigs,e=>{e.setResult({configs:this.configStore.listAdapterConfigs()})}),this.registerHandler(S.getProviderConfig,e=>{e.setResult({config:this.configStore.getProviderConfig(e.payload.id)})}),this.registerHandler(S.listProviderConfigs,e=>{e.setResult({configs:this.configStore.listProviderConfigs(e.payload.enabled)})}),this.registerHandler(S.listProviderConfigsByDefinition,e=>{e.setResult({configs:this.configStore.listProviderConfigsByDefinition(e.payload.definitionId)})}),this.registerHandler(S.listBindings,e=>{e.setResult({bindings:this.configStore.listBindings(e.payload.adapterName)})}),this.registerHandler(S.listBindingsByConfig,e=>{e.setResult({bindings:this.configStore.listBindingsByConfig(e.payload.providerConfigId)})}),this.registerHandler(S.getDefaultBinding,e=>{e.setResult({binding:this.configStore.getDefaultBinding(e.payload.adapterName)})}),this.registerHandler(S.findConfigForDefinitionAndAdapter,e=>{e.setResult({config:this.configStore.findConfigForDefinitionAndAdapter(e.payload.definitionId,e.payload.adapterName)})})}registerRuntimeReadHandlers(){this.registerHandler(S.resolveProviderRuntimeSnapshot,async e=>{e.setResult({snapshot:await this.configStore.resolveProviderRuntimeSnapshot(e.payload.providerConfigId)})},{priority:this.runtimeSnapshotHandlerPriority}),this.registerHandler(S.resolveAdapterRuntimeSnapshot,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName);try{let n=await this.configStore.resolveBoundProviderRuntimeSnapshot(e.payload.adapterName,e.payload.providerConfigId);e.setResult(await at({bus:this.bus,adapter:t,snapshot:n.snapshot,isBound:n.isBound}))}catch(t){if(t instanceof M&&t.code===`provider-config-disabled`){e.setResult({status:`error`,code:`provider-config-disabled`});return}throw t}},{priority:this.runtimeSnapshotHandlerPriority}),this.registerHandler(S.listAdapters,async e=>{e.setResult({adapters:await this.configStore.buildEffectiveAdapters()})}),this.registerHandler(S.getProviderDefinitionsByAdapter,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName),n=new Map((t?.providers??[]).map(e=>[e.definition.id,e.definition])),r=(t?.providerDefinitionIds??[]).filter(e=>!n.has(e));if(r.length>0){let e=await this.bus.request(x.contributions.catalog,{});for(let t of e.providers)r.includes(t.definition.id)&&n.set(t.definition.id,t.definition)}let i=(t?.providerDefinitionIds??[]).flatMap(e=>{let t=n.get(e);return t===void 0?[]:[u.parse(t)]});e.setResult({definitions:i})}),this.registerHandler(S.listCompatibleAuthOptions,async e=>{e.setResult({options:await Ge(this.bus,this.registry.getLoadedAdapters(),e.payload.definitionId)})}),this.registerHandler(S.ensureReady,e=>{e.setResult({ready:!0})})}registerMutationHandlers(){this.registerHandler(S.createProviderConfig,async e=>{e.setResult(await this.providerConfigService.createProviderConfig(e.payload))}),this.registerHandler(S.updateProviderConfig,async e=>{e.setResult(await this.providerConfigService.updateProviderConfig(e.payload.id,e.payload.patch))}),this.registerHandler(S.setProviderConfigAuth,async e=>{e.setResult(await this.providerConfigService.setProviderConfigAuth(e.payload.id,e.payload.auth))}),this.registerHandler(S.deleteProviderConfig,async e=>{e.setResult(await this.providerConfigService.deleteProviderConfig(e.payload.id))}),this.registerHandler(S.setDefaultProviderConfig,async e=>{e.setResult(await this.providerConfigService.setDefaultProviderConfig(e.payload.id))}),this.registerHandler(S.setModelFilterMode,async e=>{e.setResult(await this.providerConfigService.setModelFilterMode(e.payload.id,e.payload.modelFilterMode,e.payload.preferredModel))}),this.registerHandler(S.setAdapterConfig,async e=>{e.setResult(await this.configStore.setAdapterConfig(e.payload.name,e.payload.patch))}),this.registerHandler(S.setAdapterEnabled,async e=>{await this.configStore.setAdapterEnabled(e.payload.name,e.payload.enabled),e.setResult({success:!0})}),this.registerHandler(S.bind,async e=>{e.setResult({binding:await this.bindingService.bind(e.payload.adapterName,e.payload.providerConfigId)})}),this.registerHandler(S.unbind,async e=>{await this.bindingService.unbind(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})}),this.registerHandler(S.setDefaultBinding,async e=>{await this.bindingService.setDefaultBinding(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})})}async onDestroy(){await this.registry.shutdownAll(),this.configStore.clear()}getLoadedAdapters(){return this.registry.getLoadedAdapters()}getAdapterInstances(){return this.registry.getAdapterInstances()}getSettingsAvailableAdapters(){return this.registry.getSettingsAvailableAdapters()}async processAdapterContributions(e,t,n){await this.contributionProcessor.onPackageActivated(e,t,n)}async stopAdapterContributions(e){await this.contributionProcessor.onPackageStopped(e)}},Q=class extends Error{code;source;constructor(e,t,n){super(`Provider config "${t}" cannot be loaded: ${n}`),this.name=`ProviderConfigDiagnosticError`,this.code=e,this.source=t}};const $=`.json`;var st=class{providerConfigsDir;adaptersDir;constructor(e){this.providerConfigsDir=e.providerConfigsDir,this.adaptersDir=e.adaptersDir}async loadAdapterConfigs(){let e=new Map,t=await this.readJsonFiles(this.adaptersDir,`adapter`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`adapter`,n.filePath);if(!t)continue;let r=h.safeParse(n.jsonData);if(!r.success){this.warnInvalidFile(`adapter`,n.filePath);continue}e.set(t,r.data)}return{configs:e}}async loadProviderConfigs(){let e=new Map,t=await this.readJsonFiles(this.providerConfigsDir,`provider config`,`reject`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`provider config`,n.filePath);t&&e.set(t,this.parseProviderConfig(n.jsonData,t))}return{configs:e}}async writeProviderConfig(e,t){let r=this.assertCanonicalFileStem(e,`provider config id`),i=n.join(this.providerConfigsDir,`${r}${$}`),a=this.parseProviderConfig(t,r);await this.writeJsonFile(i,a)}async deleteProviderConfig(e){let t=this.assertCanonicalFileStem(e,`provider config id`);try{return await this.unlinkFile(n.join(this.providerConfigsDir,`${t}${$}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async writeAdapterFile(e,t){let r=this.assertCanonicalFileStem(e,`adapter name`),i=h.parse(t);await this.writeJsonFile(n.join(this.adaptersDir,`${r}${$}`),i)}async deleteAdapterFile(e){let t=this.assertCanonicalFileStem(e,`adapter name`);try{return await this.unlinkFile(n.join(this.adaptersDir,`${t}${$}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async readJsonFiles(e,r,i=`skip`){try{let a=(await t.readdir(e,{withFileTypes:!0})).filter(e=>e.isFile()&&n.extname(e.name)===$).sort((e,t)=>e.name.localeCompare(t.name));return(await Promise.all(a.map(async a=>{let o=n.join(e,a.name);try{let e=await t.readFile(o,`utf-8`);return{filePath:o,stem:n.parse(a.name).name,jsonData:JSON.parse(e)}}catch(e){if(e instanceof SyntaxError){if(i===`reject`)throw new Q(`invalid-provider-config`,ct(a.name),`file does not contain valid JSON.`);return this.warnInvalidFile(r,o),null}if(e instanceof Error&&e.code===`ENOENT`)return this.warnInvalidFile(r,o),null;throw e}}))).filter(e=>e!==null)}catch(e){if(e.code===`ENOENT`)return[];throw e}}warnInvalidFile(e,t){console.warn(`[FileAdapterConfigRepository] Skipping invalid %s file: %s`,e,t)}parseProviderConfig(e,t){let n=typeof e==`object`&&e?e:void 0,r=n?.$schema,i=[`credentials`,`isSentinel`].filter(e=>Object.hasOwn(n??{},e));if(r===`makaio/provider-config/v1`||i.length>0)throw new Q(`legacy-provider-config`,t,`${[...r===`makaio/provider-config/v1`?[`schema v1`]:[],...i.length>0?[`legacy fields ${i.join(`, `)}`]:[]].join(` and `)} use retired authentication semantics. Recreate this config with an explicit normalized authentication method.`);if(r!==g)throw new Q(`unsupported-provider-config-version`,t,`expected $schema "${g}". Recreate the config with the current schema.`);let a=ae.safeParse(e);if(!a.success)throw new Q(`invalid-provider-config`,t,a.error.issues.map(e=>`${e.path.length>0?e.path.join(`.`):`<root>`}: ${e.message}`).join(`; `));return a.data}getCanonicalLoadedStem(e,t,n){try{return this.assertCanonicalFileStem(e,`${t} file stem`)}catch{return this.warnInvalidFile(t,n),null}}async writeJsonFile(e,i){let a=n.dirname(e),o=n.join(a,`.${n.basename(e)}.${r()}.tmp`);await t.mkdir(a,{recursive:!0});try{await t.writeFile(o,`${JSON.stringify(i,null,2)}\n`,{encoding:`utf-8`,mode:384}),await this.replaceFile(o,e)}catch(e){throw await this.removeFileIfPresent(o),e}}async replaceFile(e,t){try{await this.renameFile(e,t);return}catch(e){let t=e;if(![`EEXIST`,`EPERM`,`EACCES`].includes(t.code??``))throw e}let n=`${t}.${r()}.bak`,i=!1;try{await this.renameFile(t,n),i=!0}catch(e){if(e.code!==`ENOENT`)throw e}try{await this.renameFile(e,t)}catch(e){throw i&&await this.renameFile(n,t).catch(()=>void 0),e}i&&await this.removeFileIfPresent(n)}async renameFile(e,n){await t.rename(e,n)}async unlinkFile(e){await t.unlink(e)}async removeFileIfPresent(e){try{await t.unlink(e)}catch(t){t.code!==`ENOENT`&&console.warn(`[FileAdapterConfigRepository] Failed to remove temp file: %s`,e,t)}}assertCanonicalFileStem(e,t){let r=e.trim(),i=n.basename(r);if(!r||e!==r||r!==i||!/^[a-z0-9._-]+$/.test(r)||r.includes(`/`)||r.includes(`\\`)||r.toLowerCase().endsWith(`.json`)||r===`.`||r===`..`)throw Error(`Invalid canonical ${t}: ${e}`);return r}};function ct(e){return n.basename(e).replace(/[^A-Za-z0-9._-]/g,`_`)||`provider-config.json`}function lt(e){return{filter:e=>!!e.adapters?.length||!!e.providers?.length,async processActivated(t,n,r){let i=e.getAdapterSubsystemService();if(!i)throw Error(`AdapterSubsystemService is not available. Ensure the adapter subsystem package starts before adapter-contributing packages.`);await i.processAdapterContributions(t,n,r)},async processStopped(t){let n=e.getAdapterSubsystemService();n&&await n.stopAdapterContributions(t)}}}const ut=ee(`adapter-subsystem`);function dt(e){return{name:ut.name,displayName:`Adapter Subsystem`,version:`0.1.0`,provides:[`adapters`],critical:!0,create:t=>new Z({bus:t.bus,configRepository:e.configRepository,coordinator:e.coordinator,machineId:t.machineId,platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime},...e.runtimeSnapshotHandlerPriority!==void 0&&{runtimeSnapshotHandlerPriority:e.runtimeSnapshotHandlerPriority},...e.runtimeDefinitionHandlerPriority!==void 0&&{runtimeDefinitionHandlerPriority:e.runtimeDefinitionHandlerPriority}})}}export{Z as AdapterSubsystemService,ut as AdapterSubsystemToken,st as FileAdapterConfigRepository,A as ProviderConfigAuthValidationError,Q as ProviderConfigDiagnosticError,M as ProviderRuntimeContextError,k as assertProviderConfigAuthDefinitionsEnabled,lt as createAdapterSubsystemContributionProcessor,dt as createAdapterSubsystemPackage,Pe as ensureAdapterConfigs,Ae as extractAdapterIdFromPackageName,H as initializeEnabledAdapters,B as shutdownAdapterInstances,R as toAvailableAdapter,j as validateProviderConfigAuth};
|
|
1
|
+
import{isDeepStrictEqual as e}from"node:util";import*as t from"node:fs/promises";import*as n from"node:path";import{randomUUID as r}from"node:crypto";import{MakaioBus as i}from"@makaio/framework/bus";import{AdapterProviderAuthSchema as a,AdapterSubjects as o,CapabilitySubjects as s,ClientDefinitionSchema as c,CredentialSubjects as l,ProviderDefinitionSchema as u,ResolvedProviderContextSchema as d,aggregateTeardownResults as f,assertAdapterAuthBindingMatchesMethod as p,dep as m,extensionToken as h,isUniversalRange as g,teardownWasObserved as _,versionSatisfies as v}from"@makaio/framework/contracts";import{ExtensionSubjects as y}from"@makaio/framework/kernel";import{BaseService as ee}from"@makaio/framework/service-base";import{ProviderConfigAuthSchema as b,assertAdapterAuthBindingMatchesMethod as te}from"@makaio/framework/contracts/auth";import{ADAPTER_FILE_SCHEMA_VERSION as ne,AdapterFileSchema as x,PROVIDER_CONFIG_SCHEMA_VERSION as S,ProviderConfigFileSchema as re,resolveCanonicalProviderConfigName as ie,slugifyProviderConfigName as C}from"@makaio/framework/contracts/config";import{resolveModelVisibility as ae}from"@makaio/framework/contracts/provider";import{AdapterRuntimeSubjects as oe,buildDeterministicAdapterId as w}from"@makaio/framework/services/adapter-runtime";import{ClientSubjects as se}from"@makaio/framework/contracts/client";import{ClientStorageSubjects as T,ProviderStorageSubjects as E}from"@makaio/framework/services/settings/storage";import{SessionToken as D}from"@makaio/framework/services";import{ADAPTER_SUBSYSTEM_PACKAGE_NAME as O,AdapterSubsystemSubjects as k}from"@makaio/framework/services/adapter-subsystem";import{ModelRegistryProviderNotFoundError as ce,ModelRegistrySubjects as le}from"@makaio/framework/services/model-registry";function ue(e){return e?{...e}:void 0}function de(e){return e?{...e}:void 0}function fe(e){return e?structuredClone(e):void 0}function pe(e,t){let n=[];for(let[r,i]of t.providerConfigs){let t=e.providerConfigs.get(r);t!==i&&n.push({kind:`write-provider`,key:`provider:${r}`,id:r,next:i,previous:t})}for(let[r,i]of t.adapters){let t=e.adapters.get(r);t!==i&&n.push({kind:`write-adapter`,key:`adapter:${r}`,name:r,next:i,previous:t})}for(let[r,i]of e.providerConfigs)t.providerConfigs.has(r)||n.push({kind:`delete-provider`,key:`provider-delete:${r}`,id:r,previous:i});return n}async function me(e,t){switch(t.kind){case`write-provider`:await e.writeProviderConfig(t.id,t.next);return;case`write-adapter`:await e.writeAdapterFile(t.name,t.next);return;case`delete-provider`:if(!await e.deleteProviderConfig(t.id))throw Error(`Provider config file missing during delete: ${t.id}`);return}}async function he(e,t){switch(t.kind){case`write-provider`:if(t.previous){await e.writeProviderConfig(t.id,t.previous);return}await e.deleteProviderConfig(t.id);return;case`write-adapter`:if(t.previous){await e.writeAdapterFile(t.name,t.previous);return}await e.deleteAdapterFile(t.name);return;case`delete-provider`:await e.writeProviderConfig(t.id,t.previous);return}}async function ge(e,t,n){let r=pe(t,n);if(r.length===0)return;let i=[];try{for(let t of r)i.push(t),await me(e,t)}catch(t){try{await _e(e,i)}catch(e){throw AggregateError([t,e],`Adapter subsystem snapshot commit failed and rollback could not restore the previous state.`,{cause:e})}throw t}}async function _e(e,t){let n=[];for(let r of[...t].reverse())try{await he(e,r)}catch(e){n.push(e instanceof Error?Error(`[${r.key}] ${e.message}`,{cause:e}):Error(`[${r.key}] ${String(e)}`))}if(n.length>0)throw AggregateError(n,`Snapshot rollback failed.`)}function A(e,t){return{id:e,definitionId:t.definitionId,name:t.name??t.definitionId,...t.endpointOverrides?{endpointOverrides:{...t.endpointOverrides}}:{},...t.modelVisibility?{modelVisibility:{...t.modelVisibility}}:{},modelFilterMode:t.modelFilterMode??`show-all`,isDefault:t.isDefault??!1,enabled:t.enabled??!0,auth:ve(t),...t.managedBy?{managedBy:{...t.managedBy}}:{}}}function ve(e){switch(e.auth.mode){case`explicit`:return{mode:`explicit`,method:{...e.auth.method},hasCredentials:!0};case`inferred`:return{mode:`inferred`,method:{...e.auth.method},...e.auth.account?{account:{...e.auth.account}}:{},hasCredentials:!1};case`none`:return{mode:`none`,method:{...e.auth.method},hasCredentials:!1}}}function j(e,t){return(t??[]).map(t=>({adapterName:e,providerConfigId:t.providerConfigId,isDefault:t.isDefault??!1}))}function ye(e,t,n){return{name:e,enabled:t.enabled??!0,...t.displayName===void 0?{}:{displayName:t.displayName},...t.description===void 0?{}:{description:t.description},...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds===void 0?{}:{providerDefinitionIds:[...t.providerDefinitionIds]},...t.settings?{settings:structuredClone(t.settings)}:{},bindings:n.map(e=>({...e}))}}function be(e,t){let n=[],r=new Set;for(let i of e){let e=t.get(i.providerConfigId);!e||r.has(e.definitionId)||(r.add(e.definitionId),n.push(e.definitionId))}return n}function xe(e){let t=new Map,n=new Map,r=new Map;for(let[i,a]of e.providerConfigs){let e=A(i,a);t.set(i,e),n.set(C(e.name),i);let o=r.get(e.definitionId)??[];o.push(i),r.set(e.definitionId,o)}let i=new Map,a=new Map,o=new Map,s=new Map;for(let[n,r]of e.adapters){let e=j(n,r.bindings),c=ye(n,r,e),l=e.filter(e=>t.get(e.providerConfigId)?.enabled);i.set(n,c),a.set(n,e),s.set(n,l.find(e=>e.isDefault)??l[0]??null);for(let t of e){let e=o.get(t.providerConfigId)??[];e.push(t),o.set(t.providerConfigId,e)}}return{providerConfigRecords:t,providerConfigSlugToId:n,providerConfigIdsByDefinition:r,adapterRecords:i,bindingsByAdapter:a,bindingsByConfig:o,defaultBindingByAdapter:s,adapterNames:new Set(i.keys())}}function M(e,t){let n=e.get(t);return n!==void 0&&(n.enabled??!0)}function Se(e,t){return e.some(e=>M(t,e.providerConfigId))}function N(e,t){let n=e.find(e=>M(t,e.providerConfigId));return{bindings:e.map(e=>({...e,isDefault:e.providerConfigId===n?.providerConfigId})),...n?{promoted:{...n,isDefault:!0}}:{}}}function Ce(e,t,n){let r=[...n.entries()].filter(([n,r])=>n!==t&&r.definitionId===e).map(([e,t])=>({id:e,config:t})),i=r.find(({id:e})=>M(n,e))?.id??null;for(let{id:e,config:t}of r)n.set(e,{...t,isDefault:i!==null&&e===i});return i}function P(e){if(!e.provider.enabled)throw new F(`provider-definition-disabled`,`Provider definition is disabled for auth selection: ${e.provider.id}`);if(e.client!==void 0&&!e.client.enabled)throw new F(`client-definition-disabled`,`Client definition is disabled for auth selection: ${e.client.id}`)}var F=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderConfigAuthValidationError`}};async function I(e,t,n,r){let i=r??(await e.request(E.get,{id:t})).provider;if(!i||i.id!==t)throw new F(`provider-definition-not-found`,`Provider definition not found for auth selection: ${t}`);let a,o;if(n.method.owner===`provider`){if(n.method.providerDefinitionId!==t)throw new F(`auth-method-not-found`,`Provider auth method "${n.method.methodId}" does not belong to definition "${t}".`);a=i.authMethods.find(({id:e})=>e===n.method.methodId)}else{if({client:o}=await e.request(T.get,{id:n.method.clientId}),!o)throw new F(`client-definition-not-found`,`Client definition not found for auth selection: ${n.method.clientId}`);a=o.authMethods.find(({id:e})=>e===n.method.methodId)}if(!a){let e=n.method.owner===`provider`?n.method.providerDefinitionId:n.method.clientId;throw new F(`auth-method-not-found`,`Authentication method "${n.method.methodId}" is not declared by ${n.method.owner} "${e}".`)}if(a.mode!==n.mode)throw new F(`auth-mode-mismatch`,`Authentication method "${a.id}" declares mode "${a.mode}", not "${n.mode}".`);return a.mode===`explicit`&&n.mode===`explicit`&&we(a,n),{method:a,provider:i,...o?{client:o}:{}}}function we(e,t){let n=new Set(e.fields.map(({id:e})=>e)),r=e.fields.filter(({id:e,required:n})=>n&&t.credentialRefs[e]===void 0).map(({id:e})=>e),i=Object.keys(t.credentialRefs).filter(e=>!n.has(e));if(r.length===0&&i.length===0)return;let a=[...r.length>0?[`missing required fields [${r.join(`, `)}]`]:[],...i.length>0?[`unexpected fields [${i.join(`, `)}]`]:[]];throw new F(`auth-credential-fields-mismatch`,`Authentication method "${e.id}" has ${a.join(` and `)}.`)}var L=class extends Error{code;constructor(e,t){super(t),this.code=e,this.name=`ProviderRuntimeContextError`}};async function R(e,t,n){if(n.enabled===!1)throw new L(`provider-config-disabled`,`ProviderConfig '${t}' is disabled and cannot be used for adapter startup.`);let r=await I(e,n.definitionId,n.auth);P(r);let i=Te(n.auth,r.method),a={...r.provider.endpoints??{},...n.endpointOverrides??{}};return{context:d.parse({state:`resolved`,providerConfigId:t,definitionId:r.provider.id,...Object.keys(a).length>0?{endpointOverrides:a}:{},auth:i,...r.provider.capabilities?{capabilities:r.provider.capabilities}:{}}),definition:structuredClone(r.provider)}}function Te(e,t){switch(e.mode){case`explicit`:if(t.mode!==`explicit`)throw z(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:structuredClone(t),credentialRefs:{...e.credentialRefs}};case`inferred`:if(t.mode!==`inferred`)throw z(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t},...e.account?{account:{...e.account}}:{}};case`none`:if(t.mode!==`none`)throw z(e.mode,t.mode);return{mode:e.mode,method:{...e.method},definition:{...t}}}}function z(e,t){return new F(`auth-mode-mismatch`,`Validated authentication mode changed during context assembly: selected "${e}", declared "${t}".`)}var Ee=class{tail=Promise.resolve();async run(e){let t=this.tail.then(e,e);return this.tail=t.then(()=>void 0,()=>void 0),await t}},De=class{configRepository;bus;snapshot={providerConfigs:new Map,adapters:new Map};providerConfigRecords=new Map;providerConfigSlugToId=new Map;adapterRecords=new Map;bindingsByAdapter=new Map;bindingsByConfig=new Map;defaultBindingByAdapter=new Map;providerConfigIdsByDefinition=new Map;knownAdapterNames=new Set;logImportProviderKeysPromise=null;snapshotMutationQueue=new Ee;constructor(e){this.configRepository=e.configRepository,this.bus=e.bus}async loadSnapshot(){let[e,t]=await Promise.all([this.configRepository.loadProviderConfigs(),this.configRepository.loadAdapterConfigs()]);this.replaceSnapshot({providerConfigs:new Map(e.configs),adapters:new Map(t.configs)})}registerListeners(e){let t=()=>{this.logImportProviderKeysPromise=null};e(this.bus.on(s.register,t,{filter:{capabilityId:`log-import`}})),e(this.bus.on(s.unregister,t,{filter:{capabilityId:`log-import`}}))}clear(){this.snapshot={providerConfigs:new Map,adapters:new Map},this.providerConfigRecords.clear(),this.providerConfigSlugToId.clear(),this.adapterRecords.clear(),this.bindingsByAdapter.clear(),this.bindingsByConfig.clear(),this.defaultBindingByAdapter.clear(),this.providerConfigIdsByDefinition.clear(),this.knownAdapterNames.clear(),this.logImportProviderKeysPromise=null}replaceSnapshot(e){this.snapshot=e,this.applyDerivedState()}cloneSnapshot(){return{providerConfigs:new Map(this.snapshot.providerConfigs),adapters:new Map(this.snapshot.adapters)}}async commitSnapshotMutation(e,t){return await this.snapshotMutationQueue.run(async()=>{let n=this.cloneSnapshot();return await e(n),await this.commitSnapshot(n),await t?.()})}async commitSnapshot(e){await ge(this.configRepository,this.snapshot,e),this.replaceSnapshot(e)}applyDerivedState(){let e=xe(this.snapshot);this.providerConfigRecords=e.providerConfigRecords,this.providerConfigSlugToId=e.providerConfigSlugToId,this.providerConfigIdsByDefinition=e.providerConfigIdsByDefinition,this.adapterRecords=e.adapterRecords,this.bindingsByAdapter=e.bindingsByAdapter,this.bindingsByConfig=e.bindingsByConfig,this.defaultBindingByAdapter=e.defaultBindingByAdapter,(e.adapterNames.size!==this.knownAdapterNames.size||[...e.adapterNames].some(e=>!this.knownAdapterNames.has(e)))&&(this.knownAdapterNames=e.adapterNames,this.logImportProviderKeysPromise=null)}getProviderConfig(e){let t=this.providerConfigRecords.get(e);return t?structuredClone(t):null}requireProviderConfig(e,t){let n=this.getProviderConfig(e);if(!n)throw Error(`Provider config could not be loaded after ${t}: ${e}`);return n}getAdapterConfig(e){let t=this.adapterRecords.get(e);return t?structuredClone(t):null}requireAdapterConfig(e,t){let n=this.getAdapterConfig(e);if(!n)throw Error(`Adapter config could not be loaded after ${t}: ${e}`);return n}isAdapterEnabled(e){return this.getAdapterConfig(e)?.enabled??!1}listProviderConfigs(e){let t=[...this.providerConfigRecords.values()].map(e=>structuredClone(e));return e===void 0?t:t.filter(t=>t.enabled===e)}listProviderConfigsByDefinition(e){return this.getProviderConfigIdsByDefinition(e).map(e=>this.getProviderConfig(e)).filter(e=>e!==null)}listAdapterConfigs(){return[...this.adapterRecords.values()].map(e=>structuredClone(e))}listBindings(e){return structuredClone(this.bindingsByAdapter.get(e)??[])}listBindingsByConfig(e){return structuredClone(this.bindingsByConfig.get(e)??[])}getDefaultBinding(e){let t=this.defaultBindingByAdapter.get(e)??null;return t?structuredClone(t):null}findConfigForDefinitionAndAdapter(e,t){let n=new Set((this.bindingsByAdapter.get(t)??[]).map(e=>e.providerConfigId)),r=this.getProviderConfigIdsByDefinition(e).map(e=>this.providerConfigRecords.get(e)).filter(e=>e!==void 0&&e.enabled&&n.has(e.id)),i=r.find(e=>e.isDefault)??r[0]??null;return i?structuredClone(i):null}getProviderConfigIdsByDefinition(e){return[...this.providerConfigIdsByDefinition.get(e)??[]]}assertProviderConfigNameUnique(e,t){let n=C(e),r=this.providerConfigSlugToId.get(n);if(r!==void 0&&r!==t){let t=this.providerConfigRecords.get(r)?.name??r;throw Error(`Provider config name "${e}" conflicts with existing config "${t}": both slugify to "${n}". Choose a different name.`)}}async setAdapterConfig(e,t){return{config:await this.commitSnapshotMutation(n=>{let r=n.adapters.get(e);n.adapters.set(e,this.buildNextAdapterFile(r,t))},()=>this.requireAdapterConfig(e,`update`))}}buildNextAdapterFile(e,t){return{...e??{},$schema:ne,...this.applyAdapterPatch(e,t),bindings:e?.bindings}}applyAdapterPatch(e,t){let n=e??{},r=t.helpLinks?.map(e=>({...e}))??n.helpLinks,i=t.providerDefinitionIds?[...t.providerDefinitionIds]:n.providerDefinitionIds;return{enabled:t.enabled??n.enabled??!0,displayName:t.displayName??n.displayName,description:t.description??n.description,helpLinks:r,instructions:t.instructions??n.instructions,clientId:t.clientId??n.clientId,protocol:t.protocol??n.protocol,providerDefinitionIds:i,settings:t.settings===void 0?n.settings:fe(t.settings)}}async setAdapterEnabled(e,t){await this.setAdapterConfig(e,{enabled:t})}async buildEffectiveAdapters(){let e=await this.getLogImportProviderKeys();return[...this.adapterRecords.values()].map(t=>{let n=this.bindingsByAdapter.get(t.name)??[],r=n.filter(e=>this.providerConfigRecords.get(e.providerConfigId)?.enabled),i=[...t.providerDefinitionIds??be(n,this.providerConfigRecords)];return{name:t.name,displayName:t.displayName??t.name,...t.description===void 0?{}:{description:t.description},enabled:t.enabled,configCount:n.length,readiness:r.length>0?`ready`:`needs-setup`,supportsLogImport:e.has(t.name),...t.helpLinks===void 0?{}:{helpLinks:t.helpLinks.map(e=>({...e}))},...t.instructions===void 0?{}:{instructions:t.instructions},...t.clientId===void 0?{}:{clientId:t.clientId},...t.protocol===void 0?{}:{protocol:t.protocol},...t.providerDefinitionIds!==void 0||i.length>0?{providerDefinitionIds:i}:{}}})}async getLogImportProviderKeys(){if(!this.logImportProviderKeysPromise){let e=this.bus.requestOptional(s.listProviders,{capabilityId:`log-import`}).then(t=>t.handled?new Set(t.data.providers.map(e=>e.providerKey??e.id)):(this.logImportProviderKeysPromise===e&&(this.logImportProviderKeysPromise=null),new Set)).catch(e=>{throw this.logImportProviderKeysPromise=null,e});this.logImportProviderKeysPromise=e}return await this.logImportProviderKeysPromise}async resolveProviderRuntimeSnapshot(e){let t=this.snapshot.providerConfigs.get(e);if(!t)return null;let{context:n,definition:r}=await R(this.bus,e,t);return{config:A(e,t),context:n,definition:r}}async resolveBoundProviderRuntimeSnapshot(e,t){let n=this.snapshot,r=n.providerConfigs.get(t),i=n.adapters.get(e),a=r!==void 0&&j(e,i?.bindings).some(e=>e.providerConfigId===t);if(!r)return{snapshot:null,isBound:!1};let{context:o,definition:s}=await R(this.bus,t,r);return{isBound:a,snapshot:{config:A(t,r),context:o,definition:s}}}removeBindingsForConfig(e,t,n){let r=new Map,i=[],a=[];for(let[o,s]of t){let t=j(o,s.bindings),c=t.findIndex(t=>t.providerConfigId===e);if(c===-1)continue;let[l]=t.splice(c,1);if(l&&i.push(l),l?.isDefault&&t.length>0){let e=N(t,n);t.splice(0,t.length,...e.bindings),e.promoted&&a.push({adapterName:o,providerConfigId:e.promoted.providerConfigId})}r.set(o,{...s,bindings:t.map(({adapterName:e,...t})=>t)})}return{changedAdapters:r,deletedBindings:i,defaultChangedBindings:a}}promoteProviderConfigDefault(e,t,n){return Ce(e,t,n)}};const B=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function Oe(e){if(!(e===void 0||e.length===0))return e.map(e=>({...e}))}function ke(e,t){if(e===void 0||e.length===0)return;let n=new Map(t.map(e=>[e.definition.id,e.definition]));return e.map(e=>{let t=n.get(e.id);if(t===void 0)throw Error(`Adapter client definition "${e.id}" is missing from the active contribution catalog.`);return t})}function V(e,t){return e.clientId!==void 0&&t?.some(t=>t.id===e.clientId)?e.clientId:t?.[0]?.id}async function H(e,t,n,r,i={}){if(t===void 0||t.length===0)return;let a=new Map(n.map(e=>[e.definition.id,e.definition]));for(let n of t){let t=a.get(n.id);if(t===void 0)throw Error(`Adapter "${e}" references missing client "${n.id}"`);Ae(t.version,n.version,`Adapter "${e}" client "${n.id}" definition version ${t.version}`)}if(i.checkBinaryVersions===!1)return;let o=t.filter(e=>e.binaryVersion!==void 0);await Promise.all(o.map(async t=>{if(g(t.binaryVersion))return;let n=await r.requestOptional(se.resolveBinary,{clientId:t.id});if(!n.handled){if(B){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" declares binaryVersion ${t.binaryVersion}, but no client.resolveBinary handler is registered`)}let i=n.data.version;if(i===null){if(B){console.warn(`[SKIP_VERSION_CHECK] Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion} — check bypassed`);return}throw Error(`Adapter "${e}" client "${t.id}" binary did not report a version; requires ${t.binaryVersion}`)}if(!v(i,t.binaryVersion)){let n=`Adapter "${e}" client "${t.id}" binary version ${i}`;if(B){console.warn(`[SKIP_VERSION_CHECK] ${n} does not satisfy ${t.binaryVersion} — check bypassed`);return}throw Error(`${n} does not satisfy ${t.binaryVersion}`)}}))}function Ae(e,t,n){if(!v(e,t))throw Error(`${n} does not satisfy ${t}`)}var U=class extends Error{adapterId;timeoutMs;constructor(e,t){super(`Timed out closing adapter ${e} after ${t}ms`),this.adapterId=e,this.timeoutMs=t,this.name=`AdapterInstanceCloseTimeoutError`}};function W(e,t,n,r){return t instanceof U?{adapterId:e,evidence:`unknown`,detail:`Adapter ${e} did not return from its close hook within ${t.timeoutMs}ms; whatever it holds may still be running.`}:t===void 0?n?r===void 0?{adapterId:e,evidence:`detached`,detail:`Adapter ${e} returned from its close hook without reporting a class, so what it held is unproven.`}:{adapterId:e,...r}:{adapterId:e,evidence:`released`}:{adapterId:e,evidence:`unknown`,detail:`Adapter ${e} close hook failed: ${t instanceof Error?t.message:String(t)}`}}function G(e){return{...f(e),results:e}}function je(e){let t=e.split(`/`).pop()?.replace(/^ai-adapters-/,``)?.trim();return t&&t.length>0?t:e}function Me(e){let t=V(e.options,e.clients);return{name:e.name,displayName:e.displayName??e.name,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:t,protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds]}}async function Ne(e,t,n=5e3){let r=Be(t),i,a,o;if(r!==void 0){let t=await Pe(r,n);t.kind===`settled`?a=t.reported:t.kind===`failed`?i=t.error:(i=new U(e,n),o=t.pendingCloseCompletion.then(t=>W(e,void 0,!0,t),t=>W(e,t,!0,void 0)))}let s=W(e,i,r!==void 0,a);return o===void 0?{report:s}:{report:s,pendingCompletion:o}}async function Pe(e,t){let n=Promise.resolve().then(e);n.catch(()=>void 0);let r,i=n.then(e=>({kind:`settled`,reported:e}),e=>({kind:`failed`,error:e}));try{return await Promise.race([i,new Promise(e=>{r=setTimeout(()=>{e({kind:`timed-out`,pendingCloseCompletion:n})},t)})])}finally{r&&clearTimeout(r)}}async function Fe(e){let t=await Promise.all([...e].map(([e,t])=>Ie(e,t)));return e.clear(),G(t)}async function Ie(e,t){let{report:n}=await Ne(e,t);return n.evidence===`unknown`&&console.error(`[adapter-runtime] Error shutting down adapter ${e}:`,n.detail),n}async function K(e,t,n,r,i,a){try{await i(t,e.name,n,r,a)}catch(t){console.error(`[adapter-runtime] Error rolling back adapter ${e.name}:`,t)}}async function Le(e,t,n,r,i,a){let s=a;await e.emit(o.initialized,{adapterId:n,adapterName:t.name,machineId:r,ownerInstanceId:i,capabilities:[...s.capabilities??[]],...s.nativeTools===void 0?{}:{nativeTools:[...s.nativeTools]}})}async function Re(e,t){let{config:n}=await e.request(k.getAdapterConfig,{name:t});return n?.enabled??!1}function ze(e,t){return e.options.adapterId??w(t,e.name)}function Be(e){let t=e;if(typeof t.shutdown==`function`)return t.shutdown.bind(e);if(typeof t.closeAsync==`function`)return t.closeAsync.bind(e);if(typeof t.close==`function`)return t.close.bind(e)}async function Ve(e,t){let{bus:n,machineId:r,adapterInstances:i,platformDefaults:a,onRollback:o,isCurrentAdapter:s}=t;if(!await Re(n,e.name)){console.info(`Skipping disabled adapter: ${e.name}`);return}if(!s(e))return;let c=ze(e,r),l=t.resolveOwnerInstanceId(),u=V(e.options,e.clients),d=await e.factory({...e.options,adapterId:c,machineId:r,ownerInstanceId:l,platformDefaults:a,definitionProviders:e.providers,clientId:u,globalBus:n});if(!s(e)){await K(e,c,l,d,o,!1);return}if(d.adapterId!==c)throw await K(e,c,l,d,o,!1),Error(`Adapter '${e.name}' initialized with mismatched adapterId (expected '${c}', got '${d.adapterId}')`);i.set(c,d);try{t.onInitialized(c,l)}catch(t){throw await K(e,c,l,d,o,!1),t}try{await Le(n,e,c,r,l,d)}catch(t){throw await K(e,c,l,d,o,!0),t}console.info(`Initialized adapter: ${e.name} (${e.packageName})`)}async function He(e,t,n,r,i,a,o,s,c){let l=[],u={bus:e,machineId:t,adapterInstances:r,platformDefaults:i,resolveOwnerInstanceId:a,onInitialized:o,onRollback:s,isCurrentAdapter:c};for(let e of n)try{await Ve(e,u)}catch(t){l.push({adapterName:e.name,error:t})}if(l.length>0){let e=l.map(({adapterName:e,error:t})=>`${e}: ${t instanceof Error?t.message:String(t)}`).join(`; `);throw Error(`Failed to initialize enabled adapters: ${e}`)}}async function Ue(e,t){await t.request(k.ensureReady,{});let n=await Promise.all(e.map(async e=>({adapter:e,config:(await t.request(k.getAdapterConfig,{name:e.name})).config})));await Promise.all(n.filter(({config:e})=>!e).map(({adapter:e})=>t.request(k.setAdapterConfig,{name:e.name,patch:{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:V(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1}})))}function We(e,t,n,r){let i=e.get(n);if(i===void 0)throw Error(`Managed adapter ${n} has no recorded runtime owner`);return{adapterId:n,adapterName:r,machineId:t,ownerInstanceId:i.ownerInstanceId}}function Ge(e,t,n,r,i,a){if(e.get(r)!==i||t.has(a))return;e.delete(r);let o=n.get(i.packageName);if(o===void 0)return;let s=o.filter(e=>e!==r);s.length===0?n.delete(i.packageName):n.set(i.packageName,s)}function Ke(e,t,n){let r=e.get(t);if(r===void 0)return;let i=r.filter(e=>e!==n);i.length===0?e.delete(t):e.set(t,i)}function q(e,t,n,r,i){let a=e.get(t);a?.state!==`retiring`||a.instance!==n||a.flight!==r||(_(i.evidence)?e.delete(t):e.set(t,{state:`retiring`,instance:n,ownerInstanceId:a.ownerInstanceId,report:i}))}function qe(e,t,n,r,i,a,o,s){if(!i()||e.has(n))return;for(let[r,i]of e)r.name===n.name&&i.retirementCompletion===t.completion&&(i.cancelled=!0,e.delete(r));let c={cancelled:!1,started:!1,retirementCompletion:t.completion,cancellationCompletion:t.cancellationCompletion,completion:Promise.resolve()},l=t.completion.then(async e=>{c.cancelled||!_(e.evidence)||!i()||a()||(c.started=!0,await o(n,r))});c.completion=l,e.set(n,c),l.then(()=>{e.get(n)===c&&e.delete(n)},t=>{e.get(n)===c&&e.delete(n),s(t)})}function Je(e,t,n,r,i,a){if(!r()||e.has(t))return!1;let o;for(let[n,r]of e)n.name===t.name&&!r.cancelled&&(o=r);if(o===void 0)return!1;o.cancelled=!0;let s={cancelled:!1,started:!1,retirementCompletion:o.retirementCompletion,cancellationCompletion:o.completion.catch(()=>void 0),completion:Promise.resolve()},c=o.completion.catch(()=>void 0).then(async()=>{s.cancelled||!r()||(s.started=!0,await i(t,n))});return s.completion=c,e.set(t,s),c.then(()=>{e.get(t)===s&&e.delete(t)},n=>{e.get(t)===s&&e.delete(t),a(n)}),!0}function Ye(e,t){let n=e.get(t);if(n!==void 0)return n.cancelled=!0,n.started?{completion:n.completion}:(e.delete(t),{completion:n.cancellationCompletion})}async function Xe(e,t,n,r,i){let a=Ye(e,t);if(a===void 0)return!1;if(await a.completion.catch(()=>void 0),!n())return!0;let o=r();return o===void 0?(i(),!0):o.state===`retiring`?(o.flight!==void 0&&o.flight.completion.then(e=>{_(e.evidence)&&n()&&r()===void 0&&i()}),!0):!1}async function Ze(e){let t=[];for(let n of e.values())n.cancelled=!0,t.push((n.started?n.completion:n.cancellationCompletion).catch(()=>void 0));await Promise.all(t),e.clear()}async function J(e){let{dependencies:t,adapter:n,platformDefaults:r,fromDeferredActivation:i}=e,{bus:a,machineId:o,resolveOwnerInstanceId:s,loadedAdapters:c,adapterEntries:l,deferredActivations:u,resolveLoadedAdapterId:d,retireAdapterEntry:f}=t,p=u.get(n);if(p!==void 0&&!i){await p.completion;return}let m=d(n),h=l.get(m);if(h?.state===`live`||h?.state===`retiring`&&await Qe(e,m,h,p))return;let g=new Map;await He(a,o,[n],g,r,s,(e,t)=>{if(c.get(n.name)!==n)throw Error(`Adapter ${n.name} was stopped before initialization completed`);let r=g.get(e);if(r===void 0)throw Error(`Initialized adapter ${e} was not retained by its lifecycle`);l.set(e,{state:`live`,instance:r,ownerInstanceId:t})},async(e,t,n,r,i)=>{i?l.set(e,{state:`live`,instance:r,ownerInstanceId:n}):l.set(e,{state:`retiring`,instance:r,ownerInstanceId:n,report:{evidence:`unknown`,detail:`Failed activation for ${t} is retiring.`}}),await f(e,t,i)},e=>c.get(e.name)===e&&u.get(e)?.cancelled!==!0)}async function Qe(e,t,n,r){let{dependencies:i,adapter:a,platformDefaults:o,fromDeferredActivation:s}=e,{loadedAdapters:c,adapterEntries:l,deferredActivations:u,retireAdapterEntry:d}=i;if(n.flight===void 0){let e=await d(t,a.name);return e!==void 0&&!_(e.report.evidence)}if(s&&r?.started){r.started=!1,r.retirementCompletion=n.flight.completion,r.cancellationCompletion=n.flight.cancellationCompletion;let t=await n.flight.completion;return r.cancelled||!_(t.evidence)?!0:(r.started=!0,r.cancellationCompletion=r.completion,await J({...e,fromDeferredActivation:!0}),!0)}return qe(u,n.flight,a,o,()=>c.get(a.name)===a,()=>l.has(t),(t,n)=>J({...e,adapter:t,platformDefaults:n,fromDeferredActivation:!0}),e=>console.error(`[AdapterRuntimeRegistry] Error activating deferred adapter "${a.name}":`,e)),!0}async function $e(e){let{dependencies:t,adapter:n,platformDefaults:r}=e,{deferredActivations:i,adapterEntries:a,resolveLoadedAdapterId:o,retireAdapterEntry:s}=t,c=i.get(n);if(c!==void 0){await c.completion;return}let l=o(n),u=await s(l,n.name);if(u!==void 0&&!_(u.report.evidence)){if(u.pendingCompletion!==void 0){let e=a.get(l);qe(i,(e?.state===`retiring`?e.flight:void 0)??{completion:u.pendingCompletion,cancellationCompletion:Promise.resolve()},n,r,()=>t.loadedAdapters.get(n.name)===n,()=>a.has(l),(e,n)=>J({dependencies:t,adapter:e,platformDefaults:n,fromDeferredActivation:!0}),e=>console.error(`[AdapterRuntimeRegistry] Error restarting deferred adapter "${n.name}":`,e))}return}await t.initializeAdapter(n,r)}async function et(e,t){try{await e.emit(o.deinitialized,t)}catch(e){console.warn(`[AdapterRuntimeRegistry] Failed to publish deinitialization for "${t.adapterName}":`,e)}}function tt(e,t,n=()=>void 0){let r=!1;return{async publishFallback(){r||await et(e,t)},dispose:e.on(o.deinitialized,e=>{let i=e.payload,a=i.adapterId===t.adapterId&&i.adapterName===t.adapterName&&i.machineId===t.machineId&&i.ownerInstanceId===t.ownerInstanceId;!r&&a&&(r=!0,n())})}}async function nt(e,t,n,r){let i=tt(e,t,r),a=!1;try{let e=await n();if(e.pendingCompletion!==void 0){a=!0;let t=e.pendingCompletion.then(async e=>(await i.publishFallback(),e)).finally(()=>i.dispose()).then(e=>e,()=>e.report);return{report:e.report,pendingCompletion:t}}return await i.publishFallback(),{report:e.report}}finally{a||i.dispose()}}function rt(e,t,n,r){return r?nt(e,t,n,()=>void 0):n()}var it=class{bus;machineId;resolveOwnerInstanceId;loadedAdapters=new Map;adapterEntries=new Map;deferredActivations=new Map;packageAdapters=new Map;publicationChain=Promise.resolve();constructor(e){this.bus=e.bus,this.machineId=e.machineId,this.resolveOwnerInstanceId=e.resolveOwnerInstanceId??(()=>{throw Error(`Adapter initialization requires a session ownership authority incarnation`)})}getLoadedAdapters(){return[...this.loadedAdapters.values()]}getAdapterInstances(){return new Map([...this.adapterEntries].flatMap(([e,t])=>t.state===`live`?[[e,t.instance]]:[]))}hasAdapterInstance(e){return this.adapterEntries.get(this.resolveLoadedAdapterId(e))?.state===`live`}resolveLoadedAdapterId(e){return ze(e,this.machineId)}resolveLiveAdapterId(e){let t=this.loadedAdapters.get(e);if(!t)return;let n=this.resolveLoadedAdapterId(t);return this.adapterEntries.get(n)?.state===`live`?n:void 0}resolveLiveAdapterIdentity(e){for(let t of this.loadedAdapters.values()){let n=this.adapterEntries.get(e);if(this.resolveLoadedAdapterId(t)===e&&n?.state===`live`)return{adapterId:e,adapterName:t.name,machineId:this.machineId,ownerInstanceId:n.ownerInstanceId}}}getLiveAdapterIdentities(){return[...this.adapterEntries.keys()].flatMap(e=>{let t=this.resolveLiveAdapterIdentity(e);return t===void 0?[]:[t]})}getSettingsAvailableAdapters(){return[...this.loadedAdapters.values()].map(Me)}registerAdapter(e,t){let n=this.loadedAdapters.get(e.name);if(n){let r=this.resolveLoadedAdapterId(n);if(n.packageName===t&&this.resolveLoadedAdapterId(e)===r&&this.adapterEntries.get(r)?.state===`retiring`){this.loadedAdapters.set(e.name,e);let n=this.packageAdapters.get(t)??[];n.includes(e.name)||this.packageAdapters.set(t,[...n,e.name]);return}throw Error(`Duplicate adapter name '${e.name}' from owners '${n.packageName}' and '${t}'.`)}this.loadedAdapters.set(e.name,e);let r=this.packageAdapters.get(t)??[];this.packageAdapters.set(t,[...r,e.name])}updateAdapterProviders(e,t){let n=this.loadedAdapters.get(e);if(!n)return;let r={...n,providers:t};return this.loadedAdapters.set(e,r),r}async removeProviderPackage(e,t){let n=[];for(let r of this.loadedAdapters.values()){if(r.packageName===e)continue;let i=r.providers.filter(t=>t.providerPackageName!==e);if(i.length===r.providers.length)continue;let a={...r,providers:i};this.loadedAdapters.set(r.name,a),n.push(a);let o=this.adapterEntries.get(this.resolveLoadedAdapterId(a));if(!(o===void 0&&Je(this.deferredActivations,a,t,()=>this.loadedAdapters.get(a.name)===a,(e,t)=>this.initializeAdapterInternal(e,t,!0),t=>console.error(`[AdapterRuntimeRegistry] Error activating deferred adapter "${a.name}" after provider package "${e}" stopped:`,t)))&&(o?.state===`live`||o?.flight!==void 0))try{await this.restartAdapterInstance(a,t)}catch(t){console.error(`[AdapterRuntimeRegistry] Error restarting adapter "${a.name}" after provider package "${e}" stopped:`,t)}}return n}async deregisterAdapter(e){let t=this.loadedAdapters.get(e);if(!t)return;let n=this.resolveLoadedAdapterId(t);if(await Xe(this.deferredActivations,t,()=>this.loadedAdapters.get(e)===t,()=>this.adapterEntries.get(n),()=>{this.loadedAdapters.delete(e),Ke(this.packageAdapters,t.packageName,e)}))return;let r=await this.retireAdapterEntry(n,t.name);r===void 0||_(r.report.evidence)?this.loadedAdapters.delete(e):r.pendingCompletion!==void 0&&r.pendingCompletion.then(r=>{_(r.evidence)&&Ge(this.loadedAdapters,this.adapterEntries,this.packageAdapters,e,t,n)})}removePackageTracking(e){this.packageAdapters.get(e)?.some(e=>{let t=this.loadedAdapters.get(e);return t!==void 0&&this.adapterEntries.get(this.resolveLoadedAdapterId(t))?.state===`retiring`})||this.packageAdapters.delete(e)}async deregisterPackage(e){let t=this.packageAdapters.get(e);if(!t?.length)return;let n=!1;for(let e of t)try{await this.deregisterAdapter(e);let t=this.loadedAdapters.get(e);t!==void 0&&this.adapterEntries.get(this.resolveLoadedAdapterId(t))?.state===`retiring`&&(n=!0)}catch(t){n=!0,console.error(`[AdapterRuntimeRegistry] Error shutting down adapter "${e}":`,t)}n||this.packageAdapters.delete(e)}publishAdapterRegistered(e){let{adapterName:t,displayName:n,packageName:r,enabled:i,adapterId:a,providerDefinitionIds:o}=e,s=this.adapterEntries.get(a)?.state===`live`,c=this.publicationChain.catch(()=>void 0).then(()=>this.bus.emit(k.adapter.registered,{adapterName:t,displayName:n??t,packageName:r,enabled:i,initialized:s,providerDefinitionIds:[...o]}));return this.publicationChain=c.catch(()=>void 0),c}async initializeAdapter(e,t){await this.initializeAdapterInternal(e,t,!1)}async initializeAdapterInternal(e,t,n){await J({dependencies:this.createAdmissionDependencies(),adapter:e,platformDefaults:t,fromDeferredActivation:n})}async restartAdapterInstance(e,t){await $e({dependencies:this.createAdmissionDependencies(),adapter:e,platformDefaults:t})}createAdmissionDependencies(){return{bus:this.bus,machineId:this.machineId,resolveOwnerInstanceId:this.resolveOwnerInstanceId,loadedAdapters:this.loadedAdapters,adapterEntries:this.adapterEntries,deferredActivations:this.deferredActivations,resolveLoadedAdapterId:e=>this.resolveLoadedAdapterId(e),retireAdapterEntry:(e,t,n)=>this.retireAdapterEntry(e,t,n),initializeAdapter:(e,t)=>this.initializeAdapter(e,t)}}async shutdownAll(){await Ze(this.deferredActivations);let e=G(await Promise.all([...this.adapterEntries.keys()].map(async e=>{let t=[...this.loadedAdapters.values()].find(t=>this.resolveLoadedAdapterId(t)===e)?.name;if(t===void 0)throw Error(`Managed adapter ${e} has no loaded definition`);let n=await this.retireAdapterEntry(e,t);return n===void 0?{adapterId:e,evidence:`released`}:n.report})));return this.loadedAdapters.clear(),this.packageAdapters.clear(),this.adapterEntries.clear(),e}async retireAdapterEntry(e,t,n=!0){let r=this.adapterEntries.get(e);if(r===void 0)return;if(r.state===`retiring`&&r.flight!==void 0)return{report:{adapterId:e,...r.report},pendingCompletion:r.flight.completion};let i=r.state===`retiring`?r.report:{evidence:`unknown`,detail:`Adapter retirement is in progress.`},{promise:a,resolve:o}=Promise.withResolvers(),{promise:s,resolve:c}=Promise.withResolvers(),l={completion:a,cancellationCompletion:s};this.adapterEntries.set(e,{state:`retiring`,instance:r.instance,ownerInstanceId:r.ownerInstanceId,report:i,flight:l});let u=await rt(this.bus,We(this.adapterEntries,this.machineId,e,t),()=>Ne(e,r.instance),r.state===`live`&&n);return c(),u.pendingCompletion===void 0?(q(this.adapterEntries,e,r.instance,l,u.report),o(u.report),u):(this.adapterEntries.set(e,{state:`retiring`,instance:r.instance,ownerInstanceId:r.ownerInstanceId,report:u.report,flight:l}),u.pendingCompletion.then(t=>{q(this.adapterEntries,e,r.instance,l,t),o(t)},()=>{q(this.adapterEntries,e,r.instance,l,u.report),o(u.report)}),{report:u.report,pendingCompletion:l.completion})}};function at(e,t,n,r){let i=n.isDefault??!1;return r?i?!0:![...e.entries()].some(([e,r])=>e!==t&&r.definitionId===n.definitionId&&(r.enabled??!0)&&(r.isDefault??!1)):!1}var ot=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async createProviderConfig(e){let t=await this.getProviderDefinitionOrThrow(e.definitionId),n=b.parse(e.auth),r=e.enabled??!0,i=await I(this.bus,e.definitionId,n,t);r&&P(i);let a=this.resolveProviderConfigNameFromDefinition(e.definitionId,t.name,e.name),o=C(a),s=ue(e.endpointOverrides),c=de(e.modelVisibility),l=await this.configStore.commitSnapshotMutation(t=>{if(this.configStore.assertProviderConfigNameUnique(a),t.providerConfigs.has(o))throw Error(`Provider config already exists: ${o}`);t.providerConfigs.set(o,{$schema:S,definitionId:e.definitionId,name:a,auth:structuredClone(n),...e.managedBy?{managedBy:{...e.managedBy}}:{},endpointOverrides:s,modelVisibility:c,modelFilterMode:e.modelFilterMode??`show-all`,isDefault:r&&![...t.providerConfigs.values()].some(t=>t.definitionId===e.definitionId&&(t.enabled??!0)&&(t.isDefault??!1)),enabled:r})},()=>this.configStore.requireProviderConfig(o,`creation`));return await this.bus.emit(k.providerConfig.created,l),{config:l}}async updateProviderConfig(e,t){let n,r=await this.configStore.commitSnapshotMutation(async r=>{n=await this.applyProviderConfigPatch(r,e,t)},()=>this.configStore.requireProviderConfig(e,`update`));return await this.bus.emit(k.providerConfig.updated,r),n&&await this.bus.emit(k.providerConfig.defaultChanged,n),{config:r}}async applyProviderConfigPatch(e,t,n){let r=e.providerConfigs.get(t);if(!r)throw Error(`Provider config not found: ${t}`);let i=n.name??r.name??r.definitionId;n.name!==void 0&&this.configStore.assertProviderConfigNameUnique(i,t);let a=n.enabled??r.enabled??!0;a&&!(r.enabled??!0)&&P(await I(this.bus,r.definitionId,r.auth));let o=at(e.providerConfigs,t,r,a);return e.providerConfigs.set(t,{...r,name:i,endpointOverrides:n.endpointOverrides===null?void 0:n.endpointOverrides===void 0?r.endpointOverrides:ue(n.endpointOverrides),modelVisibility:n.modelVisibility===void 0?r.modelVisibility:de(n.modelVisibility),enabled:a,isDefault:o}),(r.isDefault??!1)&&!o?{definitionId:r.definitionId,configId:this.configStore.promoteProviderConfigDefault(r.definitionId,t,e.providerConfigs)}:!(r.isDefault??!1)&&o?{definitionId:r.definitionId,configId:t}:void 0}async setProviderConfigAuth(e,t){let n=b.parse(t),r=await this.configStore.commitSnapshotMutation(async t=>{let r=t.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);let i=await I(this.bus,r.definitionId,n);(r.enabled??!0)&&P(i),t.providerConfigs.set(e,{...r,auth:structuredClone(n)})},()=>this.configStore.requireProviderConfig(e,`auth update`));return await this.bus.emit(k.providerConfig.updated,r),{config:r}}async deleteProviderConfig(e){let t=!1,n,r=``,i=!1,a=null,o={changedAdapters:new Map,deletedBindings:[],defaultChangedBindings:[]},s=await this.configStore.commitSnapshotMutation(s=>{let c=s.providerConfigs.get(e);if(c){if(c.managedBy){(c.enabled??!0)&&(i=c.isDefault??!1,r=c.definitionId,s.providerConfigs.set(e,{...c,enabled:!1,isDefault:!1}),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null,n=e);return}o=this.configStore.removeBindingsForConfig(e,s.adapters,s.providerConfigs),i=c.isDefault??!1,r=c.definitionId,t=!0,s.providerConfigs.delete(e),a=i?this.configStore.promoteProviderConfigDefault(c.definitionId,e,s.providerConfigs):null;for(let[e,t]of o.changedAdapters)s.adapters.set(e,t)}},()=>n?this.configStore.requireProviderConfig(e,`managed config disable`):null);if(!t)return n?(await this.bus.emit(k.providerConfig.updated,s),i&&await this.bus.emit(k.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!1}):{deleted:!1};await this.cleanupDeletedProviderCredentials(e);for(let e of o.deletedBindings)await this.bus.emit(k.binding.deleted,e);for(let e of o.defaultChangedBindings)await this.bus.emit(k.binding.defaultChanged,e);return await this.bus.emit(k.providerConfig.deleted,{id:e}),i&&await this.bus.emit(k.providerConfig.defaultChanged,{definitionId:r,configId:a}),{deleted:!0}}async setDefaultProviderConfig(e){let t=``,n=await this.configStore.commitSnapshotMutation(n=>{let r=n.providerConfigs.get(e);if(!r)throw Error(`Provider config not found: ${e}`);if(!(r.enabled??!0))throw Error(`Disabled provider config cannot be default: ${e}`);t=r.definitionId;for(let[r,i]of n.providerConfigs)i.definitionId===t&&n.providerConfigs.set(r,{...i,isDefault:r===e})},()=>this.configStore.requireProviderConfig(e,`setDefault`));return await this.bus.emit(k.providerConfig.updated,n),await this.bus.emit(k.providerConfig.defaultChanged,{definitionId:t,configId:e}),{config:n}}async setModelFilterMode(e,t,n){let r=await this.configStore.commitSnapshotMutation(async r=>{let i=r.providerConfigs.get(e);if(!i)throw Error(`Provider config not found: ${e}`);let a=i.modelVisibility;if(t===`allowlist`){let e=await this.selectAllowlistKeeper(i.definitionId,i,n);e&&(a={...i.modelVisibility??{},[e]:`visible`})}r.providerConfigs.set(e,{...i,modelFilterMode:t,modelVisibility:a})},()=>this.configStore.requireProviderConfig(e,`setModelFilterMode`));return await this.bus.emit(k.providerConfig.updated,r),{config:r}}async cleanupDeletedProviderCredentials(e){try{await this.bus.requestOptional(l.delete,{configId:e})}catch(t){console.warn(`[AdapterProviderConfigService] Failed to delete credentials for removed provider config "${e}":`,t)}}async resolveProviderConfigName(e,t){let n=await this.getProviderDefinitionOrThrow(e);return this.resolveProviderConfigNameFromDefinition(e,n.name,t)}resolveProviderConfigNameFromDefinition(e,t,n){let r=ie({requestedName:n,providerName:t,definitionId:e});if(r)return r;throw Error(`Unable to derive a canonical provider config name for definition: ${e}`)}async getProviderDefinitionOrThrow(e){let{provider:t}=await this.bus.request(E.get,{id:e});if(!t)throw Error(`Provider definition not found: ${e}`);return t}async selectAllowlistKeeper(e,t,n){let{provider:r}=await this.bus.request(E.get,{id:e}),i=[n,...r?.availableModels?.map(e=>e.name)??[],...Object.keys(t.modelVisibility??{})].filter(e=>typeof e==`string`&&e.length>0);for(let e of i){let n=ae(e,`allowlist`,t.modelVisibility);if(n===`enabled`||n===`visible`)return}return i[0]}},st=class{configStore;bus;constructor(e){this.configStore=e.configStore,this.bus=e.bus}async bind(e,t){let n,r=!1;if(await this.configStore.commitSnapshotMutation(i=>{let a=i.providerConfigs.get(t);if(!a)throw Error(`Provider config not found: ${t}`);let o=i.adapters.get(e);if(!o)throw Error(`Adapter config not found: ${e}`);let s=j(e,o.bindings),c=s.find(e=>e.providerConfigId===t);if(c){n={...c};return}r=!0,n={adapterName:e,providerConfigId:t,isDefault:(a.enabled??!0)&&!Se(s,i.providerConfigs)};let l=[...s,n];i.adapters.set(e,{...o,bindings:l.map(({adapterName:e,...t})=>t)})}),!n)throw Error(`Binding could not be loaded after bind: ${e}/${t}`);return r&&await this.bus.emit(k.binding.created,n),n}async unbind(e,t){let n,r=!1;await this.configStore.commitSnapshotMutation(i=>{let a=i.adapters.get(e);if(!a)return;let o=j(e,a.bindings),s=o.findIndex(e=>e.providerConfigId===t);if(s===-1)return;let[c]=o.splice(s,1);if(r=!0,c?.isDefault&&o.length>0){let e=N(o,i.providerConfigs);n=e.promoted,o.splice(0,o.length,...e.bindings)}i.adapters.set(e,{...a,bindings:o.map(({adapterName:e,...t})=>t)})}),r&&(await this.bus.emit(k.binding.deleted,{adapterName:e,providerConfigId:t}),n&&await this.bus.emit(k.binding.defaultChanged,{adapterName:e,providerConfigId:n.providerConfigId}))}async setDefaultBinding(e,t){let n=!1;await this.configStore.commitSnapshotMutation(r=>{let i=r.adapters.get(e);if(!i)throw Error(`Adapter config not found: ${e}`);let a=j(e,i.bindings),o=a.find(e=>e.providerConfigId===t);if(!o)throw Error(`Binding not found for adapter ${e} and provider config ${t}`);if(!M(r.providerConfigs,o.providerConfigId))throw Error(`Disabled provider config cannot be default binding: ${t}`);o.isDefault||(n=!0,r.adapters.set(e,{...i,bindings:a.map(({adapterName:e,...n})=>({...n,isDefault:n.providerConfigId===t}))}))}),n&&await this.bus.emit(k.binding.defaultChanged,{adapterName:e,providerConfigId:t})}};function Y(e){return!!e.adapters?.length||!!e.providers?.length}function ct(e){return e.map(e=>{if(!Y(e))return e;let t=e.dependencies??[];return t.some(e=>e.name===O)?e:{...e,dependencies:[...t,m(O)]}})}function lt(e){return{filter:Y,async processActivated(t,n,r){let i=e.getAdapterSubsystemService();if(!i)throw Error(`AdapterSubsystemService is not available. Ensure the adapter subsystem package starts before adapter-contributing packages.`);await i.processAdapterContributions(t,n,r)},async processStopped(t){let n=e.getAdapterSubsystemService();n&&await n.stopAdapterContributions(t)}}}function ut(e){return e.map(e=>({...e}))}function dt(e){if(e instanceof ce)return!0;if(typeof e!=`object`||!e)return!1;let t=e;return t.name===`ModelRegistryProviderNotFoundError`&&typeof t.providerId==`string`||e instanceof Error&&/^Request to "getProviderModels" failed: Provider ".+" is not present in the model registry$/.test(e.message)||e instanceof Error&&/^Provider ".+" is not present in the model registry$/.test(e.message)?!0:dt(t.cause)}async function ft(e,t,n,r={}){let i=r.providerDefinitionCache;if(!i){i=new Map;let t=await e.request(y.contributions.catalog,{});for(let e of t.providers)i.set(e.definition.id,e)}let a=[],o=[];for(let e of t){let t=i.get(e.definitionId);if(!t){o.push(e.definitionId);continue}a.push({definition:t.definition,providerPackageName:t.packageName,...e.protocol!==void 0&&{protocol:e.protocol},configSchema:e.configSchema??r.adapterConfigSchema,...e.auth!==void 0&&{auth:pt(e.auth,t.definition,r.clientDefinitions??[],n)}})}return o.length>0&&console.warn(`[AdapterContributionProcessor] Adapter "${n}" declares providers [${o.join(`, `)}] but no active extension registers them. These providers will be unavailable until their extensions are loaded.`),a}function pt(e,t,n,r){let i=a.parse(e),o=new Set(i.scrubEnvVars);ht(t.authMethods??[],o);for(let e of n)ht(e.authMethods,o);for(let e of i.bindings)p(e,mt(e.method,t,n,r));return a.parse({bindings:i.bindings,scrubEnvVars:[...o]})}function mt(e,t,n,r){if(e.owner===`provider`){if(e.providerDefinitionId!==t.id)throw Error(`Adapter "${r}" binds provider method "${e.methodId}" to definition "${e.providerDefinitionId}" while serving "${t.id}".`);let n=(t.authMethods??[]).find(({id:t})=>t===e.methodId);if(n===void 0)throw Error(`Adapter "${r}" binds undeclared provider auth method "${t.id}/${e.methodId}".`);return n}let i=n.find(({id:t})=>t===e.clientId);if(i===void 0)throw Error(`Adapter "${r}" binds authentication method "${e.clientId}/${e.methodId}" without declaring that client.`);let a=i.authMethods.find(({id:t})=>t===e.methodId);if(a===void 0)throw Error(`Adapter "${r}" binds undeclared client auth method "${e.clientId}/${e.methodId}".`);return a}function ht(e,t){for(let n of e)if(n.mode===`explicit`)for(let e of n.fields)for(let n of e.sourceHints)t.add(n.variable)}async function gt(e,t,n,r){return Promise.all(n.map(async n=>{let i=n.definition.id;try{let t=r.get(i);if(t===void 0){let a=await e.requestOptional(le.getProviderModels,{providerId:i});t=a.handled?a.data.models:n.definition.availableModels??[],r.set(i,t)}return{...n,definition:{...n.definition,availableModels:ut(t)}}}catch(e){return dt(e)||console.warn(`[AdapterContributionProcessor] Failed to populate available models for provider "${i}" on adapter "${t}". Falling back to declared provider models.`,e),{...n,definition:{...n.definition,availableModels:ut(n.definition.availableModels??[])}}}}))}async function _t(e,t,n,r){let i=await ft(t,e.providerRefs,e.name,{...e.providerConfigSchema!==void 0&&{adapterConfigSchema:e.providerConfigSchema},...e.clientDefinitions!==void 0&&{clientDefinitions:e.clientDefinitions},...r!==void 0&&{providerDefinitionCache:r}});return gt(t,e.name,i,n)}function vt(e){let t=new Set;for(let n of e){if(typeof n==`string`){(n===`anthropic`||n===`openai`)&&t.add(n);continue}n.anthropic!==void 0&&t.add(`anthropic`),n.openai!==void 0&&t.add(`openai`)}return[...t]}function yt(e,t,n){let r=vt(n);if(t!==void 0){if(!r.includes(t))throw Error(`Adapter "${e}" definition protocol "${t}" must be declared in manifest.protocols [${r.join(`, `)}].`);return t}return r.length===1?r[0]:void 0}var bt=class{configStore;registry;coordinator;machineId;platformDefaults;prepareAuthRuntime;constructor(e){this.configStore=e.configStore,this.registry=e.registry,this.coordinator=e.coordinator,this.machineId=e.machineId,this.platformDefaults=e.platformDefaults,this.prepareAuthRuntime=e.prepareAuthRuntime}register(e){let t={filter:Y,processActivated:async(e,t,n)=>{await this.onPackageActivated(e,t,n)},processStopped:async e=>{await this.onPackageStopped(e)}};e(this.coordinator.registerContributionProcessor(t))}async onPackageActivated(e,t,n){let r=t.adapters??[],i=[],a=[],o=new Map,s=await n.bus.request(y.contributions.catalog,{}),c=new Map;for(let e of s.providers)c.set(e.definition.id,e);for(let n of t.providers??[])c.set(n.id,{packageName:e,definition:n});let l=s.clients,u=this.coordinator.getLoadedProviderDefinitionIds();try{for(let t of r){let r=await this.activateAdapterContribution(e,t,n.bus,o,c,l,u);i.push(t.definition.name),a.push(r)}}catch(t){let n=!1;for(let e of i.reverse())try{await this.registry.deregisterAdapter(e)}catch(t){n=!0,console.error(`[AdapterContributionProcessor] Rollback error for adapter "${e}":`,t)}throw n||this.registry.removePackageTracking(e),t}await this.publishActivatedAdapters(a);let d=await this.initializeAdaptersWaitingForProviders(n.bus,o,c,u);await this.publishActivatedAdapters(d)}async processAdapterContribution(e,t,n=i){let r=this.coordinator.getLoadedProviderDefinitionIds(),a=await this.activateAdapterContribution(e,t,n,new Map,void 0,void 0,r);await this.publishActivatedAdapters([a])}async activateAdapterContribution(e,t,n,r,i,a,o){let s=await this.buildLoadedAdapter(e,t,n,r,i,a),c=!1;try{await this.ensureAdapterConfig(s);let t=this.configStore.isAdapterEnabled(s.name);t&&await this.validateEnabledAdapterClientRefs(s,n,a),this.registry.registerAdapter(s,e),c=!0,t&&(this.getMissingProviderDefinitionIds(s,o).length>0?console.info(`[AdapterContributionProcessor] Deferring adapter "${s.name}" initialization until declared providers are active.`):(await this.registry.initializeAdapter(s,this.platformDefaults),console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName})`)))}catch(e){if(c)try{await this.registry.deregisterAdapter(s.name)}catch(e){console.error(`[AdapterContributionProcessor] Rollback error for adapter "${s.name}":`,e)}throw e}return s}async initializeAdaptersWaitingForProviders(e,t,n,r){let i=[];for(let a of this.registry.getLoadedAdapters()){let o;try{if(!this.configStore.isAdapterEnabled(a.name))continue;let s=a;if(this.getMissingProviderDefinitionIds(a,r).length>0){let i=await _t(a,e,t,n),c=this.registry.updateAdapterProviders(a.name,i);if(!c||this.getMissingProviderDefinitionIds(c,r).length>0)continue;s=c,o=c}if(this.registry.hasAdapterInstance(s)){if(s===a)continue;await this.registry.restartAdapterInstance(s,this.platformDefaults)}else await this.registry.initializeAdapter(s,this.platformDefaults);console.info(`[AdapterContributionProcessor] Initialized adapter: ${s.name} (${s.packageName}) after provider activation`),i.push(s)}catch(e){console.error(`[AdapterContributionProcessor] Deferred initialization failed for adapter "${a.name}".`,e),o&&i.push(o)}}return i}getMissingProviderDefinitionIds(e,t){let n=new Set(e.providers.map(e=>e.definition.id));return e.providerDefinitionIds.filter(e=>!n.has(e)&&t.has(e))}async validateEnabledAdapterClientRefs(e,t,n){if(e.clients===void 0||e.clients.length===0)return;let r=n??(await t.request(y.contributions.catalog,{})).clients;await H(e.name,e.clients,r,t)}async buildLoadedAdapter(e,t,n=i,r=new Map,a,o){let s=t.definition,c=t.manifest,l=s.name,u=o??(await n.request(y.contributions.catalog,{})).clients;await H(l,c.clients,u,n,{checkBinaryVersions:!1});let d=ke(c.clients,u),f=await gt(n,l,await ft(n,s.providers,l,{...s.providerConfigSchema!==void 0&&{adapterConfigSchema:s.providerConfigSchema},...d!==void 0&&{clientDefinitions:d},...a!==void 0&&{providerDefinitionCache:a}}),r);return{name:l,displayName:s.displayName??c.displayName,description:s.description,packageName:e,factory:s.createAdapter,options:{adapterId:w(this.machineId,l),...this.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:this.prepareAuthRuntime}},adapterConfigSchema:s.adapterConfigSchema,providerDefinitionIds:s.providers.map(e=>e.definitionId),providerRefs:[...s.providers],providers:f,providerConfigSchema:s.providerConfigSchema,helpLinks:s.helpLinks,instructions:s.instructions,defaultPresetId:s.defaultPresetId,clients:Oe(c.clients),...d!==void 0&&{clientDefinitions:d},protocol:yt(l,s.protocol,c.protocols)}}async ensureAdapterConfig(e){this.configStore.getAdapterConfig(e.name)||await this.configStore.setAdapterConfig(e.name,{displayName:e.displayName,description:e.description,helpLinks:e.helpLinks?.map(e=>({...e})),instructions:e.instructions,clientId:V(e.options,e.clients),protocol:e.protocol,providerDefinitionIds:[...e.providerDefinitionIds],enabled:!1})}async onPackageStopped(e){await this.registry.deregisterPackage(e);let t=await this.registry.removeProviderPackage(e,this.platformDefaults);await this.publishActivatedAdapters(t)}publishAdapterRegistered(e){let t=this.configStore.isAdapterEnabled(e.name),n=this.registry.resolveLoadedAdapterId(e);return this.registry.publishAdapterRegistered({adapterName:e.name,displayName:e.displayName,packageName:e.packageName,enabled:t,adapterId:n,providerDefinitionIds:e.providerDefinitionIds})}async publishActivatedAdapters(e){for(let t of e)try{await this.publishAdapterRegistered(t)}catch(e){console.error(`[AdapterContributionProcessor] Failed to publish adapter "${t.name}" registration:`,e)}}};async function xt(e,t,n){let r=new Map,i=new Map;for(let a of[...t].sort((e,t)=>e.name.localeCompare(t.name)))for(let t of a.providers.filter(({definition:e})=>e.id===n))for(let o of t.auth?.bindings??[]){let s=await Ct(e,a,t,o.method,i);te(o,s);let c=Dt(n,o.method),l=Tt(n,o.method,s),u=r.get(c);if(u){if(!St(u.option,l))throw Error(`Authentication method ${c} has conflicting definitions across compatible adapters "${[...u.adapterNames].join(`, `)}" and "${a.name}".`);u.adapterNames.add(a.name);continue}r.set(c,{option:l,adapterNames:new Set([a.name])})}return[...r.entries()].sort(([e],[t])=>e.localeCompare(t)).map(([,{option:e,adapterNames:t}])=>Et(e,[...t].sort((e,t)=>e.localeCompare(t))))}function St(t,n){return e(t,n)}async function Ct(e,t,n,r,i){if(r.owner===`provider`){if(r.providerDefinitionId!==n.definition.id)throw Error(`Adapter "${t.name}" binds provider method "${r.methodId}" to the wrong definition ("${r.providerDefinitionId}" instead of "${n.definition.id}").`);let e=(n.definition.authMethods??[]).find(({id:e})=>e===r.methodId);if(!e)throw Error(`Adapter "${t.name}" binds undeclared provider auth method "${n.definition.id}/${r.methodId}".`);return e}if(!(t.clients??[]).some(({id:e})=>e===r.clientId))throw Error(`Adapter "${t.name}" binds auth method "${r.clientId}/${r.methodId}" without declaring that client.`);let a=i.get(r.clientId);a||(a=wt(e,r.clientId),i.set(r.clientId,a));let o=(await a).authMethods.find(({id:e})=>e===r.methodId);if(!o)throw Error(`Adapter "${t.name}" binds undeclared client auth method "${r.clientId}/${r.methodId}".`);return o}async function wt(e,t){let{client:n}=await e.request(T.get,{id:t});if(!n)throw Error(`Authentication binding references missing client definition "${t}".`);return n}function Tt(e,t,n){let r={definitionId:e,method:{...t},label:n.label,...n.description?{description:n.description}:{}};switch(n.mode){case`explicit`:return{...r,mode:`explicit`,fields:n.fields.map(e=>({...e,sourceHints:e.sourceHints.map(e=>({...e}))})),portability:`portable`};case`inferred`:if(t.owner!==`client`)throw Error(`Inferred auth method "${n.id}" must be client-owned.`);return{...r,method:{...t},mode:`inferred`,fields:[],portability:`local-only`};case`none`:return{...r,mode:`none`,fields:[],portability:`portable`}}}function Et(e,t){switch(e.mode){case`explicit`:return{...e,compatibleAdapterNames:t};case`inferred`:return{...e,compatibleAdapterNames:t};case`none`:return{...e,compatibleAdapterNames:t}}}function Dt(e,t){return JSON.stringify(t.owner===`provider`?[e,t.owner,t.providerDefinitionId,t.methodId]:[e,t.owner,t.clientId,t.methodId])}function Ot(e,t,n=-100){let r=e.on(E.get,async n=>{let r=(await X(e,t())).get(n.payload.id)??null;n.setResult({provider:r})},{priority:n}),i=e.on(E.list,async n=>{n.setResult({providers:[...(await X(e,t())).values()]})},{priority:n}),a=e.on(E.listByProtocol,async n=>{let r=[...(await X(e,t())).values()].filter(e=>e.endpoints!==void 0&&n.payload.protocol in e.endpoints);n.setResult({providers:r})},{priority:n});return()=>{r(),i(),a()}}async function X(e,t){let n=new Map,r=new Set;for(let e of t){for(let t of e.providerDefinitionIds)r.add(t);for(let t of e.providers)kt(n,t.providerPackageName,t.definition)}let i=[...r].filter(e=>!n.has(e));if(i.length>0){let t=await e.request(y.contributions.catalog,{});for(let e of t.providers)i.includes(e.definition.id)&&kt(n,e.packageName,e.definition)}return n}function kt(e,t,n){let r=u.parse(n);e.has(r.id)||e.set(r.id,{id:r.id,packageName:t,name:r.name,...r.description===void 0?{}:{description:r.description},...r.endpoints===void 0?{}:{endpoints:r.endpoints},...r.defaultModel===void 0?{}:{defaultModel:r.defaultModel},...r.fastModel===void 0?{}:{fastModel:r.fastModel},availableModels:r.availableModels,defaultModelFilterMode:r.defaultModelFilterMode??`show-all`,authMethods:r.authMethods,...r.capabilities===void 0?{}:{capabilities:r.capabilities},enabled:!0,createdAt:0,updatedAt:0})}function At(e,t,n=-100){let r=e.on(T.get,async n=>{let r=(await Z(e,t())).get(n.payload.id)??null;n.setResult({client:r})},{priority:n}),i=e.on(T.list,async n=>{n.setResult({clients:[...(await Z(e,t())).values()]})},{priority:n}),a=e.on(T.listByBinaryName,async n=>{let r=[...(await Z(e,t())).values()].filter(e=>e.binary?.name===n.payload.binaryName);n.setResult({clients:r})},{priority:n});return()=>{r(),i(),a()}}async function Z(e,t){let n=new Set(t.flatMap(e=>e.clients?.map(({id:e})=>e)??[]));if(n.size===0)return new Map;let r=await e.request(y.contributions.catalog,{}),i=new Map;for(let e of r.clients){if(!n.has(e.definition.id))continue;let t=c.parse(e.definition);i.set(t.id,jt(e.packageName,t))}return i}function jt(e,t){return{id:t.id,packageName:e,name:t.name,...t.description===void 0?{}:{description:t.description},...t.binary===void 0?{}:{binary:structuredClone(t.binary)},nativeTools:structuredClone(t.nativeTools),defaultApprovalPolicy:t.defaultApprovalPolicy,...t.logSources===void 0?{}:{logSources:structuredClone(t.logSources)},authMethods:structuredClone(t.authMethods),...t.defaultAuth===void 0?{}:{defaultAuth:{...t.defaultAuth}},enabled:!0,createdAt:0,updatedAt:0}}function Mt(e,t){let n=e.providerRefs.filter(e=>e.definitionId===t),r=e.providers.filter(e=>e.definition.id===t),i=n[0],a=r[0];return n.length===1&&r.length===1&&i!==void 0&&a!==void 0?{ref:i,provider:a}:null}function Nt(e,t){return t===void 0||e.clients?.some(e=>e.id===t)===!0}function Pt(e,t){return e?.bindings.some(e=>Lt(e.method,t))===!0}function Ft(e,t,n,r){return e.trim().length>0&&t.trim().length>0&&(n===void 0||(r?.trim().length??0)>0)}async function It(e){if(e.snapshot===null)return{status:`error`,code:`provider-config-not-found`};if(e.adapter===void 0)return{status:`error`,code:`adapter-not-loaded`};if(!e.isBound)return{status:`error`,code:`adapter-not-bound`};let t=e.snapshot.context.definitionId,n=Mt(e.adapter,t);if(n===null)return{status:`error`,code:`provider-incompatible`};let{provider:r}=n,i=r.auth,a=e.snapshot.context.auth.method;if(!Pt(i,a))return{status:`error`,code:`auth-binding-missing`};let o=a.owner===`client`?a.clientId:V(e.adapter.options,e.adapter.clients);if(!Nt(e.adapter,o))return{status:`error`,code:`client-incompatible`};let s=await e.bus.request(y.contributions.catalog,{}),c=o===void 0?[]:s.clients.filter(e=>e.definition.id===o);if(o!==void 0&&c.length!==1)return{status:`error`,code:`client-incompatible`};let l=c[0]?.packageName;if(!Ft(e.adapter.packageName,r.providerPackageName,o,l))return{status:`error`,code:`runtime-package-metadata-missing`};let u=e.adapter.providers.flatMap(e=>e.definition.id!==t&&e.auth!==void 0?[e.auth]:[]),d=o!==void 0&&l!==void 0?{packageName:l,clientId:o}:void 0;return{status:`resolved`,runtime:{snapshot:e.snapshot,adapterName:e.adapter.name,...o!==void 0&&{adapterClientId:o},...r.protocol!==void 0&&{providerProtocol:r.protocol},adapterProviderAuth:i,compatibleProviderAuths:u,runtimePackages:{adapter:{packageName:e.adapter.packageName},provider:{packageName:r.providerPackageName,definitionId:t},...d!==void 0&&{client:d}}}}}function Lt(e,t){return e.owner!==t.owner||e.methodId!==t.methodId?!1:e.owner===`provider`?t.owner===`provider`&&e.providerDefinitionId===t.providerDefinitionId:t.owner===`client`&&e.clientId===t.clientId}var Rt=class extends ee{configStore;registry;providerConfigService;bindingService;contributionProcessor;runtimeSnapshotHandlerPriority;runtimeDefinitionHandlerPriority;resolveOwnerInstanceId;constructor(e){super(e.bus),this.configStore=new De({configRepository:e.configRepository,bus:e.bus}),this.registry=new it({bus:e.bus,machineId:e.machineId,...e.resolveOwnerInstanceId!==void 0&&{resolveOwnerInstanceId:e.resolveOwnerInstanceId}}),this.providerConfigService=new ot({configStore:this.configStore,bus:e.bus}),this.bindingService=new st({configStore:this.configStore,bus:e.bus}),this.contributionProcessor=new bt({configStore:this.configStore,registry:this.registry,coordinator:e.coordinator,machineId:e.machineId,platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime}}),this.runtimeSnapshotHandlerPriority=e.runtimeSnapshotHandlerPriority??0,this.runtimeDefinitionHandlerPriority=e.runtimeDefinitionHandlerPriority??-100,this.resolveOwnerInstanceId=e.resolveOwnerInstanceId}async onInit(){await this.configStore.loadSnapshot(),this.configStore.registerListeners(e=>this.addCleanup(e)),this.registerBusHandlers(),await this.bus.emit(k.ready,{})}registerBusHandlers(){this.addCleanup(Ot(this.bus,()=>this.registry.getLoadedAdapters(),this.runtimeDefinitionHandlerPriority)),this.addCleanup(At(this.bus,()=>this.registry.getLoadedAdapters(),this.runtimeDefinitionHandlerPriority)),this.registerReadHandlers(),this.registerMutationHandlers()}registerReadHandlers(){this.registerConfigReadHandlers(),this.registerRuntimeReadHandlers()}registerConfigReadHandlers(){this.registerHandler(k.getAdapterConfig,e=>{e.setResult({config:this.configStore.getAdapterConfig(e.payload.name)})}),this.registerHandler(k.listAdapterConfigs,e=>{e.setResult({configs:this.configStore.listAdapterConfigs()})}),this.registerHandler(k.getProviderConfig,e=>{e.setResult({config:this.configStore.getProviderConfig(e.payload.id)})}),this.registerHandler(k.listProviderConfigs,e=>{e.setResult({configs:this.configStore.listProviderConfigs(e.payload.enabled)})}),this.registerHandler(k.listProviderConfigsByDefinition,e=>{e.setResult({configs:this.configStore.listProviderConfigsByDefinition(e.payload.definitionId)})}),this.registerHandler(k.listBindings,e=>{e.setResult({bindings:this.configStore.listBindings(e.payload.adapterName)})}),this.registerHandler(k.listBindingsByConfig,e=>{e.setResult({bindings:this.configStore.listBindingsByConfig(e.payload.providerConfigId)})}),this.registerHandler(k.getDefaultBinding,e=>{e.setResult({binding:this.configStore.getDefaultBinding(e.payload.adapterName)})}),this.registerHandler(k.findConfigForDefinitionAndAdapter,e=>{e.setResult({config:this.configStore.findConfigForDefinitionAndAdapter(e.payload.definitionId,e.payload.adapterName)})})}registerRuntimeReadHandlers(){this.registerHandler(k.resolveProviderRuntimeSnapshot,async e=>{e.setResult({snapshot:await this.configStore.resolveProviderRuntimeSnapshot(e.payload.providerConfigId)})},{priority:this.runtimeSnapshotHandlerPriority}),this.registerHandler(k.resolveAdapterRuntimeSnapshot,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName);try{let n=await this.configStore.resolveBoundProviderRuntimeSnapshot(e.payload.adapterName,e.payload.providerConfigId);e.setResult(await It({bus:this.bus,adapter:t,snapshot:n.snapshot,isBound:n.isBound}))}catch(t){if(t instanceof L&&t.code===`provider-config-disabled`){e.setResult({status:`error`,code:`provider-config-disabled`});return}throw t}},{priority:this.runtimeSnapshotHandlerPriority}),this.registerHandler(k.listAdapters,async e=>{e.setResult({adapters:await this.configStore.buildEffectiveAdapters()})}),this.registerHandler(k.getProviderDefinitionsByAdapter,async e=>{let t=this.registry.getLoadedAdapters().find(t=>t.name===e.payload.adapterName),n=new Map((t?.providers??[]).map(e=>[e.definition.id,e.definition])),r=(t?.providerDefinitionIds??[]).filter(e=>!n.has(e));if(r.length>0){let e=await this.bus.request(y.contributions.catalog,{});for(let t of e.providers)r.includes(t.definition.id)&&n.set(t.definition.id,t.definition)}let i=(t?.providerDefinitionIds??[]).flatMap(e=>{let t=n.get(e);return t===void 0?[]:[u.parse(t)]});e.setResult({definitions:i})}),this.registerHandler(k.listCompatibleAuthOptions,async e=>{e.setResult({options:await xt(this.bus,this.registry.getLoadedAdapters(),e.payload.definitionId)})}),this.registerHandler(k.ensureReady,e=>{e.setResult({ready:!0})})}registerMutationHandlers(){this.registerHandler(k.createProviderConfig,async e=>{e.setResult(await this.providerConfigService.createProviderConfig(e.payload))}),this.registerHandler(k.updateProviderConfig,async e=>{e.setResult(await this.providerConfigService.updateProviderConfig(e.payload.id,e.payload.patch))}),this.registerHandler(k.setProviderConfigAuth,async e=>{e.setResult(await this.providerConfigService.setProviderConfigAuth(e.payload.id,e.payload.auth))}),this.registerHandler(k.deleteProviderConfig,async e=>{e.setResult(await this.providerConfigService.deleteProviderConfig(e.payload.id))}),this.registerHandler(k.setDefaultProviderConfig,async e=>{e.setResult(await this.providerConfigService.setDefaultProviderConfig(e.payload.id))}),this.registerHandler(k.setModelFilterMode,async e=>{e.setResult(await this.providerConfigService.setModelFilterMode(e.payload.id,e.payload.modelFilterMode,e.payload.preferredModel))}),this.registerHandler(k.setAdapterConfig,async e=>{e.setResult(await this.configStore.setAdapterConfig(e.payload.name,e.payload.patch))}),this.registerHandler(k.setAdapterEnabled,async e=>{await this.configStore.setAdapterEnabled(e.payload.name,e.payload.enabled),e.setResult({success:!0})}),this.registerHandler(k.bind,async e=>{e.setResult({binding:await this.bindingService.bind(e.payload.adapterName,e.payload.providerConfigId)})}),this.registerHandler(k.unbind,async e=>{await this.bindingService.unbind(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})}),this.registerHandler(k.setDefaultBinding,async e=>{await this.bindingService.setDefaultBinding(e.payload.adapterName,e.payload.providerConfigId),e.setResult({})})}async onDestroy(){let e=await this.registry.shutdownAll();await this.bus.emit(oe.teardownCompleted,{ownerInstanceId:this.resolveOwnerInstanceId?.()??null,evidence:e.evidence,...e.detail!==void 0&&{detail:e.detail}}),_(e.evidence)||console.warn(`[AdapterSubsystemService] Adapter instance shutdown reported "${e.evidence}": ${e.detail??`no detail reported.`}`),this.configStore.clear()}getLoadedAdapters(){return this.registry.getLoadedAdapters()}getAdapterInstances(){return this.registry.getAdapterInstances()}resolveLiveAdapterId(e){return this.registry.resolveLiveAdapterId(e)}resolveLiveAdapterIdentity(e){return this.registry.resolveLiveAdapterIdentity(e)}getLiveAdapterIdentities(){return this.registry.getLiveAdapterIdentities()}getSettingsAvailableAdapters(){return this.registry.getSettingsAvailableAdapters()}async processAdapterContributions(e,t,n){await this.contributionProcessor.onPackageActivated(e,t,n)}async stopAdapterContributions(e){await this.contributionProcessor.onPackageStopped(e)}},Q=class extends Error{code;source;constructor(e,t,n){super(`Provider config "${t}" cannot be loaded: ${n}`),this.name=`ProviderConfigDiagnosticError`,this.code=e,this.source=t}};const $=`.json`;var zt=class{providerConfigsDir;adaptersDir;constructor(e){this.providerConfigsDir=e.providerConfigsDir,this.adaptersDir=e.adaptersDir}async loadAdapterConfigs(){let e=new Map,t=await this.readJsonFiles(this.adaptersDir,`adapter`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`adapter`,n.filePath);if(!t)continue;let r=x.safeParse(n.jsonData);if(!r.success){this.warnInvalidFile(`adapter`,n.filePath);continue}e.set(t,r.data)}return{configs:e}}async loadProviderConfigs(){let e=new Map,t=await this.readJsonFiles(this.providerConfigsDir,`provider config`,`reject`);for(let n of t){let t=this.getCanonicalLoadedStem(n.stem,`provider config`,n.filePath);t&&e.set(t,this.parseProviderConfig(n.jsonData,t))}return{configs:e}}async writeProviderConfig(e,t){let r=this.assertCanonicalFileStem(e,`provider config id`),i=n.join(this.providerConfigsDir,`${r}${$}`),a=this.parseProviderConfig(t,r);await this.writeJsonFile(i,a)}async deleteProviderConfig(e){let t=this.assertCanonicalFileStem(e,`provider config id`);try{return await this.unlinkFile(n.join(this.providerConfigsDir,`${t}${$}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async writeAdapterFile(e,t){let r=this.assertCanonicalFileStem(e,`adapter name`),i=x.parse(t);await this.writeJsonFile(n.join(this.adaptersDir,`${r}${$}`),i)}async deleteAdapterFile(e){let t=this.assertCanonicalFileStem(e,`adapter name`);try{return await this.unlinkFile(n.join(this.adaptersDir,`${t}${$}`)),!0}catch(e){if(e.code===`ENOENT`)return!1;throw e}}async readJsonFiles(e,r,i=`skip`){try{let a=(await t.readdir(e,{withFileTypes:!0})).filter(e=>e.isFile()&&n.extname(e.name)===$).sort((e,t)=>e.name.localeCompare(t.name));return(await Promise.all(a.map(async a=>{let o=n.join(e,a.name);try{let e=await t.readFile(o,`utf-8`);return{filePath:o,stem:n.parse(a.name).name,jsonData:JSON.parse(e)}}catch(e){if(e instanceof SyntaxError){if(i===`reject`)throw new Q(`invalid-provider-config`,Bt(a.name),`file does not contain valid JSON.`);return this.warnInvalidFile(r,o),null}if(e instanceof Error&&e.code===`ENOENT`)return this.warnInvalidFile(r,o),null;throw e}}))).filter(e=>e!==null)}catch(e){if(e.code===`ENOENT`)return[];throw e}}warnInvalidFile(e,t){console.warn(`[FileAdapterConfigRepository] Skipping invalid %s file: %s`,e,t)}parseProviderConfig(e,t){let n=typeof e==`object`&&e?e:void 0,r=n?.$schema,i=[`credentials`,`isSentinel`].filter(e=>Object.hasOwn(n??{},e));if(r===`makaio/provider-config/v1`||i.length>0)throw new Q(`legacy-provider-config`,t,`${[...r===`makaio/provider-config/v1`?[`schema v1`]:[],...i.length>0?[`legacy fields ${i.join(`, `)}`]:[]].join(` and `)} use retired authentication semantics. Recreate this config with an explicit normalized authentication method.`);if(r!==S)throw new Q(`unsupported-provider-config-version`,t,`expected $schema "${S}". Recreate the config with the current schema.`);let a=re.safeParse(e);if(!a.success)throw new Q(`invalid-provider-config`,t,a.error.issues.map(e=>`${e.path.length>0?e.path.join(`.`):`<root>`}: ${e.message}`).join(`; `));return a.data}getCanonicalLoadedStem(e,t,n){try{return this.assertCanonicalFileStem(e,`${t} file stem`)}catch{return this.warnInvalidFile(t,n),null}}async writeJsonFile(e,i){let a=n.dirname(e),o=n.join(a,`.${n.basename(e)}.${r()}.tmp`);await t.mkdir(a,{recursive:!0});try{await t.writeFile(o,`${JSON.stringify(i,null,2)}\n`,{encoding:`utf-8`,mode:384}),await this.replaceFile(o,e)}catch(e){throw await this.removeFileIfPresent(o),e}}async replaceFile(e,t){try{await this.renameFile(e,t);return}catch(e){let t=e;if(![`EEXIST`,`EPERM`,`EACCES`].includes(t.code??``))throw e}let n=`${t}.${r()}.bak`,i=!1;try{await this.renameFile(t,n),i=!0}catch(e){if(e.code!==`ENOENT`)throw e}try{await this.renameFile(e,t)}catch(e){throw i&&await this.renameFile(n,t).catch(()=>void 0),e}i&&await this.removeFileIfPresent(n)}async renameFile(e,n){await t.rename(e,n)}async unlinkFile(e){await t.unlink(e)}async removeFileIfPresent(e){try{await t.unlink(e)}catch(t){t.code!==`ENOENT`&&console.warn(`[FileAdapterConfigRepository] Failed to remove temp file: %s`,e,t)}}assertCanonicalFileStem(e,t){let r=e.trim(),i=n.basename(r);if(!r||e!==r||r!==i||!/^[a-z0-9._-]+$/.test(r)||r.includes(`/`)||r.includes(`\\`)||r.toLowerCase().endsWith(`.json`)||r===`.`||r===`..`)throw Error(`Invalid canonical ${t}: ${e}`);return r}};function Bt(e){return n.basename(e).replace(/[^A-Za-z0-9._-]/g,`_`)||`provider-config.json`}const Vt=h(O);function Ht(e){return{name:Vt.name,displayName:`Adapter Subsystem`,version:`0.1.0`,provides:[`adapters`],dependencies:[m(D.name)],critical:!0,create:t=>{let n=t.getService(D);if(n===void 0)throw Error(`Adapter subsystem requires the active session ownership authority`);return new Rt({bus:t.bus,configRepository:e.configRepository,coordinator:e.coordinator,machineId:t.machineId,resolveOwnerInstanceId:()=>n.requireOwnershipInstanceId(),platformDefaults:e.platformDefaults,...e.prepareAuthRuntime!==void 0&&{prepareAuthRuntime:e.prepareAuthRuntime},...e.runtimeSnapshotHandlerPriority!==void 0&&{runtimeSnapshotHandlerPriority:e.runtimeSnapshotHandlerPriority},...e.runtimeDefinitionHandlerPriority!==void 0&&{runtimeDefinitionHandlerPriority:e.runtimeDefinitionHandlerPriority}})}}}export{U as AdapterInstanceCloseTimeoutError,Rt as AdapterSubsystemService,Vt as AdapterSubsystemToken,zt as FileAdapterConfigRepository,F as ProviderConfigAuthValidationError,Q as ProviderConfigDiagnosticError,L as ProviderRuntimeContextError,G as aggregateAdapterInstanceTeardowns,P as assertProviderConfigAuthDefinitionsEnabled,W as classifyAdapterInstanceClose,Y as contributesToAdapterSubsystem,lt as createAdapterSubsystemContributionProcessor,Ht as createAdapterSubsystemPackage,Ue as ensureAdapterConfigs,je as extractAdapterIdFromPackageName,ct as orderAfterAdapterSubsystem,Fe as shutdownAdapterInstances,Me as toAvailableAdapter,I as validateProviderConfigAuth};
|
|
@@ -6001,6 +6001,19 @@ interface Agent {
|
|
|
6001
6001
|
}
|
|
6002
6002
|
//#endregion
|
|
6003
6003
|
//#region adapters/shared/acp-client/src/terminal-manager.d.ts
|
|
6004
|
+
/**
|
|
6005
|
+
* What a terminal process's own end looks like once it has been observed.
|
|
6006
|
+
*
|
|
6007
|
+
* Named because it is the evidence type the manager hands out, not merely the
|
|
6008
|
+
* shape of a promise it keeps: a caller that reports a teardown class for a
|
|
6009
|
+
* connector reads exactly this per terminal it spawned.
|
|
6010
|
+
*/
|
|
6011
|
+
interface TerminalExitObservation {
|
|
6012
|
+
/** Exit code, or `null` when the process was ended by a signal. */
|
|
6013
|
+
readonly exitCode: number | null;
|
|
6014
|
+
/** Terminating signal, or `null` when the process exited on its own. */
|
|
6015
|
+
readonly signal: string | null;
|
|
6016
|
+
}
|
|
6004
6017
|
/**
|
|
6005
6018
|
* Manages stateful terminal lifecycles for ACP agents.
|
|
6006
6019
|
*
|
|
@@ -6010,16 +6023,36 @@ interface Agent {
|
|
|
6010
6023
|
*/
|
|
6011
6024
|
declare class TerminalManager {
|
|
6012
6025
|
private readonly terminals;
|
|
6026
|
+
/**
|
|
6027
|
+
* Ends of terminals already released one at a time, kept until somebody reads
|
|
6028
|
+
* them.
|
|
6029
|
+
*
|
|
6030
|
+
* An agent-initiated `terminal/release` is an ordinary protocol act, so it books
|
|
6031
|
+
* nothing and caps nothing — but it does end a process this runtime spawned, and
|
|
6032
|
+
* a shutdown that reports a class for this connector is answerable for that end
|
|
6033
|
+
* too. Dropping the exit promise on release let a later close claim `exited` for a
|
|
6034
|
+
* kill nobody ever watched land; keeping it makes the same close either *observe*
|
|
6035
|
+
* the end — the usual case, since the SIGKILL is long since reaped by then — or
|
|
6036
|
+
* report honestly that it did not.
|
|
6037
|
+
*
|
|
6038
|
+
* Bounded by the number of releases between two shutdown collections, and each
|
|
6039
|
+
* collection empties it: what is retained is a settled promise per released
|
|
6040
|
+
* terminal, not the terminal.
|
|
6041
|
+
*/
|
|
6042
|
+
private readonly retiredExits;
|
|
6013
6043
|
private readonly baseEnv;
|
|
6014
6044
|
private readonly scrubEnvVars;
|
|
6045
|
+
private readonly spawnTimeoutMs;
|
|
6015
6046
|
private nextId;
|
|
6016
6047
|
/**
|
|
6017
6048
|
* Create a terminal manager bound to one finalized connector environment.
|
|
6018
|
-
* @param options - Sanitized base environment
|
|
6049
|
+
* @param options - Sanitized base environment, variables that terminal requests
|
|
6050
|
+
* may not restore, and the budget a terminal spawn may take
|
|
6019
6051
|
*/
|
|
6020
6052
|
constructor(options: {
|
|
6021
6053
|
readonly baseEnv: Readonly<Record<string, string>>;
|
|
6022
6054
|
readonly scrubEnvVars?: readonly string[];
|
|
6055
|
+
readonly spawnTimeoutMs: number;
|
|
6023
6056
|
});
|
|
6024
6057
|
/**
|
|
6025
6058
|
* Creates a new terminal subprocess.
|
|
@@ -6049,19 +6082,44 @@ declare class TerminalManager {
|
|
|
6049
6082
|
*/
|
|
6050
6083
|
killTerminal(params: KillTerminalRequest): Promise<KillTerminalResponse>;
|
|
6051
6084
|
/**
|
|
6052
|
-
* Releases a terminal, killing the process and
|
|
6085
|
+
* Releases a terminal, killing the process and keeping its end to be read.
|
|
6053
6086
|
*
|
|
6054
|
-
* After this call the terminal ID is no longer valid.
|
|
6087
|
+
* After this call the terminal ID is no longer valid. The release itself does not
|
|
6088
|
+
* wait — an agent asked for it and is owed a prompt response — but the process's
|
|
6089
|
+
* exit promise moves to {@link retiredExits} rather than being dropped, so the
|
|
6090
|
+
* connector shutdown that later reports a class for this runtime collects this
|
|
6091
|
+
* kill's end alongside the ends of the terminals still open. That is the whole of
|
|
6092
|
+
* what this release owes: it is a normal protocol act and books no generation, so
|
|
6093
|
+
* it can cap no class on its own — an end already landed is simply *observed* by
|
|
6094
|
+
* the collection instead of being assumed.
|
|
6055
6095
|
* @param params - ACP release terminal request
|
|
6056
6096
|
* @returns Empty response object
|
|
6057
6097
|
*/
|
|
6058
6098
|
releaseTerminal(params: ReleaseTerminalRequest): Promise<ReleaseTerminalResponse>;
|
|
6059
6099
|
/**
|
|
6060
|
-
* Kills and removes all managed terminals.
|
|
6100
|
+
* Kills and removes all managed terminals, handing back their ends to watch.
|
|
6101
|
+
*
|
|
6102
|
+
* Called during connector shutdown. The kill is a signal, not an observation:
|
|
6103
|
+
* these are processes this runtime spawned, so their ends are evidence its
|
|
6104
|
+
* teardown is entitled to — and evidence it already holds, since every terminal
|
|
6105
|
+
* carries its own exit promise from the moment it was created. Returning them is
|
|
6106
|
+
* what lets the caller decide the honest class instead of assuming a SIGKILL
|
|
6107
|
+
* landed.
|
|
6061
6108
|
*
|
|
6062
|
-
*
|
|
6109
|
+
* **Terminals released one at a time count too.** An agent-initiated
|
|
6110
|
+
* `terminal/release` already killed its process and kept its end
|
|
6111
|
+
* ({@link retiredExits}); those ends belong to this runtime's shutdown just as
|
|
6112
|
+
* much as the ones killed here, because the class the caller reports covers every
|
|
6113
|
+
* process this runtime spawned — not only the ones that happened to still be open
|
|
6114
|
+
* at the end. Consuming the retained ends empties the list, so a second call
|
|
6115
|
+
* reports each end once.
|
|
6116
|
+
*
|
|
6117
|
+
* The manager itself does not wait: a shutdown must not be held by a terminal,
|
|
6118
|
+
* and the caller is the party with a budget and a class to report.
|
|
6119
|
+
* @returns One exit observation per terminal this runtime ended and nobody has
|
|
6120
|
+
* read yet — the ends released earlier first, then the ones killed here.
|
|
6063
6121
|
*/
|
|
6064
|
-
releaseAll():
|
|
6122
|
+
releaseAll(): ReadonlyArray<Promise<TerminalExitObservation>>;
|
|
6065
6123
|
/**
|
|
6066
6124
|
* Returns a managed terminal by ID, throwing if not found.
|
|
6067
6125
|
* @param terminalId - Terminal identifier assigned at creation time
|
|
@@ -6089,6 +6147,25 @@ interface AcpConnectionOptions {
|
|
|
6089
6147
|
onError?: (error: Error) => void;
|
|
6090
6148
|
/** Callback for subprocess exit */
|
|
6091
6149
|
onExit?: (code: number | null) => void;
|
|
6150
|
+
/**
|
|
6151
|
+
* Milliseconds to wait for the subprocess to start before failing.
|
|
6152
|
+
*
|
|
6153
|
+
* Required rather than optional: the wait for a `spawn` event has no natural
|
|
6154
|
+
* end, and every caller of this function already declares an initialization
|
|
6155
|
+
* budget. Making the budget an argument is what stops that declaration from
|
|
6156
|
+
* being decorative.
|
|
6157
|
+
*/
|
|
6158
|
+
spawnTimeoutMs: number;
|
|
6159
|
+
/**
|
|
6160
|
+
* Signal that abandons the start before its budget expires.
|
|
6161
|
+
*
|
|
6162
|
+
* The budget answers "how long may this take"; the signal answers "we no longer
|
|
6163
|
+
* want it" — a caller whose own start was superseded or cancelled has no reason
|
|
6164
|
+
* to keep waiting out a full budget. An abandoned start kills the child it
|
|
6165
|
+
* spawned, exactly as an expired one does, so neither leaves an unwatched
|
|
6166
|
+
* process behind.
|
|
6167
|
+
*/
|
|
6168
|
+
signal?: AbortSignal;
|
|
6092
6169
|
}
|
|
6093
6170
|
/**
|
|
6094
6171
|
* Handle to a running ACP connection (subprocess + protocol layer).
|
|
@@ -6215,4 +6292,25 @@ declare class MakaioAcpClient implements Client {
|
|
|
6215
6292
|
releaseTerminal(params: ReleaseTerminalRequest): Promise<ReleaseTerminalResponse>;
|
|
6216
6293
|
}
|
|
6217
6294
|
//#endregion
|
|
6218
|
-
|
|
6295
|
+
//#region adapters/shared/acp-client/src/proc-utils.d.ts
|
|
6296
|
+
/** Bounds and cancellation for {@link waitForSpawn}. */
|
|
6297
|
+
interface WaitForSpawnOptions {
|
|
6298
|
+
/**
|
|
6299
|
+
* Milliseconds to wait for the `spawn` event before rejecting.
|
|
6300
|
+
*
|
|
6301
|
+
* A child that neither spawns nor errors emits nothing at all, so without a
|
|
6302
|
+
* bound this wait has no end — and every caller queued behind it inherits
|
|
6303
|
+
* that. The budget belongs to the caller, which is the layer that knows how
|
|
6304
|
+
* long starting this particular agent is allowed to take.
|
|
6305
|
+
*/
|
|
6306
|
+
readonly timeoutMs: number;
|
|
6307
|
+
/**
|
|
6308
|
+
* Signal that abandons the wait before its budget expires.
|
|
6309
|
+
*
|
|
6310
|
+
* Abandoning the wait does not stop the child; a caller that aborts owns the
|
|
6311
|
+
* process it spawned and is responsible for killing it.
|
|
6312
|
+
*/
|
|
6313
|
+
readonly signal?: AbortSignal;
|
|
6314
|
+
}
|
|
6315
|
+
//#endregion
|
|
6316
|
+
export { type AcpConnectionHandle, type AcpConnectionOptions, MakaioAcpClient, type MakaioAcpClientConfig, TerminalManager, type WaitForSpawnOptions, createAcpConnection };
|