@makaio/framework 1.0.0-dev-1788832451167 → 1.0.0-dev-1788863979610
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/index.d.mts +2 -2
- package/dist/adapters/node.d.mts +1 -1
- package/dist/attempt-record-codec-BcAPEIW3.mjs +1 -0
- package/dist/clients/index.d.mts +1 -1
- package/dist/clients/managed-install.d.mts +1 -1
- package/dist/code-execution/worker-entry.d.mts +1 -1
- package/dist/{context-resolution-BrtoXnez.d.mts → context-resolution-BZKEKzu4.d.mts} +1 -1
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +2 -2
- package/dist/contracts/auth/index.d.mts +2 -2
- package/dist/contracts/automation-trigger/index.d.mts +3 -3
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/code-execution/index.d.mts +1 -1
- package/dist/contracts/common/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +1 -1
- package/dist/contracts/extension/index.d.mts +5 -5
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +114 -114
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/reaction/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/shared/index.d.mts +2 -2
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/worker/index.d.mts +1 -1
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/{contribution-Crm-mctl.d.mts → contribution-CQIpPQLl.d.mts} +2 -2
- package/dist/{definition-u_5rYQtc.d.mts → definition-Cdpw5l9g.d.mts} +1 -1
- package/dist/{detached-extension-handle-DAXKQT9c.mjs → detached-extension-handle-2yUaviLu.mjs} +1 -1
- package/dist/execution-attempt-owner-recovery-BRjtmTGv.mjs +1 -0
- package/dist/{execution-attempt-repository-CgB7uiYD.d.mts → execution-attempt-repository-CPk3F98N.d.mts} +111 -3
- package/dist/{hook-responses-DcapjzLb.d.mts → hook-responses-DK6uu35J.d.mts} +1 -1
- package/dist/{index-BvgLFm-U.d.mts → index-1y-PUD3B.d.mts} +1 -1
- package/dist/{index-BxOFB25y.d.mts → index-B8Tc0urp.d.mts} +1 -1
- package/dist/{index-QJW9g1mG.d.mts → index-B9vEfalH.d.mts} +1 -1
- package/dist/{index-CGJgZGqN.d.mts → index-BDAPOKi3.d.mts} +8 -8
- package/dist/{index-LOh6AEqx.d.mts → index-BDs5tDcM.d.mts} +10 -10
- package/dist/{index-rygpcDBV.d.mts → index-BlJbchHp.d.mts} +1 -1
- package/dist/{index-LryUXslm.d.mts → index-C3uCMCHI.d.mts} +3 -3
- package/dist/{index-J-kv32zv.d.mts → index-COSxBdTp.d.mts} +2 -2
- package/dist/{index-DZnb56vt2.d.mts → index-CXZ8ODDT.d.mts} +1 -1
- package/dist/{index-Bsr4rZl0.d.mts → index-Cjy1_Hc2.d.mts} +13 -13
- package/dist/{index-DIhkK4Y0.d.mts → index-CsDj-DEW.d.mts} +1 -1
- package/dist/{index-BwccWakG.d.mts → index-CvWUgywU.d.mts} +1 -1
- package/dist/{index-BDzqNCXs.d.mts → index-D5UpsCNq.d.mts} +1 -1
- package/dist/{index-Cbv_3Xi12.d.mts → index-D9CdrFKz2.d.mts} +1 -1
- package/dist/{index-CfJKwWJa.d.mts → index-DQWEOn6i.d.mts} +1 -1
- package/dist/{index-BakMNLkB.d.mts → index-DXv51ZIb.d.mts} +38 -38
- package/dist/{index-DZXpKlyB.d.mts → index-DmTBlEzu.d.mts} +20 -20
- package/dist/{index-vXmPEZ5O.d.mts → index-Dne0xNUI.d.mts} +7 -7
- package/dist/{index-Bo3LRb2u.d.mts → index-DtHmaj-q.d.mts} +1 -1
- package/dist/{index-BADuMxcP.d.mts → index-DvV7vEKt.d.mts} +134 -134
- package/dist/{index-C1PfDEIV.d.mts → index-jZXIrHlY.d.mts} +54 -54
- package/dist/{index-BDAfOYSw2.d.mts → index-zCstNu9J2.d.mts} +12 -12
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/register.d.mts +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +5 -5
- package/dist/kernel/namespace/index.d.mts +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/{lib-271rPR7A.mjs → lib-BB0XjVs6.mjs} +1 -1
- package/dist/{lib-RFpLjUda.mjs → lib-DNGNIb-O.mjs} +1 -1
- package/dist/{load-extensions-CY8ELnCp.d.mts → load-extensions-C3Y3y9EW.d.mts} +1 -1
- package/dist/{load-extensions-D9inWcDy.mjs → load-extensions-CWlR-8BM.mjs} +1 -1
- package/dist/{namespace-BoyqQiW9.d.mts → namespace-B8i86gVL.d.mts} +2 -2
- package/dist/{namespace-BMG3RCdr.d.mts → namespace-Bz3qcZBD.d.mts} +6 -6
- package/dist/{namespace-BymM0nl_.d.mts → namespace-C3Ch35nb.d.mts} +27 -27
- package/dist/{namespace-DlrX8feY.d.mts → namespace-C9X7Qvn5.d.mts} +45 -45
- package/dist/{namespace-Dw5H_KCF.d.mts → namespace-agOiy4kr.d.mts} +1 -1
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/{package-CzKoZ1k0.mjs → package-BdOoo7XE.mjs} +2 -2
- package/dist/{package-DkpF17X_.d.mts → package-w4WZqO7J.d.mts} +19 -5
- package/dist/package.json +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/schemas.d.mts +1 -1
- package/dist/runtime-bun/index.mjs +1 -1
- package/dist/runtime-node/code-execution/index.d.mts +2 -2
- package/dist/runtime-node/extension-discovery.d.mts +1 -1
- package/dist/runtime-node/extension-validation.d.mts +1 -1
- package/dist/runtime-node/extension-validation.mjs +1 -1
- package/dist/runtime-node/index.d.mts +5 -5
- package/dist/runtime-node/index.mjs +2 -2
- package/dist/runtime-node/makaio-config.d.mts +1 -1
- package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
- package/dist/{schema-C9PauHXt.d.mts → schema-BwrsXKsP.d.mts} +2 -2
- package/dist/{schemas-B2UbGJpJ.d.mts → schemas-B4MSOlcv.d.mts} +10 -10
- package/dist/{schemas-CBpjAhut.d.mts → schemas-Bw2-j1lm.d.mts} +4 -4
- package/dist/{schemas-Wqo3_F6-.d.mts → schemas-Io717dOA.d.mts} +1 -1
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +1 -1
- package/dist/services/adapter-subsystem/index.d.mts +3 -3
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/capability/index.d.mts +2 -2
- package/dist/services/code-execution/index.d.mts +1 -1
- package/dist/services/codebase/index.d.mts +2 -2
- package/dist/services/codebase/namespace.d.mts +1 -1
- package/dist/services/codebase/schemas.d.mts +1 -1
- package/dist/services/compression/index.d.mts +2 -2
- package/dist/services/compression/namespace.d.mts +1 -1
- package/dist/services/compression/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +4 -4
- package/dist/services/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/index.d.mts +55 -55
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/materialization/index.d.mts +1 -1
- package/dist/services/model-registry/index.d.mts +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/provider-context/index.d.mts +1 -1
- package/dist/services/session/handlers/index.d.mts +1 -1
- package/dist/services/session/index.d.mts +9 -9
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
- package/dist/services/session/turns/namespace.d.mts +1 -1
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/settings/index.d.mts +3 -3
- package/dist/services/settings/namespace.d.mts +10 -10
- package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/settings/storage/index.d.mts +3 -3
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/subagent/index.d.mts +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/tools/index.d.mts +1 -1
- package/dist/services/tray-menu/index.d.mts +3 -3
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/services/turn/index.d.mts +1 -1
- package/dist/services/turn/namespace.d.mts +1 -1
- package/dist/services/workflow-transitions/index.d.mts +1 -1
- package/dist/{src-DEgV239R.mjs → src-BWEtqWTw.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +1 -1
- package/dist/storage/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/index.d.mts +1 -1
- package/dist/{transition-DFA_ckdP.d.mts → transition-CGnHfVIv.d.mts} +2 -2
- package/dist/{types-p55qvq922.d.mts → types-B6V3HDRl2.d.mts} +1 -1
- package/dist/{types-DkfDRSTr.d.mts → types-FPmiU-3J.d.mts} +51 -51
- package/dist/ui-kernel/index.d.mts +1 -1
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/{view-builder-CYW_9n4A.d.mts → view-builder-CELaqM4Z.d.mts} +1 -1
- package/dist/workflow-engine/execution-attempt-repository.d.mts +2 -2
- package/dist/workflow-engine/index.d.mts +30 -30
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.d.mts +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/provider-operation.d.mts +1 -1
- package/dist/workflow-engine/testing/conformance.d.mts +1 -1
- package/dist/workflow-engine/testing/conformance.mjs +3 -1
- package/dist/workflow-engine/testing/index.d.mts +9 -6
- 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 +63 -55
- package/package.json +1 -1
- package/dist/attempt-record-codec-B32Whx75.mjs +0 -1
- package/dist/{adapter-binding-D68U_Hmh.d.mts → adapter-binding-C6jAAjGu.d.mts} +0 -0
- package/dist/{attempt-fixtures-CnrnF5_4.mjs → attempt-fixtures-gGhCA_WQ.mjs} +0 -0
- package/dist/{base-orchestrator-DA95InJU.d.mts → base-orchestrator-B9OUXDR-.d.mts} +0 -0
- package/dist/{capability-service-s4ZYSEWc.d.mts → capability-service-DA9xdAyh.d.mts} +0 -0
- package/dist/{client-f5A-6La5.d.mts → client-BhRxxVig.d.mts} +0 -0
- package/dist/{client-binary-version-verifier-kd9LP9AQ.d.mts → client-binary-version-verifier-DXu9mjRx.d.mts} +0 -0
- package/dist/{clients-namespace-q4PqU1cA.d.mts → clients-namespace-2TIeXofb.d.mts} +0 -0
- package/dist/{config-namespace-Cp71zTT0.d.mts → config-namespace-Burux0cR.d.mts} +0 -0
- package/dist/{create-static-mount-CmQgA0jq.mjs → create-static-mount-CuiFK6nC.mjs} +0 -0
- package/dist/{definition-BHSzhrUf.d.mts → definition-011l3aQ8.d.mts} +0 -0
- package/dist/{extension-context-BmU5XKjI.d.mts → extension-context-CogUIfZb.d.mts} +0 -0
- package/dist/{extension-discovery-DnO7bINK.d.mts → extension-discovery-CuC5Nd5d.d.mts} +0 -0
- package/dist/{filesystem-service-BBArEDPL.d.mts → filesystem-service-DYYL4fLd.d.mts} +0 -0
- package/dist/{index-CDLf3Fka2.d.mts → index-09JDqcgy2.d.mts} +0 -0
- package/dist/{index-xaBSwHxJ.d.mts → index-B4MG7PBn.d.mts} +0 -0
- package/dist/{index-mK-rgiit.d.mts → index-BD1_BSMP.d.mts} +0 -0
- package/dist/{index-DQD2-jcL.d.mts → index-BKco9D6a.d.mts} +0 -0
- package/dist/{index-DSLTgc7h2.d.mts → index-BNF8osK42.d.mts} +0 -0
- package/dist/{index-KAAnSRZt.d.mts → index-BPX7lMRX.d.mts} +0 -0
- package/dist/{index-B-zl-O-Y.d.mts → index-BRNRgfOm.d.mts} +0 -0
- package/dist/{index-CPWBGotQ.d.mts → index-BlkTzRHz.d.mts} +0 -0
- package/dist/{index-CcrXttC02.d.mts → index-C0uHQitR2.d.mts} +0 -0
- package/dist/{index-CrcfeFOo.d.mts → index-C7ZdyYMT.d.mts} +0 -0
- package/dist/{index-C9xVZ-gt.d.mts → index-CDJUiga3.d.mts} +0 -0
- package/dist/{index-D-JbTXIH.d.mts → index-CKeNzHte.d.mts} +0 -0
- package/dist/{index-COOM1j_L2.d.mts → index-CU90gGDk2.d.mts} +0 -0
- package/dist/{index-DYHxzwok2.d.mts → index-CUxMqAoE2.d.mts} +0 -0
- package/dist/{index-Df1c_2PF.d.mts → index-CbaOOgMX.d.mts} +0 -0
- package/dist/{index-DSN2t48K.d.mts → index-CrA9tCMf.d.mts} +0 -0
- package/dist/{index-CkpR5sIH.d.mts → index-CrUijdhZ.d.mts} +0 -0
- package/dist/{index-D_sMzTvv.d.mts → index-CweK7QAS.d.mts} +0 -0
- package/dist/{index-Dn_SGTgp.d.mts → index-DhCBbChV.d.mts} +0 -0
- package/dist/{index-Co1da7YK.d.mts → index-DiHGEgh-.d.mts} +0 -0
- package/dist/{index-DW4SE_sH.d.mts → index-DmjyHIEH.d.mts} +0 -0
- package/dist/{index-D94yE5Dr.d.mts → index-DsIrU-pP.d.mts} +0 -0
- package/dist/{index-BB0HypzC.d.mts → index-DuoOsxow.d.mts} +0 -0
- package/dist/{index-CiKzWCW02.d.mts → index-DwFnHNoq2.d.mts} +6 -6
- /package/dist/{index-NhW2h2wH2.d.mts → index-Oejq5WGD2.d.mts} +0 -0
- /package/dist/{index-CBixkF0n.d.mts → index-XNbcZBEZ.d.mts} +0 -0
- /package/dist/{index-D6RMsZko.d.mts → index-fQIrZBY0.d.mts} +0 -0
- /package/dist/{index-Bf2MgOni.d.mts → index-ikP83tJm.d.mts} +0 -0
- /package/dist/{index-CsFN2nv7.d.mts → index-luD7oSCA.d.mts} +0 -0
- /package/dist/{json-value-pX6xnLGw.d.mts → json-value-DbwI1AMR.d.mts} +0 -0
- /package/dist/{jsonl-transport-DQIlRX_y.mjs → jsonl-transport-W03tkPvB.mjs} +0 -0
- /package/dist/{lib-6eNAiNK7.mjs → lib-Wtk4Ef-T.mjs} +0 -0
- /package/dist/{namespace-CQEYu8az.d.mts → namespace-BGi71aDN.d.mts} +0 -0
- /package/dist/{namespace-Cs-cOyrn.d.mts → namespace-BW2rjW9-.d.mts} +0 -0
- /package/dist/{namespace-9ychTEk_.d.mts → namespace-Br7IQt88.d.mts} +0 -0
- /package/dist/{namespace-BGDq7HmW.d.mts → namespace-C3l4AsWS.d.mts} +0 -0
- /package/dist/{namespace-CVg_cpkh.d.mts → namespace-D4RJjLv8.d.mts} +0 -0
- /package/dist/{namespace-CPR2xem0.d.mts → namespace-D5nHBTPz.d.mts} +0 -0
- /package/dist/{namespace-DdqVQSyc.d.mts → namespace-DeezOMb9.d.mts} +0 -0
- /package/dist/{namespace-DykqxEyX.d.mts → namespace-Df8uPrMr.d.mts} +0 -0
- /package/dist/{namespace-DG0hjPcx.d.mts → namespace-aUe_P5qN.d.mts} +0 -0
- /package/dist/{orchestrator-shared-BzqqcY2z.d.mts → orchestrator-shared-B2Lb5Enk.d.mts} +0 -0
- /package/dist/{packages-Cx-BwSZr.d.mts → packages-uNYWGMH1.d.mts} +0 -0
- /package/dist/{provider-operation-B2wQST6N.d.mts → provider-operation-BwvTdAsv.d.mts} +0 -0
- /package/dist/{providers-namespace-DsKTnuO1.d.mts → providers-namespace-D-gdpu0p.d.mts} +0 -0
- /package/dist/{schemas-CHRuwe18.d.mts → schemas-BNf-WkKF.d.mts} +0 -0
- /package/dist/{schemas-ClGDFa44.d.mts → schemas-BaWB3EXP.d.mts} +0 -0
- /package/dist/{schemas-Dxvjq-Bi.d.mts → schemas-CMQ2PiO2.d.mts} +0 -0
- /package/dist/{schemas-DmULJ7Jk.d.mts → schemas-CsOAG1rB.d.mts} +0 -0
- /package/dist/{schemas-Bk50UoMA.d.mts → schemas-DKJyKDpe.d.mts} +0 -0
- /package/dist/{schemas-CzGN0eqW.d.mts → schemas-Ds_YMFjX.d.mts} +0 -0
- /package/dist/{schemas-BDZFd3Wb.d.mts → schemas-uaQuIxm4.d.mts} +0 -0
- /package/dist/{schemas--LAbwXvw.d.mts → schemas-v1W9Gj9m.d.mts} +0 -0
- /package/dist/{server-lifecycle-WFZcCMwF.d.mts → server-lifecycle-CmuBMs3O.d.mts} +0 -0
- /package/dist/{session-lineage-C9kppcCa.d.mts → session-lineage-BRhnTWqq.d.mts} +0 -0
- /package/dist/{src-DIyWekjW.mjs → src-BA_c2cXX.mjs} +0 -0
- /package/dist/{storage-namespace-BWU-8rvj.d.mts → storage-namespace-CTXxds3h.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-B-8JKvzm.d.mts → storage-namespace-definition-Dkxl1FGw.d.mts} +0 -0
- /package/dist/{types-8rMNe3AS.d.mts → types--Sa8Ip8j.d.mts} +0 -0
- /package/dist/{types-DxHeL0pF.d.mts → types-BWfAz9Sh.d.mts} +0 -0
- /package/dist/{types-BnPJa-C_.d.mts → types-BklZfFWo.d.mts} +0 -0
- /package/dist/{types-DQTCNM2i.d.mts → types-C4ayzk8k.d.mts} +0 -0
- /package/dist/{types-BFeWU3WM.d.mts → types-DDfy8LgJ.d.mts} +0 -0
- /package/dist/{window-registry-DQP5P2_0.d.mts → window-registry-CIlKN806.d.mts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DispatchingAuth as e,createWebSocketCloseEvent as t}from"@makaio/framework/node/transports";import{HonoWebSocketBridge as n,startBusServer as r}from"@makaio/framework/node/bus-server";import{ExplicitDescriptorDiscovery as i,FileConfigStorage as a,FileRegistryCache as o,FilesystemDescriptorDiscovery as s,MergedDescriptorDiscovery as c,NodeCredentialProvider as l,StoredCredentialProvider as u,bootMakaioRuntimeCore as d,bootMakaioRuntimeCore as f,bridgeExtensionBrowserEntries as ee,createHonoRouteGraph as p,createHttpRouteGraphBuilder as m,entrypointStem as h,isCliContributionLike as g,isMakaioExtensionLike as _,isMissingOptionalRuntimePackage as v,isWithinDirectory as y,loadExtensions as b,loadOrCreateMachineIdentity as x,machineKeysExist as S,registerAdapterNameResolver as C,resolveConventionEntrypoint as w,resolveStaticModelRegistryPath as T,runMigrations as E,tryImport as D,validateMachineKeys as O}from"@makaio/framework/runtime-node";import{isIP as k}from"node:net";var A=class{raw;eventListeners={message:new Set,close:new Set,error:new Set,open:new Set};constructor(e){this.raw=e}get readyState(){return this.raw.readyState}send(e){if(typeof e==`string`){this.raw.send(e);return}if(e instanceof Blob){e.arrayBuffer().then(e=>{this.raw.readyState===1&&this.raw.send(new Uint8Array(e))}).catch(()=>{this.dispatchError()});return}if(e instanceof ArrayBuffer){this.raw.send(new Uint8Array(e));return}ArrayBuffer.isView(e)&&this.raw.send(e)}close(e,t){this.raw.close(e,t)}addEventListener(e,t){this.eventListeners[e]?.add(t)}removeEventListener(e,t){this.eventListeners[e]?.delete(t)}dispatchMessage(e){let t=new MessageEvent(`message`,{data:e});for(let e of this.eventListeners.message)e(t)}dispatchClose(e,n){let r=t(e,n);for(let e of this.eventListeners.close)e(r)}dispatchError(){let e=new Event(`error`);for(let t of this.eventListeners.error)t(e)}},j=class{options;bridge;busServer=null;busReady=!1;connecting=!1;constructor(e){this.options=e,this.bridge=new n}get dispatchingAuth(){return this.options.auth instanceof e?this.options.auth:void 0}createWebSocketHandler(){let e=this.bridge,t=()=>this.busReady,n=new WeakMap;return{binaryType:`arraybuffer`,open(r){if(!t()){r.close(1013,`Bus server not ready`);return}let i=new A(r);n.set(r,i),e.accept(i)},message(e,t){n.get(e)?.dispatchMessage(t)},close(e,t,r){n.get(e)?.dispatchClose(t,r),n.delete(e)}}}async connect(e,t){if(this.connecting||this.busServer)throw Error(`[BunBusServerTransport] connect() called while transport is already connected or connecting`);this.connecting=!0;try{this.busServer=await r({websocket:this.bridge,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`bun`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.bridge.close()}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BunBusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}};function M(e){if(e.headers.get(`upgrade`)?.toLowerCase()!==`websocket`)return!1;let{pathname:t}=new URL(e.url);return t===`/bus`?!0:t===`/`&&e.headers.get(`origin`)===null}function te(e){return(t,n)=>M(t)?n.upgrade(t)?void 0:new Response(`WebSocket upgrade failed`,{status:426,headers:{Upgrade:`websocket`}}):e.fetch(t)}function N(e){return e.port}async function P(e){let{port:t,hostname:n}=e.bunServer,r=e.createMount??(await import(`../create-static-mount-
|
|
1
|
+
import{DispatchingAuth as e,createWebSocketCloseEvent as t}from"@makaio/framework/node/transports";import{HonoWebSocketBridge as n,startBusServer as r}from"@makaio/framework/node/bus-server";import{ExplicitDescriptorDiscovery as i,FileConfigStorage as a,FileRegistryCache as o,FilesystemDescriptorDiscovery as s,MergedDescriptorDiscovery as c,NodeCredentialProvider as l,StoredCredentialProvider as u,bootMakaioRuntimeCore as d,bootMakaioRuntimeCore as f,bridgeExtensionBrowserEntries as ee,createHonoRouteGraph as p,createHttpRouteGraphBuilder as m,entrypointStem as h,isCliContributionLike as g,isMakaioExtensionLike as _,isMissingOptionalRuntimePackage as v,isWithinDirectory as y,loadExtensions as b,loadOrCreateMachineIdentity as x,machineKeysExist as S,registerAdapterNameResolver as C,resolveConventionEntrypoint as w,resolveStaticModelRegistryPath as T,runMigrations as E,tryImport as D,validateMachineKeys as O}from"@makaio/framework/runtime-node";import{isIP as k}from"node:net";var A=class{raw;eventListeners={message:new Set,close:new Set,error:new Set,open:new Set};constructor(e){this.raw=e}get readyState(){return this.raw.readyState}send(e){if(typeof e==`string`){this.raw.send(e);return}if(e instanceof Blob){e.arrayBuffer().then(e=>{this.raw.readyState===1&&this.raw.send(new Uint8Array(e))}).catch(()=>{this.dispatchError()});return}if(e instanceof ArrayBuffer){this.raw.send(new Uint8Array(e));return}ArrayBuffer.isView(e)&&this.raw.send(e)}close(e,t){this.raw.close(e,t)}addEventListener(e,t){this.eventListeners[e]?.add(t)}removeEventListener(e,t){this.eventListeners[e]?.delete(t)}dispatchMessage(e){let t=new MessageEvent(`message`,{data:e});for(let e of this.eventListeners.message)e(t)}dispatchClose(e,n){let r=t(e,n);for(let e of this.eventListeners.close)e(r)}dispatchError(){let e=new Event(`error`);for(let t of this.eventListeners.error)t(e)}},j=class{options;bridge;busServer=null;busReady=!1;connecting=!1;constructor(e){this.options=e,this.bridge=new n}get dispatchingAuth(){return this.options.auth instanceof e?this.options.auth:void 0}createWebSocketHandler(){let e=this.bridge,t=()=>this.busReady,n=new WeakMap;return{binaryType:`arraybuffer`,open(r){if(!t()){r.close(1013,`Bus server not ready`);return}let i=new A(r);n.set(r,i),e.accept(i)},message(e,t){n.get(e)?.dispatchMessage(t)},close(e,t,r){n.get(e)?.dispatchClose(t,r),n.delete(e)}}}async connect(e,t){if(this.connecting||this.busServer)throw Error(`[BunBusServerTransport] connect() called while transport is already connected or connecting`);this.connecting=!0;try{this.busServer=await r({websocket:this.bridge,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`bun`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.bridge.close()}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BunBusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}};function M(e){if(e.headers.get(`upgrade`)?.toLowerCase()!==`websocket`)return!1;let{pathname:t}=new URL(e.url);return t===`/bus`?!0:t===`/`&&e.headers.get(`origin`)===null}function te(e){return(t,n)=>M(t)?n.upgrade(t)?void 0:new Response(`WebSocket upgrade failed`,{status:426,headers:{Upgrade:`websocket`}}):e.fetch(t)}function N(e){return e.port}async function P(e){let{port:t,hostname:n}=e.bunServer,r=e.createMount??(await import(`../create-static-mount-CuiFK6nC.mjs`)).defaultCreateMount;return f(e.transport,t,n,{...e,createMount:r})}function F(e,t){let n=e,r=t;return{fetch(e,t){return n(e,t)},websocket:{binaryType:t.binaryType,open(e){r.open(e)},message(e,t){r.message(e,t)},close(e,t,n){r.close(e,t,n)}},activate(i){n=R(e,i),r=z(t,i)}}}function I(e){let t=[];return e.forEachActiveExtension((e,n)=>{B(n)&&t.push(n)}),t}function L(e){return Array.isArray(e)?e.flatMap(e=>L(e)):B(e)?[e]:[]}function R(e,t){return t.reduce((e,t)=>t.bun.createFetch?.(e)??e,e)}function z(e,t){return t.reduce((e,t)=>t.bun.createWebSocketHandler?.(e)??e,e)}function B(e){if(!H(e))return!1;let t=e.bun;return typeof e.name==`string`&&typeof e.displayName==`string`&&V(t)}function V(e){if(!H(e))return!1;let t=e.createFetch,n=e.createWebSocketHandler;return(t===void 0||typeof t==`function`)&&(n===void 0||typeof n==`function`)}function H(e){return typeof e==`object`&&!!e}function U(e){let t=e.timeoutMs??1e4,n=e.exit??(e=>process.exit(e)),r=!1;return async i=>{if(r)return;r=!0,console.info(`[${e.label}] ${i} received, shutting down...`);let a=setTimeout(()=>{console.error(`[${e.label}] Graceful shutdown timed out, forcing exit`),n(1)},t);try{process.env.MAKAIO_DEBUG&&console.info(`[${e.label}] Shutting down runtime...`),await e.runtime.shutdown(),process.env.MAKAIO_DEBUG&&console.info(`[${e.label}] Stopping Bun server...`),W(e.bunServer,e.label),process.env.MAKAIO_DEBUG&&console.info(`[${e.label}] Shutdown complete`),clearTimeout(a),n(0)}catch(t){W(e.bunServer,e.label),clearTimeout(a),console.error(`[${e.label}] Shutdown error:`,t),n(1)}}}function W(e,t){let n=e.stop?.(!0);G(n)&&n.catch(e=>{console.warn(`[${t}] Bun server stop failed during shutdown:`,e)})}function G(e){return typeof e==`object`&&!!e&&typeof e.catch==`function`}const K=/^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)*[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;function q(e){let t=e.env??process.env,n=e.defaultPort??3e3,r=e.defaultHost??`0.0.0.0`;return{port:J(t.PORT,n,e),host:Y(t.HOST,r,e)}}function J(e,t,n){let r=e?.trim(),i=r&&/^\d+$/.test(r)?Number.parseInt(r,10):NaN;return Number.isInteger(i)&&i>=1&&i<=65535?i:e===void 0?t:Z(`Invalid PORT: ${e}`,t,n)}function Y(e,t,n){let r=e?.trim();return r&&X(r)?r:e===void 0?t:Q(`Invalid HOST: ${e}`,t,n)}function X(e){return k(e)!==0||e===`localhost`||K.test(e)}function Z(e,t,n){return $(e,String(t),n),t}function Q(e,t,n){return $(e,t,n),t}function $(e,t,n){if((n.invalid??`throw`)===`throw`)throw Error(e);console.warn(`[${n.appName}] ${e}, falling back to ${t}`)}export{j as BunBusServerTransportProvider,i as ExplicitDescriptorDiscovery,a as FileConfigStorage,o as FileRegistryCache,s as FilesystemDescriptorDiscovery,c as MergedDescriptorDiscovery,l as NodeCredentialProvider,u as StoredCredentialProvider,P as bootMakaioRuntime,d as bootMakaioRuntimeCore,ee as bridgeExtensionBrowserEntries,I as collectActiveBunHostPackages,R as composeBunHostFetch,z as composeBunHostWebSocket,F as createBunHostRouter,te as createBunRouteGraphFetch,U as createGracefulShutdown,p as createHonoRouteGraph,m as createHttpRouteGraphBuilder,h as entrypointStem,g as isCliContributionLike,_ as isMakaioExtensionLike,v as isMissingOptionalRuntimePackage,y as isWithinDirectory,b as loadExtensions,x as loadOrCreateMachineIdentity,S as machineKeysExist,L as normalizeBunHostPackages,q as readBunServerEnv,C as registerAdapterNameResolver,w as resolveConventionEntrypoint,N as resolveListeningPort,T as resolveStaticModelRegistryPath,E as runMigrations,D as tryImport,O as validateMachineKeys};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, c as CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES, d as PiscinaCodeExecutionProviderOptions, i as CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER, n as CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES, o as CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS, r as CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY, s as CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES, t as CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS } from "../../types-
|
|
2
|
-
import { t as PiscinaCodeExecutionProvider } from "../../index-
|
|
1
|
+
import { a as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, c as CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES, d as PiscinaCodeExecutionProviderOptions, i as CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER, n as CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES, o as CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS, r as CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY, s as CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES, t as CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS } from "../../types-DDfy8LgJ.mjs";
|
|
2
|
+
import { t as PiscinaCodeExecutionProvider } from "../../index-CvWUgywU.mjs";
|
|
3
3
|
export { CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS, CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES, CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY, CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER, CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS, CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES, CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES, PiscinaCodeExecutionProvider, PiscinaCodeExecutionProviderOptions };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as FilesystemDescriptorDiscovery, c as enumerateDescriptorPaths, i as ExtensionEntrypointModule, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, s as MergedDescriptorDiscovery, t as DiscoveredExtension } from "../extension-discovery-
|
|
1
|
+
import { a as FilesystemDescriptorDiscovery, c as enumerateDescriptorPaths, i as ExtensionEntrypointModule, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, s as MergedDescriptorDiscovery, t as DiscoveredExtension } from "../extension-discovery-CuC5Nd5d.mjs";
|
|
2
2
|
export { DiscoveredExtension, ExplicitDescriptorDiscovery, ExtensionDiscovery, ExtensionEntrypointModule, FilesystemDescriptorDiscovery, FilesystemDescriptorDiscoveryOptions, MergedDescriptorDiscovery, enumerateDescriptorPaths };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as isMakaioExtensionLike, c as resolveConventionEntrypoint, i as isCliContributionLike, o as isWithinDirectory, r as entrypointStem } from "../load-extensions-
|
|
1
|
+
import { a as isMakaioExtensionLike, c as resolveConventionEntrypoint, i as isCliContributionLike, o as isWithinDirectory, r as entrypointStem } from "../load-extensions-C3Y3y9EW.mjs";
|
|
2
2
|
export { entrypointStem, isCliContributionLike, isMakaioExtensionLike, isWithinDirectory, resolveConventionEntrypoint };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,l as t,o as n,r,s as i}from"../load-extensions-
|
|
1
|
+
import{i as e,l as t,o as n,r,s as i}from"../load-extensions-CWlR-8BM.mjs";export{r as entrypointStem,e as isCliContributionLike,n as isMakaioExtensionLike,i as isWithinDirectory,t as resolveConventionEntrypoint};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { RuntimeSubjects } from "./bus/runtime/namespace.mjs";
|
|
2
2
|
import { NodeClientBinaryStrategyDependencyOptions, createNodeClientBinaryStrategyDependencies } from "./client-binary-strategy-dependencies.mjs";
|
|
3
|
-
import { a as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, c as CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES, d as PiscinaCodeExecutionProviderOptions, i as CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER, n as CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES, o as CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS, r as CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY, s as CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES, t as CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS } from "../types-
|
|
4
|
-
import { t as PiscinaCodeExecutionProvider } from "../index-
|
|
5
|
-
import { a as FilesystemDescriptorDiscovery, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, s as MergedDescriptorDiscovery, t as DiscoveredExtension } from "../extension-discovery-
|
|
6
|
-
import { a as isMakaioExtensionLike, c as resolveConventionEntrypoint, i as isCliContributionLike, n as LoadExtensionsOptions, o as isWithinDirectory, r as entrypointStem, s as loadExtensions, t as DescriptorSourcePackageGroup } from "../load-extensions-
|
|
7
|
-
import { $ as AuthorityRequestDeliveryError, $t as selectFrameworkCorePackages, A as HeadlessWorkerBootstrap, At as UpstreamTelemetryBootOptions, B as runHeadlessWorkflowWorker, Ct as WorkflowRunResult, D as WorkloadInvocationPreparation, Dt as MakaioRuntime, E as WorkloadControlBinding, Et as CoreBootOptions, F as HeadlessWorkerMaterializer, G as WorkflowRuntimeContributionLoader, Gt as WorkflowWorkerEntryResolverOptions, H as IsolatedWorkflowRuntime, I as HeadlessWorkerPostCommitObserver, J as InProcessWorkflowRunnerOptions, Jt as InitializeNodeDatabaseOptions, K as createIsolatedWorkflowRuntime, Kt as resolveWorkflowWorkerEntry, L as HeadlessWorkflowWorkerDeps, M as HeadlessWorkerBusConnector, N as HeadlessWorkerContributionLoader, O as WorkloadInvocationResult, Ot as ServerTransportProvider, P as HeadlessWorkerExecutor, Qt as normalizeNodeHostCapabilities, R as HeadlessWorkflowWorkerResult, St as ThinWorkflowPiscinaRunnerOptions, T as RunWorkloadInvocationOptions, Tt as BootMakaioRuntimeOptions, U as IsolatedWorkflowRuntimeContext, V as CreateIsolatedWorkflowRuntimeOptions, W as WorkflowRuntimeAuthorityConnector, Wt as WorkflowWorkerEntryMode, Xt as initializeNodeDatabase, Yt as InitializeNodeDatabaseResult, Z as AttemptOutcomeDeliveryError, Zt as HostCapabilityDeclaration, _ as admitWorkflowRunOperation, _n as activateAdapterRuntimeIdentity, a as bootstrapWorkerRuntime, an as resolveFrameworkSpecifier, at as submitAttemptOutcomeWithAck, b as registerWorkerRuntime, bt as IWorkflowRunner, c as DeliverableOperationKind, cn as HttpContributionPhase, d as OperationDeliveryEndpointIdentity, dn as HonoRouteGraphOptions, en as ShutdownStep, f as OperationDeliveryHandler, fn as createHonoRouteGraph, g as RuntimeRegistrationRefusedError, gn as PreparedAdapterRuntime, h as RegisterWorkerRuntimeOptions, hn as PrepareAdapterRuntimeInput, i as StartedWorkerRuntime, in as NoopFrameworkModuleResolver, j as HeadlessWorkerBootstrapCredentials, jt as WorkflowRunnerBootOptions, k as runWorkloadInvocation, kt as TransportReadyInfo, l as OperationAdmissionRefusedError, ln as HttpRouteContribution, m as RegisterAndAdmitWorkflowRunOptions, mn as ActivatedAdapterRuntimeIdentity, n as BootstrapStartRefusedError, nn as FrameworkModuleResolver, o as AdmitWorkflowRunOperationOptions, on as HttpRouteGraphBuilder, p as OperationDeliveryHandlers, pn as ActivateAdapterRuntimeIdentityInput, q as InProcessWorkflowRunner, qt as DatabaseBootOptions, r as BootstrapWorkerRuntimeOptions, rn as NodeFrameworkModuleResolver, s as AdmittedWorkflowRun, sn as createHttpRouteGraphBuilder, t as BootstrapRuntimeConnection, tn as BridgeBrowserOptions, tt as OutcomeDeliveryError, u as OperationDeliveryEndpoint, un as HonoRouteGraph, v as installOperationDeliveryEndpoint, vn as prepareAdapterRuntime, w as InstalledWorkloadAdapter, wt as BootCoordinatorSetupContext, y as registerAndAdmitWorkflowRun, yt as ThinWorkflowPiscinaRunner } from "../index-
|
|
3
|
+
import { a as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, c as CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES, d as PiscinaCodeExecutionProviderOptions, i as CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER, n as CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES, o as CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS, r as CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY, s as CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES, t as CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS } from "../types-DDfy8LgJ.mjs";
|
|
4
|
+
import { t as PiscinaCodeExecutionProvider } from "../index-CvWUgywU.mjs";
|
|
5
|
+
import { a as FilesystemDescriptorDiscovery, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, s as MergedDescriptorDiscovery, t as DiscoveredExtension } from "../extension-discovery-CuC5Nd5d.mjs";
|
|
6
|
+
import { a as isMakaioExtensionLike, c as resolveConventionEntrypoint, i as isCliContributionLike, n as LoadExtensionsOptions, o as isWithinDirectory, r as entrypointStem, s as loadExtensions, t as DescriptorSourcePackageGroup } from "../load-extensions-C3Y3y9EW.mjs";
|
|
7
|
+
import { $ as AuthorityRequestDeliveryError, $t as selectFrameworkCorePackages, A as HeadlessWorkerBootstrap, At as UpstreamTelemetryBootOptions, B as runHeadlessWorkflowWorker, Ct as WorkflowRunResult, D as WorkloadInvocationPreparation, Dt as MakaioRuntime, E as WorkloadControlBinding, Et as CoreBootOptions, F as HeadlessWorkerMaterializer, G as WorkflowRuntimeContributionLoader, Gt as WorkflowWorkerEntryResolverOptions, H as IsolatedWorkflowRuntime, I as HeadlessWorkerPostCommitObserver, J as InProcessWorkflowRunnerOptions, Jt as InitializeNodeDatabaseOptions, K as createIsolatedWorkflowRuntime, Kt as resolveWorkflowWorkerEntry, L as HeadlessWorkflowWorkerDeps, M as HeadlessWorkerBusConnector, N as HeadlessWorkerContributionLoader, O as WorkloadInvocationResult, Ot as ServerTransportProvider, P as HeadlessWorkerExecutor, Qt as normalizeNodeHostCapabilities, R as HeadlessWorkflowWorkerResult, St as ThinWorkflowPiscinaRunnerOptions, T as RunWorkloadInvocationOptions, Tt as BootMakaioRuntimeOptions, U as IsolatedWorkflowRuntimeContext, V as CreateIsolatedWorkflowRuntimeOptions, W as WorkflowRuntimeAuthorityConnector, Wt as WorkflowWorkerEntryMode, Xt as initializeNodeDatabase, Yt as InitializeNodeDatabaseResult, Z as AttemptOutcomeDeliveryError, Zt as HostCapabilityDeclaration, _ as admitWorkflowRunOperation, _n as activateAdapterRuntimeIdentity, a as bootstrapWorkerRuntime, an as resolveFrameworkSpecifier, at as submitAttemptOutcomeWithAck, b as registerWorkerRuntime, bt as IWorkflowRunner, c as DeliverableOperationKind, cn as HttpContributionPhase, d as OperationDeliveryEndpointIdentity, dn as HonoRouteGraphOptions, en as ShutdownStep, f as OperationDeliveryHandler, fn as createHonoRouteGraph, g as RuntimeRegistrationRefusedError, gn as PreparedAdapterRuntime, h as RegisterWorkerRuntimeOptions, hn as PrepareAdapterRuntimeInput, i as StartedWorkerRuntime, in as NoopFrameworkModuleResolver, j as HeadlessWorkerBootstrapCredentials, jt as WorkflowRunnerBootOptions, k as runWorkloadInvocation, kt as TransportReadyInfo, l as OperationAdmissionRefusedError, ln as HttpRouteContribution, m as RegisterAndAdmitWorkflowRunOptions, mn as ActivatedAdapterRuntimeIdentity, n as BootstrapStartRefusedError, nn as FrameworkModuleResolver, o as AdmitWorkflowRunOperationOptions, on as HttpRouteGraphBuilder, p as OperationDeliveryHandlers, pn as ActivateAdapterRuntimeIdentityInput, q as InProcessWorkflowRunner, qt as DatabaseBootOptions, r as BootstrapWorkerRuntimeOptions, rn as NodeFrameworkModuleResolver, s as AdmittedWorkflowRun, sn as createHttpRouteGraphBuilder, t as BootstrapRuntimeConnection, tn as BridgeBrowserOptions, tt as OutcomeDeliveryError, u as OperationDeliveryEndpoint, un as HonoRouteGraph, v as installOperationDeliveryEndpoint, vn as prepareAdapterRuntime, w as InstalledWorkloadAdapter, wt as BootCoordinatorSetupContext, y as registerAndAdmitWorkflowRun, yt as ThinWorkflowPiscinaRunner } from "../index-B8Tc0urp.mjs";
|
|
8
8
|
import { ConfiguredRuntimeOptions, LoadMakaioConfigOptions, LoadedMakaioConfig, MAKAIO_CONFIG_FILE_ENV, MAKAIO_HOME_ENV, MakaioConfig, ParseMakaioConfigOptions, ParsedMakaioConfig, WorkflowRunnerConfig, buildConfiguredRuntimeOptions, createMakaioConfigDiscovery, defineMakaioConfig, loadMakaioConfig, parseMakaioConfig, resolveMakaioConfigPath, resolveMakaioHome, shouldIncludeExtension } from "./makaio-config.mjs";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
import { IConfigStorage } from "@makaio/framework/core";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../semver-BI7kTNsY.mjs";import{A as i,D as a,E as o,F as s,I as c,L as l,M as u,N as d,O as f,P as p,R as m,a as h,c as g,f as _,g as v,h as y,i as b,j as x,k as S,l as C,n as w,o as T,p as E,r as D,t as O,z as ee}from"../workflow-worker-CmIkKnpF.mjs";import{createNodeClientBinaryStrategyDependencies as k}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as te,RuntimeSubjects as ne}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as re,FilesystemDescriptorDiscovery as ie,MergedDescriptorDiscovery as ae}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as oe,MAKAIO_HOME_ENV as se,buildConfiguredRuntimeOptions as A,createMakaioConfigDiscovery as j,defineMakaioConfig as ce,loadMakaioConfig as le,parseMakaioConfig as ue,resolveMakaioConfigPath as de,resolveMakaioHome as fe,shouldIncludeExtension as pe}from"./makaio-config.mjs";import{n as me}from"../extension-package-provenance-aYrZuS4W.mjs";import{t as he}from"../descriptor-to-package-CcjdoWP4.mjs";import{a as M,c as ge,i as N,l as _e,n as P,o as ve,r as F,s as ye,t as be}from"../load-extensions-D9inWcDy.mjs";import{a as xe,c as Se,i as Ce,n as we,o as Te,r as Ee,s as De,t as Oe}from"../bootstrap-start-client-DrvofWwi.mjs";import{a as ke,c as Ae,i as je,n as Me,o as Ne,r as Pe,s as Fe,t as Ie}from"../types-Cwza95hS.mjs";import{t as Le}from"../code-execution-CweDSWco.mjs";import{createRequire as Re}from"node:module";import{z as I}from"zod";import{execFile as ze}from"node:child_process";import{promisify as Be}from"node:util";import{fileURLToPath as Ve,pathToFileURL as He}from"node:url";import*as L from"node:fs/promises";import*as R from"node:path";import z from"node:path";import*as Ue from"node:crypto";import{createHash as We}from"node:crypto";import*as B from"node:fs";import{existsSync as Ge,readFileSync as Ke,statSync as qe}from"node:fs";import{isRecord as Je}from"@makaio/framework/utils";import{createBusNamespace as Ye}from"@makaio/framework/core";import{ChannelClosedError as Xe,MakaioBus as Ze,openChannel as Qe,projectSubjectTelemetryFacts as $e}from"@makaio/framework/bus";import{AIModelSchema as et,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as tt,ConfigSchema as nt,ConfigSubjects as rt,CredentialSubjects as it,FrameworkContractNamespaces as at,FrameworkStorageNamespaces as ot,SubjectTelemetrySubjects as st,isDetachedDescriptor as ct,registerWorkerProvider as lt,safeParseExtensionDescriptor as ut,unregisterWorkerProvider as dt,versionSatisfies as ft}from"@makaio/framework/contracts";import{DispatchingAuth as pt,E2EAuth as mt,HmacAuth as ht,WebSocketClientTransport as gt}from"@makaio/framework/node/transports";import{BootNamespace as _t,ExtensionCoordinator as vt,ExtensionNamespace as yt,KernelNamespace as bt,createShutdownSequence as xt}from"@makaio/framework/kernel";import{BaseService as St}from"@makaio/framework/service-base";import{uniqueIndex as Ct}from"drizzle-orm/sqlite-core";import{uniqueIndex as wt}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as Tt,defineDialectSchema as Et,defineDualTable as Dt,findStorageEngine as Ot,getDatabaseDialect as kt,getRawSqlExecutor as At,getStorageEngine as jt,registerDrizzleHandlers as Mt,registerStorageEngine as Nt,resolveSchema as Pt,resolveStorageEngine as Ft,resolveStorageEngineForUrl as It}from"@makaio/framework/storage/drizzle";import{and as Lt,eq as V,sql as H}from"drizzle-orm";import{parseStoredCredentialRef as Rt}from"@makaio/framework/contracts/config";import*as zt from"node:os";import{ProviderStorageSubjects as Bt}from"@makaio/framework/services/settings/storage";import{FrameworkServicesCoreNamespaces as Vt,createArtifactKindContributionProcessor as Ht,createArtifactLifecycleHookContributionProcessor as Ut,createFacetNamespaceContributionProcessor as Wt,createModelRegistryPackage as Gt,createReactionContributionProcessor as Kt,createToolContributionProcessor as qt,createTransitionContributionProcessor as Jt,createWorkflowBlockContributionProcessor as Yt}from"@makaio/framework/services";import{CachedRegistryFetcher as Xt,FallbackRegistryFetcher as Zt,ModelRegistrySchema as Qt,ProviderModelOverrideSchema as $t,mergeModelMetadata as en}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as tn}from"@makaio/framework/clients";import{createDatabaseClient as nn}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as rn,resolveAdapterRuntimeSnapshot as an,resolveBoundProviderAuth as on,resolveConnectorCredentials as sn,resolveCredentialRef as cn}from"@makaio/framework/adapters/config";import{DefinitionSubjects as ln}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as un}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as dn}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as fn,FileAdapterConfigRepository as pn,orderAfterAdapterSubsystem as mn}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as hn,loadOrCreateMachineIdentity as gn,machineKeysExist as _n,validateMachineKeys as vn}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as yn}from"@makaio/framework/utils/workspace-root";import{Hono as bn}from"hono";import{CliNamespace as xn}from"@makaio/framework/kernel/cli";import{startBusServer as Sn}from"@makaio/framework/node/bus-server";import{WebSocketServer as Cn}from"ws";import{ConfigProvider as wn}from"@makaio/framework/providers";import{KernelSubjects as U}from"@makaio/framework/kernel/namespace";import{createAutomationTriggerContributionProcessor as Tn,selectAutomationCronSchedulerPackage as En}from"@makaio/framework/services/automation-trigger";import{createArtifactViewBuilderContributionProcessor as Dn,createSurfaceBindingContributionProcessor as On}from"@makaio/framework/services/materialization";import{createLogImportContributionProcessor as kn,logImportRegistryPackage as An}from"@makaio/framework/services/log-import";import{WorkflowEngineToken as jn,createWorkflowEnginePackage as Mn}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Nn,PreferencesSubjects as Pn}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as Fn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as In}from"@hono/node-server/serve-static";var Ln=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function Rn(e){let t=e.providerProtocol;if(t===void 0)throw new Ln;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function zn(e){let t,n=!1;for(let r=e.length-1;r>=0;--r){let i=e[r];try{i()}catch(e){n||=(t=e,!0)}}if(e.length=0,n)throw t}function Bn(e,t){try{return t()}catch(t){try{zn(e)}catch{}throw t}}function Vn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function Hn(e){let{$schema:t,...n}=e;return n}function Un(e){let t=e.definition,n=Date.now();return{id:t.id,packageName:e.providerPackageName,name:t.name,description:t.description,endpoints:t.endpoints,defaultModel:t.defaultModel,fastModel:t.fastModel,availableModels:t.availableModels??[],defaultModelFilterMode:`show-all`,authMethods:t.authMethods,capabilities:t.capabilities,enabled:!0,createdAt:n,updatedAt:n}}function Wn(e,t,n,r){let i=[];return Bn(i,()=>(i.push(e.on(dn.adapter.getConfigSchema,({payload:e,setResult:n})=>{let r=t().find(t=>t.name===e.adapterName);if(!r?.adapterConfigSchema){n({hasSchema:!1,schema:null});return}n({hasSchema:!0,schema:I.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(ln.getConfigSchema,({payload:e,setResult:n})=>{let r=Vn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:I.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(dn.extension.getConfigSchema,({payload:e,setResult:t})=>{let n=r(e.extensionName);if(!n?.configSchema){t({hasSchema:!1,schema:null,uiConfig:null});return}t({hasSchema:!0,schema:Hn(I.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Bt.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:Un(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Bt.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(Un(t)));e({providers:n})},{priority:-1})),i.push(e.on(un.listModelFetchAdapters,async({payload:r,setResult:i})=>{let a=[];for(let i of t()){let t=i.options.adapterId,o=t?n().get(t):void 0;if(!(!o||!(`fetchModels`in o)||typeof o.fetchModels!=`function`))try{await an(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof rn))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(un.fetchModels,async({payload:r,setResult:i})=>{let a=t().find(e=>e.name===r.adapterName);if(!a)throw Error(`Adapter '${r.adapterName}' is not loaded for live model discovery`);let o=await an(e,{adapterName:a.name,providerConfigId:r.providerConfigId}),s=a.options.adapterId,c=s?n().get(s):void 0;if(!s||!c)throw Error(`Adapter instance for '${a.name}' not initialized`);if(!(`fetchModels`in c)||typeof c.fetchModels!=`function`)throw Error(`Adapter '${a.name}' does not support model fetching`);let l=Rn(o),u=await on(o.boundProviderAuth,t=>sn(e,t));i({models:await c.fetchModels(l,u)})})),()=>{zn(i)}))}function Gn(e=`sqlite`){let{migrations:t}=jt(e);return t.resolveSourceChainDir?.()??z.resolve(import.meta.dirname,`..`,t.chainDirName)}var Kn=class extends Error{expectedDialect;journalDialect;constructor(e,t,n,r){super(`Migration journal at ${r} declares dialect '${n??`unknown`}', but the target database speaks '${e}'. Point the runner at a migrations directory generated for '${e}' (journal dialect '${t}').`),this.name=`MigrationDialectMismatchError`,this.expectedDialect=e,this.journalDialect=n}};function qn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??Gn(t),r=z.join(n,`meta`,`_journal.json`);if(!Ge(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(Ke(r,`utf-8`));if(t!==void 0){let e=jt(t).migrations.journalDialect;if(i.dialect!==e)throw new Kn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=Ke(z.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:We(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function Jn(e){return e.replace(/--.*$/gm,``).trim()}async function Yn(e,t){try{await e.run(H.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function Xn(e){let{migrations:t}=e.engine;if(await e.session.run(H.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await Yn(e.session,{migrationsTable:e.tableName}),t}}async function Zn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await Xn(e);try{await e.session.run(H.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(H`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(H.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await Yn(e.session,{migrationsTable:e.tableName}),n}}async function Qn(e,t){try{await e.session.run(H`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(H.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function $n(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(H`SELECT hash FROM ${e.tableId} WHERE hash = ${t.hash}`)).length===0?!1:(console.warn(`[storage-migrations] Migration already recorded by a concurrent runner, skipping`,{hash:t.hash,folderMillis:t.folderMillis}),await e.session.run(H.raw(`COMMIT`)),!0)}async function er(e,t){await e.session.run(H.raw(`ROLLBACK`)),await Xn(e),!await $n(e,t)&&await Qn(e,t)}async function tr(e,t){await Xn(e);try{if(await $n(e,t))return;for(let[n,r]of t.sql.entries())if(Jn(r))try{await e.session.run(H.raw(r))}catch(i){if(n===0&&/^\s*CREATE\s/i.test(r)&&e.engine.errors.isDuplicateObjectError(i)){if(t.sql.length>1)throw Error(`Cannot adopt multi-statement migration '${t.tag}' because its first schema object already exists. Reset the database or provide an incremental migration.`,{cause:i});console.warn(`[storage-migrations] Schema object already exists, adopting into ledger`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n}),await er(e,t);return}throw console.error(`[storage-migrations] Failed to apply migration statement`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n,statement:r,error:i}),i}await Qn(e,t)}catch(n){throw await Yn(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function nr(e,t,n){let r=e.engine.migrations.constraintSuspension;if(!r?.isRequestedBy(t.sql)){await n();return}await e.session.run(H.raw(r.suspendStatement));try{await n()}finally{await e.session.run(H.raw(r.restoreStatement))}}async function rr(e,t,n){let r=At(e),i=jt(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:H.identifier(a)},r=await Zn(n);for(let e of t)r.has(e.hash)||(await nr(n,e,()=>tr(n,e)),r.add(e.hash))})}async function ir(e,t={}){await rr(e,qn({migrationsDir:t.migrationsDir,expectedDialect:kt(e)})),await Ft(e).fts.provisionSearchIndex(e)}var ar=class{configPath;constructor(e){this.configPath=R.join(e,`config.json`)}async getConfig(){try{let e=await L.readFile(this.configPath,`utf-8`);return nt.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return nt.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),nt.parse({});throw e}}async saveConfig(e){let t=R.dirname(this.configPath);await L.mkdir(t,{recursive:!0}),await L.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await L.chmod(this.configPath,384)}};function or(e){try{let t=yn(e);return[R.resolve(t,`framework/static/model-registry.yaml`),R.resolve(t,`static/model-registry.yaml`)].find(e=>{try{return qe(e).isFile()}catch{return!1}})}catch{return}}async function sr(e,t){await new Promise((n,r)=>{if(e.address()){n();return}let i=e=>{if(o(),e.code===`EADDRINUSE`){r(Error(`Port ${t} is already in use`));return}r(e)},a=()=>{o(),n()},o=()=>{e.off(`error`,i),e.off(`listening`,a)};e.once(`error`,i),e.once(`listening`,a)}),e.on(`error`,e=>{console.error(`[HttpServer] Post-bind error:`,e)})}function cr(e){let t=e.address();if(typeof t==`object`&&t&&`port`in t)return t.port;throw Error(`HTTP server is not bound to a TCP address`)}function lr(e,t){let n=e,r=!1;return{fetch:(e,i,a)=>{if(!r)return new Response(`Makaio runtime is booting`,{status:503,headers:{"Retry-After":`1`}});let{pathname:o}=new URL(e.url);return t?.health&&e.method===`GET`&&o===`/health`?Response.json(t.health()):e.method===`GET`&&o===`/bus`?new Response(`WebSocket endpoint`,{status:426,headers:{Upgrade:`websocket`}}):n.fetch(e,i,a)},markReady(){r=!0},replaceApp(e){n=e}}}const ur=[`extension`,`static-fallback`];function dr(e){let t=[];function n(e){let t=new bn,n=[...e].sort((e,t)=>ur.indexOf(e.phase)-ur.indexOf(t.phase));for(let e of n)e.mount(t);return t}function r(){return n(t)}function i(r){e&&e.replaceApp(n(r)),t=r}return{add(e){i([...t,e])},remove(e){let n=t.filter(t=>t.owner!==e);n.length!==t.length&&i(n)},build:r,get contributions(){return[...t]}}}function fr(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function pr(e,t){return(n,r,i)=>{if(!fr(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var mr=class{options;busServer=null;websocketServer=null;upgradeHandlerServer=null;upgradeHandler=null;busReady=!1;connecting=!1;constructor(e){this.options=e}get dispatchingAuth(){return this.options.auth instanceof pt?this.options.auth:void 0}async connect(e,t){if(this.connecting||this.busServer||this.websocketServer)throw Error(`[BusServerTransport] connect() called while transport is already connected or connecting`);if(this.options.httpServer.address()===null)throw Error(`[BusServerTransport] httpServer must already be listening before connect() is called`);this.connecting=!0;try{let t=new Cn({noServer:!0});this.websocketServer=t;let n=pr(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await Sn({websocket:t,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`node`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`shutdown`)}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}detachUpgradeHandler(){this.upgradeHandlerServer&&this.upgradeHandler&&this.upgradeHandlerServer.off(`upgrade`,this.upgradeHandler),this.upgradeHandlerServer=null,this.upgradeHandler=null}async stopWebSocketServer(e){this.websocketServer&&=(await new Promise((e,t)=>{this.websocketServer.close(n=>n?t(n):e())}).catch(t=>{t instanceof Error&&t.message===`The server is not running`||console.error(`[BusServerTransport] Failed to close WebSocket server during ${e}:`,t)}),null)}},hr=class extends wn{keysDir;constructor(e,t){super(e),this.keysDir=R.join(t,`keys`)}async getConfig(e){let t=await super.getConfig(e);return t.bus?.remote&&!t.bus.remote.secret&&(t.bus.remote.secret=this.generateSecret(),(await this.getStoredConfig()).bus?.remote?.url===t.bus.remote.url&&await this.saveConfig(await this.prepareConfigForPersistence(t))),t}generateSecret(){return Ue.randomBytes(32).toString(`base64`)}async getMachineId(){return(await gn(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function gr(e,t){return{extensions:e.discovery??new ie(void 0,{extensionsDir:z.join(t,`extensions`),nodeModulesDir:z.join(t,`node_modules`)})}}function _r(e){return Ge(z.join(e,`meta`,`_journal.json`))}function vr(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=Gn}=t,i=jt(e).migrations.chainDirName,a=[],o=z.resolve(n,`..`,i);if(_r(o))return o;a.push(o);try{let t=r(e);if(_r(t))return t;a.push(t)}catch(t){a.push(`getMigrationsFolder('${e}') unavailable: ${t instanceof Error?t.message:String(t)}`)}throw Error(`resolveBundledMigrationsDir: no '${e}' migrations directory with meta/_journal.json found. Probed: ${a.join(`; `)}. Pass an explicit migrations directory (boot option 'centralMigrationsDir' or InitializeNodeDatabaseOptions.migrationsDir) when migrations are staged elsewhere.`)}function yr(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function br(e){return e===void 0||e.trim()===``?void 0:e}function xr(e){try{let t=new URL(e);if(t.host!==``)return`${t.protocol}//${t.host}${t.pathname}`}catch{}let t=e.indexOf(`:`);return t===-1?`<unparseable database URL>`:`${e.slice(0,t+1)}…`}async function Sr(e,t,n){let r;try{r=await import(He(Re(R.resolve(t,`package.json`)).resolve(e.packageName)).href)}catch(t){throw Error(`initializeNodeDatabase: the database URL from ${n} targets the '${e.dialect}' storage engine, but '${e.packageName}' could not be loaded. Install ${e.packageName} in the host application, or pass its already-loaded storageEngine via the 'database.engines' boot option.`,{cause:t})}let i=r.storageEngine;if(i===void 0||i.dialect!==e.dialect)throw Error(`initializeNodeDatabase: '${e.packageName}' does not provide a storage engine for dialect '${e.dialect}'. Auto-resolved engine packages must export 'storageEngine: StorageEngine' with a matching dialect.`);Ot(e.dialect)===void 0&&Nt(i)}async function Cr(e){let t=br(e.database?.url),n=t??br(process.env.MAKAIO_DATABASE_URL);if(n!==void 0){let r=t===void 0?`the MAKAIO_DATABASE_URL environment variable`:`the 'database.url' boot option`,i=It(n);if(i.kind===`missing-engine`&&(await Sr(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=It(n)),i.kind!==`engine`){let e=Tt.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${xr(n)}' from ${r}. URL targets require a storage engine that claims the URL (e.g. postgres:// / postgresql:// via ${e}); SQLite targets are configured via the dbPath option or MAKAIO_DATABASE_PATH.`)}return{kind:`url`,url:n,dialect:i.engine.dialect}}let r=R.resolve(br(e.dbPath)??br(process.env.MAKAIO_DATABASE_PATH)??R.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:He(r).href}}async function wr(e){for(let t of e.database?.engines??[])Nt(t);let t=await Cr(e);if(t.kind===`url`){let n=await nn({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??vr(t.dialect);return await ir(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=R.dirname(n);await B.promises.mkdir(r,{recursive:!0});let i=await nn({url:t.url});try{await ir(i.db,{migrationsDir:e.migrationsDir});try{await B.promises.chmod(n,384)}catch(e){if(!yr(e))throw e;console.warn(`[initializeNodeDatabase] Failed to set SQLite file permissions (continuing; this may be unsupported on Windows):`,e)}return{databaseClient:i,dbPath:n}}catch(e){throw await i.close(),e}}const Tr=I.object({npmName:I.string(),version:I.string(),source:I.enum([`new`,`upgraded`,`already-present`])}),Er=I.object({npmName:I.string(),reason:I.string()}),Dr=I.object({success:I.boolean(),packageName:I.string(),version:I.string().optional(),restartRequired:I.boolean(),error:I.string().optional(),installed:I.array(Tr).optional(),skipped:I.array(Er).optional(),warnings:I.array(I.string()).optional()}),Or=I.object({success:I.boolean(),packageName:I.string(),error:I.string().optional(),restartRequired:I.boolean()}),kr=I.object({name:I.string(),version:I.string(),description:I.string().optional(),hasDescriptor:I.boolean().default(!1),serverImportPath:I.string().min(1).optional()}),Ar=I.object({packageName:I.string(),latestVersion:I.string(),success:I.boolean(),error:I.string().optional()}),jr=I.object({name:I.string(),displayName:I.string(),description:I.string(),icon:I.string().optional(),tags:I.array(I.string()).optional(),descriptorName:I.string().min(1).optional()}),Mr=I.object({$schema:I.string(),updatedAt:I.string(),adapters:I.array(jr),extensions:I.array(jr)}),Nr=I.object({name:I.string(),currentVersion:I.string(),latestVersion:I.string(),description:I.string().optional()}),Pr=Ye(`packages`,{list:{request:I.object({}),response:I.object({packages:I.array(kr)})},install:{request:I.object({packageName:I.string().optional(),packageNames:I.array(I.string()).min(1).optional(),source:I.enum([`npm`,`local`]).optional(),force:I.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Dr},uninstall:{request:I.object({packageName:I.string()}),response:Or},getLatestVersion:{request:I.object({packageName:I.string()}),response:Ar},getRegistry:{request:I.object({}),response:Mr},checkUpdates:{request:I.object({}),response:I.object({updates:I.array(Nr)})},installed:I.object({packageName:I.string(),version:I.string()}),uninstalled:I.object({packageName:I.string()})}),W=Pr.subjects;async function Fr(e,t,n){if(!R.isAbsolute(e))return;let r;try{r=await L.realpath(e)}catch{return}let i=Ir(t,n),a=[R.resolve(r,`src`,`${i}.ts`),R.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await Lr(e);if(t!==void 0&&Rr(t,r))return t}}function Ir(e,t){return t===!0?e:t}async function Lr(e){try{return await L.realpath(e)}catch{return}}function Rr(e,t){let n=R.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!R.isAbsolute(n)}var zr=class{extensionsDir;constructor(e){this.extensionsDir=R.resolve(e)}async install(e){try{let t=R.resolve(e.endsWith(`descriptor.json`)?R.dirname(e):e),n=await L.realpath(t),r=await this.readDescriptor(n);ct(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await L.mkdir(R.dirname(i),{recursive:!0});try{if((await L.lstat(i)).isSymbolicLink())await L.unlink(i);else throw Error(`${i} already exists and is not a symlink`)}catch(e){if(e.code!==`ENOENT`)throw e}let a=process.platform===`win32`?`junction`:`dir`;return await L.symlink(n,i,a),{success:!0,packageName:r.name,version:r.version,restartRequired:!0}}catch(e){return{success:!1,packageName:``,error:e instanceof Error?e.message:String(e),restartRequired:!1}}}async uninstall(e){try{let t=this.linkPathFor(e);if(await L.unlink(t),e.startsWith(`@`)){let e=R.dirname(t);(await L.readdir(e).catch(()=>null))?.length===0&&await L.rmdir(e).catch(()=>{})}return{success:!0,packageName:e,restartRequired:!0}}catch(t){return{success:!1,packageName:e,error:t instanceof Error?t.message:String(t),restartRequired:!1}}}async list(){try{await L.access(this.extensionsDir)}catch{return[]}let e=await L.readdir(this.extensionsDir),t=[];for(let n of e){let e=R.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await L.readdir(e).catch(()=>[]);for(let r of n){let n=R.join(e,r),i=await this.readLocalEntry(n);i!==null&&t.push(i)}}else{let n=await this.readLocalEntry(e);n!==null&&t.push(n)}}return t}async readLocalEntry(e){try{if(!(await L.lstat(e)).isSymbolicLink())return null;let t=await L.readlink(e),n=await L.realpath(R.resolve(R.dirname(e),t)),r=R.join(n,`descriptor.json`),i=await L.readFile(r,`utf-8`),a=ut(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Fr(n,`server`,o);return{name:a.data.name,version:a.data.version,sourcePath:n,source:`local`,...s!==void 0&&{serverImportPath:s}}}catch{return null}}async readDescriptor(e){let t=R.join(e,`descriptor.json`),n=await L.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=ut(JSON.parse(n));if(!r.success)throw Error(`Invalid descriptor.json: ${r.error.message}`);return r.data}async validateEntrypoints(e,t){await Promise.all(Object.entries(t).map(async([t,n])=>{if(n!==void 0&&await Fr(e,t,n)===void 0){let e=Ir(t,n);throw Error(`${t} entrypoint "${e}" has no resolvable candidate: neither src/${e}.ts nor dist/${e}.mjs exists within the extension root`)}}))}linkPathFor(e){let t=R.resolve(this.extensionsDir,...e.split(`/`)),n=R.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||R.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const Br=`nodeLinker: node-modules`,Vr=/^[A-Za-z]:[\\/]/;let Hr=null;function G(){return Hr||(Hr=Promise.all([import(`../lib-RFpLjUda.mjs`).then(e=>t(e.t(),1)),import(`../lib-6eNAiNK7.mjs`).then(e=>t(e.t(),1)),import(`../lib-271rPR7A.mjs`).then(e=>t(e.default,1))]).then(([e,t,n])=>({Configuration:e.Configuration,Project:e.Project,Cache:e.Cache,StreamReport:e.StreamReport,structUtils:e.structUtils,ppath:t.ppath,npath:t.npath,xfs:t.xfs,getPluginConfiguration:n.getPluginConfiguration})),Hr)}var Ur=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await G(),r=e.toPortablePath(this.makaioHome),i=t.join(r,`package.json`);if(await n.mkdirpPromise(r),await this.ensureYarnRc(r,n,t),await n.existsPromise(i))return;await n.writeJsonPromise(i,{name:`makaio-packages`,version:`1.0.0`,private:!0,description:`Makaio installed packages`,dependencies:{}}),console.info(`[YarnPackageManager] Created package.json at %s`,i)}catch(e){throw Error(`Failed to initialize package.json`,{cause:e})}}async ensureYarnRc(e,t,n){let r=n.join(e,`.yarnrc.yml`),i=await t.existsPromise(r)?await t.readFilePromise(r,`utf8`):``,a=Jr(i);i!==a&&(await t.writeFilePromise(r,a),console.info(`[YarnPackageManager] Wrote .yarnrc.yml at %s`,r))}async loadYarnState(){let{Configuration:e,Project:t,Cache:n,npath:r,getPluginConfiguration:i}=await G(),a=r.toPortablePath(this.makaioHome),o=await e.find(a,i()),{project:s}=await t.find(o,a);return{configuration:o,project:s,cache:await n.find(o)}}async runProjectInstall(e,t,n){let{StreamReport:r}=await G();if((await r.start({configuration:e,stdout:process.stdout},async e=>{await t.install({cache:n,report:e})})).hasErrors())throw Error(`Yarn install failed with errors`)}async parsePackageDescriptor(e){let{structUtils:t}=await G(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await G(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=await this.parsePackageDescriptor(e),o=t.stringifyIdent(a),s=r.topLevelWorkspace.manifest.dependencies.get(a.identHash);r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i);let c=r.storedResolutions.get(a.descriptorHash);if(!c)throw Error(`Package resolution not found after installation`);let l=r.storedPackages.get(c);if(!l)throw Error(`Package not found after installation`);let u=l.version??`unknown`;if(!(await this.readInstalledDescriptor(o)).hasDescriptor)throw s?r.topLevelWorkspace.manifest.dependencies.set(a.identHash,s):r.topLevelWorkspace.manifest.dependencies.delete(a.identHash),await this.runProjectInstall(n,r,i),Error(`Installed package ${o} does not contain a valid descriptor.json`);return console.info(`[YarnPackageManager] Installed %s@%s`,o,u),u}catch(t){throw Error(`Failed to install ${e}`,{cause:t})}}async uninstallPackage(e){try{let{structUtils:t}=await G(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=t.parseIdent(e);if(!r.topLevelWorkspace.manifest.dependencies.delete(a.identHash))throw Error(`Package ${e} not found in dependencies`);await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Uninstalled %s`,e)}catch(t){throw Error(`Failed to uninstall ${e}`,{cause:t})}}async listPackages(){try{let{xfs:e,npath:t,ppath:n,structUtils:r}=await G(),i=t.toPortablePath(this.makaioHome),a=n.join(i,`package.json`);if(!await e.existsPromise(a))return[];let{project:o}=await this.loadYarnState(),s=[];for(let[,e]of o.topLevelWorkspace.manifest.dependencies){let t=r.stringifyIdent(e),n=o.storedResolutions.get(e.descriptorHash),i=(n?o.storedPackages.get(n):void 0)?.version??r.parseRange(e.range).selector,a=await this.readInstalledDescriptor(t);a.hasDescriptor&&s.push({name:t,version:i,hasDescriptor:!0,...a.serverImportPath!==void 0&&{serverImportPath:a.serverImportPath}})}return s}catch(e){throw Error(`Failed to list packages`,{cause:e})}}async ensureFrameworkDependency(e){let t=Kr(e);try{let{structUtils:e}=await G(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=e.makeDescriptor(e.parseIdent(`@makaio/framework`),t);if(r.topLevelWorkspace.manifest.dependencies.get(a.identHash)?.range===t)return;r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Ensured @makaio/framework@%s`,t)}catch(e){throw Error(`Failed to ensure @makaio/framework@${t}`,{cause:e})}}async getLatestVersion(e){return this.resolvePackageVersion(e)}async readInstalledDescriptor(e){let t=await this.readInstalledExtensionDescriptor(e);if(t===null)return{hasDescriptor:!1};let n=await this.resolveInstalledServerEntrypoint(e,t);return{hasDescriptor:!0,...n!==void 0&&{serverImportPath:n}}}async resolveInstalledServerEntrypoint(e,t){let n=t.entrypoints?.server;if(n!==void 0)return Fr(R.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=R.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await L.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||Yr(e))return null;throw e}let r=ut(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=R.join(this.makaioHome,`package.json`),t;try{let n=await L.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(Yr(e))return[];throw e}let n=Object.keys(t.dependencies??{});return(await Promise.all(n.map(async e=>{let t=await this.readInstalledExtensionDescriptor(e);return t===null?null:{npmName:e,version:await this.readInstalledPackageVersion(e),descriptor:t}}))).filter(e=>e!==null)}async readInstalledPackageVersion(e){let t=R.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await L.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=R.join(this.makaioHome,`package.json`),t=await L.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=R.join(this.makaioHome,`package.json`);await L.writeFile(t,`${JSON.stringify(e,null,2)}\n`,`utf-8`);let{configuration:n,project:r,cache:i}=await this.loadYarnState();await this.runProjectInstall(n,r,i)}async resolvePackageVersion(e){try{let{StreamReport:t}=await G(),{configuration:n,project:r}=await this.loadYarnState(),i=await this.parsePackageDescriptor(e),a=`unknown`;return await t.start({configuration:n,stdout:process.stdout},async e=>{let t=n.makeResolver(),o=await t.getCandidates(i,{},{project:r,resolver:t,report:e});if(o.length>0){let e=o[0];a=e.reference.match(/^npm:(.+)$/)?.[1]??e.reference}}),a}catch(t){throw Error(`Failed to resolve version for ${e}`,{cause:t})}}};function Wr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function Gr(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t===-1)return e;let n=e.indexOf(`@`,t+1);return n===-1?e:e.slice(0,n)}let t=e.indexOf(`@`);return t===-1?e:e.slice(0,t)}function Kr(e){return e.localPackagePath?`portal:${qr(e.localPackagePath)}`:e.versionRange}function qr(e){let t=(Vr.test(e)?e:R.resolve(e)).replace(/\\/g,`/`);return Vr.test(t)?`/${t}`:t}function Jr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,Br):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
|
|
1
|
+
import{i as e,o as t,t as n}from"../chunk-DTipWd-i.mjs";import{t as r}from"../semver-BI7kTNsY.mjs";import{A as i,D as a,E as o,F as s,I as c,L as l,M as u,N as d,O as f,P as p,R as m,a as h,c as g,f as _,g as v,h as y,i as b,j as x,k as S,l as C,n as w,o as T,p as E,r as D,t as O,z as ee}from"../workflow-worker-CmIkKnpF.mjs";import{createNodeClientBinaryStrategyDependencies as k}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as te,RuntimeSubjects as ne}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as re,FilesystemDescriptorDiscovery as ie,MergedDescriptorDiscovery as ae}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as oe,MAKAIO_HOME_ENV as se,buildConfiguredRuntimeOptions as A,createMakaioConfigDiscovery as j,defineMakaioConfig as ce,loadMakaioConfig as le,parseMakaioConfig as ue,resolveMakaioConfigPath as de,resolveMakaioHome as fe,shouldIncludeExtension as pe}from"./makaio-config.mjs";import{n as me}from"../extension-package-provenance-aYrZuS4W.mjs";import{t as he}from"../descriptor-to-package-CcjdoWP4.mjs";import{a as M,c as ge,i as N,l as _e,n as P,o as ve,r as F,s as ye,t as be}from"../load-extensions-CWlR-8BM.mjs";import{a as xe,c as Se,i as Ce,n as we,o as Te,r as Ee,s as De,t as Oe}from"../bootstrap-start-client-DrvofWwi.mjs";import{a as ke,c as Ae,i as je,n as Me,o as Ne,r as Pe,s as Fe,t as Ie}from"../types-Cwza95hS.mjs";import{t as Le}from"../code-execution-CweDSWco.mjs";import{createRequire as Re}from"node:module";import{z as I}from"zod";import{execFile as ze}from"node:child_process";import{promisify as Be}from"node:util";import{fileURLToPath as Ve,pathToFileURL as He}from"node:url";import*as L from"node:fs/promises";import*as R from"node:path";import z from"node:path";import*as Ue from"node:crypto";import{createHash as We}from"node:crypto";import*as B from"node:fs";import{existsSync as Ge,readFileSync as Ke,statSync as qe}from"node:fs";import{isRecord as Je}from"@makaio/framework/utils";import{createBusNamespace as Ye}from"@makaio/framework/core";import{ChannelClosedError as Xe,MakaioBus as Ze,openChannel as Qe,projectSubjectTelemetryFacts as $e}from"@makaio/framework/bus";import{AIModelSchema as et,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as tt,ConfigSchema as nt,ConfigSubjects as rt,CredentialSubjects as it,FrameworkContractNamespaces as at,FrameworkStorageNamespaces as ot,SubjectTelemetrySubjects as st,isDetachedDescriptor as ct,registerWorkerProvider as lt,safeParseExtensionDescriptor as ut,unregisterWorkerProvider as dt,versionSatisfies as ft}from"@makaio/framework/contracts";import{DispatchingAuth as pt,E2EAuth as mt,HmacAuth as ht,WebSocketClientTransport as gt}from"@makaio/framework/node/transports";import{BootNamespace as _t,ExtensionCoordinator as vt,ExtensionNamespace as yt,KernelNamespace as bt,createShutdownSequence as xt}from"@makaio/framework/kernel";import{BaseService as St}from"@makaio/framework/service-base";import{uniqueIndex as Ct}from"drizzle-orm/sqlite-core";import{uniqueIndex as wt}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as Tt,defineDialectSchema as Et,defineDualTable as Dt,findStorageEngine as Ot,getDatabaseDialect as kt,getRawSqlExecutor as At,getStorageEngine as jt,registerDrizzleHandlers as Mt,registerStorageEngine as Nt,resolveSchema as Pt,resolveStorageEngine as Ft,resolveStorageEngineForUrl as It}from"@makaio/framework/storage/drizzle";import{and as Lt,eq as V,sql as H}from"drizzle-orm";import{parseStoredCredentialRef as Rt}from"@makaio/framework/contracts/config";import*as zt from"node:os";import{ProviderStorageSubjects as Bt}from"@makaio/framework/services/settings/storage";import{FrameworkServicesCoreNamespaces as Vt,createArtifactKindContributionProcessor as Ht,createArtifactLifecycleHookContributionProcessor as Ut,createFacetNamespaceContributionProcessor as Wt,createModelRegistryPackage as Gt,createReactionContributionProcessor as Kt,createToolContributionProcessor as qt,createTransitionContributionProcessor as Jt,createWorkflowBlockContributionProcessor as Yt}from"@makaio/framework/services";import{CachedRegistryFetcher as Xt,FallbackRegistryFetcher as Zt,ModelRegistrySchema as Qt,ProviderModelOverrideSchema as $t,mergeModelMetadata as en}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as tn}from"@makaio/framework/clients";import{createDatabaseClient as nn}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as rn,resolveAdapterRuntimeSnapshot as an,resolveBoundProviderAuth as on,resolveConnectorCredentials as sn,resolveCredentialRef as cn}from"@makaio/framework/adapters/config";import{DefinitionSubjects as ln}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as un}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as dn}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as fn,FileAdapterConfigRepository as pn,orderAfterAdapterSubsystem as mn}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as hn,loadOrCreateMachineIdentity as gn,machineKeysExist as _n,validateMachineKeys as vn}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as yn}from"@makaio/framework/utils/workspace-root";import{Hono as bn}from"hono";import{CliNamespace as xn}from"@makaio/framework/kernel/cli";import{startBusServer as Sn}from"@makaio/framework/node/bus-server";import{WebSocketServer as Cn}from"ws";import{ConfigProvider as wn}from"@makaio/framework/providers";import{KernelSubjects as U}from"@makaio/framework/kernel/namespace";import{createAutomationTriggerContributionProcessor as Tn,selectAutomationCronSchedulerPackage as En}from"@makaio/framework/services/automation-trigger";import{createArtifactViewBuilderContributionProcessor as Dn,createSurfaceBindingContributionProcessor as On}from"@makaio/framework/services/materialization";import{createLogImportContributionProcessor as kn,logImportRegistryPackage as An}from"@makaio/framework/services/log-import";import{WorkflowEngineToken as jn,createWorkflowEnginePackage as Mn}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Nn,PreferencesSubjects as Pn}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as Fn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as In}from"@hono/node-server/serve-static";var Ln=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function Rn(e){let t=e.providerProtocol;if(t===void 0)throw new Ln;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function zn(e){let t,n=!1;for(let r=e.length-1;r>=0;--r){let i=e[r];try{i()}catch(e){n||=(t=e,!0)}}if(e.length=0,n)throw t}function Bn(e,t){try{return t()}catch(t){try{zn(e)}catch{}throw t}}function Vn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function Hn(e){let{$schema:t,...n}=e;return n}function Un(e){let t=e.definition,n=Date.now();return{id:t.id,packageName:e.providerPackageName,name:t.name,description:t.description,endpoints:t.endpoints,defaultModel:t.defaultModel,fastModel:t.fastModel,availableModels:t.availableModels??[],defaultModelFilterMode:`show-all`,authMethods:t.authMethods,capabilities:t.capabilities,enabled:!0,createdAt:n,updatedAt:n}}function Wn(e,t,n,r){let i=[];return Bn(i,()=>(i.push(e.on(dn.adapter.getConfigSchema,({payload:e,setResult:n})=>{let r=t().find(t=>t.name===e.adapterName);if(!r?.adapterConfigSchema){n({hasSchema:!1,schema:null});return}n({hasSchema:!0,schema:I.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(ln.getConfigSchema,({payload:e,setResult:n})=>{let r=Vn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:I.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(dn.extension.getConfigSchema,({payload:e,setResult:t})=>{let n=r(e.extensionName);if(!n?.configSchema){t({hasSchema:!1,schema:null,uiConfig:null});return}t({hasSchema:!0,schema:Hn(I.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Bt.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:Un(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Bt.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(Un(t)));e({providers:n})},{priority:-1})),i.push(e.on(un.listModelFetchAdapters,async({payload:r,setResult:i})=>{let a=[];for(let i of t()){let t=i.options.adapterId,o=t?n().get(t):void 0;if(!(!o||!(`fetchModels`in o)||typeof o.fetchModels!=`function`))try{await an(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof rn))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(un.fetchModels,async({payload:r,setResult:i})=>{let a=t().find(e=>e.name===r.adapterName);if(!a)throw Error(`Adapter '${r.adapterName}' is not loaded for live model discovery`);let o=await an(e,{adapterName:a.name,providerConfigId:r.providerConfigId}),s=a.options.adapterId,c=s?n().get(s):void 0;if(!s||!c)throw Error(`Adapter instance for '${a.name}' not initialized`);if(!(`fetchModels`in c)||typeof c.fetchModels!=`function`)throw Error(`Adapter '${a.name}' does not support model fetching`);let l=Rn(o),u=await on(o.boundProviderAuth,t=>sn(e,t));i({models:await c.fetchModels(l,u)})})),()=>{zn(i)}))}function Gn(e=`sqlite`){let{migrations:t}=jt(e);return t.resolveSourceChainDir?.()??z.resolve(import.meta.dirname,`..`,t.chainDirName)}var Kn=class extends Error{expectedDialect;journalDialect;constructor(e,t,n,r){super(`Migration journal at ${r} declares dialect '${n??`unknown`}', but the target database speaks '${e}'. Point the runner at a migrations directory generated for '${e}' (journal dialect '${t}').`),this.name=`MigrationDialectMismatchError`,this.expectedDialect=e,this.journalDialect=n}};function qn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??Gn(t),r=z.join(n,`meta`,`_journal.json`);if(!Ge(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(Ke(r,`utf-8`));if(t!==void 0){let e=jt(t).migrations.journalDialect;if(i.dialect!==e)throw new Kn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=Ke(z.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:We(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function Jn(e){return e.replace(/--.*$/gm,``).trim()}async function Yn(e,t){try{await e.run(H.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function Xn(e){let{migrations:t}=e.engine;if(await e.session.run(H.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await Yn(e.session,{migrationsTable:e.tableName}),t}}async function Zn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await Xn(e);try{await e.session.run(H.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(H`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(H.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await Yn(e.session,{migrationsTable:e.tableName}),n}}async function Qn(e,t){try{await e.session.run(H`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(H.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function $n(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(H`SELECT hash FROM ${e.tableId} WHERE hash = ${t.hash}`)).length===0?!1:(console.warn(`[storage-migrations] Migration already recorded by a concurrent runner, skipping`,{hash:t.hash,folderMillis:t.folderMillis}),await e.session.run(H.raw(`COMMIT`)),!0)}async function er(e,t){await e.session.run(H.raw(`ROLLBACK`)),await Xn(e),!await $n(e,t)&&await Qn(e,t)}async function tr(e,t){await Xn(e);try{if(await $n(e,t))return;for(let[n,r]of t.sql.entries())if(Jn(r))try{await e.session.run(H.raw(r))}catch(i){if(n===0&&/^\s*CREATE\s/i.test(r)&&e.engine.errors.isDuplicateObjectError(i)){if(t.sql.length>1)throw Error(`Cannot adopt multi-statement migration '${t.tag}' because its first schema object already exists. Reset the database or provide an incremental migration.`,{cause:i});console.warn(`[storage-migrations] Schema object already exists, adopting into ledger`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n}),await er(e,t);return}throw console.error(`[storage-migrations] Failed to apply migration statement`,{hash:t.hash,folderMillis:t.folderMillis,statementIndex:n,statement:r,error:i}),i}await Qn(e,t)}catch(n){throw await Yn(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function nr(e,t,n){let r=e.engine.migrations.constraintSuspension;if(!r?.isRequestedBy(t.sql)){await n();return}await e.session.run(H.raw(r.suspendStatement));try{await n()}finally{await e.session.run(H.raw(r.restoreStatement))}}async function rr(e,t,n){let r=At(e),i=jt(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:H.identifier(a)},r=await Zn(n);for(let e of t)r.has(e.hash)||(await nr(n,e,()=>tr(n,e)),r.add(e.hash))})}async function ir(e,t={}){await rr(e,qn({migrationsDir:t.migrationsDir,expectedDialect:kt(e)})),await Ft(e).fts.provisionSearchIndex(e)}var ar=class{configPath;constructor(e){this.configPath=R.join(e,`config.json`)}async getConfig(){try{let e=await L.readFile(this.configPath,`utf-8`);return nt.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return nt.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),nt.parse({});throw e}}async saveConfig(e){let t=R.dirname(this.configPath);await L.mkdir(t,{recursive:!0}),await L.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await L.chmod(this.configPath,384)}};function or(e){try{let t=yn(e);return[R.resolve(t,`framework/static/model-registry.yaml`),R.resolve(t,`static/model-registry.yaml`)].find(e=>{try{return qe(e).isFile()}catch{return!1}})}catch{return}}async function sr(e,t){await new Promise((n,r)=>{if(e.address()){n();return}let i=e=>{if(o(),e.code===`EADDRINUSE`){r(Error(`Port ${t} is already in use`));return}r(e)},a=()=>{o(),n()},o=()=>{e.off(`error`,i),e.off(`listening`,a)};e.once(`error`,i),e.once(`listening`,a)}),e.on(`error`,e=>{console.error(`[HttpServer] Post-bind error:`,e)})}function cr(e){let t=e.address();if(typeof t==`object`&&t&&`port`in t)return t.port;throw Error(`HTTP server is not bound to a TCP address`)}function lr(e,t){let n=e,r=!1;return{fetch:(e,i,a)=>{if(!r)return new Response(`Makaio runtime is booting`,{status:503,headers:{"Retry-After":`1`}});let{pathname:o}=new URL(e.url);return t?.health&&e.method===`GET`&&o===`/health`?Response.json(t.health()):e.method===`GET`&&o===`/bus`?new Response(`WebSocket endpoint`,{status:426,headers:{Upgrade:`websocket`}}):n.fetch(e,i,a)},markReady(){r=!0},replaceApp(e){n=e}}}const ur=[`extension`,`static-fallback`];function dr(e){let t=[];function n(e){let t=new bn,n=[...e].sort((e,t)=>ur.indexOf(e.phase)-ur.indexOf(t.phase));for(let e of n)e.mount(t);return t}function r(){return n(t)}function i(r){e&&e.replaceApp(n(r)),t=r}return{add(e){i([...t,e])},remove(e){let n=t.filter(t=>t.owner!==e);n.length!==t.length&&i(n)},build:r,get contributions(){return[...t]}}}function fr(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function pr(e,t){return(n,r,i)=>{if(!fr(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var mr=class{options;busServer=null;websocketServer=null;upgradeHandlerServer=null;upgradeHandler=null;busReady=!1;connecting=!1;constructor(e){this.options=e}get dispatchingAuth(){return this.options.auth instanceof pt?this.options.auth:void 0}async connect(e,t){if(this.connecting||this.busServer||this.websocketServer)throw Error(`[BusServerTransport] connect() called while transport is already connected or connecting`);if(this.options.httpServer.address()===null)throw Error(`[BusServerTransport] httpServer must already be listening before connect() is called`);this.connecting=!0;try{let t=new Cn({noServer:!0});this.websocketServer=t;let n=pr(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await Sn({websocket:t,bus:e,auth:this.options.auth,loopbackName:this.options.loopbackName??`node`}),this.busReady=!0}catch(e){throw await this.stopBusServer(`startup error`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`startup error`),e}finally{this.connecting=!1}}async disconnect(){await this.stopBusServer(`shutdown`),this.detachUpgradeHandler(),await this.stopWebSocketServer(`shutdown`)}async stopBusServer(e){this.busReady=!1,this.busServer&&=(await this.busServer.stop().catch(t=>{console.error(`[BusServerTransport] Failed to stop bus server during ${e}:`,t)}),null)}detachUpgradeHandler(){this.upgradeHandlerServer&&this.upgradeHandler&&this.upgradeHandlerServer.off(`upgrade`,this.upgradeHandler),this.upgradeHandlerServer=null,this.upgradeHandler=null}async stopWebSocketServer(e){this.websocketServer&&=(await new Promise((e,t)=>{this.websocketServer.close(n=>n?t(n):e())}).catch(t=>{t instanceof Error&&t.message===`The server is not running`||console.error(`[BusServerTransport] Failed to close WebSocket server during ${e}:`,t)}),null)}},hr=class extends wn{keysDir;constructor(e,t){super(e),this.keysDir=R.join(t,`keys`)}async getConfig(e){let t=await super.getConfig(e);return t.bus?.remote&&!t.bus.remote.secret&&(t.bus.remote.secret=this.generateSecret(),(await this.getStoredConfig()).bus?.remote?.url===t.bus.remote.url&&await this.saveConfig(await this.prepareConfigForPersistence(t))),t}generateSecret(){return Ue.randomBytes(32).toString(`base64`)}async getMachineId(){return(await gn(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function gr(e,t){return{extensions:e.discovery??new ie(void 0,{extensionsDir:z.join(t,`extensions`),nodeModulesDir:z.join(t,`node_modules`)})}}function _r(e){return Ge(z.join(e,`meta`,`_journal.json`))}function vr(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=Gn}=t,i=jt(e).migrations.chainDirName,a=[],o=z.resolve(n,`..`,i);if(_r(o))return o;a.push(o);try{let t=r(e);if(_r(t))return t;a.push(t)}catch(t){a.push(`getMigrationsFolder('${e}') unavailable: ${t instanceof Error?t.message:String(t)}`)}throw Error(`resolveBundledMigrationsDir: no '${e}' migrations directory with meta/_journal.json found. Probed: ${a.join(`; `)}. Pass an explicit migrations directory (boot option 'centralMigrationsDir' or InitializeNodeDatabaseOptions.migrationsDir) when migrations are staged elsewhere.`)}function yr(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function br(e){return e===void 0||e.trim()===``?void 0:e}function xr(e){try{let t=new URL(e);if(t.host!==``)return`${t.protocol}//${t.host}${t.pathname}`}catch{}let t=e.indexOf(`:`);return t===-1?`<unparseable database URL>`:`${e.slice(0,t+1)}…`}async function Sr(e,t,n){let r;try{r=await import(He(Re(R.resolve(t,`package.json`)).resolve(e.packageName)).href)}catch(t){throw Error(`initializeNodeDatabase: the database URL from ${n} targets the '${e.dialect}' storage engine, but '${e.packageName}' could not be loaded. Install ${e.packageName} in the host application, or pass its already-loaded storageEngine via the 'database.engines' boot option.`,{cause:t})}let i=r.storageEngine;if(i===void 0||i.dialect!==e.dialect)throw Error(`initializeNodeDatabase: '${e.packageName}' does not provide a storage engine for dialect '${e.dialect}'. Auto-resolved engine packages must export 'storageEngine: StorageEngine' with a matching dialect.`);Ot(e.dialect)===void 0&&Nt(i)}async function Cr(e){let t=br(e.database?.url),n=t??br(process.env.MAKAIO_DATABASE_URL);if(n!==void 0){let r=t===void 0?`the MAKAIO_DATABASE_URL environment variable`:`the 'database.url' boot option`,i=It(n);if(i.kind===`missing-engine`&&(await Sr(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=It(n)),i.kind!==`engine`){let e=Tt.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${xr(n)}' from ${r}. URL targets require a storage engine that claims the URL (e.g. postgres:// / postgresql:// via ${e}); SQLite targets are configured via the dbPath option or MAKAIO_DATABASE_PATH.`)}return{kind:`url`,url:n,dialect:i.engine.dialect}}let r=R.resolve(br(e.dbPath)??br(process.env.MAKAIO_DATABASE_PATH)??R.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:He(r).href}}async function wr(e){for(let t of e.database?.engines??[])Nt(t);let t=await Cr(e);if(t.kind===`url`){let n=await nn({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??vr(t.dialect);return await ir(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=R.dirname(n);await B.promises.mkdir(r,{recursive:!0});let i=await nn({url:t.url});try{await ir(i.db,{migrationsDir:e.migrationsDir});try{await B.promises.chmod(n,384)}catch(e){if(!yr(e))throw e;console.warn(`[initializeNodeDatabase] Failed to set SQLite file permissions (continuing; this may be unsupported on Windows):`,e)}return{databaseClient:i,dbPath:n}}catch(e){throw await i.close(),e}}const Tr=I.object({npmName:I.string(),version:I.string(),source:I.enum([`new`,`upgraded`,`already-present`])}),Er=I.object({npmName:I.string(),reason:I.string()}),Dr=I.object({success:I.boolean(),packageName:I.string(),version:I.string().optional(),restartRequired:I.boolean(),error:I.string().optional(),installed:I.array(Tr).optional(),skipped:I.array(Er).optional(),warnings:I.array(I.string()).optional()}),Or=I.object({success:I.boolean(),packageName:I.string(),error:I.string().optional(),restartRequired:I.boolean()}),kr=I.object({name:I.string(),version:I.string(),description:I.string().optional(),hasDescriptor:I.boolean().default(!1),serverImportPath:I.string().min(1).optional()}),Ar=I.object({packageName:I.string(),latestVersion:I.string(),success:I.boolean(),error:I.string().optional()}),jr=I.object({name:I.string(),displayName:I.string(),description:I.string(),icon:I.string().optional(),tags:I.array(I.string()).optional(),descriptorName:I.string().min(1).optional()}),Mr=I.object({$schema:I.string(),updatedAt:I.string(),adapters:I.array(jr),extensions:I.array(jr)}),Nr=I.object({name:I.string(),currentVersion:I.string(),latestVersion:I.string(),description:I.string().optional()}),Pr=Ye(`packages`,{list:{request:I.object({}),response:I.object({packages:I.array(kr)})},install:{request:I.object({packageName:I.string().optional(),packageNames:I.array(I.string()).min(1).optional(),source:I.enum([`npm`,`local`]).optional(),force:I.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Dr},uninstall:{request:I.object({packageName:I.string()}),response:Or},getLatestVersion:{request:I.object({packageName:I.string()}),response:Ar},getRegistry:{request:I.object({}),response:Mr},checkUpdates:{request:I.object({}),response:I.object({updates:I.array(Nr)})},installed:I.object({packageName:I.string(),version:I.string()}),uninstalled:I.object({packageName:I.string()})}),W=Pr.subjects;async function Fr(e,t,n){if(!R.isAbsolute(e))return;let r;try{r=await L.realpath(e)}catch{return}let i=Ir(t,n),a=[R.resolve(r,`src`,`${i}.ts`),R.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await Lr(e);if(t!==void 0&&Rr(t,r))return t}}function Ir(e,t){return t===!0?e:t}async function Lr(e){try{return await L.realpath(e)}catch{return}}function Rr(e,t){let n=R.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!R.isAbsolute(n)}var zr=class{extensionsDir;constructor(e){this.extensionsDir=R.resolve(e)}async install(e){try{let t=R.resolve(e.endsWith(`descriptor.json`)?R.dirname(e):e),n=await L.realpath(t),r=await this.readDescriptor(n);ct(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await L.mkdir(R.dirname(i),{recursive:!0});try{if((await L.lstat(i)).isSymbolicLink())await L.unlink(i);else throw Error(`${i} already exists and is not a symlink`)}catch(e){if(e.code!==`ENOENT`)throw e}let a=process.platform===`win32`?`junction`:`dir`;return await L.symlink(n,i,a),{success:!0,packageName:r.name,version:r.version,restartRequired:!0}}catch(e){return{success:!1,packageName:``,error:e instanceof Error?e.message:String(e),restartRequired:!1}}}async uninstall(e){try{let t=this.linkPathFor(e);if(await L.unlink(t),e.startsWith(`@`)){let e=R.dirname(t);(await L.readdir(e).catch(()=>null))?.length===0&&await L.rmdir(e).catch(()=>{})}return{success:!0,packageName:e,restartRequired:!0}}catch(t){return{success:!1,packageName:e,error:t instanceof Error?t.message:String(t),restartRequired:!1}}}async list(){try{await L.access(this.extensionsDir)}catch{return[]}let e=await L.readdir(this.extensionsDir),t=[];for(let n of e){let e=R.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await L.readdir(e).catch(()=>[]);for(let r of n){let n=R.join(e,r),i=await this.readLocalEntry(n);i!==null&&t.push(i)}}else{let n=await this.readLocalEntry(e);n!==null&&t.push(n)}}return t}async readLocalEntry(e){try{if(!(await L.lstat(e)).isSymbolicLink())return null;let t=await L.readlink(e),n=await L.realpath(R.resolve(R.dirname(e),t)),r=R.join(n,`descriptor.json`),i=await L.readFile(r,`utf-8`),a=ut(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Fr(n,`server`,o);return{name:a.data.name,version:a.data.version,sourcePath:n,source:`local`,...s!==void 0&&{serverImportPath:s}}}catch{return null}}async readDescriptor(e){let t=R.join(e,`descriptor.json`),n=await L.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=ut(JSON.parse(n));if(!r.success)throw Error(`Invalid descriptor.json: ${r.error.message}`);return r.data}async validateEntrypoints(e,t){await Promise.all(Object.entries(t).map(async([t,n])=>{if(n!==void 0&&await Fr(e,t,n)===void 0){let e=Ir(t,n);throw Error(`${t} entrypoint "${e}" has no resolvable candidate: neither src/${e}.ts nor dist/${e}.mjs exists within the extension root`)}}))}linkPathFor(e){let t=R.resolve(this.extensionsDir,...e.split(`/`)),n=R.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||R.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const Br=`nodeLinker: node-modules`,Vr=/^[A-Za-z]:[\\/]/;let Hr=null;function G(){return Hr||(Hr=Promise.all([import(`../lib-DNGNIb-O.mjs`).then(e=>t(e.t(),1)),import(`../lib-Wtk4Ef-T.mjs`).then(e=>t(e.t(),1)),import(`../lib-BB0XjVs6.mjs`).then(e=>t(e.default,1))]).then(([e,t,n])=>({Configuration:e.Configuration,Project:e.Project,Cache:e.Cache,StreamReport:e.StreamReport,structUtils:e.structUtils,ppath:t.ppath,npath:t.npath,xfs:t.xfs,getPluginConfiguration:n.getPluginConfiguration})),Hr)}var Ur=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await G(),r=e.toPortablePath(this.makaioHome),i=t.join(r,`package.json`);if(await n.mkdirpPromise(r),await this.ensureYarnRc(r,n,t),await n.existsPromise(i))return;await n.writeJsonPromise(i,{name:`makaio-packages`,version:`1.0.0`,private:!0,description:`Makaio installed packages`,dependencies:{}}),console.info(`[YarnPackageManager] Created package.json at %s`,i)}catch(e){throw Error(`Failed to initialize package.json`,{cause:e})}}async ensureYarnRc(e,t,n){let r=n.join(e,`.yarnrc.yml`),i=await t.existsPromise(r)?await t.readFilePromise(r,`utf8`):``,a=Jr(i);i!==a&&(await t.writeFilePromise(r,a),console.info(`[YarnPackageManager] Wrote .yarnrc.yml at %s`,r))}async loadYarnState(){let{Configuration:e,Project:t,Cache:n,npath:r,getPluginConfiguration:i}=await G(),a=r.toPortablePath(this.makaioHome),o=await e.find(a,i()),{project:s}=await t.find(o,a);return{configuration:o,project:s,cache:await n.find(o)}}async runProjectInstall(e,t,n){let{StreamReport:r}=await G();if((await r.start({configuration:e,stdout:process.stdout},async e=>{await t.install({cache:n,report:e})})).hasErrors())throw Error(`Yarn install failed with errors`)}async parsePackageDescriptor(e){let{structUtils:t}=await G(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await G(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=await this.parsePackageDescriptor(e),o=t.stringifyIdent(a),s=r.topLevelWorkspace.manifest.dependencies.get(a.identHash);r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i);let c=r.storedResolutions.get(a.descriptorHash);if(!c)throw Error(`Package resolution not found after installation`);let l=r.storedPackages.get(c);if(!l)throw Error(`Package not found after installation`);let u=l.version??`unknown`;if(!(await this.readInstalledDescriptor(o)).hasDescriptor)throw s?r.topLevelWorkspace.manifest.dependencies.set(a.identHash,s):r.topLevelWorkspace.manifest.dependencies.delete(a.identHash),await this.runProjectInstall(n,r,i),Error(`Installed package ${o} does not contain a valid descriptor.json`);return console.info(`[YarnPackageManager] Installed %s@%s`,o,u),u}catch(t){throw Error(`Failed to install ${e}`,{cause:t})}}async uninstallPackage(e){try{let{structUtils:t}=await G(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=t.parseIdent(e);if(!r.topLevelWorkspace.manifest.dependencies.delete(a.identHash))throw Error(`Package ${e} not found in dependencies`);await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Uninstalled %s`,e)}catch(t){throw Error(`Failed to uninstall ${e}`,{cause:t})}}async listPackages(){try{let{xfs:e,npath:t,ppath:n,structUtils:r}=await G(),i=t.toPortablePath(this.makaioHome),a=n.join(i,`package.json`);if(!await e.existsPromise(a))return[];let{project:o}=await this.loadYarnState(),s=[];for(let[,e]of o.topLevelWorkspace.manifest.dependencies){let t=r.stringifyIdent(e),n=o.storedResolutions.get(e.descriptorHash),i=(n?o.storedPackages.get(n):void 0)?.version??r.parseRange(e.range).selector,a=await this.readInstalledDescriptor(t);a.hasDescriptor&&s.push({name:t,version:i,hasDescriptor:!0,...a.serverImportPath!==void 0&&{serverImportPath:a.serverImportPath}})}return s}catch(e){throw Error(`Failed to list packages`,{cause:e})}}async ensureFrameworkDependency(e){let t=Kr(e);try{let{structUtils:e}=await G(),{configuration:n,project:r,cache:i}=await this.loadYarnState(),a=e.makeDescriptor(e.parseIdent(`@makaio/framework`),t);if(r.topLevelWorkspace.manifest.dependencies.get(a.identHash)?.range===t)return;r.topLevelWorkspace.manifest.dependencies.set(a.identHash,a),await this.runProjectInstall(n,r,i),console.info(`[YarnPackageManager] Ensured @makaio/framework@%s`,t)}catch(e){throw Error(`Failed to ensure @makaio/framework@${t}`,{cause:e})}}async getLatestVersion(e){return this.resolvePackageVersion(e)}async readInstalledDescriptor(e){let t=await this.readInstalledExtensionDescriptor(e);if(t===null)return{hasDescriptor:!1};let n=await this.resolveInstalledServerEntrypoint(e,t);return{hasDescriptor:!0,...n!==void 0&&{serverImportPath:n}}}async resolveInstalledServerEntrypoint(e,t){let n=t.entrypoints?.server;if(n!==void 0)return Fr(R.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=R.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await L.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||Yr(e))return null;throw e}let r=ut(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=R.join(this.makaioHome,`package.json`),t;try{let n=await L.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(Yr(e))return[];throw e}let n=Object.keys(t.dependencies??{});return(await Promise.all(n.map(async e=>{let t=await this.readInstalledExtensionDescriptor(e);return t===null?null:{npmName:e,version:await this.readInstalledPackageVersion(e),descriptor:t}}))).filter(e=>e!==null)}async readInstalledPackageVersion(e){let t=R.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await L.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=R.join(this.makaioHome,`package.json`),t=await L.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=R.join(this.makaioHome,`package.json`);await L.writeFile(t,`${JSON.stringify(e,null,2)}\n`,`utf-8`);let{configuration:n,project:r,cache:i}=await this.loadYarnState();await this.runProjectInstall(n,r,i)}async resolvePackageVersion(e){try{let{StreamReport:t}=await G(),{configuration:n,project:r}=await this.loadYarnState(),i=await this.parsePackageDescriptor(e),a=`unknown`;return await t.start({configuration:n,stdout:process.stdout},async e=>{let t=n.makeResolver(),o=await t.getCandidates(i,{},{project:r,resolver:t,report:e});if(o.length>0){let e=o[0];a=e.reference.match(/^npm:(.+)$/)?.[1]??e.reference}}),a}catch(t){throw Error(`Failed to resolve version for ${e}`,{cause:t})}}};function Wr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function Gr(e){if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t===-1)return e;let n=e.indexOf(`@`,t+1);return n===-1?e:e.slice(0,n)}let t=e.indexOf(`@`);return t===-1?e:e.slice(0,t)}function Kr(e){return e.localPackagePath?`portal:${qr(e.localPackagePath)}`:e.versionRange}function qr(e){let t=(Vr.test(e)?e:R.resolve(e)).replace(/\\/g,`/`);return Vr.test(t)?`/${t}`:t}function Jr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,Br):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
|
|
2
2
|
`:``}${Br}\n`}return`${r.join(`
|
|
3
3
|
`).trimEnd()}\n`}function Yr(e){if(typeof e!=`object`||!e||!(`code`in e))return!1;let t=e.code;return t===`ENOENT`||t===`ENOTDIR`}function Xr(e){if(e.startsWith(`git+`))return{kind:`git`,raw:e,resolved:e};let t=e===`~`||e.startsWith(`~/`)||e.startsWith(`~\\`);if(e.startsWith(`~`)&&!t)throw Error(`Unsupported home-relative path syntax: ${e}`);return e.startsWith(`.`)||R.isAbsolute(e)||R.win32.isAbsolute(e)||t?{kind:`local`,raw:e,resolved:t?R.resolve(zt.homedir(),e===`~`?`.`:e.slice(2)):R.resolve(e)}:{kind:`npm`,raw:e,resolved:e}}var Zr=class{packages;names;constructor(e,t){this.packages=e,this.names=t}async resolve(e,t={}){let n=t.snapshot!==null,r=n?t.snapshot===void 0?await this.packages.readManifestSnapshot():t.snapshot:null;try{return await this.runBfs(e,t.force===!0)}catch(e){if(n)try{await this.packages.writeManifestAndReinstall(r)}catch(t){throw AggregateError([e,t],`Dependency resolution failed and rollback failed: ${ei(e)}`)}throw e}}async runBfs(e,t){let n=await this.readInstalledIndex(),r=e.map(e=>{let t=$r(e),n=Qr(t.npmName);return{npmName:t.npmName,...n?{expectedDescriptorName:n}:{},...t.requiredRange?{requiredRange:t.requiredRange}:{},optional:!1,path:[t.npmName],root:!0}}),i=new Set,a=[],o=[],s=[];for(;r.length>0;){let e=r.shift(),s=i.has(e.npmName),c=n.byNpmName.get(e.npmName);if(s){if(c&&this.assertDescriptorMatches(e,c.descriptor),c&&this.descriptorRangeSatisfied(c.descriptor,e.requiredRange))continue;if(!c)throw Error(`Package ${e.npmName} was resolved but is missing from the installed index`)}if(c&&this.assertDescriptorMatches(e,c.descriptor),c&&this.shouldUseCurrentDescriptor(c.descriptor,e)){a.push({npmName:e.npmName,version:c.version,source:`already-present`}),await this.enqueueDependencies(r,e,c.descriptor),i.add(e.npmName);continue}let l=Wr(e.npmName,e.requiredRange),u,d;try{u=await this.packages.installPackage(l);let r=await this.packages.readInstalledExtensionDescriptor(e.npmName);if(!r)throw Error(`Installed package ${e.npmName} does not contain a valid descriptor.json`);this.assertDescriptorMatches(e,r),this.assertDescriptorVersionSatisfies(e,r),await this.assertDependentsCompatible(e.npmName,r.version,n,t),d=r}catch(t){if(e.optional){o.push({npmName:e.npmName,reason:t instanceof Error?t.message:String(t)});continue}throw t}a.push({npmName:e.npmName,version:u,source:c?`upgraded`:`new`}),c={npmName:e.npmName,version:u,descriptor:d},n.byNpmName.set(e.npmName,c),await this.enqueueDependencies(r,e,d),i.add(e.npmName)}return{installed:a,skipped:o,warnings:s}}async readInstalledIndex(){let e=await this.packages.listInstalledExtensionDescriptors();return{byNpmName:new Map(e.map(e=>[e.npmName,e]))}}descriptorRangeSatisfied(e,t){return t===void 0||ft(e.version,t)}shouldUseCurrentDescriptor(e,t){return t.root&&t.requiredRange===void 0?!1:this.descriptorRangeSatisfied(e,t.requiredRange)}assertDescriptorMatches(e,t){if(!(e.expectedDescriptorName===void 0||t.name===e.expectedDescriptorName))throw Error(`Installed package ${e.npmName} declares descriptor name "${t.name}", expected "${e.expectedDescriptorName}"`)}assertDescriptorVersionSatisfies(e,t){if(!this.descriptorRangeSatisfied(t,e.requiredRange))throw Error(`Installed package ${e.npmName} descriptor version ${t.version} does not satisfy ${t.name} ${e.requiredRange}`)}async assertDependentsCompatible(e,t,n,r){if(r)return;let i=[];for(let r of n.byNpmName.values())for(let n of r.descriptor.dependencies??[])await this.names.resolveNpmPackageName(n.name)===e&&!ft(t,n.version)&&i.push(`${r.npmName} requires ${n.name} ${n.version}`);if(i.length>0)throw Error(`Cannot install ${e}; existing dependencies would be violated:\n${i.join(`
|
|
4
4
|
`)}`)}async enqueueDependencies(e,t,n){for(let r of n.dependencies??[]){let n=await this.names.resolveNpmPackageName(r.name);if(t.path.includes(n))throw Error(`Circular dependency detected: ${[...t.path,n].join(` -> `)}`);e.push({npmName:n,expectedDescriptorName:r.name,requiredRange:r.version,optional:r.optional===!0,path:[...t.path,n],root:!1})}}};function Qr(e){return e.startsWith(`@`)?void 0:e}function $r(e){let t=Gr(e);if(t.length===e.length)return{npmName:t};let n=e.slice(t.length+1);return n===`latest`?{npmName:t}:{npmName:t,requiredRange:n}}function ei(e){return e instanceof Error?e.message:String(e)}var ti=class{registryClient;lookupMapPromise=null;constructor(e){this.registryClient=e}async resolveNpmPackageName(e){if(e.startsWith(`@`))return e;let t;try{t=await this.getLookupMap()}catch(t){throw Error(`Cannot resolve descriptor name "${e}": package registry is unavailable`,{cause:t})}return t.get(e)||`@makaio/${e}`}getLookupMap(){if(this.lookupMapPromise)return this.lookupMapPromise;let e=this.registryClient.getRegistry().then(e=>{let t=new Map;for(let n of[...e.adapters,...e.extensions])n.descriptorName&&t.set(n.descriptorName,n.name);return t}).catch(t=>{throw this.lookupMapPromise===e&&(this.lookupMapPromise=null),t});return this.lookupMapPromise=e,this.lookupMapPromise}},ni=class{inner;portalMap;constructor(e,t){this.inner=e,this.portalMap=t}async installPackage(e){let t=Gr(e),n=this.portalMap.get(t);if(n!==void 0){let e=`${t}@portal:${qr(n)}`;return this.inner.installPackage(e)}return this.inner.installPackage(e)}readInstalledExtensionDescriptor(e){return this.inner.readInstalledExtensionDescriptor(e)}listInstalledExtensionDescriptors(){return this.inner.listInstalledExtensionDescriptors()}readManifestSnapshot(){return this.inner.readManifestSnapshot()}writeManifestAndReinstall(e){return this.inner.writeManifestAndReinstall(e)}},ri=class{cache=null;inFlightFetch=null;registryUrl;cacheTtlMs;fetchTimeoutMs;fetchImpl;constructor(e={}){this.registryUrl=e.registryUrl??`https://raw.githubusercontent.com/makaio-ai/makaio/develop/registry/packages.json`,this.cacheTtlMs=e.cacheTtlMs??36e5,this.fetchTimeoutMs=e.fetchTimeoutMs??1e4,this.fetchImpl=e.fetchImpl??fetch}async getRegistry(){if(this.cache&&Date.now()-this.cache.timestamp<this.cacheTtlMs)return this.cache.data;this.inFlightFetch??=this.fetchAndCacheRegistry();try{return await this.inFlightFetch}finally{this.inFlightFetch=null}}async fetchAndCacheRegistry(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.fetchTimeoutMs);try{let t=await this.fetchImpl(this.registryUrl,{signal:e.signal});if(!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.json(),r=Mr.parse(n);return this.cache={data:r,timestamp:Date.now()},r}catch(e){let t=e instanceof Error?e:Error(String(e));throw Error(`Failed to fetch package registry`,{cause:t})}finally{clearTimeout(t)}}clearCache(){this.cache=null}},ii=t(r(),1),ai=`1.0.0`;function oi(){let e=ai;if(typeof e!=`string`||e.length===0)throw Error(`Package manager package metadata must include a string version.`);return`^${e}`}const si=oi();var ci=class extends St{yarnManager;registryService;localInstaller;dependencyResolver;frameworkPeerRange;frameworkPackagePath;constructor(e,t,n={}){super(e),this.yarnManager=n.yarnManager??new Ur(t),this.registryService=n.registryService??new ri,this.localInstaller=n.localInstaller??new zr(R.join(t,`extensions`)),this.frameworkPeerRange=n.frameworkPeerRange??si,this.frameworkPackagePath=n.frameworkPackagePath;let r=n.devPortalPackages?.size?new ni(this.yarnManager,n.devPortalPackages):this.yarnManager;this.dependencyResolver=n.dependencyResolver??new Zr(r,new ti(this.registryService))}async onInit(){await this.yarnManager.initialize(),console.info(`[PackageManagerService] Initialized`),this.registerPackageHandlers(),this.registerRegistryHandlers()}normalizePackageName(e){if(typeof e!=`string`)return null;let t=e.trim();return t.length>0?t:null}validatePackageNamePayload(e,t){return this.normalizePackageName(e)||(t(),null)}createInvalidPackageNameResult(e){return e?{success:!1,packageName:``,latestVersion:e.latestVersion,error:`Invalid packageName`}:{success:!1,packageName:``,error:`Invalid packageName`,restartRequired:!1}}async emitInstalled(e,t){try{await this.bus.emit(W.installed,{packageName:e,version:t})}catch(e){console.error(`[PackageManagerService] installed emit failed:`,e)}}async emitUninstalled(e){try{await this.bus.emit(W.uninstalled,{packageName:e})}catch(e){console.error(`[PackageManagerService] uninstalled emit failed:`,e)}}registerPackageHandlers(){this.registerListHandler(),this.registerInstallHandler(),this.registerUninstallHandler()}registerListHandler(){this.registerHandler(W.list,async e=>{try{let[t,n]=await Promise.all([this.yarnManager.listPackages(),this.localInstaller.list()]),r=[...t,...n.map(e=>({name:e.name,version:e.version,hasDescriptor:!0,...e.serverImportPath!==void 0&&{serverImportPath:e.serverImportPath}}))];e.setResult({packages:r})}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] List failed:`,n),e.setResult({packages:[]})}})}async ensureFrameworkPeer(){try{await this.yarnManager.ensureFrameworkDependency({versionRange:this.frameworkPeerRange,...this.frameworkPackagePath?{localPackagePath:this.frameworkPackagePath}:{}})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Failed to ensure @makaio/framework dependency ${this.frameworkPeerRange}: ${t}`,{cause:e})}}async installNpmPackages(e,t){let n=await this.yarnManager.readManifestSnapshot(),r;try{await this.ensureFrameworkPeer(),r=await this.dependencyResolver.resolve(e,{force:t,snapshot:null})}catch(e){try{await this.yarnManager.writeManifestAndReinstall(n)}catch(t){let n=e instanceof Error?e.message:String(e);throw AggregateError([e,t],`Package install failed and rollback failed: ${n}`)}throw e}for(let e of r.installed)e.source!==`already-present`&&await this.emitInstalled(e.npmName,e.version);let i=r.installed[0];return{success:!0,packageName:i?.npmName??e[0]??``,version:i?.version,restartRequired:!0,installed:[...r.installed],skipped:[...r.skipped],warnings:[...r.warnings]}}registerInstallHandler(){this.registerHandler(W.install,async e=>{let t=e.payload.packageNames??(e.payload.packageName===void 0?[]:[e.payload.packageName]),n=t.map(e=>this.normalizePackageName(e)).filter(e=>e!==null);if(n.length!==t.length||n.length===0){e.setResult(this.createInvalidPackageNameResult());return}let r;if(e.payload.source!==void 0)r={kind:e.payload.source};else{let t=n.map(e=>Xr(e));r=t[0];let i=t.find(e=>e.kind!==r.kind);if(i){e.setResult({success:!1,packageName:``,error:`Cannot mix install sources: ${r.kind} and ${i.kind}`,restartRequired:!1});return}}if(r.kind===`git`){e.setResult({success:!1,packageName:n[0],error:`Git URL installs are not yet supported`,restartRequired:!1});return}if(r.kind===`local`){if(n.length>1){e.setResult({success:!1,packageName:``,error:`Local installs only support a single path`,restartRequired:!1});return}let t=await this.localInstaller.install(n[0]);t.success&&await this.emitInstalled(t.packageName,t.version??`unknown`),e.setResult(t);return}try{e.setResult(await this.installNpmPackages(n,e.payload.force))}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Install failed:`,r),e.setResult({success:!1,packageName:n[0]??``,error:r,restartRequired:!1})}})}registerUninstallHandler(){this.registerHandler(W.uninstall,async e=>{let t=this.validatePackageNamePayload(e.payload.packageName,()=>{e.setResult(this.createInvalidPackageNameResult())});if(t){if((await this.localInstaller.list()).find(e=>e.name===t)){let n=await this.localInstaller.uninstall(t);n.success&&await this.emitUninstalled(t),e.setResult(n);return}try{await this.yarnManager.uninstallPackage(t),await this.emitUninstalled(t),e.setResult({success:!0,packageName:t,restartRequired:!0})}catch(n){let r=n instanceof Error?n.message:String(n);console.error(`[PackageManagerService] Uninstall failed:`,r),e.setResult({success:!1,packageName:t,error:r,restartRequired:!1})}}})}registerRegistryHandlers(){this.registerHandler(W.getLatestVersion,async e=>{let t=this.validatePackageNamePayload(e.payload.packageName,()=>{e.setResult(this.createInvalidPackageNameResult({latestVersion:`unknown`}))});if(t)try{let n=await this.yarnManager.getLatestVersion(t);e.setResult({success:!0,packageName:t,latestVersion:n})}catch(n){let r=n instanceof Error?n.message:String(n);console.error(`[PackageManagerService] Version check failed:`,r),e.setResult({success:!1,packageName:t,latestVersion:`unknown`,error:r})}}),this.registerHandler(W.getRegistry,async e=>{try{let t=await this.registryService.getRegistry();e.setResult(t)}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Registry fetch failed:`,n),e.setResult({$schema:`makaio/package-registry/v1`,updatedAt:new Date().toISOString(),adapters:[],extensions:[]})}}),this.registerHandler(W.checkUpdates,async e=>{try{let t=await this.checkForUpdates();e.setResult({updates:t})}catch(t){let n=t instanceof Error?t.message:String(t);console.error(`[PackageManagerService] Update check failed:`,n),e.setResult({updates:[]})}})}async checkForUpdates(){try{let e=await this.yarnManager.listPackages(),t=[];return await Promise.all(e.map(async e=>{try{let n=await this.yarnManager.getLatestVersion(e.name);ii.valid(e.version)&&ii.valid(n)&&ii.gt(n,e.version)&&t.push({name:e.name,currentVersion:e.version,latestVersion:n,description:e.description})}catch(t){console.warn(`[PackageManagerService] Failed to check updates for %s:`,e.name,t)}})),console.info(`[PackageManagerService] Found %d package updates`,t.length),t}catch(e){throw Error(`Failed to check for updates`,{cause:e})}}};function li(e={}){return{name:`makaio.package-manager`,displayName:`Package Manager`,version:`0.1.0`,critical:!0,namespaces:[Pr],create:t=>new ci(t.bus,t.makaioHome,{registryService:e.registryService,dependencyResolver:e.dependencyResolver,frameworkPeerRange:e.frameworkPeerRange,frameworkPackagePath:e.frameworkPackagePath,devPortalPackages:e.devPortalPackages})}}function ui(e){return{filter:e=>!!e.http,async processActivated(t,n){e.add({owner:t,phase:`extension`,mount:e=>n.http.mount(e)})},async processStopped(t){e.remove(t)}}}const di={resolve(e,t){return!e&&!t?null:e?t?e.updatedAt>t.updatedAt?e:t:e:t}};function fi(e){return{scope:e.scope,surface:e.surface??`any`,context:e.context??`any`,viewport:e.viewport??`any`}}function pi(e){return{scope:e.scope,surface:e.surface===`any`?void 0:e.surface,context:e.context===`any`?void 0:e.context,viewport:e.viewport===`any`?void 0:e.viewport}}function mi(e,t){return[`makaio:prefs`,e.scope,e.surface||`any`,e.context||`any`,e.viewport||`any`,t].join(`:`)}function hi(e){return typeof e==`object`&&!!e&&`value`in e&&`updatedAt`in e&&typeof e.value==`string`&&typeof e.updatedAt==`number`}function gi(e){try{let t=JSON.parse(e);return hi(t)?t:{value:JSON.stringify(t),updatedAt:0}}catch{return null}}const _i=Dt(`preferences`,e=>({scope:e.text(`scope`).notNull(),surface:e.text(`surface`).notNull().default(`any`),context:e.text(`context`).notNull().default(`any`),viewport:e.text(`viewport`).notNull().default(`any`),category:e.text(`category`).notNull(),value:e.text(`value`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[Ct(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)],postgres:e=>[wt(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)]}),vi=_i.sqlite,yi=_i.postgres,bi=Et({preferences:vi},{preferences:yi});function xi(e,t,n){let r=[];return n!==void 0&&r.push(V(e.category,n)),t&&(t.scope!==void 0&&r.push(V(e.scope,t.scope)),t.surface!==void 0&&r.push(V(e.surface,t.surface)),t.context!==void 0&&r.push(V(e.context,t.context)),t.viewport!==void 0&&r.push(V(e.viewport,t.viewport))),r}async function Si(e,t,n){let{preferences:r}=Pt(e,bi),i=xi(r,t,n);return(i.length>0?await e.select().from(r).where(Lt(...i)):await e.select().from(r)).map(e=>{let t;try{t=JSON.parse(e.value)}catch{t=null}let n=Nn.safeParse(t);return{key:pi(e),category:e.category,value:n.success?n.data:null,updatedAt:e.updatedAt}})}async function Ci(e,t,n){let{preferences:r}=Pt(e,bi),i=fi(t),[a]=await e.select().from(r).where(Lt(V(r.scope,i.scope),V(r.surface,i.surface),V(r.context,i.context),V(r.viewport,i.viewport),V(r.category,n))).limit(1);return a}var wi=class{db;conflictResolver;constructor(e){this.db=e.db,this.conflictResolver=e.conflictResolver??di}async get(e,t){let n=await this.readFromDb(e,t),r=this.readFromLocalStorage(e,t),i=r?.updatedAt===0?r:null;!n&&r&&!i&&this.removeFromLocalStorage(e,t);let a=this.conflictResolver.resolve(i,n);if(!a)return null;let o;try{o=JSON.parse(a.value)}catch{return null}let s=Nn.safeParse(o);return s.success?(await this.syncResolvedPreference(e,t,a,r,n),s.data):null}async set(e,t,n){let r=Date.now(),i=JSON.stringify(n??null);this.writeToLocalStorage(e,t,{value:i,updatedAt:r}),await this.writeToDb(e,t,i,r)}async delete(e,t){this.removeFromLocalStorage(e,t),await this.deleteFromDb(e,t)}async list(e,t){return Si(this.db,e,t)}async writeToDb(e,t,n,r){let{preferences:i}=Pt(this.db,bi),a=fi(e);await this.db.insert(i).values({...a,category:t,value:n,updatedAt:r}).onConflictDoUpdate({target:[i.scope,i.surface,i.context,i.viewport,i.category],set:{value:n,updatedAt:r}})}readFromLocalStorage(e,t){let n=mi(e,t),r=globalThis.localStorage?.getItem(n);return r?gi(r):null}writeToLocalStorage(e,t,n){let r=mi(e,t);try{globalThis.localStorage?.setItem(r,JSON.stringify(n))}catch(e){console.warn(`[StorageCoordinator] localStorage write failed:`,e)}}removeFromLocalStorage(e,t){let n=mi(e,t);try{globalThis.localStorage?.removeItem(n)}catch(e){console.warn(`[StorageCoordinator] localStorage delete failed:`,e)}}async syncResolvedPreference(e,t,n,r,i){this.isSameStoredPreference(n,i)||await this.writeToDb(e,t,n.value,n.updatedAt),r&&!this.isSameStoredPreference(n,r)&&this.writeToLocalStorage(e,t,n)}isSameStoredPreference(e,t){return!e||!t?!1:e.value===t.value&&e.updatedAt===t.updatedAt}async readFromDb(e,t){let n=await Ci(this.db,e,t);return n?{value:n.value,updatedAt:n.updatedAt}:null}async deleteFromDb(e,t){let{preferences:n}=Pt(this.db,bi),r=fi(e);await this.db.delete(n).where(Lt(V(n.scope,r.scope),V(n.surface,r.surface),V(n.context,r.context),V(n.viewport,r.viewport),V(n.category,t)))}};function Ti(e,t,n){let r=new wi({db:t}),i=e.on(Pn.get,async e=>{let{key:t,category:n}=e.payload,i=await r.get(t,n);e.setResult({value:i})}),a=e.on(Pn.set,async e=>{let{key:t,category:n,value:i}=e.payload;await r.set(t,n,i),e.setResult({success:!0})}),o=e.on(Pn.delete,async e=>{let{key:t,category:n}=e.payload;await r.delete(t,n),e.setResult({success:!0})}),s=e.on(Pn.list,async e=>{let{key:t,category:n}=e.payload,i=await r.list(t,n);e.setResult({items:i})});return()=>{i(),a(),o(),s()}}const Ei={name:`preferences-storage`,displayName:`Preferences Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:Mt(Ti)}};function Di(e,t){let n=new Map;for(let[r,i]of e)t.has(r)&&n.set(r,i);return n}function Oi(...e){let t=new Map;for(let n of e)for(let[e,r]of n)t.set(e,{...t.get(e)??{},...r});return t}function ki(e,t){let n=[e.on(rt.get,async e=>{let n=await t.getConfig();e.setResult({config:n})}),e.on(rt.update,async e=>{let n=nt.parse(e.payload.config),r=await t.prepareConfigForPersistence(n);await t.saveConfig(r),e.setResult({success:!0})})];return()=>{for(let e of n)e()}}var K=n((e=>{let t=Symbol.for(`yaml.alias`),n=Symbol.for(`yaml.document`),r=Symbol.for(`yaml.map`),i=Symbol.for(`yaml.pair`),a=Symbol.for(`yaml.scalar`),o=Symbol.for(`yaml.seq`),s=Symbol.for(`yaml.node.type`),c=e=>!!e&&typeof e==`object`&&e[s]===t,l=e=>!!e&&typeof e==`object`&&e[s]===n,u=e=>!!e&&typeof e==`object`&&e[s]===r,d=e=>!!e&&typeof e==`object`&&e[s]===i,f=e=>!!e&&typeof e==`object`&&e[s]===a,p=e=>!!e&&typeof e==`object`&&e[s]===o;function m(e){if(e&&typeof e==`object`)switch(e[s]){case r:case o:return!0}return!1}function h(e){if(e&&typeof e==`object`)switch(e[s]){case t:case r:case a:case o:return!0}return!1}e.ALIAS=t,e.DOC=n,e.MAP=r,e.NODE_TYPE=s,e.PAIR=i,e.SCALAR=a,e.SEQ=o,e.hasAnchor=e=>(f(e)||m(e))&&!!e.anchor,e.isAlias=c,e.isCollection=m,e.isDocument=l,e.isMap=u,e.isNode=h,e.isPair=d,e.isScalar=f,e.isSeq=p})),Ai=n((e=>{var t=K();let n=Symbol(`break visit`),r=Symbol(`skip children`),i=Symbol(`remove node`);function a(e,n){let r=l(n);t.isDocument(e)?o(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):o(null,e,r,Object.freeze([]))}a.BREAK=n,a.SKIP=r,a.REMOVE=i;function o(e,r,a,s){let c=u(e,r,a,s);if(t.isNode(c)||t.isPair(c))return d(e,s,c),o(e,c,a,s);if(typeof c!=`symbol`){if(t.isCollection(r)){s=Object.freeze(s.concat(r));for(let e=0;e<r.items.length;++e){let t=o(e,r.items[e],a,s);if(typeof t==`number`)e=t-1;else if(t===n)return n;else t===i&&(r.items.splice(e,1),--e)}}else if(t.isPair(r)){s=Object.freeze(s.concat(r));let e=o(`key`,r.key,a,s);if(e===n)return n;e===i&&(r.key=null);let t=o(`value`,r.value,a,s);if(t===n)return n;t===i&&(r.value=null)}}return c}async function s(e,n){let r=l(n);t.isDocument(e)?await c(null,e.contents,r,Object.freeze([e]))===i&&(e.contents=null):await c(null,e,r,Object.freeze([]))}s.BREAK=n,s.SKIP=r,s.REMOVE=i;async function c(e,r,a,o){let s=await u(e,r,a,o);if(t.isNode(s)||t.isPair(s))return d(e,o,s),c(e,s,a,o);if(typeof s!=`symbol`){if(t.isCollection(r)){o=Object.freeze(o.concat(r));for(let e=0;e<r.items.length;++e){let t=await c(e,r.items[e],a,o);if(typeof t==`number`)e=t-1;else if(t===n)return n;else t===i&&(r.items.splice(e,1),--e)}}else if(t.isPair(r)){o=Object.freeze(o.concat(r));let e=await c(`key`,r.key,a,o);if(e===n)return n;e===i&&(r.key=null);let t=await c(`value`,r.value,a,o);if(t===n)return n;t===i&&(r.value=null)}}return s}function l(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function u(e,n,r,i){if(typeof r==`function`)return r(e,n,i);if(t.isMap(n))return r.Map?.(e,n,i);if(t.isSeq(n))return r.Seq?.(e,n,i);if(t.isPair(n))return r.Pair?.(e,n,i);if(t.isScalar(n))return r.Scalar?.(e,n,i);if(t.isAlias(n))return r.Alias?.(e,n,i)}function d(e,n,r){let i=n[n.length-1];if(t.isCollection(i))i.items[e]=r;else if(t.isPair(i))e===`key`?i.key=r:i.value=r;else if(t.isDocument(i))i.contents=r;else{let e=t.isAlias(i)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}e.visit=a,e.visitAsync=s})),ji=n((e=>{var t=K(),n=Ai();let r={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},i=e=>e.replace(/[!,[\]{}]/g,e=>r[e]);var a=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+i(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let r=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],i=Object.entries(this.tags),a;if(e&&i.length>0&&t.isNode(e.contents)){let r={};n.visit(e.contents,(e,n)=>{t.isNode(n)&&n.tag&&(r[n.tag]=!0)}),a=Object.keys(r)}else a=[];for(let[t,n]of i)t===`!!`&&n===`tag:yaml.org,2002:`||(!e||a.some(e=>e.startsWith(n)))&&r.push(`%TAG ${t} ${n}`);return r.join(`
|
|
@@ -116,4 +116,4 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
|
|
|
116
116
|
`,e)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(this.onKeyLine=!1,t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){u(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let n=!this.onKeyLine&&this.indent===e.indent,r=n&&(t.sep||t.explicitKey)&&this.type!==`seq-item-ind`,i=[];if(r&&t.sep&&!t.value){let n=[];for(let r=0;r<t.sep.length;++r){let i=t.sep[r];switch(i.type){case`newline`:n.push(r);break;case`space`:break;case`comment`:i.indent>e.indent&&(n.length=0);break;default:n.length=0}}n.length>=2&&(i=t.sep.splice(n[1]))}switch(this.type){case`anchor`:case`tag`:r||t.value?(i.push(this.sourceToken),e.items.push({start:i}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`explicit-key-ind`:!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):r||t.value?(i.push(this.sourceToken),e.items.push({start:i,explicitKey:!0})):this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case`map-value-ind`:if(t.explicitKey)if(!t.sep)if(a(t.start,`newline`))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let e=l(t.start);this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:null,sep:[this.sourceToken]}]})}else if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(a(t.sep,`map-value-ind`))this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]});else if(s(t.key)&&!a(t.sep,`newline`)){let e=l(t.start),n=t.key,r=t.sep;r.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:e,key:n,sep:r}]})}else i.length>0?t.sep=t.sep.concat(i,this.sourceToken):t.sep.push(this.sourceToken);else t.sep?t.value||r?e.items.push({start:i,key:null,sep:[this.sourceToken]}):a(t.sep,`map-value-ind`)?this.stack.push({type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);r||t.value?(e.items.push({start:i,key:n,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(n):(Object.assign(t,{key:n,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type===`block-seq`){if(!t.explicitKey&&t.sep&&!a(t.sep,`newline`)){yield*this.pop({type:`error`,offset:this.offset,message:`Unexpected block-seq-ind on same line with key`,source:this.source});return}}else n&&e.items.push({start:i});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case`newline`:if(t.value){let n=`end`in t.value?t.value.end:void 0;(Array.isArray(n)?n[n.length-1]:void 0)?.type===`comment`?n?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case`space`:case`comment`:if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let n=e.items[e.items.length-2]?.value?.end;if(Array.isArray(n)){u(n,t.start),n.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case`anchor`:case`tag`:if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case`seq-item-ind`:if(this.indent!==e.indent)break;t.value||a(t.start,`seq-item-ind`)?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let t=this.startBlockValue(e);if(t){this.stack.push(t);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type===`flow-error-end`){let e;do yield*this.pop(),e=this.peek(1);while(e?.type===`flow-collection`)}else if(e.end.length===0){switch(this.type){case`comma`:case`explicit-key-ind`:!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case`map-value-ind`:!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case`space`:case`comment`:case`newline`:case`anchor`:case`tag`:!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:{let n=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:n,sep:[]}):t.sep?this.stack.push(n):Object.assign(t,{key:n,sep:[]});return}case`flow-map-end`:case`flow-seq-end`:e.end.push(this.sourceToken);return}let n=this.startBlockValue(e);n?this.stack.push(n):(yield*this.pop(),yield*this.step())}else{let t=this.peek(2);if(t.type===`block-map`&&(this.type===`map-value-ind`&&t.indent===e.indent||this.type===`newline`&&!t.items[t.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type===`map-value-ind`&&t.type!==`flow-collection`){let n=l(c(t));d(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let i={type:`block-map`,offset:e.offset,indent:e.indent,items:[{start:n,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=i}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let e=this.source.indexOf(`
|
|
117
117
|
`)+1;for(;e!==0;)this.onNewLine(this.offset+e),e=this.source.indexOf(`
|
|
118
118
|
`,e)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case`alias`:case`scalar`:case`single-quoted-scalar`:case`double-quoted-scalar`:return this.flowScalar(this.type);case`block-scalar-header`:return{type:`block-scalar`,offset:this.offset,indent:this.indent,props:[this.sourceToken],source:``};case`flow-map-start`:case`flow-seq-start`:return{type:`flow-collection`,offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case`seq-item-ind`:return{type:`block-seq`,offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case`explicit-key-ind`:{this.onKeyLine=!0;let t=l(c(e));return t.push(this.sourceToken),{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,explicitKey:!0}]}}case`map-value-ind`:{this.onKeyLine=!0;let t=l(c(e));return{type:`block-map`,offset:this.offset,indent:this.indent,items:[{start:t,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!==`comment`||this.indent<=t?!1:e.every(e=>e.type===`newline`||e.type===`space`)}*documentEnd(e){this.type!==`doc-mode`&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case`comma`:case`doc-start`:case`doc-end`:case`flow-seq-end`:case`flow-map-end`:case`map-value-ind`:yield*this.pop(),yield*this.step();break;case`newline`:this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type===`newline`&&(yield*this.pop())}}}})),za=n((e=>{var t=ja(),n=ma(),r=ha(),i=Ui(),a=K(),o=La(),s=Ra();function c(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new o.LineCounter||null,prettyErrors:t}}function l(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=Array.from(l.compose(o.parse(e)));if(a&&i)for(let t of u)t.errors.forEach(r.prettifyError(e,i)),t.warnings.forEach(r.prettifyError(e,i));return u.length>0?u:Object.assign([],{empty:!0},l.streamInfo())}function u(e,n={}){let{lineCounter:i,prettyErrors:a}=c(n),o=new s.Parser(i?.addNewLine),l=new t.Composer(n),u=null;for(let t of l.compose(o.parse(e),!0,e.length))if(!u)u=t;else if(u.options.logLevel!==`silent`){u.errors.push(new r.YAMLParseError(t.range.slice(0,2),`MULTIPLE_DOCS`,`Source contains multiple documents; please use YAML.parseAllDocuments()`));break}return a&&i&&(u.errors.forEach(r.prettifyError(e,i)),u.warnings.forEach(r.prettifyError(e,i))),u}function d(e,t,n){let r;typeof t==`function`?r=t:n===void 0&&t&&typeof t==`object`&&(n=t);let a=u(e,n);if(!a)return null;if(a.warnings.forEach(e=>i.warn(a.options.logLevel,e)),a.errors.length>0){if(a.options.logLevel!==`silent`)throw a.errors[0];a.errors=[]}return a.toJS(Object.assign({reviver:r},n))}function f(e,t,r){let i=null;if(typeof t==`function`||Array.isArray(t)?i=t:r===void 0&&t&&(r=t),typeof r==`string`&&(r=r.length),typeof r==`number`){let e=Math.round(r);r=e<1?void 0:e>8?{indent:8}:{indent:e}}if(e===void 0){let{keepUndefined:e}=r??t??{};if(!e)return}return a.isDocument(e)&&!i?e.toString(r):new n.Document(e,i,r).toString(r)}e.parse=d,e.parseAllDocuments=l,e.parseDocument=u,e.stringify=f})),$=n((e=>{var t=ja(),n=ma(),r=fa(),i=ha(),a=Fi(),o=K(),s=Y(),c=J(),l=X(),u=Z();Fa();var d=Ia(),f=La(),p=Ra(),m=za(),h=Ai();e.Composer=t.Composer,e.Document=n.Document,e.Schema=r.Schema,e.YAMLError=i.YAMLError,e.YAMLParseError=i.YAMLParseError,e.YAMLWarning=i.YAMLWarning,e.Alias=a.Alias,e.isAlias=o.isAlias,e.isCollection=o.isCollection,e.isDocument=o.isDocument,e.isMap=o.isMap,e.isNode=o.isNode,e.isPair=o.isPair,e.isScalar=o.isScalar,e.isSeq=o.isSeq,e.Pair=s.Pair,e.Scalar=c.Scalar,e.YAMLMap=l.YAMLMap,e.YAMLSeq=u.YAMLSeq,e.Lexer=d.Lexer,e.LineCounter=f.LineCounter,e.Parser=p.Parser,e.parse=m.parse,e.parseAllDocuments=m.parseAllDocuments,e.parseDocument=m.parseDocument,e.stringify=m.stringify,e.visit=h.visit,e.visitAsync=h.visitAsync}))();function Ba(e){return e instanceof Error&&`code`in e&&typeof e.code==`string`}function Va(e){return Ba(e)&&e.code===`ENOENT`}function Ha(e){return Ba(e)&&e.code===`ENOTDIR`}function Ua(e){return e instanceof Error?e.message:String(e)}async function Wa(e){try{return(await B.promises.readdir(e)).filter(e=>e.endsWith(`.yaml`)).sort().map(t=>R.join(e,t))}catch(t){if(Va(t))return[];throw Ha(t)?Error(`Invalid model registry directory ${e}: expected a directory.`,{cause:t}):t}}var Ga=class{seedPaths;constructor(e){this.seedPaths=Array.isArray(e)?e:[e]}async fetch(){for(let e of this.seedPaths){let t=await Ka(e);if(t!==void 0)try{return Qt.parse((0,$.parse)(t))}catch(t){throw Error(`Invalid bundled model registry seed at ${e}: ${Ua(t)}`,{cause:t})}}throw Error(`Bundled model registry seed not found. Tried:\n${this.seedPaths.map(e=>`- ${e}`).join(`
|
|
119
|
-
`)}`)}};async function Ka(e){try{return await B.promises.readFile(e,`utf-8`)}catch(t){if(qa(t))return;throw Error(`Failed to read bundled model registry seed at ${e}: ${Ua(t)}`,{cause:t})}}function qa(e){return Va(e)||Ha(e)}var Ja=class{url;timeoutMs;constructor(e,t=1e4){let n=e.trim();if(!n)throw Error(`CdnRegistryFetcher requires a non-empty registry URL`);let r;try{r=new URL(n)}catch(e){throw Error(`CdnRegistryFetcher requires a valid registry URL: ${n}`,{cause:e})}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`CdnRegistryFetcher requires an HTTP(S) registry URL: ${n}`);if(!Number.isFinite(t)||t<=0)throw Error(`CdnRegistryFetcher requires a positive finite timeoutMs, got ${t}`);this.url=r.toString(),this.timeoutMs=t}async fetch(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.timeoutMs);try{let t=await fetch(this.url,{signal:e.signal});if(!t.ok)throw Error(`Failed to fetch model registry: ${t.status} ${t.statusText}`);let n=(0,$.parse)(await t.text());return Qt.parse(n)}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`Failed to fetch model registry: timed out after ${this.timeoutMs}ms`,{cause:e}):e}finally{clearTimeout(t)}}},Ya=class{cachePath;trackFetchedAt;constructor(e,t={}){this.cachePath=e,this.trackFetchedAt=t.trackFetchedAt??!1}async get(){try{let e=await B.promises.readFile(this.cachePath,`utf-8`),t=Xa(JSON.parse(e)),n=Qt.safeParse(t);return n.success?n.data:null}catch{return null}}async set(e){try{await B.promises.mkdir(R.dirname(this.cachePath),{recursive:!0});let t=this.trackFetchedAt?{fetchedAt:new Date().toISOString(),registry:e}:e;await B.promises.writeFile(this.cachePath,JSON.stringify(t,null,2),`utf-8`)}catch(e){console.warn(`[FileRegistryCache] Failed to write cache:`,e)}}};function Xa(e){return Je(e)&&`registry`in e&&`fetchedAt`in e?e.registry:e}const Za=I.object({name:I.string().optional(),models:I.array(et)}),Qa=I.object({name:I.string().optional(),models:I.record(I.string(),$t)}),$a=I.object({$schema:I.literal(`makaio/model-registry/v2`).optional(),updatedAt:I.string().datetime().optional(),labs:I.record(I.string(),Za).optional(),providers:I.record(I.string(),Qa).optional()}),eo=I.object({name:I.string().optional(),models:I.array(I.record(I.string(),I.unknown()))}),to=I.object({name:I.string().optional(),models:I.record(I.string(),$t)});var no=class{userModelsDir;constructor(e){this.userModelsDir=e}async fetch(){let e=ro();return await Promise.all([this.loadLabDirectory(R.join(this.userModelsDir,`labs`),e),this.loadProviderDirectory(R.join(this.userModelsDir,`providers`),e)]),await this.loadFlatFiles(e),e}async loadLabDirectory(e,t){let n=await Wa(e),r=await Promise.all(n.map(async e=>({labId:R.basename(e,`.yaml`),lab:await fo(e,R.basename(e,`.yaml`))})));for(let{labId:e,lab:n}of r)_o(t,e,n)}async loadProviderDirectory(e,t){let n=await Wa(e),r=await Promise.all(n.map(async e=>({providerId:R.basename(e,`.yaml`),provider:await po(e)})));for(let{providerId:e,provider:n}of r)vo(t,e,n)}async loadFlatFiles(e){let t=await Wa(this.userModelsDir);for(let n of t){let t=R.basename(n,`.yaml`),r=(0,$.parse)(await B.promises.readFile(n,`utf-8`));if(!Je(r))throw Error(`Invalid model registry overlay YAML in ${n}: expected a YAML object.`);if(`labs`in r||`providers`in r){go(e,$a.parse(r));continue}if(Array.isArray(r.models)){_o(e,t,mo(r,t));continue}if(Je(r.models)){vo(e,t,ho(r));continue}throw Error(`Unrecognized model registry overlay shape in ${n}: expected labs, providers, or models.`)}}};function ro(){return{labs:{},providers:{}}}function io(e,t){return{$schema:`makaio/model-registry/v2`,updatedAt:t.updatedAt??e.updatedAt,labs:yo(ao(e.labs,t.labs)),providers:bo(co(e.providers,t.providers))}}function ao(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:oo(t.models,r.models)}}return n}function oo(e,t){let n=[...e],r=new Map(e.map((e,t)=>[e.name,t]));for(let e of t){let t=r.get(e.name);if(t===void 0){r.set(e.name,n.length),n.push(e);continue}n[t]=so(n[t],e)}return n}function so(e,t){let n={...e,...t},r=en(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}function co(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:lo(t.models,r.models)}}return n}function lo(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:uo(t,r)}return n}function uo(e,t){let n={...e,...t},r=en(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}async function fo(e,t){return mo((0,$.parse)(await B.promises.readFile(e,`utf-8`)),t)}async function po(e){return ho((0,$.parse)(await B.promises.readFile(e,`utf-8`)))}function mo(e,t){let n=eo.parse(e);return{...n.name===void 0?{}:{name:n.name},models:n.models.map(e=>et.parse({...e,labId:t}))}}function ho(e){let t=to.parse(e);return{...t.name===void 0?{}:{name:t.name},models:t.models}}function go(e,t){e.updatedAt=t.updatedAt??e.updatedAt,t.labs!==void 0&&(e.labs=ao(e.labs,t.labs)),t.providers!==void 0&&(e.providers=co(e.providers,t.providers))}function _o(e,t,n){e.labs=ao(e.labs,{[t]:n})}function vo(e,t,n){e.providers=co(e.providers,{[t]:n})}function yo(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}function bo(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}var xo=class{userModelsDir;baseFetcher;constructor(e,t){this.userModelsDir=e,this.baseFetcher=t}async fetch(){let e=await this.baseFetcher.fetch();if(await this.validateDirectory(this.userModelsDir),await this.validateDirectory(`${this.userModelsDir}/labs`),await this.validateDirectory(`${this.userModelsDir}/providers`),!await this.hasAnyOverlayFiles())return e;let t=io(e,await new no(this.userModelsDir).fetch());return Qt.parse(t)}async validateDirectory(e){await Wa(e)}async hasAnyOverlayFiles(){let e,t;try{let n=await L.readdir(this.userModelsDir,{withFileTypes:!0});e=n.map(e=>String(e.name)),t=new Map(n.map(e=>[String(e.name),[e.isFile(),e.isDirectory()]]))}catch(e){if(Va(e))return!1;throw e}return e.some(e=>{let[n,r]=t.get(e)??[!1,!1];return n&&e.endsWith(`.yaml`)||r&&(e===`labs`||e===`providers`)})}},So=class extends Error{constructor(e){super(`[boot] Could not find workspace root (no package.json with 'workspaces' field) starting from: ${e}`),this.name=`WorkspaceRootNotFoundError`}};function Co(e){return wo(e).root}function wo(e){let t=R.resolve(e);for(;;){let n=R.join(t,`package.json`);if(B.existsSync(n))try{let e=B.readFileSync(n,`utf-8`),r=JSON.parse(e);if(typeof r==`object`&&r&&`workspaces`in r)return{root:t,packageJsonPath:n,workspaces:Fn(r)}}catch{}let r=R.dirname(t);if(r===t)throw new So(e);t=r}}const To=`MAKAIO_MODEL_REGISTRY_SOURCES`;function Eo(e){let t=R.join(e.makaioHome,`models`),n=R.join(e.makaioHome,`cache`,`model-registry`);return new xo(t,new Zt(Do(e).map(e=>Ao(e,n))))}function Do(e){let t=ko(e.srcDir,e.cwd),n=t.slice(0,-1),r=t.slice(n.length);return No([...Oo(e.env??process.env),...e.seedPaths??[],...n,e.cdnRegistryUrl??`https://makaio-ai.github.io/makaio-framework/model-registry.yaml`,...e.fallbackSeedPaths??[],...r])}function Oo(e){let t=e[To]?.trim();if(!t)return[];let n;try{n=t.startsWith(`[`)?JSON.parse(t):t}catch(e){throw Error(`[boot] ${To} must be a JSON string array or a single source string`,{cause:e})}let r=Array.isArray(n)?n:[n];if(!r.every(e=>typeof e==`string`))throw Error(`[boot] ${To} entries must be strings`);return r.map(e=>e.trim()).filter(e=>e.length>0)}function ko(e,t=process.cwd()){let n=R.resolve(e,`static/model-registry.yaml`),r=R.resolve(t,`static/model-registry.yaml`);try{return No([r,R.resolve(Co(e),`static/model-registry.yaml`),n])}catch(e){if(e instanceof So)return No([r,n]);throw e}}function Ao(e,t){let n=Mo(e);return n?.protocol===`http:`||n?.protocol===`https:`?new Xt(new Ja(n.href),new Ya(R.join(t,`${Fo(n.href)}.json`),{trackFetchedAt:!0})):new Ga(jo(e,n))}function jo(e,t){if(t?.protocol===`file:`)return Ve(t);if(t!==void 0)throw Error(`[boot] Unsupported model registry source protocol "${t.protocol}" for ${e}`);return R.isAbsolute(e)?e:R.resolve(e)}function Mo(e){try{return new URL(e)}catch{return}}function No(e){let t=new Set,n=[];for(let r of e){let e=Po(r);t.has(e)||(t.add(e),n.push(r))}return n}function Po(e){let t=Mo(e);return t?.protocol===`file:`?`file:${R.resolve(Ve(t))}`:t===void 0?`file:${R.resolve(e)}`:`${t.protocol}//${t.host}${t.pathname}${t.search}`}function Fo(e){return We(`sha256`).update(e).digest(`hex`).slice(0,16)}async function Io(e){let t=R.resolve(e.frameworkPackagePath);await Lo(t);let n=R.join(e.makaioHome,`node_modules`,`@makaio`),r=R.join(n,`framework`);await L.mkdir(n,{recursive:!0}),!await Ro(r,t)&&(await L.rm(r,{recursive:!0,force:!0}),await L.symlink(t,r,process.platform===`win32`?`junction`:`dir`))}async function Lo(e){let t=R.join(e,`package.json`),n=await L.readFile(t,`utf-8`);if(JSON.parse(n).name!==`@makaio/framework`)throw Error(`Expected @makaio/framework package at ${e}`)}async function Ro(e,t){try{return(await L.lstat(e)).isSymbolicLink()?await L.realpath(e)===await L.realpath(t):!1}catch(e){if(zo(e))return!1;throw e}}function zo(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}function Bo(e,t){let n=t.endsWith(`/`)?t:`${t}/`,r=In({root:e,rewriteRequestPath:e=>e.slice(n.length-1)});return e=>{e.use(`${t}/*`,r)}}function Vo(e){return`/extensions/${e}/browser`}function Ho(e,t){return`extensions/${e}/browser/${Wo(t)}`}function Uo(e,t){return`/${Ho(e,t)}.js`}function Wo(e){let t=e.replaceAll(z.win32.sep,z.posix.sep),n=z.posix.basename(t),r=z.posix.extname(n);return r?n.slice(0,-r.length):n}function Go(e,t,n={}){let{createMount:r=Bo}=n,i=new Map(e.map(e=>[e.descriptor.name,e]));return t.map(e=>{let t=i.get(e.name);if(!t?.descriptor.entrypoints?.browser)return e;if(e.browser)return console.warn(`[extensions] ${e.name}: server entry already declares browser, skipping browser bridge`),e;if(e.http)return console.warn(`[extensions] ${e.name}: server entry already declares http, skipping browser bridge`),e;let n=t.descriptor.entrypoints.browser,a=F(`browser`,n),o=_e(`browser`,n,t.extensionPath);if(!o)return console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping bridge`),e;let s=R.dirname(o),c=Vo(e.name),l=Uo(e.name,a);return me({...e,browser:{entrypoint:l},http:{prefix:c,mount:r(s,c)}},e)})}function Ko(e,t={}){let{createMount:n=Bo,frameworkVersion:r}=t,i=[],a=new Map;for(let t of e){let{descriptor:e,extensionPath:o}=t;if(r!==void 0&&!M(t,r)||e.execution===`detached`||e.entrypoints.server||!e.entrypoints.browser)continue;let s=e.entrypoints.browser,c=F(`browser`,s),l=_e(`browser`,s,o);if(!l){console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping synthesis`);continue}let u=R.dirname(l),d=Vo(e.name),f=Uo(e.name,c);i.push({...he(e),browser:{entrypoint:f},http:{prefix:d,mount:n(u,d)}}),e.config?.defaults&&a.set(e.name,e.config.defaults)}return{packages:i,configDefaults:a}}async function qo(){let e=R.dirname(Ve(import.meta.url)),t=R.resolve(e,`..`,`package.json`),n=await L.readFile(t,`utf-8`),r=JSON.parse(n);if(typeof r!=`object`||!r||!(`version`in r)||typeof r.version!=`string`)throw Error(`[boot] package.json at ${t} has no string 'version' field`);return r.version}async function Jo(e){let t={packages:[],automationCronSchedulerHostPolicies:[],configDefaults:new Map},n=[],r=e.frameworkVersion??await qo();try{if(n=await e.extensionOptions.extensions.discover(),n=Yo(n,e.skipExtensions),process.env.MAKAIO_DEBUG){console.info(`[boot] Discovered %d extension descriptor(s):`,n.length);for(let e of n)console.info(`[boot] - %s (%s)`,e.descriptor.displayName??e.descriptor.name,e.source)}}catch(e){console.warn(`[boot] Extension discovery failed, skipping:`,e instanceof Error?e.message:e)}let i=n.filter(e=>M(e,r));if(i.length>0)try{t=await ge(i,{frameworkVersion:r})}catch(e){if(e instanceof be)throw e;console.warn(`[boot] Extension loading failed, skipping:`,e instanceof Error?e.message:e)}let a={...e.createMount?{createMount:e.createMount}:{},frameworkVersion:r},o=Go(i,t.packages,a),s=Ko(i,a),c=await P(i,[...o,...s.packages],{frameworkVersion:r});return{discovered:n,extensionLoadResult:t,browserOnlyResult:s,extensionsWithCli:c,allExtensionPackages:c.packages}}function Yo(e,t){if(t.size===0)return e;let n=new Set(e.map(e=>e.descriptor.name)),r=[...t].filter(e=>!n.has(e));r.length&&console.warn(`[boot] MAKAIO_SKIP_EXTENSIONS: no matching extension(s): %s`,r.join(`, `));let i=new Set([...t].filter(e=>n.has(e))),a=e.filter(e=>!i.has(e.descriptor.name));return a.length<e.length&&console.info(`[boot] MAKAIO_SKIP_EXTENSIONS filtered %d extension(s): %s`,e.length-a.length,[...i].join(`, `)),a}async function Xo(e,t){let n=Ft(e),r=n.dialect,i=new Set;for(let a of t){if(i.has(a.migrationSourceId))continue;i.add(a.migrationSourceId);let t=Zo(a.migrationSourceId,n);process.env.MAKAIO_DEBUG===`true`&&console.info(`[boot] Running migrations for package: ${a.name}`);let o;try{o=qn({migrationsDir:a.migrationsPathByDialect?.[r]??a.migrationsPath,migrationSourceId:a.migrationSourceId,expectedDialect:r})}catch(e){throw e instanceof Error&&e.name===`MigrationDialectMismatchError`?Error(`Extension '${a.name}' ships migrations that do not match the '${r}' database dialect. Disable this extension on '${r}' hosts or ship a migration chain generated for '${r}'.`,{cause:e}):e}await rr(e,o,t)}}function Zo(e,t){let n=We(`sha256`).update(e).digest(`hex`).slice(0,16);return t.migrations.extensionLedgerName(n)}function Qo(e,t){return new mt({signingKeyPair:e.signingKeyPair,identityId:e.machineId,getPeerSigningKey:t})}const $o=st.fact.$meta.namespace,es=st.fact.subject;function ts(e,t){if(t.transport!==void 0||t.localOnly===!0)return!1;let n=`${t.namespace}.${t.subject}`,r=e.getContext().namespaceRegistry;return!r.isLocalSubject(n)&&!r.isCollectorOnlySubject(n)}function ns(e){return e.type===`event`?{type:`event`,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,...e.correlationId===void 0?{}:{correlationId:e.correlationId}}:{type:e.type,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,correlationId:e.correlationId??e.messageId}}async function rs(e,t,n,r,i){let a=ns(i),o=$e({message:a,direction:`outbound`,observedAt:Date.now(),machineId:n,namespaceRegistry:t.getContext().namespaceRegistry,projectorRegistry:r.projectorRegistry});for(let t of o)await e.send({type:`event`,namespace:$o,subject:es,payload:t,messageId:`${a.messageId}:telemetry:${t.factId}`,correlationId:a.correlationId})}async function is(e,t,n){let r=n.transport;await r.connect();let i;try{i=e.observeMessages(i=>{ts(e,i)&&rs(r,e,t,n,i).catch(e=>{console.error(`[upstream-telemetry] Failed to export subject telemetry fact`,e)})})}catch(e){throw await r.disconnect().catch(()=>void 0),e}return{shutdown:async()=>{i(),await r.disconnect()}}}function as(e,...t){return async n=>{let r=await e(n);if(r!==void 0)return r;for(let e of t){let t=await e?.(n);if(t!==void 0)return t}}}function os(e,t){let n=e===`0.0.0.0`?`127.0.0.1`:e===`::`?`::1`:e;return`ws://${n.includes(`:`)&&!n.startsWith(`[`)?`[${n}]`:n}:${t}/bus`}async function ss(e,t,n,r){let s=r.makaioHome??fe(),f=gr(r,s),h=S(),g=r.peerSigningKeyResolver,C=[];try{if(r.lanBind&&e.dispatchingAuth&&!g)throw Error(`[boot] peerSigningKeyResolver is required when lanBind is enabled`);let S=r.configProvider,w=S??new hr(new ar(s),s),T=await w.getConfig({mode:`local`}),E=r.machineIdentity??await gn(R.join(s,`keys`)),D=S?await S.getMachineId():E.machineId;if(E.machineId!==D)throw Error(`[boot] Config provider machineId '${D}' does not match runtime machine identity '${E.machineId}'`);console.info(`[boot] Config resolved (mode=%s)`,T.mode);let O=Ze;if(O.registerNamespaces(at),O.registerNamespaces(ot),O.registerNamespaces([_t,xn,yt,bt,te]),O.registerNamespaces(Vt),O.registerNamespaces(r.hostNamespaces??[]),process.env.MAKAIO_DEBUG===`true`){let e=O.__onAny(e=>{let t;try{t=JSON.stringify(e.payload)}catch{t=`[unserializable payload]`}console.debug(`[bus-server] subject: ${e.subject}, payload: ${t}`)});C.push(e)}if(r.upstreamTelemetry){let e=await is(O,D,r.upstreamTelemetry);C.push(e.shutdown)}await O.emit(U.phase.busCreated,{machineId:D}),await e.connect(O,D),C.push(()=>e.disconnect()),console.info(`[boot] Transport ready on %s:%d`,n,t);try{r.onTransportReady?.({port:t,host:n})}catch(e){console.warn(`[boot] onTransportReady callback failed:`,e)}let{databaseClient:ee}=await wr({makaioHome:s,migrationsDir:r.centralMigrationsDir,database:r.database}),k=ee.db;console.info(`[boot] Database initialized`),C.push(()=>ee.close());let re=[O.on(ne.database,e=>{e.setResult({db:k})}),O.on(ne.machineIdentity,e=>{e.setResult({identity:E})}),O.on(ne.busPort,e=>{e.setResult({port:t})})],ie=!1,ae=O.on(U.isReady,e=>{e.setResult({ready:ie,machineId:D})});C.push(()=>{ie=!1,ae();for(let e of re)e()}),await O.emit(U.phase.coreReady,{machineId:D}),console.info(`[boot] Core ready (machineId=%s)`,D);let oe=R.dirname(Ve(import.meta.url)),se=ki(O,w);C.push(se),console.info(`[boot] Config handlers registered`),r.frameworkPackagePath&&(await Io({makaioHome:s,frameworkPackagePath:r.frameworkPackagePath}),console.info(`[boot] Framework package linked for extension resolution`));let A=r.frameworkModuleResolver;if(A){try{await A.install()}catch(e){throw await Promise.resolve(A.uninstall()).catch(()=>void 0),e}C.push(()=>A.uninstall()),console.info(`[boot] Framework module resolver installed`)}let j={current:void 0},ce=Eo({makaioHome:s,srcDir:oe,fallbackSeedPaths:r.modelRegistryFallbackSeedPaths}),le=process.env.USER??process.env.USERNAME??`unknown`;try{le=zt.userInfo().username}catch{}let ue=r.frameworkVersion??await qo(),{extensionLoadResult:de,browserOnlyResult:fe,extensionsWithCli:pe,allExtensionPackages:me}=await Jo({extensionOptions:f,skipExtensions:h,frameworkVersion:ue,createMount:r.createMount}),he=o(process.platform,r.hostCapabilities),M=x({packages:me,configProvider:r.extensionConfigProvider,surface:r.surface??`headless`,runtimeEnvironment:he}),ge=os(n,t),N=new vt(O,{surface:r.surface??`headless`,db:k,extensionContextBase:{cwd:process.cwd(),platform:process.platform,homedir:zt.homedir(),makaioHome:s,username:le,machineId:E.machineId,busUrl:ge,tryImport:c},runtimeEnvironment:he,launcherCommand:r.launcherCommand,loadConfig:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadConfig(e):void 0,loadEnabled:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadEnabled(e):void 0,runMigrations:e=>Xo(k,e)}),_e=r.adapterConfigRepository??new pn({providerConfigsDir:R.join(s,`provider-configs`),adaptersDir:R.join(s,`adapters`)}),P=[Ei,p,tn({definitions:M.flatMap(e=>e.clients??[]),strategyDependencies:r.clientBinaryStrategyDependencies,postInstallHandlers:r.clientBinaryPostInstallHandlers})];r.enablePackageManager!==!1&&P.push(li({frameworkPeerRange:`^${ue}`,frameworkPackagePath:r.frameworkPackagePath,devPortalPackages:r.devPortalPackages}));let ve={cwd:process.cwd()},F=async e=>N.getExtensionService(jn)?.resolveWorkspaceRoot(e),ye=as(F,r.piscinaWorkspaceRootResolver),be=as(F,r.workflowRunner?.mode===`piscina`?r.workflowRunner.resolveWorkspaceRoot:void 0,r.piscinaWorkspaceRootResolver),xe=_({busUrl:ge,runtimeModuleDir:oe,platformDefaults:ve,workflowRunner:r.workflowRunner?.mode===`piscina`?{...r.workflowRunner,resolveWorkspaceRoot:be}:r.workflowRunner,makaioHome:s,bus:O,executionAttemptRepository:r.executionAttemptRepository,executionAttemptBootstrapTimeoutMs:r.executionAttemptBootstrapTimeoutMs,workflowMaterializationSpecResolvers:r.workflowMaterializationSpecResolvers}),{adapterSubsystemPackage:Se}=m({coordinator:N,configRepository:_e,platformDefaults:ve});if(P.push(Se,...d(M),Mn(xe),Gt(ce),An),process.platform===`darwin`){let{platformMacOSPackage:e}=await import(`../src-DIyWekjW.mjs`);P.push(e)}let Ce=En({hostPackages:[...r.automationCronSchedulerPackage?[r.automationCronSchedulerPackage]:[],...u(de.automationCronSchedulerHostPolicies,{packages:me,configProvider:r.extensionConfigProvider,surface:r.surface??`headless`,runtimeEnvironment:he})],loadedPackages:[...P,...M]});Ce&&P.push(Ce);let we=[...P,...mn(M)],Te=new Set(we.map(e=>e.name)),Ee=Di(Oi(de.configDefaults,fe.configDefaults,pe.configDefaults,r.packageConfigDefaults??new Map),Te);N.load(we,Ee),N.registerContributionProcessor(kn()),N.registerContributionProcessor(Ht()),N.registerContributionProcessor(Ut()),N.registerContributionProcessor(Wt()),N.registerContributionProcessor(On()),N.registerContributionProcessor(Dn()),N.registerContributionProcessor(qt()),N.registerContributionProcessor(Yt()),N.registerContributionProcessor(Jt()),N.registerContributionProcessor(Kt({forEachActiveExtension:e=>N.forEachActiveExtension(e)})),N.registerContributionProcessor(Tn({forEachActiveExtension:e=>N.forEachActiveExtension(e)})),r.routeGraphBuilder&&N.registerContributionProcessor(ui(r.routeGraphBuilder)),a(C,i(we,O,N)),C.push(()=>N.shutdown()),a(C,r.configureCoordinator?.({bus:O,coordinator:N,registerContributionProcessor:e=>{N.registerContributionProcessor(e)},getAdapterSubsystemService:()=>N.getExtensionService(fn)})),await N.startAll(),await O.emit(U.phase.servicesReady,{machineId:D});let De=N.list(),Oe=De.filter(e=>e.state===`active`);if(console.info(`[boot] Extensions started: %d active`,Oe.length),process.env.MAKAIO_DEBUG){let e=De.filter(e=>e.state===`failed`);for(let e of Oe)console.info(`[boot] ✓ %s (%s)`,e.displayName,e.name);for(let t of e)console.warn(`[boot] ✗ %s (%s): %s`,t.displayName,t.name,t.error??`unknown`)}j.current=N.getExtensionService(fn);let ke=new v({workerEntry:y({moduleDir:oe,mode:R.basename(oe)===`src`?`source`:`dist`}),manifest:{contributionRefs:[]},resolveWorkspaceRoot:ye}),Ae=new b({id:tt,displayName:`Local (Piscina)`,runner:ke,bus:O});try{await lt(O,Ae)}catch(e){throw await ke.dispose().catch(()=>void 0),e}C.push(async()=>{try{await dt(O,Ae.id)}finally{await ke.dispose().catch(()=>void 0)}}),console.info(`[boot] Piscina thin workflow provider registered (id=%s)`,Ae.id),C.push(Wn(O,()=>j.current?.getLoadedAdapters()??[],()=>j.current?.getAdapterInstances()??new Map,e=>N.getExtension(e)));let je=l({bus:O,currentMachineId:D,resolveLiveAdapterId:e=>j.current?.resolveLiveAdapterId(e),resolveLiveAdapterIdentity:e=>j.current?.resolveLiveAdapterIdentity(e),listLiveAdapterIdentities:()=>j.current?.getLiveAdapterIdentities()??[]});if(C.push(je.cleanup),await O.broadcast(U.phase.coordinatorReady,{machineId:D}),r.lanBind&&e.dispatchingAuth&&g){let t=Qo(E,g);e.dispatchingAuth.setE2EAuth(t),console.info(`[boot] E2E auth enabled (LAN mode, machineId=%s)`,D)}ie=!0,await O.emit(U.ready,{machineId:D}),console.info(`[boot] Runtime ready (machineId=%s)`,D);let Me=xt([...C].reverse());return{port:t,host:n,machineId:D,bus:O,coordinator:N,trayEntries:N.trayEntries,windowRegistry:N.windowRegistry,shutdown:Me}}catch(e){console.error(`[boot] Startup failed — rolling back started resources`,e);for(let e of[...C].reverse())try{await e()}catch(e){console.warn(`[boot] Rollback step error:`,e)}throw e}}async function cs(e){let t=new mr({httpServer:e.httpServer,auth:e.auth,loopbackName:e.loopbackName??`node`}),n=e.httpServer.address();if(typeof n!=`object`||!n)throw Error(`HTTP server is not bound to a TCP address`);return ss(t,n.port,n.address,{...e,hostCapabilities:f(e.hostCapabilities),clientBinaryStrategyDependencies:e.clientBinaryStrategyDependencies??k()})}const ls=`MAKAIO_UPSTREAM_URL`,us=`MAKAIO_UPSTREAM_SECRET`;function ds(e){return new gt({url:e.url,name:`upstream-telemetry-ws`,auth:e.secret===void 0?void 0:new ht({secret:e.secret})})}function fs(e={}){let t=e.env??process.env,n=ms(t[us]),r=ps(t[ls]);if(r===void 0){if(n!==void 0)throw Error(`${us} requires ${ls}`);return}return{transport:(e.createTransport??ds)({url:r,...n===void 0?{}:{secret:n}})}}function ps(e){let t=e?.trim();return t===void 0||t===``?void 0:t}function ms(e){let t=e?.trim();return t===void 0||t===``?void 0:t}async function hs(e){return{...await A(e),hostCapabilities:[`node`]}}const gs=Be(ze);var _s=class{async resolve(e){return cn(e,{resolveKeychain:this.resolveKeychain})}async resolveKeychain(e,t){try{let{stdout:n}=await gs(`security`,[`find-generic-password`,`-s`,e,`-a`,t,`-w`]);return n.trim()||null}catch{return null}}},vs=class{bus;fallbackProvider=new _s;channelPromise;constructor(e){this.bus=e}async resolve(e){let t=Rt(e);if(t){let{configId:e,key:n}=t;for(let t=0;t<2;t++)try{return(await(await this.getChannel()).request(it.get,{configId:e})).credentials?.[n]??null}catch(e){if(e instanceof Xe&&(this.channelPromise=void 0,t===0))continue;throw e}}return e.startsWith(`stored:`)?(console.warn(`[StoredCredentialProvider] Unresolvable credential ref "${e}". Only the "stored:providerConfig:" format is supported. Re-save the credential using the current format.`),null):this.fallbackProvider.resolve(e)}getChannel(){return this.channelPromise??=this.openCredentialChannel().catch(e=>{throw this.channelPromise=void 0,e}),this.channelPromise}async openCredentialChannel(){let{token:e}=await this.bus.request(it.getChannelToken,{});return Qe(this.bus.getContext(),`credentials`,{token:e,transports:[]})}};async function ys(e){let{db:t}=await e.request(ne.database,{});return t}const bs=[`default`,`import`,`require`];var xs=class{frameworkDistPath=``;install(){}uninstall(){}},Ss=class{frameworkDistPath;hooks;installPromise;installToken;constructor(e){this.frameworkDistPath=e}async install(){if(this.hooks)return;if(this.installPromise)return this.installPromise;let e={};this.installToken=e;let t=this.installWithToken(e);this.installPromise=t;try{await t}finally{this.installPromise===t&&(this.installPromise=void 0)}}async installWithToken(e){let{registerHooks:t}=await import(`node:module`);if(this.installToken!==e||this.hooks)return;let n=this.frameworkDistPath,r=ws(n);this.hooks=t({resolve(e,t,i){let a=Cs(n,e,r);return a?{shortCircuit:!0,url:He(a).href}:i(e,t)}})}uninstall(){this.installToken=void 0,this.installPromise=void 0,this.hooks?.deregister(),this.hooks=void 0}};function Cs(e,t,n){if(!t.startsWith(`@makaio/framework/`))return;let r=t.slice(18),i=r.split(`/`);if(i.length===0||i.some(e=>e.length===0||e===`.`||e===`..`||e.includes(`\\`)))return;let a=Es((n??ws(e))[`./${r}`]);if(!a)return;let o=Ds(a);if(!o)return;let s=z.resolve(e,o);return Os(s,e)?s:void 0}function ws(e){let t=z.join(e,`..`,`package.json`);return Ts(JSON.parse(Ke(t,`utf-8`)).exports)}function Ts(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e))if(n.startsWith(`.`)){if(typeof r==`string`){t[n]=r;continue}typeof r==`object`&&r&&!Array.isArray(r)&&(t[n]=r)}return t}function Es(e){if(typeof e==`string`)return e;if(e)for(let t of bs){let n=e[t];if(typeof n==`string`)return n}}function Ds(e){let t=e.split(`\\`).join(`/`);if(t.startsWith(`./dist/`))return t.slice(7)}function Os(e,t){let n=z.relative(t,e);return n===``||!n.startsWith(`..`)&&!z.isAbsolute(n)}export{h as AttemptOutcomeDeliveryError,T as AuthorityRequestDeliveryError,Oe as BootstrapStartRefusedError,mr as BusServerTransportProvider,Ie as CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS,Me as CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES,Pe as CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY,je as CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER,ke as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES,Ne as CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS,Fe as CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES,Ae as CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES,re as ExplicitDescriptorDiscovery,ar as FileConfigStorage,Ya as FileRegistryCache,ie as FilesystemDescriptorDiscovery,E as InProcessWorkflowRunner,oe as MAKAIO_CONFIG_FILE_ENV,se as MAKAIO_HOME_ENV,us as MAKAIO_UPSTREAM_SECRET_ENV,ls as MAKAIO_UPSTREAM_URL_ENV,ae as MergedDescriptorDiscovery,_s as NodeCredentialProvider,Ss as NodeFrameworkModuleResolver,xs as NoopFrameworkModuleResolver,Ee as OperationAdmissionRefusedError,g as OutcomeDeliveryError,Le as PiscinaCodeExecutionProvider,Ce as RuntimeRegistrationRefusedError,ne as RuntimeSubjects,vs as StoredCredentialProvider,v as ThinWorkflowPiscinaRunner,So as WorkspaceRootNotFoundError,l as activateAdapterRuntimeIdentity,xe as admitWorkflowRunOperation,is as attachUpstreamTelemetry,cs as bootMakaioRuntime,ss as bootMakaioRuntimeCore,we as bootstrapWorkerRuntime,Go as bridgeExtensionBrowserEntries,A as buildConfiguredRuntimeOptions,Ho as buildExtensionBrowserRollupInputName,Uo as buildExtensionBrowserRuntimeEntrypoint,hs as buildNodeRuntimeOptions,lr as createHonoRouteGraph,dr as createHttpRouteGraphBuilder,D as createIsolatedWorkflowRuntime,j as createMakaioConfigDiscovery,k as createNodeClientBinaryStrategyDependencies,ds as createUpstreamTelemetryTransport,ce as defineMakaioConfig,F as entrypointStem,Co as findWorkspaceRoot,wo as findWorkspaceRootInfo,ys as getRuntimeDatabase,wr as initializeNodeDatabase,Te as installOperationDeliveryEndpoint,N as isCliContributionLike,ve as isMakaioExtensionLike,s as isMissingOptionalRuntimePackage,ye as isWithinDirectory,ge as loadExtensions,le as loadMakaioConfig,hn as loadOrCreateMachineIdentity,_n as machineKeysExist,f as normalizeNodeHostCapabilities,ue as parseMakaioConfig,m as prepareAdapterRuntime,qo as readFrameworkVersion,ee as registerAdapterNameResolver,De as registerAndAdmitWorkflowRun,Wn as registerRuntimeHandlers,Se as registerWorkerRuntime,vr as resolveBundledMigrationsDir,_e as resolveConventionEntrypoint,Cs as resolveFrameworkSpecifier,cr as resolveListeningPort,de as resolveMakaioConfigPath,fe as resolveMakaioHome,or as resolveStaticModelRegistryPath,fs as resolveUpstreamTelemetryBootOptionsFromEnv,y as resolveWorkflowWorkerEntry,O as runHeadlessWorkflowWorker,ir as runMigrations,zn as runRuntimeHandlerCleanups,w as runWorkloadInvocation,d as selectFrameworkCorePackages,pe as shouldIncludeExtension,C as submitAttemptOutcomeWithAck,c as tryImport,vn as validateMachineKeys,sr as waitForServerListening};
|
|
119
|
+
`)}`)}};async function Ka(e){try{return await B.promises.readFile(e,`utf-8`)}catch(t){if(qa(t))return;throw Error(`Failed to read bundled model registry seed at ${e}: ${Ua(t)}`,{cause:t})}}function qa(e){return Va(e)||Ha(e)}var Ja=class{url;timeoutMs;constructor(e,t=1e4){let n=e.trim();if(!n)throw Error(`CdnRegistryFetcher requires a non-empty registry URL`);let r;try{r=new URL(n)}catch(e){throw Error(`CdnRegistryFetcher requires a valid registry URL: ${n}`,{cause:e})}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`CdnRegistryFetcher requires an HTTP(S) registry URL: ${n}`);if(!Number.isFinite(t)||t<=0)throw Error(`CdnRegistryFetcher requires a positive finite timeoutMs, got ${t}`);this.url=r.toString(),this.timeoutMs=t}async fetch(){let e=new AbortController,t=setTimeout(()=>e.abort(),this.timeoutMs);try{let t=await fetch(this.url,{signal:e.signal});if(!t.ok)throw Error(`Failed to fetch model registry: ${t.status} ${t.statusText}`);let n=(0,$.parse)(await t.text());return Qt.parse(n)}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`Failed to fetch model registry: timed out after ${this.timeoutMs}ms`,{cause:e}):e}finally{clearTimeout(t)}}},Ya=class{cachePath;trackFetchedAt;constructor(e,t={}){this.cachePath=e,this.trackFetchedAt=t.trackFetchedAt??!1}async get(){try{let e=await B.promises.readFile(this.cachePath,`utf-8`),t=Xa(JSON.parse(e)),n=Qt.safeParse(t);return n.success?n.data:null}catch{return null}}async set(e){try{await B.promises.mkdir(R.dirname(this.cachePath),{recursive:!0});let t=this.trackFetchedAt?{fetchedAt:new Date().toISOString(),registry:e}:e;await B.promises.writeFile(this.cachePath,JSON.stringify(t,null,2),`utf-8`)}catch(e){console.warn(`[FileRegistryCache] Failed to write cache:`,e)}}};function Xa(e){return Je(e)&&`registry`in e&&`fetchedAt`in e?e.registry:e}const Za=I.object({name:I.string().optional(),models:I.array(et)}),Qa=I.object({name:I.string().optional(),models:I.record(I.string(),$t)}),$a=I.object({$schema:I.literal(`makaio/model-registry/v2`).optional(),updatedAt:I.string().datetime().optional(),labs:I.record(I.string(),Za).optional(),providers:I.record(I.string(),Qa).optional()}),eo=I.object({name:I.string().optional(),models:I.array(I.record(I.string(),I.unknown()))}),to=I.object({name:I.string().optional(),models:I.record(I.string(),$t)});var no=class{userModelsDir;constructor(e){this.userModelsDir=e}async fetch(){let e=ro();return await Promise.all([this.loadLabDirectory(R.join(this.userModelsDir,`labs`),e),this.loadProviderDirectory(R.join(this.userModelsDir,`providers`),e)]),await this.loadFlatFiles(e),e}async loadLabDirectory(e,t){let n=await Wa(e),r=await Promise.all(n.map(async e=>({labId:R.basename(e,`.yaml`),lab:await fo(e,R.basename(e,`.yaml`))})));for(let{labId:e,lab:n}of r)_o(t,e,n)}async loadProviderDirectory(e,t){let n=await Wa(e),r=await Promise.all(n.map(async e=>({providerId:R.basename(e,`.yaml`),provider:await po(e)})));for(let{providerId:e,provider:n}of r)vo(t,e,n)}async loadFlatFiles(e){let t=await Wa(this.userModelsDir);for(let n of t){let t=R.basename(n,`.yaml`),r=(0,$.parse)(await B.promises.readFile(n,`utf-8`));if(!Je(r))throw Error(`Invalid model registry overlay YAML in ${n}: expected a YAML object.`);if(`labs`in r||`providers`in r){go(e,$a.parse(r));continue}if(Array.isArray(r.models)){_o(e,t,mo(r,t));continue}if(Je(r.models)){vo(e,t,ho(r));continue}throw Error(`Unrecognized model registry overlay shape in ${n}: expected labs, providers, or models.`)}}};function ro(){return{labs:{},providers:{}}}function io(e,t){return{$schema:`makaio/model-registry/v2`,updatedAt:t.updatedAt??e.updatedAt,labs:yo(ao(e.labs,t.labs)),providers:bo(co(e.providers,t.providers))}}function ao(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:oo(t.models,r.models)}}return n}function oo(e,t){let n=[...e],r=new Map(e.map((e,t)=>[e.name,t]));for(let e of t){let t=r.get(e.name);if(t===void 0){r.set(e.name,n.length),n.push(e);continue}n[t]=so(n[t],e)}return n}function so(e,t){let n={...e,...t},r=en(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}function co(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:{...t,...r,models:lo(t.models,r.models)}}return n}function lo(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=t===void 0?r:uo(t,r)}return n}function uo(e,t){let n={...e,...t},r=en(e.metadata,t.metadata);return r===void 0?delete n.metadata:n.metadata=r,n}async function fo(e,t){return mo((0,$.parse)(await B.promises.readFile(e,`utf-8`)),t)}async function po(e){return ho((0,$.parse)(await B.promises.readFile(e,`utf-8`)))}function mo(e,t){let n=eo.parse(e);return{...n.name===void 0?{}:{name:n.name},models:n.models.map(e=>et.parse({...e,labId:t}))}}function ho(e){let t=to.parse(e);return{...t.name===void 0?{}:{name:t.name},models:t.models}}function go(e,t){e.updatedAt=t.updatedAt??e.updatedAt,t.labs!==void 0&&(e.labs=ao(e.labs,t.labs)),t.providers!==void 0&&(e.providers=co(e.providers,t.providers))}function _o(e,t,n){e.labs=ao(e.labs,{[t]:n})}function vo(e,t,n){e.providers=co(e.providers,{[t]:n})}function yo(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}function bo(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t,name:t.name??e}]))}var xo=class{userModelsDir;baseFetcher;constructor(e,t){this.userModelsDir=e,this.baseFetcher=t}async fetch(){let e=await this.baseFetcher.fetch();if(await this.validateDirectory(this.userModelsDir),await this.validateDirectory(`${this.userModelsDir}/labs`),await this.validateDirectory(`${this.userModelsDir}/providers`),!await this.hasAnyOverlayFiles())return e;let t=io(e,await new no(this.userModelsDir).fetch());return Qt.parse(t)}async validateDirectory(e){await Wa(e)}async hasAnyOverlayFiles(){let e,t;try{let n=await L.readdir(this.userModelsDir,{withFileTypes:!0});e=n.map(e=>String(e.name)),t=new Map(n.map(e=>[String(e.name),[e.isFile(),e.isDirectory()]]))}catch(e){if(Va(e))return!1;throw e}return e.some(e=>{let[n,r]=t.get(e)??[!1,!1];return n&&e.endsWith(`.yaml`)||r&&(e===`labs`||e===`providers`)})}},So=class extends Error{constructor(e){super(`[boot] Could not find workspace root (no package.json with 'workspaces' field) starting from: ${e}`),this.name=`WorkspaceRootNotFoundError`}};function Co(e){return wo(e).root}function wo(e){let t=R.resolve(e);for(;;){let n=R.join(t,`package.json`);if(B.existsSync(n))try{let e=B.readFileSync(n,`utf-8`),r=JSON.parse(e);if(typeof r==`object`&&r&&`workspaces`in r)return{root:t,packageJsonPath:n,workspaces:Fn(r)}}catch{}let r=R.dirname(t);if(r===t)throw new So(e);t=r}}const To=`MAKAIO_MODEL_REGISTRY_SOURCES`;function Eo(e){let t=R.join(e.makaioHome,`models`),n=R.join(e.makaioHome,`cache`,`model-registry`);return new xo(t,new Zt(Do(e).map(e=>Ao(e,n))))}function Do(e){let t=ko(e.srcDir,e.cwd),n=t.slice(0,-1),r=t.slice(n.length);return No([...Oo(e.env??process.env),...e.seedPaths??[],...n,e.cdnRegistryUrl??`https://makaio-ai.github.io/makaio-framework/model-registry.yaml`,...e.fallbackSeedPaths??[],...r])}function Oo(e){let t=e[To]?.trim();if(!t)return[];let n;try{n=t.startsWith(`[`)?JSON.parse(t):t}catch(e){throw Error(`[boot] ${To} must be a JSON string array or a single source string`,{cause:e})}let r=Array.isArray(n)?n:[n];if(!r.every(e=>typeof e==`string`))throw Error(`[boot] ${To} entries must be strings`);return r.map(e=>e.trim()).filter(e=>e.length>0)}function ko(e,t=process.cwd()){let n=R.resolve(e,`static/model-registry.yaml`),r=R.resolve(t,`static/model-registry.yaml`);try{return No([r,R.resolve(Co(e),`static/model-registry.yaml`),n])}catch(e){if(e instanceof So)return No([r,n]);throw e}}function Ao(e,t){let n=Mo(e);return n?.protocol===`http:`||n?.protocol===`https:`?new Xt(new Ja(n.href),new Ya(R.join(t,`${Fo(n.href)}.json`),{trackFetchedAt:!0})):new Ga(jo(e,n))}function jo(e,t){if(t?.protocol===`file:`)return Ve(t);if(t!==void 0)throw Error(`[boot] Unsupported model registry source protocol "${t.protocol}" for ${e}`);return R.isAbsolute(e)?e:R.resolve(e)}function Mo(e){try{return new URL(e)}catch{return}}function No(e){let t=new Set,n=[];for(let r of e){let e=Po(r);t.has(e)||(t.add(e),n.push(r))}return n}function Po(e){let t=Mo(e);return t?.protocol===`file:`?`file:${R.resolve(Ve(t))}`:t===void 0?`file:${R.resolve(e)}`:`${t.protocol}//${t.host}${t.pathname}${t.search}`}function Fo(e){return We(`sha256`).update(e).digest(`hex`).slice(0,16)}async function Io(e){let t=R.resolve(e.frameworkPackagePath);await Lo(t);let n=R.join(e.makaioHome,`node_modules`,`@makaio`),r=R.join(n,`framework`);await L.mkdir(n,{recursive:!0}),!await Ro(r,t)&&(await L.rm(r,{recursive:!0,force:!0}),await L.symlink(t,r,process.platform===`win32`?`junction`:`dir`))}async function Lo(e){let t=R.join(e,`package.json`),n=await L.readFile(t,`utf-8`);if(JSON.parse(n).name!==`@makaio/framework`)throw Error(`Expected @makaio/framework package at ${e}`)}async function Ro(e,t){try{return(await L.lstat(e)).isSymbolicLink()?await L.realpath(e)===await L.realpath(t):!1}catch(e){if(zo(e))return!1;throw e}}function zo(e){return typeof e==`object`&&!!e&&`code`in e&&e.code===`ENOENT`}function Bo(e,t){let n=t.endsWith(`/`)?t:`${t}/`,r=In({root:e,rewriteRequestPath:e=>e.slice(n.length-1)});return e=>{e.use(`${t}/*`,r)}}function Vo(e){return`/extensions/${e}/browser`}function Ho(e,t){return`extensions/${e}/browser/${Wo(t)}`}function Uo(e,t){return`/${Ho(e,t)}.js`}function Wo(e){let t=e.replaceAll(z.win32.sep,z.posix.sep),n=z.posix.basename(t),r=z.posix.extname(n);return r?n.slice(0,-r.length):n}function Go(e,t,n={}){let{createMount:r=Bo}=n,i=new Map(e.map(e=>[e.descriptor.name,e]));return t.map(e=>{let t=i.get(e.name);if(!t?.descriptor.entrypoints?.browser)return e;if(e.browser)return console.warn(`[extensions] ${e.name}: server entry already declares browser, skipping browser bridge`),e;if(e.http)return console.warn(`[extensions] ${e.name}: server entry already declares http, skipping browser bridge`),e;let n=t.descriptor.entrypoints.browser,a=F(`browser`,n),o=_e(`browser`,n,t.extensionPath);if(!o)return console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping bridge`),e;let s=R.dirname(o),c=Vo(e.name),l=Uo(e.name,a);return me({...e,browser:{entrypoint:l},http:{prefix:c,mount:r(s,c)}},e)})}function Ko(e,t={}){let{createMount:n=Bo,frameworkVersion:r}=t,i=[],a=new Map;for(let t of e){let{descriptor:e,extensionPath:o}=t;if(r!==void 0&&!M(t,r)||e.execution===`detached`||e.entrypoints.server||!e.entrypoints.browser)continue;let s=e.entrypoints.browser,c=F(`browser`,s),l=_e(`browser`,s,o);if(!l){console.warn(`[extensions] ${e.name}: browser entry has no resolvable candidate within extension directory, skipping synthesis`);continue}let u=R.dirname(l),d=Vo(e.name),f=Uo(e.name,c);i.push({...he(e),browser:{entrypoint:f},http:{prefix:d,mount:n(u,d)}}),e.config?.defaults&&a.set(e.name,e.config.defaults)}return{packages:i,configDefaults:a}}async function qo(){let e=R.dirname(Ve(import.meta.url)),t=R.resolve(e,`..`,`package.json`),n=await L.readFile(t,`utf-8`),r=JSON.parse(n);if(typeof r!=`object`||!r||!(`version`in r)||typeof r.version!=`string`)throw Error(`[boot] package.json at ${t} has no string 'version' field`);return r.version}async function Jo(e){let t={packages:[],automationCronSchedulerHostPolicies:[],configDefaults:new Map},n=[],r=e.frameworkVersion??await qo();try{if(n=await e.extensionOptions.extensions.discover(),n=Yo(n,e.skipExtensions),process.env.MAKAIO_DEBUG){console.info(`[boot] Discovered %d extension descriptor(s):`,n.length);for(let e of n)console.info(`[boot] - %s (%s)`,e.descriptor.displayName??e.descriptor.name,e.source)}}catch(e){console.warn(`[boot] Extension discovery failed, skipping:`,e instanceof Error?e.message:e)}let i=n.filter(e=>M(e,r));if(i.length>0)try{t=await ge(i,{frameworkVersion:r})}catch(e){if(e instanceof be)throw e;console.warn(`[boot] Extension loading failed, skipping:`,e instanceof Error?e.message:e)}let a={...e.createMount?{createMount:e.createMount}:{},frameworkVersion:r},o=Go(i,t.packages,a),s=Ko(i,a),c=await P(i,[...o,...s.packages],{frameworkVersion:r});return{discovered:n,extensionLoadResult:t,browserOnlyResult:s,extensionsWithCli:c,allExtensionPackages:c.packages}}function Yo(e,t){if(t.size===0)return e;let n=new Set(e.map(e=>e.descriptor.name)),r=[...t].filter(e=>!n.has(e));r.length&&console.warn(`[boot] MAKAIO_SKIP_EXTENSIONS: no matching extension(s): %s`,r.join(`, `));let i=new Set([...t].filter(e=>n.has(e))),a=e.filter(e=>!i.has(e.descriptor.name));return a.length<e.length&&console.info(`[boot] MAKAIO_SKIP_EXTENSIONS filtered %d extension(s): %s`,e.length-a.length,[...i].join(`, `)),a}async function Xo(e,t){let n=Ft(e),r=n.dialect,i=new Set;for(let a of t){if(i.has(a.migrationSourceId))continue;i.add(a.migrationSourceId);let t=Zo(a.migrationSourceId,n);process.env.MAKAIO_DEBUG===`true`&&console.info(`[boot] Running migrations for package: ${a.name}`);let o;try{o=qn({migrationsDir:a.migrationsPathByDialect?.[r]??a.migrationsPath,migrationSourceId:a.migrationSourceId,expectedDialect:r})}catch(e){throw e instanceof Error&&e.name===`MigrationDialectMismatchError`?Error(`Extension '${a.name}' ships migrations that do not match the '${r}' database dialect. Disable this extension on '${r}' hosts or ship a migration chain generated for '${r}'.`,{cause:e}):e}await rr(e,o,t)}}function Zo(e,t){let n=We(`sha256`).update(e).digest(`hex`).slice(0,16);return t.migrations.extensionLedgerName(n)}function Qo(e,t){return new mt({signingKeyPair:e.signingKeyPair,identityId:e.machineId,getPeerSigningKey:t})}const $o=st.fact.$meta.namespace,es=st.fact.subject;function ts(e,t){if(t.transport!==void 0||t.localOnly===!0)return!1;let n=`${t.namespace}.${t.subject}`,r=e.getContext().namespaceRegistry;return!r.isLocalSubject(n)&&!r.isCollectorOnlySubject(n)}function ns(e){return e.type===`event`?{type:`event`,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,...e.correlationId===void 0?{}:{correlationId:e.correlationId}}:{type:e.type,namespace:e.namespace,subject:e.subject,payload:e.payload,messageId:e.messageId,correlationId:e.correlationId??e.messageId}}async function rs(e,t,n,r,i){let a=ns(i),o=$e({message:a,direction:`outbound`,observedAt:Date.now(),machineId:n,namespaceRegistry:t.getContext().namespaceRegistry,projectorRegistry:r.projectorRegistry});for(let t of o)await e.send({type:`event`,namespace:$o,subject:es,payload:t,messageId:`${a.messageId}:telemetry:${t.factId}`,correlationId:a.correlationId})}async function is(e,t,n){let r=n.transport;await r.connect();let i;try{i=e.observeMessages(i=>{ts(e,i)&&rs(r,e,t,n,i).catch(e=>{console.error(`[upstream-telemetry] Failed to export subject telemetry fact`,e)})})}catch(e){throw await r.disconnect().catch(()=>void 0),e}return{shutdown:async()=>{i(),await r.disconnect()}}}function as(e,...t){return async n=>{let r=await e(n);if(r!==void 0)return r;for(let e of t){let t=await e?.(n);if(t!==void 0)return t}}}function os(e,t){let n=e===`0.0.0.0`?`127.0.0.1`:e===`::`?`::1`:e;return`ws://${n.includes(`:`)&&!n.startsWith(`[`)?`[${n}]`:n}:${t}/bus`}async function ss(e,t,n,r){let s=r.makaioHome??fe(),f=gr(r,s),h=S(),g=r.peerSigningKeyResolver,C=[];try{if(r.lanBind&&e.dispatchingAuth&&!g)throw Error(`[boot] peerSigningKeyResolver is required when lanBind is enabled`);let S=r.configProvider,w=S??new hr(new ar(s),s),T=await w.getConfig({mode:`local`}),E=r.machineIdentity??await gn(R.join(s,`keys`)),D=S?await S.getMachineId():E.machineId;if(E.machineId!==D)throw Error(`[boot] Config provider machineId '${D}' does not match runtime machine identity '${E.machineId}'`);console.info(`[boot] Config resolved (mode=%s)`,T.mode);let O=Ze;if(O.registerNamespaces(at),O.registerNamespaces(ot),O.registerNamespaces([_t,xn,yt,bt,te]),O.registerNamespaces(Vt),O.registerNamespaces(r.hostNamespaces??[]),process.env.MAKAIO_DEBUG===`true`){let e=O.__onAny(e=>{let t;try{t=JSON.stringify(e.payload)}catch{t=`[unserializable payload]`}console.debug(`[bus-server] subject: ${e.subject}, payload: ${t}`)});C.push(e)}if(r.upstreamTelemetry){let e=await is(O,D,r.upstreamTelemetry);C.push(e.shutdown)}await O.emit(U.phase.busCreated,{machineId:D}),await e.connect(O,D),C.push(()=>e.disconnect()),console.info(`[boot] Transport ready on %s:%d`,n,t);try{r.onTransportReady?.({port:t,host:n})}catch(e){console.warn(`[boot] onTransportReady callback failed:`,e)}let{databaseClient:ee}=await wr({makaioHome:s,migrationsDir:r.centralMigrationsDir,database:r.database}),k=ee.db;console.info(`[boot] Database initialized`),C.push(()=>ee.close());let re=[O.on(ne.database,e=>{e.setResult({db:k})}),O.on(ne.machineIdentity,e=>{e.setResult({identity:E})}),O.on(ne.busPort,e=>{e.setResult({port:t})})],ie=!1,ae=O.on(U.isReady,e=>{e.setResult({ready:ie,machineId:D})});C.push(()=>{ie=!1,ae();for(let e of re)e()}),await O.emit(U.phase.coreReady,{machineId:D}),console.info(`[boot] Core ready (machineId=%s)`,D);let oe=R.dirname(Ve(import.meta.url)),se=ki(O,w);C.push(se),console.info(`[boot] Config handlers registered`),r.frameworkPackagePath&&(await Io({makaioHome:s,frameworkPackagePath:r.frameworkPackagePath}),console.info(`[boot] Framework package linked for extension resolution`));let A=r.frameworkModuleResolver;if(A){try{await A.install()}catch(e){throw await Promise.resolve(A.uninstall()).catch(()=>void 0),e}C.push(()=>A.uninstall()),console.info(`[boot] Framework module resolver installed`)}let j={current:void 0},ce=Eo({makaioHome:s,srcDir:oe,fallbackSeedPaths:r.modelRegistryFallbackSeedPaths}),le=process.env.USER??process.env.USERNAME??`unknown`;try{le=zt.userInfo().username}catch{}let ue=r.frameworkVersion??await qo(),{extensionLoadResult:de,browserOnlyResult:fe,extensionsWithCli:pe,allExtensionPackages:me}=await Jo({extensionOptions:f,skipExtensions:h,frameworkVersion:ue,createMount:r.createMount}),he=o(process.platform,r.hostCapabilities),M=x({packages:me,configProvider:r.extensionConfigProvider,surface:r.surface??`headless`,runtimeEnvironment:he}),ge=os(n,t),N=new vt(O,{surface:r.surface??`headless`,db:k,extensionContextBase:{cwd:process.cwd(),platform:process.platform,homedir:zt.homedir(),makaioHome:s,username:le,machineId:E.machineId,busUrl:ge,tryImport:c},runtimeEnvironment:he,launcherCommand:r.launcherCommand,loadConfig:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadConfig(e):void 0,loadEnabled:r.extensionConfigProvider?e=>r.extensionConfigProvider.loadEnabled(e):void 0,runMigrations:e=>Xo(k,e)}),_e=r.adapterConfigRepository??new pn({providerConfigsDir:R.join(s,`provider-configs`),adaptersDir:R.join(s,`adapters`)}),P=[Ei,p,tn({definitions:M.flatMap(e=>e.clients??[]),strategyDependencies:r.clientBinaryStrategyDependencies,postInstallHandlers:r.clientBinaryPostInstallHandlers})];r.enablePackageManager!==!1&&P.push(li({frameworkPeerRange:`^${ue}`,frameworkPackagePath:r.frameworkPackagePath,devPortalPackages:r.devPortalPackages}));let ve={cwd:process.cwd()},F=async e=>N.getExtensionService(jn)?.resolveWorkspaceRoot(e),ye=as(F,r.piscinaWorkspaceRootResolver),be=as(F,r.workflowRunner?.mode===`piscina`?r.workflowRunner.resolveWorkspaceRoot:void 0,r.piscinaWorkspaceRootResolver),xe=_({busUrl:ge,runtimeModuleDir:oe,platformDefaults:ve,workflowRunner:r.workflowRunner?.mode===`piscina`?{...r.workflowRunner,resolveWorkspaceRoot:be}:r.workflowRunner,makaioHome:s,bus:O,executionAttemptRepository:r.executionAttemptRepository,executionAttemptBootstrapTimeoutMs:r.executionAttemptBootstrapTimeoutMs,workflowMaterializationSpecResolvers:r.workflowMaterializationSpecResolvers}),{adapterSubsystemPackage:Se}=m({coordinator:N,configRepository:_e,platformDefaults:ve});if(P.push(Se,...d(M),Mn(xe),Gt(ce),An),process.platform===`darwin`){let{platformMacOSPackage:e}=await import(`../src-BA_c2cXX.mjs`);P.push(e)}let Ce=En({hostPackages:[...r.automationCronSchedulerPackage?[r.automationCronSchedulerPackage]:[],...u(de.automationCronSchedulerHostPolicies,{packages:me,configProvider:r.extensionConfigProvider,surface:r.surface??`headless`,runtimeEnvironment:he})],loadedPackages:[...P,...M]});Ce&&P.push(Ce);let we=[...P,...mn(M)],Te=new Set(we.map(e=>e.name)),Ee=Di(Oi(de.configDefaults,fe.configDefaults,pe.configDefaults,r.packageConfigDefaults??new Map),Te);N.load(we,Ee),N.registerContributionProcessor(kn()),N.registerContributionProcessor(Ht()),N.registerContributionProcessor(Ut()),N.registerContributionProcessor(Wt()),N.registerContributionProcessor(On()),N.registerContributionProcessor(Dn()),N.registerContributionProcessor(qt()),N.registerContributionProcessor(Yt()),N.registerContributionProcessor(Jt()),N.registerContributionProcessor(Kt({forEachActiveExtension:e=>N.forEachActiveExtension(e)})),N.registerContributionProcessor(Tn({forEachActiveExtension:e=>N.forEachActiveExtension(e)})),r.routeGraphBuilder&&N.registerContributionProcessor(ui(r.routeGraphBuilder)),a(C,i(we,O,N)),C.push(()=>N.shutdown()),a(C,r.configureCoordinator?.({bus:O,coordinator:N,registerContributionProcessor:e=>{N.registerContributionProcessor(e)},getAdapterSubsystemService:()=>N.getExtensionService(fn)})),await N.startAll(),await O.emit(U.phase.servicesReady,{machineId:D});let De=N.list(),Oe=De.filter(e=>e.state===`active`);if(console.info(`[boot] Extensions started: %d active`,Oe.length),process.env.MAKAIO_DEBUG){let e=De.filter(e=>e.state===`failed`);for(let e of Oe)console.info(`[boot] ✓ %s (%s)`,e.displayName,e.name);for(let t of e)console.warn(`[boot] ✗ %s (%s): %s`,t.displayName,t.name,t.error??`unknown`)}j.current=N.getExtensionService(fn);let ke=new v({workerEntry:y({moduleDir:oe,mode:R.basename(oe)===`src`?`source`:`dist`}),manifest:{contributionRefs:[]},resolveWorkspaceRoot:ye}),Ae=new b({id:tt,displayName:`Local (Piscina)`,runner:ke,bus:O});try{await lt(O,Ae)}catch(e){throw await ke.dispose().catch(()=>void 0),e}C.push(async()=>{try{await dt(O,Ae.id)}finally{await ke.dispose().catch(()=>void 0)}}),console.info(`[boot] Piscina thin workflow provider registered (id=%s)`,Ae.id),C.push(Wn(O,()=>j.current?.getLoadedAdapters()??[],()=>j.current?.getAdapterInstances()??new Map,e=>N.getExtension(e)));let je=l({bus:O,currentMachineId:D,resolveLiveAdapterId:e=>j.current?.resolveLiveAdapterId(e),resolveLiveAdapterIdentity:e=>j.current?.resolveLiveAdapterIdentity(e),listLiveAdapterIdentities:()=>j.current?.getLiveAdapterIdentities()??[]});if(C.push(je.cleanup),await O.broadcast(U.phase.coordinatorReady,{machineId:D}),r.lanBind&&e.dispatchingAuth&&g){let t=Qo(E,g);e.dispatchingAuth.setE2EAuth(t),console.info(`[boot] E2E auth enabled (LAN mode, machineId=%s)`,D)}ie=!0,await O.emit(U.ready,{machineId:D}),console.info(`[boot] Runtime ready (machineId=%s)`,D);let Me=xt([...C].reverse());return{port:t,host:n,machineId:D,bus:O,coordinator:N,trayEntries:N.trayEntries,windowRegistry:N.windowRegistry,shutdown:Me}}catch(e){console.error(`[boot] Startup failed — rolling back started resources`,e);for(let e of[...C].reverse())try{await e()}catch(e){console.warn(`[boot] Rollback step error:`,e)}throw e}}async function cs(e){let t=new mr({httpServer:e.httpServer,auth:e.auth,loopbackName:e.loopbackName??`node`}),n=e.httpServer.address();if(typeof n!=`object`||!n)throw Error(`HTTP server is not bound to a TCP address`);return ss(t,n.port,n.address,{...e,hostCapabilities:f(e.hostCapabilities),clientBinaryStrategyDependencies:e.clientBinaryStrategyDependencies??k()})}const ls=`MAKAIO_UPSTREAM_URL`,us=`MAKAIO_UPSTREAM_SECRET`;function ds(e){return new gt({url:e.url,name:`upstream-telemetry-ws`,auth:e.secret===void 0?void 0:new ht({secret:e.secret})})}function fs(e={}){let t=e.env??process.env,n=ms(t[us]),r=ps(t[ls]);if(r===void 0){if(n!==void 0)throw Error(`${us} requires ${ls}`);return}return{transport:(e.createTransport??ds)({url:r,...n===void 0?{}:{secret:n}})}}function ps(e){let t=e?.trim();return t===void 0||t===``?void 0:t}function ms(e){let t=e?.trim();return t===void 0||t===``?void 0:t}async function hs(e){return{...await A(e),hostCapabilities:[`node`]}}const gs=Be(ze);var _s=class{async resolve(e){return cn(e,{resolveKeychain:this.resolveKeychain})}async resolveKeychain(e,t){try{let{stdout:n}=await gs(`security`,[`find-generic-password`,`-s`,e,`-a`,t,`-w`]);return n.trim()||null}catch{return null}}},vs=class{bus;fallbackProvider=new _s;channelPromise;constructor(e){this.bus=e}async resolve(e){let t=Rt(e);if(t){let{configId:e,key:n}=t;for(let t=0;t<2;t++)try{return(await(await this.getChannel()).request(it.get,{configId:e})).credentials?.[n]??null}catch(e){if(e instanceof Xe&&(this.channelPromise=void 0,t===0))continue;throw e}}return e.startsWith(`stored:`)?(console.warn(`[StoredCredentialProvider] Unresolvable credential ref "${e}". Only the "stored:providerConfig:" format is supported. Re-save the credential using the current format.`),null):this.fallbackProvider.resolve(e)}getChannel(){return this.channelPromise??=this.openCredentialChannel().catch(e=>{throw this.channelPromise=void 0,e}),this.channelPromise}async openCredentialChannel(){let{token:e}=await this.bus.request(it.getChannelToken,{});return Qe(this.bus.getContext(),`credentials`,{token:e,transports:[]})}};async function ys(e){let{db:t}=await e.request(ne.database,{});return t}const bs=[`default`,`import`,`require`];var xs=class{frameworkDistPath=``;install(){}uninstall(){}},Ss=class{frameworkDistPath;hooks;installPromise;installToken;constructor(e){this.frameworkDistPath=e}async install(){if(this.hooks)return;if(this.installPromise)return this.installPromise;let e={};this.installToken=e;let t=this.installWithToken(e);this.installPromise=t;try{await t}finally{this.installPromise===t&&(this.installPromise=void 0)}}async installWithToken(e){let{registerHooks:t}=await import(`node:module`);if(this.installToken!==e||this.hooks)return;let n=this.frameworkDistPath,r=ws(n);this.hooks=t({resolve(e,t,i){let a=Cs(n,e,r);return a?{shortCircuit:!0,url:He(a).href}:i(e,t)}})}uninstall(){this.installToken=void 0,this.installPromise=void 0,this.hooks?.deregister(),this.hooks=void 0}};function Cs(e,t,n){if(!t.startsWith(`@makaio/framework/`))return;let r=t.slice(18),i=r.split(`/`);if(i.length===0||i.some(e=>e.length===0||e===`.`||e===`..`||e.includes(`\\`)))return;let a=Es((n??ws(e))[`./${r}`]);if(!a)return;let o=Ds(a);if(!o)return;let s=z.resolve(e,o);return Os(s,e)?s:void 0}function ws(e){let t=z.join(e,`..`,`package.json`);return Ts(JSON.parse(Ke(t,`utf-8`)).exports)}function Ts(e){if(typeof e!=`object`||!e||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e))if(n.startsWith(`.`)){if(typeof r==`string`){t[n]=r;continue}typeof r==`object`&&r&&!Array.isArray(r)&&(t[n]=r)}return t}function Es(e){if(typeof e==`string`)return e;if(e)for(let t of bs){let n=e[t];if(typeof n==`string`)return n}}function Ds(e){let t=e.split(`\\`).join(`/`);if(t.startsWith(`./dist/`))return t.slice(7)}function Os(e,t){let n=z.relative(t,e);return n===``||!n.startsWith(`..`)&&!z.isAbsolute(n)}export{h as AttemptOutcomeDeliveryError,T as AuthorityRequestDeliveryError,Oe as BootstrapStartRefusedError,mr as BusServerTransportProvider,Ie as CODE_EXECUTION_DEFAULT_IDLE_TIMEOUT_MS,Me as CODE_EXECUTION_DEFAULT_MAX_ARGUMENT_BYTES,Pe as CODE_EXECUTION_DEFAULT_MAX_CONCURRENCY,je as CODE_EXECUTION_DEFAULT_MAX_INVOCATIONS_PER_WORKER,ke as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES,Ne as CODE_EXECUTION_DEFAULT_MAX_QUEUED_INVOCATIONS,Fe as CODE_EXECUTION_DEFAULT_MAX_RESULT_BYTES,Ae as CODE_EXECUTION_DEFAULT_MAX_SOURCE_BYTES,re as ExplicitDescriptorDiscovery,ar as FileConfigStorage,Ya as FileRegistryCache,ie as FilesystemDescriptorDiscovery,E as InProcessWorkflowRunner,oe as MAKAIO_CONFIG_FILE_ENV,se as MAKAIO_HOME_ENV,us as MAKAIO_UPSTREAM_SECRET_ENV,ls as MAKAIO_UPSTREAM_URL_ENV,ae as MergedDescriptorDiscovery,_s as NodeCredentialProvider,Ss as NodeFrameworkModuleResolver,xs as NoopFrameworkModuleResolver,Ee as OperationAdmissionRefusedError,g as OutcomeDeliveryError,Le as PiscinaCodeExecutionProvider,Ce as RuntimeRegistrationRefusedError,ne as RuntimeSubjects,vs as StoredCredentialProvider,v as ThinWorkflowPiscinaRunner,So as WorkspaceRootNotFoundError,l as activateAdapterRuntimeIdentity,xe as admitWorkflowRunOperation,is as attachUpstreamTelemetry,cs as bootMakaioRuntime,ss as bootMakaioRuntimeCore,we as bootstrapWorkerRuntime,Go as bridgeExtensionBrowserEntries,A as buildConfiguredRuntimeOptions,Ho as buildExtensionBrowserRollupInputName,Uo as buildExtensionBrowserRuntimeEntrypoint,hs as buildNodeRuntimeOptions,lr as createHonoRouteGraph,dr as createHttpRouteGraphBuilder,D as createIsolatedWorkflowRuntime,j as createMakaioConfigDiscovery,k as createNodeClientBinaryStrategyDependencies,ds as createUpstreamTelemetryTransport,ce as defineMakaioConfig,F as entrypointStem,Co as findWorkspaceRoot,wo as findWorkspaceRootInfo,ys as getRuntimeDatabase,wr as initializeNodeDatabase,Te as installOperationDeliveryEndpoint,N as isCliContributionLike,ve as isMakaioExtensionLike,s as isMissingOptionalRuntimePackage,ye as isWithinDirectory,ge as loadExtensions,le as loadMakaioConfig,hn as loadOrCreateMachineIdentity,_n as machineKeysExist,f as normalizeNodeHostCapabilities,ue as parseMakaioConfig,m as prepareAdapterRuntime,qo as readFrameworkVersion,ee as registerAdapterNameResolver,De as registerAndAdmitWorkflowRun,Wn as registerRuntimeHandlers,Se as registerWorkerRuntime,vr as resolveBundledMigrationsDir,_e as resolveConventionEntrypoint,Cs as resolveFrameworkSpecifier,cr as resolveListeningPort,de as resolveMakaioConfigPath,fe as resolveMakaioHome,or as resolveStaticModelRegistryPath,fs as resolveUpstreamTelemetryBootOptionsFromEnv,y as resolveWorkflowWorkerEntry,O as runHeadlessWorkflowWorker,ir as runMigrations,zn as runRuntimeHandlerCleanups,w as runWorkloadInvocation,d as selectFrameworkCorePackages,pe as shouldIncludeExtension,C as submitAttemptOutcomeWithAck,c as tryImport,vn as validateMachineKeys,sr as waitForServerListening};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as ExtensionDiscovery, t as DiscoveredExtension } from "../extension-discovery-
|
|
1
|
+
import { r as ExtensionDiscovery, t as DiscoveredExtension } from "../extension-discovery-CuC5Nd5d.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
//#region runtimes/node/src/makaio-config.d.ts
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as AuthorityRequestDeliveryError, A as HeadlessWorkerBootstrap, B as runHeadlessWorkflowWorker, Bt as computeFileDigest, C as loadWorkflowFromConfig, Ct as WorkflowRunResult, D as WorkloadInvocationPreparation, E as WorkloadControlBinding, F as HeadlessWorkerMaterializer, Ft as WorkspaceRootResolver, G as WorkflowRuntimeContributionLoader, Gt as WorkflowWorkerEntryResolverOptions, H as IsolatedWorkflowRuntime, Ht as parseSriIntegrity, I as HeadlessWorkerPostCommitObserver, It as assertContainedIn, J as InProcessWorkflowRunnerOptions, K as createIsolatedWorkflowRuntime, Kt as resolveWorkflowWorkerEntry, L as HeadlessWorkflowWorkerDeps, Lt as assertNoSymlinkEscape, M as HeadlessWorkerBusConnector, Mt as LocalDirectoryMaterializerOptions, N as HeadlessWorkerContributionLoader, Nt as MaterializationError, O as WorkloadInvocationResult, P as HeadlessWorkerExecutor, Pt as ParsedSriIntegrity, Q as AttemptOutcomeSubmitPayload, R as HeadlessWorkflowWorkerResult, Rt as computeContributionPackageDigest, S as loadWorkflowModules, St as ThinWorkflowPiscinaRunnerOptions, T as RunWorkloadInvocationOptions, U as IsolatedWorkflowRuntimeContext, Ut as verifyContribution, V as CreateIsolatedWorkflowRuntimeOptions, Vt as materializeLocalDirectory, W as WorkflowRuntimeAuthorityConnector, Wt as WorkflowWorkerEntryMode, X as PiscinaThinWorkflowProviderOptions, Y as PiscinaThinWorkflowProvider, Z as AttemptOutcomeDeliveryError, _ as admitWorkflowRunOperation, _t as withWorkerBootstrapDeadline, a as bootstrapWorkerRuntime, at as submitAttemptOutcomeWithAck, b as registerWorkerRuntime, bt as IWorkflowRunner, c as DeliverableOperationKind, ct as WorkerRunnerOptions, d as OperationDeliveryEndpointIdentity, dt as createNodeWorkflowRunner, et as DELIVERED_DECISIONS, f as OperationDeliveryHandler, ft as createNodeWorkflowRunnerPackageOptions, g as RuntimeRegistrationRefusedError, gt as BootstrapDeadlineExceededError, h as RegisterWorkerRuntimeOptions, ht as runWorkerBootstrapExchange, i as StartedWorkerRuntime, it as OutcomeSubmitRetryConfig, j as HeadlessWorkerBootstrapCredentials, k as runWorkloadInvocation, l as OperationAdmissionRefusedError, lt as CreateNodeWorkflowRunnerPackageOptionsParams, m as RegisterAndAdmitWorkflowRunOptions, mt as WorkerBootstrapExchangeOptions, n as BootstrapStartRefusedError, nt as OutcomeReconnect, o as AdmitWorkflowRunOperationOptions, ot as submitOutcomeWithAck, p as OperationDeliveryHandlers, pt as BootstrapExchangeResult, q as InProcessWorkflowRunner, r as BootstrapWorkerRuntimeOptions, rt as OutcomeSubmitPayload, s as AdmittedWorkflowRun, st as WorkerRunner, t as BootstrapRuntimeConnection, tt as OutcomeDeliveryError, u as OperationDeliveryEndpoint, ut as NodeWorkflowRunnerPackageOptions, v as installOperationDeliveryEndpoint, vt as createWorkerBusAuth, w as InstalledWorkloadAdapter, x as loadWorkflowModule, xt as RuntimeLoadedWorkflow, y as registerAndAdmitWorkflowRun, yt as ThinWorkflowPiscinaRunner, z as MaterializedWorkspace, zt as computeDirectoryDigest } from "../../index-
|
|
1
|
+
import { $ as AuthorityRequestDeliveryError, A as HeadlessWorkerBootstrap, B as runHeadlessWorkflowWorker, Bt as computeFileDigest, C as loadWorkflowFromConfig, Ct as WorkflowRunResult, D as WorkloadInvocationPreparation, E as WorkloadControlBinding, F as HeadlessWorkerMaterializer, Ft as WorkspaceRootResolver, G as WorkflowRuntimeContributionLoader, Gt as WorkflowWorkerEntryResolverOptions, H as IsolatedWorkflowRuntime, Ht as parseSriIntegrity, I as HeadlessWorkerPostCommitObserver, It as assertContainedIn, J as InProcessWorkflowRunnerOptions, K as createIsolatedWorkflowRuntime, Kt as resolveWorkflowWorkerEntry, L as HeadlessWorkflowWorkerDeps, Lt as assertNoSymlinkEscape, M as HeadlessWorkerBusConnector, Mt as LocalDirectoryMaterializerOptions, N as HeadlessWorkerContributionLoader, Nt as MaterializationError, O as WorkloadInvocationResult, P as HeadlessWorkerExecutor, Pt as ParsedSriIntegrity, Q as AttemptOutcomeSubmitPayload, R as HeadlessWorkflowWorkerResult, Rt as computeContributionPackageDigest, S as loadWorkflowModules, St as ThinWorkflowPiscinaRunnerOptions, T as RunWorkloadInvocationOptions, U as IsolatedWorkflowRuntimeContext, Ut as verifyContribution, V as CreateIsolatedWorkflowRuntimeOptions, Vt as materializeLocalDirectory, W as WorkflowRuntimeAuthorityConnector, Wt as WorkflowWorkerEntryMode, X as PiscinaThinWorkflowProviderOptions, Y as PiscinaThinWorkflowProvider, Z as AttemptOutcomeDeliveryError, _ as admitWorkflowRunOperation, _t as withWorkerBootstrapDeadline, a as bootstrapWorkerRuntime, at as submitAttemptOutcomeWithAck, b as registerWorkerRuntime, bt as IWorkflowRunner, c as DeliverableOperationKind, ct as WorkerRunnerOptions, d as OperationDeliveryEndpointIdentity, dt as createNodeWorkflowRunner, et as DELIVERED_DECISIONS, f as OperationDeliveryHandler, ft as createNodeWorkflowRunnerPackageOptions, g as RuntimeRegistrationRefusedError, gt as BootstrapDeadlineExceededError, h as RegisterWorkerRuntimeOptions, ht as runWorkerBootstrapExchange, i as StartedWorkerRuntime, it as OutcomeSubmitRetryConfig, j as HeadlessWorkerBootstrapCredentials, k as runWorkloadInvocation, l as OperationAdmissionRefusedError, lt as CreateNodeWorkflowRunnerPackageOptionsParams, m as RegisterAndAdmitWorkflowRunOptions, mt as WorkerBootstrapExchangeOptions, n as BootstrapStartRefusedError, nt as OutcomeReconnect, o as AdmitWorkflowRunOperationOptions, ot as submitOutcomeWithAck, p as OperationDeliveryHandlers, pt as BootstrapExchangeResult, q as InProcessWorkflowRunner, r as BootstrapWorkerRuntimeOptions, rt as OutcomeSubmitPayload, s as AdmittedWorkflowRun, st as WorkerRunner, t as BootstrapRuntimeConnection, tt as OutcomeDeliveryError, u as OperationDeliveryEndpoint, ut as NodeWorkflowRunnerPackageOptions, v as installOperationDeliveryEndpoint, vt as createWorkerBusAuth, w as InstalledWorkloadAdapter, x as loadWorkflowModule, xt as RuntimeLoadedWorkflow, y as registerAndAdmitWorkflowRun, yt as ThinWorkflowPiscinaRunner, z as MaterializedWorkspace, zt as computeDirectoryDigest } from "../../index-B8Tc0urp.mjs";
|
|
2
2
|
export { AdmitWorkflowRunOperationOptions, AdmittedWorkflowRun, AttemptOutcomeDeliveryError, AttemptOutcomeSubmitPayload, AuthorityRequestDeliveryError, BootstrapDeadlineExceededError, BootstrapExchangeResult, BootstrapRuntimeConnection, BootstrapStartRefusedError, BootstrapWorkerRuntimeOptions, CreateIsolatedWorkflowRuntimeOptions, CreateNodeWorkflowRunnerPackageOptionsParams, DELIVERED_DECISIONS, DeliverableOperationKind, HeadlessWorkerBootstrap, HeadlessWorkerBootstrapCredentials, HeadlessWorkerBusConnector, HeadlessWorkerContributionLoader, HeadlessWorkerExecutor, HeadlessWorkerMaterializer, HeadlessWorkerPostCommitObserver, HeadlessWorkflowWorkerDeps, HeadlessWorkflowWorkerResult, IWorkflowRunner, InProcessWorkflowRunner, InProcessWorkflowRunnerOptions, InstalledWorkloadAdapter, IsolatedWorkflowRuntime, IsolatedWorkflowRuntimeContext, LocalDirectoryMaterializerOptions, MaterializationError, MaterializedWorkspace, NodeWorkflowRunnerPackageOptions, OperationAdmissionRefusedError, OperationDeliveryEndpoint, OperationDeliveryEndpointIdentity, OperationDeliveryHandler, OperationDeliveryHandlers, OutcomeDeliveryError, OutcomeReconnect, OutcomeSubmitPayload, OutcomeSubmitRetryConfig, ParsedSriIntegrity, PiscinaThinWorkflowProvider, PiscinaThinWorkflowProviderOptions, RegisterAndAdmitWorkflowRunOptions, RegisterWorkerRuntimeOptions, RunWorkloadInvocationOptions, RuntimeLoadedWorkflow, RuntimeRegistrationRefusedError, StartedWorkerRuntime, ThinWorkflowPiscinaRunner, ThinWorkflowPiscinaRunnerOptions, WorkerBootstrapExchangeOptions, WorkerRunner, WorkerRunnerOptions, WorkflowRunResult, WorkflowRuntimeAuthorityConnector, WorkflowRuntimeContributionLoader, WorkflowWorkerEntryMode, WorkflowWorkerEntryResolverOptions, WorkloadControlBinding, WorkloadInvocationPreparation, WorkloadInvocationResult, WorkspaceRootResolver, admitWorkflowRunOperation, assertContainedIn, assertNoSymlinkEscape, bootstrapWorkerRuntime, computeContributionPackageDigest, computeDirectoryDigest, computeFileDigest, createIsolatedWorkflowRuntime, createNodeWorkflowRunner, createNodeWorkflowRunnerPackageOptions, createWorkerBusAuth, installOperationDeliveryEndpoint, loadWorkflowFromConfig, loadWorkflowModule, loadWorkflowModules, materializeLocalDirectory, parseSriIntegrity, registerAndAdmitWorkflowRun, registerWorkerRuntime, resolveWorkflowWorkerEntry, runHeadlessWorkflowWorker, runWorkerBootstrapExchange, runWorkloadInvocation, submitAttemptOutcomeWithAck, submitOutcomeWithAck, verifyContribution, withWorkerBootstrapDeadline };
|
|
@@ -293,7 +293,7 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
|
|
|
293
293
|
tableName: "sessions";
|
|
294
294
|
dataType: "string";
|
|
295
295
|
columnType: "SQLiteText";
|
|
296
|
-
data: "closed" | "discovered" | "
|
|
296
|
+
data: "closed" | "discovered" | "active" | "archived";
|
|
297
297
|
driverParam: string;
|
|
298
298
|
notNull: true;
|
|
299
299
|
hasDefault: false;
|
|
@@ -407,7 +407,7 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
|
|
|
407
407
|
tableName: "sessions";
|
|
408
408
|
dataType: "string";
|
|
409
409
|
columnType: "SQLiteText";
|
|
410
|
-
data: "fork" | "subagent" | "compress" | "branch" | "
|
|
410
|
+
data: "fork" | "subagent" | "compress" | "branch" | "rewrite" | "coordinator" | "aside";
|
|
411
411
|
driverParam: string;
|
|
412
412
|
notNull: false;
|
|
413
413
|
hasDefault: false;
|