@makaio/framework 1.0.0-dev-1788966380232 → 1.0.0-dev-1789000242829
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/{2020-CpDjcHDh.mjs → 2020-DvDj4r_K.mjs} +1 -1
- package/dist/{account-identity-D00LLclm.mjs → account-identity-CNdiLYaM.mjs} +1 -1
- package/dist/{adapter-D92pfm_b.mjs → adapter-BdMny6vw.mjs} +1 -1
- package/dist/adapters/claude/index.d.mts +24 -24
- package/dist/adapters/index.mjs +1 -1
- package/dist/artifact-Cxm5ZX7L.mjs +1 -0
- package/dist/{auth-CB4an9bh.mjs → auth-BIgwGHp-.mjs} +1 -1
- package/dist/authority-state-bootstrap-DVFYemDL.mjs +1 -0
- package/dist/{automation-trigger-xNDX0Am_.mjs → automation-trigger-CQNQpzkA.mjs} +1 -1
- package/dist/bus/index.mjs +8 -1
- package/dist/{caller-owned-adapter-stub-oM1G1KvC.mjs → caller-owned-adapter-stub-NiR7KT2N.mjs} +1 -1
- package/dist/{canonical-model-D7Cg0l2R.mjs → canonical-model-BMnzRhG_.mjs} +1 -1
- package/dist/{capabilities-D2ggcMem.mjs → capabilities-CEwSeTB3.mjs} +1 -1
- package/dist/{client-CpUVfDxa.mjs → client-C0HcPzvw.mjs} +1 -1
- package/dist/{code-execution-CMqsHnGg.mjs → code-execution-BhUo84eg.mjs} +1 -1
- package/dist/{compression-Civ-rf-O.mjs → compression-DvPXSBWS.mjs} +1 -1
- package/dist/{config-namespace-CQnsvr77.mjs → config-namespace-CE3KasJn.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +1 -1
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/artifact/index.d.mts +3 -3
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/auth/index.mjs +1 -1
- package/dist/contracts/automation-trigger/index.mjs +1 -1
- package/dist/contracts/canonical-model/index.mjs +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/capabilities/index.mjs +1 -1
- package/dist/contracts/client/index.d.mts +1 -1
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/code-execution/index.mjs +1 -1
- package/dist/contracts/common/index.mjs +1 -1
- package/dist/contracts/config/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +2 -2
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/facet/index.mjs +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/harness/index.mjs +1 -1
- package/dist/contracts/host/index.mjs +1 -1
- package/dist/contracts/index.d.mts +92 -226
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +2 -2
- package/dist/contracts/materialization/index.mjs +1 -1
- package/dist/contracts/model-registry/index.mjs +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/platform/index.mjs +1 -1
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/reaction/index.mjs +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.mjs +1 -1
- package/dist/contracts/skill/index.mjs +1 -1
- package/dist/contracts/telemetry/index.mjs +1 -1
- package/dist/contracts/timeout/index.mjs +1 -1
- package/dist/contracts/toast/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/variant/index.mjs +1 -1
- package/dist/contracts/worker/index.d.mts +1 -1
- package/dist/contracts/worker/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +3 -3
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{definition-Dqw0YJdi.mjs → definition-o5Dfg5j-.mjs} +1 -1
- package/dist/{dist-DeI9zYMP.mjs → dist-DMIaE8sg.mjs} +1 -1
- package/dist/{execution-attempt-repository--RVils5-.d.mts → execution-attempt-repository-DSpz2kyW.d.mts} +7 -25
- package/dist/{execution-target-_oVNW6Zm.mjs → execution-target-Ba7b_UmX.mjs} +1 -1
- package/dist/{extension-CAi7bbyv.mjs → extension-D9D8tJQY.mjs} +1 -1
- package/dist/{extension-CrghVa93.mjs → extension-GQEL-NCV.mjs} +1 -1
- package/dist/{framework-packages-BOPhhtK7.mjs → framework-packages-DdCJ4JsE.mjs} +1 -1
- package/dist/{handlers-YPTyZDhF.mjs → handlers-CqL2TWbk.mjs} +1 -1
- package/dist/{harness-Ds1I4smU.mjs → harness-CYzkReGi.mjs} +1 -1
- package/dist/{index-LjLUr3Dm.d.mts → index-BIlFSGnW.d.mts} +10 -10
- package/dist/{index-BqR2xDu6.d.mts → index-BTluq4-E.d.mts} +151 -108
- package/dist/{index-nJvYTAbD.d.mts → index-BfwHYuRf.d.mts} +1 -1
- package/dist/{index-MtDz_goH.d.mts → index-BxJRljy-.d.mts} +274 -86
- package/dist/{index-BKwYE1Qk.d.mts → index-Bzxs2nVR.d.mts} +5 -5
- package/dist/{index-BkQlL0Pl.d.mts → index-CCNCo440.d.mts} +5 -5
- package/dist/{index-v9TbeVee2.d.mts → index-CRM23ToM2.d.mts} +5 -5
- package/dist/{index-Bxq_zO2E.d.mts → index-CilWtThn.d.mts} +4 -4
- package/dist/{index-B7wjmaev.d.mts → index-CjMMvZch.d.mts} +12 -12
- package/dist/{index-ud9i9pue.d.mts → index-DCHdW5g-.d.mts} +16 -16
- package/dist/{index-BT5qcsEf2.d.mts → index-DR308wUB2.d.mts} +18 -18
- package/dist/{index-DU9Y9tes2.d.mts → index-Dckvm0Ml2.d.mts} +12 -12
- package/dist/{index-Bnm0QvJ4.d.mts → index-DvoitgXV.d.mts} +9 -9
- package/dist/{index-DzlGAEws.d.mts → index-Dzozmb5u.d.mts} +1 -1
- package/dist/{index-DO633_D-.d.mts → index-GTCM4lXx.d.mts} +38 -38
- package/dist/{index-09eal6WI2.d.mts → index-hm8NV4CJ2.d.mts} +7 -7
- package/dist/kernel/cli/index.mjs +1 -1
- package/dist/kernel/cli/register.mjs +1 -1
- package/dist/kernel/cli/schemas.mjs +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.mjs +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/observability/index.mjs +1 -1
- package/dist/kernel/providers/index.mjs +1 -1
- package/dist/kernel/window/index.mjs +1 -1
- package/dist/kind-registration-BanX_UAF.mjs +1 -0
- package/dist/{materialization-BwC7pVg2.mjs → materialization--bg6ZwQd.mjs} +1 -1
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/model-Dya0clsM.mjs +1 -0
- package/dist/{namespace-wuGMWlyz.d.mts → namespace-B0_Sg-1m.d.mts} +2 -2
- package/dist/{namespace-CnRcpgJ8.mjs → namespace-CD9mJGhU.mjs} +1 -1
- package/dist/{namespace-BYsKOw-g.d.mts → namespace-CY-9Evdf.d.mts} +3 -3
- package/dist/{namespace-B1sjokHd.d.mts → namespace-CfA0C0JR.d.mts} +2 -2
- package/dist/namespace-D53UGrP6.mjs +1 -0
- package/dist/{namespace-Cy62a3YP.d.mts → namespace-Dmbm2JzV.d.mts} +2 -2
- package/dist/{native-session-supervisor-B0rziwHI.mjs → native-session-supervisor-i3PeijHn.mjs} +1 -1
- package/dist/{orchestrator-shared-CmS8iU9_.mjs → orchestrator-shared-DMldWEah.mjs} +1 -1
- package/dist/{ownership-memory-handler-DMirNILL.mjs → ownership-memory-handler-LXaweX6V.mjs} +1 -1
- package/dist/{package-Co36_pRw.mjs → package-BFto8lbP.mjs} +1 -1
- package/dist/package-BT94BLu4.mjs +7 -0
- package/dist/{package-Bl0mcGb8.d.mts → package-BaTrCWZl.d.mts} +46 -42
- package/dist/package.json +1 -1
- package/dist/packages-DAw3Z011.mjs +1 -0
- package/dist/{profile-C9RV7ao-.mjs → profile-Cjq4QnUQ.mjs} +1 -1
- package/dist/{provider-context-BPITm0cn.mjs → provider-context-BpabfMlj.mjs} +1 -1
- package/dist/{provider-context-CyGvwXPz.mjs → provider-context-CYUUoI6x.mjs} +1 -1
- package/dist/{resolved-M6PyrgFr.mjs → resolved-XQTiHgrA.mjs} +1 -1
- package/dist/runtime-node/index.d.mts +1 -1
- package/dist/runtime-node/index.mjs +1 -1
- package/dist/runtime-node/workflow-execution-bus-access.mjs +1 -1
- package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
- package/dist/runtime-node/workflow-worker/index.mjs +1 -1
- package/dist/{schema-DrHrto2J.mjs → schema-BVbkNHVQ.mjs} +1 -1
- package/dist/{schemas-DGKWi7mk.d.mts → schemas-CQe4xCRn.d.mts} +2 -2
- package/dist/{schemas-D2HmGmCt.d.mts → schemas-CSeLgroC.d.mts} +1 -1
- package/dist/{schemas-DRho446W.mjs → schemas-NKlV5jqJ.mjs} +1 -1
- package/dist/{schemas-DyZNwquY.mjs → schemas-QEr2LI43.mjs} +1 -1
- package/dist/{schemas-CvUe_yff.d.mts → schemas-bcDK-fK3.d.mts} +18 -9
- package/dist/{schemas-CQKfd2Xd.mjs → schemas-pHboaOxJ.mjs} +1 -1
- package/dist/{schemas-BYyT43gX.d.mts → schemas-yXs929kr.d.mts} +3 -3
- package/dist/{selection-BDs7K53w.mjs → selection-D7V0wyHX.mjs} +1 -1
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- package/dist/services/adapter-runtime/index.mjs +1 -1
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +1 -1
- package/dist/services/adapter-subsystem/index.mjs +1 -1
- package/dist/services/adapter-subsystem/namespace.mjs +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +3 -3
- package/dist/services/execution-target/index.mjs +1 -1
- package/dist/services/execution-target/namespace.mjs +1 -1
- package/dist/services/execution-target/schemas.mjs +1 -1
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +14 -14
- package/dist/services/index.mjs +1 -1
- package/dist/services/materialization/index.mjs +1 -1
- package/dist/services/provider-context/index.mjs +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +1 -1
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/messages/namespace.mjs +1 -1
- package/dist/services/session/orchestrator-testing/index.mjs +1 -1
- package/dist/services/session/session-events/namespace.mjs +1 -1
- package/dist/services/session/testing/index.mjs +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/session-editor/index.mjs +1 -1
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.mjs +1 -1
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/settings/storage/index.mjs +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent/index.mjs +1 -1
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/workflow-transitions/index.mjs +1 -1
- package/dist/{session-Cn8z1hxD.mjs → session-CAKfa5o8.mjs} +1 -1
- package/dist/{session-9C42TPQq.mjs → session-CODDwsGa.mjs} +1 -1
- package/dist/{shared-DqvfJVYk.mjs → shared-CkCrHz66.mjs} +1 -1
- package/dist/{skill-BmRp8GhW.mjs → skill-91kZNQnF.mjs} +1 -1
- package/dist/{tool-approval-service-DchkAdAr.mjs → tool-approval-service-BV3WxxX6.mjs} +1 -1
- package/dist/{tools-r50UBPJ9.mjs → tools-CElCajoS.mjs} +1 -1
- package/dist/{transition-CgsrmsfE.d.mts → transition-bYkXnLY2.d.mts} +1 -1
- package/dist/{types-ZvPhKp3j.d.mts → types-BNKqcHfP.d.mts} +5 -5
- package/dist/{version-sDSWOMn_.mjs → version-DdGhNoY5.mjs} +1 -1
- package/dist/{view-builder-D54kvyf7.d.mts → view-builder-CA5qUx85.d.mts} +10 -10
- package/dist/{visibility-syKffo3e.mjs → visibility-cMXbf9nY.mjs} +1 -1
- package/dist/{worker-DRQGyWAS.mjs → worker-B0xwfo9-.mjs} +1 -1
- package/dist/{worker-DzbPk2YI.mjs → worker-Cx1JDOB9.mjs} +1 -1
- package/dist/{workflow-D-yrAZW8.mjs → workflow-5yHn_Knq.mjs} +1 -1
- package/dist/workflow-engine/execution-attempt-repository.d.mts +1 -1
- package/dist/workflow-engine/index.d.mts +70 -70
- 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/index.d.mts +15 -4
- package/dist/workflow-engine/testing/index.mjs +1 -1
- package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-transitions-D5RvMSnf.mjs → workflow-transitions-DH246j6E.mjs} +1 -1
- package/dist/workflow-worker-BAO7pQpx.mjs +2 -0
- package/package.json +1 -1
- package/dist/artifact-_pN73_7c.mjs +0 -1
- package/dist/authority-state-bootstrap-DgoHPc9J.mjs +0 -1
- package/dist/kind-registration-DggkrLkv.mjs +0 -1
- package/dist/model-Cn1IFEP8.mjs +0 -1
- package/dist/namespace-DFc1nkal.mjs +0 -1
- package/dist/package-B-xpYKe8.mjs +0 -7
- package/dist/packages-COqPg5TI.mjs +0 -1
- package/dist/workflow-worker-CrnDwpkP.mjs +0 -2
- /package/dist/{ajv-IlnfOGAj.mjs → ajv-Dz-0DD7m.mjs} +0 -0
- /package/dist/{attach-error-DOlUtquX.mjs → attach-error-D5BWfaBO.mjs} +0 -0
- /package/dist/{capability-BQHyskJB.mjs → capability-BnQx1BWc.mjs} +0 -0
- /package/dist/{common-CylczUIW.mjs → common-Bta2ivrd.mjs} +0 -0
- /package/dist/{definitions-2T95Q-y6.mjs → definitions-CyFaNG_c.mjs} +0 -0
- /package/dist/{extension-namespace-CWfV3IiR.mjs → extension-namespace-AaHKv6tQ.mjs} +0 -0
- /package/dist/{facet-6tnSbjXc.mjs → facet-De-2AP_o.mjs} +0 -0
- /package/dist/{host-D7v3YlDG.mjs → host-CbaJg6D4.mjs} +0 -0
- /package/dist/{identity-CxMRRAXx.mjs → identity-B6RqbCn7.mjs} +0 -0
- /package/dist/{model-registry-BTjKBCCw.mjs → model-registry-DVTFd0RF.mjs} +0 -0
- /package/dist/{modes-Bo9Vv5c9.mjs → modes-Dc9_sSbr.mjs} +0 -0
- /package/dist/{namespace-DX3QsYpv.mjs → namespace-BZ7UQmW4.mjs} +0 -0
- /package/dist/{namespace-Dyxpur8_.mjs → namespace-BnNBM94X.mjs} +0 -0
- /package/dist/{namespace-DORNUF0_.mjs → namespace-DGi7tw_W.mjs} +0 -0
- /package/dist/{namespace-BCSJz417.mjs → namespace-KYIbWPvl.mjs} +0 -0
- /package/dist/{ownership-recovery-guard-CYA5CsiO.mjs → ownership-recovery-guard-BIB5uqgz.mjs} +0 -0
- /package/dist/{platform-BdLHWgVc.mjs → platform-BObC-WJA.mjs} +0 -0
- /package/dist/{providers-DGTA-lki.mjs → providers-BysYiNMO.mjs} +0 -0
- /package/dist/{reaction-aQJGWUWl.mjs → reaction-Cev6JNcb.mjs} +0 -0
- /package/dist/{schema-mXXJcaQT.mjs → schema-bfw9nz8B.mjs} +0 -0
- /package/dist/{schema-introspection-BsWP1vGC.mjs → schema-introspection-BTS7FZT_.mjs} +0 -0
- /package/dist/{schemas-HffXbw8C.mjs → schemas-A2hlgeNu.mjs} +0 -0
- /package/dist/{schemas-NYUz8K9Q.mjs → schemas-B3UNnzKG.mjs} +0 -0
- /package/dist/{schemas-7fHmNUQc.mjs → schemas-BEDq3Psz.mjs} +0 -0
- /package/dist/{schemas-MIYusvwn.mjs → schemas-mLjTSUvJ.mjs} +0 -0
- /package/dist/{semver-_h8-BJ8k.mjs → semver-ByPlHR3P.mjs} +0 -0
- /package/dist/{shared-schemas-CaL1iEk6.mjs → shared-schemas-CKsgVsGX.mjs} +0 -0
- /package/dist/{storage-namespace-definition-4UYuij1r.mjs → storage-namespace-definition-Ct9ohqU0.mjs} +0 -0
- /package/dist/{telemetry-BLYrkonr.mjs → telemetry-Be3u4I7b.mjs} +0 -0
- /package/dist/{timeout-d0dzIY3V.mjs → timeout-Bscg1B-y.mjs} +0 -0
- /package/dist/{ui-config-CsH94fwa.mjs → ui-config-Bl2Wbkr-.mjs} +0 -0
- /package/dist/{variant-BZ9UcJBi.mjs → variant-B5j5wR2p.mjs} +0 -0
- /package/dist/{window-registry-DQkv5wM9.mjs → window-registry-DWHz8TA5.mjs} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { A as OperationReportDecision, B as RecordProvisioningAbsentInput, D as MarkRuntimeReadyInput, E as InfrastructureFailureDecision, F as ReadBootstrapStartStateInput, Ft as RequestAttemptCancellationInput, G as RuntimeRegistrationDecision, H as RegisterRuntimeInput, I as RecordAllocationInput, It as RequestExecutionCancellationInput, Kt as ReadAttemptSettlementInput, L as RecordAllocationTerminatedInput, M as PendingAttemptAbandonmentDecision, Nt as ExecutionAttemptCancellationDecision, O as OperationAdmissionDecision, P as ProvisioningClaimDecision, Pt as ExecutionAttemptCancellationIntent, R as RecordInfrastructureFailureInput, St as RuntimeOutcomeFence, T as GetInstructionInput, U as ReportOperationInput, Ut as EnsureExecutionAttemptDecision, V as RecoverableAttemptRecord, Vt as AttemptSettlementRead, W as RuntimeReadinessDecision, Wt as EnsureExecutionAttemptInput, X as CompleteProviderOperationInput, Z as HandoffProviderOperationInput, a as AllocationRefEvolutionDecision, at as ProviderOperationClaimDecision, dt as ProviderOperationOwnershipRecord, et as ListOpenProviderOperationsInput, f as CompleteOperationInput, ft as ProvisionerIncarnationLossDecision, gt as TakeOverProviderOperationInput, h as DurableOutcome, ht as RenewProviderOperationClaimInput, i as AllocationRefEvolution, j as OutcomeCodec, k as OperationCompletionDecision, lt as ProviderOperationMutationDecision, mt as RecordProviderOperationUncertaintyInput, n as AdmitOperationInput, o as AllocationTerminationDecision, ot as ProviderOperationCompletionDecision, p as DiscoveredAllocationDecision, pt as ProvisioningAbsenceDecision, r as AllocationRecordingDecision, s as AttemptControlState, tt as OpenProviderOperationRecord, u as BeginProvisioningInput, w as ExecutionOwnerId, x as ExecutionAttemptRepository, y as ExecutionAttemptRecord, yt as ExecutionAttemptOutcomeDecision, z as RecordProvisionerIncarnationLostInput } from "./execution-attempt-repository
|
|
1
|
+
import { A as OperationReportDecision, B as RecordProvisioningAbsentInput, D as MarkRuntimeReadyInput, E as InfrastructureFailureDecision, F as ReadBootstrapStartStateInput, Ft as RequestAttemptCancellationInput, G as RuntimeRegistrationDecision, H as RegisterRuntimeInput, I as RecordAllocationInput, It as RequestExecutionCancellationInput, Kt as ReadAttemptSettlementInput, L as RecordAllocationTerminatedInput, M as PendingAttemptAbandonmentDecision, Nt as ExecutionAttemptCancellationDecision, O as OperationAdmissionDecision, P as ProvisioningClaimDecision, Pt as ExecutionAttemptCancellationIntent$1, R as RecordInfrastructureFailureInput, St as RuntimeOutcomeFence, T as GetInstructionInput, U as ReportOperationInput, Ut as EnsureExecutionAttemptDecision, V as RecoverableAttemptRecord, Vt as AttemptSettlementRead, W as RuntimeReadinessDecision, Wt as EnsureExecutionAttemptInput, X as CompleteProviderOperationInput, Z as HandoffProviderOperationInput, a as AllocationRefEvolutionDecision, at as ProviderOperationClaimDecision, dt as ProviderOperationOwnershipRecord, et as ListOpenProviderOperationsInput, f as CompleteOperationInput, ft as ProvisionerIncarnationLossDecision, gt as TakeOverProviderOperationInput, h as DurableOutcome, ht as RenewProviderOperationClaimInput, i as AllocationRefEvolution, j as OutcomeCodec, k as OperationCompletionDecision, lt as ProviderOperationMutationDecision, mt as RecordProviderOperationUncertaintyInput, n as AdmitOperationInput, o as AllocationTerminationDecision, ot as ProviderOperationCompletionDecision, p as DiscoveredAllocationDecision, pt as ProvisioningAbsenceDecision, r as AllocationRecordingDecision, s as AttemptControlState, tt as OpenProviderOperationRecord, u as BeginProvisioningInput, w as ExecutionOwnerId, x as ExecutionAttemptRepository, y as ExecutionAttemptRecord, yt as ExecutionAttemptOutcomeDecision, z as RecordProvisionerIncarnationLostInput } from "./execution-attempt-repository-DSpz2kyW.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import * as _$_makaio_contracts0 from "@makaio/framework/contracts";
|
|
4
|
-
import { ExecutionAttemptBootstrapAwaitStartResponse, ExecutionAttemptInstruction, ExecutionAttemptOutcome, IWorkflowRunner, LoopGateHandler, MakaioNodeExtension, StationHandler, StepRunnerBusAuth, StepRunnerPlatformDefaults, WorkerMaterializationSpec, WorkflowDefinition, WorkflowExecution, WorkflowRunContext, WorkflowRunResult } from "@makaio/framework/contracts";
|
|
4
|
+
import { AcceptedAttemptOutcome, AcceptedAttemptOutcome as AcceptedAttemptOutcome$1, AttemptOutcomeControlObservation, ExecutionAttemptBootstrapAwaitStartResponse, ExecutionAttemptInstruction, ExecutionAttemptOutcome, IWorkflowRunner, LoopGateHandler, MakaioNodeExtension, OutcomeAcceptance, OutcomeAcceptance as OutcomeAcceptance$1, StationHandler, StepRunnerBusAuth, StepRunnerPlatformDefaults, WorkerMaterializationSpec, WorkflowAttemptCancellation, WorkflowAttemptOutcome, WorkflowAttemptOutcome as WorkflowAttemptOutcome$1, WorkflowAttemptTechnicalFailure, WorkflowDefinition, WorkflowExecution, WorkflowRunContext, WorkflowRunResult, WorkflowRunnerCompletion } from "@makaio/framework/contracts";
|
|
5
5
|
import { IMakaioBus } from "@makaio/framework/bus";
|
|
6
6
|
import { BaseService } from "@makaio/framework/service-base";
|
|
7
7
|
import { MakaioDatabase } from "@makaio/framework/storage/drizzle";
|
|
@@ -102,6 +102,14 @@ interface BootstrapStartAuthority {
|
|
|
102
102
|
}
|
|
103
103
|
//#endregion
|
|
104
104
|
//#region subsystems/workflow-engine/src/execution-attempt-authority.d.ts
|
|
105
|
+
/** A committed outcome may settle only with an explicit owner interpretation. */
|
|
106
|
+
type OutcomeSettlementDecision<TOutcome> = (Extract<ExecutionAttemptOutcomeDecision<TOutcome>, {
|
|
107
|
+
kind: 'accepted' | 'duplicate';
|
|
108
|
+
}> & {
|
|
109
|
+
readonly acceptance: OutcomeAcceptance;
|
|
110
|
+
}) | Extract<ExecutionAttemptOutcomeDecision<TOutcome>, {
|
|
111
|
+
kind: 'conflict' | 'fenced';
|
|
112
|
+
}>;
|
|
105
113
|
/**
|
|
106
114
|
* Execution attempt Authority service.
|
|
107
115
|
*
|
|
@@ -204,7 +212,7 @@ declare class ExecutionAttemptAuthority<TOutcome> implements BootstrapStartAutho
|
|
|
204
212
|
* @param executionAttemptId - Exact attempt whose control is held.
|
|
205
213
|
* @returns Durable request, which is not confirmation that cancellation completed.
|
|
206
214
|
*/
|
|
207
|
-
readCancellation(executionAttemptId: string): Promise<ExecutionAttemptCancellationIntent | null>;
|
|
215
|
+
readCancellation(executionAttemptId: string): Promise<ExecutionAttemptCancellationIntent$1 | null>;
|
|
208
216
|
/**
|
|
209
217
|
* Accept successful Preparation without settling the attempt's outcome waiter.
|
|
210
218
|
* @param input - Preparation result, operation correlation and trusted owner identity.
|
|
@@ -414,19 +422,18 @@ declare class ExecutionAttemptAuthority<TOutcome> implements BootstrapStartAutho
|
|
|
414
422
|
* Returns `undefined` when no waiter exists for the given attempt
|
|
415
423
|
* (e.g. after a process restart or for attempts created by other hosts).
|
|
416
424
|
* @param executionAttemptId - The attempt to wait for.
|
|
417
|
-
* @returns Promise
|
|
425
|
+
* @returns Promise of canonical outcome, frozen control facts and owner acceptance, or `undefined`.
|
|
418
426
|
*/
|
|
419
|
-
waitForOutcome(executionAttemptId: string): Promise<TOutcome
|
|
427
|
+
waitForOutcome(executionAttemptId: string): Promise<AcceptedAttemptOutcome<TOutcome>> | undefined;
|
|
420
428
|
/**
|
|
421
429
|
* Settle the in-process waiter after owner-state convergence succeeds.
|
|
422
430
|
*
|
|
423
|
-
* Called
|
|
424
|
-
*
|
|
425
|
-
* outcome only when canonical owner state is consistent.
|
|
431
|
+
* Called only after the owner accepts the canonical fact, either through
|
|
432
|
+
* its normal result path or without projecting a new lifecycle transition.
|
|
426
433
|
* @param executionAttemptId - The attempt whose waiter to settle.
|
|
427
434
|
* @param decision - The durable outcome decision (must be accepted or duplicate).
|
|
428
435
|
*/
|
|
429
|
-
settleOutcome(executionAttemptId: string, decision:
|
|
436
|
+
settleOutcome(executionAttemptId: string, decision: OutcomeSettlementDecision<TOutcome>): void;
|
|
430
437
|
/**
|
|
431
438
|
* Remove an in-process waiter without settling it.
|
|
432
439
|
*
|
|
@@ -547,7 +554,7 @@ declare class ExecutionAttemptAuthority<TOutcome> implements BootstrapStartAutho
|
|
|
547
554
|
/**
|
|
548
555
|
* Settle the in-process waiter based on a repository decision.
|
|
549
556
|
*
|
|
550
|
-
* For accepted/duplicate, resolves with
|
|
557
|
+
* For accepted/duplicate, resolves with canonical facts and explicit owner acceptance.
|
|
551
558
|
* For conflict/fenced, rejects with a descriptive error.
|
|
552
559
|
* @param executionAttemptId - Attempt whose waiter to settle.
|
|
553
560
|
* @param decision - The durable outcome decision from the repository.
|
|
@@ -572,6 +579,8 @@ interface OutcomeConvergenceInput<TOutcome> {
|
|
|
572
579
|
readonly outcome: TOutcome;
|
|
573
580
|
/** The durable decision that produced the committed outcome. */
|
|
574
581
|
readonly decision: 'accepted' | 'duplicate';
|
|
582
|
+
/** Frozen first-commit control facts; null means unknown, never revision zero. */
|
|
583
|
+
readonly controlObservation: AttemptOutcomeControlObservation | null;
|
|
575
584
|
}
|
|
576
585
|
/**
|
|
577
586
|
* Owner-side convergence of a committed attempt outcome.
|
|
@@ -587,8 +596,9 @@ interface OutcomeConvergence<TOutcome> {
|
|
|
587
596
|
* Converge owner state with the committed outcome.
|
|
588
597
|
* @param input - Attempt identity, the canonical committed outcome, and the
|
|
589
598
|
* durable decision that produced it.
|
|
599
|
+
* @returns Explicit owner acceptance; recorded-only does not project lifecycle state.
|
|
590
600
|
*/
|
|
591
|
-
converge(input: OutcomeConvergenceInput<TOutcome>): Promise<
|
|
601
|
+
converge(input: OutcomeConvergenceInput<TOutcome>): Promise<OutcomeAcceptance>;
|
|
592
602
|
}
|
|
593
603
|
/**
|
|
594
604
|
* Owner-side validation that runs before the durable commit.
|
|
@@ -681,8 +691,8 @@ interface AttemptOutcomeSubmission<TOutcome> {
|
|
|
681
691
|
* Order: one canonicalization of the submitted outcome, optional pre-commit
|
|
682
692
|
* validation of that canonical value, durable commit of that same rendering
|
|
683
693
|
* through the authority, owner convergence for `accepted` and `duplicate`,
|
|
684
|
-
* then waiter settlement
|
|
685
|
-
*
|
|
694
|
+
* then waiter settlement with that classification, the original control
|
|
695
|
+
* observation, and a fresh decode of the committed text. The decision kind is returned for the caller's
|
|
686
696
|
* acknowledgement.
|
|
687
697
|
*
|
|
688
698
|
* Invariants this function keeps:
|
|
@@ -743,16 +753,6 @@ interface ExecutionAttemptHandlersDeps<TOutcome> extends AttemptOutcomeSubmissio
|
|
|
743
753
|
declare function registerExecutionAttemptHandlers<TOutcome>(bus: IMakaioBus, deps: ExecutionAttemptHandlersDeps<TOutcome>): () => void;
|
|
744
754
|
//#endregion
|
|
745
755
|
//#region subsystems/workflow-engine/src/workflow-attempt-outcome.d.ts
|
|
746
|
-
/** Technical failure retained as such rather than fabricated into a workflow-produced result. */
|
|
747
|
-
type WorkflowAttemptTechnicalFailure = Extract<ExecutionAttemptOutcome, {
|
|
748
|
-
kind: 'technical-failure';
|
|
749
|
-
}>;
|
|
750
|
-
/** Confirmed cooperative stop retained independently of a workflow-produced result. */
|
|
751
|
-
type WorkflowAttemptCancellation = Extract<ExecutionAttemptOutcome, {
|
|
752
|
-
kind: 'cancelled';
|
|
753
|
-
}>;
|
|
754
|
-
/** Canonical owner outcome: a workflow result, infrastructure failure, or confirmed cancellation. */
|
|
755
|
-
type WorkflowAttemptOutcome = WorkflowRunResult | WorkflowAttemptTechnicalFailure | WorkflowAttemptCancellation;
|
|
756
756
|
/** Production codec schema for workflow-owned Attempt outcomes. */
|
|
757
757
|
declare const WorkflowAttemptOutcomeSchema: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
758
758
|
executionId: z.ZodString;
|
|
@@ -846,9 +846,9 @@ declare const WorkflowAttemptOutcomeSchema: z.ZodUnion<readonly [z.ZodDiscrimina
|
|
|
846
846
|
confidence: z.ZodOptional<z.ZodObject<{
|
|
847
847
|
level: z.ZodEnum<{
|
|
848
848
|
inferred: "inferred";
|
|
849
|
-
confirmed: "confirmed";
|
|
850
849
|
assumed: "assumed";
|
|
851
850
|
stated: "stated";
|
|
851
|
+
confirmed: "confirmed";
|
|
852
852
|
verified: "verified";
|
|
853
853
|
}>;
|
|
854
854
|
basis: z.ZodArray<z.ZodObject<{
|
|
@@ -919,9 +919,9 @@ declare const WorkflowAttemptOutcomeSchema: z.ZodUnion<readonly [z.ZodDiscrimina
|
|
|
919
919
|
}, z.core.$strict>], "status">, z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
920
920
|
kind: z.ZodLiteral<"technical-failure">;
|
|
921
921
|
stage: z.ZodEnum<{
|
|
922
|
-
startup: "startup";
|
|
923
922
|
"workspace-preparation": "workspace-preparation";
|
|
924
923
|
"workload-invocation": "workload-invocation";
|
|
924
|
+
startup: "startup";
|
|
925
925
|
}>;
|
|
926
926
|
message: z.ZodString;
|
|
927
927
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -932,14 +932,14 @@ declare const WorkflowAttemptOutcomeSchema: z.ZodUnion<readonly [z.ZodDiscrimina
|
|
|
932
932
|
reason: z.ZodOptional<z.ZodString>;
|
|
933
933
|
}, z.core.$strict>], "kind">, z.ZodTransform<{
|
|
934
934
|
kind: "technical-failure";
|
|
935
|
-
stage: "
|
|
935
|
+
stage: "workspace-preparation" | "workload-invocation" | "startup";
|
|
936
936
|
message: string;
|
|
937
937
|
} | {
|
|
938
938
|
kind: "cancelled";
|
|
939
939
|
reason?: string | undefined;
|
|
940
940
|
}, {
|
|
941
941
|
kind: "technical-failure";
|
|
942
|
-
stage: "
|
|
942
|
+
stage: "workspace-preparation" | "workload-invocation" | "startup";
|
|
943
943
|
message: string;
|
|
944
944
|
} | {
|
|
945
945
|
kind: "workload-result";
|
|
@@ -963,6 +963,13 @@ interface CommittedWorkflowOutcomeIdentity {
|
|
|
963
963
|
/** Workflow definition that owns that execution. */
|
|
964
964
|
readonly workflowId: string;
|
|
965
965
|
}
|
|
966
|
+
/**
|
|
967
|
+
* Preserve owner acceptance when returning a canonical fact to a workflow runner.
|
|
968
|
+
* @param acceptedOutcome - Committed fact and explicit owner interpretation.
|
|
969
|
+
* @param identity - Immutable workflow identity bound to the attempt.
|
|
970
|
+
* @returns A no-projection completion or an already-projected lifecycle result.
|
|
971
|
+
*/
|
|
972
|
+
declare function toCommittedWorkflowRunnerCompletion(acceptedOutcome: AcceptedAttemptOutcome<WorkflowAttemptOutcome>, identity: CommittedWorkflowOutcomeIdentity): WorkflowRunnerCompletion;
|
|
966
973
|
/**
|
|
967
974
|
* Project an already committed and converged outcome for the workflow runner API.
|
|
968
975
|
*
|
|
@@ -1000,7 +1007,6 @@ declare class WorkflowExecutor extends BaseService {
|
|
|
1000
1007
|
private readonly shellAbortControllers;
|
|
1001
1008
|
private readonly activeRunnerSteps;
|
|
1002
1009
|
private readonly gateTimeoutScheduler;
|
|
1003
|
-
private readonly resumeDispatches;
|
|
1004
1010
|
/**
|
|
1005
1011
|
* Per-execution abort controllers used to cancel workflow-level runners.
|
|
1006
1012
|
* Keyed by execution ID; only populated when a {@link IWorkflowRunner} is used.
|
|
@@ -1018,7 +1024,7 @@ declare class WorkflowExecutor extends BaseService {
|
|
|
1018
1024
|
* @param workflowRunner - Optional workflow-level runner for isolated execution
|
|
1019
1025
|
* @param executionAttemptAuthority - Optional Authority for Worker dispatch runners
|
|
1020
1026
|
*/
|
|
1021
|
-
constructor(bus: IMakaioBus, config?: Partial<ExecutorConfig>, workflowRunner?: IWorkflowRunner | undefined, executionAttemptAuthority?: ExecutionAttemptAuthority<WorkflowAttemptOutcome> | undefined);
|
|
1027
|
+
constructor(bus: IMakaioBus, config?: Partial<ExecutorConfig>, workflowRunner?: IWorkflowRunner | undefined, executionAttemptAuthority?: ExecutionAttemptAuthority<WorkflowAttemptOutcome$1> | undefined);
|
|
1022
1028
|
/**
|
|
1023
1029
|
* Register a host resolver used to freeze workspace materialization before a
|
|
1024
1030
|
* path-backed execution is persisted.
|
|
@@ -1075,7 +1081,12 @@ declare class WorkflowExecutor extends BaseService {
|
|
|
1075
1081
|
accepted: boolean;
|
|
1076
1082
|
status: WorkflowExecution["status"];
|
|
1077
1083
|
}>;
|
|
1078
|
-
|
|
1084
|
+
/**
|
|
1085
|
+
* Interpret a canonical Attempt outcome under durable owner lifecycle ordering.
|
|
1086
|
+
* @param input - Committed outcome and its frozen control observation.
|
|
1087
|
+
* @returns Explicit lifecycle projection or technical-fact-only acceptance.
|
|
1088
|
+
*/
|
|
1089
|
+
readonly acceptAuthorityOutcome: (input: OutcomeConvergenceInput<WorkflowAttemptOutcome$1>) => Promise<_$_makaio_contracts0.OutcomeAcceptance>;
|
|
1079
1090
|
private loadAuthorityRunnerContext;
|
|
1080
1091
|
private registerAuthorityResultFinalizer;
|
|
1081
1092
|
/**
|
|
@@ -1178,18 +1189,11 @@ declare class WorkflowExecutor extends BaseService {
|
|
|
1178
1189
|
* @returns `true` when the gate was accepted and resume dispatched; `false` otherwise.
|
|
1179
1190
|
*/
|
|
1180
1191
|
private respondToPausedGate;
|
|
1181
|
-
/**
|
|
1182
|
-
* Transition a paused execution back to running and re-dispatch it through
|
|
1183
|
-
* the configured runner infrastructure.
|
|
1184
|
-
* @param executionId - Execution to resume.
|
|
1185
|
-
*/
|
|
1186
|
-
private resumePausedExecution;
|
|
1187
1192
|
/**
|
|
1188
1193
|
* Dispatch a paused execution once durable resume state is available.
|
|
1189
1194
|
* @param executionId - Execution to resume.
|
|
1190
|
-
* @returns True when a runner task was launched.
|
|
1191
1195
|
*/
|
|
1192
|
-
private
|
|
1196
|
+
private resumePausedExecution;
|
|
1193
1197
|
}
|
|
1194
1198
|
//#endregion
|
|
1195
1199
|
//#region subsystems/workflow-engine/src/workflow-trigger-reconciler.d.ts
|
|
@@ -1458,7 +1462,7 @@ interface WorkflowEngineServiceOptions {
|
|
|
1458
1462
|
* When omitted, the workflow engine operates without attempt tracking
|
|
1459
1463
|
* (framework-only, in-process, and Piscina modes).
|
|
1460
1464
|
*/
|
|
1461
|
-
executionAttemptRepository?: ExecutionAttemptRepository<WorkflowAttemptOutcome>;
|
|
1465
|
+
executionAttemptRepository?: ExecutionAttemptRepository<WorkflowAttemptOutcome$1>;
|
|
1462
1466
|
/** Explicit creation-time bootstrap budget, required only when constructing an Authority. */
|
|
1463
1467
|
executionAttemptBootstrapTimeoutMs?: number;
|
|
1464
1468
|
/**
|
|
@@ -1472,7 +1476,7 @@ interface WorkflowEngineServiceOptions {
|
|
|
1472
1476
|
* construction. When both are provided, the pre-built Authority is used
|
|
1473
1477
|
* and the repository is ignored.
|
|
1474
1478
|
*/
|
|
1475
|
-
executionAttemptAuthority?: ExecutionAttemptAuthority<WorkflowAttemptOutcome>;
|
|
1479
|
+
executionAttemptAuthority?: ExecutionAttemptAuthority<WorkflowAttemptOutcome$1>;
|
|
1476
1480
|
/** Host-owned resolvers that create portable specs for path-backed starts. */
|
|
1477
1481
|
workflowMaterializationSpecResolvers?: readonly WorkflowMaterializationSpecResolver[];
|
|
1478
1482
|
/**
|
|
@@ -1517,7 +1521,7 @@ declare class WorkflowEngineService extends BaseService {
|
|
|
1517
1521
|
* an explicit bootstrap budget, independently of runner mode.
|
|
1518
1522
|
* @returns Authority instance, or `undefined` when no repository is injected.
|
|
1519
1523
|
*/
|
|
1520
|
-
get executionAttemptAuthority(): ExecutionAttemptAuthority<WorkflowAttemptOutcome> | undefined;
|
|
1524
|
+
get executionAttemptAuthority(): ExecutionAttemptAuthority<WorkflowAttemptOutcome$1> | undefined;
|
|
1521
1525
|
/**
|
|
1522
1526
|
* Register a named workflow success finalizer with the owned executor.
|
|
1523
1527
|
*
|
|
@@ -1600,4 +1604,4 @@ declare function createWorkflowEnginePackage(options?: WorkflowEngineServiceOpti
|
|
|
1600
1604
|
*/
|
|
1601
1605
|
declare const workflowEnginePackage: MakaioNodeExtension<IMakaioBus>;
|
|
1602
1606
|
//#endregion
|
|
1603
|
-
export {
|
|
1607
|
+
export { BootstrapStartOptions as A, OutcomeAcceptance$1 as C, submitAttemptOutcome as D, OutcomePreCommitValidation as E, WorkflowMaterializationSpecResolver as M, WorkflowWorkspaceRootResolver as N, ExecutionAttemptAuthority as O, registerDrizzleWorkflowStorage as P, AttemptOutcomeSubmissionDeps as S, OutcomeConvergenceInput as T, AttemptOutcomeDecodingInput as _, WorkflowEngineServiceOptions as a, AcceptedAttemptOutcome$1 as b, CommittedWorkflowOutcomeIdentity as c, WorkflowAttemptOutcomeSchema as d, WorkflowAttemptTechnicalFailure as f, workflowAttemptOutcomeCodec as g, toCommittedWorkflowRunnerResult as h, WorkflowEngineService as i, WorkflowMaterializationSpecResolution as j, BootstrapStartAuthority as k, WorkflowAttemptCancellation as l, toCommittedWorkflowRunnerCompletion as m, createWorkflowEnginePackage as n, WorkflowTriggerReconciler as o, decodeWorkflowAttemptOutcome as p, workflowEnginePackage as r, WorkflowExecutor as s, WorkflowEngineToken as t, WorkflowAttemptOutcome$1 as u, ExecutionAttemptHandlersDeps as v, OutcomeConvergence as w, AttemptOutcomeSubmission as x, registerExecutionAttemptHandlers as y };
|
package/dist/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{canonicalStringify as e}from"@makaio/framework/utils";import{ArtifactKindRegistrationSchema as t,ArtifactSubjects as n,ArtifactViewModelSchema as r,ArtifactViewResolveRequestSchema as i,MaterializationSubjects as a,dep as o,extensionToken as s}from"@makaio/framework/contracts";import{BaseService as c}from"@makaio/framework/service-base";import{compileArtifactDataSchema as l,readArtifactTitle as u}from"@makaio/framework/contracts/artifact";import{MaterializationSubjects as d}from"@makaio/framework/contracts/materialization";function f(e){try{l(e)}catch(t){throw Error(`Invalid data schema for artifact kind '${e.kind}' version '${e.schemaVersion}': ${t instanceof Error?t.message:String(t)}`,{cause:t})}}const p=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],m={extension:0,"factory-repo":1,"target-repo":2},h={source:`extension`,ownerKey:`extension:bus`};function g(e){return`${e.source}:${e.ownerKey}`}function _(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function v(e){return structuredClone(e)}function y(e,t){return`${e}@${t}`}var b=class extends c{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of p)this.relationTypes.set(e.type,e);this.registerHandler(n.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(n.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(v);e.setResult({kinds:n})}),this.registerHandler(n[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(n[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(v);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=m[e.owner.source]-m[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!_(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),r=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,r);return}let i;for(let e of t.values())(i===void 0||this.compareKindContributions(e,i)<0)&&(i=e);let a=i;this.kinds.set(e,v(a.registration)),JSON.stringify(r)!==JSON.stringify(a.registration)&&this.bus.emit(n.kind.changed,{kind:a.registration.kind,schemaVersion:a.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(n.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,n=h){e=t.parse(e),f(e);let r=y(e.kind,e.schemaVersion),i=this.kindContributions.get(r)??new Map,a=g(n),o=i.get(a),s=n.source===`extension`?this.nextKindContributionOrder:o?.order??this.nextKindContributionOrder,c=this.findSameTierRepoConflict(i,n,s);if(c!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${r}' is already registered by '${c.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}i.set(a,{owner:n,registration:v(e),order:n.source===`extension`||o===void 0?this.nextKindContributionOrder++:o.order}),this.kindContributions.set(r,i),this.recomputeKindWinner(r)}deregisterKind(e,t,n=h){let r=y(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(g(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,n){let r=n.map(e=>t.parse(e));for(let e of r)f(e);let i=new Set,a=g(e),o=new Map;for(let[e,t]of this.kindContributions.entries()){let n=t.get(a);n!==void 0&&(o.set(e,n.order),t.delete(a),i.add(e))}for(let t of r){let n=y(t.kind,t.schemaVersion),r=this.kindContributions.get(n)??new Map,s=e.source===`extension`?void 0:o.get(n),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(r,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}r.set(a,{owner:e,registration:v(t),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(n,r),i.add(n)}for(let e of i)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,v(e))}getKind(e,t){let n=this.kinds.get(y(e,t));return n?v(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?v(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}};const x=s(`artifact-schema-registry`),S={name:x.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new b(e.bus)};function C(e,t){return JSON.stringify([e,t])}function w(e){return Object.freeze({kind:e.kind,schemaVersion:e.schemaVersion,version:e.version,build:e.build})}var T=class extends Error{key;incomingOwner;existingOwner;constructor(e,t,n){let r=t===n?`Duplicate builder key '${e}' within owner '${t}'`:`Builder key '${e}' from owner '${t}' collides with owner '${n}'`;super(r),this.key=e,this.incomingOwner=t,this.existingOwner=n,this.name=`ArtifactViewBuilderCollisionError`}},E=class{owners=new Map;globalIndex=new Map;getBuilder(e,t){return this.globalIndex.get(C(e,t))?.builder}replaceBuildersForOwner(e,t){for(let n of t)if(!Number.isInteger(n.version)||n.version<1)throw Error(`Builder for '${C(n.kind,n.schemaVersion)}' from owner '${e}' has non-positive version ${String(n.version)}`);let n=new Map;for(let r of t){let t=C(r.kind,r.schemaVersion);if(n.has(t))throw new T(t,e,e);n.set(t,w(r))}for(let t of n.keys()){let n=this.globalIndex.get(t);if(n&&n.owner!==e)throw new T(t,e,n.owner)}n.size===0?this.owners.delete(e):this.owners.set(e,[...n.values()]),this.rebuildGlobalIndex()}removeBuildersForOwner(e){this.owners.has(e)&&(this.owners.delete(e),this.rebuildGlobalIndex())}getBuildersForOwner(e){let t=this.owners.get(e);if(t)return[...t]}clear(){this.owners.clear(),this.globalIndex.clear()}destroy(){this.clear()}rebuildGlobalIndex(){let e=new Map;for(let[t,n]of this.owners)for(let r of n){let n=C(r.kind,r.schemaVersion);e.set(n,{owner:t,builder:r})}this.globalIndex=e}};const D=5;function O(e){if(e.target.refClass===`artifact`)return{artifactId:e.target.id,label:`[${e.target.kind}] ${e.target.id}`}}function k(e){let t=new Map;for(let n of e){let e=O(n);if(!e)continue;let r=t.get(n.type)??[];r.push(e),t.set(n.type,r)}if(t.size!==0)return{type:`relations`,title:`Relations`,groups:[...t.entries()].map(([e,t])=>({type:e,items:t}))}}function A(e){let t=[],n=new Set;for(let r of e){let e=O(r);!e||n.has(e.artifactId)||(n.add(e.artifactId),t.push(e))}return{breadcrumbs:[],related:t}}function j(e){if(!e.confidence?.basis)return;let t=[];for(let n of e.confidence.basis){let e=n.evidenceRef;e?.refClass===`evidence`&&t.push({kind:e.kind,id:e.id,...e.locator?{locator:e.locator}:{}})}if(t.length!==0)return{type:`evidence`,title:`Evidence`,items:t}}function M(e,t,n){let r=[];if(n===`full`){let t=k(e.relations);t&&r.push(t);let n=j(e);n&&r.push(n)}return{title:u(e.data,t.titlePath),artifact:{id:e.id,kind:e.kind,revision:e.revision},navigation:A(e.relations),sections:r,links:{}}}var N=class extends c{schemaRegistry;builderRegistry;constructor(e,t,n){super(e),this.schemaRegistry=t,this.builderRegistry=n}async onInit(){this.registerHandler(a.artifact.view.resolve,async e=>{let{ref:t,level:n,affordance:r,params:a}=i.parse(e.payload),o=await this.resolve(t,n,r,a);e.setResult(o)})}async resolve(e,t,i,a){let o=await this.bus.requestOptional(n.resolve,{ref:e});if(!o.handled||o.data.artifact===null)return{status:`artifact-not-found`,view:null};let s=o.data.artifact,c=this.schemaRegistry.getKind(s.kind,s.schemaVersion);if(c===void 0)return{status:`not-rendered`,view:null};let l=this.builderRegistry.getBuilder(s.kind,s.schemaVersion);if(l===void 0)return{status:`not-rendered`,view:null};let u=M(s,c,t),d=u.sections,f=u.navigation,p=l.version,m=await l.build({artifact:s,level:t,affordance:i,params:a,genericSections:u.sections,genericNavigation:u.navigation,relations:s.relations});if(m!==void 0){if(`render`in m&&m.render===!1)return{status:`not-rendered`,view:null};`sections`in m&&(d=m.sections??d),`navigation`in m&&(f=m.navigation??f)}let h={title:u.title,artifact:u.artifact,navigation:f,sections:[...d],links:u.links};return{status:`ok`,view:r.parse(h),builderVersion:p,sourceRevision:e.revision}}};function P(e){return structuredClone(e)}var F=class extends c{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(d.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(d.surfaceBinding.list,e=>{let{id:t,provider:n,namespace:r}=e.payload,i=[...this.bindings.values()].filter(e=>(!t||e.id===t)&&(!n||e.provider===n)&&(!r||e.namespace===r)).map(P);e.setResult({bindings:i})})}registerBinding(t){let n=this.bindings.get(t.id);if(n){if(e(n)!==e(t))throw Error(`Surface binding '${t.id}' is already registered with a different definition`);return}this.bindings.set(t.id,P(t)),this.bus.emit(d.surfaceBinding.changed,{id:t.id,provider:t.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(d.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?P(t):void 0}onDestroy(){this.bindings.clear()}},I=class{queues=new Map;activeLeases=new Map;pendingAcquisitions=new Set;authorizedRequests=new Map;consumedAuthorizedRequestIds=new Set;acceptingAcquisitions=!0;destroyPromise;destroy(){return this.acceptingAcquisitions=!1,this.destroyPromise??=this.drain(),this.destroyPromise}acquire(e){if(!this.acceptingAcquisitions)return Promise.reject(Error(`Materialization operation coordinator is destroyed`));let t=this.acquireAdmitted(e);return this.pendingAcquisitions.add(t),t.then(()=>this.pendingAcquisitions.delete(t),()=>this.pendingAcquisitions.delete(t)),t}async acquireAdmitted(e){let t=L(e),n=new Set,r=[];for(let e of R(t))r.push(await this.acquireKey(e)),n.add(e);let i={id:crypto.randomUUID(),scope:t},a,o=new Promise(e=>{a=e});return this.activeLeases.set(i.id,{lease:i,heldKeys:n,releases:r,settled:o,settle:a,released:!1}),i}release(e){let t=this.requireActiveLease(e);t.released=!0,this.activeLeases.delete(e.id);for(let e of t.releases.reverse())e();t.settle()}async extend(e,t){let n=this.requireActiveLease(e),r=L(t);if(r.artifactId!==e.scope.artifactId)throw Error(`A materialization operation lease cannot be extended to another artifact`);let i=R(r).filter(e=>!n.heldKeys.has(e)),a=[...n.heldKeys].filter(e=>e.startsWith(`provider:`)).at(-1);if(a&&i.some(e=>B(e,a)<0))throw Error(`Materialization operation lease extension violates lock ordering`);for(let e of i)n.releases.push(await this.acquireKey(e)),n.heldKeys.add(e)}async runExclusive(e,t,n,r){let i=L(e);if(n){if(this.consumedAuthorizedRequestIds.has(n))throw Error(`Materialization operation authorization has already been consumed`);let e=this.authorizedRequests.get(n);if(e){this.authorizedRequests.delete(n),this.consumedAuthorizedRequestIds.add(n);let a=this.activeLeases.get(e.leaseId);if(!r?.local||!a||e.scopeKey!==V(i))throw Error(`Materialization operation authorization does not match this scope`);return t(a.lease)}}let a=await this.acquire(i);try{return await t(a)}finally{this.release(a)}}async runAuthorizedRequest(e,t,n){let r=this.requireActiveLease(e),i=L(t);if(!R(i).every(e=>r.heldKeys.has(e)))throw Error(`Materialization operation authorization requires a lease for the full scope`);let a=crypto.randomUUID();this.authorizedRequests.set(a,{leaseId:e.id,scopeKey:V(i)});try{return await n(a)}finally{this.authorizedRequests.delete(a),this.consumedAuthorizedRequestIds.delete(a)}}requireActiveLease(e){let t=this.activeLeases.get(e.id);if(!t||t.released||t.lease!==e)throw Error(`Materialization operation lease is no longer active`);return t}async acquireKey(e){let t=this.queues.get(e)??Promise.resolve(),n,r=new Promise(e=>{n=e}),i=t.then(()=>r);return this.queues.set(e,i),await t,()=>{n(),this.queues.get(e)===i&&this.queues.delete(e)}}async drain(){for(;this.pendingAcquisitions.size>0||this.activeLeases.size>0;)await Promise.allSettled([...this.pendingAcquisitions,...[...this.activeLeases.values()].map(e=>e.settled)])}};function L(e){if(!e.artifactId)throw Error(`Materialization operation scope requires an artifactId`);let t=[...new Map((e.providerObjects??[]).map(e=>[z(e),e])).values()].sort((e,t)=>B(z(e),z(t)));return t.length>0?{artifactId:e.artifactId,providerObjects:t}:{artifactId:e.artifactId}}function R(e){return[`artifact:${e.artifactId}`,...(e.providerObjects??[]).map(z)]}function z(e){if(!e.provider||!e.externalId)throw Error(`Materialization provider objects require provider and externalId`);return`provider:${JSON.stringify([e.provider,e.externalId])}`}function B(e,t){return e===t?0:e<t?-1:1}function V(e){return JSON.stringify(R(e))}const H=s(`surface-binding-registry`),U=s(`artifact-view-builder-registry`),W=s(`artifact-view-service`),G=s(`materialization-operation-coordinator`),K={name:G.name,displayName:`Materialization Operation Coordinator`,version:`0.1.0`,critical:!0,create:()=>new I},q={name:H.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new F(e.bus)},J={name:U.name,displayName:`Artifact View Builder Registry`,version:`0.1.0`,critical:!0,create:()=>new E},Y={name:W.name,displayName:`Artifact View Service`,version:`0.1.0`,critical:!0,dependencies:[o(x.name),o(U.name)],create:e=>{let t=e.getService(x),n=e.getService(U);if(t===void 0)throw Error(`ArtifactSchemaRegistry is not available for ArtifactViewService`);if(n===void 0)throw Error(`ArtifactViewBuilderRegistry is not available for ArtifactViewService`);return new N(e.bus,t,n)}};export{S as _,J as a,q as c,N as d,D as f,x as g,E as h,H as i,I as l,T as m,W as n,Y as o,M as p,G as r,K as s,U as t,F as u,b as v};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./version-
|
|
1
|
+
import{t as e}from"./version-DdGhNoY5.mjs";import{z as t}from"zod";import*as n from"node:path";const r=t.string().trim().min(1),i=t.number().int().finite().nonnegative().describe(`Unix epoch timestamp in milliseconds`);function a(e){return n.posix.isAbsolute(e)||n.win32.isAbsolute(e)}const o=t.string().trim().min(1).refine(a,{message:`Path must be absolute`}),s=t.string().min(1).regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/,`Profile name must be a safe path component`),c=s,l=t.object({id:r,clientId:r,name:s,description:t.string().nullable(),configDir:o,isDefault:t.boolean(),createdAt:i,updatedAt:i}),u=t.record(t.string(),t.string()),d=t.enum([`auth-only`,`full`,`empty`]),f={"profile.create":{request:t.object({clientId:r,name:s,description:t.string().optional()}),response:t.object({profile:l})},"profile.list":{request:t.object({clientId:r}),response:t.object({profiles:t.array(l)})},"profile.get":{request:t.object({clientId:r,name:s}),response:t.object({profile:l.nullable()})},"profile.update":{request:t.object({clientId:r,name:s,description:t.string().optional()}),response:t.object({profile:l})},"profile.delete":{request:t.object({clientId:r,name:s}),response:t.object({success:t.boolean()})},"profile.setDefault":{request:t.object({clientId:r,name:s}),response:t.object({profile:l})}},p={"sessionConfig.create":{request:t.object({clientId:r,leaseId:c,ownerSessionId:r.optional(),profileName:s.optional(),baseConfigDir:o.optional(),projectDir:o.optional(),configInheritance:d.optional()}),response:t.object({sessionDir:o,env:u,authMaterialized:t.boolean()})},"sessionConfig.destroy":{request:t.object({clientId:r,leaseId:c}),response:t.object({success:t.boolean()})},"sessionConfig.cleanup":{request:t.object({clientId:r.optional()}),response:t.object({removed:t.array(o)})}},m=t.object({sessionDir:o,baseConfigDir:o,projectDir:o.optional(),platform:t.enum([`darwin`,`linux`,`win32`]),configInheritance:d}),h=t.object({sessionDir:o,platform:t.enum([`darwin`,`linux`,`win32`])}),g=t.object({success:t.boolean()}),_=t.object({env:t.record(t.string(),t.string()).optional(),authMaterialized:t.boolean()}),v=t.enum([`managed-install`,`profile-create`,`session-create`]),y={request:t.object({clientId:r,configDir:o,phase:v,binaryVersion:e.optional(),adapterName:t.string().min(1).optional(),projectDir:o.optional()}),response:t.object({primed:t.boolean()})};export{a as _,f as a,d as c,_ as d,h as f,r as g,i as h,l as i,c as l,o as m,y as n,p as o,g as p,s as r,u as s,v as t,m as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./resolved-
|
|
1
|
+
import{t as e}from"./resolved-XQTiHgrA.mjs";import{r as t,t as n}from"./definition-o5Dfg5j-.mjs";import{z as r}from"zod";const i=r.object({state:r.literal(`resolved`),providerConfigId:r.string().trim().min(1),definitionId:r.string().trim().min(1),endpointOverrides:n.optional(),auth:e,capabilities:t.optional()}).strict().superRefine((e,t)=>{e.auth.method.owner===`provider`&&e.auth.method.providerDefinitionId!==e.definitionId&&t.addIssue({code:r.ZodIssueCode.custom,message:`Provider-owned authentication must belong to the resolved provider definition.`,path:[`auth`,`method`,`providerDefinitionId`]})}),a=r.object({state:r.literal(`unresolved`)}).strict(),o=r.discriminatedUnion(`state`,[i,a]);export{i as n,a as r,o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./namespace-
|
|
1
|
+
import{r as e}from"./namespace-KYIbWPvl.mjs";import{CredentialSubjects as t}from"@makaio/framework/contracts";var n=class extends Error{code;adapterName;providerConfigId;constructor(e,t,n){super(`Provider context resolution failed (${e}) for adapter "${t}".`),this.code=e,this.adapterName=t,this.providerConfigId=n,this.name=`RuntimeProviderContextResolutionError`}};async function r(t,r){let i=await t.request(e.resolveAdapterRuntimeSnapshot,r);if(i.status===`error`)throw new n(i.code,r.adapterName,r.providerConfigId);let a=i.runtime;if(a.adapterName!==r.adapterName||a.snapshot.context.providerConfigId!==r.providerConfigId)throw new n(`snapshot-identity-mismatch`,r.adapterName,r.providerConfigId);let o=a.snapshot.context;if(o.state!==`resolved`)throw new n(`provider-context-unresolved`,r.adapterName,r.providerConfigId);return o}var i=class extends Error{code;constructor(e){super(`[activateProviderContext] ${e===`manager-unavailable`?`the selected account manager is unavailable`:e===`account-not-found`?`the selected account no longer exists`:`the selected account could not be activated`}.`),this.code=e,this.name=`ProviderContextActivationError`}},a=class extends Error{constructor(){super(`Provider context account activation rollback failed.`),this.name=`ProviderContextActivationRollbackError`}},o=class{bus;transactionId;finalization;constructor(e,t){this.bus=e,this.transactionId=t}commit(){return this.finalize(`commit`)}rollback(){return this.finalize(`rollback`)}finalize(e){if(this.finalization!==void 0)return this.finalization.action===e?this.finalization.promise:Promise.reject(new i(`activation-failed`));let t=this.requestFinalization(e);return this.finalization={action:e,promise:t},t}async requestFinalization(e){try{if(e===`commit`){let e=await this.bus.requestOptional(t.activation.commit,{transactionId:this.transactionId});if(!e.handled)throw new i(`activation-failed`);if(!e.data.success)throw e.data.code===`commit-rollback-failed`?new a:new i(`activation-failed`);return}let n=await this.bus.requestOptional(t.activation.rollback,{transactionId:this.transactionId});if(!n.handled)throw new i(`activation-failed`);if(!n.data.success)throw n.data.code===`rollback-failed`?new a:new i(`activation-failed`)}catch(e){throw e instanceof i||e instanceof a?e:new i(`activation-failed`)}}};function s(e){return e.state!==`resolved`||e.auth.mode!==`inferred`||e.auth.account===void 0?null:e}async function c(e,n){let r=s(n);if(r)try{let n=await e.requestOptional(t.activate,{providerContext:r});if(!n.handled)throw new i(`manager-unavailable`);if(!n.data.success)throw new i(n.data.code)}catch(e){throw e instanceof i?e:new i(`activation-failed`)}}async function l(e,n){let r=s(n);if(r)try{let n=await e.requestOptional(t.activation.prepare,{providerContext:r});if(!n.handled)throw new i(`manager-unavailable`);if(!n.data.success)throw new i(n.data.code);return new o(e,n.data.transactionId)}catch(e){throw e instanceof i?e:new i(`activation-failed`)}}export{n as a,l as i,a as n,r as o,c as r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t,l as n,u as r}from"./definitions-
|
|
1
|
+
import{c as e,i as t,l as n,u as r}from"./definitions-CyFaNG_c.mjs";import{i,n as a,r as o,t as s}from"./selection-D7V0wyHX.mjs";import{z as c}from"zod";const l=c.object({mode:c.literal(`explicit`),method:a,definition:e,credentialRefs:c.record(t,s)}).strict(),u=c.object({mode:c.literal(`inferred`),method:o,definition:n,account:i.optional()}).strict(),d=c.object({mode:c.literal(`none`),method:a,definition:r}).strict(),f=c.discriminatedUnion(`mode`,[l,u,d]).superRefine((e,t)=>{if(e.method.methodId!==e.definition.id&&t.addIssue({code:c.ZodIssueCode.custom,message:`Resolved auth method reference must match the resolved method definition ID.`,path:[`definition`,`id`]}),e.mode!==`explicit`)return;let n=new Set(e.definition.fields.map(({id:e})=>e));for(let n of e.definition.fields)n.required&&!Object.prototype.hasOwnProperty.call(e.credentialRefs,n.id)&&t.addIssue({code:c.ZodIssueCode.custom,message:`Missing required credential ref for field "${n.id}".`,path:[`credentialRefs`,n.id]});for(let r of Object.keys(e.credentialRefs))n.has(r)||t.addIssue({code:c.ZodIssueCode.custom,message:`Credential ref field "${r}" is not declared by the resolved auth method.`,path:[`credentialRefs`,r]})});export{f as t};
|
|
@@ -4,7 +4,7 @@ import { a as CODE_EXECUTION_DEFAULT_MAX_PROGRAM_FILES, c as CODE_EXECUTION_DEFA
|
|
|
4
4
|
import { t as PiscinaCodeExecutionProvider } from "../index-6kg8YFYt.mjs";
|
|
5
5
|
import { a as FilesystemDescriptorDiscovery, n as ExplicitDescriptorDiscovery, o as FilesystemDescriptorDiscoveryOptions, r as ExtensionDiscovery, s as MergedDescriptorDiscovery, t as DiscoveredExtension } from "../extension-discovery-B0ZL076T.mjs";
|
|
6
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-Bu10B5B1.mjs";
|
|
7
|
-
import { $t as InitializeNodeDatabaseOptions, A as HeadlessWorkerExecutor, At as BootMakaioRuntimeOptions, B as WorkloadInvocationPreparation, Cn as prepareAdapterRuntime, D as HeadlessWorkerBootstrapCredentials, Dt as ThinWorkflowPiscinaRunnerOptions, E as HeadlessWorkerBootstrap, Ft as UpstreamTelemetryBootOptions, G as IsolatedWorkflowRuntimeContext, H as runWorkloadInvocation, I as runHeadlessWorkflowWorker, It as WorkflowRunnerBootOptions, J as createIsolatedWorkflowRuntime, K as WorkflowRuntimeAuthorityConnector, L as InstalledWorkloadAdapter, M as HeadlessWorkerPostCommitObserver, Mt as MakaioRuntime, N as HeadlessWorkflowWorkerDeps, Nt as ServerTransportProvider, O as HeadlessWorkerBusConnector, Ot as WorkflowRunResult, P as HeadlessWorkflowWorkerResult, Pt as TransportReadyInfo, Qt as DatabaseBootOptions, R as RunWorkloadInvocationOptions, Sn as activateAdapterRuntimeIdentity, T as LocalGitSourceOptions, Tt as IWorkflowRunner, U as CreateIsolatedWorkflowRuntimeOptions, V as WorkloadInvocationResult, W as IsolatedWorkflowRuntime, X as InProcessWorkflowRunnerOptions, Xt as WorkflowWorkerEntryResolverOptions, Y as InProcessWorkflowRunner, Yt as WorkflowWorkerEntryMode, Zt as resolveWorkflowWorkerEntry, _ as admitWorkflowRunOperation, _n as createHonoRouteGraph, a as bootstrapWorkerRuntime, an as ShutdownStep, b as registerWorkerRuntime, bn as PrepareAdapterRuntimeInput, c as DeliverableOperationKind, cn as NodeFrameworkModuleResolver, d as OperationDeliveryEndpointIdentity, dn as HttpRouteGraphBuilder, en as InitializeNodeDatabaseResult, f as OperationDeliveryHandler, fn as createHttpRouteGraphBuilder, g as RuntimeRegistrationRefusedError, gn as HonoRouteGraphOptions, h as RegisterWorkerRuntimeOptions, hn as HonoRouteGraph, i as StartedWorkerRuntime, in as selectFrameworkCorePackages, it as AuthorityRequestDeliveryError, j as HeadlessWorkerMaterializer, jt as CoreBootOptions, k as HeadlessWorkerContributionLoader, kt as BootCoordinatorSetupContext, l as OperationAdmissionRefusedError, ln as NoopFrameworkModuleResolver, m as RegisterAndAdmitWorkflowRunOptions, mn as HttpRouteContribution, n as BootstrapStartRefusedError, nn as HostCapabilityDeclaration, nt as AttemptOutcomeDeliveryError, o as AdmitWorkflowRunOperationOptions, on as BridgeBrowserOptions, ot as OutcomeDeliveryError, p as OperationDeliveryHandlers, pn as HttpContributionPhase, q as WorkflowRuntimeContributionLoader, r as BootstrapWorkerRuntimeOptions, rn as normalizeNodeHostCapabilities, s as AdmittedWorkflowRun, sn as FrameworkModuleResolver, t as BootstrapRuntimeConnection, tn as initializeNodeDatabase, u as OperationDeliveryEndpoint, un as resolveFrameworkSpecifier, ut as submitAttemptOutcomeWithAck, v as installOperationDeliveryEndpoint, vn as ActivateAdapterRuntimeIdentityInput, w as createLocalGitWorkspacePreparation, wt as ThinWorkflowPiscinaRunner, xn as PreparedAdapterRuntime, y as registerAndAdmitWorkflowRun, yn as ActivatedAdapterRuntimeIdentity, z as WorkloadControlBinding } from "../index-
|
|
7
|
+
import { $t as InitializeNodeDatabaseOptions, A as HeadlessWorkerExecutor, At as BootMakaioRuntimeOptions, B as WorkloadInvocationPreparation, Cn as prepareAdapterRuntime, D as HeadlessWorkerBootstrapCredentials, Dt as ThinWorkflowPiscinaRunnerOptions, E as HeadlessWorkerBootstrap, Ft as UpstreamTelemetryBootOptions, G as IsolatedWorkflowRuntimeContext, H as runWorkloadInvocation, I as runHeadlessWorkflowWorker, It as WorkflowRunnerBootOptions, J as createIsolatedWorkflowRuntime, K as WorkflowRuntimeAuthorityConnector, L as InstalledWorkloadAdapter, M as HeadlessWorkerPostCommitObserver, Mt as MakaioRuntime, N as HeadlessWorkflowWorkerDeps, Nt as ServerTransportProvider, O as HeadlessWorkerBusConnector, Ot as WorkflowRunResult, P as HeadlessWorkflowWorkerResult, Pt as TransportReadyInfo, Qt as DatabaseBootOptions, R as RunWorkloadInvocationOptions, Sn as activateAdapterRuntimeIdentity, T as LocalGitSourceOptions, Tt as IWorkflowRunner, U as CreateIsolatedWorkflowRuntimeOptions, V as WorkloadInvocationResult, W as IsolatedWorkflowRuntime, X as InProcessWorkflowRunnerOptions, Xt as WorkflowWorkerEntryResolverOptions, Y as InProcessWorkflowRunner, Yt as WorkflowWorkerEntryMode, Zt as resolveWorkflowWorkerEntry, _ as admitWorkflowRunOperation, _n as createHonoRouteGraph, a as bootstrapWorkerRuntime, an as ShutdownStep, b as registerWorkerRuntime, bn as PrepareAdapterRuntimeInput, c as DeliverableOperationKind, cn as NodeFrameworkModuleResolver, d as OperationDeliveryEndpointIdentity, dn as HttpRouteGraphBuilder, en as InitializeNodeDatabaseResult, f as OperationDeliveryHandler, fn as createHttpRouteGraphBuilder, g as RuntimeRegistrationRefusedError, gn as HonoRouteGraphOptions, h as RegisterWorkerRuntimeOptions, hn as HonoRouteGraph, i as StartedWorkerRuntime, in as selectFrameworkCorePackages, it as AuthorityRequestDeliveryError, j as HeadlessWorkerMaterializer, jt as CoreBootOptions, k as HeadlessWorkerContributionLoader, kt as BootCoordinatorSetupContext, l as OperationAdmissionRefusedError, ln as NoopFrameworkModuleResolver, m as RegisterAndAdmitWorkflowRunOptions, mn as HttpRouteContribution, n as BootstrapStartRefusedError, nn as HostCapabilityDeclaration, nt as AttemptOutcomeDeliveryError, o as AdmitWorkflowRunOperationOptions, on as BridgeBrowserOptions, ot as OutcomeDeliveryError, p as OperationDeliveryHandlers, pn as HttpContributionPhase, q as WorkflowRuntimeContributionLoader, r as BootstrapWorkerRuntimeOptions, rn as normalizeNodeHostCapabilities, s as AdmittedWorkflowRun, sn as FrameworkModuleResolver, t as BootstrapRuntimeConnection, tn as initializeNodeDatabase, u as OperationDeliveryEndpoint, un as resolveFrameworkSpecifier, ut as submitAttemptOutcomeWithAck, v as installOperationDeliveryEndpoint, vn as ActivateAdapterRuntimeIdentityInput, w as createLocalGitWorkspacePreparation, wt as ThinWorkflowPiscinaRunner, xn as PreparedAdapterRuntime, y as registerAndAdmitWorkflowRun, yn as ActivatedAdapterRuntimeIdentity, z as WorkloadControlBinding } from "../index-CjMMvZch.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 { RotateWorkflowExecutionBusSecretParams, captureWorkflowExecutionBusSecretCleanup } from "./workflow-execution-bus-access.mjs";
|
|
10
10
|
import { z } from "zod";
|
|
@@ -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-_h8-BJ8k.mjs";import{A as i,B as a,F as o,I as s,L as c,M as l,N as u,O as d,P as f,R as p,V as m,_ as h,a as g,c as _,d as v,h as y,i as b,j as x,k as S,m as C,n as w,o as T,r as E,s as D,t as ee,u as te,v as ne,z as re}from"../workflow-worker-CrnDwpkP.mjs";import{createNodeClientBinaryStrategyDependencies as ie}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as ae,RuntimeSubjects as O}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as oe,FilesystemDescriptorDiscovery as se,MergedDescriptorDiscovery as k}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as ce,MAKAIO_HOME_ENV as le,buildConfiguredRuntimeOptions as A,createMakaioConfigDiscovery as ue,defineMakaioConfig as de,loadMakaioConfig as fe,parseMakaioConfig as pe,resolveMakaioConfigPath as me,resolveMakaioHome as he,shouldIncludeExtension as ge}from"./makaio-config.mjs";import{n as _e}from"../extension-package-provenance-Dr7JXjLS.mjs";import{t as j}from"../descriptor-to-package-GVZk9ZGT.mjs";import{a as ve,c as M,i as ye,l as N,n as be,o as xe,r as Se,s as Ce,t as we}from"../load-extensions-s4YmICgn.mjs";import{a as Te,c as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"../bootstrap-start-client-rW55mDI-.mjs";import{captureWorkflowExecutionBusSecretCleanup as Ne}from"./workflow-execution-bus-access.mjs";import{a as Pe,c as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"../types-Bh2fQoxM.mjs";import{t as He}from"../code-execution-ByLSAlEg2.mjs";import{createRequire as Ue}from"node:module";import{z as P}from"zod";import{execFile as We}from"node:child_process";import{promisify as Ge}from"node:util";import{fileURLToPath as Ke,pathToFileURL as qe}from"node:url";import*as F from"node:fs/promises";import*as I from"node:path";import L from"node:path";import*as Je from"node:crypto";import{createHash as Ye}from"node:crypto";import*as R from"node:fs";import{existsSync as Xe,readFileSync as Ze,statSync as Qe}from"node:fs";import{isRecord as $e}from"@makaio/framework/utils";import{createBusNamespace as et}from"@makaio/framework/core";import{AIModelSchema as tt,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as nt,ConfigSchema as rt,ConfigSubjects as it,CredentialSubjects as at,FrameworkContractNamespaces as ot,FrameworkStorageNamespaces as st,SubjectTelemetrySubjects as ct,isDetachedDescriptor as lt,registerWorkerProvider as ut,safeParseExtensionDescriptor as dt,unregisterWorkerProvider as ft,versionSatisfies as pt}from"@makaio/framework/contracts";import{ChannelClosedError as mt,MakaioBus as ht,openChannel as gt,projectSubjectTelemetryFacts as _t}from"@makaio/framework/bus";import{DispatchingAuth as vt,E2EAuth as yt,HmacAuth as bt,WebSocketClientTransport as xt}from"@makaio/framework/node/transports";import{BootNamespace as St,ExtensionCoordinator as Ct,ExtensionNamespace as wt,KernelNamespace as Tt,createShutdownSequence as Et}from"@makaio/framework/kernel";import{BaseService as Dt}from"@makaio/framework/service-base";import{uniqueIndex as Ot}from"drizzle-orm/sqlite-core";import{uniqueIndex as kt}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as At,defineDialectSchema as jt,defineDualTable as Mt,findStorageEngine as Nt,getDatabaseDialect as Pt,getRawSqlExecutor as Ft,getStorageEngine as It,registerDrizzleHandlers as Lt,registerStorageEngine as Rt,resolveSchema as zt,resolveStorageEngine as Bt,resolveStorageEngineForUrl as Vt}from"@makaio/framework/storage/drizzle";import{and as Ht,eq as z,sql as B}from"drizzle-orm";import{parseStoredCredentialRef as Ut}from"@makaio/framework/contracts/config";import*as Wt from"node:os";import{ProviderStorageSubjects as Gt}from"@makaio/framework/services/settings/storage";import{FrameworkServicesCoreNamespaces as Kt,createArtifactKindContributionProcessor as qt,createArtifactLifecycleHookContributionProcessor as Jt,createFacetNamespaceContributionProcessor as Yt,createModelRegistryPackage as Xt,createReactionContributionProcessor as Zt,createToolContributionProcessor as Qt,createTransitionContributionProcessor as $t,createWorkflowBlockContributionProcessor as en}from"@makaio/framework/services";import{CachedRegistryFetcher as tn,FallbackRegistryFetcher as nn,ModelRegistrySchema as rn,ProviderModelOverrideSchema as an,mergeModelMetadata as on}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as sn}from"@makaio/framework/clients";import{createDatabaseClient as cn}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as ln,resolveAdapterRuntimeSnapshot as un,resolveBoundProviderAuth as dn,resolveConnectorCredentials as fn,resolveCredentialRef as pn}from"@makaio/framework/adapters/config";import{DefinitionSubjects as mn}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as hn}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as gn}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as _n,FileAdapterConfigRepository as vn,orderAfterAdapterSubsystem as yn}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as bn,loadOrCreateMachineIdentity as xn,machineKeysExist as Sn,validateMachineKeys as Cn}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as wn}from"@makaio/framework/utils/workspace-root";import{Hono as Tn}from"hono";import{CliNamespace as En}from"@makaio/framework/kernel/cli";import{startBusServer as Dn}from"@makaio/framework/node/bus-server";import{WebSocketServer as On}from"ws";import{ConfigProvider as kn}from"@makaio/framework/providers";import{KernelSubjects as V}from"@makaio/framework/kernel/namespace";import{createAutomationTriggerContributionProcessor as An,selectAutomationCronSchedulerPackage as jn}from"@makaio/framework/services/automation-trigger";import{createArtifactViewBuilderContributionProcessor as Mn,createSurfaceBindingContributionProcessor as Nn}from"@makaio/framework/services/materialization";import{createLogImportContributionProcessor as Pn,logImportRegistryPackage as Fn}from"@makaio/framework/services/log-import";import{WorkflowEngineToken as In,createWorkflowEnginePackage as Ln}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Rn,PreferencesSubjects as zn}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as Bn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as Vn}from"@hono/node-server/serve-static";var Hn=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function Un(e){let t=e.providerProtocol;if(t===void 0)throw new Hn;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function Wn(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 Gn(e,t){try{return t()}catch(t){try{Wn(e)}catch{}throw t}}function Kn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function qn(e){let{$schema:t,...n}=e;return n}function Jn(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 Yn(e,t,n,r){let i=[];return Gn(i,()=>(i.push(e.on(gn.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:P.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(mn.getConfigSchema,({payload:e,setResult:n})=>{let r=Kn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:P.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(gn.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:qn(P.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Gt.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:Jn(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Gt.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(Jn(t)));e({providers:n})},{priority:-1})),i.push(e.on(hn.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 un(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof ln))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(hn.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 un(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=Un(o),u=await dn(o.boundProviderAuth,t=>fn(e,t));i({models:await c.fetchModels(l,u)})})),()=>{Wn(i)}))}function Xn(e=`sqlite`){let{migrations:t}=It(e);return t.resolveSourceChainDir?.()??L.resolve(import.meta.dirname,`..`,t.chainDirName)}var Zn=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??Xn(t),r=L.join(n,`meta`,`_journal.json`);if(!Xe(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(Ze(r,`utf-8`));if(t!==void 0){let e=It(t).migrations.journalDialect;if(i.dialect!==e)throw new Zn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=Ze(L.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:Ye(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function $n(e){return e.replace(/--.*$/gm,``).trim()}async function er(e,t){try{await e.run(B.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function tr(e){let{migrations:t}=e.engine;if(await e.session.run(B.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await er(e.session,{migrationsTable:e.tableName}),t}}async function nr(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await tr(e);try{await e.session.run(B.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(B`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(B.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await er(e.session,{migrationsTable:e.tableName}),n}}async function rr(e,t){try{await e.session.run(B`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(B.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function ir(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(B`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(B.raw(`COMMIT`)),!0)}async function ar(e,t){await e.session.run(B.raw(`ROLLBACK`)),await tr(e),!await ir(e,t)&&await rr(e,t)}async function or(e,t){await tr(e);try{if(await ir(e,t))return;for(let[n,r]of t.sql.entries())if($n(r))try{await e.session.run(B.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 ar(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 rr(e,t)}catch(n){throw await er(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function sr(e,t,n){let r=e.engine.migrations.constraintSuspension;if(!r?.isRequestedBy(t.sql)){await n();return}await e.session.run(B.raw(r.suspendStatement));try{await n()}finally{await e.session.run(B.raw(r.restoreStatement))}}async function cr(e,t,n){let r=Ft(e),i=It(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:B.identifier(a)},r=await nr(n);for(let e of t)r.has(e.hash)||(await sr(n,e,()=>or(n,e)),r.add(e.hash))})}async function lr(e,t={}){await cr(e,Qn({migrationsDir:t.migrationsDir,expectedDialect:Pt(e)})),await Bt(e).fts.provisionSearchIndex(e)}var ur=class{configPath;constructor(e){this.configPath=I.join(e,`config.json`)}async getConfig(){try{let e=await F.readFile(this.configPath,`utf-8`);return rt.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return rt.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),rt.parse({});throw e}}async saveConfig(e){let t=I.dirname(this.configPath);await F.mkdir(t,{recursive:!0}),await F.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await F.chmod(this.configPath,384)}};function dr(e){try{let t=wn(e);return[I.resolve(t,`framework/static/model-registry.yaml`),I.resolve(t,`static/model-registry.yaml`)].find(e=>{try{return Qe(e).isFile()}catch{return!1}})}catch{return}}async function fr(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 pr(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 mr(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 hr=[`extension`,`static-fallback`];function gr(e){let t=[];function n(e){let t=new Tn,n=[...e].sort((e,t)=>hr.indexOf(e.phase)-hr.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 _r(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function vr(e,t){return(n,r,i)=>{if(!_r(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var yr=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 vt?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 On({noServer:!0});this.websocketServer=t;let n=vr(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await Dn({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)}},br=class extends kn{keysDir;constructor(e,t){super(e),this.keysDir=I.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 Je.randomBytes(32).toString(`base64`)}async getMachineId(){return(await xn(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function xr(e,t){return{extensions:e.discovery??new se(void 0,{extensionsDir:L.join(t,`extensions`),nodeModulesDir:L.join(t,`node_modules`)})}}function Sr(e){return Xe(L.join(e,`meta`,`_journal.json`))}function Cr(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=Xn}=t,i=It(e).migrations.chainDirName,a=[],o=L.resolve(n,`..`,i);if(Sr(o))return o;a.push(o);try{let t=r(e);if(Sr(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 wr(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Tr(e){return e===void 0||e.trim()===``?void 0:e}function Er(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 Dr(e,t,n){let r;try{r=await import(qe(Ue(I.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.`);Nt(e.dialect)===void 0&&Rt(i)}async function Or(e){let t=Tr(e.database?.url),n=t??Tr(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=Vt(n);if(i.kind===`missing-engine`&&(await Dr(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Vt(n)),i.kind!==`engine`){let e=At.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Er(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=I.resolve(Tr(e.dbPath)??Tr(process.env.MAKAIO_DATABASE_PATH)??I.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:qe(r).href}}async function kr(e){for(let t of e.database?.engines??[])Rt(t);let t=await Or(e);if(t.kind===`url`){let n=await cn({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Cr(t.dialect);return await lr(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=I.dirname(n);await R.promises.mkdir(r,{recursive:!0});let i=await cn({url:t.url});try{await lr(i.db,{migrationsDir:e.migrationsDir});try{await R.promises.chmod(n,384)}catch(e){if(!wr(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 Ar=P.object({npmName:P.string(),version:P.string(),source:P.enum([`new`,`upgraded`,`already-present`])}),jr=P.object({npmName:P.string(),reason:P.string()}),Mr=P.object({success:P.boolean(),packageName:P.string(),version:P.string().optional(),restartRequired:P.boolean(),error:P.string().optional(),installed:P.array(Ar).optional(),skipped:P.array(jr).optional(),warnings:P.array(P.string()).optional()}),Nr=P.object({success:P.boolean(),packageName:P.string(),error:P.string().optional(),restartRequired:P.boolean()}),Pr=P.object({name:P.string(),version:P.string(),description:P.string().optional(),hasDescriptor:P.boolean().default(!1),serverImportPath:P.string().min(1).optional()}),Fr=P.object({packageName:P.string(),latestVersion:P.string(),success:P.boolean(),error:P.string().optional()}),Ir=P.object({name:P.string(),displayName:P.string(),description:P.string(),icon:P.string().optional(),tags:P.array(P.string()).optional(),descriptorName:P.string().min(1).optional()}),Lr=P.object({$schema:P.string(),updatedAt:P.string(),adapters:P.array(Ir),extensions:P.array(Ir)}),Rr=P.object({name:P.string(),currentVersion:P.string(),latestVersion:P.string(),description:P.string().optional()}),zr=et(`packages`,{list:{request:P.object({}),response:P.object({packages:P.array(Pr)})},install:{request:P.object({packageName:P.string().optional(),packageNames:P.array(P.string()).min(1).optional(),source:P.enum([`npm`,`local`]).optional(),force:P.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Mr},uninstall:{request:P.object({packageName:P.string()}),response:Nr},getLatestVersion:{request:P.object({packageName:P.string()}),response:Fr},getRegistry:{request:P.object({}),response:Lr},checkUpdates:{request:P.object({}),response:P.object({updates:P.array(Rr)})},installed:P.object({packageName:P.string(),version:P.string()}),uninstalled:P.object({packageName:P.string()})}),H=zr.subjects;async function Br(e,t,n){if(!I.isAbsolute(e))return;let r;try{r=await F.realpath(e)}catch{return}let i=Vr(t,n),a=[I.resolve(r,`src`,`${i}.ts`),I.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await Hr(e);if(t!==void 0&&Ur(t,r))return t}}function Vr(e,t){return t===!0?e:t}async function Hr(e){try{return await F.realpath(e)}catch{return}}function Ur(e,t){let n=I.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!I.isAbsolute(n)}var Wr=class{extensionsDir;constructor(e){this.extensionsDir=I.resolve(e)}async install(e){try{let t=I.resolve(e.endsWith(`descriptor.json`)?I.dirname(e):e),n=await F.realpath(t),r=await this.readDescriptor(n);lt(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await F.mkdir(I.dirname(i),{recursive:!0});try{if((await F.lstat(i)).isSymbolicLink())await F.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 F.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 F.unlink(t),e.startsWith(`@`)){let e=I.dirname(t);(await F.readdir(e).catch(()=>null))?.length===0&&await F.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 F.access(this.extensionsDir)}catch{return[]}let e=await F.readdir(this.extensionsDir),t=[];for(let n of e){let e=I.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await F.readdir(e).catch(()=>[]);for(let r of n){let n=I.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 F.lstat(e)).isSymbolicLink())return null;let t=await F.readlink(e),n=await F.realpath(I.resolve(I.dirname(e),t)),r=I.join(n,`descriptor.json`),i=await F.readFile(r,`utf-8`),a=dt(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Br(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=I.join(e,`descriptor.json`),n=await F.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=dt(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 Br(e,t,n)===void 0){let e=Vr(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=I.resolve(this.extensionsDir,...e.split(`/`)),n=I.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||I.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const Gr=`nodeLinker: node-modules`,Kr=/^[A-Za-z]:[\\/]/;let qr=null;function U(){return qr||(qr=Promise.all([import(`../lib-BmXBuE-w.mjs`).then(e=>t(e.t(),1)),import(`../lib-DF6sgNx_.mjs`).then(e=>t(e.t(),1)),import(`../lib-R-c_q77C.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})),qr)}var Jr=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await U(),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=$r(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 U(),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 U();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 U(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await U(),{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 U(),{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 U(),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=Zr(e);try{let{structUtils:e}=await U(),{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 Br(I.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=I.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await F.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||ei(e))return null;throw e}let r=dt(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=I.join(this.makaioHome,`package.json`),t;try{let n=await F.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(ei(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=I.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await F.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=I.join(this.makaioHome,`package.json`),t=await F.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=I.join(this.makaioHome,`package.json`);await F.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 U(),{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 Yr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function Xr(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 Zr(e){return e.localPackagePath?`portal:${Qr(e.localPackagePath)}`:e.versionRange}function Qr(e){let t=(Kr.test(e)?e:I.resolve(e)).replace(/\\/g,`/`);return Kr.test(t)?`/${t}`:t}function $r(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,Gr):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-ByPlHR3P.mjs";import{A as i,B as a,F as o,I as s,L as c,M as l,N as u,O as d,P as f,R as p,V as m,_ as h,a as g,c as _,d as v,h as y,i as b,j as x,k as S,m as C,n as w,o as T,r as E,s as D,t as ee,u as te,v as ne,z as re}from"../workflow-worker-BAO7pQpx.mjs";import{createNodeClientBinaryStrategyDependencies as ie}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as ae,RuntimeSubjects as O}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as oe,FilesystemDescriptorDiscovery as se,MergedDescriptorDiscovery as k}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as ce,MAKAIO_HOME_ENV as le,buildConfiguredRuntimeOptions as A,createMakaioConfigDiscovery as ue,defineMakaioConfig as de,loadMakaioConfig as fe,parseMakaioConfig as pe,resolveMakaioConfigPath as me,resolveMakaioHome as he,shouldIncludeExtension as ge}from"./makaio-config.mjs";import{n as _e}from"../extension-package-provenance-Dr7JXjLS.mjs";import{t as j}from"../descriptor-to-package-GVZk9ZGT.mjs";import{a as ve,c as M,i as ye,l as N,n as be,o as xe,r as Se,s as Ce,t as we}from"../load-extensions-s4YmICgn.mjs";import{a as Te,c as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"../bootstrap-start-client-rW55mDI-.mjs";import{captureWorkflowExecutionBusSecretCleanup as Ne}from"./workflow-execution-bus-access.mjs";import{a as Pe,c as Fe,i as Ie,n as Le,o as Re,r as ze,s as Be,t as Ve}from"../types-Bh2fQoxM.mjs";import{t as He}from"../code-execution-ByLSAlEg2.mjs";import{createRequire as Ue}from"node:module";import{z as P}from"zod";import{execFile as We}from"node:child_process";import{promisify as Ge}from"node:util";import{fileURLToPath as Ke,pathToFileURL as qe}from"node:url";import*as F from"node:fs/promises";import*as I from"node:path";import L from"node:path";import*as Je from"node:crypto";import{createHash as Ye}from"node:crypto";import*as R from"node:fs";import{existsSync as Xe,readFileSync as Ze,statSync as Qe}from"node:fs";import{isRecord as $e}from"@makaio/framework/utils";import{createBusNamespace as et}from"@makaio/framework/core";import{AIModelSchema as tt,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as nt,ConfigSchema as rt,ConfigSubjects as it,CredentialSubjects as at,FrameworkContractNamespaces as ot,FrameworkStorageNamespaces as st,SubjectTelemetrySubjects as ct,isDetachedDescriptor as lt,registerWorkerProvider as ut,safeParseExtensionDescriptor as dt,unregisterWorkerProvider as ft,versionSatisfies as pt}from"@makaio/framework/contracts";import{ChannelClosedError as mt,MakaioBus as ht,openChannel as gt,projectSubjectTelemetryFacts as _t}from"@makaio/framework/bus";import{DispatchingAuth as vt,E2EAuth as yt,HmacAuth as bt,WebSocketClientTransport as xt}from"@makaio/framework/node/transports";import{BootNamespace as St,ExtensionCoordinator as Ct,ExtensionNamespace as wt,KernelNamespace as Tt,createShutdownSequence as Et}from"@makaio/framework/kernel";import{BaseService as Dt}from"@makaio/framework/service-base";import{uniqueIndex as Ot}from"drizzle-orm/sqlite-core";import{uniqueIndex as kt}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as At,defineDialectSchema as jt,defineDualTable as Mt,findStorageEngine as Nt,getDatabaseDialect as Pt,getRawSqlExecutor as Ft,getStorageEngine as It,registerDrizzleHandlers as Lt,registerStorageEngine as Rt,resolveSchema as zt,resolveStorageEngine as Bt,resolveStorageEngineForUrl as Vt}from"@makaio/framework/storage/drizzle";import{and as Ht,eq as z,sql as B}from"drizzle-orm";import{parseStoredCredentialRef as Ut}from"@makaio/framework/contracts/config";import*as Wt from"node:os";import{ProviderStorageSubjects as Gt}from"@makaio/framework/services/settings/storage";import{FrameworkServicesCoreNamespaces as Kt,createArtifactKindContributionProcessor as qt,createArtifactLifecycleHookContributionProcessor as Jt,createFacetNamespaceContributionProcessor as Yt,createModelRegistryPackage as Xt,createReactionContributionProcessor as Zt,createToolContributionProcessor as Qt,createTransitionContributionProcessor as $t,createWorkflowBlockContributionProcessor as en}from"@makaio/framework/services";import{CachedRegistryFetcher as tn,FallbackRegistryFetcher as nn,ModelRegistrySchema as rn,ProviderModelOverrideSchema as an,mergeModelMetadata as on}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as sn}from"@makaio/framework/clients";import{createDatabaseClient as cn}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as ln,resolveAdapterRuntimeSnapshot as un,resolveBoundProviderAuth as dn,resolveConnectorCredentials as fn,resolveCredentialRef as pn}from"@makaio/framework/adapters/config";import{DefinitionSubjects as mn}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as hn}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as gn}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as _n,FileAdapterConfigRepository as vn,orderAfterAdapterSubsystem as yn}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as bn,loadOrCreateMachineIdentity as xn,machineKeysExist as Sn,validateMachineKeys as Cn}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as wn}from"@makaio/framework/utils/workspace-root";import{Hono as Tn}from"hono";import{CliNamespace as En}from"@makaio/framework/kernel/cli";import{startBusServer as Dn}from"@makaio/framework/node/bus-server";import{WebSocketServer as On}from"ws";import{ConfigProvider as kn}from"@makaio/framework/providers";import{KernelSubjects as V}from"@makaio/framework/kernel/namespace";import{createAutomationTriggerContributionProcessor as An,selectAutomationCronSchedulerPackage as jn}from"@makaio/framework/services/automation-trigger";import{createArtifactViewBuilderContributionProcessor as Mn,createSurfaceBindingContributionProcessor as Nn}from"@makaio/framework/services/materialization";import{createLogImportContributionProcessor as Pn,logImportRegistryPackage as Fn}from"@makaio/framework/services/log-import";import{WorkflowEngineToken as In,createWorkflowEnginePackage as Ln}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as Rn,PreferencesSubjects as zn}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as Bn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as Vn}from"@hono/node-server/serve-static";var Hn=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function Un(e){let t=e.providerProtocol;if(t===void 0)throw new Hn;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function Wn(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 Gn(e,t){try{return t()}catch(t){try{Wn(e)}catch{}throw t}}function Kn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function qn(e){let{$schema:t,...n}=e;return n}function Jn(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 Yn(e,t,n,r){let i=[];return Gn(i,()=>(i.push(e.on(gn.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:P.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(mn.getConfigSchema,({payload:e,setResult:n})=>{let r=Kn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:P.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(gn.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:qn(P.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(Gt.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:Jn(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(Gt.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(Jn(t)));e({providers:n})},{priority:-1})),i.push(e.on(hn.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 un(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof ln))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(hn.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 un(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=Un(o),u=await dn(o.boundProviderAuth,t=>fn(e,t));i({models:await c.fetchModels(l,u)})})),()=>{Wn(i)}))}function Xn(e=`sqlite`){let{migrations:t}=It(e);return t.resolveSourceChainDir?.()??L.resolve(import.meta.dirname,`..`,t.chainDirName)}var Zn=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??Xn(t),r=L.join(n,`meta`,`_journal.json`);if(!Xe(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(Ze(r,`utf-8`));if(t!==void 0){let e=It(t).migrations.journalDialect;if(i.dialect!==e)throw new Zn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=Ze(L.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:Ye(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function $n(e){return e.replace(/--.*$/gm,``).trim()}async function er(e,t){try{await e.run(B.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function tr(e){let{migrations:t}=e.engine;if(await e.session.run(B.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await er(e.session,{migrationsTable:e.tableName}),t}}async function nr(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await tr(e);try{await e.session.run(B.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(B`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(B.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await er(e.session,{migrationsTable:e.tableName}),n}}async function rr(e,t){try{await e.session.run(B`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(B.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function ir(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(B`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(B.raw(`COMMIT`)),!0)}async function ar(e,t){await e.session.run(B.raw(`ROLLBACK`)),await tr(e),!await ir(e,t)&&await rr(e,t)}async function or(e,t){await tr(e);try{if(await ir(e,t))return;for(let[n,r]of t.sql.entries())if($n(r))try{await e.session.run(B.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 ar(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 rr(e,t)}catch(n){throw await er(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function sr(e,t,n){let r=e.engine.migrations.constraintSuspension;if(!r?.isRequestedBy(t.sql)){await n();return}await e.session.run(B.raw(r.suspendStatement));try{await n()}finally{await e.session.run(B.raw(r.restoreStatement))}}async function cr(e,t,n){let r=Ft(e),i=It(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:B.identifier(a)},r=await nr(n);for(let e of t)r.has(e.hash)||(await sr(n,e,()=>or(n,e)),r.add(e.hash))})}async function lr(e,t={}){await cr(e,Qn({migrationsDir:t.migrationsDir,expectedDialect:Pt(e)})),await Bt(e).fts.provisionSearchIndex(e)}var ur=class{configPath;constructor(e){this.configPath=I.join(e,`config.json`)}async getConfig(){try{let e=await F.readFile(this.configPath,`utf-8`);return rt.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return rt.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),rt.parse({});throw e}}async saveConfig(e){let t=I.dirname(this.configPath);await F.mkdir(t,{recursive:!0}),await F.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await F.chmod(this.configPath,384)}};function dr(e){try{let t=wn(e);return[I.resolve(t,`framework/static/model-registry.yaml`),I.resolve(t,`static/model-registry.yaml`)].find(e=>{try{return Qe(e).isFile()}catch{return!1}})}catch{return}}async function fr(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 pr(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 mr(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 hr=[`extension`,`static-fallback`];function gr(e){let t=[];function n(e){let t=new Tn,n=[...e].sort((e,t)=>hr.indexOf(e.phase)-hr.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 _r(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function vr(e,t){return(n,r,i)=>{if(!_r(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var yr=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 vt?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 On({noServer:!0});this.websocketServer=t;let n=vr(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await Dn({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)}},br=class extends kn{keysDir;constructor(e,t){super(e),this.keysDir=I.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 Je.randomBytes(32).toString(`base64`)}async getMachineId(){return(await xn(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function xr(e,t){return{extensions:e.discovery??new se(void 0,{extensionsDir:L.join(t,`extensions`),nodeModulesDir:L.join(t,`node_modules`)})}}function Sr(e){return Xe(L.join(e,`meta`,`_journal.json`))}function Cr(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=Xn}=t,i=It(e).migrations.chainDirName,a=[],o=L.resolve(n,`..`,i);if(Sr(o))return o;a.push(o);try{let t=r(e);if(Sr(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 wr(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Tr(e){return e===void 0||e.trim()===``?void 0:e}function Er(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 Dr(e,t,n){let r;try{r=await import(qe(Ue(I.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.`);Nt(e.dialect)===void 0&&Rt(i)}async function Or(e){let t=Tr(e.database?.url),n=t??Tr(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=Vt(n);if(i.kind===`missing-engine`&&(await Dr(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=Vt(n)),i.kind!==`engine`){let e=At.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Er(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=I.resolve(Tr(e.dbPath)??Tr(process.env.MAKAIO_DATABASE_PATH)??I.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:qe(r).href}}async function kr(e){for(let t of e.database?.engines??[])Rt(t);let t=await Or(e);if(t.kind===`url`){let n=await cn({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Cr(t.dialect);return await lr(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=I.dirname(n);await R.promises.mkdir(r,{recursive:!0});let i=await cn({url:t.url});try{await lr(i.db,{migrationsDir:e.migrationsDir});try{await R.promises.chmod(n,384)}catch(e){if(!wr(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 Ar=P.object({npmName:P.string(),version:P.string(),source:P.enum([`new`,`upgraded`,`already-present`])}),jr=P.object({npmName:P.string(),reason:P.string()}),Mr=P.object({success:P.boolean(),packageName:P.string(),version:P.string().optional(),restartRequired:P.boolean(),error:P.string().optional(),installed:P.array(Ar).optional(),skipped:P.array(jr).optional(),warnings:P.array(P.string()).optional()}),Nr=P.object({success:P.boolean(),packageName:P.string(),error:P.string().optional(),restartRequired:P.boolean()}),Pr=P.object({name:P.string(),version:P.string(),description:P.string().optional(),hasDescriptor:P.boolean().default(!1),serverImportPath:P.string().min(1).optional()}),Fr=P.object({packageName:P.string(),latestVersion:P.string(),success:P.boolean(),error:P.string().optional()}),Ir=P.object({name:P.string(),displayName:P.string(),description:P.string(),icon:P.string().optional(),tags:P.array(P.string()).optional(),descriptorName:P.string().min(1).optional()}),Lr=P.object({$schema:P.string(),updatedAt:P.string(),adapters:P.array(Ir),extensions:P.array(Ir)}),Rr=P.object({name:P.string(),currentVersion:P.string(),latestVersion:P.string(),description:P.string().optional()}),zr=et(`packages`,{list:{request:P.object({}),response:P.object({packages:P.array(Pr)})},install:{request:P.object({packageName:P.string().optional(),packageNames:P.array(P.string()).min(1).optional(),source:P.enum([`npm`,`local`]).optional(),force:P.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:Mr},uninstall:{request:P.object({packageName:P.string()}),response:Nr},getLatestVersion:{request:P.object({packageName:P.string()}),response:Fr},getRegistry:{request:P.object({}),response:Lr},checkUpdates:{request:P.object({}),response:P.object({updates:P.array(Rr)})},installed:P.object({packageName:P.string(),version:P.string()}),uninstalled:P.object({packageName:P.string()})}),H=zr.subjects;async function Br(e,t,n){if(!I.isAbsolute(e))return;let r;try{r=await F.realpath(e)}catch{return}let i=Vr(t,n),a=[I.resolve(r,`src`,`${i}.ts`),I.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await Hr(e);if(t!==void 0&&Ur(t,r))return t}}function Vr(e,t){return t===!0?e:t}async function Hr(e){try{return await F.realpath(e)}catch{return}}function Ur(e,t){let n=I.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!I.isAbsolute(n)}var Wr=class{extensionsDir;constructor(e){this.extensionsDir=I.resolve(e)}async install(e){try{let t=I.resolve(e.endsWith(`descriptor.json`)?I.dirname(e):e),n=await F.realpath(t),r=await this.readDescriptor(n);lt(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await F.mkdir(I.dirname(i),{recursive:!0});try{if((await F.lstat(i)).isSymbolicLink())await F.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 F.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 F.unlink(t),e.startsWith(`@`)){let e=I.dirname(t);(await F.readdir(e).catch(()=>null))?.length===0&&await F.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 F.access(this.extensionsDir)}catch{return[]}let e=await F.readdir(this.extensionsDir),t=[];for(let n of e){let e=I.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await F.readdir(e).catch(()=>[]);for(let r of n){let n=I.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 F.lstat(e)).isSymbolicLink())return null;let t=await F.readlink(e),n=await F.realpath(I.resolve(I.dirname(e),t)),r=I.join(n,`descriptor.json`),i=await F.readFile(r,`utf-8`),a=dt(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await Br(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=I.join(e,`descriptor.json`),n=await F.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=dt(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 Br(e,t,n)===void 0){let e=Vr(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=I.resolve(this.extensionsDir,...e.split(`/`)),n=I.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||I.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const Gr=`nodeLinker: node-modules`,Kr=/^[A-Za-z]:[\\/]/;let qr=null;function U(){return qr||(qr=Promise.all([import(`../lib-BmXBuE-w.mjs`).then(e=>t(e.t(),1)),import(`../lib-DF6sgNx_.mjs`).then(e=>t(e.t(),1)),import(`../lib-R-c_q77C.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})),qr)}var Jr=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await U(),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=$r(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 U(),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 U();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 U(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await U(),{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 U(),{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 U(),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=Zr(e);try{let{structUtils:e}=await U(),{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 Br(I.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=I.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await F.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||ei(e))return null;throw e}let r=dt(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=I.join(this.makaioHome,`package.json`),t;try{let n=await F.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(ei(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=I.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await F.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=I.join(this.makaioHome,`package.json`),t=await F.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=I.join(this.makaioHome,`package.json`);await F.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 U(),{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 Yr(e,t){return!t||t===`latest`?e:`${e}@${t}`}function Xr(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 Zr(e){return e.localPackagePath?`portal:${Qr(e.localPackagePath)}`:e.versionRange}function Qr(e){let t=(Kr.test(e)?e:I.resolve(e)).replace(/\\/g,`/`);return Kr.test(t)?`/${t}`:t}function $r(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,Gr):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
|
|
2
2
|
`:``}${Gr}\n`}return`${r.join(`
|
|
3
3
|
`).trimEnd()}\n`}function ei(e){if(typeof e!=`object`||!e||!(`code`in e))return!1;let t=e.code;return t===`ENOENT`||t===`ENOTDIR`}function ti(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(`.`)||I.isAbsolute(e)||I.win32.isAbsolute(e)||t?{kind:`local`,raw:e,resolved:t?I.resolve(Wt.homedir(),e===`~`?`.`:e.slice(2)):I.resolve(e)}:{kind:`npm`,raw:e,resolved:e}}var ni=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: ${ai(e)}`)}throw e}}async runBfs(e,t){let n=await this.readInstalledIndex(),r=e.map(e=>{let t=ii(e),n=ri(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=Yr(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||pt(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&&!pt(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 ri(e){return e.startsWith(`@`)?void 0:e}function ii(e){let t=Xr(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 ai(e){return e instanceof Error?e.message:String(e)}var oi=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}},si=class{inner;portalMap;constructor(e,t){this.inner=e,this.portalMap=t}async installPackage(e){let t=Xr(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)}},ci=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=Lr.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}},li=t(r(),1),ui=`1.0.0`;function di(){let e=ui;if(typeof e!=`string`||e.length===0)throw Error(`Package manager package metadata must include a string version.`);return`^${e}`}const fi=di();var pi=class extends Dt{yarnManager;registryService;localInstaller;dependencyResolver;frameworkPeerRange;frameworkPackagePath;constructor(e,t,n={}){super(e),this.yarnManager=n.yarnManager??new Jr(t),this.registryService=n.registryService??new ci,this.localInstaller=n.localInstaller??new Wr(I.join(t,`extensions`)),this.frameworkPeerRange=n.frameworkPeerRange??fi,this.frameworkPackagePath=n.frameworkPackagePath;let r=n.devPortalPackages?.size?new si(this.yarnManager,n.devPortalPackages):this.yarnManager;this.dependencyResolver=n.dependencyResolver??new ni(r,new oi(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(H.installed,{packageName:e,version:t})}catch(e){console.error(`[PackageManagerService] installed emit failed:`,e)}}async emitUninstalled(e){try{await this.bus.emit(H.uninstalled,{packageName:e})}catch(e){console.error(`[PackageManagerService] uninstalled emit failed:`,e)}}registerPackageHandlers(){this.registerListHandler(),this.registerInstallHandler(),this.registerUninstallHandler()}registerListHandler(){this.registerHandler(H.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(H.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=>ti(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(H.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(H.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(H.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(H.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);li.valid(e.version)&&li.valid(n)&&li.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 mi(e={}){return{name:`makaio.package-manager`,displayName:`Package Manager`,version:`0.1.0`,critical:!0,namespaces:[zr],create:t=>new pi(t.bus,t.makaioHome,{registryService:e.registryService,dependencyResolver:e.dependencyResolver,frameworkPeerRange:e.frameworkPeerRange,frameworkPackagePath:e.frameworkPackagePath,devPortalPackages:e.devPortalPackages})}}function hi(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 gi={resolve(e,t){return!e&&!t?null:e?t?e.updatedAt>t.updatedAt?e:t:e:t}};function _i(e){return{scope:e.scope,surface:e.surface??`any`,context:e.context??`any`,viewport:e.viewport??`any`}}function vi(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 yi(e,t){return[`makaio:prefs`,e.scope,e.surface||`any`,e.context||`any`,e.viewport||`any`,t].join(`:`)}function bi(e){return typeof e==`object`&&!!e&&`value`in e&&`updatedAt`in e&&typeof e.value==`string`&&typeof e.updatedAt==`number`}function xi(e){try{let t=JSON.parse(e);return bi(t)?t:{value:JSON.stringify(t),updatedAt:0}}catch{return null}}const Si=Mt(`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=>[Ot(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)],postgres:e=>[kt(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)]}),Ci=Si.sqlite,wi=Si.postgres,Ti=jt({preferences:Ci},{preferences:wi});function Ei(e,t,n){let r=[];return n!==void 0&&r.push(z(e.category,n)),t&&(t.scope!==void 0&&r.push(z(e.scope,t.scope)),t.surface!==void 0&&r.push(z(e.surface,t.surface)),t.context!==void 0&&r.push(z(e.context,t.context)),t.viewport!==void 0&&r.push(z(e.viewport,t.viewport))),r}async function Di(e,t,n){let{preferences:r}=zt(e,Ti),i=Ei(r,t,n);return(i.length>0?await e.select().from(r).where(Ht(...i)):await e.select().from(r)).map(e=>{let t;try{t=JSON.parse(e.value)}catch{t=null}let n=Rn.safeParse(t);return{key:vi(e),category:e.category,value:n.success?n.data:null,updatedAt:e.updatedAt}})}async function Oi(e,t,n){let{preferences:r}=zt(e,Ti),i=_i(t),[a]=await e.select().from(r).where(Ht(z(r.scope,i.scope),z(r.surface,i.surface),z(r.context,i.context),z(r.viewport,i.viewport),z(r.category,n))).limit(1);return a}var ki=class{db;conflictResolver;constructor(e){this.db=e.db,this.conflictResolver=e.conflictResolver??gi}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=Rn.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 Di(this.db,e,t)}async writeToDb(e,t,n,r){let{preferences:i}=zt(this.db,Ti),a=_i(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=yi(e,t),r=globalThis.localStorage?.getItem(n);return r?xi(r):null}writeToLocalStorage(e,t,n){let r=yi(e,t);try{globalThis.localStorage?.setItem(r,JSON.stringify(n))}catch(e){console.warn(`[StorageCoordinator] localStorage write failed:`,e)}}removeFromLocalStorage(e,t){let n=yi(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 Oi(this.db,e,t);return n?{value:n.value,updatedAt:n.updatedAt}:null}async deleteFromDb(e,t){let{preferences:n}=zt(this.db,Ti),r=_i(e);await this.db.delete(n).where(Ht(z(n.scope,r.scope),z(n.surface,r.surface),z(n.context,r.context),z(n.viewport,r.viewport),z(n.category,t)))}};function Ai(e,t,n){let r=new ki({db:t}),i=e.on(zn.get,async e=>{let{key:t,category:n}=e.payload,i=await r.get(t,n);e.setResult({value:i})}),a=e.on(zn.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(zn.delete,async e=>{let{key:t,category:n}=e.payload;await r.delete(t,n),e.setResult({success:!0})}),s=e.on(zn.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 ji={name:`preferences-storage`,displayName:`Preferences Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:Lt(Ai)}};function Mi(e,t){let n=new Map;for(let[r,i]of e)t.has(r)&&n.set(r,i);return n}function Ni(...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 Pi(e,t){let n=[e.on(it.get,async e=>{let n=await t.getConfig();e.setResult({config:n})}),e.on(it.update,async e=>{let n=rt.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 W=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})),Fi=n((e=>{var t=W();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})),Ii=n((e=>{var t=W(),n=Fi();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(`
|