everything-dev 1.26.1 → 1.28.0

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 (166) hide show
  1. package/dist/api-contract.cjs.map +1 -1
  2. package/dist/api-contract.mjs.map +1 -1
  3. package/dist/cli/catalog.cjs.map +1 -1
  4. package/dist/cli/catalog.mjs.map +1 -1
  5. package/dist/cli/framework-version.cjs.map +1 -1
  6. package/dist/cli/framework-version.mjs.map +1 -1
  7. package/dist/cli/infra.cjs +1 -1
  8. package/dist/cli/infra.cjs.map +1 -1
  9. package/dist/cli/infra.mjs +1 -1
  10. package/dist/cli/infra.mjs.map +1 -1
  11. package/dist/cli/init.cjs +127 -121
  12. package/dist/cli/init.cjs.map +1 -1
  13. package/dist/cli/init.d.cts +6 -6
  14. package/dist/cli/init.d.cts.map +1 -1
  15. package/dist/cli/init.d.mts +6 -6
  16. package/dist/cli/init.d.mts.map +1 -1
  17. package/dist/cli/init.mjs +125 -121
  18. package/dist/cli/init.mjs.map +1 -1
  19. package/dist/cli/parse.cjs.map +1 -1
  20. package/dist/cli/parse.mjs.map +1 -1
  21. package/dist/cli/prompts.cjs +29 -25
  22. package/dist/cli/prompts.cjs.map +1 -1
  23. package/dist/cli/prompts.mjs +28 -25
  24. package/dist/cli/prompts.mjs.map +1 -1
  25. package/dist/cli/status.cjs.map +1 -1
  26. package/dist/cli/status.mjs.map +1 -1
  27. package/dist/cli/sync.cjs +46 -93
  28. package/dist/cli/sync.cjs.map +1 -1
  29. package/dist/cli/sync.mjs +49 -96
  30. package/dist/cli/sync.mjs.map +1 -1
  31. package/dist/cli/timing.cjs.map +1 -1
  32. package/dist/cli/timing.mjs.map +1 -1
  33. package/dist/cli/upgrade.cjs +41 -20
  34. package/dist/cli/upgrade.cjs.map +1 -1
  35. package/dist/cli/upgrade.mjs +43 -22
  36. package/dist/cli/upgrade.mjs.map +1 -1
  37. package/dist/cli.cjs +187 -12
  38. package/dist/cli.cjs.map +1 -1
  39. package/dist/cli.mjs +187 -12
  40. package/dist/cli.mjs.map +1 -1
  41. package/dist/components/dev-view.cjs.map +1 -1
  42. package/dist/components/dev-view.mjs.map +1 -1
  43. package/dist/components/streaming-view.cjs.map +1 -1
  44. package/dist/components/streaming-view.mjs.map +1 -1
  45. package/dist/config.cjs.map +1 -1
  46. package/dist/config.mjs.map +1 -1
  47. package/dist/contract.cjs +174 -173
  48. package/dist/contract.cjs.map +1 -1
  49. package/dist/contract.d.cts +48 -44
  50. package/dist/contract.d.cts.map +1 -1
  51. package/dist/contract.d.mts +48 -44
  52. package/dist/contract.d.mts.map +1 -1
  53. package/dist/contract.mjs +3 -1
  54. package/dist/contract.mjs.map +1 -1
  55. package/dist/dev-logs.cjs.map +1 -1
  56. package/dist/dev-logs.mjs.map +1 -1
  57. package/dist/dev-session.cjs +0 -1
  58. package/dist/dev-session.mjs +1 -1
  59. package/dist/fastkv.cjs.map +1 -1
  60. package/dist/fastkv.mjs.map +1 -1
  61. package/dist/index.cjs +2 -4
  62. package/dist/index.d.cts +3 -3
  63. package/dist/index.d.mts +3 -3
  64. package/dist/index.mjs +1 -2
  65. package/dist/integrity.cjs.map +1 -1
  66. package/dist/integrity.mjs.map +1 -1
  67. package/dist/internal/manifest-normalizer.cjs.map +1 -1
  68. package/dist/internal/manifest-normalizer.mjs.map +1 -1
  69. package/dist/merge.cjs.map +1 -1
  70. package/dist/merge.mjs.map +1 -1
  71. package/dist/near-cli.cjs +1 -1
  72. package/dist/near-cli.cjs.map +1 -1
  73. package/dist/near-cli.mjs +1 -1
  74. package/dist/near-cli.mjs.map +1 -1
  75. package/dist/orchestrator.cjs +1 -1
  76. package/dist/orchestrator.cjs.map +1 -1
  77. package/dist/orchestrator.mjs +1 -1
  78. package/dist/orchestrator.mjs.map +1 -1
  79. package/dist/plugin.cjs +182 -171
  80. package/dist/plugin.cjs.map +1 -1
  81. package/dist/plugin.d.cts +72 -39
  82. package/dist/plugin.d.cts.map +1 -1
  83. package/dist/plugin.d.mts +71 -39
  84. package/dist/plugin.d.mts.map +1 -1
  85. package/dist/plugin.mjs +170 -160
  86. package/dist/plugin.mjs.map +1 -1
  87. package/dist/sdk.cjs +2 -2
  88. package/dist/sdk.d.cts +1 -1
  89. package/dist/sdk.d.mts +1 -1
  90. package/dist/sdk.mjs +1 -1
  91. package/dist/service-descriptor.d.cts +34 -0
  92. package/dist/service-descriptor.d.cts.map +1 -0
  93. package/dist/service-descriptor.d.mts +36 -0
  94. package/dist/service-descriptor.d.mts.map +1 -0
  95. package/dist/shared.cjs.map +1 -1
  96. package/dist/shared.mjs.map +1 -1
  97. package/dist/types.cjs +184 -184
  98. package/dist/types.cjs.map +1 -1
  99. package/dist/types.d.cts +5 -5
  100. package/dist/types.d.mts +5 -5
  101. package/dist/types.mjs +1 -1
  102. package/dist/types.mjs.map +1 -1
  103. package/dist/ui/types.d.cts +1 -0
  104. package/dist/ui/types.d.cts.map +1 -1
  105. package/dist/ui/types.d.mts +1 -0
  106. package/dist/ui/types.d.mts.map +1 -1
  107. package/dist/utils/banner.cjs.map +1 -1
  108. package/dist/utils/banner.mjs.map +1 -1
  109. package/dist/utils/run.cjs.map +1 -1
  110. package/dist/utils/run.mjs.map +1 -1
  111. package/package.json +3 -3
  112. package/skills/init-upgrade/SKILL.md +22 -16
  113. package/skills/publish-sync/SKILL.md +7 -18
  114. package/dist/utils/path-match.cjs +0 -18
  115. package/dist/utils/path-match.cjs.map +0 -1
  116. package/dist/utils/path-match.mjs +0 -17
  117. package/dist/utils/path-match.mjs.map +0 -1
  118. package/src/api-contract.ts +0 -623
  119. package/src/app.ts +0 -193
  120. package/src/cli/catalog.ts +0 -49
  121. package/src/cli/framework-version.ts +0 -61
  122. package/src/cli/help.ts +0 -13
  123. package/src/cli/infra.ts +0 -190
  124. package/src/cli/init.ts +0 -1202
  125. package/src/cli/parse.ts +0 -147
  126. package/src/cli/prompts.ts +0 -135
  127. package/src/cli/snapshot.ts +0 -46
  128. package/src/cli/status.ts +0 -99
  129. package/src/cli/sync.ts +0 -518
  130. package/src/cli/timing.ts +0 -63
  131. package/src/cli/upgrade.ts +0 -828
  132. package/src/cli.ts +0 -516
  133. package/src/components/dev-view.tsx +0 -352
  134. package/src/components/streaming-view.ts +0 -177
  135. package/src/config.ts +0 -893
  136. package/src/contract.meta.ts +0 -140
  137. package/src/contract.ts +0 -325
  138. package/src/dev-logs.ts +0 -92
  139. package/src/dev-session.ts +0 -283
  140. package/src/fastkv.ts +0 -181
  141. package/src/index.ts +0 -8
  142. package/src/integrity.ts +0 -138
  143. package/src/internal/manifest-normalizer.ts +0 -290
  144. package/src/merge.ts +0 -187
  145. package/src/mf.ts +0 -147
  146. package/src/near-cli.ts +0 -259
  147. package/src/network.ts +0 -3
  148. package/src/orchestrator.ts +0 -493
  149. package/src/plugin.ts +0 -1821
  150. package/src/sdk.ts +0 -14
  151. package/src/service-descriptor.ts +0 -281
  152. package/src/shared.ts +0 -249
  153. package/src/sidebar.ts +0 -140
  154. package/src/types.ts +0 -330
  155. package/src/ui/head.ts +0 -83
  156. package/src/ui/index.ts +0 -5
  157. package/src/ui/metadata.ts +0 -95
  158. package/src/ui/router.ts +0 -88
  159. package/src/ui/runtime.ts +0 -42
  160. package/src/ui/types.ts +0 -64
  161. package/src/utils/banner.ts +0 -21
  162. package/src/utils/linkify.ts +0 -11
  163. package/src/utils/path-match.ts +0 -16
  164. package/src/utils/run.ts +0 -31
  165. package/src/utils/save-config.ts +0 -20
  166. package/src/utils/theme.ts +0 -39
