@makaio/framework 1.0.0-dev-1783973359164 → 1.0.0-dev-1783975608971
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/{account-identity-BYfeWLe-.mjs → account-identity-CP4DC0DL.mjs} +1 -1
- package/dist/{adapter-nl_xz9dz.mjs → adapter-B9vVBwli.mjs} +1 -1
- package/dist/adapters/node.mjs +1 -1
- package/dist/bus/index.mjs +1 -1
- package/dist/{client-BkpLM8Fx.mjs → client-CzPCSeyE.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +1 -1
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +1 -1
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +1 -1
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +22 -22
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/workflow/index.d.mts +1 -1
- package/dist/{extension-D4iKUUMG.mjs → extension-Cgg45Xk1.mjs} +1 -1
- package/dist/git/index.mjs +8 -8
- package/dist/{index-C2C1qH1Y.d.mts → index-BH145jWk.d.mts} +4 -4
- package/dist/{index-CtjLeK1F.d.mts → index-BORQLrT7.d.mts} +1 -1
- package/dist/{index-DNkR5yTY.d.mts → index-CCX4veeR.d.mts} +29 -29
- package/dist/{index-COC9jCdc.d.mts → index-CMTNBuo6.d.mts} +16 -16
- package/dist/{index-CVs0Qxks.d.mts → index-CSxfU0tB.d.mts} +4 -4
- package/dist/{index-Cx8jGKOs.d.mts → index-ChSwb11f.d.mts} +4 -4
- package/dist/{index-Lp0T_V1W.d.mts → index-CidZvQ-c.d.mts} +3 -3
- package/dist/{index-BKZAAWo2.d.mts → index-Cq6rXKae.d.mts} +88 -88
- package/dist/{index-x2gFj3BK.d.mts → index-DMQlLz2W.d.mts} +9 -9
- package/dist/{index-BDr2Ba122.d.mts → index-MTvmxwiu2.d.mts} +1 -1
- package/dist/{index-ButbwvVY.d.mts → index-kqxUXYe7.d.mts} +6 -6
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/{lib-DymjnkAP.mjs → lib-DktBDEoY.mjs} +1 -1
- package/dist/{namespace-B0uZIZYT.d.mts → namespace-TLkZRkcU.d.mts} +20 -20
- package/dist/{namespace-CCZXyxSe.d.mts → namespace-dgNmx9g3.d.mts} +27 -27
- package/dist/{native-session-supervisor-CdtVGWA9.mjs → native-session-supervisor-Bgz-Q1WH.mjs} +1 -1
- package/dist/package.json +1 -1
- package/dist/{profile-D2m94ZYD.mjs → profile-BRi6K6am.mjs} +1 -1
- package/dist/runtime-node/index.mjs +1 -1
- package/dist/{schema-aOwmHxaF.d.mts → schema-CxN7d_MU.d.mts} +1 -1
- package/dist/{schemas-CoJCTFod2.d.mts → schemas-CIO03KSD2.d.mts} +8 -8
- package/dist/{schemas-n9Ff6_RX.mjs → schemas-DyJHJ8Pm.mjs} +1 -1
- package/dist/semver-D3Y7uMEb.mjs +1 -0
- package/dist/services/context-rules/index.d.mts +3 -3
- package/dist/services/execution-target/index.d.mts +1 -1
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +13 -13
- package/dist/services/session/index.d.mts +4 -4
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/settings/namespace.d.mts +8 -8
- package/dist/services/subagent-template/index.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/{session-lRd8HZNZ.mjs → session-BxWogVkD.mjs} +1 -1
- package/dist/{session-lineage-YShrn77v.d.mts → session-lineage-BLw8iWAj.d.mts} +1 -1
- package/dist/{types-BaDYigzD.d.mts → types-DQsYUZwa.d.mts} +34 -34
- package/dist/ui-components/index.d.mts +4 -4
- package/dist/{version-C1-VD-XL.mjs → version-BbWrAPld.mjs} +1 -1
- package/dist/workflow-engine/index.d.mts +23 -23
- package/package.json +2 -2
- package/dist/semver-BccS1s9R.mjs +0 -1
|
@@ -546,8 +546,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
546
546
|
kind: _$zod.ZodEnum<{
|
|
547
547
|
fork: "fork";
|
|
548
548
|
subagent: "subagent";
|
|
549
|
-
branch: "branch";
|
|
550
549
|
compress: "compress";
|
|
550
|
+
branch: "branch";
|
|
551
551
|
rewrite: "rewrite";
|
|
552
552
|
coordinator: "coordinator";
|
|
553
553
|
aside: "aside";
|
|
@@ -583,8 +583,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
583
583
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
584
584
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
585
585
|
intent: _$zod.ZodEnum<{
|
|
586
|
-
fork: "fork";
|
|
587
586
|
resume: "resume";
|
|
587
|
+
fork: "fork";
|
|
588
588
|
}>;
|
|
589
589
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
590
590
|
reason: _$zod.ZodEnum<{
|
|
@@ -608,8 +608,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
608
608
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
609
609
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
610
610
|
intent: _$zod.ZodEnum<{
|
|
611
|
-
fork: "fork";
|
|
612
611
|
resume: "resume";
|
|
612
|
+
fork: "fork";
|
|
613
613
|
}>;
|
|
614
614
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
615
615
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -925,8 +925,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
925
925
|
kind: _$zod.ZodEnum<{
|
|
926
926
|
fork: "fork";
|
|
927
927
|
subagent: "subagent";
|
|
928
|
-
branch: "branch";
|
|
929
928
|
compress: "compress";
|
|
929
|
+
branch: "branch";
|
|
930
930
|
rewrite: "rewrite";
|
|
931
931
|
coordinator: "coordinator";
|
|
932
932
|
aside: "aside";
|
|
@@ -962,8 +962,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
962
962
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
963
963
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
964
964
|
intent: _$zod.ZodEnum<{
|
|
965
|
-
fork: "fork";
|
|
966
965
|
resume: "resume";
|
|
966
|
+
fork: "fork";
|
|
967
967
|
}>;
|
|
968
968
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
969
969
|
reason: _$zod.ZodEnum<{
|
|
@@ -987,8 +987,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
987
987
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
988
988
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
989
989
|
intent: _$zod.ZodEnum<{
|
|
990
|
-
fork: "fork";
|
|
991
990
|
resume: "resume";
|
|
991
|
+
fork: "fork";
|
|
992
992
|
}>;
|
|
993
993
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
994
994
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -1294,8 +1294,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
1294
1294
|
kind: _$zod.ZodEnum<{
|
|
1295
1295
|
fork: "fork";
|
|
1296
1296
|
subagent: "subagent";
|
|
1297
|
-
branch: "branch";
|
|
1298
1297
|
compress: "compress";
|
|
1298
|
+
branch: "branch";
|
|
1299
1299
|
rewrite: "rewrite";
|
|
1300
1300
|
coordinator: "coordinator";
|
|
1301
1301
|
aside: "aside";
|
|
@@ -1331,8 +1331,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
1331
1331
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
1332
1332
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
1333
1333
|
intent: _$zod.ZodEnum<{
|
|
1334
|
-
fork: "fork";
|
|
1335
1334
|
resume: "resume";
|
|
1335
|
+
fork: "fork";
|
|
1336
1336
|
}>;
|
|
1337
1337
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
1338
1338
|
reason: _$zod.ZodEnum<{
|
|
@@ -1356,8 +1356,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
1356
1356
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
1357
1357
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
1358
1358
|
intent: _$zod.ZodEnum<{
|
|
1359
|
-
fork: "fork";
|
|
1360
1359
|
resume: "resume";
|
|
1360
|
+
fork: "fork";
|
|
1361
1361
|
}>;
|
|
1362
1362
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
1363
1363
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -1671,8 +1671,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
1671
1671
|
kind: _$zod.ZodEnum<{
|
|
1672
1672
|
fork: "fork";
|
|
1673
1673
|
subagent: "subagent";
|
|
1674
|
-
branch: "branch";
|
|
1675
1674
|
compress: "compress";
|
|
1675
|
+
branch: "branch";
|
|
1676
1676
|
rewrite: "rewrite";
|
|
1677
1677
|
coordinator: "coordinator";
|
|
1678
1678
|
aside: "aside";
|
|
@@ -1708,8 +1708,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
1708
1708
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
1709
1709
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
1710
1710
|
intent: _$zod.ZodEnum<{
|
|
1711
|
-
fork: "fork";
|
|
1712
1711
|
resume: "resume";
|
|
1712
|
+
fork: "fork";
|
|
1713
1713
|
}>;
|
|
1714
1714
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
1715
1715
|
reason: _$zod.ZodEnum<{
|
|
@@ -1733,8 +1733,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
1733
1733
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
1734
1734
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
1735
1735
|
intent: _$zod.ZodEnum<{
|
|
1736
|
-
fork: "fork";
|
|
1737
1736
|
resume: "resume";
|
|
1737
|
+
fork: "fork";
|
|
1738
1738
|
}>;
|
|
1739
1739
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
1740
1740
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -2036,8 +2036,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2036
2036
|
kind: _$zod.ZodEnum<{
|
|
2037
2037
|
fork: "fork";
|
|
2038
2038
|
subagent: "subagent";
|
|
2039
|
-
branch: "branch";
|
|
2040
2039
|
compress: "compress";
|
|
2040
|
+
branch: "branch";
|
|
2041
2041
|
rewrite: "rewrite";
|
|
2042
2042
|
coordinator: "coordinator";
|
|
2043
2043
|
aside: "aside";
|
|
@@ -2073,8 +2073,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2073
2073
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
2074
2074
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
2075
2075
|
intent: _$zod.ZodEnum<{
|
|
2076
|
-
fork: "fork";
|
|
2077
2076
|
resume: "resume";
|
|
2077
|
+
fork: "fork";
|
|
2078
2078
|
}>;
|
|
2079
2079
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
2080
2080
|
reason: _$zod.ZodEnum<{
|
|
@@ -2098,8 +2098,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2098
2098
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
2099
2099
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
2100
2100
|
intent: _$zod.ZodEnum<{
|
|
2101
|
-
fork: "fork";
|
|
2102
2101
|
resume: "resume";
|
|
2102
|
+
fork: "fork";
|
|
2103
2103
|
}>;
|
|
2104
2104
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
2105
2105
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -2415,8 +2415,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2415
2415
|
kind: _$zod.ZodEnum<{
|
|
2416
2416
|
fork: "fork";
|
|
2417
2417
|
subagent: "subagent";
|
|
2418
|
-
branch: "branch";
|
|
2419
2418
|
compress: "compress";
|
|
2419
|
+
branch: "branch";
|
|
2420
2420
|
rewrite: "rewrite";
|
|
2421
2421
|
coordinator: "coordinator";
|
|
2422
2422
|
aside: "aside";
|
|
@@ -2452,8 +2452,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2452
2452
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
2453
2453
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
2454
2454
|
intent: _$zod.ZodEnum<{
|
|
2455
|
-
fork: "fork";
|
|
2456
2455
|
resume: "resume";
|
|
2456
|
+
fork: "fork";
|
|
2457
2457
|
}>;
|
|
2458
2458
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
2459
2459
|
reason: _$zod.ZodEnum<{
|
|
@@ -2477,8 +2477,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2477
2477
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
2478
2478
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
2479
2479
|
intent: _$zod.ZodEnum<{
|
|
2480
|
-
fork: "fork";
|
|
2481
2480
|
resume: "resume";
|
|
2481
|
+
fork: "fork";
|
|
2482
2482
|
}>;
|
|
2483
2483
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
2484
2484
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -2784,8 +2784,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2784
2784
|
kind: _$zod.ZodEnum<{
|
|
2785
2785
|
fork: "fork";
|
|
2786
2786
|
subagent: "subagent";
|
|
2787
|
-
branch: "branch";
|
|
2788
2787
|
compress: "compress";
|
|
2788
|
+
branch: "branch";
|
|
2789
2789
|
rewrite: "rewrite";
|
|
2790
2790
|
coordinator: "coordinator";
|
|
2791
2791
|
aside: "aside";
|
|
@@ -2821,8 +2821,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2821
2821
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
2822
2822
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
2823
2823
|
intent: _$zod.ZodEnum<{
|
|
2824
|
-
fork: "fork";
|
|
2825
2824
|
resume: "resume";
|
|
2825
|
+
fork: "fork";
|
|
2826
2826
|
}>;
|
|
2827
2827
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
2828
2828
|
reason: _$zod.ZodEnum<{
|
|
@@ -2846,8 +2846,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
2846
2846
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
2847
2847
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
2848
2848
|
intent: _$zod.ZodEnum<{
|
|
2849
|
-
fork: "fork";
|
|
2850
2849
|
resume: "resume";
|
|
2850
|
+
fork: "fork";
|
|
2851
2851
|
}>;
|
|
2852
2852
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
2853
2853
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -3161,8 +3161,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
3161
3161
|
kind: _$zod.ZodEnum<{
|
|
3162
3162
|
fork: "fork";
|
|
3163
3163
|
subagent: "subagent";
|
|
3164
|
-
branch: "branch";
|
|
3165
3164
|
compress: "compress";
|
|
3165
|
+
branch: "branch";
|
|
3166
3166
|
rewrite: "rewrite";
|
|
3167
3167
|
coordinator: "coordinator";
|
|
3168
3168
|
aside: "aside";
|
|
@@ -3198,8 +3198,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
3198
3198
|
type: _$zod.ZodLiteral<"locality.degraded">;
|
|
3199
3199
|
payload: _$zod.ZodDiscriminatedUnion<[_$zod.ZodObject<{
|
|
3200
3200
|
intent: _$zod.ZodEnum<{
|
|
3201
|
-
fork: "fork";
|
|
3202
3201
|
resume: "resume";
|
|
3202
|
+
fork: "fork";
|
|
3203
3203
|
}>;
|
|
3204
3204
|
verdictKind: _$zod.ZodLiteral<"degrade">;
|
|
3205
3205
|
reason: _$zod.ZodEnum<{
|
|
@@ -3223,8 +3223,8 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
3223
3223
|
turnId: _$zod.ZodOptional<_$zod.ZodString>;
|
|
3224
3224
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
3225
3225
|
intent: _$zod.ZodEnum<{
|
|
3226
|
-
fork: "fork";
|
|
3227
3226
|
resume: "resume";
|
|
3227
|
+
fork: "fork";
|
|
3228
3228
|
}>;
|
|
3229
3229
|
verdictKind: _$zod.ZodLiteral<"foreign">;
|
|
3230
3230
|
foreignMachineId: _$zod.ZodString;
|
|
@@ -3480,7 +3480,7 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
3480
3480
|
payload: {
|
|
3481
3481
|
childSessionId: string;
|
|
3482
3482
|
parentSessionId: string;
|
|
3483
|
-
kind: "fork" | "subagent" | "
|
|
3483
|
+
kind: "fork" | "subagent" | "compress" | "branch" | "rewrite" | "coordinator" | "aside";
|
|
3484
3484
|
forkPointMessageId?: string | undefined;
|
|
3485
3485
|
};
|
|
3486
3486
|
} | {
|
|
@@ -3511,14 +3511,14 @@ declare const SessionEventStorageNamespace$1: {
|
|
|
3511
3511
|
timestamp: number;
|
|
3512
3512
|
type: "locality.degraded";
|
|
3513
3513
|
payload: {
|
|
3514
|
-
intent: "
|
|
3514
|
+
intent: "resume" | "fork";
|
|
3515
3515
|
verdictKind: "degrade";
|
|
3516
3516
|
reason: "adapter-unsupported" | "adapter-mismatch" | "no-adapter-session" | "missing-machine-id" | "machine-mismatch" | "cwd-mismatch" | "transforms-present" | "compression-present" | "connector-swap" | "mid-history-unsupported" | "hybrid-imported-orchestrated" | "native-attempt-failed" | "agent-already-started" | "fork-point-unresolvable";
|
|
3517
3517
|
agentId?: string | undefined;
|
|
3518
3518
|
adapterId?: string | undefined;
|
|
3519
3519
|
turnId?: string | undefined;
|
|
3520
3520
|
} | {
|
|
3521
|
-
intent: "
|
|
3521
|
+
intent: "resume" | "fork";
|
|
3522
3522
|
verdictKind: "foreign";
|
|
3523
3523
|
foreignMachineId: string;
|
|
3524
3524
|
agentId?: string | undefined;
|
package/dist/{native-session-supervisor-CdtVGWA9.mjs → native-session-supervisor-Bgz-Q1WH.mjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./profile-
|
|
1
|
+
import{r as e}from"./profile-BRi6K6am.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=t.enum([`running`,`stopped`,`exited`,`unknown`]),i={request:t.object({clientId:t.string(),cwd:t.string(),command:t.string(),args:t.array(t.string()),env:t.record(t.string(),t.string()).optional(),sessionId:t.string().optional(),clientProfileName:e.optional(),adapterSessionId:t.string().optional(),metadata:t.record(t.string(),t.unknown()).optional()}),response:t.object({supervisorSessionId:t.string(),pid:t.number().int().positive()})},a={request:t.union([t.object({supervisorSessionId:t.string()}).strict(),t.object({sessionId:t.string()}).strict(),t.object({adapterSessionId:t.string()}).strict()]),response:t.object({success:t.boolean(),supervisorSessionId:t.string().optional(),pid:t.number().int().positive().optional(),terminalAttachment:t.object({canAttach:t.boolean()}).optional()})},o={request:t.object({supervisorSessionId:t.string(),signal:t.string().optional()}),response:t.object({success:t.boolean()})},s=t.object({supervisorSessionId:t.string(),clientId:t.string(),pid:t.number().int().positive().nullable(),status:r,cwd:t.string(),sessionId:t.string().optional(),adapterSessionId:t.string().optional(),startedAt:t.number().int().nonnegative(),stoppedAt:t.number().int().nonnegative().optional()}),c={request:t.union([t.object({}).strict(),t.object({supervisorSessionId:t.string()}).strict(),t.object({sessionId:t.string()}).strict(),t.object({adapterSessionId:t.string()}).strict()]),response:t.object({runtimes:t.array(s)})},l={launch:i,attach:a,stop:o,status:c},u=n(`native-session-supervisor`,l),d=u.subjects;export{i as a,s as c,a as i,r as l,d as n,c as o,l as r,o as s,u as t};
|
package/dist/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./version-
|
|
1
|
+
import{t as e}from"./version-BbWrAPld.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,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-BccS1s9R.mjs";import{a as i,c as a,d as o,f as s,i as c,l,n as u,p as d,s as f,t as p,u as m}from"../workflow-worker-BEFjCccX.mjs";import{createNodeClientBinaryStrategyDependencies as h}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as g,RuntimeSubjects as _}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as v,FilesystemDescriptorDiscovery as y,MergedDescriptorDiscovery as b}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as x,MAKAIO_HOME_ENV as S,buildConfiguredRuntimeOptions as C,createMakaioConfigDiscovery as w,defineMakaioConfig as T,loadMakaioConfig as E,parseMakaioConfig as ee,resolveMakaioConfigPath as te,resolveMakaioHome as D,shouldIncludeExtension as ne}from"./makaio-config.mjs";import{t as O}from"../descriptor-to-package-Rs-OjOQU.mjs";import{a as re,c as ie,i as ae,n as k,o as oe,r as se,s as ce,t as le}from"../load-extensions-nqL5WAKj.mjs";import{createRequire as ue}from"node:module";import{z as A}from"zod";import{execFile as de}from"node:child_process";import{promisify as j}from"node:util";import{fileURLToPath as fe,pathToFileURL as pe}from"node:url";import*as M from"node:fs/promises";import*as N from"node:path";import P from"node:path";import*as me from"node:crypto";import{createHash as he}from"node:crypto";import*as F from"node:fs";import{existsSync as ge,readFileSync as _e}from"node:fs";import{createBusNamespace as ve}from"@makaio/framework/core";import{ChannelClosedError as ye,MakaioBus as be,openChannel as xe,projectSubjectTelemetryFacts as Se}from"@makaio/framework/bus";import{AIModelSchema as Ce,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as we,ConfigSchema as I,ConfigSubjects as Te,CredentialSubjects as Ee,FrameworkContractNamespaces as De,FrameworkStorageNamespaces as Oe,SubjectTelemetrySubjects as ke,isDetachedDescriptor as Ae,registerWorkerNodeProvider as je,safeParseExtensionDescriptor as Me,unregisterWorkerNodeProvider as Ne,versionSatisfies as Pe}from"@makaio/framework/contracts";import{DispatchingAuth as Fe,E2EAuth as Ie,HmacAuth as Le,WebSocketClientTransport as Re}from"@makaio/framework/node/transports";import{BaseService as ze}from"@makaio/framework/service-base";import{uniqueIndex as Be}from"drizzle-orm/sqlite-core";import{uniqueIndex as Ve}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as He,defineDialectSchema as Ue,defineDualTable as We,findStorageEngine as Ge,getDatabaseDialect as Ke,getRawSqlExecutor as qe,getStorageEngine as Je,registerDrizzleHandlers as Ye,registerStorageEngine as Xe,resolveSchema as Ze,resolveStorageEngine as Qe,resolveStorageEngineForUrl as $e}from"@makaio/framework/storage/drizzle";import{and as et,eq as L,sql as R}from"drizzle-orm";import{parseStoredCredentialRef as tt}from"@makaio/framework/contracts/config";import*as nt from"node:os";import{ProviderStorageSubjects as rt}from"@makaio/framework/services/settings/storage";import{isRecord as it}from"@makaio/framework/utils";import{BootNamespace as at,ExtensionCoordinator as ot,ExtensionNamespace as st,KernelNamespace as ct,coalesceExtensionOverrides as lt,createShutdownSequence as ut,filterEligibleExtensions as dt}from"@makaio/framework/kernel";import{CachedRegistryFetcher as ft,FallbackRegistryFetcher as pt,ModelRegistrySchema as mt,ProviderModelOverrideSchema as ht,mergeModelMetadata as gt}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as _t}from"@makaio/framework/clients";import{createDatabaseClient as vt}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as yt,resolveAdapterRuntimeSnapshot as bt,resolveBoundProviderAuth as xt,resolveConnectorCredentials as St,resolveCredentialRef as Ct}from"@makaio/framework/adapters/config";import{DefinitionSubjects as wt}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as Tt}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as Et}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as Dt,FileAdapterConfigRepository as Ot}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as kt,loadOrCreateMachineIdentity as At,machineKeysExist as jt,validateMachineKeys as Mt}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as Nt}from"@makaio/framework/utils/workspace-root";import{Hono as Pt}from"hono";import{CliNamespace as Ft}from"@makaio/framework/kernel/cli";import{startBusServer as It}from"@makaio/framework/node/bus-server";import{WebSocketServer as Lt}from"ws";import{ConfigProvider as Rt}from"@makaio/framework/providers";import{KernelSubjects as z}from"@makaio/framework/kernel/namespace";import{FrameworkServicesCoreNamespaces as zt,SessionOrchestratorToken as Bt,createArtifactKindContributionProcessor as Vt,createArtifactLifecycleHookContributionProcessor as Ht,createFacetNamespaceContributionProcessor as Ut,createModelRegistryPackage as Wt,createSurfaceBindingContributionProcessor as Gt,createToolContributionProcessor as Kt,createTransitionContributionProcessor as qt,createWorkflowBlockContributionProcessor as Jt,frameworkCorePackages as Yt}from"@makaio/framework/services";import{createLogImportContributionProcessor as Xt,logImportRegistryPackage as Zt}from"@makaio/framework/services/log-import";import{createWorkflowEnginePackage as Qt}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as $t,PreferencesSubjects as en}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as tn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as nn}from"@hono/node-server/serve-static";var rn=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function an(e){let t=e.providerProtocol;if(t===void 0)throw new rn;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function on(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 sn(e,t){try{return t()}catch(t){try{on(e)}catch{}throw t}}function cn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function ln(e){let{$schema:t,...n}=e;return n}function un(e){let t=e.definition,n=Date.now();return{id:t.id,packageName:e.providerPackageName,name:t.name,description:t.description,endpoints:t.endpoints,defaultModel:t.defaultModel,fastModel:t.fastModel,availableModels:t.availableModels??[],defaultModelFilterMode:`show-all`,authMethods:t.authMethods,capabilities:t.capabilities,enabled:!0,createdAt:n,updatedAt:n}}function dn(e,t,n,r){let i=[];return sn(i,()=>(i.push(e.on(Et.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:A.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(wt.getConfigSchema,({payload:e,setResult:n})=>{let r=cn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:A.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(Et.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:ln(A.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(rt.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:un(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(rt.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(un(t)));e({providers:n})},{priority:-1})),i.push(e.on(Tt.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 bt(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof yt))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(Tt.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 bt(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=an(o),u=await xt(o.boundProviderAuth,t=>St(e,t));i({models:await c.fetchModels(l,u)})})),()=>{on(i)}))}function fn(e=`sqlite`){let{migrations:t}=Je(e);return t.resolveSourceChainDir?.()??P.resolve(import.meta.dirname,`..`,t.chainDirName)}var pn=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 mn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??fn(t),r=P.join(n,`meta`,`_journal.json`);if(!ge(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(_e(r,`utf-8`));if(t!==void 0){let e=Je(t).migrations.journalDialect;if(i.dialect!==e)throw new pn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=_e(P.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:he(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function hn(e){return e.replace(/--.*$/gm,``).trim()}async function gn(e,t){try{await e.run(R.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function _n(e){let{migrations:t}=e.engine;if(await e.session.run(R.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await gn(e.session,{migrationsTable:e.tableName}),t}}async function vn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await _n(e);try{await e.session.run(R.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(R`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(R.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await gn(e.session,{migrationsTable:e.tableName}),n}}async function yn(e,t){try{await e.session.run(R`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(R.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function bn(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(R`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(R.raw(`COMMIT`)),!0)}async function xn(e,t){await e.session.run(R.raw(`ROLLBACK`)),await _n(e),!await bn(e,t)&&await yn(e,t)}async function Sn(e,t){await _n(e);try{if(await bn(e,t))return;for(let[n,r]of t.sql.entries())if(hn(r))try{await e.session.run(R.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 xn(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 yn(e,t)}catch(n){throw await gn(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function Cn(e,t,n){let r=qe(e),i=Je(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:R.identifier(a)},r=await vn(n);for(let e of t)r.has(e.hash)||(await Sn(n,e),r.add(e.hash))})}async function wn(e,t={}){await Cn(e,mn({migrationsDir:t.migrationsDir,expectedDialect:Ke(e)})),await Qe(e).fts.provisionSearchIndex(e)}var Tn=class{configPath;constructor(e){this.configPath=N.join(e,`config.json`)}async getConfig(){try{let e=await M.readFile(this.configPath,`utf-8`);return I.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return I.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),I.parse({});throw e}}async saveConfig(e){let t=N.dirname(this.configPath);await M.mkdir(t,{recursive:!0}),await M.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await M.chmod(this.configPath,384)}};function En(e){try{let t=N.resolve(Nt(e),`static/model-registry.yaml`);return ge(t)?t:void 0}catch{return}}async function Dn(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 On(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 kn(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 An=[`extension`,`static-fallback`];function jn(e){let t=[];function n(e){let t=new Pt,n=[...e].sort((e,t)=>An.indexOf(e.phase)-An.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 Mn(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function Nn(e,t){return(n,r,i)=>{if(!Mn(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var Pn=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 Fe?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 Lt({noServer:!0});this.websocketServer=t;let n=Nn(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await It({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)}},Fn=class extends Rt{keysDir;constructor(e,t){super(e),this.keysDir=N.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 me.randomBytes(32).toString(`base64`)}async getMachineId(){return(await At(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function In(e,t){return{extensions:e.discovery??new y(void 0,{extensionsDir:P.join(t,`extensions`),nodeModulesDir:P.join(t,`node_modules`)})}}function Ln(e){return ge(P.join(e,`meta`,`_journal.json`))}function Rn(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=fn}=t,i=Je(e).migrations.chainDirName,a=[],o=P.resolve(n,`..`,i);if(Ln(o))return o;a.push(o);try{let t=r(e);if(Ln(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 zn(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Bn(e){return e===void 0||e.trim()===``?void 0:e}function Vn(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 Hn(e,t,n){let r;try{r=await import(pe(ue(N.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.`);Ge(e.dialect)===void 0&&Xe(i)}async function Un(e){let t=Bn(e.database?.url),n=t??Bn(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=$e(n);if(i.kind===`missing-engine`&&(await Hn(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=$e(n)),i.kind!==`engine`){let e=He.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Vn(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=N.resolve(Bn(e.dbPath)??Bn(process.env.MAKAIO_DATABASE_PATH)??N.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:pe(r).href}}async function Wn(e){for(let t of e.database?.engines??[])Xe(t);let t=await Un(e);if(t.kind===`url`){let n=await vt({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Rn(t.dialect);return await wn(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=N.dirname(n);await F.promises.mkdir(r,{recursive:!0});let i=await vt({url:t.url});try{await wn(i.db,{migrationsDir:e.migrationsDir});try{await F.promises.chmod(n,384)}catch(e){if(!zn(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 Gn=A.object({npmName:A.string(),version:A.string(),source:A.enum([`new`,`upgraded`,`already-present`])}),Kn=A.object({npmName:A.string(),reason:A.string()}),qn=A.object({success:A.boolean(),packageName:A.string(),version:A.string().optional(),restartRequired:A.boolean(),error:A.string().optional(),installed:A.array(Gn).optional(),skipped:A.array(Kn).optional(),warnings:A.array(A.string()).optional()}),Jn=A.object({success:A.boolean(),packageName:A.string(),error:A.string().optional(),restartRequired:A.boolean()}),Yn=A.object({name:A.string(),version:A.string(),description:A.string().optional(),hasDescriptor:A.boolean().default(!1),serverImportPath:A.string().min(1).optional()}),Xn=A.object({packageName:A.string(),latestVersion:A.string(),success:A.boolean(),error:A.string().optional()}),Zn=A.object({name:A.string(),displayName:A.string(),description:A.string(),icon:A.string().optional(),tags:A.array(A.string()).optional(),descriptorName:A.string().min(1).optional()}),Qn=A.object({$schema:A.string(),updatedAt:A.string(),adapters:A.array(Zn),extensions:A.array(Zn)}),$n=A.object({name:A.string(),currentVersion:A.string(),latestVersion:A.string(),description:A.string().optional()}),er=ve(`packages`,{list:{request:A.object({}),response:A.object({packages:A.array(Yn)})},install:{request:A.object({packageName:A.string().optional(),packageNames:A.array(A.string()).min(1).optional(),source:A.enum([`npm`,`local`]).optional(),force:A.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:qn},uninstall:{request:A.object({packageName:A.string()}),response:Jn},getLatestVersion:{request:A.object({packageName:A.string()}),response:Xn},getRegistry:{request:A.object({}),response:Qn},checkUpdates:{request:A.object({}),response:A.object({updates:A.array($n)})},installed:A.object({packageName:A.string(),version:A.string()}),uninstalled:A.object({packageName:A.string()})}),B=er.subjects;async function tr(e,t,n){if(!N.isAbsolute(e))return;let r;try{r=await M.realpath(e)}catch{return}let i=nr(t,n),a=[N.resolve(r,`src`,`${i}.ts`),N.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await rr(e);if(t!==void 0&&ir(t,r))return t}}function nr(e,t){return t===!0?e:t}async function rr(e){try{return await M.realpath(e)}catch{return}}function ir(e,t){let n=N.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!N.isAbsolute(n)}var ar=class{extensionsDir;constructor(e){this.extensionsDir=N.resolve(e)}async install(e){try{let t=N.resolve(e.endsWith(`descriptor.json`)?N.dirname(e):e),n=await M.realpath(t),r=await this.readDescriptor(n);Ae(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await M.mkdir(N.dirname(i),{recursive:!0});try{if((await M.lstat(i)).isSymbolicLink())await M.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 M.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 M.unlink(t),e.startsWith(`@`)){let e=N.dirname(t);(await M.readdir(e).catch(()=>null))?.length===0&&await M.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 M.access(this.extensionsDir)}catch{return[]}let e=await M.readdir(this.extensionsDir),t=[];for(let n of e){let e=N.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await M.readdir(e).catch(()=>[]);for(let r of n){let n=N.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 M.lstat(e)).isSymbolicLink())return null;let t=await M.readlink(e),n=await M.realpath(N.resolve(N.dirname(e),t)),r=N.join(n,`descriptor.json`),i=await M.readFile(r,`utf-8`),a=Me(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await tr(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=N.join(e,`descriptor.json`),n=await M.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=Me(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 tr(e,t,n)===void 0){let e=nr(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=N.resolve(this.extensionsDir,...e.split(`/`)),n=N.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||N.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const or=`nodeLinker: node-modules`,sr=/^[A-Za-z]:[\\/]/;let cr=null;function V(){return cr||(cr=Promise.all([import(`../lib-DIVnpS8e.mjs`).then(e=>t(e.t(),1)),import(`../lib-ClRTNIuz.mjs`).then(e=>t(e.t(),1)),import(`../lib-DymjnkAP.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})),cr)}var lr=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await V(),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=mr(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 V(),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 V();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 V(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await V(),{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 V(),{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 V(),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=fr(e);try{let{structUtils:e}=await V(),{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 tr(N.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=N.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await M.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||hr(e))return null;throw e}let r=Me(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=N.join(this.makaioHome,`package.json`),t;try{let n=await M.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(hr(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=N.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await M.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=N.join(this.makaioHome,`package.json`),t=await M.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=N.join(this.makaioHome,`package.json`);await M.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 V(),{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 ur(e,t){return!t||t===`latest`?e:`${e}@${t}`}function dr(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 fr(e){return e.localPackagePath?`portal:${pr(e.localPackagePath)}`:e.versionRange}function pr(e){let t=(sr.test(e)?e:N.resolve(e)).replace(/\\/g,`/`);return sr.test(t)?`/${t}`:t}function mr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,or):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-D3Y7uMEb.mjs";import{a as i,c as a,d as o,f as s,i as c,l,n as u,p as d,s as f,t as p,u as m}from"../workflow-worker-BEFjCccX.mjs";import{createNodeClientBinaryStrategyDependencies as h}from"./client-binary-strategy-dependencies.mjs";import{RuntimeNamespace as g,RuntimeSubjects as _}from"./bus/runtime/namespace.mjs";import{ExplicitDescriptorDiscovery as v,FilesystemDescriptorDiscovery as y,MergedDescriptorDiscovery as b}from"./extension-discovery.mjs";import{MAKAIO_CONFIG_FILE_ENV as x,MAKAIO_HOME_ENV as S,buildConfiguredRuntimeOptions as C,createMakaioConfigDiscovery as w,defineMakaioConfig as T,loadMakaioConfig as E,parseMakaioConfig as ee,resolveMakaioConfigPath as te,resolveMakaioHome as D,shouldIncludeExtension as ne}from"./makaio-config.mjs";import{t as O}from"../descriptor-to-package-Rs-OjOQU.mjs";import{a as re,c as ie,i as ae,n as k,o as oe,r as se,s as ce,t as le}from"../load-extensions-nqL5WAKj.mjs";import{createRequire as ue}from"node:module";import{z as A}from"zod";import{execFile as de}from"node:child_process";import{promisify as j}from"node:util";import{fileURLToPath as fe,pathToFileURL as pe}from"node:url";import*as M from"node:fs/promises";import*as N from"node:path";import P from"node:path";import*as me from"node:crypto";import{createHash as he}from"node:crypto";import*as F from"node:fs";import{existsSync as ge,readFileSync as _e}from"node:fs";import{createBusNamespace as ve}from"@makaio/framework/core";import{ChannelClosedError as ye,MakaioBus as be,openChannel as xe,projectSubjectTelemetryFacts as Se}from"@makaio/framework/bus";import{AIModelSchema as Ce,BUILT_IN_THIN_WORKFLOW_PROVIDER_ID as we,ConfigSchema as I,ConfigSubjects as Te,CredentialSubjects as Ee,FrameworkContractNamespaces as De,FrameworkStorageNamespaces as Oe,SubjectTelemetrySubjects as ke,isDetachedDescriptor as Ae,registerWorkerNodeProvider as je,safeParseExtensionDescriptor as Me,unregisterWorkerNodeProvider as Ne,versionSatisfies as Pe}from"@makaio/framework/contracts";import{DispatchingAuth as Fe,E2EAuth as Ie,HmacAuth as Le,WebSocketClientTransport as Re}from"@makaio/framework/node/transports";import{BaseService as ze}from"@makaio/framework/service-base";import{uniqueIndex as Be}from"drizzle-orm/sqlite-core";import{uniqueIndex as Ve}from"drizzle-orm/pg-core";import{STORAGE_ENGINE_URL_HINTS as He,defineDialectSchema as Ue,defineDualTable as We,findStorageEngine as Ge,getDatabaseDialect as Ke,getRawSqlExecutor as qe,getStorageEngine as Je,registerDrizzleHandlers as Ye,registerStorageEngine as Xe,resolveSchema as Ze,resolveStorageEngine as Qe,resolveStorageEngineForUrl as $e}from"@makaio/framework/storage/drizzle";import{and as et,eq as L,sql as R}from"drizzle-orm";import{parseStoredCredentialRef as tt}from"@makaio/framework/contracts/config";import*as nt from"node:os";import{ProviderStorageSubjects as rt}from"@makaio/framework/services/settings/storage";import{isRecord as it}from"@makaio/framework/utils";import{BootNamespace as at,ExtensionCoordinator as ot,ExtensionNamespace as st,KernelNamespace as ct,coalesceExtensionOverrides as lt,createShutdownSequence as ut,filterEligibleExtensions as dt}from"@makaio/framework/kernel";import{CachedRegistryFetcher as ft,FallbackRegistryFetcher as pt,ModelRegistrySchema as mt,ProviderModelOverrideSchema as ht,mergeModelMetadata as gt}from"@makaio/framework/services/model-registry";import{createClientsCorePackage as _t}from"@makaio/framework/clients";import{createDatabaseClient as vt}from"@makaio/framework/storage/drizzle/client";import{AdapterRuntimeSnapshotError as yt,resolveAdapterRuntimeSnapshot as bt,resolveBoundProviderAuth as xt,resolveConnectorCredentials as St,resolveCredentialRef as Ct}from"@makaio/framework/adapters/config";import{DefinitionSubjects as wt}from"@makaio/framework/services/definition";import{ProviderRuntimeSubjects as Tt}from"@makaio/framework/services/provider-runtime";import{SettingsSubjects as Et}from"@makaio/framework/services/settings/namespace";import{AdapterSubsystemToken as Dt,FileAdapterConfigRepository as Ot}from"@makaio/framework/adapter-subsystem";import{loadOrCreateMachineIdentity as kt,loadOrCreateMachineIdentity as At,machineKeysExist as jt,validateMachineKeys as Mt}from"@makaio/framework/node/machine-identity";import{resolveWorkspaceRoot as Nt}from"@makaio/framework/utils/workspace-root";import{Hono as Pt}from"hono";import{CliNamespace as Ft}from"@makaio/framework/kernel/cli";import{startBusServer as It}from"@makaio/framework/node/bus-server";import{WebSocketServer as Lt}from"ws";import{ConfigProvider as Rt}from"@makaio/framework/providers";import{KernelSubjects as z}from"@makaio/framework/kernel/namespace";import{FrameworkServicesCoreNamespaces as zt,SessionOrchestratorToken as Bt,createArtifactKindContributionProcessor as Vt,createArtifactLifecycleHookContributionProcessor as Ht,createFacetNamespaceContributionProcessor as Ut,createModelRegistryPackage as Wt,createSurfaceBindingContributionProcessor as Gt,createToolContributionProcessor as Kt,createTransitionContributionProcessor as qt,createWorkflowBlockContributionProcessor as Jt,frameworkCorePackages as Yt}from"@makaio/framework/services";import{createLogImportContributionProcessor as Xt,logImportRegistryPackage as Zt}from"@makaio/framework/services/log-import";import{createWorkflowEnginePackage as Qt}from"@makaio/framework/workflow-engine/package";import{PreferenceValueSchema as $t,PreferencesSubjects as en}from"@makaio/framework/services/preferences";import{parseWorkspaceGlobs as tn}from"@makaio/framework/utils/workspace-packages";import{serveStatic as nn}from"@hono/node-server/serve-static";var rn=class extends Error{constructor(){super(`Live model discovery requires an adapter/provider protocol declaration.`),this.name=`ProviderModelFetchProtocolError`}};function an(e){let t=e.providerProtocol;if(t===void 0)throw new rn;return e.snapshot.context.endpointOverrides?.[t]??e.snapshot.definition.endpoints?.[t]}function on(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 sn(e,t){try{return t()}catch(t){try{on(e)}catch{}throw t}}function cn(e,t){for(let n of e){let e=n.providers.find(e=>e.definition.id===t);if(e)return e}}function ln(e){let{$schema:t,...n}=e;return n}function un(e){let t=e.definition,n=Date.now();return{id:t.id,packageName:e.providerPackageName,name:t.name,description:t.description,endpoints:t.endpoints,defaultModel:t.defaultModel,fastModel:t.fastModel,availableModels:t.availableModels??[],defaultModelFilterMode:`show-all`,authMethods:t.authMethods,capabilities:t.capabilities,enabled:!0,createdAt:n,updatedAt:n}}function dn(e,t,n,r){let i=[];return sn(i,()=>(i.push(e.on(Et.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:A.toJSONSchema(r.adapterConfigSchema)})})),i.push(e.on(wt.getConfigSchema,({payload:e,setResult:n})=>{let r=cn(t(),e.definitionId)?.configSchema;if(r){n({hasSchema:!0,schema:A.toJSONSchema(r)});return}n({hasSchema:!1,schema:null})})),r&&i.push(e.on(Et.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:ln(A.toJSONSchema(n.configSchema)),uiConfig:n.uiConfig??null})})),i.push(e.on(rt.get,({payload:e,setResult:n})=>{for(let r of t()){let t=r.providers.find(t=>t.definition.id===e.id);if(t){n({provider:un(t)});return}}n({provider:null})},{priority:-1})),i.push(e.on(rt.list,({setResult:e})=>{let n=[],r=new Set;for(let e of t())for(let t of e.providers)r.has(t.definition.id)||(r.add(t.definition.id),n.push(un(t)));e({providers:n})},{priority:-1})),i.push(e.on(Tt.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 bt(e,{adapterName:i.name,providerConfigId:r.providerConfigId}),a.push(i.name)}catch(e){if(!(e instanceof yt))throw e}}a.sort((e,t)=>e.localeCompare(t)),i({adapterNames:a})})),i.push(e.on(Tt.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 bt(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=an(o),u=await xt(o.boundProviderAuth,t=>St(e,t));i({models:await c.fetchModels(l,u)})})),()=>{on(i)}))}function fn(e=`sqlite`){let{migrations:t}=Je(e);return t.resolveSourceChainDir?.()??P.resolve(import.meta.dirname,`..`,t.chainDirName)}var pn=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 mn(e={}){let t=typeof e==`string`?void 0:e.expectedDialect,n=typeof e==`string`?e:e.migrationsDir??fn(t),r=P.join(n,`meta`,`_journal.json`);if(!ge(r))throw Error(`Cannot find migrations journal at ${r}`);let i=JSON.parse(_e(r,`utf-8`));if(t!==void 0){let e=Je(t).migrations.journalDialect;if(i.dialect!==e)throw new pn(t,e,i.dialect,r)}return i.entries.map(e=>{let t=_e(P.join(n,`${e.tag}.sql`),`utf-8`);return{tag:e.tag,sql:t.split(`--> statement-breakpoint`),folderMillis:e.when,hash:he(`sha256`).update(t).digest(`hex`),bps:e.breakpoints}})}function hn(e){return e.replace(/--.*$/gm,``).trim()}async function gn(e,t){try{await e.run(R.raw(`ROLLBACK`))}catch(e){console.error(`[storage-migrations] Failed to roll back migration transaction`,{...t,rollbackError:e})}}async function _n(e){let{migrations:t}=e.engine;if(await e.session.run(R.raw(t.beginTransactionStatement)),t.acquireTransactionLock)try{await t.acquireTransactionLock(e.session,e.tableName)}catch(t){throw await gn(e.session,{migrationsTable:e.tableName}),t}}async function vn(e){let t=e.engine.migrations.acquireTransactionLock!==void 0;t&&await _n(e);try{await e.session.run(R.raw(e.engine.migrations.buildLedgerDdl(e.tableName)));let n=await e.session.all(R`SELECT hash FROM ${e.tableId}`);return t&&await e.session.run(R.raw(`COMMIT`)),new Set(n.map(e=>e.hash))}catch(n){throw t&&await gn(e.session,{migrationsTable:e.tableName}),n}}async function yn(e,t){try{await e.session.run(R`INSERT INTO ${e.tableId} ("hash", "created_at") VALUES (${t.hash}, ${t.folderMillis})`),await e.session.run(R.raw(`COMMIT`))}catch(e){throw console.error(`[storage-migrations] Failed to finalize migration`,{hash:t.hash,folderMillis:t.folderMillis,error:e}),e}}async function bn(e,t){return e.engine.migrations.acquireTransactionLock===void 0||(await e.session.all(R`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(R.raw(`COMMIT`)),!0)}async function xn(e,t){await e.session.run(R.raw(`ROLLBACK`)),await _n(e),!await bn(e,t)&&await yn(e,t)}async function Sn(e,t){await _n(e);try{if(await bn(e,t))return;for(let[n,r]of t.sql.entries())if(hn(r))try{await e.session.run(R.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 xn(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 yn(e,t)}catch(n){throw await gn(e.session,{hash:t.hash,folderMillis:t.folderMillis}),n}}async function Cn(e,t,n){let r=qe(e),i=Je(r.dialect),a=n??i.migrations.defaultLedgerTable;await r.withSession(async e=>{let n={session:e,engine:i,tableName:a,tableId:R.identifier(a)},r=await vn(n);for(let e of t)r.has(e.hash)||(await Sn(n,e),r.add(e.hash))})}async function wn(e,t={}){await Cn(e,mn({migrationsDir:t.migrationsDir,expectedDialect:Ke(e)})),await Qe(e).fts.provisionSearchIndex(e)}var Tn=class{configPath;constructor(e){this.configPath=N.join(e,`config.json`)}async getConfig(){try{let e=await M.readFile(this.configPath,`utf-8`);return I.parse(JSON.parse(e))}catch(e){if(e.code===`ENOENT`)return I.parse({});if(e instanceof SyntaxError||e instanceof Error&&e.name===`ZodError`)return console.warn(`[FileConfigStorage] Failed to parse config, falling back to defaults:`,e),I.parse({});throw e}}async saveConfig(e){let t=N.dirname(this.configPath);await M.mkdir(t,{recursive:!0}),await M.writeFile(this.configPath,JSON.stringify(e,null,2),{encoding:`utf-8`,mode:384}),await M.chmod(this.configPath,384)}};function En(e){try{let t=N.resolve(Nt(e),`static/model-registry.yaml`);return ge(t)?t:void 0}catch{return}}async function Dn(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 On(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 kn(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 An=[`extension`,`static-fallback`];function jn(e){let t=[];function n(e){let t=new Pt,n=[...e].sort((e,t)=>An.indexOf(e.phase)-An.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 Mn(e){let t=e.url?.split(`?`)[0]??``;return t===`/bus`?!0:(t===`/`||t===``)&&e.headers.origin===void 0}function Nn(e,t){return(n,r,i)=>{if(!Mn(n))return;let a=e();if(!a||!t()){r.destroy();return}a.handleUpgrade(n,r,i,e=>{a.emit(`connection`,e,n)})}}var Pn=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 Fe?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 Lt({noServer:!0});this.websocketServer=t;let n=Nn(()=>this.websocketServer,()=>this.busReady);this.options.httpServer.on(`upgrade`,n),this.upgradeHandlerServer=this.options.httpServer,this.upgradeHandler=n,this.busServer=await It({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)}},Fn=class extends Rt{keysDir;constructor(e,t){super(e),this.keysDir=N.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 me.randomBytes(32).toString(`base64`)}async getMachineId(){return(await At(this.keysDir)).machineId}getEnv(e){return process.env[e]}};function In(e,t){return{extensions:e.discovery??new y(void 0,{extensionsDir:P.join(t,`extensions`),nodeModulesDir:P.join(t,`node_modules`)})}}function Ln(e){return ge(P.join(e,`meta`,`_journal.json`))}function Rn(e,t={}){let{moduleDir:n=import.meta.dirname,getMigrationsFolder:r=fn}=t,i=Je(e).migrations.chainDirName,a=[],o=P.resolve(n,`..`,i);if(Ln(o))return o;a.push(o);try{let t=r(e);if(Ln(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 zn(e){if(process.platform===`win32`)return!0;let t=e?.code;return t===`ENOSYS`||t===`EINVAL`}function Bn(e){return e===void 0||e.trim()===``?void 0:e}function Vn(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 Hn(e,t,n){let r;try{r=await import(pe(ue(N.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.`);Ge(e.dialect)===void 0&&Xe(i)}async function Un(e){let t=Bn(e.database?.url),n=t??Bn(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=$e(n);if(i.kind===`missing-engine`&&(await Hn(i,e.database?.enginePackageImportBasePath??process.cwd(),r),i=$e(n)),i.kind!==`engine`){let e=He.map(e=>e.packageName).join(`, `);throw Error(`initializeNodeDatabase: unsupported database URL '${Vn(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=N.resolve(Bn(e.dbPath)??Bn(process.env.MAKAIO_DATABASE_PATH)??N.join(e.makaioHome,`makaio.db`));return{kind:`file`,dbPath:r,url:pe(r).href}}async function Wn(e){for(let t of e.database?.engines??[])Xe(t);let t=await Un(e);if(t.kind===`url`){let n=await vt({url:t.url,postgres:{poolMax:e.database?.poolMax}});try{let r=e.migrationsDir??Rn(t.dialect);return await wn(n.db,{migrationsDir:r}),{databaseClient:n}}catch(e){throw await n.close(),e}}let{dbPath:n}=t,r=N.dirname(n);await F.promises.mkdir(r,{recursive:!0});let i=await vt({url:t.url});try{await wn(i.db,{migrationsDir:e.migrationsDir});try{await F.promises.chmod(n,384)}catch(e){if(!zn(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 Gn=A.object({npmName:A.string(),version:A.string(),source:A.enum([`new`,`upgraded`,`already-present`])}),Kn=A.object({npmName:A.string(),reason:A.string()}),qn=A.object({success:A.boolean(),packageName:A.string(),version:A.string().optional(),restartRequired:A.boolean(),error:A.string().optional(),installed:A.array(Gn).optional(),skipped:A.array(Kn).optional(),warnings:A.array(A.string()).optional()}),Jn=A.object({success:A.boolean(),packageName:A.string(),error:A.string().optional(),restartRequired:A.boolean()}),Yn=A.object({name:A.string(),version:A.string(),description:A.string().optional(),hasDescriptor:A.boolean().default(!1),serverImportPath:A.string().min(1).optional()}),Xn=A.object({packageName:A.string(),latestVersion:A.string(),success:A.boolean(),error:A.string().optional()}),Zn=A.object({name:A.string(),displayName:A.string(),description:A.string(),icon:A.string().optional(),tags:A.array(A.string()).optional(),descriptorName:A.string().min(1).optional()}),Qn=A.object({$schema:A.string(),updatedAt:A.string(),adapters:A.array(Zn),extensions:A.array(Zn)}),$n=A.object({name:A.string(),currentVersion:A.string(),latestVersion:A.string(),description:A.string().optional()}),er=ve(`packages`,{list:{request:A.object({}),response:A.object({packages:A.array(Yn)})},install:{request:A.object({packageName:A.string().optional(),packageNames:A.array(A.string()).min(1).optional(),source:A.enum([`npm`,`local`]).optional(),force:A.boolean().optional()}).refine(e=>e.packageName!==void 0||e.packageNames!==void 0,{message:`Expected packageName or packageNames`}),response:qn},uninstall:{request:A.object({packageName:A.string()}),response:Jn},getLatestVersion:{request:A.object({packageName:A.string()}),response:Xn},getRegistry:{request:A.object({}),response:Qn},checkUpdates:{request:A.object({}),response:A.object({updates:A.array($n)})},installed:A.object({packageName:A.string(),version:A.string()}),uninstalled:A.object({packageName:A.string()})}),B=er.subjects;async function tr(e,t,n){if(!N.isAbsolute(e))return;let r;try{r=await M.realpath(e)}catch{return}let i=nr(t,n),a=[N.resolve(r,`src`,`${i}.ts`),N.resolve(r,`dist`,`${i}.mjs`)];for(let e of a){let t=await rr(e);if(t!==void 0&&ir(t,r))return t}}function nr(e,t){return t===!0?e:t}async function rr(e){try{return await M.realpath(e)}catch{return}}function ir(e,t){let n=N.relative(t,e);return n.length>0&&!n.startsWith(`..`)&&!N.isAbsolute(n)}var ar=class{extensionsDir;constructor(e){this.extensionsDir=N.resolve(e)}async install(e){try{let t=N.resolve(e.endsWith(`descriptor.json`)?N.dirname(e):e),n=await M.realpath(t),r=await this.readDescriptor(n);Ae(r)||await this.validateEntrypoints(n,r.entrypoints);let i=this.linkPathFor(r.name);await M.mkdir(N.dirname(i),{recursive:!0});try{if((await M.lstat(i)).isSymbolicLink())await M.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 M.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 M.unlink(t),e.startsWith(`@`)){let e=N.dirname(t);(await M.readdir(e).catch(()=>null))?.length===0&&await M.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 M.access(this.extensionsDir)}catch{return[]}let e=await M.readdir(this.extensionsDir),t=[];for(let n of e){let e=N.join(this.extensionsDir,n);if(n.startsWith(`@`)){let n=await M.readdir(e).catch(()=>[]);for(let r of n){let n=N.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 M.lstat(e)).isSymbolicLink())return null;let t=await M.readlink(e),n=await M.realpath(N.resolve(N.dirname(e),t)),r=N.join(n,`descriptor.json`),i=await M.readFile(r,`utf-8`),a=Me(JSON.parse(i));if(!a.success)return null;let o=a.data.entrypoints?.server,s=o===void 0?void 0:await tr(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=N.join(e,`descriptor.json`),n=await M.readFile(t,`utf-8`).catch(()=>{throw Error(`descriptor.json not found at ${t}`)}),r=Me(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 tr(e,t,n)===void 0){let e=nr(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=N.resolve(this.extensionsDir,...e.split(`/`)),n=N.relative(this.extensionsDir,t);if(n===``||n.startsWith(`..`)||N.isAbsolute(n))throw Error(`Invalid extension name: ${e}`);return t}};const or=`nodeLinker: node-modules`,sr=/^[A-Za-z]:[\\/]/;let cr=null;function V(){return cr||(cr=Promise.all([import(`../lib-DIVnpS8e.mjs`).then(e=>t(e.t(),1)),import(`../lib-ClRTNIuz.mjs`).then(e=>t(e.t(),1)),import(`../lib-DktBDEoY.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})),cr)}var lr=class{makaioHome;constructor(e){this.makaioHome=e}async initialize(){try{let{npath:e,ppath:t,xfs:n}=await V(),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=mr(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 V(),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 V();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 V(),n=t.parseDescriptor(e);return n.range===`unknown`?t.makeDescriptor(n,`latest`):n}async installPackage(e){try{let{structUtils:t}=await V(),{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 V(),{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 V(),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=fr(e);try{let{structUtils:e}=await V(),{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 tr(N.join(this.makaioHome,`node_modules`,...e.split(`/`)),`server`,n)}async readInstalledExtensionDescriptor(e){let t=N.join(this.makaioHome,`node_modules`,...e.split(`/`),`descriptor.json`),n;try{let e=await M.readFile(t,`utf-8`);n=JSON.parse(e)}catch(e){if(e instanceof SyntaxError||hr(e))return null;throw e}let r=Me(n);return r.success?r.data:null}async listInstalledExtensionDescriptors(){let e=N.join(this.makaioHome,`package.json`),t;try{let n=await M.readFile(e,`utf-8`);t=JSON.parse(n)}catch(e){if(hr(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=N.join(this.makaioHome,`node_modules`,...e.split(`/`),`package.json`);try{let e=await M.readFile(t,`utf-8`),n=JSON.parse(e);return typeof n.version==`string`?n.version:`unknown`}catch{return`unknown`}}async readManifestSnapshot(){let e=N.join(this.makaioHome,`package.json`),t=await M.readFile(e,`utf-8`);return JSON.parse(t)}async writeManifestAndReinstall(e){let t=N.join(this.makaioHome,`package.json`);await M.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 V(),{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 ur(e,t){return!t||t===`latest`?e:`${e}@${t}`}function dr(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 fr(e){return e.localPackagePath?`portal:${pr(e.localPackagePath)}`:e.versionRange}function pr(e){let t=(sr.test(e)?e:N.resolve(e)).replace(/\\/g,`/`);return sr.test(t)?`/${t}`:t}function mr(e){let t=e.split(/\r?\n/),n=!1,r=t.map(e=>/^\s*nodeLinker\s*:/.test(e)?(n=!0,or):e);if(!n){let t=e.trimEnd();return`${t}${t.length>0?`
|
|
2
2
|
`:``}${or}\n`}return`${r.join(`
|
|
3
3
|
`).trimEnd()}\n`}function hr(e){if(typeof e!=`object`||!e||!(`code`in e))return!1;let t=e.code;return t===`ENOENT`||t===`ENOTDIR`}function gr(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(`.`)||N.isAbsolute(e)||N.win32.isAbsolute(e)||t?{kind:`local`,raw:e,resolved:t?N.resolve(nt.homedir(),e===`~`?`.`:e.slice(2)):N.resolve(e)}:{kind:`npm`,raw:e,resolved:e}}var _r=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: ${br(e)}`)}throw e}}async runBfs(e,t){let n=await this.readInstalledIndex(),r=e.map(e=>{let t=yr(e),n=vr(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=ur(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||Pe(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&&!Pe(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 vr(e){return e.startsWith(`@`)?void 0:e}function yr(e){let t=dr(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 br(e){return e instanceof Error?e.message:String(e)}var xr=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}},Sr=class{inner;portalMap;constructor(e,t){this.inner=e,this.portalMap=t}async installPackage(e){let t=dr(e),n=this.portalMap.get(t);if(n!==void 0){let e=`${t}@portal:${pr(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)}},Cr=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=Qn.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}},wr=t(r(),1),Tr=`1.0.0`;function Er(){let e=Tr;if(typeof e!=`string`||e.length===0)throw Error(`Package manager package metadata must include a string version.`);return`^${e}`}const Dr=Er();var Or=class extends ze{yarnManager;registryService;localInstaller;dependencyResolver;frameworkPeerRange;frameworkPackagePath;constructor(e,t,n={}){super(e),this.yarnManager=n.yarnManager??new lr(t),this.registryService=n.registryService??new Cr,this.localInstaller=n.localInstaller??new ar(N.join(t,`extensions`)),this.frameworkPeerRange=n.frameworkPeerRange??Dr,this.frameworkPackagePath=n.frameworkPackagePath;let r=n.devPortalPackages?.size?new Sr(this.yarnManager,n.devPortalPackages):this.yarnManager;this.dependencyResolver=n.dependencyResolver??new _r(r,new xr(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(B.installed,{packageName:e,version:t})}catch(e){console.error(`[PackageManagerService] installed emit failed:`,e)}}async emitUninstalled(e){try{await this.bus.emit(B.uninstalled,{packageName:e})}catch(e){console.error(`[PackageManagerService] uninstalled emit failed:`,e)}}registerPackageHandlers(){this.registerListHandler(),this.registerInstallHandler(),this.registerUninstallHandler()}registerListHandler(){this.registerHandler(B.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(B.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=>gr(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(B.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(B.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(B.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(B.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);wr.valid(e.version)&&wr.valid(n)&&wr.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 kr(e={}){return{name:`makaio.package-manager`,displayName:`Package Manager`,version:`0.1.0`,critical:!0,namespaces:[er],create:t=>new Or(t.bus,t.makaioHome,{registryService:e.registryService,dependencyResolver:e.dependencyResolver,frameworkPeerRange:e.frameworkPeerRange,frameworkPackagePath:e.frameworkPackagePath,devPortalPackages:e.devPortalPackages})}}function Ar(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 jr={resolve(e,t){return!e&&!t?null:e?t?e.updatedAt>t.updatedAt?e:t:e:t}};function Mr(e){return{scope:e.scope,surface:e.surface??`any`,context:e.context??`any`,viewport:e.viewport??`any`}}function Nr(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 Pr(e,t){return[`makaio:prefs`,e.scope,e.surface||`any`,e.context||`any`,e.viewport||`any`,t].join(`:`)}function Fr(e){return typeof e==`object`&&!!e&&`value`in e&&`updatedAt`in e&&typeof e.value==`string`&&typeof e.updatedAt==`number`}function Ir(e){try{let t=JSON.parse(e);return Fr(t)?t:{value:JSON.stringify(t),updatedAt:0}}catch{return null}}const Lr=We(`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=>[Be(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)],postgres:e=>[Ve(`preferences_pk`).on(e.scope,e.surface,e.context,e.viewport,e.category)]}),Rr=Lr.sqlite,zr=Lr.postgres,Br=Ue({preferences:Rr},{preferences:zr});function Vr(e,t,n){let r=[];return n!==void 0&&r.push(L(e.category,n)),t&&(t.scope!==void 0&&r.push(L(e.scope,t.scope)),t.surface!==void 0&&r.push(L(e.surface,t.surface)),t.context!==void 0&&r.push(L(e.context,t.context)),t.viewport!==void 0&&r.push(L(e.viewport,t.viewport))),r}async function Hr(e,t,n){let{preferences:r}=Ze(e,Br),i=Vr(r,t,n);return(i.length>0?await e.select().from(r).where(et(...i)):await e.select().from(r)).map(e=>{let t;try{t=JSON.parse(e.value)}catch{t=null}let n=$t.safeParse(t);return{key:Nr(e),category:e.category,value:n.success?n.data:null,updatedAt:e.updatedAt}})}async function Ur(e,t,n){let{preferences:r}=Ze(e,Br),i=Mr(t),[a]=await e.select().from(r).where(et(L(r.scope,i.scope),L(r.surface,i.surface),L(r.context,i.context),L(r.viewport,i.viewport),L(r.category,n))).limit(1);return a}var Wr=class{db;conflictResolver;constructor(e){this.db=e.db,this.conflictResolver=e.conflictResolver??jr}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=$t.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 Hr(this.db,e,t)}async writeToDb(e,t,n,r){let{preferences:i}=Ze(this.db,Br),a=Mr(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=Pr(e,t),r=globalThis.localStorage?.getItem(n);return r?Ir(r):null}writeToLocalStorage(e,t,n){let r=Pr(e,t);try{globalThis.localStorage?.setItem(r,JSON.stringify(n))}catch(e){console.warn(`[StorageCoordinator] localStorage write failed:`,e)}}removeFromLocalStorage(e,t){let n=Pr(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 Ur(this.db,e,t);return n?{value:n.value,updatedAt:n.updatedAt}:null}async deleteFromDb(e,t){let{preferences:n}=Ze(this.db,Br),r=Mr(e);await this.db.delete(n).where(et(L(n.scope,r.scope),L(n.surface,r.surface),L(n.context,r.context),L(n.viewport,r.viewport),L(n.category,t)))}};function Gr(e,t,n){let r=new Wr({db:t}),i=e.on(en.get,async e=>{let{key:t,category:n}=e.payload,i=await r.get(t,n);e.setResult({value:i})}),a=e.on(en.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(en.delete,async e=>{let{key:t,category:n}=e.payload;await r.delete(t,n),e.setResult({success:!0})}),s=e.on(en.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 Kr={name:`preferences-storage`,displayName:`Preferences Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:Ye(Gr)}};function qr(e,t){let n=new Map;for(let[r,i]of e)t.has(r)&&n.set(r,i);return n}function Jr(...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 Yr(e,t){let n=[e.on(Te.get,async e=>{let n=await t.getConfig();e.setResult({config:n})}),e.on(Te.update,async e=>{let n=I.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 H=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})),Xr=n((e=>{var t=H();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})),Zr=n((e=>{var t=H(),n=Xr();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(`
|
|
@@ -385,7 +385,7 @@ declare const sessions: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
|
|
|
385
385
|
tableName: "sessions";
|
|
386
386
|
dataType: "string";
|
|
387
387
|
columnType: "SQLiteText";
|
|
388
|
-
data: "fork" | "subagent" | "
|
|
388
|
+
data: "fork" | "subagent" | "compress" | "branch" | "rewrite" | "coordinator" | "aside";
|
|
389
389
|
driverParam: string;
|
|
390
390
|
notNull: false;
|
|
391
391
|
hasDefault: false;
|
|
@@ -15,8 +15,8 @@ declare const SubagentTemplateSchema: z.ZodObject<{
|
|
|
15
15
|
model: z.ZodOptional<z.ZodString>;
|
|
16
16
|
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
17
17
|
contextMode: z.ZodDefault<z.ZodEnum<{
|
|
18
|
-
fork: "fork";
|
|
19
18
|
fresh: "fresh";
|
|
19
|
+
fork: "fork";
|
|
20
20
|
}>>;
|
|
21
21
|
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
22
22
|
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -45,6 +45,7 @@ type SubagentTemplateSummary = z.infer<typeof SubagentTemplateSummarySchema>;
|
|
|
45
45
|
declare const SubagentTemplateCreateSchema: z.ZodObject<{
|
|
46
46
|
name: z.ZodString;
|
|
47
47
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
48
|
+
adapterName: z.ZodString;
|
|
48
49
|
providerConfigId: z.ZodOptional<z.ZodString>;
|
|
49
50
|
model: z.ZodOptional<z.ZodString>;
|
|
50
51
|
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
@@ -52,10 +53,9 @@ declare const SubagentTemplateCreateSchema: z.ZodObject<{
|
|
|
52
53
|
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
53
54
|
allowedDirectories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
54
55
|
contextMode: z.ZodDefault<z.ZodEnum<{
|
|
55
|
-
fork: "fork";
|
|
56
56
|
fresh: "fresh";
|
|
57
|
+
fork: "fork";
|
|
57
58
|
}>>;
|
|
58
|
-
adapterName: z.ZodString;
|
|
59
59
|
}, z.core.$strip>;
|
|
60
60
|
type SubagentTemplateCreate = z.infer<typeof SubagentTemplateCreateSchema>;
|
|
61
61
|
/**
|
|
@@ -69,8 +69,8 @@ declare const SubagentTemplateUpdateSchema: z.ZodObject<{
|
|
|
69
69
|
model: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
70
70
|
systemPrompt: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
71
71
|
contextMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
72
|
-
fork: "fork";
|
|
73
72
|
fresh: "fresh";
|
|
73
|
+
fork: "fork";
|
|
74
74
|
}>>>;
|
|
75
75
|
allowedTools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
76
76
|
disallowedTools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
@@ -114,8 +114,8 @@ declare const SubagentTemplateSettingsSchemas: {
|
|
|
114
114
|
model: z.ZodOptional<z.ZodString>;
|
|
115
115
|
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
116
116
|
contextMode: z.ZodDefault<z.ZodEnum<{
|
|
117
|
-
fork: "fork";
|
|
118
117
|
fresh: "fresh";
|
|
118
|
+
fork: "fork";
|
|
119
119
|
}>>;
|
|
120
120
|
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
121
121
|
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -130,6 +130,7 @@ declare const SubagentTemplateSettingsSchemas: {
|
|
|
130
130
|
request: z.ZodObject<{
|
|
131
131
|
name: z.ZodString;
|
|
132
132
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
133
|
+
adapterName: z.ZodString;
|
|
133
134
|
providerConfigId: z.ZodOptional<z.ZodString>;
|
|
134
135
|
model: z.ZodOptional<z.ZodString>;
|
|
135
136
|
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
@@ -137,10 +138,9 @@ declare const SubagentTemplateSettingsSchemas: {
|
|
|
137
138
|
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
138
139
|
allowedDirectories: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
139
140
|
contextMode: z.ZodDefault<z.ZodEnum<{
|
|
140
|
-
fork: "fork";
|
|
141
141
|
fresh: "fresh";
|
|
142
|
+
fork: "fork";
|
|
142
143
|
}>>;
|
|
143
|
-
adapterName: z.ZodString;
|
|
144
144
|
}, z.core.$strip>;
|
|
145
145
|
response: z.ZodObject<{
|
|
146
146
|
id: z.ZodString;
|
|
@@ -155,8 +155,8 @@ declare const SubagentTemplateSettingsSchemas: {
|
|
|
155
155
|
model: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
156
156
|
systemPrompt: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
157
157
|
contextMode: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
|
|
158
|
-
fork: "fork";
|
|
159
158
|
fresh: "fresh";
|
|
159
|
+
fork: "fork";
|
|
160
160
|
}>>>;
|
|
161
161
|
allowedTools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
162
162
|
disallowedTools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|