everything-dev 1.14.0 → 1.14.1

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.
@@ -386,8 +386,8 @@ declare const StatusResultSchema: z.ZodObject<{
386
386
  }, z.core.$strip>;
387
387
  declare const TypesGenOptionsSchema: z.ZodObject<{
388
388
  env: z.ZodOptional<z.ZodEnum<{
389
- development: "development";
390
389
  production: "production";
390
+ development: "development";
391
391
  }>>;
392
392
  dryRun: z.ZodDefault<z.ZodBoolean>;
393
393
  }, z.core.$strip>;
@@ -780,8 +780,8 @@ declare const bosContract: {
780
780
  }, z.core.$strip>, _$_orpc_contract0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
781
781
  typesGen: _$_orpc_contract0.ContractProcedure<z.ZodObject<{
782
782
  env: z.ZodOptional<z.ZodEnum<{
783
- development: "development";
784
783
  production: "production";
784
+ development: "development";
785
785
  }>>;
786
786
  dryRun: z.ZodDefault<z.ZodBoolean>;
787
787
  }, z.core.$strip>, z.ZodObject<{
@@ -386,8 +386,8 @@ declare const StatusResultSchema: z.ZodObject<{
386
386
  }, z.core.$strip>;
387
387
  declare const TypesGenOptionsSchema: z.ZodObject<{
388
388
  env: z.ZodOptional<z.ZodEnum<{
389
- development: "development";
390
389
  production: "production";
390
+ development: "development";
391
391
  }>>;
392
392
  dryRun: z.ZodDefault<z.ZodBoolean>;
393
393
  }, z.core.$strip>;
@@ -780,8 +780,8 @@ declare const bosContract: {
780
780
  }, z.core.$strip>, _$_orpc_contract0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
781
781
  typesGen: _$_orpc_contract0.ContractProcedure<z.ZodObject<{
782
782
  env: z.ZodOptional<z.ZodEnum<{
783
- development: "development";
784
783
  production: "production";
784
+ development: "development";
785
785
  }>>;
786
786
  dryRun: z.ZodDefault<z.ZodBoolean>;
787
787
  }, z.core.$strip>, z.ZodObject<{
package/dist/plugin.cjs CHANGED
@@ -149,18 +149,21 @@ function listPluginAttachments(config) {
149
149
  };
150
150
  }).sort((a, b) => a.key.localeCompare(b.key));
151
151
  }