package/dist/plugin.cjs CHANGED
@@ -1,39 +1,73 @@
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
1
2
  const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
3
  const require_fastkv = require('./fastkv.cjs');
3
4
  const require_network = require('./network.cjs');
4
- require('./sdk.cjs');
5
5
  const require_config = require('./config.cjs');
6
6
  const require_contract = require('./contract.cjs');
7
+ const require_sidebar = require('./sidebar.cjs');
8
+ const require_integrity = require('./integrity.cjs');
7
9
  const require_api_contract = require('./api-contract.cjs');
8
10
  const require_app = require('./app.cjs');
9
11
  const require_infra = require('./cli/infra.cjs');
10
12
  const require_save_config = require('./utils/save-config.cjs');
11
13
  const require_cli_init = require('./cli/init.cjs');
12
- const require_prompts = require('./cli/prompts.cjs');
13
14
  const require_status = require('./cli/status.cjs');
14
15
  const require_sync = require('./cli/sync.cjs');
15
- const require_timing = require('./cli/timing.cjs');
16
16
  const require_upgrade = require('./cli/upgrade.cjs');
17
- const require_integrity = require('./integrity.cjs');
18
17
  const require_near_cli = require('./near-cli.cjs');
19
18
  const require_service_descriptor = require('./service-descriptor.cjs');
