@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.
Files changed (68) hide show
  1. package/dist/.makaio-build.json +2 -2
  2. package/dist/{account-identity-BYfeWLe-.mjs → account-identity-CP4DC0DL.mjs} +1 -1
  3. package/dist/{adapter-nl_xz9dz.mjs → adapter-B9vVBwli.mjs} +1 -1
  4. package/dist/adapters/node.mjs +1 -1
  5. package/dist/bus/index.mjs +1 -1
  6. package/dist/{client-BkpLM8Fx.mjs → client-CzPCSeyE.mjs} +1 -1
  7. package/dist/contracts/adapter/index.d.mts +1 -1
  8. package/dist/contracts/adapter/index.mjs +1 -1
  9. package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
  10. package/dist/contracts/client/index.d.mts +1 -1
  11. package/dist/contracts/client/index.mjs +1 -1
  12. package/dist/contracts/extension/index.d.mts +1 -1
  13. package/dist/contracts/extension/index.mjs +1 -1
  14. package/dist/contracts/harness/index.d.mts +1 -1
  15. package/dist/contracts/index.d.mts +22 -22
  16. package/dist/contracts/index.mjs +1 -1
  17. package/dist/contracts/materialization/index.d.mts +1 -1
  18. package/dist/contracts/native-session-supervisor/index.mjs +1 -1
  19. package/dist/contracts/session/index.d.mts +2 -2
  20. package/dist/contracts/session/index.mjs +1 -1
  21. package/dist/contracts/variant/index.d.mts +1 -1
  22. package/dist/contracts/workflow/index.d.mts +1 -1
  23. package/dist/{extension-D4iKUUMG.mjs → extension-Cgg45Xk1.mjs} +1 -1
  24. package/dist/git/index.mjs +8 -8
  25. package/dist/{index-C2C1qH1Y.d.mts → index-BH145jWk.d.mts} +4 -4
  26. package/dist/{index-CtjLeK1F.d.mts → index-BORQLrT7.d.mts} +1 -1
  27. package/dist/{index-DNkR5yTY.d.mts → index-CCX4veeR.d.mts} +29 -29
  28. package/dist/{index-COC9jCdc.d.mts → index-CMTNBuo6.d.mts} +16 -16
  29. package/dist/{index-CVs0Qxks.d.mts → index-CSxfU0tB.d.mts} +4 -4
  30. package/dist/{index-Cx8jGKOs.d.mts → index-ChSwb11f.d.mts} +4 -4
  31. package/dist/{index-Lp0T_V1W.d.mts → index-CidZvQ-c.d.mts} +3 -3
  32. package/dist/{index-BKZAAWo2.d.mts → index-Cq6rXKae.d.mts} +88 -88
  33. package/dist/{index-x2gFj3BK.d.mts → index-DMQlLz2W.d.mts} +9 -9
  34. package/dist/{index-BDr2Ba122.d.mts → index-MTvmxwiu2.d.mts} +1 -1
  35. package/dist/{index-ButbwvVY.d.mts → index-kqxUXYe7.d.mts} +6 -6
  36. package/dist/kernel/extension/index.d.mts +1 -1
  37. package/dist/kernel/index.d.mts +2 -2
  38. package/dist/kernel/observability/index.d.mts +1 -1
  39. package/dist/{lib-DymjnkAP.mjs → lib-DktBDEoY.mjs} +1 -1
  40. package/dist/{namespace-B0uZIZYT.d.mts → namespace-TLkZRkcU.d.mts} +20 -20
  41. package/dist/{namespace-CCZXyxSe.d.mts → namespace-dgNmx9g3.d.mts} +27 -27
  42. package/dist/{native-session-supervisor-CdtVGWA9.mjs → native-session-supervisor-Bgz-Q1WH.mjs} +1 -1
  43. package/dist/package.json +1 -1
  44. package/dist/{profile-D2m94ZYD.mjs → profile-BRi6K6am.mjs} +1 -1
  45. package/dist/runtime-node/index.mjs +1 -1
  46. package/dist/{schema-aOwmHxaF.d.mts → schema-CxN7d_MU.d.mts} +1 -1
  47. package/dist/{schemas-CoJCTFod2.d.mts → schemas-CIO03KSD2.d.mts} +8 -8
  48. package/dist/{schemas-n9Ff6_RX.mjs → schemas-DyJHJ8Pm.mjs} +1 -1
  49. package/dist/semver-D3Y7uMEb.mjs +1 -0
  50. package/dist/services/context-rules/index.d.mts +3 -3
  51. package/dist/services/execution-target/index.d.mts +1 -1
  52. package/dist/services/harness/index.d.mts +3 -3
  53. package/dist/services/index.d.mts +13 -13
  54. package/dist/services/session/index.d.mts +4 -4
  55. package/dist/services/session/session-events/namespace.d.mts +1 -1
  56. package/dist/services/session/storage/namespace.d.mts +1 -1
  57. package/dist/services/session/storage/schema.d.mts +1 -1
  58. package/dist/services/settings/namespace.d.mts +8 -8
  59. package/dist/services/subagent-template/index.d.mts +1 -1
  60. package/dist/services/subagent-template/schemas.d.mts +1 -1
  61. package/dist/{session-lRd8HZNZ.mjs → session-BxWogVkD.mjs} +1 -1
  62. package/dist/{session-lineage-YShrn77v.d.mts → session-lineage-BLw8iWAj.d.mts} +1 -1
  63. package/dist/{types-BaDYigzD.d.mts → types-DQsYUZwa.d.mts} +34 -34
  64. package/dist/ui-components/index.d.mts +4 -4
  65. package/dist/{version-C1-VD-XL.mjs → version-BbWrAPld.mjs} +1 -1
  66. package/dist/workflow-engine/index.d.mts +23 -23
  67. package/package.json +2 -2
  68. 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" | "branch" | "compress" | "rewrite" | "coordinator" | "aside";
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: "fork" | "resume";
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: "fork" | "resume";
3521
+ intent: "resume" | "fork";
3522
3522
  verdictKind: "foreign";
3523
3523
  foreignMachineId: string;
3524
3524
  agentId?: string | undefined;
@@ -1 +1 @@
1
- import{r as e}from"./profile-D2m94ZYD.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};
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,5 +1,5 @@
1
1
  {
2
2
  "name": "@makaio/framework",
3
- "version": "1.0.0-dev-1783973359164",
3
+ "version": "1.0.0-dev-1783975608971",
4
4
  "type": "module"
5
5
  }
@@ -1 +1 @@
1
- import{t as e}from"./version-C1-VD-XL.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
+ 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" | "branch" | "compress" | "rewrite" | "coordinator" | "aside";
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>>>;