152
- async function refreshApiContractBridge(configDir, env = "development") {
153
- const refreshed = await require_config.loadConfig({
154
- cwd: configDir,
155
- env
156
- });
157
- if (!refreshed) return;
158
- await require_api_contract.syncApiContractBridge({
152
+ async function generateCodeArtifacts(configDir, config, opts) {
153
+ require_sidebar.writePluginSidebarGen(configDir, config);
154
+ if (opts?.env) require_config.writeResolvedConfig(configDir, config, opts.env, opts.extendsChain);
155
+ const runtimeConfig = opts?.runtimeConfig ?? (await require_config.loadConfig({ cwd: configDir }))?.runtime;
156
+ if (!runtimeConfig) return null;
157
+ const bridge = await require_api_contract.syncApiContractBridge({
159
158
  configDir,
160
- runtimeConfig: refreshed.runtime,
161
- apiBaseUrl: refreshed.runtime.api.url
159
+ runtimeConfig,
160
+ apiBaseUrl: runtimeConfig.api.url
162
161
  });
163
- require_sidebar.writePluginSidebarGen(configDir, refreshed.config);
162
+ return {
163
+ sidebarPath: (0, node_path.join)(configDir, "ui/src/lib/plugin-sidebar.gen.ts"),
164
+ resolvedConfigPath: opts?.env ? (0, node_path.join)(configDir, ".bos/bos.resolved-config.json") : void 0,
165
+ contractBridgePath: bridge.bridgePath
166
+ };
164
167
  }
165
168
  function extractPublishedUrl(output) {
166
169
  const match = output.match(/https?:\/\/[^\s"'<>]+/g);
@@ -324,7 +327,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
324
327
  plugins: nextPlugins
325
328
  };
326
329
  await require_save_config.saveBosConfig(deps.configDir, deps.bosConfig);
327
- await refreshApiContractBridge(deps.configDir);
330
+ await generateCodeArtifacts(deps.configDir, deps.bosConfig);
328
331
  const stored = deps.bosConfig.plugins?.[key];
329
332
  const storedObj = stored && typeof stored === "object" ? stored : {};
330
333
  return {
@@ -354,7 +357,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
354
357
  plugins: Object.keys(nextPlugins).length > 0 ? nextPlugins : void 0
355
358
  };
356
359
  await require_save_config.saveBosConfig(deps.configDir, deps.bosConfig);
357
- await refreshApiContractBridge(deps.configDir);
360
+ await generateCodeArtifacts(deps.configDir, deps.bosConfig);
358
361
  return {
359
362
  status: "removed",
360
363
  key: input.key
@@ -481,7 +484,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
481
484
  } catch (registryError) {
482
485
  console.warn(`[publish] Plugin registry write skipped: ${registryError instanceof Error ? registryError.message : registryError}`);
483
486
  }
484
- await refreshApiContractBridge(deps.configDir);
487
+ await generateCodeArtifacts(deps.configDir, deps.bosConfig);
485
488
  }
486
489
  return {
487
490
  status: "published",
@@ -513,10 +516,6 @@ var plugin_default = (0, every_plugin.createPlugin)({
513
516
  const refreshed = await require_config.loadConfig({ cwd: deps.configDir });
514
517
  deps.bosConfig = refreshed?.config ?? deps.bosConfig;
515
518
  deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;
516
- if (deps.bosConfig) {
517
- require_config.writeResolvedConfig(deps.configDir, deps.bosConfig, "development", refreshed?.source.extended);
518
- require_sidebar.writePluginSidebarGen(deps.configDir, deps.bosConfig);
519
- }
520
519
  if (!deps.bosConfig) return {
521
520
  status: "error",
522
521
  description: "No bos.config.json found",
@@ -539,6 +538,11 @@ var plugin_default = (0, every_plugin.createPlugin)({
539
538
  hostPort,
540
539
  ssr
541
540
  });
541
+ await generateCodeArtifacts(deps.configDir, deps.bosConfig, {
542
+ env: "development",
543
+ extendsChain: refreshed?.source.extended,
544
+ runtimeConfig
545
+ });
542
546
  const services = require_service_descriptor.buildServiceDescriptorMap(runtimeConfig, {
543
547
  ssr,
544
548
  proxy
@@ -549,11 +553,6 @@ var plugin_default = (0, every_plugin.createPlugin)({
549
553
  const proxyUrl = resolveProxyUrl(deps.bosConfig);
550
554
  if (proxyUrl) displayEnv.API_PROXY = proxyUrl;
551
555
  }
552
- await require_api_contract.syncApiContractBridge({
553
- configDir: deps.configDir,
554
- runtimeConfig,
555
- apiBaseUrl: runtimeConfig.api.url
556
- });
557
556
  const orchestrator = {
558
557
  packages,
559
558
  env: displayEnv,
@@ -604,7 +603,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
604
603
  env: "production",
605
604
  plugins: runtimePlugins
606
605
  });
607
- require_sidebar.writePluginSidebarGen(deps.configDir, config);
606
+ await generateCodeArtifacts(deps.configDir, config, {
607
+ env: "production",
608
+ runtimeConfig
609
+ });
608
610
  const productionEnv = {};
609
611
  const warnings = [];
610
612
  if (!process.env.CORS_ORIGIN && config.domain) {
@@ -623,11 +625,6 @@ var plugin_default = (0, every_plugin.createPlugin)({
623
625
  }
624
626
  if (missingSecrets.length > 0) warnings.push(`Missing ${missingSecrets.length} secret(s): ${missingSecrets.join(", ")}`);
625
627
  const services = require_service_descriptor.buildServiceDescriptorMap(runtimeConfig);
626
- await require_api_contract.syncApiContractBridge({
627
- configDir: deps.configDir,
628
- runtimeConfig,
629
- apiBaseUrl: runtimeConfig.api.url
630
- });
631
628
  const stagingEnvVars = isStaging ? { BOS_GATEWAY: config.staging?.domain ?? config.domain ?? "" } : {};
632
629
  const configSource = remoteConfig ? `bos://${account}/${domain}` : require_config.findConfigPath() ?? "bos.config.json";
633
630
  const configSourceHttp = remoteConfig && account && domain ? require_fastkv.buildRegistryConfigUrl(account, domain) : void 0;
@@ -665,8 +662,6 @@ var plugin_default = (0, every_plugin.createPlugin)({
665
662
  skipped: []
666
663
  };
667
664
  const buildEnv = input.deploy ? "production" : "development";
668
- require_config.writeResolvedConfig(deps.configDir, deps.bosConfig, buildEnv);
669
- require_sidebar.writePluginSidebarGen(deps.configDir, deps.bosConfig);
670
665
  const targets = selectWorkspaceTargets(input.packages, deps.bosConfig);
671
666
  if (targets.length === 0) return {
672
667
  status: "error",
@@ -681,10 +676,9 @@ var plugin_default = (0, every_plugin.createPlugin)({
681
676
  env: buildEnv,
682
677
  plugins: deps.runtimeConfig?.plugins
683
678
  });
684
- await require_api_contract.syncApiContractBridge({
685
- configDir: deps.configDir,
686
- runtimeConfig,
687
- apiBaseUrl: runtimeConfig.api.url
679
+ await generateCodeArtifacts(deps.configDir, deps.bosConfig, {
680
+ env: buildEnv,
681
+ runtimeConfig
688
682
  });
689
683
  const { built, skipped } = await buildWorkspaceTargets({
690
684
  configDir: deps.configDir,
@@ -732,6 +726,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
732
726
  skipped
733
727
  };
734
728
  if (input.deploy) {
729
+ await generateCodeArtifacts(deps.configDir, deps.bosConfig, {
730
+ env: "production",
731
+ runtimeConfig: deps.runtimeConfig ?? void 0
732
+ });
735
733
  const result = await buildWorkspaceTargets({
736
734
  configDir: deps.configDir,
737
735
  bosConfig: deps.bosConfig,
@@ -955,7 +953,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
955
953
  await require_cli_init.generateDatabaseMigrations(directory);
956
954
  }
957
955
  const initConfig = await require_config.loadConfig({ cwd: directory });
958
- if (initConfig?.config) require_sidebar.writePluginSidebarGen(directory, initConfig.config);
956
+ if (initConfig?.config) await generateCodeArtifacts(directory, initConfig.config);
959
957
  s.stop("Project initialized");
960
958
  return {
961
959
  status: "initialized",
@@ -1000,7 +998,7 @@ var plugin_default = (0, every_plugin.createPlugin)({
1000
998
  const result = await require_sync.syncTemplate(projectDir, input);
1001
999
  if (result.status === "synced" || result.status === "dry-run") {
1002
1000
  const syncedConfig = await require_config.loadConfig({ cwd: projectDir });
1003
- if (syncedConfig?.config) require_sidebar.writePluginSidebarGen(projectDir, syncedConfig.config);
1001
+ if (syncedConfig?.config) await generateCodeArtifacts(projectDir, syncedConfig.config);
1004
1002
  }
1005
1003
  return result;
1006
1004
  } catch (error) {
@@ -1080,12 +1078,9 @@ var plugin_default = (0, every_plugin.createPlugin)({
1080
1078
  source: refreshed.runtime.api.source
1081
1079
  };
1082
1080
  }
1083
- const result = await require_api_contract.syncApiContractBridge({
1084
- configDir: projectDir,
1085
- runtimeConfig: refreshed.runtime,
1086
- apiBaseUrl: refreshed.runtime.api.url
1087
- });
1081
+ await generateCodeArtifacts(projectDir, refreshed.config, { runtimeConfig: refreshed.runtime });
1088
1082
  const generated = [
1083
+ "ui/src/lib/plugin-sidebar.gen.ts",
1089
1084
  "ui/src/lib/api-types.gen.ts",
1090
1085
  "api/src/lib/plugins-types.gen.ts",
1091
1086
  "api/src/lib/auth-types.gen.ts"
@@ -1095,10 +1090,10 @@ var plugin_default = (0, every_plugin.createPlugin)({
1095
1090
  return {
1096
1091
  status: "success",
1097
1092
  generated,
1098
- fetched: result.source === "remote" ? [refreshed.runtime.api.url] : [],
1099
- skipped: result.source === "local" ? ["api (local)"] : [],
1093
+ fetched: refreshed.runtime.api.source === "remote" ? [refreshed.runtime.api.url] : [],
1094
+ skipped: refreshed.runtime.api.source === "local" ? ["api (local)"] : [],
1100
1095
  failed: [],
1101
- source: result.source
1096
+ source: refreshed.runtime.api.source
1102
1097
  };
1103
1098
  } catch (error) {
1104
1099
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs","names":["resolveLocalDevelopmentPath","loadConfig","syncApiContractBridge","run","fetchBosConfigFromFastKv","syncAndGenerateSharedUi","z","bosContract","Effect","getProjectRoot","saveBosConfig","fetchRemotePluginManifest","computeSriHashForUrl","getNetworkIdForAccount","ensureNearCli","executeTransaction","getRegistryNamespaceForNetwork","detectLocalPackages","getHostDevelopmentPort","prepareDevelopmentRuntimeConfig","buildRuntimeConfig","buildServiceDescriptorMap","buildDescription","buildRuntimePluginsForConfig","findConfigPath","buildRegistryConfigUrl","colors","buildRegistryConfigUrlForNetwork","getRegistryNamespaceForAccount","addFunctionCallAccessKey","promptInitOptions","fetchParentConfig","resolveSourceDir","readTemplatekeep","p","copyFilteredFiles","personalizeConfig","writeInitSnapshot","runBunInstall","runTypesGen","generateDatabaseMigrations","syncTemplate","upgradeTemplate","getStatus"],"sources":["../src/plugin.ts"],"sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { Effect } from \"effect\";\nimport { syncApiContractBridge } from \"./api-contract\";\nimport { buildRuntimeConfig, detectLocalPackages, prepareDevelopmentRuntimeConfig } from \"./app\";\nimport {\n copyFilteredFiles,\n fetchParentConfig,\n generateDatabaseMigrations,\n personalizeConfig,\n readTemplatekeep,\n resolveSourceDir,\n runBunInstall,\n runTypesGen,\n writeInitSnapshot,\n} from \"./cli/init\";\nimport { promptInitOptions } from \"./cli/prompts\";\nimport { getStatus } from \"./cli/status\";\nimport { syncTemplate } from \"./cli/sync\";\nimport { upgradeTemplate } from \"./cli/upgrade\";\nimport {\n buildRuntimePluginsForConfig,\n findConfigPath,\n getHostDevelopmentPort,\n getProjectRoot,\n loadConfig,\n resolveLocalDevelopmentPath,\n writeResolvedConfig,\n} from \"./config\";\nimport { type BosConfigResult, bosContract, type PluginListResult } from \"./contract\";\nimport { devApp, startApp } from \"./dev-session\";\nimport {\n buildRegistryConfigUrl,\n buildRegistryConfigUrlForNetwork,\n fetchBosConfigFromFastKv,\n fetchRemotePluginManifest,\n getRegistryNamespaceForAccount,\n getRegistryNamespaceForNetwork,\n type PluginManifest,\n} from \"./fastkv\";\nimport { computeSriHashForUrl } from \"./integrity\";\nimport type { BosEnv } from \"./merge\";\nimport { addFunctionCallAccessKey, ensureNearCli, executeTransaction } from \"./near-cli\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport { createPlugin, z } from \"./sdk\";\nimport {\n type AppOrchestrator,\n buildDescription,\n buildServiceDescriptorMap,\n} from \"./service-descriptor\";\nimport { syncAndGenerateSharedUi } from \"./shared\";\nimport { writePluginSidebarGen } from \"./sidebar\";\nimport type { BosConfig, BosPluginRef, RuntimeConfig, SourceMode } from \"./types\";\nimport { run } from \"./utils/run\";\nimport { saveBosConfig } from \"./utils/save-config\";\nimport { colors } from \"./utils/theme\";\n\nfunction ensureEnvFile(configDir: string, opts?: { domain?: string }): void {\n const envPath = join(configDir, \".env\");\n const examplePath = join(configDir, \".env.example\");\n\n if (existsSync(envPath)) return;\n\n if (!existsSync(examplePath)) return;\n\n const content = readFileSync(examplePath, \"utf-8\");\n const lines = content.split(\"\\n\");\n\n const secret = randomBytes(32).toString(\"base64url\");\n const corsOrigin = opts?.domain\n ? `http://localhost:3000,https://${opts.domain}`\n : \"http://localhost:3000\";\n\n const updated = lines\n .map((line) => {\n if (/^BETTER_AUTH_SECRET=/.test(line)) {\n return `BETTER_AUTH_SECRET=${secret}`;\n }\n if (/^CORS_ORIGIN=/.test(line)) {\n return `CORS_ORIGIN=${corsOrigin}`;\n }\n return line;\n })\n .join(\"\\n\");\n\n writeFileSync(envPath, updated);\n p.log.info(`Created .env from .env.example with generated BETTER_AUTH_SECRET`);\n}\n\nconst buildCommands: Record<string, { cmd: string; args: string[] }> = {\n host: { cmd: \"bun\", args: [\"run\", \"build\"] },\n ui: { cmd: \"bun\", args: [\"run\", \"build\"] },\n api: { cmd: \"bun\", args: [\"run\", \"build\"] },\n};\n\nconst PUBLISH_FUNCTION_NAMES = [\"__fastdata_kv\"];\n\ntype BosDeps = {\n bosConfig: BosConfig | null;\n runtimeConfig: RuntimeConfig | null;\n configDir: string;\n};\n\ntype PluginAttachmentConfig = NonNullable<BosConfig[\"plugins\"]>[string];\n\nfunction getPluginRef(entry: string | BosPluginRef | undefined | null): BosPluginRef | null {\n if (!entry || typeof entry === \"string\") return null;\n return entry;\n}\n\nfunction parseSourceMode(value: string | undefined, defaultValue: SourceMode): SourceMode {\n if (value === \"local\" || value === \"remote\") return value;\n return defaultValue;\n}\n\nfunction buildConfigResult(bosConfig: BosConfig | null): BosConfigResult {\n const packages = bosConfig ? Object.keys(bosConfig.app) : [];\n const remotes = packages.filter((name) => name !== \"host\");\n\n return {\n config: bosConfig,\n packages,\n remotes,\n };\n}\n\ntype WorkspaceTarget = {\n key: string;\n kind: \"app\" | \"plugin\";\n path: string;\n};\n\nfunction resolveWorkspaceTarget(\n key: string,\n bosConfig: BosConfig | null,\n runtimeConfig: RuntimeConfig | null,\n configDir: string,\n): WorkspaceTarget | null {\n if (bosConfig?.app && key in bosConfig.app) {\n const appEntry = (bosConfig.app as Record<string, { development?: string }>)[key];\n const devPath = resolveLocalDevelopmentPath(appEntry?.development, configDir);\n if (devPath) {\n return {\n key,\n kind: \"app\",\n path: devPath,\n };\n }\n return {\n key,\n kind: \"app\",\n path: `${configDir}/${key}`,\n };\n }\n\n const runtimePlugin = runtimeConfig?.plugins?.[key];\n const pluginPath =\n runtimePlugin?.localPath ??\n resolveLocalDevelopmentPath(getPluginRef(bosConfig?.plugins?.[key])?.development, configDir);\n if (pluginPath) {\n return {\n key,\n kind: \"plugin\",\n path: pluginPath,\n };\n }\n\n return null;\n}\n\nfunction isValidProxyUrl(url: string): boolean {\n try {\n const parsed = new URL(url);\n return parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction resolveProxyUrl(bosConfig: BosConfig | null): string | null {\n if (!bosConfig) return null;\n const apiConfig = bosConfig.app.api;\n if (!apiConfig) return null;\n if (apiConfig.proxy && isValidProxyUrl(apiConfig.proxy)) return apiConfig.proxy;\n if (apiConfig.production && isValidProxyUrl(apiConfig.production)) return apiConfig.production;\n return null;\n}\n\nfunction sanitizePluginKey(value: string): string {\n return value\n .replace(/[^A-Za-z0-9/_-]/g, \"-\")\n .replace(/\\/+/g, \"/\")\n .split(\"/\")\n .filter(Boolean)\n .map((segment) => segment.replace(/[^A-Za-z0-9_-]/g, \"-\"))\n .join(\"/\")\n .replace(/^\\/+|\\/+$/g, \"\");\n}\n\nfunction defaultPluginKey(source: string): string {\n const normalized = source.replace(/^local:/, \"\").replace(/\\/$/, \"\");\n if (source.startsWith(\"local:\")) {\n return sanitizePluginKey(basename(normalized)) || \"plugin\";\n }\n\n try {\n const url = new URL(source);\n return sanitizePluginKey(basename(url.pathname) || url.hostname) || \"plugin\";\n } catch {\n return sanitizePluginKey(source) || \"plugin\";\n }\n}\n\nfunction pluginLocalPath(configDir: string, attachment: PluginAttachmentConfig): string | null {\n const ref = getPluginRef(attachment);\n const source = ref?.development ?? ref?.production;\n if (!source?.startsWith(\"local:\")) {\n return null;\n }\n\n return join(configDir, source.slice(\"local:\".length));\n}\n\nfunction listPluginAttachments(config: BosConfig | null) {\n return (Object.entries(config?.plugins ?? {}) as Array<[string, PluginAttachmentConfig]>)\n .map(([key, attachment]) => {\n const ref = getPluginRef(attachment);\n return {\n key,\n development: ref?.development,\n production: ref?.production,\n localPath: ref?.development?.startsWith(\"local:\")\n ? ref.development.slice(\"local:\".length)\n : undefined,\n source: ref?.development?.startsWith(\"local:\") ? (\"local\" as const) : (\"remote\" as const),\n integrity: ref?.integrity,\n version: ref?.version,\n name: ref?.name,\n };\n })\n .sort((a, b) => a.key.localeCompare(b.key));\n}\n\nasync function refreshApiContractBridge(\n configDir: string,\n env: \"development\" | \"production\" = \"development\",\n): Promise<void> {\n const refreshed = await loadConfig({ cwd: configDir, env });\n if (!refreshed) return;\n\n await syncApiContractBridge({\n configDir,\n runtimeConfig: refreshed.runtime,\n apiBaseUrl: refreshed.runtime.api.url,\n });\n\n writePluginSidebarGen(configDir, refreshed.config);\n}\n\nfunction extractPublishedUrl(output: string): string | null {\n const match = output.match(/https?:\\/\\/[^\\s\"'<>]+/g);\n if (!match || match.length === 0) return null;\n return match[match.length - 1] ?? null;\n}\n\nasync function buildEveryPluginQuietly(cwd: string) {\n const packageDir = `${cwd}/packages/every-plugin`;\n const packageExists = await Bun.file(`${packageDir}/package.json`).exists();\n if (!packageExists) {\n return;\n }\n\n const distPath = `${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`;\n const distExists = await Bun.file(distPath).exists();\n\n if (distExists) {\n return;\n }\n\n const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/every-plugin\", \"build\"], {\n cwd,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (result.exitCode === 0) {\n console.log(\"[build:ssr] build succeeded\");\n return;\n }\n\n if (result.stdout.trim()) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr.trim()) {\n process.stderr.write(result.stderr);\n }\n\n throw new Error(\n `bun run --cwd packages/every-plugin build failed with exit code ${result.exitCode}`,\n );\n}\n\nasync function buildEverythingDevQuietly(cwd: string) {\n const packageDir = `${cwd}/packages/everything-dev`;\n const packageExists = await Bun.file(`${packageDir}/package.json`).exists();\n if (!packageExists) {\n return;\n }\n\n const distPath = `${cwd}/packages/everything-dev/dist/index.mjs`;\n const distExists = await Bun.file(distPath).exists();\n\n if (distExists) {\n return;\n }\n\n const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/everything-dev\", \"build\"], {\n cwd,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (result.exitCode === 0) {\n console.log(\"[everything-dev] build succeeded\");\n return;\n }\n\n if (result.stdout.trim()) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr.trim()) {\n process.stderr.write(result.stderr);\n }\n\n throw new Error(\n `bun run --cwd packages/everything-dev build failed with exit code ${result.exitCode}`,\n );\n}\n\nasync function fetchPublishedConfig(\n accountId: string,\n gatewayId: string,\n): Promise<BosConfig | null> {\n try {\n return await fetchBosConfigFromFastKv<BosConfig>(`bos://${accountId}/${gatewayId}`);\n } catch {\n return null;\n }\n}\n\nfunction selectWorkspaceTargets(packages: string, bosConfig: BosConfig | null): string[] {\n const allPackages = [\n ...Object.keys(bosConfig?.app ?? {}),\n ...Object.keys(bosConfig?.plugins ?? {}),\n ];\n if (packages === \"all\") {\n return allPackages;\n }\n\n return packages\n .split(\",\")\n .map((pkg) => pkg.trim())\n .filter((pkg) => allPackages.includes(pkg));\n}\n\nasync function buildWorkspaceTargets(opts: {\n configDir: string;\n bosConfig: BosConfig | null;\n runtimeConfig: RuntimeConfig | null;\n targets: string[];\n deploy: boolean;\n}): Promise<{ built: string[]; skipped: string[] }> {\n const existing: WorkspaceTarget[] = [];\n const skipped: string[] = [];\n\n for (const target of opts.targets) {\n const resolved = resolveWorkspaceTarget(\n target,\n opts.bosConfig,\n opts.runtimeConfig,\n opts.configDir,\n );\n if (!resolved) {\n skipped.push(target);\n continue;\n }\n\n const exists = await Bun.file(`${resolved.path}/package.json`).exists();\n if (exists) existing.push(resolved);\n else skipped.push(target);\n }\n\n if (existing.length === 0) {\n return { built: [], skipped };\n }\n\n const sharedSync = await syncAndGenerateSharedUi({\n configDir: opts.configDir,\n hostMode: \"local\",\n bosConfig: opts.bosConfig ?? undefined,\n extendsChain: [],\n });\n if (sharedSync.catalogChanged) {\n await run(\"bun\", [\"install\"], { cwd: opts.configDir });\n }\n\n if (existing.some((entry) => entry.key === \"api\")) {\n await buildEveryPluginQuietly(opts.configDir);\n }\n\n await buildEverythingDevQuietly(opts.configDir);\n\n const env: Record<string, string> = {\n ...process.env,\n NODE_ENV: opts.deploy ? \"production\" : \"development\",\n };\n if (opts.deploy) {\n env.DEPLOY = \"true\";\n } else {\n delete env.DEPLOY;\n }\n\n const orderedExisting = opts.deploy\n ? [\n ...existing.filter((entry) => entry.kind === \"app\" && entry.key !== \"host\"),\n ...existing.filter((entry) => entry.kind === \"plugin\"),\n ...existing.filter((entry) => entry.kind === \"app\" && entry.key === \"host\"),\n ]\n : existing;\n const built: string[] = [];\n\n for (const resolved of orderedExisting) {\n const pkgJson = JSON.parse(await Bun.file(`${resolved.path}/package.json`).text()) as {\n scripts?: Record<string, string>;\n };\n const shouldDeployScript = opts.deploy && pkgJson.scripts?.deploy;\n const buildConfig = shouldDeployScript\n ? { cmd: \"bun\", args: [\"run\", \"deploy\"] }\n : (buildCommands[resolved.key] ?? { cmd: \"bun\", args: [\"run\", \"build\"] });\n\n await run(buildConfig.cmd, buildConfig.args, {\n cwd: resolved.path,\n env,\n });\n built.push(resolved.key);\n }\n\n return { built, skipped };\n}\n\nexport default createPlugin({\n variables: z.object({\n configPath: z.string().optional(),\n }),\n secrets: z.object({}),\n contract: bosContract,\n initialize: (config) =>\n Effect.promise(async () => {\n const configResult = await loadConfig({ path: config.variables.configPath });\n return {\n bosConfig: configResult?.config ?? null,\n runtimeConfig: configResult?.runtime ?? null,\n configDir: getProjectRoot(),\n } satisfies BosDeps;\n }),\n shutdown: () => Effect.void,\n createRouter: (deps, builder) => ({\n config: builder.config.handler(async () => buildConfigResult(deps.bosConfig)),\n\n pluginAdd: builder.pluginAdd.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n key: \"\",\n error: \"No bos.config.json found\",\n };\n }\n\n const isBosRef = input.source.startsWith(\"bos://\");\n const isLocal = input.source.startsWith(\"local:\");\n const key = sanitizePluginKey(\n input.as ??\n (isBosRef ? (input.source.split(\"/\").pop() ?? \"plugin\") : defaultPluginKey(input.source)),\n );\n const existing = deps.bosConfig.plugins?.[key];\n const existingEntry = existing && typeof existing === \"object\" ? existing : {};\n const nextPlugins = { ...(deps.bosConfig.plugins ?? {}) };\n\n if (isBosRef) {\n nextPlugins[key] = {\n ...existingEntry,\n extends: input.source,\n };\n } else if (isLocal) {\n nextPlugins[key] = {\n ...existingEntry,\n development: input.source,\n ...(existingEntry.extends ? {} : {}),\n };\n } else {\n nextPlugins[key] = {\n ...existingEntry,\n production: input.production ?? input.source,\n };\n }\n\n deps.bosConfig = {\n ...deps.bosConfig,\n plugins: nextPlugins,\n };\n\n await saveBosConfig(deps.configDir, deps.bosConfig);\n await refreshApiContractBridge(deps.configDir);\n\n const stored = deps.bosConfig.plugins?.[key];\n const storedObj = stored && typeof stored === \"object\" ? stored : {};\n\n return {\n status: \"added\" as const,\n key,\n development: storedObj.development,\n production: storedObj.production,\n integrity: storedObj.integrity,\n version: storedObj.version,\n };\n }),\n\n pluginRemove: builder.pluginRemove.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: \"No bos.config.json found\",\n };\n }\n\n if (!deps.bosConfig.plugins?.[input.key]) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Plugin '${input.key}' is not configured`,\n };\n }\n\n const nextPlugins = { ...(deps.bosConfig.plugins ?? {}) };\n delete nextPlugins[input.key];\n deps.bosConfig = {\n ...deps.bosConfig,\n plugins: Object.keys(nextPlugins).length > 0 ? nextPlugins : undefined,\n };\n\n await saveBosConfig(deps.configDir, deps.bosConfig);\n await refreshApiContractBridge(deps.configDir);\n\n return {\n status: \"removed\" as const,\n key: input.key,\n };\n }),\n\n pluginList: builder.pluginList.handler(async () => {\n const plugins: PluginListResult[\"plugins\"] = listPluginAttachments(deps.bosConfig);\n return {\n status: \"listed\" as const,\n plugins,\n };\n }),\n\n pluginPublish: builder.pluginPublish.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: \"No bos.config.json found\",\n };\n }\n\n const attachment = deps.bosConfig.plugins?.[input.key];\n if (!attachment) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Plugin '${input.key}' is not configured`,\n };\n }\n\n const attachmentRef = getPluginRef(attachment);\n\n const localPath = pluginLocalPath(deps.configDir, attachment);\n if (!localPath) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Plugin '${input.key}' does not have a local development path`,\n };\n }\n\n const pkgPath = join(localPath, \"package.json\");\n if (!(await Bun.file(pkgPath).exists())) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Missing package.json at ${localPath}`,\n };\n }\n\n const pkgJson = (await Bun.file(pkgPath).json()) as {\n scripts?: Record<string, string>;\n name?: string;\n version?: string;\n };\n const script = pkgJson.scripts?.deploy ? \"deploy\" : \"build\";\n\n const { stdout, stderr, exitCode } = (await run(\"bun\", [\"run\", script], {\n cwd: localPath,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (exitCode !== 0) {\n if (stdout.trim()) process.stdout.write(stdout);\n if (stderr.trim()) process.stderr.write(stderr);\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Publish failed with exit code ${exitCode}`,\n };\n }\n\n if (stdout.trim()) process.stdout.write(stdout);\n if (stderr.trim()) process.stderr.write(stderr);\n\n let publishedUrl = extractPublishedUrl(`${stdout}\\n${stderr}`);\n\n let manifest: PluginManifest | null = null;\n if (publishedUrl) {\n manifest = await fetchRemotePluginManifest(publishedUrl);\n } else if (attachmentRef?.production) {\n manifest = await fetchRemotePluginManifest(attachmentRef.production);\n if (manifest) {\n publishedUrl = attachmentRef.production;\n }\n }\n\n const integrity = publishedUrl ? await computeSriHashForUrl(publishedUrl) : null;\n const version = manifest?.plugin.version ?? pkgJson.version;\n\n if (publishedUrl) {\n const pluginConfigPath = join(localPath, \"bos.config.json\");\n if (existsSync(pluginConfigPath)) {\n try {\n const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\")) as Record<\n string,\n unknown\n >;\n if (!pluginConfig.app) pluginConfig.app = {};\n const app = pluginConfig.app as Record<string, unknown>;\n if (!app.api) app.api = {};\n const api = app.api as Record<string, unknown>;\n api.production = publishedUrl;\n if (integrity) {\n api.integrity = integrity;\n } else {\n delete api.integrity;\n }\n writeFileSync(pluginConfigPath, `${JSON.stringify(pluginConfig, null, 2)}\\n`);\n console.log(` ✅ Updated ${pluginConfigPath}: app.api.production`);\n } catch (err) {\n console.error(\n ` ❌ Failed to update plugin bos.config.json:`,\n err instanceof Error ? err.message : err,\n );\n }\n }\n\n const account = deps.bosConfig.account;\n const network = getNetworkIdForAccount(account);\n\n let pluginDomain: string | undefined;\n if (existsSync(pluginConfigPath)) {\n try {\n const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\"));\n if (typeof pluginConfig.domain === \"string\") {\n pluginDomain = pluginConfig.domain;\n }\n } catch {}\n }\n if (!pluginDomain) {\n pluginDomain = `${input.key}.${deps.bosConfig.domain ?? \"everything.dev\"}`;\n }\n\n if (manifest && version) {\n try {\n const registryEntries: Record<string, string> = {\n [`plugins/${account}/${input.key}/manifest.json`]: JSON.stringify(manifest),\n [`plugins/${account}/${input.key}/metadata`]: JSON.stringify({\n title: null,\n description: null,\n repoUrl: deps.bosConfig.repository ?? null,\n version,\n publishedAt: new Date().toISOString(),\n cdnUrl: publishedUrl,\n integrity,\n }),\n [`plugins/${account}/${input.key}/versions/${version}/manifest.json`]:\n JSON.stringify(manifest),\n };\n\n if (existsSync(pluginConfigPath)) {\n try {\n const publishedPluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\"));\n delete publishedPluginConfig.development;\n registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] =\n JSON.stringify(publishedPluginConfig);\n } catch {}\n }\n\n const payload = JSON.stringify(registryEntries);\n const argsBase64 = Buffer.from(payload).toString(\"base64\");\n const privateKey = process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;\n\n await Effect.runPromise(ensureNearCli);\n try {\n await Effect.runPromise(\n executeTransaction({\n account,\n contract: getRegistryNamespaceForNetwork(network),\n method: \"__fastdata_kv\",\n argsBase64,\n network,\n privateKey,\n gas: \"50Tgas\",\n deposit: \"0NEAR\",\n }),\n );\n } catch (registryError) {\n const txHash = extractTransactionHash(registryError);\n if (!txHash) {\n console.warn(\n `[publish] Plugin registry write failed: ${registryError instanceof Error ? registryError.message : registryError}`,\n );\n }\n }\n } catch (registryError) {\n console.warn(\n `[publish] Plugin registry write skipped: ${registryError instanceof Error ? registryError.message : registryError}`,\n );\n }\n }\n\n await refreshApiContractBridge(deps.configDir);\n }\n\n return {\n status: \"published\" as const,\n key: input.key,\n path: localPath,\n script,\n production: publishedUrl ?? attachmentRef?.production,\n integrity: integrity ?? undefined,\n version: version ?? undefined,\n };\n }),\n\n dev: builder.dev.handler(async ({ input }) => {\n ensureEnvFile(deps.configDir);\n\n const localPackages = detectLocalPackages(\n deps.bosConfig ?? undefined,\n deps.runtimeConfig ?? undefined,\n );\n\n const hostSource: SourceMode = localPackages.includes(\"host\")\n ? parseSourceMode(input.host, \"local\")\n : \"remote\";\n const uiSource: SourceMode = localPackages.includes(\"ui\")\n ? parseSourceMode(input.ui, \"local\")\n : \"remote\";\n const apiSource: SourceMode = localPackages.includes(\"api\")\n ? parseSourceMode(input.api, \"local\")\n : \"remote\";\n const authSource: SourceMode = localPackages.includes(\"auth\")\n ? parseSourceMode(input.auth, \"local\")\n : \"remote\";\n const ssr = input.ssr ?? false;\n const proxy = input.proxy ?? false;\n\n const sharedSync = await syncAndGenerateSharedUi({\n configDir: deps.configDir,\n hostMode: hostSource,\n bosConfig: deps.bosConfig ?? undefined,\n extendsChain: [],\n });\n if (sharedSync.catalogChanged) {\n await run(\"bun\", [\"install\"], { cwd: deps.configDir });\n }\n if (\n (apiSource === \"local\" && !proxy) ||\n localPackages.some((pkg) => pkg.startsWith(\"plugin:\"))\n ) {\n await buildEveryPluginQuietly(deps.configDir);\n }\n\n await buildEverythingDevQuietly(deps.configDir);\n\n const refreshed = await loadConfig({ cwd: deps.configDir });\n deps.bosConfig = refreshed?.config ?? deps.bosConfig;\n deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;\n\n if (deps.bosConfig) {\n writeResolvedConfig(\n deps.configDir,\n deps.bosConfig,\n \"development\",\n refreshed?.source.extended,\n );\n writePluginSidebarGen(deps.configDir, deps.bosConfig);\n }\n\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n description: \"No bos.config.json found\",\n processes: [],\n };\n }\n\n if (proxy && !resolveProxyUrl(deps.bosConfig)) {\n return {\n status: \"error\" as const,\n description: \"No valid proxy URL configured in bos.config.json\",\n processes: [],\n };\n }\n\n const hostPort = input.port ?? getHostDevelopmentPort(deps.bosConfig.app.host.development);\n const developmentRuntime = buildRuntimeConfig(deps.bosConfig, {\n uiSource,\n apiSource,\n authSource,\n hostSource,\n env: \"development\",\n plugins: deps.runtimeConfig?.plugins,\n });\n const runtimeConfig = await prepareDevelopmentRuntimeConfig(developmentRuntime, {\n hostPort,\n ssr,\n });\n\n const services = buildServiceDescriptorMap(runtimeConfig, { ssr, proxy });\n const packages = [...services.keys()];\n const displayEnv: Record<string, string> = {};\n const apiDescriptor = services.get(\"api\");\n if (apiDescriptor?.proxy) {\n const proxyUrl = resolveProxyUrl(deps.bosConfig);\n if (proxyUrl) displayEnv.API_PROXY = proxyUrl;\n }\n\n await syncApiContractBridge({\n configDir: deps.configDir,\n runtimeConfig: runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n });\n\n const orchestrator: AppOrchestrator = {\n packages,\n env: displayEnv,\n description: buildDescription(services),\n port: runtimeConfig.host.port,\n interactive: input.interactive,\n };\n\n devApp(orchestrator, services, runtimeConfig);\n\n return {\n status: \"started\" as const,\n description: orchestrator.description,\n processes: packages,\n };\n }),\n\n start: builder.start.handler(async ({ input }) => {\n ensureEnvFile(deps.configDir);\n\n const account = input.account ?? process.env.BOS_ACCOUNT;\n const domain = input.domain ?? process.env.BOS_GATEWAY;\n\n let config: BosConfig | null = null;\n let remoteConfig: BosConfig | null = null;\n\n if (account && domain) {\n remoteConfig = await fetchPublishedConfig(account, domain);\n if (remoteConfig) {\n config = remoteConfig;\n } else {\n console.warn(\n `[Start] Failed to fetch remote config for ${account}/${domain}, falling back to local bos.config.json`,\n );\n }\n }\n\n if (!config) {\n config = deps.bosConfig;\n }\n\n if (!config) {\n return {\n status: \"error\" as const,\n url: \"\",\n error:\n \"No configuration found. Set BOS_ACCOUNT and BOS_GATEWAY environment variables, or provide a local bos.config.json.\",\n };\n }\n\n // Apply runtime overrides from CLI flags / env vars\n if (account) {\n config = { ...config, account };\n }\n if (domain) {\n config = { ...config, domain };\n }\n\n const port = input.port ?? getHostDevelopmentPort(config.app.host.development);\n const isStaging = input.env === \"staging\";\n const runtimePlugins = await buildRuntimePluginsForConfig(\n config,\n deps.configDir,\n \"production\",\n );\n const runtimeConfig = buildRuntimeConfig(config, {\n uiSource: \"remote\",\n apiSource: \"remote\",\n authSource: \"remote\",\n hostSource: \"remote\",\n env: \"production\",\n plugins: runtimePlugins,\n });\n\n writePluginSidebarGen(deps.configDir, config);\n\n // ── Production Readiness Validation ──\n const productionEnv: Record<string, string> = {};\n const warnings: string[] = [];\n\n // Default CORS_ORIGIN to the configured domain if not set\n if (!process.env.CORS_ORIGIN && config.domain) {\n const defaultOrigin = `https://${config.domain}`;\n productionEnv.CORS_ORIGIN = defaultOrigin;\n warnings.push(`CORS_ORIGIN defaulting to ${defaultOrigin}`);\n }\n\n // Validate required secrets\n const requiredSecrets = new Set<string>();\n const missingSecrets: string[] = [];\n\n if (runtimeConfig.auth?.secrets) {\n for (const s of runtimeConfig.auth.secrets) requiredSecrets.add(s);\n }\n if (runtimeConfig.api?.secrets) {\n for (const s of runtimeConfig.api.secrets) requiredSecrets.add(s);\n }\n for (const plugin of Object.values(runtimeConfig.plugins ?? {})) {\n if (plugin.secrets) {\n for (const s of plugin.secrets) requiredSecrets.add(s);\n }\n }\n\n for (const secret of requiredSecrets) {\n const value = process.env[secret];\n if (!value || value.length === 0) {\n missingSecrets.push(secret);\n }\n }\n\n if (missingSecrets.length > 0) {\n warnings.push(`Missing ${missingSecrets.length} secret(s): ${missingSecrets.join(\", \")}`);\n }\n\n const services = buildServiceDescriptorMap(runtimeConfig);\n\n await syncApiContractBridge({\n configDir: deps.configDir,\n runtimeConfig: runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n });\n\n const stagingEnvVars: Record<string, string> = isStaging\n ? { BOS_GATEWAY: config.staging?.domain ?? config.domain ?? \"\" }\n : {};\n\n const configSource = remoteConfig\n ? `bos://${account}/${domain}`\n : (findConfigPath() ?? \"bos.config.json\");\n\n const configSourceHttp =\n remoteConfig && account && domain ? buildRegistryConfigUrl(account, domain) : undefined;\n\n const summaryLines: string[] = [\"\", ` ${colors.dim(\"Config Source:\")} ${configSource}`];\n if (configSourceHttp) {\n summaryLines.push(` ${colors.dim(configSourceHttp)}`);\n }\n summaryLines.push(\n ` ${colors.dim(\"Account:\")} ${config.account}`,\n ` ${colors.dim(\"Domain:\")} ${config.domain ?? \"not configured\"}`,\n \"\",\n ` ${colors.dim(\"Modules:\")}`,\n ` ${colors.dim(\"HOST\")} → ${runtimeConfig.host.remoteUrl ?? runtimeConfig.host.url ?? \"local\"}`,\n ` ${colors.dim(\"UI\")} → ${runtimeConfig.ui.url ?? \"local\"}`,\n ` ${colors.dim(\"API\")} → ${runtimeConfig.api.url ?? \"local\"}`,\n );\n if (runtimeConfig.auth) {\n summaryLines.push(` ${colors.dim(\"AUTH\")} → ${runtimeConfig.auth.url ?? \"local\"}`);\n }\n if (warnings.length > 0) {\n summaryLines.push(\"\");\n for (const w of warnings) {\n summaryLines.push(` ${colors.yellow(w)}`);\n }\n }\n summaryLines.push(\"\");\n console.log(summaryLines.join(\"\\n\"));\n\n const orchestrator: AppOrchestrator = {\n packages: [\"host\"],\n env: {\n NODE_ENV: \"production\",\n ...productionEnv,\n ...stagingEnvVars,\n },\n description: `${isStaging ? \"Staging\" : \"Production\"} Mode (${config.account})`,\n port,\n interactive: input.interactive,\n noLogs: true,\n };\n\n startApp(orchestrator, services, runtimeConfig);\n return {\n status: \"running\" as const,\n url: `http://localhost:${port}`,\n };\n }),\n\n build: builder.build.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n built: [],\n skipped: [],\n };\n }\n\n const buildEnv: BosEnv = input.deploy ? \"production\" : \"development\";\n\n writeResolvedConfig(deps.configDir, deps.bosConfig, buildEnv);\n writePluginSidebarGen(deps.configDir, deps.bosConfig);\n\n const targets = selectWorkspaceTargets(input.packages, deps.bosConfig);\n if (targets.length === 0) {\n return {\n status: \"error\" as const,\n built: [],\n skipped: [],\n };\n }\n\n const runtimeConfig = buildRuntimeConfig(deps.bosConfig, {\n uiSource: deps.bosConfig.app.ui?.development ? \"local\" : \"remote\",\n apiSource: deps.bosConfig.app.api?.development ? \"local\" : \"remote\",\n authSource: deps.bosConfig.app.auth?.development ? \"local\" : \"remote\",\n hostSource: deps.bosConfig.app.host?.development ? \"local\" : \"remote\",\n env: buildEnv,\n plugins: deps.runtimeConfig?.plugins,\n });\n\n await syncApiContractBridge({\n configDir: deps.configDir,\n runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n });\n\n const { built, skipped } = await buildWorkspaceTargets({\n configDir: deps.configDir,\n bosConfig: deps.bosConfig,\n runtimeConfig: runtimeConfig,\n targets,\n deploy: input.deploy,\n });\n\n if (built.length === 0) {\n return {\n status: \"error\" as const,\n built: [],\n skipped,\n };\n }\n\n return {\n status: \"success\" as const,\n built,\n skipped,\n deployed: input.deploy,\n };\n }),\n\n publish: builder.publish.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n registryUrl: \"\",\n error: \"No bos.config.json found\",\n };\n }\n\n const account = deps.bosConfig.account;\n const gateway = deps.bosConfig.domain;\n if (!gateway) {\n return {\n status: \"error\" as const,\n registryUrl: \"\",\n error: \"bos.config.json must define domain to publish\",\n };\n }\n\n const network = input.network ?? getNetworkIdForAccount(account);\n const bosUrl = `bos://${account}/${gateway}`;\n const registryUrl = buildRegistryConfigUrlForNetwork(network, account, gateway);\n const targets = selectWorkspaceTargets(input.packages, deps.bosConfig);\n\n let publishConfig = deps.bosConfig;\n let built: string[] | undefined;\n let skipped: string[] | undefined;\n\n if (input.dryRun) {\n return {\n status: \"dry-run\" as const,\n registryUrl,\n built,\n skipped,\n };\n }\n\n if (input.deploy) {\n const result = await buildWorkspaceTargets({\n configDir: deps.configDir,\n bosConfig: deps.bosConfig,\n runtimeConfig: deps.runtimeConfig,\n targets,\n deploy: true,\n });\n built = result.built;\n skipped = result.skipped;\n\n const refreshed = await loadConfig({ cwd: deps.configDir });\n if (refreshed?.config) {\n deps.bosConfig = refreshed.config;\n deps.runtimeConfig = refreshed.runtime;\n publishConfig = refreshed.config;\n }\n }\n\n const registryEntries: Record<string, string> = {\n [`apps/${account}/${gateway}/bos.config.json`]: JSON.stringify(publishConfig),\n };\n\n for (const [pluginKey, pluginEntry] of Object.entries(publishConfig.plugins ?? {})) {\n const pluginRef = getPluginRef(pluginEntry);\n if (!pluginRef?.development?.startsWith(\"local:\")) continue;\n\n const localPath = join(deps.configDir, pluginRef.development.slice(\"local:\".length));\n const pluginConfigPath = join(localPath, \"bos.config.json\");\n if (!existsSync(pluginConfigPath)) continue;\n\n try {\n const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\")) as Record<\n string,\n unknown\n >;\n const pluginDomain =\n typeof pluginConfig.domain === \"string\"\n ? pluginConfig.domain\n : `${pluginKey}.${gateway}`;\n delete pluginConfig.development;\n registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] =\n JSON.stringify(pluginConfig);\n } catch {}\n }\n\n const payload = JSON.stringify(registryEntries);\n const argsBase64 = Buffer.from(payload).toString(\"base64\");\n const privateKey =\n input.privateKey || process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;\n\n try {\n await Effect.runPromise(ensureNearCli);\n let txHash: string | undefined;\n\n try {\n const tx = await Effect.runPromise(\n executeTransaction({\n account,\n contract: getRegistryNamespaceForNetwork(network),\n method: \"__fastdata_kv\",\n argsBase64,\n network,\n privateKey,\n gas: \"300Tgas\",\n deposit: \"0NEAR\",\n }),\n );\n txHash = tx.txHash;\n } catch (error) {\n txHash = extractTransactionHash(error);\n\n if (!txHash) {\n throw error;\n }\n\n try {\n const verifiedConfig = await fetchBosConfigFromFastKv<BosConfig>(bosUrl);\n if (JSON.stringify(verifiedConfig) !== JSON.stringify(publishConfig)) {\n throw error;\n }\n } catch {\n // Config may not exist yet on first publish or propagation delay;\n // a valid txHash is sufficient proof the transaction was submitted.\n }\n }\n\n return {\n status: \"published\" as const,\n registryUrl,\n txHash,\n built,\n skipped,\n };\n } catch (error) {\n return {\n status: \"error\" as const,\n registryUrl,\n error: error instanceof Error ? error.message : \"Unknown error\",\n built,\n skipped,\n };\n }\n }),\n\n keyPublish: builder.keyPublish.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n account: \"\",\n network: \"mainnet\" as const,\n contract: \"\",\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n error: \"No bos.config.json found\",\n };\n }\n\n const account = deps.bosConfig.account;\n const network = getNetworkIdForAccount(account);\n const contract = getRegistryNamespaceForAccount(account);\n try {\n await Effect.runPromise(ensureNearCli);\n const keyPair = await addFunctionCallAccessKey({\n account,\n contract,\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n network,\n });\n\n return {\n status: \"published\" as const,\n account,\n network,\n contract,\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n publicKey: keyPair.publicKey,\n privateKey: keyPair.privateKey,\n };\n } catch (error) {\n return {\n status: \"error\" as const,\n account,\n network,\n contract,\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n init: builder.init.handler(async ({ input }) => {\n try {\n let extendsAccount = input.extendsAccount;\n let extendsGateway = input.extendsGateway;\n let directory = input.directory;\n let account = input.account;\n let domain = input.domain;\n let withHost = input.withHost;\n let plugins = input.plugins;\n\n if (input.extends) {\n const match = input.extends.match(/^(?:bos:\\/\\/)?([^/]+)\\/(.+)$/);\n if (match) {\n if (!extendsAccount) extendsAccount = match[1];\n if (!extendsGateway) extendsGateway = match[2];\n }\n }\n\n if (!input.noInteractive) {\n const prompted = await promptInitOptions({\n extendsAccount,\n extendsGateway,\n extends: input.extends,\n directory,\n account,\n domain,\n plugins,\n withHost,\n });\n extendsAccount = prompted.extendsAccount;\n extendsGateway = prompted.extendsGateway;\n directory = prompted.directory;\n account = prompted.account;\n domain = prompted.domain;\n withHost = prompted.withHost;\n plugins = prompted.plugins;\n }\n\n extendsAccount = extendsAccount || \"dev.everything.near\";\n extendsGateway = extendsGateway || \"everything.dev\";\n directory = directory || domain || extendsGateway;\n plugins = plugins?.length ? plugins : [\"settings\"];\n\n try {\n await fetchParentConfig(extendsAccount, extendsGateway);\n } catch {\n return {\n status: \"error\" as const,\n directory,\n extendsAccount,\n extendsGateway,\n account,\n domain,\n extends: `bos://${extendsAccount}/${extendsGateway}`,\n plugins: plugins ?? [],\n filesCopied: 0,\n error: `No config found at bos://${extendsAccount}/${extendsGateway} — are you sure this is the right parent?`,\n };\n }\n\n const { sourceDir, parentConfig, cleanup } = await resolveSourceDir({\n extendsAccount,\n extendsGateway,\n source: input.source,\n });\n\n try {\n const patterns = await readTemplatekeep(sourceDir);\n if (patterns.length === 0) {\n return {\n status: \"error\" as const,\n directory,\n extendsAccount,\n extendsGateway,\n account,\n domain,\n extends: `bos://${extendsAccount}/${extendsGateway}`,\n plugins: plugins ?? [],\n filesCopied: 0,\n error: \"No .templatekeep found in template source\",\n };\n }\n\n const pluginRoutes: Record<string, string[]> = {};\n if (parentConfig.plugins) {\n for (const [key, entry] of Object.entries(parentConfig.plugins)) {\n const entryRef = getPluginRef(entry);\n if (entryRef?.routes && entryRef.routes.length > 0) {\n pluginRoutes[key] = entryRef.routes;\n }\n }\n }\n\n const s = p.spinner();\n s.start(\"Setting up project\");\n\n const filesCopied = await copyFilteredFiles(sourceDir, directory, patterns, {\n withHost,\n plugins,\n pluginRoutes,\n });\n\n await personalizeConfig(directory, {\n extendsAccount,\n extendsGateway,\n account: account || extendsAccount,\n domain: domain || extendsGateway,\n plugins,\n pluginRoutes,\n workspaceOpts: { sourceDir },\n withHost,\n });\n\n await writeInitSnapshot(directory, extendsAccount, extendsGateway, sourceDir, patterns, {\n withHost,\n plugins,\n pluginRoutes,\n });\n\n ensureEnvFile(directory, { domain });\n\n if (!input.noInstall) {\n await runBunInstall(directory);\n await runTypesGen(directory);\n await generateDatabaseMigrations(directory);\n }\n\n const initConfig = await loadConfig({ cwd: directory });\n if (initConfig?.config) {\n writePluginSidebarGen(directory, initConfig.config);\n }\n\n s.stop(\"Project initialized\");\n\n return {\n status: \"initialized\" as const,\n directory,\n extendsAccount,\n extendsGateway,\n account,\n domain,\n extends: `bos://${extendsAccount}/${extendsGateway}`,\n plugins,\n filesCopied,\n };\n } finally {\n await cleanup();\n }\n } catch (error) {\n return {\n status: \"error\" as const,\n directory: input.directory ?? \"\",\n extendsAccount: input.extendsAccount ?? \"\",\n extendsGateway: input.extendsGateway ?? \"\",\n account: input.account,\n domain: input.domain,\n extends:\n input.extendsAccount && input.extendsGateway\n ? `bos://${input.extendsAccount}/${input.extendsGateway}`\n : \"\",\n plugins: input.plugins ?? [],\n filesCopied: 0,\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n sync: builder.sync.handler(async ({ input }) => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n updated: [],\n skipped: [],\n added: [],\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n const result = await syncTemplate(projectDir, input);\n\n if (result.status === \"synced\" || result.status === \"dry-run\") {\n const syncedConfig = await loadConfig({ cwd: projectDir });\n if (syncedConfig?.config) {\n writePluginSidebarGen(projectDir, syncedConfig.config);\n }\n }\n\n return result;\n } catch (error) {\n return {\n status: \"error\" as const,\n updated: [],\n skipped: [],\n added: [],\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n upgrade: builder.upgrade.handler(async ({ input }) => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n packages: [],\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n return await upgradeTemplate(projectDir, input);\n } catch (error) {\n return {\n status: \"error\" as const,\n packages: [],\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n typesGen: builder.typesGen.handler(async ({ input }) => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n generated: [],\n fetched: [],\n skipped: [],\n failed: [],\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n const env =\n input.env ?? (process.env.NODE_ENV === \"production\" ? \"production\" : \"development\");\n\n const refreshed = await loadConfig({ cwd: projectDir, env });\n if (!refreshed) {\n return {\n status: \"error\" as const,\n generated: [],\n fetched: [],\n skipped: [],\n failed: [],\n error: \"Failed to load bos.config.json\",\n };\n }\n\n if (input.dryRun) {\n const pluginEntries = Object.entries(refreshed.runtime.plugins ?? {});\n const fetched: string[] = [];\n const skipped: string[] = [];\n\n if (refreshed.runtime.api.source !== \"local\") {\n fetched.push(refreshed.runtime.api.url);\n } else {\n skipped.push(\"api (local)\");\n }\n\n if (refreshed.runtime.auth) {\n if (refreshed.runtime.auth.source !== \"local\") {\n fetched.push(refreshed.runtime.auth.url);\n } else {\n skipped.push(\"auth (local)\");\n }\n }\n\n for (const [key, plugin] of pluginEntries) {\n if (plugin.url && plugin.source !== \"local\") {\n fetched.push(plugin.url);\n } else if (plugin.localPath) {\n skipped.push(`${key} (local)`);\n }\n }\n\n const generated = [\n \"ui/src/lib/api-types.gen.ts\",\n \"ui/src/lib/auth-types.gen.ts\",\n \"api/src/lib/plugins-types.gen.ts\",\n \"api/src/lib/auth-types.gen.ts\",\n ];\n if (existsSync(join(projectDir, \"host\", \"src\"))) {\n generated.push(\"host/src/lib/auth-types.gen.ts\");\n }\n\n return {\n status: \"success\" as const,\n generated,\n fetched,\n skipped,\n failed: [],\n source: refreshed.runtime.api.source,\n };\n }\n\n const result = await syncApiContractBridge({\n configDir: projectDir,\n runtimeConfig: refreshed.runtime,\n apiBaseUrl: refreshed.runtime.api.url,\n });\n\n const generated = [\n \"ui/src/lib/api-types.gen.ts\",\n \"api/src/lib/plugins-types.gen.ts\",\n \"api/src/lib/auth-types.gen.ts\",\n ];\n if (\n refreshed.runtime.auth &&\n (refreshed.runtime.auth.source !== \"local\" || refreshed.runtime.auth.localPath)\n ) {\n generated.push(\"ui/src/lib/auth-types.gen.ts\");\n }\n if (existsSync(join(projectDir, \"host\", \"src\"))) {\n generated.push(\"host/src/lib/auth-types.gen.ts\");\n }\n\n return {\n status: \"success\" as const,\n generated,\n fetched: result.source === \"remote\" ? [refreshed.runtime.api.url] : [],\n skipped: result.source === \"local\" ? [\"api (local)\"] : [],\n failed: [],\n source: result.source,\n };\n } catch (error) {\n return {\n status: \"error\" as const,\n generated: [],\n fetched: [],\n skipped: [],\n failed: [],\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n status: builder.status.handler(async () => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n packages: [],\n envFile: \"missing\" as const,\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n return await getStatus(projectDir);\n } catch (error) {\n return {\n status: \"error\" as const,\n packages: [],\n envFile: \"missing\" as const,\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n }),\n});\n\nfunction extractTransactionHash(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n const match = message.match(/Transaction ID:\\s*([A-Za-z0-9]+)/i);\n return match?.[1];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs","names":["resolveLocalDevelopmentPath","loadConfig","syncApiContractBridge","run","fetchBosConfigFromFastKv","syncAndGenerateSharedUi","z","bosContract","Effect","getProjectRoot","saveBosConfig","fetchRemotePluginManifest","computeSriHashForUrl","getNetworkIdForAccount","ensureNearCli","executeTransaction","getRegistryNamespaceForNetwork","detectLocalPackages","getHostDevelopmentPort","prepareDevelopmentRuntimeConfig","buildRuntimeConfig","buildServiceDescriptorMap","buildDescription","buildRuntimePluginsForConfig","findConfigPath","buildRegistryConfigUrl","colors","buildRegistryConfigUrlForNetwork","getRegistryNamespaceForAccount","addFunctionCallAccessKey","promptInitOptions","fetchParentConfig","resolveSourceDir","readTemplatekeep","p","copyFilteredFiles","personalizeConfig","writeInitSnapshot","runBunInstall","runTypesGen","generateDatabaseMigrations","syncTemplate","upgradeTemplate","getStatus"],"sources":["../src/plugin.ts"],"sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { Effect } from \"effect\";\nimport { syncApiContractBridge } from \"./api-contract\";\nimport { buildRuntimeConfig, detectLocalPackages, prepareDevelopmentRuntimeConfig } from \"./app\";\nimport {\n copyFilteredFiles,\n fetchParentConfig,\n generateDatabaseMigrations,\n personalizeConfig,\n readTemplatekeep,\n resolveSourceDir,\n runBunInstall,\n runTypesGen,\n writeInitSnapshot,\n} from \"./cli/init\";\nimport { promptInitOptions } from \"./cli/prompts\";\nimport { getStatus } from \"./cli/status\";\nimport { syncTemplate } from \"./cli/sync\";\nimport { upgradeTemplate } from \"./cli/upgrade\";\nimport {\n buildRuntimePluginsForConfig,\n findConfigPath,\n getHostDevelopmentPort,\n getProjectRoot,\n loadConfig,\n resolveLocalDevelopmentPath,\n writeResolvedConfig,\n} from \"./config\";\nimport { type BosConfigResult, bosContract, type PluginListResult } from \"./contract\";\nimport { devApp, startApp } from \"./dev-session\";\nimport {\n buildRegistryConfigUrl,\n buildRegistryConfigUrlForNetwork,\n fetchBosConfigFromFastKv,\n fetchRemotePluginManifest,\n getRegistryNamespaceForAccount,\n getRegistryNamespaceForNetwork,\n type PluginManifest,\n} from \"./fastkv\";\nimport { computeSriHashForUrl } from \"./integrity\";\nimport type { BosEnv } from \"./merge\";\nimport { addFunctionCallAccessKey, ensureNearCli, executeTransaction } from \"./near-cli\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport { createPlugin, z } from \"./sdk\";\nimport {\n type AppOrchestrator,\n buildDescription,\n buildServiceDescriptorMap,\n} from \"./service-descriptor\";\nimport { syncAndGenerateSharedUi } from \"./shared\";\nimport { writePluginSidebarGen } from \"./sidebar\";\nimport type { BosConfig, BosPluginRef, RuntimeConfig, SourceMode } from \"./types\";\nimport { run } from \"./utils/run\";\nimport { saveBosConfig } from \"./utils/save-config\";\nimport { colors } from \"./utils/theme\";\n\nfunction ensureEnvFile(configDir: string, opts?: { domain?: string }): void {\n const envPath = join(configDir, \".env\");\n const examplePath = join(configDir, \".env.example\");\n\n if (existsSync(envPath)) return;\n\n if (!existsSync(examplePath)) return;\n\n const content = readFileSync(examplePath, \"utf-8\");\n const lines = content.split(\"\\n\");\n\n const secret = randomBytes(32).toString(\"base64url\");\n const corsOrigin = opts?.domain\n ? `http://localhost:3000,https://${opts.domain}`\n : \"http://localhost:3000\";\n\n const updated = lines\n .map((line) => {\n if (/^BETTER_AUTH_SECRET=/.test(line)) {\n return `BETTER_AUTH_SECRET=${secret}`;\n }\n if (/^CORS_ORIGIN=/.test(line)) {\n return `CORS_ORIGIN=${corsOrigin}`;\n }\n return line;\n })\n .join(\"\\n\");\n\n writeFileSync(envPath, updated);\n p.log.info(`Created .env from .env.example with generated BETTER_AUTH_SECRET`);\n}\n\nconst buildCommands: Record<string, { cmd: string; args: string[] }> = {\n host: { cmd: \"bun\", args: [\"run\", \"build\"] },\n ui: { cmd: \"bun\", args: [\"run\", \"build\"] },\n api: { cmd: \"bun\", args: [\"run\", \"build\"] },\n};\n\nconst PUBLISH_FUNCTION_NAMES = [\"__fastdata_kv\"];\n\ntype BosDeps = {\n bosConfig: BosConfig | null;\n runtimeConfig: RuntimeConfig | null;\n configDir: string;\n};\n\ntype PluginAttachmentConfig = NonNullable<BosConfig[\"plugins\"]>[string];\n\nfunction getPluginRef(entry: string | BosPluginRef | undefined | null): BosPluginRef | null {\n if (!entry || typeof entry === \"string\") return null;\n return entry;\n}\n\nfunction parseSourceMode(value: string | undefined, defaultValue: SourceMode): SourceMode {\n if (value === \"local\" || value === \"remote\") return value;\n return defaultValue;\n}\n\nfunction buildConfigResult(bosConfig: BosConfig | null): BosConfigResult {\n const packages = bosConfig ? Object.keys(bosConfig.app) : [];\n const remotes = packages.filter((name) => name !== \"host\");\n\n return {\n config: bosConfig,\n packages,\n remotes,\n };\n}\n\ntype WorkspaceTarget = {\n key: string;\n kind: \"app\" | \"plugin\";\n path: string;\n};\n\nfunction resolveWorkspaceTarget(\n key: string,\n bosConfig: BosConfig | null,\n runtimeConfig: RuntimeConfig | null,\n configDir: string,\n): WorkspaceTarget | null {\n if (bosConfig?.app && key in bosConfig.app) {\n const appEntry = (bosConfig.app as Record<string, { development?: string }>)[key];\n const devPath = resolveLocalDevelopmentPath(appEntry?.development, configDir);\n if (devPath) {\n return {\n key,\n kind: \"app\",\n path: devPath,\n };\n }\n return {\n key,\n kind: \"app\",\n path: `${configDir}/${key}`,\n };\n }\n\n const runtimePlugin = runtimeConfig?.plugins?.[key];\n const pluginPath =\n runtimePlugin?.localPath ??\n resolveLocalDevelopmentPath(getPluginRef(bosConfig?.plugins?.[key])?.development, configDir);\n if (pluginPath) {\n return {\n key,\n kind: \"plugin\",\n path: pluginPath,\n };\n }\n\n return null;\n}\n\nfunction isValidProxyUrl(url: string): boolean {\n try {\n const parsed = new URL(url);\n return parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction resolveProxyUrl(bosConfig: BosConfig | null): string | null {\n if (!bosConfig) return null;\n const apiConfig = bosConfig.app.api;\n if (!apiConfig) return null;\n if (apiConfig.proxy && isValidProxyUrl(apiConfig.proxy)) return apiConfig.proxy;\n if (apiConfig.production && isValidProxyUrl(apiConfig.production)) return apiConfig.production;\n return null;\n}\n\nfunction sanitizePluginKey(value: string): string {\n return value\n .replace(/[^A-Za-z0-9/_-]/g, \"-\")\n .replace(/\\/+/g, \"/\")\n .split(\"/\")\n .filter(Boolean)\n .map((segment) => segment.replace(/[^A-Za-z0-9_-]/g, \"-\"))\n .join(\"/\")\n .replace(/^\\/+|\\/+$/g, \"\");\n}\n\nfunction defaultPluginKey(source: string): string {\n const normalized = source.replace(/^local:/, \"\").replace(/\\/$/, \"\");\n if (source.startsWith(\"local:\")) {\n return sanitizePluginKey(basename(normalized)) || \"plugin\";\n }\n\n try {\n const url = new URL(source);\n return sanitizePluginKey(basename(url.pathname) || url.hostname) || \"plugin\";\n } catch {\n return sanitizePluginKey(source) || \"plugin\";\n }\n}\n\nfunction pluginLocalPath(configDir: string, attachment: PluginAttachmentConfig): string | null {\n const ref = getPluginRef(attachment);\n const source = ref?.development ?? ref?.production;\n if (!source?.startsWith(\"local:\")) {\n return null;\n }\n\n return join(configDir, source.slice(\"local:\".length));\n}\n\nfunction listPluginAttachments(config: BosConfig | null) {\n return (Object.entries(config?.plugins ?? {}) as Array<[string, PluginAttachmentConfig]>)\n .map(([key, attachment]) => {\n const ref = getPluginRef(attachment);\n return {\n key,\n development: ref?.development,\n production: ref?.production,\n localPath: ref?.development?.startsWith(\"local:\")\n ? ref.development.slice(\"local:\".length)\n : undefined,\n source: ref?.development?.startsWith(\"local:\") ? (\"local\" as const) : (\"remote\" as const),\n integrity: ref?.integrity,\n version: ref?.version,\n name: ref?.name,\n };\n })\n .sort((a, b) => a.key.localeCompare(b.key));\n}\n\ninterface GeneratedArtifacts {\n sidebarPath: string;\n resolvedConfigPath?: string;\n contractBridgePath: string;\n}\n\nasync function generateCodeArtifacts(\n configDir: string,\n config: BosConfig,\n opts?: {\n env?: BosEnv;\n extendsChain?: string[];\n runtimeConfig?: RuntimeConfig;\n },\n): Promise<GeneratedArtifacts | null> {\n writePluginSidebarGen(configDir, config);\n\n if (opts?.env) {\n writeResolvedConfig(configDir, config, opts.env, opts.extendsChain);\n }\n\n const runtimeConfig = opts?.runtimeConfig ?? (await loadConfig({ cwd: configDir }))?.runtime;\n if (!runtimeConfig) return null;\n\n const bridge = await syncApiContractBridge({\n configDir,\n runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n });\n\n return {\n sidebarPath: join(configDir, \"ui/src/lib/plugin-sidebar.gen.ts\"),\n resolvedConfigPath: opts?.env ? join(configDir, \".bos/bos.resolved-config.json\") : undefined,\n contractBridgePath: bridge.bridgePath,\n };\n}\n\nfunction extractPublishedUrl(output: string): string | null {\n const match = output.match(/https?:\\/\\/[^\\s\"'<>]+/g);\n if (!match || match.length === 0) return null;\n return match[match.length - 1] ?? null;\n}\n\nasync function buildEveryPluginQuietly(cwd: string) {\n const packageDir = `${cwd}/packages/every-plugin`;\n const packageExists = await Bun.file(`${packageDir}/package.json`).exists();\n if (!packageExists) {\n return;\n }\n\n const distPath = `${cwd}/packages/every-plugin/dist/build/rspack/plugin.mjs`;\n const distExists = await Bun.file(distPath).exists();\n\n if (distExists) {\n return;\n }\n\n const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/every-plugin\", \"build\"], {\n cwd,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (result.exitCode === 0) {\n console.log(\"[build:ssr] build succeeded\");\n return;\n }\n\n if (result.stdout.trim()) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr.trim()) {\n process.stderr.write(result.stderr);\n }\n\n throw new Error(\n `bun run --cwd packages/every-plugin build failed with exit code ${result.exitCode}`,\n );\n}\n\nasync function buildEverythingDevQuietly(cwd: string) {\n const packageDir = `${cwd}/packages/everything-dev`;\n const packageExists = await Bun.file(`${packageDir}/package.json`).exists();\n if (!packageExists) {\n return;\n }\n\n const distPath = `${cwd}/packages/everything-dev/dist/index.mjs`;\n const distExists = await Bun.file(distPath).exists();\n\n if (distExists) {\n return;\n }\n\n const result = (await run(\"bun\", [\"run\", \"--cwd\", \"packages/everything-dev\", \"build\"], {\n cwd,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (result.exitCode === 0) {\n console.log(\"[everything-dev] build succeeded\");\n return;\n }\n\n if (result.stdout.trim()) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr.trim()) {\n process.stderr.write(result.stderr);\n }\n\n throw new Error(\n `bun run --cwd packages/everything-dev build failed with exit code ${result.exitCode}`,\n );\n}\n\nasync function fetchPublishedConfig(\n accountId: string,\n gatewayId: string,\n): Promise<BosConfig | null> {\n try {\n return await fetchBosConfigFromFastKv<BosConfig>(`bos://${accountId}/${gatewayId}`);\n } catch {\n return null;\n }\n}\n\nfunction selectWorkspaceTargets(packages: string, bosConfig: BosConfig | null): string[] {\n const allPackages = [\n ...Object.keys(bosConfig?.app ?? {}),\n ...Object.keys(bosConfig?.plugins ?? {}),\n ];\n if (packages === \"all\") {\n return allPackages;\n }\n\n return packages\n .split(\",\")\n .map((pkg) => pkg.trim())\n .filter((pkg) => allPackages.includes(pkg));\n}\n\nasync function buildWorkspaceTargets(opts: {\n configDir: string;\n bosConfig: BosConfig | null;\n runtimeConfig: RuntimeConfig | null;\n targets: string[];\n deploy: boolean;\n}): Promise<{ built: string[]; skipped: string[] }> {\n const existing: WorkspaceTarget[] = [];\n const skipped: string[] = [];\n\n for (const target of opts.targets) {\n const resolved = resolveWorkspaceTarget(\n target,\n opts.bosConfig,\n opts.runtimeConfig,\n opts.configDir,\n );\n if (!resolved) {\n skipped.push(target);\n continue;\n }\n\n const exists = await Bun.file(`${resolved.path}/package.json`).exists();\n if (exists) existing.push(resolved);\n else skipped.push(target);\n }\n\n if (existing.length === 0) {\n return { built: [], skipped };\n }\n\n const sharedSync = await syncAndGenerateSharedUi({\n configDir: opts.configDir,\n hostMode: \"local\",\n bosConfig: opts.bosConfig ?? undefined,\n extendsChain: [],\n });\n if (sharedSync.catalogChanged) {\n await run(\"bun\", [\"install\"], { cwd: opts.configDir });\n }\n\n if (existing.some((entry) => entry.key === \"api\")) {\n await buildEveryPluginQuietly(opts.configDir);\n }\n\n await buildEverythingDevQuietly(opts.configDir);\n\n const env: Record<string, string> = {\n ...process.env,\n NODE_ENV: opts.deploy ? \"production\" : \"development\",\n };\n if (opts.deploy) {\n env.DEPLOY = \"true\";\n } else {\n delete env.DEPLOY;\n }\n\n const orderedExisting = opts.deploy\n ? [\n ...existing.filter((entry) => entry.kind === \"app\" && entry.key !== \"host\"),\n ...existing.filter((entry) => entry.kind === \"plugin\"),\n ...existing.filter((entry) => entry.kind === \"app\" && entry.key === \"host\"),\n ]\n : existing;\n const built: string[] = [];\n\n for (const resolved of orderedExisting) {\n const pkgJson = JSON.parse(await Bun.file(`${resolved.path}/package.json`).text()) as {\n scripts?: Record<string, string>;\n };\n const shouldDeployScript = opts.deploy && pkgJson.scripts?.deploy;\n const buildConfig = shouldDeployScript\n ? { cmd: \"bun\", args: [\"run\", \"deploy\"] }\n : (buildCommands[resolved.key] ?? { cmd: \"bun\", args: [\"run\", \"build\"] });\n\n await run(buildConfig.cmd, buildConfig.args, {\n cwd: resolved.path,\n env,\n });\n built.push(resolved.key);\n }\n\n return { built, skipped };\n}\n\nexport default createPlugin({\n variables: z.object({\n configPath: z.string().optional(),\n }),\n secrets: z.object({}),\n contract: bosContract,\n initialize: (config) =>\n Effect.promise(async () => {\n const configResult = await loadConfig({ path: config.variables.configPath });\n return {\n bosConfig: configResult?.config ?? null,\n runtimeConfig: configResult?.runtime ?? null,\n configDir: getProjectRoot(),\n } satisfies BosDeps;\n }),\n shutdown: () => Effect.void,\n createRouter: (deps, builder) => ({\n config: builder.config.handler(async () => buildConfigResult(deps.bosConfig)),\n\n pluginAdd: builder.pluginAdd.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n key: \"\",\n error: \"No bos.config.json found\",\n };\n }\n\n const isBosRef = input.source.startsWith(\"bos://\");\n const isLocal = input.source.startsWith(\"local:\");\n const key = sanitizePluginKey(\n input.as ??\n (isBosRef ? (input.source.split(\"/\").pop() ?? \"plugin\") : defaultPluginKey(input.source)),\n );\n const existing = deps.bosConfig.plugins?.[key];\n const existingEntry = existing && typeof existing === \"object\" ? existing : {};\n const nextPlugins = { ...(deps.bosConfig.plugins ?? {}) };\n\n if (isBosRef) {\n nextPlugins[key] = {\n ...existingEntry,\n extends: input.source,\n };\n } else if (isLocal) {\n nextPlugins[key] = {\n ...existingEntry,\n development: input.source,\n ...(existingEntry.extends ? {} : {}),\n };\n } else {\n nextPlugins[key] = {\n ...existingEntry,\n production: input.production ?? input.source,\n };\n }\n\n deps.bosConfig = {\n ...deps.bosConfig,\n plugins: nextPlugins,\n };\n\n await saveBosConfig(deps.configDir, deps.bosConfig);\n await generateCodeArtifacts(deps.configDir, deps.bosConfig);\n\n const stored = deps.bosConfig.plugins?.[key];\n const storedObj = stored && typeof stored === \"object\" ? stored : {};\n\n return {\n status: \"added\" as const,\n key,\n development: storedObj.development,\n production: storedObj.production,\n integrity: storedObj.integrity,\n version: storedObj.version,\n };\n }),\n\n pluginRemove: builder.pluginRemove.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: \"No bos.config.json found\",\n };\n }\n\n if (!deps.bosConfig.plugins?.[input.key]) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Plugin '${input.key}' is not configured`,\n };\n }\n\n const nextPlugins = { ...(deps.bosConfig.plugins ?? {}) };\n delete nextPlugins[input.key];\n deps.bosConfig = {\n ...deps.bosConfig,\n plugins: Object.keys(nextPlugins).length > 0 ? nextPlugins : undefined,\n };\n\n await saveBosConfig(deps.configDir, deps.bosConfig);\n await generateCodeArtifacts(deps.configDir, deps.bosConfig);\n\n return {\n status: \"removed\" as const,\n key: input.key,\n };\n }),\n\n pluginList: builder.pluginList.handler(async () => {\n const plugins: PluginListResult[\"plugins\"] = listPluginAttachments(deps.bosConfig);\n return {\n status: \"listed\" as const,\n plugins,\n };\n }),\n\n pluginPublish: builder.pluginPublish.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: \"No bos.config.json found\",\n };\n }\n\n const attachment = deps.bosConfig.plugins?.[input.key];\n if (!attachment) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Plugin '${input.key}' is not configured`,\n };\n }\n\n const attachmentRef = getPluginRef(attachment);\n\n const localPath = pluginLocalPath(deps.configDir, attachment);\n if (!localPath) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Plugin '${input.key}' does not have a local development path`,\n };\n }\n\n const pkgPath = join(localPath, \"package.json\");\n if (!(await Bun.file(pkgPath).exists())) {\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Missing package.json at ${localPath}`,\n };\n }\n\n const pkgJson = (await Bun.file(pkgPath).json()) as {\n scripts?: Record<string, string>;\n name?: string;\n version?: string;\n };\n const script = pkgJson.scripts?.deploy ? \"deploy\" : \"build\";\n\n const { stdout, stderr, exitCode } = (await run(\"bun\", [\"run\", script], {\n cwd: localPath,\n capture: true,\n })) as { stdout: string; stderr: string; exitCode: number };\n\n if (exitCode !== 0) {\n if (stdout.trim()) process.stdout.write(stdout);\n if (stderr.trim()) process.stderr.write(stderr);\n return {\n status: \"error\" as const,\n key: input.key,\n error: `Publish failed with exit code ${exitCode}`,\n };\n }\n\n if (stdout.trim()) process.stdout.write(stdout);\n if (stderr.trim()) process.stderr.write(stderr);\n\n let publishedUrl = extractPublishedUrl(`${stdout}\\n${stderr}`);\n\n let manifest: PluginManifest | null = null;\n if (publishedUrl) {\n manifest = await fetchRemotePluginManifest(publishedUrl);\n } else if (attachmentRef?.production) {\n manifest = await fetchRemotePluginManifest(attachmentRef.production);\n if (manifest) {\n publishedUrl = attachmentRef.production;\n }\n }\n\n const integrity = publishedUrl ? await computeSriHashForUrl(publishedUrl) : null;\n const version = manifest?.plugin.version ?? pkgJson.version;\n\n if (publishedUrl) {\n const pluginConfigPath = join(localPath, \"bos.config.json\");\n if (existsSync(pluginConfigPath)) {\n try {\n const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\")) as Record<\n string,\n unknown\n >;\n if (!pluginConfig.app) pluginConfig.app = {};\n const app = pluginConfig.app as Record<string, unknown>;\n if (!app.api) app.api = {};\n const api = app.api as Record<string, unknown>;\n api.production = publishedUrl;\n if (integrity) {\n api.integrity = integrity;\n } else {\n delete api.integrity;\n }\n writeFileSync(pluginConfigPath, `${JSON.stringify(pluginConfig, null, 2)}\\n`);\n console.log(` ✅ Updated ${pluginConfigPath}: app.api.production`);\n } catch (err) {\n console.error(\n ` ❌ Failed to update plugin bos.config.json:`,\n err instanceof Error ? err.message : err,\n );\n }\n }\n\n const account = deps.bosConfig.account;\n const network = getNetworkIdForAccount(account);\n\n let pluginDomain: string | undefined;\n if (existsSync(pluginConfigPath)) {\n try {\n const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\"));\n if (typeof pluginConfig.domain === \"string\") {\n pluginDomain = pluginConfig.domain;\n }\n } catch {}\n }\n if (!pluginDomain) {\n pluginDomain = `${input.key}.${deps.bosConfig.domain ?? \"everything.dev\"}`;\n }\n\n if (manifest && version) {\n try {\n const registryEntries: Record<string, string> = {\n [`plugins/${account}/${input.key}/manifest.json`]: JSON.stringify(manifest),\n [`plugins/${account}/${input.key}/metadata`]: JSON.stringify({\n title: null,\n description: null,\n repoUrl: deps.bosConfig.repository ?? null,\n version,\n publishedAt: new Date().toISOString(),\n cdnUrl: publishedUrl,\n integrity,\n }),\n [`plugins/${account}/${input.key}/versions/${version}/manifest.json`]:\n JSON.stringify(manifest),\n };\n\n if (existsSync(pluginConfigPath)) {\n try {\n const publishedPluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\"));\n delete publishedPluginConfig.development;\n registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] =\n JSON.stringify(publishedPluginConfig);\n } catch {}\n }\n\n const payload = JSON.stringify(registryEntries);\n const argsBase64 = Buffer.from(payload).toString(\"base64\");\n const privateKey = process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;\n\n await Effect.runPromise(ensureNearCli);\n try {\n await Effect.runPromise(\n executeTransaction({\n account,\n contract: getRegistryNamespaceForNetwork(network),\n method: \"__fastdata_kv\",\n argsBase64,\n network,\n privateKey,\n gas: \"50Tgas\",\n deposit: \"0NEAR\",\n }),\n );\n } catch (registryError) {\n const txHash = extractTransactionHash(registryError);\n if (!txHash) {\n console.warn(\n `[publish] Plugin registry write failed: ${registryError instanceof Error ? registryError.message : registryError}`,\n );\n }\n }\n } catch (registryError) {\n console.warn(\n `[publish] Plugin registry write skipped: ${registryError instanceof Error ? registryError.message : registryError}`,\n );\n }\n }\n\n await generateCodeArtifacts(deps.configDir, deps.bosConfig);\n }\n\n return {\n status: \"published\" as const,\n key: input.key,\n path: localPath,\n script,\n production: publishedUrl ?? attachmentRef?.production,\n integrity: integrity ?? undefined,\n version: version ?? undefined,\n };\n }),\n\n dev: builder.dev.handler(async ({ input }) => {\n ensureEnvFile(deps.configDir);\n\n const localPackages = detectLocalPackages(\n deps.bosConfig ?? undefined,\n deps.runtimeConfig ?? undefined,\n );\n\n const hostSource: SourceMode = localPackages.includes(\"host\")\n ? parseSourceMode(input.host, \"local\")\n : \"remote\";\n const uiSource: SourceMode = localPackages.includes(\"ui\")\n ? parseSourceMode(input.ui, \"local\")\n : \"remote\";\n const apiSource: SourceMode = localPackages.includes(\"api\")\n ? parseSourceMode(input.api, \"local\")\n : \"remote\";\n const authSource: SourceMode = localPackages.includes(\"auth\")\n ? parseSourceMode(input.auth, \"local\")\n : \"remote\";\n const ssr = input.ssr ?? false;\n const proxy = input.proxy ?? false;\n\n const sharedSync = await syncAndGenerateSharedUi({\n configDir: deps.configDir,\n hostMode: hostSource,\n bosConfig: deps.bosConfig ?? undefined,\n extendsChain: [],\n });\n if (sharedSync.catalogChanged) {\n await run(\"bun\", [\"install\"], { cwd: deps.configDir });\n }\n if (\n (apiSource === \"local\" && !proxy) ||\n localPackages.some((pkg) => pkg.startsWith(\"plugin:\"))\n ) {\n await buildEveryPluginQuietly(deps.configDir);\n }\n\n await buildEverythingDevQuietly(deps.configDir);\n\n const refreshed = await loadConfig({ cwd: deps.configDir });\n deps.bosConfig = refreshed?.config ?? deps.bosConfig;\n deps.runtimeConfig = refreshed?.runtime ?? deps.runtimeConfig;\n\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n description: \"No bos.config.json found\",\n processes: [],\n };\n }\n\n if (proxy && !resolveProxyUrl(deps.bosConfig)) {\n return {\n status: \"error\" as const,\n description: \"No valid proxy URL configured in bos.config.json\",\n processes: [],\n };\n }\n\n const hostPort = input.port ?? getHostDevelopmentPort(deps.bosConfig.app.host.development);\n const developmentRuntime = buildRuntimeConfig(deps.bosConfig, {\n uiSource,\n apiSource,\n authSource,\n hostSource,\n env: \"development\",\n plugins: deps.runtimeConfig?.plugins,\n });\n const runtimeConfig = await prepareDevelopmentRuntimeConfig(developmentRuntime, {\n hostPort,\n ssr,\n });\n\n await generateCodeArtifacts(deps.configDir, deps.bosConfig, {\n env: \"development\",\n extendsChain: refreshed?.source.extended,\n runtimeConfig,\n });\n\n const services = buildServiceDescriptorMap(runtimeConfig, { ssr, proxy });\n const packages = [...services.keys()];\n const displayEnv: Record<string, string> = {};\n const apiDescriptor = services.get(\"api\");\n if (apiDescriptor?.proxy) {\n const proxyUrl = resolveProxyUrl(deps.bosConfig);\n if (proxyUrl) displayEnv.API_PROXY = proxyUrl;\n }\n\n const orchestrator: AppOrchestrator = {\n packages,\n env: displayEnv,\n description: buildDescription(services),\n port: runtimeConfig.host.port,\n interactive: input.interactive,\n };\n\n devApp(orchestrator, services, runtimeConfig);\n\n return {\n status: \"started\" as const,\n description: orchestrator.description,\n processes: packages,\n };\n }),\n\n start: builder.start.handler(async ({ input }) => {\n ensureEnvFile(deps.configDir);\n\n const account = input.account ?? process.env.BOS_ACCOUNT;\n const domain = input.domain ?? process.env.BOS_GATEWAY;\n\n let config: BosConfig | null = null;\n let remoteConfig: BosConfig | null = null;\n\n if (account && domain) {\n remoteConfig = await fetchPublishedConfig(account, domain);\n if (remoteConfig) {\n config = remoteConfig;\n } else {\n console.warn(\n `[Start] Failed to fetch remote config for ${account}/${domain}, falling back to local bos.config.json`,\n );\n }\n }\n\n if (!config) {\n config = deps.bosConfig;\n }\n\n if (!config) {\n return {\n status: \"error\" as const,\n url: \"\",\n error:\n \"No configuration found. Set BOS_ACCOUNT and BOS_GATEWAY environment variables, or provide a local bos.config.json.\",\n };\n }\n\n // Apply runtime overrides from CLI flags / env vars\n if (account) {\n config = { ...config, account };\n }\n if (domain) {\n config = { ...config, domain };\n }\n\n const port = input.port ?? getHostDevelopmentPort(config.app.host.development);\n const isStaging = input.env === \"staging\";\n const runtimePlugins = await buildRuntimePluginsForConfig(\n config,\n deps.configDir,\n \"production\",\n );\n const runtimeConfig = buildRuntimeConfig(config, {\n uiSource: \"remote\",\n apiSource: \"remote\",\n authSource: \"remote\",\n hostSource: \"remote\",\n env: \"production\",\n plugins: runtimePlugins,\n });\n\n await generateCodeArtifacts(deps.configDir, config, {\n env: \"production\",\n runtimeConfig,\n });\n\n // ── Production Readiness Validation ──\n const productionEnv: Record<string, string> = {};\n const warnings: string[] = [];\n\n // Default CORS_ORIGIN to the configured domain if not set\n if (!process.env.CORS_ORIGIN && config.domain) {\n const defaultOrigin = `https://${config.domain}`;\n productionEnv.CORS_ORIGIN = defaultOrigin;\n warnings.push(`CORS_ORIGIN defaulting to ${defaultOrigin}`);\n }\n\n // Validate required secrets\n const requiredSecrets = new Set<string>();\n const missingSecrets: string[] = [];\n\n if (runtimeConfig.auth?.secrets) {\n for (const s of runtimeConfig.auth.secrets) requiredSecrets.add(s);\n }\n if (runtimeConfig.api?.secrets) {\n for (const s of runtimeConfig.api.secrets) requiredSecrets.add(s);\n }\n for (const plugin of Object.values(runtimeConfig.plugins ?? {})) {\n if (plugin.secrets) {\n for (const s of plugin.secrets) requiredSecrets.add(s);\n }\n }\n\n for (const secret of requiredSecrets) {\n const value = process.env[secret];\n if (!value || value.length === 0) {\n missingSecrets.push(secret);\n }\n }\n\n if (missingSecrets.length > 0) {\n warnings.push(`Missing ${missingSecrets.length} secret(s): ${missingSecrets.join(\", \")}`);\n }\n\n const services = buildServiceDescriptorMap(runtimeConfig);\n\n const stagingEnvVars: Record<string, string> = isStaging\n ? { BOS_GATEWAY: config.staging?.domain ?? config.domain ?? \"\" }\n : {};\n\n const configSource = remoteConfig\n ? `bos://${account}/${domain}`\n : (findConfigPath() ?? \"bos.config.json\");\n\n const configSourceHttp =\n remoteConfig && account && domain ? buildRegistryConfigUrl(account, domain) : undefined;\n\n const summaryLines: string[] = [\"\", ` ${colors.dim(\"Config Source:\")} ${configSource}`];\n if (configSourceHttp) {\n summaryLines.push(` ${colors.dim(configSourceHttp)}`);\n }\n summaryLines.push(\n ` ${colors.dim(\"Account:\")} ${config.account}`,\n ` ${colors.dim(\"Domain:\")} ${config.domain ?? \"not configured\"}`,\n \"\",\n ` ${colors.dim(\"Modules:\")}`,\n ` ${colors.dim(\"HOST\")} → ${runtimeConfig.host.remoteUrl ?? runtimeConfig.host.url ?? \"local\"}`,\n ` ${colors.dim(\"UI\")} → ${runtimeConfig.ui.url ?? \"local\"}`,\n ` ${colors.dim(\"API\")} → ${runtimeConfig.api.url ?? \"local\"}`,\n );\n if (runtimeConfig.auth) {\n summaryLines.push(` ${colors.dim(\"AUTH\")} → ${runtimeConfig.auth.url ?? \"local\"}`);\n }\n if (warnings.length > 0) {\n summaryLines.push(\"\");\n for (const w of warnings) {\n summaryLines.push(` ${colors.yellow(w)}`);\n }\n }\n summaryLines.push(\"\");\n console.log(summaryLines.join(\"\\n\"));\n\n const orchestrator: AppOrchestrator = {\n packages: [\"host\"],\n env: {\n NODE_ENV: \"production\",\n ...productionEnv,\n ...stagingEnvVars,\n },\n description: `${isStaging ? \"Staging\" : \"Production\"} Mode (${config.account})`,\n port,\n interactive: input.interactive,\n noLogs: true,\n };\n\n startApp(orchestrator, services, runtimeConfig);\n return {\n status: \"running\" as const,\n url: `http://localhost:${port}`,\n };\n }),\n\n build: builder.build.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n built: [],\n skipped: [],\n };\n }\n\n const buildEnv: BosEnv = input.deploy ? \"production\" : \"development\";\n\n const targets = selectWorkspaceTargets(input.packages, deps.bosConfig);\n if (targets.length === 0) {\n return {\n status: \"error\" as const,\n built: [],\n skipped: [],\n };\n }\n\n const runtimeConfig = buildRuntimeConfig(deps.bosConfig, {\n uiSource: deps.bosConfig.app.ui?.development ? \"local\" : \"remote\",\n apiSource: deps.bosConfig.app.api?.development ? \"local\" : \"remote\",\n authSource: deps.bosConfig.app.auth?.development ? \"local\" : \"remote\",\n hostSource: deps.bosConfig.app.host?.development ? \"local\" : \"remote\",\n env: buildEnv,\n plugins: deps.runtimeConfig?.plugins,\n });\n\n await generateCodeArtifacts(deps.configDir, deps.bosConfig, {\n env: buildEnv,\n runtimeConfig,\n });\n\n const { built, skipped } = await buildWorkspaceTargets({\n configDir: deps.configDir,\n bosConfig: deps.bosConfig,\n runtimeConfig: runtimeConfig,\n targets,\n deploy: input.deploy,\n });\n\n if (built.length === 0) {\n return {\n status: \"error\" as const,\n built: [],\n skipped,\n };\n }\n\n return {\n status: \"success\" as const,\n built,\n skipped,\n deployed: input.deploy,\n };\n }),\n\n publish: builder.publish.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n registryUrl: \"\",\n error: \"No bos.config.json found\",\n };\n }\n\n const account = deps.bosConfig.account;\n const gateway = deps.bosConfig.domain;\n if (!gateway) {\n return {\n status: \"error\" as const,\n registryUrl: \"\",\n error: \"bos.config.json must define domain to publish\",\n };\n }\n\n const network = input.network ?? getNetworkIdForAccount(account);\n const bosUrl = `bos://${account}/${gateway}`;\n const registryUrl = buildRegistryConfigUrlForNetwork(network, account, gateway);\n const targets = selectWorkspaceTargets(input.packages, deps.bosConfig);\n\n let publishConfig = deps.bosConfig;\n let built: string[] | undefined;\n let skipped: string[] | undefined;\n\n if (input.dryRun) {\n return {\n status: \"dry-run\" as const,\n registryUrl,\n built,\n skipped,\n };\n }\n\n if (input.deploy) {\n await generateCodeArtifacts(deps.configDir, deps.bosConfig, {\n env: \"production\",\n runtimeConfig: deps.runtimeConfig ?? undefined,\n });\n\n const result = await buildWorkspaceTargets({\n configDir: deps.configDir,\n bosConfig: deps.bosConfig,\n runtimeConfig: deps.runtimeConfig,\n targets,\n deploy: true,\n });\n built = result.built;\n skipped = result.skipped;\n\n const refreshed = await loadConfig({ cwd: deps.configDir });\n if (refreshed?.config) {\n deps.bosConfig = refreshed.config;\n deps.runtimeConfig = refreshed.runtime;\n publishConfig = refreshed.config;\n }\n }\n\n const registryEntries: Record<string, string> = {\n [`apps/${account}/${gateway}/bos.config.json`]: JSON.stringify(publishConfig),\n };\n\n for (const [pluginKey, pluginEntry] of Object.entries(publishConfig.plugins ?? {})) {\n const pluginRef = getPluginRef(pluginEntry);\n if (!pluginRef?.development?.startsWith(\"local:\")) continue;\n\n const localPath = join(deps.configDir, pluginRef.development.slice(\"local:\".length));\n const pluginConfigPath = join(localPath, \"bos.config.json\");\n if (!existsSync(pluginConfigPath)) continue;\n\n try {\n const pluginConfig = JSON.parse(readFileSync(pluginConfigPath, \"utf-8\")) as Record<\n string,\n unknown\n >;\n const pluginDomain =\n typeof pluginConfig.domain === \"string\"\n ? pluginConfig.domain\n : `${pluginKey}.${gateway}`;\n delete pluginConfig.development;\n registryEntries[`apps/${account}/${pluginDomain}/bos.config.json`] =\n JSON.stringify(pluginConfig);\n } catch {}\n }\n\n const payload = JSON.stringify(registryEntries);\n const argsBase64 = Buffer.from(payload).toString(\"base64\");\n const privateKey =\n input.privateKey || process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;\n\n try {\n await Effect.runPromise(ensureNearCli);\n let txHash: string | undefined;\n\n try {\n const tx = await Effect.runPromise(\n executeTransaction({\n account,\n contract: getRegistryNamespaceForNetwork(network),\n method: \"__fastdata_kv\",\n argsBase64,\n network,\n privateKey,\n gas: \"300Tgas\",\n deposit: \"0NEAR\",\n }),\n );\n txHash = tx.txHash;\n } catch (error) {\n txHash = extractTransactionHash(error);\n\n if (!txHash) {\n throw error;\n }\n\n try {\n const verifiedConfig = await fetchBosConfigFromFastKv<BosConfig>(bosUrl);\n if (JSON.stringify(verifiedConfig) !== JSON.stringify(publishConfig)) {\n throw error;\n }\n } catch {\n // Config may not exist yet on first publish or propagation delay;\n // a valid txHash is sufficient proof the transaction was submitted.\n }\n }\n\n return {\n status: \"published\" as const,\n registryUrl,\n txHash,\n built,\n skipped,\n };\n } catch (error) {\n return {\n status: \"error\" as const,\n registryUrl,\n error: error instanceof Error ? error.message : \"Unknown error\",\n built,\n skipped,\n };\n }\n }),\n\n keyPublish: builder.keyPublish.handler(async ({ input }) => {\n if (!deps.bosConfig) {\n return {\n status: \"error\" as const,\n account: \"\",\n network: \"mainnet\" as const,\n contract: \"\",\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n error: \"No bos.config.json found\",\n };\n }\n\n const account = deps.bosConfig.account;\n const network = getNetworkIdForAccount(account);\n const contract = getRegistryNamespaceForAccount(account);\n try {\n await Effect.runPromise(ensureNearCli);\n const keyPair = await addFunctionCallAccessKey({\n account,\n contract,\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n network,\n });\n\n return {\n status: \"published\" as const,\n account,\n network,\n contract,\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n publicKey: keyPair.publicKey,\n privateKey: keyPair.privateKey,\n };\n } catch (error) {\n return {\n status: \"error\" as const,\n account,\n network,\n contract,\n allowance: input.allowance,\n functionNames: PUBLISH_FUNCTION_NAMES,\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n init: builder.init.handler(async ({ input }) => {\n try {\n let extendsAccount = input.extendsAccount;\n let extendsGateway = input.extendsGateway;\n let directory = input.directory;\n let account = input.account;\n let domain = input.domain;\n let withHost = input.withHost;\n let plugins = input.plugins;\n\n if (input.extends) {\n const match = input.extends.match(/^(?:bos:\\/\\/)?([^/]+)\\/(.+)$/);\n if (match) {\n if (!extendsAccount) extendsAccount = match[1];\n if (!extendsGateway) extendsGateway = match[2];\n }\n }\n\n if (!input.noInteractive) {\n const prompted = await promptInitOptions({\n extendsAccount,\n extendsGateway,\n extends: input.extends,\n directory,\n account,\n domain,\n plugins,\n withHost,\n });\n extendsAccount = prompted.extendsAccount;\n extendsGateway = prompted.extendsGateway;\n directory = prompted.directory;\n account = prompted.account;\n domain = prompted.domain;\n withHost = prompted.withHost;\n plugins = prompted.plugins;\n }\n\n extendsAccount = extendsAccount || \"dev.everything.near\";\n extendsGateway = extendsGateway || \"everything.dev\";\n directory = directory || domain || extendsGateway;\n plugins = plugins?.length ? plugins : [\"settings\"];\n\n try {\n await fetchParentConfig(extendsAccount, extendsGateway);\n } catch {\n return {\n status: \"error\" as const,\n directory,\n extendsAccount,\n extendsGateway,\n account,\n domain,\n extends: `bos://${extendsAccount}/${extendsGateway}`,\n plugins: plugins ?? [],\n filesCopied: 0,\n error: `No config found at bos://${extendsAccount}/${extendsGateway} — are you sure this is the right parent?`,\n };\n }\n\n const { sourceDir, parentConfig, cleanup } = await resolveSourceDir({\n extendsAccount,\n extendsGateway,\n source: input.source,\n });\n\n try {\n const patterns = await readTemplatekeep(sourceDir);\n if (patterns.length === 0) {\n return {\n status: \"error\" as const,\n directory,\n extendsAccount,\n extendsGateway,\n account,\n domain,\n extends: `bos://${extendsAccount}/${extendsGateway}`,\n plugins: plugins ?? [],\n filesCopied: 0,\n error: \"No .templatekeep found in template source\",\n };\n }\n\n const pluginRoutes: Record<string, string[]> = {};\n if (parentConfig.plugins) {\n for (const [key, entry] of Object.entries(parentConfig.plugins)) {\n const entryRef = getPluginRef(entry);\n if (entryRef?.routes && entryRef.routes.length > 0) {\n pluginRoutes[key] = entryRef.routes;\n }\n }\n }\n\n const s = p.spinner();\n s.start(\"Setting up project\");\n\n const filesCopied = await copyFilteredFiles(sourceDir, directory, patterns, {\n withHost,\n plugins,\n pluginRoutes,\n });\n\n await personalizeConfig(directory, {\n extendsAccount,\n extendsGateway,\n account: account || extendsAccount,\n domain: domain || extendsGateway,\n plugins,\n pluginRoutes,\n workspaceOpts: { sourceDir },\n withHost,\n });\n\n await writeInitSnapshot(directory, extendsAccount, extendsGateway, sourceDir, patterns, {\n withHost,\n plugins,\n pluginRoutes,\n });\n\n ensureEnvFile(directory, { domain });\n\n if (!input.noInstall) {\n await runBunInstall(directory);\n await runTypesGen(directory);\n await generateDatabaseMigrations(directory);\n }\n\n const initConfig = await loadConfig({ cwd: directory });\n if (initConfig?.config) {\n await generateCodeArtifacts(directory, initConfig.config);\n }\n\n s.stop(\"Project initialized\");\n\n return {\n status: \"initialized\" as const,\n directory,\n extendsAccount,\n extendsGateway,\n account,\n domain,\n extends: `bos://${extendsAccount}/${extendsGateway}`,\n plugins,\n filesCopied,\n };\n } finally {\n await cleanup();\n }\n } catch (error) {\n return {\n status: \"error\" as const,\n directory: input.directory ?? \"\",\n extendsAccount: input.extendsAccount ?? \"\",\n extendsGateway: input.extendsGateway ?? \"\",\n account: input.account,\n domain: input.domain,\n extends:\n input.extendsAccount && input.extendsGateway\n ? `bos://${input.extendsAccount}/${input.extendsGateway}`\n : \"\",\n plugins: input.plugins ?? [],\n filesCopied: 0,\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n sync: builder.sync.handler(async ({ input }) => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n updated: [],\n skipped: [],\n added: [],\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n const result = await syncTemplate(projectDir, input);\n\n if (result.status === \"synced\" || result.status === \"dry-run\") {\n const syncedConfig = await loadConfig({ cwd: projectDir });\n if (syncedConfig?.config) {\n await generateCodeArtifacts(projectDir, syncedConfig.config);\n }\n }\n\n return result;\n } catch (error) {\n return {\n status: \"error\" as const,\n updated: [],\n skipped: [],\n added: [],\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n upgrade: builder.upgrade.handler(async ({ input }) => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n packages: [],\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n return await upgradeTemplate(projectDir, input);\n } catch (error) {\n return {\n status: \"error\" as const,\n packages: [],\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n typesGen: builder.typesGen.handler(async ({ input }) => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n generated: [],\n fetched: [],\n skipped: [],\n failed: [],\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n const env =\n input.env ?? (process.env.NODE_ENV === \"production\" ? \"production\" : \"development\");\n\n const refreshed = await loadConfig({ cwd: projectDir, env });\n if (!refreshed) {\n return {\n status: \"error\" as const,\n generated: [],\n fetched: [],\n skipped: [],\n failed: [],\n error: \"Failed to load bos.config.json\",\n };\n }\n\n if (input.dryRun) {\n const pluginEntries = Object.entries(refreshed.runtime.plugins ?? {});\n const fetched: string[] = [];\n const skipped: string[] = [];\n\n if (refreshed.runtime.api.source !== \"local\") {\n fetched.push(refreshed.runtime.api.url);\n } else {\n skipped.push(\"api (local)\");\n }\n\n if (refreshed.runtime.auth) {\n if (refreshed.runtime.auth.source !== \"local\") {\n fetched.push(refreshed.runtime.auth.url);\n } else {\n skipped.push(\"auth (local)\");\n }\n }\n\n for (const [key, plugin] of pluginEntries) {\n if (plugin.url && plugin.source !== \"local\") {\n fetched.push(plugin.url);\n } else if (plugin.localPath) {\n skipped.push(`${key} (local)`);\n }\n }\n\n const generated = [\n \"ui/src/lib/api-types.gen.ts\",\n \"ui/src/lib/auth-types.gen.ts\",\n \"api/src/lib/plugins-types.gen.ts\",\n \"api/src/lib/auth-types.gen.ts\",\n ];\n if (existsSync(join(projectDir, \"host\", \"src\"))) {\n generated.push(\"host/src/lib/auth-types.gen.ts\");\n }\n\n return {\n status: \"success\" as const,\n generated,\n fetched,\n skipped,\n failed: [],\n source: refreshed.runtime.api.source,\n };\n }\n\n await generateCodeArtifacts(projectDir, refreshed.config, {\n runtimeConfig: refreshed.runtime,\n });\n\n const generated = [\n \"ui/src/lib/plugin-sidebar.gen.ts\",\n \"ui/src/lib/api-types.gen.ts\",\n \"api/src/lib/plugins-types.gen.ts\",\n \"api/src/lib/auth-types.gen.ts\",\n ];\n if (\n refreshed.runtime.auth &&\n (refreshed.runtime.auth.source !== \"local\" || refreshed.runtime.auth.localPath)\n ) {\n generated.push(\"ui/src/lib/auth-types.gen.ts\");\n }\n if (existsSync(join(projectDir, \"host\", \"src\"))) {\n generated.push(\"host/src/lib/auth-types.gen.ts\");\n }\n\n return {\n status: \"success\" as const,\n generated,\n fetched: refreshed.runtime.api.source === \"remote\" ? [refreshed.runtime.api.url] : [],\n skipped: refreshed.runtime.api.source === \"local\" ? [\"api (local)\"] : [],\n failed: [],\n source: refreshed.runtime.api.source,\n };\n } catch (error) {\n return {\n status: \"error\" as const,\n generated: [],\n fetched: [],\n skipped: [],\n failed: [],\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n\n status: builder.status.handler(async () => {\n try {\n const configPath = findConfigPath();\n if (!configPath) {\n return {\n status: \"error\" as const,\n packages: [],\n envFile: \"missing\" as const,\n error: \"No bos.config.json found in current directory\",\n };\n }\n\n const projectDir = resolve(dirname(configPath));\n return await getStatus(projectDir);\n } catch (error) {\n return {\n status: \"error\" as const,\n packages: [],\n envFile: \"missing\" as const,\n error: error instanceof Error ? error.message : \"Unknown error\",\n };\n }\n }),\n }),\n});\n\nfunction extractTransactionHash(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n const match = message.match(/Transaction ID:\\s*([A-Za-z0-9]+)/i);\n return match?.[1];\n}\n"],"mappings":"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"}