20
19
  const require_shared = require('./shared.cjs');
21
- const require_sidebar = require('./sidebar.cjs');
22
20
  const require_run = require('./utils/run.cjs');
23
- const require_theme = require('./utils/theme.cjs');
24
21
  let node_fs = require("node:fs");
25
22
  let node_path = require("node:path");
23
+ let node_events = require("node:events");
26
24
  let node_process = require("node:process");
27
25
  node_process = require_runtime.__toESM(node_process, 1);
28
- let _clack_prompts = require("@clack/prompts");
29
- _clack_prompts = require_runtime.__toESM(_clack_prompts, 1);
30
26
  let effect = require("effect");
31
27
  let every_plugin = require("every-plugin");
32
- let every_plugin_zod = require("every-plugin/zod");
28
+ let zod = require("zod");
33
29
 
34
30
  //#region src/plugin.ts
35
- async function loadDevSession() {
36
- return Promise.resolve().then(() => require("./dev-session.cjs"));
31
+ const pluginEvents = new node_events.EventEmitter();
32
+ let pendingSession = null;
33
+ let pendingStartSummary = null;
34
+ function consumeDevSession() {
35
+ const data = pendingSession;
36
+ const summary = pendingStartSummary;
37
+ pendingSession = null;
38
+ pendingStartSummary = null;
39
+ if (!data) return null;
40
+ return summary ? {
41
+ ...data,
42
+ summary
43
+ } : data;
44
+ }
45
+ async function timePhase(timings, name, fn) {
46
+ pluginEvents.emit("progress", {
47
+ phase: name,
48
+ status: "running"
49
+ });
50
+ const startedAt = Date.now();
51
+ try {
52
+ const result = await fn();
53
+ timings.push({
54
+ name,
55
+ durationMs: Date.now() - startedAt
56
+ });
57
+ pluginEvents.emit("progress", {
58
+ phase: name,
59
+ status: "done",
60
+ durationMs: Date.now() - startedAt
61
+ });
62
+ return result;
63
+ } catch (error) {
64
+ pluginEvents.emit("progress", {
65
+ phase: name,
66
+ status: "error",
67
+ durationMs: Date.now() - startedAt
68
+ });
69
+ throw error;
70
+ }
37
71
  }
38
72
  const buildCommands = {
39
73
  host: {
@@ -273,8 +307,8 @@ async function buildWorkspaceTargets(opts) {
273
307
  };
274
308
  }
275
309
  var plugin_default = (0, every_plugin.createPlugin)({
276
- variables: every_plugin_zod.z.object({ configPath: every_plugin_zod.z.string().optional() }),
277
- secrets: every_plugin_zod.z.object({}),
310
+ variables: zod.z.object({ configPath: zod.z.string().optional() }),
311
+ secrets: zod.z.object({}),
278
312
  contract: require_contract.bosContract,
279
313
  initialize: (config) => effect.Effect.promise(async () => {
280
314
  const configResult = await require_config.loadConfig({ path: config.variables.configPath });
@@ -440,6 +474,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
440
474
  }),
441
475
  dev: builder.dev.handler(async ({ input }) => {
442
476
  require_infra.ensureEnvFile(deps.configDir);
477
+ pluginEvents.emit("progress", {
478
+ phase: "config",
479
+ status: "running"
480
+ });
443
481
  const localPackages = require_app.detectLocalPackages(deps.bosConfig ?? void 0, deps.runtimeConfig ?? void 0);
444
482
  const hostSource = localPackages.includes("host") ? parseSourceMode(input.host, "local") : "remote";
445
483
  const uiSource = localPackages.includes("ui") ? parseSourceMode(input.ui, "local") : "remote";
@@ -452,9 +490,41 @@ var plugin_default = (0, every_plugin.createPlugin)({
452
490
  hostMode: hostSource,
453
491
  bosConfig: deps.bosConfig ?? void 0,
454
492
  extendsChain: []
455
- })).catalogChanged) await require_run.run("bun", ["install"], { cwd: deps.configDir });
456
- if (apiSource === "local" && !proxy || localPackages.some((pkg) => pkg.startsWith("plugin:"))) await buildEveryPluginQuietly(deps.configDir);
493
+ })).catalogChanged) {
494
+ pluginEvents.emit("progress", {
495
+ phase: "install",
496
+ status: "running"
497
+ });
498
+ await require_run.run("bun", ["install"], { cwd: deps.configDir });
499
+ pluginEvents.emit("progress", {
500
+ phase: "install",
501
+ status: "done"
502
+ });
503
+ }
504
+ if (apiSource === "local" && !proxy || localPackages.some((pkg) => pkg.startsWith("plugin:"))) {
505
+ pluginEvents.emit("progress", {
506
+ phase: "build plugin",
507
+ status: "running"
508
+ });
509
+ await buildEveryPluginQuietly(deps.configDir);
510
+ pluginEvents.emit("progress", {
511
+ phase: "build plugin",
512
+ status: "done"
513
+ });
514
+ }
515
+ pluginEvents.emit("progress", {
516
+ phase: "build",
517
+ status: "running"
518
+ });
457
519
  await buildEverythingDevQuietly(deps.configDir);
520
+ pluginEvents.emit("progress", {
521
+ phase: "build",
522
+ status: "done"
523
+ });
524
+ pluginEvents.emit("progress", {
525
+ phase: "config",
526
+ status: "done"
527
+ });
458
528
  const refreshed = await require_config.loadConfig({ cwd: deps.configDir });
459
529
  deps.bosConfig = refreshed?.config ?? deps.bosConfig;
460
530
  deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;
@@ -502,8 +572,11 @@ var plugin_default = (0, every_plugin.createPlugin)({
502
572
  port: runtimeConfig.host.port,
503
573
  interactive: input.interactive
504
574
  };
505
- const { devApp } = await loadDevSession();
506
- devApp(orchestrator, services, runtimeConfig);
575
+ pendingSession = {
576
+ orchestrator,
577
+ services,
578
+ runtimeConfig
579
+ };
507
580
  return {
508
581
  status: "started",
509
582
  description: orchestrator.description,
@@ -512,6 +585,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
512
585
  }),
513
586
  start: builder.start.handler(async ({ input }) => {
514
587
  require_infra.ensureEnvFile(deps.configDir);
588
+ pluginEvents.emit("progress", {
589
+ phase: "config",
590
+ status: "running"
591
+ });
515
592
  const account = input.account ?? node_process.default.env.BOS_ACCOUNT;
516
593
  const domain = input.domain ?? node_process.default.env.BOS_GATEWAY;
517
594
  let config = null;
@@ -546,10 +623,18 @@ var plugin_default = (0, every_plugin.createPlugin)({
546
623
  env: "production",
547
624
  plugins: runtimePlugins
548
625
  });
626
+ pluginEvents.emit("progress", {
627
+ phase: "generate artifacts",
628
+ status: "running"
629
+ });
549
630
  await generateCodeArtifacts(deps.configDir, config, {
550
631
  env: "production",
551
632
  runtimeConfig
552
633
  });
634
+ pluginEvents.emit("progress", {
635
+ phase: "generate artifacts",
636
+ status: "done"
637
+ });
553
638
  const productionEnv = {};
554
639
  const warnings = [];
555
640
  if (!node_process.default.env.CORS_ORIGIN && config.domain) {
@@ -569,32 +654,40 @@ var plugin_default = (0, every_plugin.createPlugin)({
569
654
  if (missingSecrets.length > 0) warnings.push(`Missing ${missingSecrets.length} secret(s): ${missingSecrets.join(", ")}`);
570
655
  const services = require_service_descriptor.buildServiceDescriptorMap(runtimeConfig);
571
656
  const stagingEnvVars = isStaging ? { BOS_GATEWAY: config.staging?.domain ?? config.domain ?? "" } : {};
572
- const configSource = remoteConfig ? `bos://${account}/${domain}` : require_config.findConfigPath() ?? "bos.config.json";
573
- const configSourceHttp = remoteConfig && account && domain ? require_fastkv.buildRegistryConfigUrl(account, domain) : void 0;
574
- const summaryLines = ["", ` ${require_theme.colors.dim("Config Source:")} ${configSource}`];
575
- if (configSourceHttp) summaryLines.push(` ${require_theme.colors.dim(configSourceHttp)}`);
576
- summaryLines.push(` ${require_theme.colors.dim("Account:")} ${config.account}`, ` ${require_theme.colors.dim("Domain:")} ${config.domain ?? "not configured"}`, "", ` ${require_theme.colors.dim("Modules:")}`, ` ${require_theme.colors.dim("HOST")} → ${runtimeConfig.host.remoteUrl ?? runtimeConfig.host.url ?? "local"}`, ` ${require_theme.colors.dim("UI")} → ${runtimeConfig.ui.url ?? "local"}`, ` ${require_theme.colors.dim("API")} → ${runtimeConfig.api.url ?? "local"}`);
577
- if (runtimeConfig.auth) summaryLines.push(` ${require_theme.colors.dim("AUTH")} → ${runtimeConfig.auth.url ?? "local"}`);
578
- if (warnings.length > 0) {
579
- summaryLines.push("");
580
- for (const w of warnings) summaryLines.push(` ${require_theme.colors.yellow(w)}`);
581
- }
582
- summaryLines.push("");
583
- console.log(summaryLines.join("\n"));
584
- const orchestrator = {
585
- packages: ["host"],
586
- env: {
587
- NODE_ENV: "production",
588
- ...productionEnv,
589
- ...stagingEnvVars
657
+ const summary = {
658
+ configSource: remoteConfig ? `bos://${account}/${domain}` : require_config.findConfigPath() ?? "bos.config.json",
659
+ configSourceHttp: remoteConfig && account && domain ? require_fastkv.buildRegistryConfigUrl(account, domain) : void 0,
660
+ account: config.account,
661
+ domain: config.domain ?? void 0,
662
+ modules: {
663
+ host: runtimeConfig.host.remoteUrl ?? runtimeConfig.host.url ?? "local",
664
+ ui: runtimeConfig.ui.url ?? "local",
665
+ api: runtimeConfig.api.url ?? "local",
666
+ auth: runtimeConfig.auth?.url ?? void 0
667
+ },
668
+ warnings
669
+ };
670
+ pendingSession = {
671
+ orchestrator: {
672
+ packages: ["host"],
673
+ env: {
674
+ NODE_ENV: "production",
675
+ ...productionEnv,
676
+ ...stagingEnvVars
677
+ },
678
+ description: `${isStaging ? "Staging" : "Production"} Mode (${config.account})`,
679
+ port,
680
+ interactive: input.interactive,
681
+ noLogs: true
590
682
  },
591
- description: `${isStaging ? "Staging" : "Production"} Mode (${config.account})`,
592
- port,
593
- interactive: input.interactive,
594
- noLogs: true
683
+ services,
684
+ runtimeConfig
595
685
  };
596
- const { startApp } = await loadDevSession();
597
- startApp(orchestrator, services, runtimeConfig);
686
+ pendingStartSummary = summary;
687
+ pluginEvents.emit("progress", {
688
+ phase: "config",
689
+ status: "done"
690
+ });
598
691
  return {
599
692
  status: "running",
600
693
  url: `http://localhost:${port}`
@@ -784,8 +877,8 @@ var plugin_default = (0, every_plugin.createPlugin)({
784
877
  let extendsAccount = "";
785
878
  let extendsGateway = "";
786
879
  let directory = input.directory;
787
- let account = input.account;
788
- let domain = input.domain;
880
+ const account = input.account;
881
+ const domain = input.domain;
789
882
  let overrides = input.overrides;
790
883
  let plugins = input.plugins;
791
884
  if (input.extends) {
@@ -797,77 +890,22 @@ var plugin_default = (0, every_plugin.createPlugin)({
797
890
  }
798
891
  extendsAccount = extendsAccount || "dev.everything.near";
799
892
  extendsGateway = extendsGateway || "everything.dev";
800
- const s = _clack_prompts.spinner();
801
- s.start("Initializing project");
802
893
  let parentPluginKeys = [];
803
894
  let parentConfig = null;
804
895
  try {
805
- parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway), s);
896
+ parentConfig = await timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway));
806
897
  if (parentConfig?.plugins && typeof parentConfig.plugins === "object") parentPluginKeys = Object.keys(parentConfig.plugins);
807
898
  } catch {}
808
- if (!input.noInteractive) {
809
- s.stop("Config fetched");
810
- const initialExtendsAccount = extendsAccount;
811
- const initialExtendsGateway = extendsGateway;
812
- const prompted = await require_prompts.promptInitOptions({
813
- extends: `bos://${extendsAccount}/${extendsGateway}`,
814
- directory,
815
- account,
816
- domain,
817
- plugins,
818
- overrides,
819
- parentPluginKeys
820
- });
821
- extendsAccount = prompted.extendsAccount;
822
- extendsGateway = prompted.extendsGateway;
823
- directory = prompted.directory;
824
- account = prompted.account;
825
- domain = prompted.domain;
826
- plugins = prompted.plugins;
827
- overrides = prompted.overrides;
828
- if (!parentConfig || prompted.extendsAccount !== initialExtendsAccount || prompted.extendsGateway !== initialExtendsGateway) {
829
- try {
830
- parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(prompted.extendsAccount, prompted.extendsGateway), s);
831
- if (parentConfig?.plugins && typeof parentConfig.plugins === "object") parentPluginKeys = Object.keys(parentConfig.plugins);
832
- else parentPluginKeys = [];
833
- } catch {
834
- return {
835
- status: "error",
836
- directory,
837
- extendsRef: `bos://${prompted.extendsAccount}/${prompted.extendsGateway}`,
838
- account,
839
- domain,
840
- extends: `bos://${prompted.extendsAccount}/${prompted.extendsGateway}`,
841
- plugins,
842
- overrides,
843
- filesCopied: 0,
844
- timings,
845
- error: `No config found at bos://${prompted.extendsAccount}/${prompted.extendsGateway} — are you sure this is the right parent?`
846
- };
847
- }
848
- s.stop("Config fetched");
849
- }
850
- if (typeof parentConfig?.title === "string" && parentConfig.title.trim() && typeof parentConfig.description === "string" && parentConfig.description.trim()) {
851
- const shouldContinue = await _clack_prompts.confirm({
852
- message: `You will be extending ${parentConfig.title} - ${parentConfig.description}. Continue?`,
853
- initialValue: true
854
- });
855
- if (_clack_prompts.isCancel(shouldContinue) || !shouldContinue) node_process.default.exit(0);
856
- }
857
- s.start("Setting up project");
858
- }
859
899
  overrides = overrides?.length ? overrides : ["ui", "api"];
860
- if (overrides.includes("plugins") && !plugins?.length) plugins = parentPluginKeys;
900
+ if (overrides.includes("plugins") && plugins === void 0) plugins = parentPluginKeys;
861
901
  plugins = plugins ?? [];
862
902
  directory = directory || domain || extendsGateway;
863
903
  const targetDir = (0, node_path.resolve)(directory);
864
904
  const extendsRef = `bos://${extendsAccount}/${extendsGateway}`;
865
- if (overrides.includes("plugins") && !plugins.length) {}
866
905
  const repository = await require_cli_init.detectGitRemoteUrl(node_process.default.cwd()).catch(() => void 0) ?? parentConfig?.repository;
867
906
  if (!parentConfig) try {
868
- parentConfig = await require_timing.timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway), s);
907
+ parentConfig = await timePhase(timings, "parent config", () => require_cli_init.fetchParentConfig(extendsAccount, extendsGateway));
869
908
  } catch {
870
- s.stop("Failed");
871
909
  return {
872
910
  status: "error",
873
911
  directory,
@@ -882,26 +920,28 @@ var plugin_default = (0, every_plugin.createPlugin)({
882
920
  error: `No config found at ${extendsRef} — are you sure this is the right parent?`
883
921
  };
884
922
  }
885
- const { sourceDir, parentConfig: resolvedParentConfig, cleanup } = await require_timing.timePhase(timings, "template source", () => require_cli_init.resolveSourceDir({
923
+ const { sourceDir, parentConfig: resolvedParentConfig, cleanup } = await timePhase(timings, "template source", () => require_cli_init.resolveSourceDir({
886
924
  extendsAccount,
887
925
  extendsGateway,
888
926
  source: input.source
889
- }), s);
927
+ }));
890
928
  parentConfig = resolvedParentConfig;
891
929
  const isMinimalScaffold = sourceDir === "";
892
930
  try {
893
931
  let filesCopied;
894
932
  if (isMinimalScaffold) {
895
- filesCopied = await require_timing.timePhase(timings, "scaffold project", () => require_cli_init.scaffoldMinimalProject(targetDir, parentConfig, {
933
+ filesCopied = await timePhase(timings, "scaffold project", () => require_cli_init.scaffoldMinimalProject(targetDir, parentConfig, {
896
934
  extendsAccount,
897
935
  extendsGateway,
898
936
  account: account || extendsAccount,
899
937
  domain,
900
938
  plugins,
901
939
  overrides,
902
- repository
903
- }), s);
904
- await require_timing.timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
940
+ repository,
941
+ title: parentConfig?.title,
942
+ description: parentConfig?.description
943
+ }));
944
+ await timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
905
945
  extendsAccount,
906
946
  extendsGateway,
907
947
  account: account || extendsAccount,
@@ -909,85 +949,53 @@ var plugin_default = (0, every_plugin.createPlugin)({
909
949
  plugins,
910
950
  overrides,
911
951
  mode: "init",
912
- repository
913
- }), s);
952
+ repository,
953
+ title: parentConfig?.title,
954
+ description: parentConfig?.description,
955
+ testnet: parentConfig?.testnet,
956
+ staging: parentConfig?.staging
957
+ }));
914
958
  } else {
915
- const patterns = await require_cli_init.readTemplatekeep(sourceDir);
916
- if (patterns.length === 0) {
917
- s.stop("Failed");
918
- return {
919
- status: "error",
920
- directory,
921
- extendsRef,
922
- account,
923
- domain,
924
- extends: extendsRef,
925
- plugins,
926
- overrides,
927
- filesCopied: 0,
928
- error: "No .templatekeep found in template source"
929
- };
930
- }
931
- const pluginRoutes = {};
932
- if (overrides.includes("plugins")) {
933
- const parentRuntimePlugins = await require_config.buildRuntimePluginsForConfig(parentConfig, sourceDir, "production");
934
- for (const [key, plugin] of Object.entries(parentRuntimePlugins ?? {})) if (plugin.routes && plugin.routes.length > 0) pluginRoutes[key] = plugin.routes;
935
- }
936
- filesCopied = await require_timing.timePhase(timings, "copy files", () => require_cli_init.copyFilteredFiles(sourceDir, targetDir, patterns, {
959
+ const patterns = require_cli_init.buildInitPatterns(overrides, plugins);
960
+ filesCopied = await timePhase(timings, "copy files", () => require_cli_init.copyFilteredFiles(sourceDir, targetDir, patterns, {
937
961
  overrides,
938
- plugins,
939
- pluginRoutes
940
- }), s);
941
- await require_timing.timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
962
+ plugins
963
+ }));
964
+ await timePhase(timings, "personalize config", () => require_cli_init.personalizeConfig(targetDir, {
942
965
  extendsAccount,
943
966
  extendsGateway,
944
967
  account: account || extendsAccount,
945
968
  domain: domain || extendsGateway,
946
969
  plugins,
947
970
  overrides,
948
- pluginRoutes,
949
971
  workspaceOpts: { sourceDir },
950
- repository
951
- }), s);
952
- await require_timing.timePhase(timings, "write snapshot", () => require_cli_init.writeInitSnapshot(targetDir, extendsAccount, extendsGateway, sourceDir, patterns, {
972
+ repository,
973
+ title: parentConfig?.title,
974
+ description: parentConfig?.description,
975
+ testnet: parentConfig?.testnet,
976
+ staging: parentConfig?.staging
977
+ }));
978
+ await timePhase(timings, "write snapshot", () => require_cli_init.writeInitSnapshot(targetDir, extendsAccount, extendsGateway, sourceDir, patterns, {
953
979
  overrides,
954
- plugins,
955
- pluginRoutes
956
- }), s);
980
+ plugins
981
+ }));
957
982
  }
958
983
  const lockfilePath = (0, node_path.join)(targetDir, "bun.lock");
959
984
  require_cli_init.stripOrphanedWorkspacesFromLockfile(lockfilePath, computeAllowedWorkspaces(overrides, plugins));
960
985
  require_cli_init.removeInitLockfile(lockfilePath);
961
- const initConfig = await require_timing.timePhase(timings, "resolve config", () => require_config.loadConfig({ cwd: targetDir }), s);
962
- if (initConfig?.runtime) await require_timing.timePhase(timings, "generate env/docker", async () => {
986
+ const initConfig = await timePhase(timings, "resolve config", () => require_config.loadConfig({ cwd: targetDir }));
987
+ if (initConfig?.runtime) await timePhase(timings, "generate env/docker", async () => {
963
988
  require_infra.writeGeneratedInfra(targetDir, initConfig.runtime);
964
- }, s);
965
- await require_timing.timePhase(timings, "create env file", async () => {
989
+ });
990
+ await timePhase(timings, "create env file", async () => {
966
991
  require_infra.ensureEnvFile(targetDir);
967
- }, s);
992
+ });
968
993
  if (!input.noInstall) {
969
- await require_timing.timePhase(timings, "install dependencies", () => require_cli_init.runBunInstall(targetDir, s ?? void 0));
970
- await require_timing.timePhase(timings, "generate types", () => require_cli_init.runTypesGen(targetDir, s ?? void 0));
971
- await require_timing.timePhase(timings, "generate migrations", () => require_cli_init.generateDatabaseMigrations(targetDir), s);
972
- }
973
- if (input.noInstall && initConfig?.config) await require_timing.timePhase(timings, "generate code artifacts", () => generateCodeArtifacts(targetDir, initConfig.config), s);
974
- s.stop("Project initialized");
975
- if (!input.noInteractive) {
976
- if (await _clack_prompts.confirm({
977
- message: "Run docker compose up -d --wait?",
978
- initialValue: true
979
- }) === true) {
980
- const dockerSpinner = _clack_prompts.spinner();
981
- dockerSpinner.start("Starting Docker services");
982
- try {
983
- await require_timing.timePhase(timings, "docker compose up", () => require_cli_init.runDockerComposeUp(targetDir));
984
- dockerSpinner.stop("Docker services ready");
985
- } catch (error) {
986
- dockerSpinner.stop("Docker services not started");
987
- _clack_prompts.log.warn(`docker compose up -d --wait failed: ${error instanceof Error ? error.message : error}`);
988
- }
989
- }
994
+ await timePhase(timings, "install dependencies", () => require_cli_init.runBunInstall(targetDir));
995
+ await timePhase(timings, "generate types", () => require_cli_init.runTypesGen(targetDir));
996
+ await timePhase(timings, "generate migrations", () => require_cli_init.generateDatabaseMigrations(targetDir));
990
997
  }
998
+ if (input.noInstall && initConfig?.config) await timePhase(timings, "generate code artifacts", () => generateCodeArtifacts(targetDir, initConfig.config));
991
999
  return {
992
1000
  status: "initialized",
993
1001
  directory,
@@ -998,7 +1006,8 @@ var plugin_default = (0, every_plugin.createPlugin)({
998
1006
  plugins,
999
1007
  overrides,
1000
1008
  filesCopied,
1001
- timings
1009
+ timings,
1010
+ targetDir
1002
1011
  };
1003
1012
  } finally {
1004
1013
  await cleanup();
@@ -1173,10 +1182,12 @@ function computeAllowedWorkspaces(overrides, plugins) {
1173
1182
  if (section === "ui") workspaces.push("ui");
1174
1183
  if (section === "api") workspaces.push("api");
1175
1184
  }
1176
- if (plugins) for (const plugin of plugins) workspaces.push(`plugins/${plugin}`);
1185
+ if (plugins && plugins.length > 0) workspaces.push("plugins/*");
1177
1186
  return workspaces;
1178
1187
  }
1179
1188
 
1180
1189
  //#endregion
1181
- module.exports = plugin_default;
1190
+ exports.consumeDevSession = consumeDevSession;
1191
+ exports.default = plugin_default;
1192
+ exports.pluginEvents = pluginEvents;
1182
1193
  //# sourceMappingURL=plugin.cjs.map