everything-dev 2.0.0-rc.6 → 2.0.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/README.md +2 -2
  2. package/dist/build.cjs +1 -1
  3. package/dist/build.mjs +1 -1
  4. package/dist/bundle-cache.cjs +1 -1
  5. package/dist/bundle-cache.cjs.map +1 -1
  6. package/dist/bundle-cache.mjs +1 -1
  7. package/dist/bundle-cache.mjs.map +1 -1
  8. package/dist/cli.cjs +2 -2
  9. package/dist/cli.cjs.map +1 -1
  10. package/dist/cli.mjs +1 -1
  11. package/dist/cli.mjs.map +1 -1
  12. package/dist/commands/deploy.cjs +111 -1
  13. package/dist/commands/deploy.cjs.map +1 -1
  14. package/dist/commands/deploy.mjs +112 -2
  15. package/dist/commands/deploy.mjs.map +1 -1
  16. package/dist/commands/smoke.cjs +41 -0
  17. package/dist/commands/smoke.cjs.map +1 -0
  18. package/dist/commands/smoke.mjs +41 -0
  19. package/dist/commands/smoke.mjs.map +1 -0
  20. package/dist/commands/upgrade.cjs +2 -2
  21. package/dist/commands/upgrade.cjs.map +1 -1
  22. package/dist/commands/upgrade.mjs +1 -1
  23. package/dist/commands/upgrade.mjs.map +1 -1
  24. package/dist/contract.cjs +27 -1
  25. package/dist/contract.cjs.map +1 -1
  26. package/dist/contract.d.cts +65 -1
  27. package/dist/contract.d.mts +65 -1
  28. package/dist/contract.meta.cjs +13 -1
  29. package/dist/contract.meta.cjs.map +1 -1
  30. package/dist/contract.meta.d.cts +23 -1
  31. package/dist/contract.meta.d.mts +23 -1
  32. package/dist/contract.meta.mjs +13 -1
  33. package/dist/contract.meta.mjs.map +1 -1
  34. package/dist/contract.mjs +26 -2
  35. package/dist/contract.mjs.map +1 -1
  36. package/dist/dev-log-pipeline.cjs +6 -0
  37. package/dist/dev-log-pipeline.cjs.map +1 -1
  38. package/dist/dev-log-pipeline.mjs +6 -0
  39. package/dist/dev-log-pipeline.mjs.map +1 -1
  40. package/dist/dev-program.cjs +20 -3
  41. package/dist/dev-program.cjs.map +1 -1
  42. package/dist/dev-program.mjs +20 -4
  43. package/dist/dev-program.mjs.map +1 -1
  44. package/dist/dev-session.cjs +1 -0
  45. package/dist/dev-session.cjs.map +1 -1
  46. package/dist/dev-session.mjs +1 -0
  47. package/dist/dev-session.mjs.map +1 -1
  48. package/dist/fastkv.cjs +21 -3
  49. package/dist/fastkv.cjs.map +1 -1
  50. package/dist/fastkv.d.cts +14 -1
  51. package/dist/fastkv.d.mts +14 -1
  52. package/dist/fastkv.mjs +21 -5
  53. package/dist/fastkv.mjs.map +1 -1
  54. package/dist/{mf.cjs → federation.cjs} +6 -13
  55. package/dist/federation.cjs.map +1 -0
  56. package/dist/{mf.d.cts → federation.d.cts} +2 -2
  57. package/dist/{mf.d.mts → federation.d.mts} +2 -2
  58. package/dist/{mf.mjs → federation.mjs} +6 -13
  59. package/dist/federation.mjs.map +1 -0
  60. package/dist/http-client.cjs +70 -53
  61. package/dist/http-client.cjs.map +1 -1
  62. package/dist/http-client.mjs +70 -54
  63. package/dist/http-client.mjs.map +1 -1
  64. package/dist/image-deploy.cjs +9 -0
  65. package/dist/image-deploy.cjs.map +1 -1
  66. package/dist/image-deploy.mjs +9 -1
  67. package/dist/image-deploy.mjs.map +1 -1
  68. package/dist/index.cjs +4 -0
  69. package/dist/index.d.cts +3 -3
  70. package/dist/index.d.mts +3 -3
  71. package/dist/index.mjs +3 -3
  72. package/dist/orchestrator.cjs +39 -35
  73. package/dist/orchestrator.cjs.map +1 -1
  74. package/dist/orchestrator.mjs +39 -35
  75. package/dist/orchestrator.mjs.map +1 -1
  76. package/dist/plugin.cjs +2 -0
  77. package/dist/plugin.cjs.map +1 -1
  78. package/dist/plugin.d.cts +24 -0
  79. package/dist/plugin.d.mts +24 -0
  80. package/dist/plugin.mjs +2 -0
  81. package/dist/plugin.mjs.map +1 -1
  82. package/dist/process-registry.cjs +1 -1
  83. package/dist/process-registry.mjs +1 -1
  84. package/dist/publish.cjs +3 -3
  85. package/dist/publish.cjs.map +1 -1
  86. package/dist/publish.mjs +4 -4
  87. package/dist/publish.mjs.map +1 -1
  88. package/dist/resolver.cjs +293 -0
  89. package/dist/resolver.cjs.map +1 -0
  90. package/dist/resolver.d.cts +99 -0
  91. package/dist/resolver.d.mts +99 -0
  92. package/dist/resolver.mjs +284 -0
  93. package/dist/resolver.mjs.map +1 -0
  94. package/dist/smoke.cjs +262 -0
  95. package/dist/smoke.cjs.map +1 -0
  96. package/dist/smoke.mjs +260 -0
  97. package/dist/smoke.mjs.map +1 -0
  98. package/dist/version-manifest-resolve.cjs +3 -3
  99. package/dist/version-manifest-resolve.cjs.map +1 -1
  100. package/dist/version-manifest-resolve.mjs +1 -1
  101. package/dist/version-manifest-resolve.mjs.map +1 -1
  102. package/dist/workspace.cjs +1 -1
  103. package/dist/workspace.mjs +1 -1
  104. package/package.json +9 -9
  105. package/dist/bundle-fs-resolve.cjs +0 -235
  106. package/dist/bundle-fs-resolve.cjs.map +0 -1
  107. package/dist/bundle-fs-resolve.d.cts +0 -82
  108. package/dist/bundle-fs-resolve.d.mts +0 -82
  109. package/dist/bundle-fs-resolve.mjs +0 -228
  110. package/dist/bundle-fs-resolve.mjs.map +0 -1
  111. package/dist/bundle-path.cjs +0 -48
  112. package/dist/bundle-path.cjs.map +0 -1
  113. package/dist/bundle-path.mjs +0 -45
  114. package/dist/bundle-path.mjs.map +0 -1
  115. package/dist/mf.cjs.map +0 -1
  116. package/dist/mf.mjs.map +0 -1
@@ -490,6 +490,7 @@ declare const DeployOptionsSchema: z$1.ZodObject<{
490
490
  registry: z$1.ZodOptional<z$1.ZodString>;
491
491
  imageDigest: z$1.ZodOptional<z$1.ZodString>;
492
492
  fullUpload: z$1.ZodDefault<z$1.ZodBoolean>;
493
+ smoke: z$1.ZodDefault<z$1.ZodBoolean>;
493
494
  }, z$1.core.$strip>;
494
495
  declare const DeployManifestListEntrySchema: z$1.ZodObject<{
495
496
  key: z$1.ZodString;
@@ -533,6 +534,30 @@ declare const DeployResultSchema: z$1.ZodObject<{
533
534
  durationMs: z$1.ZodOptional<z$1.ZodNumber>;
534
535
  }, z$1.core.$strip>>>;
535
536
  }, z$1.core.$strip>;
537
+ declare const SmokeOptionsSchema: z$1.ZodObject<{
538
+ image: z$1.ZodOptional<z$1.ZodString>;
539
+ port: z$1.ZodDefault<z$1.ZodNumber>;
540
+ keep: z$1.ZodDefault<z$1.ZodBoolean>;
541
+ account: z$1.ZodOptional<z$1.ZodString>;
542
+ gateway: z$1.ZodOptional<z$1.ZodString>;
543
+ apiDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
544
+ authDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
545
+ env: z$1.ZodDefault<z$1.ZodEnum<{
546
+ production: "production";
547
+ staging: "staging";
548
+ }>>;
549
+ registry: z$1.ZodOptional<z$1.ZodString>;
550
+ }, z$1.core.$strip>;
551
+ declare const SmokeResultSchema: z$1.ZodObject<{
552
+ status: z$1.ZodEnum<{
553
+ error: "error";
554
+ ok: "ok";
555
+ }>;
556
+ image: z$1.ZodOptional<z$1.ZodString>;
557
+ summary: z$1.ZodOptional<z$1.ZodString>;
558
+ diagnosis: z$1.ZodOptional<z$1.ZodString>;
559
+ error: z$1.ZodOptional<z$1.ZodString>;
560
+ }, z$1.core.$strip>;
536
561
  declare const KeyPublishOptionsSchema: z$1.ZodObject<{
537
562
  allowance: z$1.ZodDefault<z$1.ZodString>;
538
563
  env: z$1.ZodDefault<z$1.ZodEnum<{
@@ -1155,6 +1180,21 @@ declare const commandOptionSchemas: {
1155
1180
  registry: z$1.ZodOptional<z$1.ZodString>;
1156
1181
  imageDigest: z$1.ZodOptional<z$1.ZodString>;
1157
1182
  fullUpload: z$1.ZodDefault<z$1.ZodBoolean>;
1183
+ smoke: z$1.ZodDefault<z$1.ZodBoolean>;
1184
+ }, z$1.core.$strip>;
1185
+ smoke: z$1.ZodObject<{
1186
+ image: z$1.ZodOptional<z$1.ZodString>;
1187
+ port: z$1.ZodDefault<z$1.ZodNumber>;
1188
+ keep: z$1.ZodDefault<z$1.ZodBoolean>;
1189
+ account: z$1.ZodOptional<z$1.ZodString>;
1190
+ gateway: z$1.ZodOptional<z$1.ZodString>;
1191
+ apiDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1192
+ authDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1193
+ env: z$1.ZodDefault<z$1.ZodEnum<{
1194
+ production: "production";
1195
+ staging: "staging";
1196
+ }>>;
1197
+ registry: z$1.ZodOptional<z$1.ZodString>;
1158
1198
  }, z$1.core.$strip>;
1159
1199
  keyPublish: z$1.ZodObject<{
1160
1200
  allowance: z$1.ZodDefault<z$1.ZodString>;
@@ -1709,6 +1749,7 @@ declare const bosContract: {
1709
1749
  registry: z$1.ZodOptional<z$1.ZodString>;
1710
1750
  imageDigest: z$1.ZodOptional<z$1.ZodString>;
1711
1751
  fullUpload: z$1.ZodDefault<z$1.ZodBoolean>;
1752
+ smoke: z$1.ZodDefault<z$1.ZodBoolean>;
1712
1753
  }, z$1.core.$strip>, z$1.ZodObject<{
1713
1754
  status: z$1.ZodEnum<{
1714
1755
  deployed: "deployed";
@@ -1744,6 +1785,29 @@ declare const bosContract: {
1744
1785
  durationMs: z$1.ZodOptional<z$1.ZodNumber>;
1745
1786
  }, z$1.core.$strip>>>;
1746
1787
  }, z$1.core.$strip>, object>;
1788
+ smoke: import("@orpc/contract").ProcedureContract<z$1.ZodObject<{
1789
+ image: z$1.ZodOptional<z$1.ZodString>;
1790
+ port: z$1.ZodDefault<z$1.ZodNumber>;
1791
+ keep: z$1.ZodDefault<z$1.ZodBoolean>;
1792
+ account: z$1.ZodOptional<z$1.ZodString>;
1793
+ gateway: z$1.ZodOptional<z$1.ZodString>;
1794
+ apiDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1795
+ authDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1796
+ env: z$1.ZodDefault<z$1.ZodEnum<{
1797
+ production: "production";
1798
+ staging: "staging";
1799
+ }>>;
1800
+ registry: z$1.ZodOptional<z$1.ZodString>;
1801
+ }, z$1.core.$strip>, z$1.ZodObject<{
1802
+ status: z$1.ZodEnum<{
1803
+ error: "error";
1804
+ ok: "ok";
1805
+ }>;
1806
+ image: z$1.ZodOptional<z$1.ZodString>;
1807
+ summary: z$1.ZodOptional<z$1.ZodString>;
1808
+ diagnosis: z$1.ZodOptional<z$1.ZodString>;
1809
+ error: z$1.ZodOptional<z$1.ZodString>;
1810
+ }, z$1.core.$strip>, object>;
1747
1811
  keyPublish: import("@orpc/contract").ProcedureContract<z$1.ZodObject<{
1748
1812
  allowance: z$1.ZodDefault<z$1.ZodString>;
1749
1813
  env: z$1.ZodDefault<z$1.ZodEnum<{
@@ -2211,5 +2275,5 @@ type MfCheckResult = z$1.infer<typeof MfCheckResultSchema>;
2211
2275
  type InfraExportResult = z$1.infer<typeof InfraExportResultSchema>;
2212
2276
  type InfraExportService = z$1.infer<typeof InfraExportServiceSchema>;
2213
2277
  //#endregion
2214
- export { BosConfigResult, BuildOptions, BuildOptionsSchema, BuildResultSchema, ConfigOptionsSchema, ConfigResultSchema, DbDoctorOptions, DbDoctorOptionsSchema, DbDoctorResult, DbDoctorResultSchema, DbRepairOptions, DbRepairOptionsSchema, DbRepairResult, DbRepairResultSchema, DbStudioOptions, DbStudioOptionsSchema, DbStudioResult, DbStudioResultSchema, DeployManifestListEntrySchema, DeployOptions, DeployOptionsSchema, DeployResult, DeployResultSchema, DeployedVersionStatusSchema, DevOptions, DevOptionsSchema, DevResult, DevResultSchema, InfraExportOptions, InfraExportOptionsSchema, InfraExportResult, InfraExportResultSchema, InfraExportService, InfraExportServiceSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, KillOptions, KillOptionsSchema, KillResult, KillResultSchema, LoginOptions, LoginOptionsSchema, LoginResult, LoginResultSchema, LogoutOptions, LogoutOptionsSchema, LogoutResult, LogoutResultSchema, LogsOptions, LogsOptionsSchema, LogsResult, LogsResultSchema, MfCheckOptions, MfCheckOptionsSchema, MfCheckRemoteResultSchema, MfCheckResult, MfCheckResultSchema, OverrideSection, OverrideSectionSchema, PhaseTiming, PhaseTimingSchema, PidEntry, PidEntrySchema, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, ProcessRole, ProcessRoleSchema, PsResult, PsResultSchema, PublishOptions, PublishOptionsSchema, PublishResult, PublishResultSchema, RegistryUseOptionsSchema, RegistryUseResultSchema, RollbackHistoryEntrySchema, RollbackOptionsSchema, RollbackResultSchema, RollbackSlotCheckSchema, RuntimeOverrideTarget, RuntimeOverrideTargetBaseSchema, RuntimeOverrideTargetSchema, StartOptions, StartOptionsSchema, StartResult, StartResultSchema, StatusResult, StatusResultSchema, SyncOptions, SyncOptionsSchema, SyncResult, SyncResultSchema, TypecheckOptions, TypecheckOptionsSchema, TypecheckResult, TypecheckResultSchema, TypecheckWorkspaceResult, TypecheckWorkspaceResultSchema, TypesGenOptions, TypesGenOptionsSchema, TypesGenResult, TypesGenResultSchema, UpgradeOptions, UpgradeOptionsSchema, UpgradeResult, UpgradeResultSchema, WorkspaceDeployResult, WorkspaceDeployResultSchema, bosContract, commandOptionSchemas };
2278
+ export { BosConfigResult, BuildOptions, BuildOptionsSchema, BuildResultSchema, ConfigOptionsSchema, ConfigResultSchema, DbDoctorOptions, DbDoctorOptionsSchema, DbDoctorResult, DbDoctorResultSchema, DbRepairOptions, DbRepairOptionsSchema, DbRepairResult, DbRepairResultSchema, DbStudioOptions, DbStudioOptionsSchema, DbStudioResult, DbStudioResultSchema, DeployManifestListEntrySchema, DeployOptions, DeployOptionsSchema, DeployResult, DeployResultSchema, DeployedVersionStatusSchema, DevOptions, DevOptionsSchema, DevResult, DevResultSchema, InfraExportOptions, InfraExportOptionsSchema, InfraExportResult, InfraExportResultSchema, InfraExportService, InfraExportServiceSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, KillOptions, KillOptionsSchema, KillResult, KillResultSchema, LoginOptions, LoginOptionsSchema, LoginResult, LoginResultSchema, LogoutOptions, LogoutOptionsSchema, LogoutResult, LogoutResultSchema, LogsOptions, LogsOptionsSchema, LogsResult, LogsResultSchema, MfCheckOptions, MfCheckOptionsSchema, MfCheckRemoteResultSchema, MfCheckResult, MfCheckResultSchema, OverrideSection, OverrideSectionSchema, PhaseTiming, PhaseTimingSchema, PidEntry, PidEntrySchema, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, ProcessRole, ProcessRoleSchema, PsResult, PsResultSchema, PublishOptions, PublishOptionsSchema, PublishResult, PublishResultSchema, RegistryUseOptionsSchema, RegistryUseResultSchema, RollbackHistoryEntrySchema, RollbackOptionsSchema, RollbackResultSchema, RollbackSlotCheckSchema, RuntimeOverrideTarget, RuntimeOverrideTargetBaseSchema, RuntimeOverrideTargetSchema, SmokeOptionsSchema, SmokeResultSchema, StartOptions, StartOptionsSchema, StartResult, StartResultSchema, StatusResult, StatusResultSchema, SyncOptions, SyncOptionsSchema, SyncResult, SyncResultSchema, TypecheckOptions, TypecheckOptionsSchema, TypecheckResult, TypecheckResultSchema, TypecheckWorkspaceResult, TypecheckWorkspaceResultSchema, TypesGenOptions, TypesGenOptionsSchema, TypesGenResult, TypesGenResultSchema, UpgradeOptions, UpgradeOptionsSchema, UpgradeResult, UpgradeResultSchema, WorkspaceDeployResult, WorkspaceDeployResultSchema, bosContract, commandOptionSchemas };
2215
2279
  //# sourceMappingURL=contract.d.cts.map
@@ -490,6 +490,7 @@ declare const DeployOptionsSchema: z$1.ZodObject<{
490
490
  registry: z$1.ZodOptional<z$1.ZodString>;
491
491
  imageDigest: z$1.ZodOptional<z$1.ZodString>;
492
492
  fullUpload: z$1.ZodDefault<z$1.ZodBoolean>;
493
+ smoke: z$1.ZodDefault<z$1.ZodBoolean>;
493
494
  }, z$1.core.$strip>;
494
495
  declare const DeployManifestListEntrySchema: z$1.ZodObject<{
495
496
  key: z$1.ZodString;
@@ -533,6 +534,30 @@ declare const DeployResultSchema: z$1.ZodObject<{
533
534
  durationMs: z$1.ZodOptional<z$1.ZodNumber>;
534
535
  }, z$1.core.$strip>>>;
535
536
  }, z$1.core.$strip>;
537
+ declare const SmokeOptionsSchema: z$1.ZodObject<{
538
+ image: z$1.ZodOptional<z$1.ZodString>;
539
+ port: z$1.ZodDefault<z$1.ZodNumber>;
540
+ keep: z$1.ZodDefault<z$1.ZodBoolean>;
541
+ account: z$1.ZodOptional<z$1.ZodString>;
542
+ gateway: z$1.ZodOptional<z$1.ZodString>;
543
+ apiDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
544
+ authDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
545
+ env: z$1.ZodDefault<z$1.ZodEnum<{
546
+ production: "production";
547
+ staging: "staging";
548
+ }>>;
549
+ registry: z$1.ZodOptional<z$1.ZodString>;
550
+ }, z$1.core.$strip>;
551
+ declare const SmokeResultSchema: z$1.ZodObject<{
552
+ status: z$1.ZodEnum<{
553
+ error: "error";
554
+ ok: "ok";
555
+ }>;
556
+ image: z$1.ZodOptional<z$1.ZodString>;
557
+ summary: z$1.ZodOptional<z$1.ZodString>;
558
+ diagnosis: z$1.ZodOptional<z$1.ZodString>;
559
+ error: z$1.ZodOptional<z$1.ZodString>;
560
+ }, z$1.core.$strip>;
536
561
  declare const KeyPublishOptionsSchema: z$1.ZodObject<{
537
562
  allowance: z$1.ZodDefault<z$1.ZodString>;
538
563
  env: z$1.ZodDefault<z$1.ZodEnum<{
@@ -1155,6 +1180,21 @@ declare const commandOptionSchemas: {
1155
1180
  registry: z$1.ZodOptional<z$1.ZodString>;
1156
1181
  imageDigest: z$1.ZodOptional<z$1.ZodString>;
1157
1182
  fullUpload: z$1.ZodDefault<z$1.ZodBoolean>;
1183
+ smoke: z$1.ZodDefault<z$1.ZodBoolean>;
1184
+ }, z$1.core.$strip>;
1185
+ smoke: z$1.ZodObject<{
1186
+ image: z$1.ZodOptional<z$1.ZodString>;
1187
+ port: z$1.ZodDefault<z$1.ZodNumber>;
1188
+ keep: z$1.ZodDefault<z$1.ZodBoolean>;
1189
+ account: z$1.ZodOptional<z$1.ZodString>;
1190
+ gateway: z$1.ZodOptional<z$1.ZodString>;
1191
+ apiDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1192
+ authDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1193
+ env: z$1.ZodDefault<z$1.ZodEnum<{
1194
+ production: "production";
1195
+ staging: "staging";
1196
+ }>>;
1197
+ registry: z$1.ZodOptional<z$1.ZodString>;
1158
1198
  }, z$1.core.$strip>;
1159
1199
  keyPublish: z$1.ZodObject<{
1160
1200
  allowance: z$1.ZodDefault<z$1.ZodString>;
@@ -1709,6 +1749,7 @@ declare const bosContract: {
1709
1749
  registry: z$1.ZodOptional<z$1.ZodString>;
1710
1750
  imageDigest: z$1.ZodOptional<z$1.ZodString>;
1711
1751
  fullUpload: z$1.ZodDefault<z$1.ZodBoolean>;
1752
+ smoke: z$1.ZodDefault<z$1.ZodBoolean>;
1712
1753
  }, z$1.core.$strip>, z$1.ZodObject<{
1713
1754
  status: z$1.ZodEnum<{
1714
1755
  deployed: "deployed";
@@ -1744,6 +1785,29 @@ declare const bosContract: {
1744
1785
  durationMs: z$1.ZodOptional<z$1.ZodNumber>;
1745
1786
  }, z$1.core.$strip>>>;
1746
1787
  }, z$1.core.$strip>, object>;
1788
+ smoke: import("@orpc/contract").ProcedureContract<z$1.ZodObject<{
1789
+ image: z$1.ZodOptional<z$1.ZodString>;
1790
+ port: z$1.ZodDefault<z$1.ZodNumber>;
1791
+ keep: z$1.ZodDefault<z$1.ZodBoolean>;
1792
+ account: z$1.ZodOptional<z$1.ZodString>;
1793
+ gateway: z$1.ZodOptional<z$1.ZodString>;
1794
+ apiDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1795
+ authDatabaseUrl: z$1.ZodOptional<z$1.ZodString>;
1796
+ env: z$1.ZodDefault<z$1.ZodEnum<{
1797
+ production: "production";
1798
+ staging: "staging";
1799
+ }>>;
1800
+ registry: z$1.ZodOptional<z$1.ZodString>;
1801
+ }, z$1.core.$strip>, z$1.ZodObject<{
1802
+ status: z$1.ZodEnum<{
1803
+ error: "error";
1804
+ ok: "ok";
1805
+ }>;
1806
+ image: z$1.ZodOptional<z$1.ZodString>;
1807
+ summary: z$1.ZodOptional<z$1.ZodString>;
1808
+ diagnosis: z$1.ZodOptional<z$1.ZodString>;
1809
+ error: z$1.ZodOptional<z$1.ZodString>;
1810
+ }, z$1.core.$strip>, object>;
1747
1811
  keyPublish: import("@orpc/contract").ProcedureContract<z$1.ZodObject<{
1748
1812
  allowance: z$1.ZodDefault<z$1.ZodString>;
1749
1813
  env: z$1.ZodDefault<z$1.ZodEnum<{
@@ -2211,5 +2275,5 @@ type MfCheckResult = z$1.infer<typeof MfCheckResultSchema>;
2211
2275
  type InfraExportResult = z$1.infer<typeof InfraExportResultSchema>;
2212
2276
  type InfraExportService = z$1.infer<typeof InfraExportServiceSchema>;
2213
2277
  //#endregion
2214
- export { BosConfigResult, BuildOptions, BuildOptionsSchema, BuildResultSchema, ConfigOptionsSchema, ConfigResultSchema, DbDoctorOptions, DbDoctorOptionsSchema, DbDoctorResult, DbDoctorResultSchema, DbRepairOptions, DbRepairOptionsSchema, DbRepairResult, DbRepairResultSchema, DbStudioOptions, DbStudioOptionsSchema, DbStudioResult, DbStudioResultSchema, DeployManifestListEntrySchema, DeployOptions, DeployOptionsSchema, DeployResult, DeployResultSchema, DeployedVersionStatusSchema, DevOptions, DevOptionsSchema, DevResult, DevResultSchema, InfraExportOptions, InfraExportOptionsSchema, InfraExportResult, InfraExportResultSchema, InfraExportService, InfraExportServiceSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, KillOptions, KillOptionsSchema, KillResult, KillResultSchema, LoginOptions, LoginOptionsSchema, LoginResult, LoginResultSchema, LogoutOptions, LogoutOptionsSchema, LogoutResult, LogoutResultSchema, LogsOptions, LogsOptionsSchema, LogsResult, LogsResultSchema, MfCheckOptions, MfCheckOptionsSchema, MfCheckRemoteResultSchema, MfCheckResult, MfCheckResultSchema, OverrideSection, OverrideSectionSchema, PhaseTiming, PhaseTimingSchema, PidEntry, PidEntrySchema, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, ProcessRole, ProcessRoleSchema, PsResult, PsResultSchema, PublishOptions, PublishOptionsSchema, PublishResult, PublishResultSchema, RegistryUseOptionsSchema, RegistryUseResultSchema, RollbackHistoryEntrySchema, RollbackOptionsSchema, RollbackResultSchema, RollbackSlotCheckSchema, RuntimeOverrideTarget, RuntimeOverrideTargetBaseSchema, RuntimeOverrideTargetSchema, StartOptions, StartOptionsSchema, StartResult, StartResultSchema, StatusResult, StatusResultSchema, SyncOptions, SyncOptionsSchema, SyncResult, SyncResultSchema, TypecheckOptions, TypecheckOptionsSchema, TypecheckResult, TypecheckResultSchema, TypecheckWorkspaceResult, TypecheckWorkspaceResultSchema, TypesGenOptions, TypesGenOptionsSchema, TypesGenResult, TypesGenResultSchema, UpgradeOptions, UpgradeOptionsSchema, UpgradeResult, UpgradeResultSchema, WorkspaceDeployResult, WorkspaceDeployResultSchema, bosContract, commandOptionSchemas };
2278
+ export { BosConfigResult, BuildOptions, BuildOptionsSchema, BuildResultSchema, ConfigOptionsSchema, ConfigResultSchema, DbDoctorOptions, DbDoctorOptionsSchema, DbDoctorResult, DbDoctorResultSchema, DbRepairOptions, DbRepairOptionsSchema, DbRepairResult, DbRepairResultSchema, DbStudioOptions, DbStudioOptionsSchema, DbStudioResult, DbStudioResultSchema, DeployManifestListEntrySchema, DeployOptions, DeployOptionsSchema, DeployResult, DeployResultSchema, DeployedVersionStatusSchema, DevOptions, DevOptionsSchema, DevResult, DevResultSchema, InfraExportOptions, InfraExportOptionsSchema, InfraExportResult, InfraExportResultSchema, InfraExportService, InfraExportServiceSchema, InitOptions, InitOptionsSchema, InitResult, InitResultSchema, KeyPublishOptions, KeyPublishOptionsSchema, KeyPublishResult, KeyPublishResultSchema, KillOptions, KillOptionsSchema, KillResult, KillResultSchema, LoginOptions, LoginOptionsSchema, LoginResult, LoginResultSchema, LogoutOptions, LogoutOptionsSchema, LogoutResult, LogoutResultSchema, LogsOptions, LogsOptionsSchema, LogsResult, LogsResultSchema, MfCheckOptions, MfCheckOptionsSchema, MfCheckRemoteResultSchema, MfCheckResult, MfCheckResultSchema, OverrideSection, OverrideSectionSchema, PhaseTiming, PhaseTimingSchema, PidEntry, PidEntrySchema, PluginAddOptions, PluginAddOptionsSchema, PluginAddResult, PluginAddResultSchema, PluginListResult, PluginListResultSchema, PluginPublishOptions, PluginPublishOptionsSchema, PluginPublishResult, PluginPublishResultSchema, PluginRemoveOptions, PluginRemoveOptionsSchema, PluginRemoveResult, PluginRemoveResultSchema, ProcessRole, ProcessRoleSchema, PsResult, PsResultSchema, PublishOptions, PublishOptionsSchema, PublishResult, PublishResultSchema, RegistryUseOptionsSchema, RegistryUseResultSchema, RollbackHistoryEntrySchema, RollbackOptionsSchema, RollbackResultSchema, RollbackSlotCheckSchema, RuntimeOverrideTarget, RuntimeOverrideTargetBaseSchema, RuntimeOverrideTargetSchema, SmokeOptionsSchema, SmokeResultSchema, StartOptions, StartOptionsSchema, StartResult, StartResultSchema, StatusResult, StatusResultSchema, SyncOptions, SyncOptionsSchema, SyncResult, SyncResultSchema, TypecheckOptions, TypecheckOptionsSchema, TypecheckResult, TypecheckResultSchema, TypecheckWorkspaceResult, TypecheckWorkspaceResultSchema, TypesGenOptions, TypesGenOptionsSchema, TypesGenResult, TypesGenResultSchema, UpgradeOptions, UpgradeOptionsSchema, UpgradeResult, UpgradeResultSchema, WorkspaceDeployResult, WorkspaceDeployResultSchema, bosContract, commandOptionSchemas };
2215
2279
  //# sourceMappingURL=contract.d.mts.map
@@ -117,7 +117,7 @@ const cliCommandMeta = {
117
117
  },
118
118
  deploy: {
119
119
  commandPath: ["deploy"],
120
- summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → Railway (image-backed, no build)",
120
+ summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → post-publish smoke (optional) → Railway (image-backed, no build)",
121
121
  interactive: false,
122
122
  fields: {
123
123
  env: { description: "Environment: production or staging" },
@@ -126,9 +126,21 @@ const cliCommandMeta = {
126
126
  verbose: { description: "Show full build output instead of clean summary" },
127
127
  service: { description: "Override Railway service name from config" },
128
128
  imageDigest: { description: "Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest" },
129
+ smoke: { description: "Gate the Railway promotion on a post-publish boot smoke of the runtime image — a red smoke rolls the config back" },
129
130
  registry: { description: "Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)" }
130
131
  }
131
132
  },
133
+ smoke: {
134
+ commandPath: ["smoke"],
135
+ summary: "Boot a runtime image the way production boots (identity-driven, published config) and assert the boot surface: /health, SSR, OpenAPI spec, in-image mf check",
136
+ interactive: false,
137
+ fields: {
138
+ image: { description: "Runtime image ref to boot (required)" },
139
+ port: { description: "Host port to publish the container on (default: 3000)" },
140
+ keep: { description: "Keep the container after the run (debugging)" },
141
+ account: { description: "Registry identity — defaults to the resolved session config" }
142
+ }
143
+ },
132
144
  login: {
133
145
  commandPath: ["login"],
134
146
  summary: "Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)",
@@ -1 +1 @@
1
- {"version":3,"file":"contract.meta.cjs","names":[],"sources":["../src/contract.meta.ts"],"sourcesContent":["export type CliCommandMeta = {\n commandPath?: string[];\n summary: string;\n description?: string;\n examples?: string[];\n interactive?: boolean;\n longRunning?: boolean;\n fields?: Record<string, { positional?: boolean; description?: string }>;\n};\n\nexport const cliCommandMeta = {\n dev: {\n commandPath: [\"dev\"],\n summary: \"Start a development session\",\n interactive: true,\n longRunning: true,\n fields: {\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to force remote (e.g. --remote-plugins auth,registry)\",\n },\n logLevel: {\n description:\n \"Log tail level: error, warn (default), info, or debug (overrides BOS_LOG_LEVEL; the file always gets everything)\",\n },\n },\n },\n start: {\n commandPath: [\"start\"],\n summary: \"Start the production host\",\n interactive: false,\n longRunning: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n configPath: {\n description:\n \"Boot from a local bos config file — skips FastKV resolution and SRI integrity verification\",\n },\n },\n },\n build: {\n commandPath: [\"build\"],\n summary: \"Build selected workspaces\",\n interactive: false,\n fields: {\n packages: { positional: true, description: \"Comma-separated package list\" },\n },\n },\n config: {\n commandPath: [\"config\"],\n summary: \"Print the loaded BOS configuration\",\n interactive: false,\n fields: {\n full: { description: \"Print the fully resolved configuration\" },\n },\n },\n registryUse: {\n commandPath: [\"registry\", \"use\"],\n summary:\n \"Compose app.ui/app.host/app.api/plugins.<key> sections from a published runtime into bos.config.json\",\n interactive: false,\n fields: {\n from: {\n positional: true,\n description:\n \"Published runtime (account/gateway or bos:// URL), e.g. v1.citynode.near/citynode.app\",\n },\n sections: {\n description: \"Comma-separated sections to compose, e.g. app.ui,plugins.apps\",\n },\n dryRun: { description: \"Preview the merged config without writing\" },\n },\n },\n pluginAdd: {\n commandPath: [\"plugin\", \"add\"],\n summary: \"Add a plugin attachment\",\n interactive: false,\n fields: {\n source: {\n positional: true,\n description: \"Plugin source (local:path, bos://account/domain, or URL)\",\n },\n as: { description: \"Plugin alias\" },\n production: { description: \"Production URL override\" },\n },\n },\n pluginRemove: {\n commandPath: [\"plugin\", \"remove\"],\n summary: \"Remove a plugin attachment\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n pluginList: {\n commandPath: [\"plugin\", \"list\"],\n summary: \"List configured plugins\",\n interactive: false,\n },\n pluginPublish: {\n commandPath: [\"plugin\", \"publish\"],\n summary: \"Publish a single plugin\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n publish: {\n commandPath: [\"publish\"],\n summary:\n \"Publish the current workspace configuration (no build — use bos deploy for the full train)\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview what would be published without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n rollback: {\n commandPath: [\"rollback\"],\n summary: \"Republish an earlier config snapshot from the registry publish history\",\n interactive: true,\n fields: {\n version: { description: \"Block height (or timestamp) of the snapshot from the listing\" },\n previous: { description: \"Roll back to the write immediately before the current one\" },\n force: {\n description:\n \"Allow pre-Phase-A snapshots without verifiable manifest pins (their bytes were overwritten in place)\",\n },\n limit: { description: \"Listing depth (1-200, default 20)\" },\n dryRun: { description: \"Preview the rollback without publishing\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n deploy: {\n commandPath: [\"deploy\"],\n summary:\n \"Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → Railway (image-backed, no build)\",\n interactive: false,\n fields: {\n env: { description: \"Environment: production or staging\" },\n build: { description: \"Build and deploy workspaces before publish (default: true)\" },\n dryRun: { description: \"Preview what would be deployed without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n service: { description: \"Override Railway service name from config\" },\n imageDigest: {\n description:\n \"Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n login: {\n commandPath: [\"login\"],\n summary:\n \"Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)\",\n interactive: true,\n fields: {\n key: { description: \"Also mint and export a scoped publish key for headless/CI use\" },\n site: { description: \"Override site URL hosting the CLI login page\" },\n device: { description: \"Device label recorded on the credential (default: hostname)\" },\n expiresIn: { description: \"Session lifetime in seconds (default: 90 days)\" },\n env: { description: \"Environment: production (default) or staging\" },\n },\n },\n logout: {\n commandPath: [\"logout\"],\n summary: \"Revoke the stored CLI session and delete the exported publish key\",\n interactive: false,\n },\n keyPublish: {\n commandPath: [\"key\", \"generate\"],\n summary: \"Generate a publish access key\",\n interactive: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n allowance: { description: \"NEAR allowance for the key (default: 1NEAR, min: 0.3NEAR)\" },\n removeOldKeys: {\n description:\n \"Remove existing publish key(s) without prompting (default: ask on a TTY, yes when non-interactive)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n init: {\n commandPath: [\"init\"],\n summary: \"Scaffold a new project by extending a deployed app or template\",\n interactive: true,\n fields: {\n domain: {\n positional: true,\n description: \"New project domain (e.g. myapp.everything.dev)\",\n },\n extends: {\n description: \"Parent to extend from (e.g. bos://account/gateway or account/gateway)\",\n },\n account: { description: \"New project NEAR account (auto-derived from extends)\" },\n directory: { description: \"Target directory (auto-derived from domain)\" },\n source: { description: \"Local source dir (skips GitHub download)\" },\n plugins: {\n description: \"Comma-separated plugin keys to include (requires --overrides=plugins)\",\n },\n overrides: {\n description: \"Comma-separated sections to customize locally: ui,api,host,plugins\",\n },\n level: {\n description:\n \"Starter complexity: simple (public shell) or advanced (adds dashboard, orgs, admin)\",\n },\n noInteractive: { description: \"Skip prompts, use flags only\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n sync: {\n commandPath: [\"sync\"],\n summary: \"Sync template files from parent project\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview changes without writing files\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n upgrade: {\n commandPath: [\"upgrade\"],\n summary: \"Upgrade framework packages and sync template files\",\n interactive: true,\n fields: {\n dryRun: { description: \"Preview changes without writing\" },\n noInstall: { description: \"Skip pnpm install\" },\n noSync: { description: \"Only upgrade packages, skip template sync\" },\n },\n },\n typesGen: {\n commandPath: [\"types\", \"gen\"],\n summary: \"Generate type definitions from configured API and plugin contracts\",\n interactive: false,\n fields: {\n env: { description: \"Environment: development (default) or production\" },\n dryRun: { description: \"Preview what would be fetched without writing files\" },\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to fetch contract types remotely (e.g. --remote-plugins auth,registry)\",\n },\n },\n },\n typecheck: {\n commandPath: [\"typecheck\"],\n summary: \"Run TypeScript type checking across all local workspaces\",\n interactive: false,\n fields: {\n packages: {\n positional: true,\n description: \"Comma-separated workspace list (default: all)\",\n },\n },\n },\n mfCheck: {\n commandPath: [\"mf\", \"check\"],\n summary:\n \"Verify Module Federation runtime compatibility across published host + plugin bundles\",\n interactive: false,\n },\n dbStudio: {\n commandPath: [\"db\", \"studio\"],\n summary: \"Open Drizzle Studio for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name (default: api)\",\n },\n },\n },\n dbDoctor: {\n commandPath: [\"db\", \"doctor\"],\n summary: \"Diagnose migration health for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n },\n },\n dbRepair: {\n commandPath: [\"db\", \"repair\"],\n summary: \"Reset migration history and reapply migrations for a plugin\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n mode: {\n description: \"Repair mode: history-reset (default) or recreate (not yet supported)\",\n },\n yes: {\n description: \"Skip confirmation prompt\",\n },\n },\n },\n status: {\n commandPath: [\"status\"],\n summary: \"Show project health, versions, and update availability\",\n interactive: false,\n },\n ps: {\n commandPath: [\"ps\"],\n summary: \"List tracked development processes\",\n interactive: false,\n },\n logs: {\n commandPath: [\"logs\"],\n summary: \"Read dev session logs (.bos/logs/dev-latest.log)\",\n interactive: false,\n fields: {\n service: {\n description: \"Filter by service name (e.g. host, api, auth, ui, plugin:votes)\",\n },\n tail: { description: \"Show only the last N lines\" },\n follow: { description: \"Stream the log as lines are appended\" },\n },\n },\n kill: {\n commandPath: [\"kill\"],\n summary: \"Stop tracked development processes\",\n interactive: false,\n fields: {\n configDir: { description: \"Kill processes owned by a config directory (defaults to cwd)\" },\n signal: { description: \"Signal: SIGTERM (default) or SIGKILL\" },\n all: { description: \"Kill processes across all config directories\" },\n },\n },\n infraExport: {\n commandPath: [\"infra\", \"export\"],\n summary: \"Emit the resolved CI infra plan (env + services) for the current runtime\",\n interactive: false,\n fields: {\n target: { description: \"Export target: ci (default) or local\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n configDir: { description: \"Override config directory\" },\n },\n },\n} as const satisfies Record<string, CliCommandMeta>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"contract.meta.cjs","names":[],"sources":["../src/contract.meta.ts"],"sourcesContent":["export type CliCommandMeta = {\n commandPath?: string[];\n summary: string;\n description?: string;\n examples?: string[];\n interactive?: boolean;\n longRunning?: boolean;\n fields?: Record<string, { positional?: boolean; description?: string }>;\n};\n\nexport const cliCommandMeta = {\n dev: {\n commandPath: [\"dev\"],\n summary: \"Start a development session\",\n interactive: true,\n longRunning: true,\n fields: {\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to force remote (e.g. --remote-plugins auth,registry)\",\n },\n logLevel: {\n description:\n \"Log tail level: error, warn (default), info, or debug (overrides BOS_LOG_LEVEL; the file always gets everything)\",\n },\n },\n },\n start: {\n commandPath: [\"start\"],\n summary: \"Start the production host\",\n interactive: false,\n longRunning: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n configPath: {\n description:\n \"Boot from a local bos config file — skips FastKV resolution and SRI integrity verification\",\n },\n },\n },\n build: {\n commandPath: [\"build\"],\n summary: \"Build selected workspaces\",\n interactive: false,\n fields: {\n packages: { positional: true, description: \"Comma-separated package list\" },\n },\n },\n config: {\n commandPath: [\"config\"],\n summary: \"Print the loaded BOS configuration\",\n interactive: false,\n fields: {\n full: { description: \"Print the fully resolved configuration\" },\n },\n },\n registryUse: {\n commandPath: [\"registry\", \"use\"],\n summary:\n \"Compose app.ui/app.host/app.api/plugins.<key> sections from a published runtime into bos.config.json\",\n interactive: false,\n fields: {\n from: {\n positional: true,\n description:\n \"Published runtime (account/gateway or bos:// URL), e.g. v1.citynode.near/citynode.app\",\n },\n sections: {\n description: \"Comma-separated sections to compose, e.g. app.ui,plugins.apps\",\n },\n dryRun: { description: \"Preview the merged config without writing\" },\n },\n },\n pluginAdd: {\n commandPath: [\"plugin\", \"add\"],\n summary: \"Add a plugin attachment\",\n interactive: false,\n fields: {\n source: {\n positional: true,\n description: \"Plugin source (local:path, bos://account/domain, or URL)\",\n },\n as: { description: \"Plugin alias\" },\n production: { description: \"Production URL override\" },\n },\n },\n pluginRemove: {\n commandPath: [\"plugin\", \"remove\"],\n summary: \"Remove a plugin attachment\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n pluginList: {\n commandPath: [\"plugin\", \"list\"],\n summary: \"List configured plugins\",\n interactive: false,\n },\n pluginPublish: {\n commandPath: [\"plugin\", \"publish\"],\n summary: \"Publish a single plugin\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n publish: {\n commandPath: [\"publish\"],\n summary:\n \"Publish the current workspace configuration (no build — use bos deploy for the full train)\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview what would be published without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n rollback: {\n commandPath: [\"rollback\"],\n summary: \"Republish an earlier config snapshot from the registry publish history\",\n interactive: true,\n fields: {\n version: { description: \"Block height (or timestamp) of the snapshot from the listing\" },\n previous: { description: \"Roll back to the write immediately before the current one\" },\n force: {\n description:\n \"Allow pre-Phase-A snapshots without verifiable manifest pins (their bytes were overwritten in place)\",\n },\n limit: { description: \"Listing depth (1-200, default 20)\" },\n dryRun: { description: \"Preview the rollback without publishing\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n deploy: {\n commandPath: [\"deploy\"],\n summary:\n \"Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → post-publish smoke (optional) → Railway (image-backed, no build)\",\n interactive: false,\n fields: {\n env: { description: \"Environment: production or staging\" },\n build: { description: \"Build and deploy workspaces before publish (default: true)\" },\n dryRun: { description: \"Preview what would be deployed without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n service: { description: \"Override Railway service name from config\" },\n imageDigest: {\n description:\n \"Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest\",\n },\n smoke: {\n description:\n \"Gate the Railway promotion on a post-publish boot smoke of the runtime image — a red smoke rolls the config back\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n smoke: {\n commandPath: [\"smoke\"],\n summary:\n \"Boot a runtime image the way production boots (identity-driven, published config) and assert the boot surface: /health, SSR, OpenAPI spec, in-image mf check\",\n interactive: false,\n fields: {\n image: { description: \"Runtime image ref to boot (required)\" },\n port: { description: \"Host port to publish the container on (default: 3000)\" },\n keep: { description: \"Keep the container after the run (debugging)\" },\n account: { description: \"Registry identity — defaults to the resolved session config\" },\n },\n },\n login: {\n commandPath: [\"login\"],\n summary:\n \"Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)\",\n interactive: true,\n fields: {\n key: { description: \"Also mint and export a scoped publish key for headless/CI use\" },\n site: { description: \"Override site URL hosting the CLI login page\" },\n device: { description: \"Device label recorded on the credential (default: hostname)\" },\n expiresIn: { description: \"Session lifetime in seconds (default: 90 days)\" },\n env: { description: \"Environment: production (default) or staging\" },\n },\n },\n logout: {\n commandPath: [\"logout\"],\n summary: \"Revoke the stored CLI session and delete the exported publish key\",\n interactive: false,\n },\n keyPublish: {\n commandPath: [\"key\", \"generate\"],\n summary: \"Generate a publish access key\",\n interactive: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n allowance: { description: \"NEAR allowance for the key (default: 1NEAR, min: 0.3NEAR)\" },\n removeOldKeys: {\n description:\n \"Remove existing publish key(s) without prompting (default: ask on a TTY, yes when non-interactive)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n init: {\n commandPath: [\"init\"],\n summary: \"Scaffold a new project by extending a deployed app or template\",\n interactive: true,\n fields: {\n domain: {\n positional: true,\n description: \"New project domain (e.g. myapp.everything.dev)\",\n },\n extends: {\n description: \"Parent to extend from (e.g. bos://account/gateway or account/gateway)\",\n },\n account: { description: \"New project NEAR account (auto-derived from extends)\" },\n directory: { description: \"Target directory (auto-derived from domain)\" },\n source: { description: \"Local source dir (skips GitHub download)\" },\n plugins: {\n description: \"Comma-separated plugin keys to include (requires --overrides=plugins)\",\n },\n overrides: {\n description: \"Comma-separated sections to customize locally: ui,api,host,plugins\",\n },\n level: {\n description:\n \"Starter complexity: simple (public shell) or advanced (adds dashboard, orgs, admin)\",\n },\n noInteractive: { description: \"Skip prompts, use flags only\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n sync: {\n commandPath: [\"sync\"],\n summary: \"Sync template files from parent project\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview changes without writing files\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n upgrade: {\n commandPath: [\"upgrade\"],\n summary: \"Upgrade framework packages and sync template files\",\n interactive: true,\n fields: {\n dryRun: { description: \"Preview changes without writing\" },\n noInstall: { description: \"Skip pnpm install\" },\n noSync: { description: \"Only upgrade packages, skip template sync\" },\n },\n },\n typesGen: {\n commandPath: [\"types\", \"gen\"],\n summary: \"Generate type definitions from configured API and plugin contracts\",\n interactive: false,\n fields: {\n env: { description: \"Environment: development (default) or production\" },\n dryRun: { description: \"Preview what would be fetched without writing files\" },\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to fetch contract types remotely (e.g. --remote-plugins auth,registry)\",\n },\n },\n },\n typecheck: {\n commandPath: [\"typecheck\"],\n summary: \"Run TypeScript type checking across all local workspaces\",\n interactive: false,\n fields: {\n packages: {\n positional: true,\n description: \"Comma-separated workspace list (default: all)\",\n },\n },\n },\n mfCheck: {\n commandPath: [\"mf\", \"check\"],\n summary:\n \"Verify Module Federation runtime compatibility across published host + plugin bundles\",\n interactive: false,\n },\n dbStudio: {\n commandPath: [\"db\", \"studio\"],\n summary: \"Open Drizzle Studio for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name (default: api)\",\n },\n },\n },\n dbDoctor: {\n commandPath: [\"db\", \"doctor\"],\n summary: \"Diagnose migration health for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n },\n },\n dbRepair: {\n commandPath: [\"db\", \"repair\"],\n summary: \"Reset migration history and reapply migrations for a plugin\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n mode: {\n description: \"Repair mode: history-reset (default) or recreate (not yet supported)\",\n },\n yes: {\n description: \"Skip confirmation prompt\",\n },\n },\n },\n status: {\n commandPath: [\"status\"],\n summary: \"Show project health, versions, and update availability\",\n interactive: false,\n },\n ps: {\n commandPath: [\"ps\"],\n summary: \"List tracked development processes\",\n interactive: false,\n },\n logs: {\n commandPath: [\"logs\"],\n summary: \"Read dev session logs (.bos/logs/dev-latest.log)\",\n interactive: false,\n fields: {\n service: {\n description: \"Filter by service name (e.g. host, api, auth, ui, plugin:votes)\",\n },\n tail: { description: \"Show only the last N lines\" },\n follow: { description: \"Stream the log as lines are appended\" },\n },\n },\n kill: {\n commandPath: [\"kill\"],\n summary: \"Stop tracked development processes\",\n interactive: false,\n fields: {\n configDir: { description: \"Kill processes owned by a config directory (defaults to cwd)\" },\n signal: { description: \"Signal: SIGTERM (default) or SIGKILL\" },\n all: { description: \"Kill processes across all config directories\" },\n },\n },\n infraExport: {\n commandPath: [\"infra\", \"export\"],\n summary: \"Emit the resolved CI infra plan (env + services) for the current runtime\",\n interactive: false,\n fields: {\n target: { description: \"Export target: ci (default) or local\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n configDir: { description: \"Override config directory\" },\n },\n },\n} as const satisfies Record<string, CliCommandMeta>;\n"],"mappings":"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"}
@@ -186,7 +186,7 @@ declare const cliCommandMeta: {
186
186
  };
187
187
  readonly deploy: {
188
188
  readonly commandPath: ["deploy"];
189
- readonly summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → Railway (image-backed, no build)";
189
+ readonly summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → post-publish smoke (optional) → Railway (image-backed, no build)";
190
190
  readonly interactive: false;
191
191
  readonly fields: {
192
192
  readonly env: {
@@ -207,11 +207,33 @@ declare const cliCommandMeta: {
207
207
  readonly imageDigest: {
208
208
  readonly description: "Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest";
209
209
  };
210
+ readonly smoke: {
211
+ readonly description: "Gate the Railway promotion on a post-publish boot smoke of the runtime image — a red smoke rolls the config back";
212
+ };
210
213
  readonly registry: {
211
214
  readonly description: "Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)";
212
215
  };
213
216
  };
214
217
  };
218
+ readonly smoke: {
219
+ readonly commandPath: ["smoke"];
220
+ readonly summary: "Boot a runtime image the way production boots (identity-driven, published config) and assert the boot surface: /health, SSR, OpenAPI spec, in-image mf check";
221
+ readonly interactive: false;
222
+ readonly fields: {
223
+ readonly image: {
224
+ readonly description: "Runtime image ref to boot (required)";
225
+ };
226
+ readonly port: {
227
+ readonly description: "Host port to publish the container on (default: 3000)";
228
+ };
229
+ readonly keep: {
230
+ readonly description: "Keep the container after the run (debugging)";
231
+ };
232
+ readonly account: {
233
+ readonly description: "Registry identity — defaults to the resolved session config";
234
+ };
235
+ };
236
+ };
215
237
  readonly login: {
216
238
  readonly commandPath: ["login"];
217
239
  readonly summary: "Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)";
@@ -186,7 +186,7 @@ declare const cliCommandMeta: {
186
186
  };
187
187
  readonly deploy: {
188
188
  readonly commandPath: ["deploy"];
189
- readonly summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → Railway (image-backed, no build)";
189
+ readonly summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → post-publish smoke (optional) → Railway (image-backed, no build)";
190
190
  readonly interactive: false;
191
191
  readonly fields: {
192
192
  readonly env: {
@@ -207,11 +207,33 @@ declare const cliCommandMeta: {
207
207
  readonly imageDigest: {
208
208
  readonly description: "Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest";
209
209
  };
210
+ readonly smoke: {
211
+ readonly description: "Gate the Railway promotion on a post-publish boot smoke of the runtime image — a red smoke rolls the config back";
212
+ };
210
213
  readonly registry: {
211
214
  readonly description: "Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)";
212
215
  };
213
216
  };
214
217
  };
218
+ readonly smoke: {
219
+ readonly commandPath: ["smoke"];
220
+ readonly summary: "Boot a runtime image the way production boots (identity-driven, published config) and assert the boot surface: /health, SSR, OpenAPI spec, in-image mf check";
221
+ readonly interactive: false;
222
+ readonly fields: {
223
+ readonly image: {
224
+ readonly description: "Runtime image ref to boot (required)";
225
+ };
226
+ readonly port: {
227
+ readonly description: "Host port to publish the container on (default: 3000)";
228
+ };
229
+ readonly keep: {
230
+ readonly description: "Keep the container after the run (debugging)";
231
+ };
232
+ readonly account: {
233
+ readonly description: "Registry identity — defaults to the resolved session config";
234
+ };
235
+ };
236
+ };
215
237
  readonly login: {
216
238
  readonly commandPath: ["login"];
217
239
  readonly summary: "Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)";
@@ -116,7 +116,7 @@ const cliCommandMeta = {
116
116
  },
117
117
  deploy: {
118
118
  commandPath: ["deploy"],
119
- summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → Railway (image-backed, no build)",
119
+ summary: "Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → post-publish smoke (optional) → Railway (image-backed, no build)",
120
120
  interactive: false,
121
121
  fields: {
122
122
  env: { description: "Environment: production or staging" },
@@ -125,9 +125,21 @@ const cliCommandMeta = {
125
125
  verbose: { description: "Show full build output instead of clean summary" },
126
126
  service: { description: "Override Railway service name from config" },
127
127
  imageDigest: { description: "Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest" },
128
+ smoke: { description: "Gate the Railway promotion on a post-publish boot smoke of the runtime image — a red smoke rolls the config back" },
128
129
  registry: { description: "Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)" }
129
130
  }
130
131
  },
132
+ smoke: {
133
+ commandPath: ["smoke"],
134
+ summary: "Boot a runtime image the way production boots (identity-driven, published config) and assert the boot surface: /health, SSR, OpenAPI spec, in-image mf check",
135
+ interactive: false,
136
+ fields: {
137
+ image: { description: "Runtime image ref to boot (required)" },
138
+ port: { description: "Host port to publish the container on (default: 3000)" },
139
+ keep: { description: "Keep the container after the run (debugging)" },
140
+ account: { description: "Registry identity — defaults to the resolved session config" }
141
+ }
142
+ },
131
143
  login: {
132
144
  commandPath: ["login"],
133
145
  summary: "Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)",
@@ -1 +1 @@
1
- {"version":3,"file":"contract.meta.mjs","names":[],"sources":["../src/contract.meta.ts"],"sourcesContent":["export type CliCommandMeta = {\n commandPath?: string[];\n summary: string;\n description?: string;\n examples?: string[];\n interactive?: boolean;\n longRunning?: boolean;\n fields?: Record<string, { positional?: boolean; description?: string }>;\n};\n\nexport const cliCommandMeta = {\n dev: {\n commandPath: [\"dev\"],\n summary: \"Start a development session\",\n interactive: true,\n longRunning: true,\n fields: {\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to force remote (e.g. --remote-plugins auth,registry)\",\n },\n logLevel: {\n description:\n \"Log tail level: error, warn (default), info, or debug (overrides BOS_LOG_LEVEL; the file always gets everything)\",\n },\n },\n },\n start: {\n commandPath: [\"start\"],\n summary: \"Start the production host\",\n interactive: false,\n longRunning: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n configPath: {\n description:\n \"Boot from a local bos config file — skips FastKV resolution and SRI integrity verification\",\n },\n },\n },\n build: {\n commandPath: [\"build\"],\n summary: \"Build selected workspaces\",\n interactive: false,\n fields: {\n packages: { positional: true, description: \"Comma-separated package list\" },\n },\n },\n config: {\n commandPath: [\"config\"],\n summary: \"Print the loaded BOS configuration\",\n interactive: false,\n fields: {\n full: { description: \"Print the fully resolved configuration\" },\n },\n },\n registryUse: {\n commandPath: [\"registry\", \"use\"],\n summary:\n \"Compose app.ui/app.host/app.api/plugins.<key> sections from a published runtime into bos.config.json\",\n interactive: false,\n fields: {\n from: {\n positional: true,\n description:\n \"Published runtime (account/gateway or bos:// URL), e.g. v1.citynode.near/citynode.app\",\n },\n sections: {\n description: \"Comma-separated sections to compose, e.g. app.ui,plugins.apps\",\n },\n dryRun: { description: \"Preview the merged config without writing\" },\n },\n },\n pluginAdd: {\n commandPath: [\"plugin\", \"add\"],\n summary: \"Add a plugin attachment\",\n interactive: false,\n fields: {\n source: {\n positional: true,\n description: \"Plugin source (local:path, bos://account/domain, or URL)\",\n },\n as: { description: \"Plugin alias\" },\n production: { description: \"Production URL override\" },\n },\n },\n pluginRemove: {\n commandPath: [\"plugin\", \"remove\"],\n summary: \"Remove a plugin attachment\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n pluginList: {\n commandPath: [\"plugin\", \"list\"],\n summary: \"List configured plugins\",\n interactive: false,\n },\n pluginPublish: {\n commandPath: [\"plugin\", \"publish\"],\n summary: \"Publish a single plugin\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n publish: {\n commandPath: [\"publish\"],\n summary:\n \"Publish the current workspace configuration (no build — use bos deploy for the full train)\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview what would be published without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n rollback: {\n commandPath: [\"rollback\"],\n summary: \"Republish an earlier config snapshot from the registry publish history\",\n interactive: true,\n fields: {\n version: { description: \"Block height (or timestamp) of the snapshot from the listing\" },\n previous: { description: \"Roll back to the write immediately before the current one\" },\n force: {\n description:\n \"Allow pre-Phase-A snapshots without verifiable manifest pins (their bytes were overwritten in place)\",\n },\n limit: { description: \"Listing depth (1-200, default 20)\" },\n dryRun: { description: \"Preview the rollback without publishing\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n deploy: {\n commandPath: [\"deploy\"],\n summary:\n \"Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → Railway (image-backed, no build)\",\n interactive: false,\n fields: {\n env: { description: \"Environment: production or staging\" },\n build: { description: \"Build and deploy workspaces before publish (default: true)\" },\n dryRun: { description: \"Preview what would be deployed without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n service: { description: \"Override Railway service name from config\" },\n imageDigest: {\n description:\n \"Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n login: {\n commandPath: [\"login\"],\n summary:\n \"Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)\",\n interactive: true,\n fields: {\n key: { description: \"Also mint and export a scoped publish key for headless/CI use\" },\n site: { description: \"Override site URL hosting the CLI login page\" },\n device: { description: \"Device label recorded on the credential (default: hostname)\" },\n expiresIn: { description: \"Session lifetime in seconds (default: 90 days)\" },\n env: { description: \"Environment: production (default) or staging\" },\n },\n },\n logout: {\n commandPath: [\"logout\"],\n summary: \"Revoke the stored CLI session and delete the exported publish key\",\n interactive: false,\n },\n keyPublish: {\n commandPath: [\"key\", \"generate\"],\n summary: \"Generate a publish access key\",\n interactive: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n allowance: { description: \"NEAR allowance for the key (default: 1NEAR, min: 0.3NEAR)\" },\n removeOldKeys: {\n description:\n \"Remove existing publish key(s) without prompting (default: ask on a TTY, yes when non-interactive)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n init: {\n commandPath: [\"init\"],\n summary: \"Scaffold a new project by extending a deployed app or template\",\n interactive: true,\n fields: {\n domain: {\n positional: true,\n description: \"New project domain (e.g. myapp.everything.dev)\",\n },\n extends: {\n description: \"Parent to extend from (e.g. bos://account/gateway or account/gateway)\",\n },\n account: { description: \"New project NEAR account (auto-derived from extends)\" },\n directory: { description: \"Target directory (auto-derived from domain)\" },\n source: { description: \"Local source dir (skips GitHub download)\" },\n plugins: {\n description: \"Comma-separated plugin keys to include (requires --overrides=plugins)\",\n },\n overrides: {\n description: \"Comma-separated sections to customize locally: ui,api,host,plugins\",\n },\n level: {\n description:\n \"Starter complexity: simple (public shell) or advanced (adds dashboard, orgs, admin)\",\n },\n noInteractive: { description: \"Skip prompts, use flags only\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n sync: {\n commandPath: [\"sync\"],\n summary: \"Sync template files from parent project\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview changes without writing files\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n upgrade: {\n commandPath: [\"upgrade\"],\n summary: \"Upgrade framework packages and sync template files\",\n interactive: true,\n fields: {\n dryRun: { description: \"Preview changes without writing\" },\n noInstall: { description: \"Skip pnpm install\" },\n noSync: { description: \"Only upgrade packages, skip template sync\" },\n },\n },\n typesGen: {\n commandPath: [\"types\", \"gen\"],\n summary: \"Generate type definitions from configured API and plugin contracts\",\n interactive: false,\n fields: {\n env: { description: \"Environment: development (default) or production\" },\n dryRun: { description: \"Preview what would be fetched without writing files\" },\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to fetch contract types remotely (e.g. --remote-plugins auth,registry)\",\n },\n },\n },\n typecheck: {\n commandPath: [\"typecheck\"],\n summary: \"Run TypeScript type checking across all local workspaces\",\n interactive: false,\n fields: {\n packages: {\n positional: true,\n description: \"Comma-separated workspace list (default: all)\",\n },\n },\n },\n mfCheck: {\n commandPath: [\"mf\", \"check\"],\n summary:\n \"Verify Module Federation runtime compatibility across published host + plugin bundles\",\n interactive: false,\n },\n dbStudio: {\n commandPath: [\"db\", \"studio\"],\n summary: \"Open Drizzle Studio for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name (default: api)\",\n },\n },\n },\n dbDoctor: {\n commandPath: [\"db\", \"doctor\"],\n summary: \"Diagnose migration health for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n },\n },\n dbRepair: {\n commandPath: [\"db\", \"repair\"],\n summary: \"Reset migration history and reapply migrations for a plugin\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n mode: {\n description: \"Repair mode: history-reset (default) or recreate (not yet supported)\",\n },\n yes: {\n description: \"Skip confirmation prompt\",\n },\n },\n },\n status: {\n commandPath: [\"status\"],\n summary: \"Show project health, versions, and update availability\",\n interactive: false,\n },\n ps: {\n commandPath: [\"ps\"],\n summary: \"List tracked development processes\",\n interactive: false,\n },\n logs: {\n commandPath: [\"logs\"],\n summary: \"Read dev session logs (.bos/logs/dev-latest.log)\",\n interactive: false,\n fields: {\n service: {\n description: \"Filter by service name (e.g. host, api, auth, ui, plugin:votes)\",\n },\n tail: { description: \"Show only the last N lines\" },\n follow: { description: \"Stream the log as lines are appended\" },\n },\n },\n kill: {\n commandPath: [\"kill\"],\n summary: \"Stop tracked development processes\",\n interactive: false,\n fields: {\n configDir: { description: \"Kill processes owned by a config directory (defaults to cwd)\" },\n signal: { description: \"Signal: SIGTERM (default) or SIGKILL\" },\n all: { description: \"Kill processes across all config directories\" },\n },\n },\n infraExport: {\n commandPath: [\"infra\", \"export\"],\n summary: \"Emit the resolved CI infra plan (env + services) for the current runtime\",\n interactive: false,\n fields: {\n target: { description: \"Export target: ci (default) or local\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n configDir: { description: \"Override config directory\" },\n },\n },\n} as const satisfies Record<string, CliCommandMeta>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"contract.meta.mjs","names":[],"sources":["../src/contract.meta.ts"],"sourcesContent":["export type CliCommandMeta = {\n commandPath?: string[];\n summary: string;\n description?: string;\n examples?: string[];\n interactive?: boolean;\n longRunning?: boolean;\n fields?: Record<string, { positional?: boolean; description?: string }>;\n};\n\nexport const cliCommandMeta = {\n dev: {\n commandPath: [\"dev\"],\n summary: \"Start a development session\",\n interactive: true,\n longRunning: true,\n fields: {\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to force remote (e.g. --remote-plugins auth,registry)\",\n },\n logLevel: {\n description:\n \"Log tail level: error, warn (default), info, or debug (overrides BOS_LOG_LEVEL; the file always gets everything)\",\n },\n },\n },\n start: {\n commandPath: [\"start\"],\n summary: \"Start the production host\",\n interactive: false,\n longRunning: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n configPath: {\n description:\n \"Boot from a local bos config file — skips FastKV resolution and SRI integrity verification\",\n },\n },\n },\n build: {\n commandPath: [\"build\"],\n summary: \"Build selected workspaces\",\n interactive: false,\n fields: {\n packages: { positional: true, description: \"Comma-separated package list\" },\n },\n },\n config: {\n commandPath: [\"config\"],\n summary: \"Print the loaded BOS configuration\",\n interactive: false,\n fields: {\n full: { description: \"Print the fully resolved configuration\" },\n },\n },\n registryUse: {\n commandPath: [\"registry\", \"use\"],\n summary:\n \"Compose app.ui/app.host/app.api/plugins.<key> sections from a published runtime into bos.config.json\",\n interactive: false,\n fields: {\n from: {\n positional: true,\n description:\n \"Published runtime (account/gateway or bos:// URL), e.g. v1.citynode.near/citynode.app\",\n },\n sections: {\n description: \"Comma-separated sections to compose, e.g. app.ui,plugins.apps\",\n },\n dryRun: { description: \"Preview the merged config without writing\" },\n },\n },\n pluginAdd: {\n commandPath: [\"plugin\", \"add\"],\n summary: \"Add a plugin attachment\",\n interactive: false,\n fields: {\n source: {\n positional: true,\n description: \"Plugin source (local:path, bos://account/domain, or URL)\",\n },\n as: { description: \"Plugin alias\" },\n production: { description: \"Production URL override\" },\n },\n },\n pluginRemove: {\n commandPath: [\"plugin\", \"remove\"],\n summary: \"Remove a plugin attachment\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n pluginList: {\n commandPath: [\"plugin\", \"list\"],\n summary: \"List configured plugins\",\n interactive: false,\n },\n pluginPublish: {\n commandPath: [\"plugin\", \"publish\"],\n summary: \"Publish a single plugin\",\n interactive: false,\n fields: { key: { positional: true, description: \"Plugin key\" } },\n },\n publish: {\n commandPath: [\"publish\"],\n summary:\n \"Publish the current workspace configuration (no build — use bos deploy for the full train)\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview what would be published without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n rollback: {\n commandPath: [\"rollback\"],\n summary: \"Republish an earlier config snapshot from the registry publish history\",\n interactive: true,\n fields: {\n version: { description: \"Block height (or timestamp) of the snapshot from the listing\" },\n previous: { description: \"Roll back to the write immediately before the current one\" },\n force: {\n description:\n \"Allow pre-Phase-A snapshots without verifiable manifest pins (their bytes were overwritten in place)\",\n },\n limit: { description: \"Listing depth (1-200, default 20)\" },\n dryRun: { description: \"Preview the rollback without publishing\" },\n env: { description: \"Environment: production or staging\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n wallet: {\n description:\n \"Publish gaslessly with a one-time wallet approval (NEP-366 delegate action relayed by the platform relayer)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n deploy: {\n commandPath: [\"deploy\"],\n summary:\n \"Deploy train: preflight → build → upload bundles → publish config → runtime image (pre-pushed digest or local docker build) → post-publish smoke (optional) → Railway (image-backed, no build)\",\n interactive: false,\n fields: {\n env: { description: \"Environment: production or staging\" },\n build: { description: \"Build and deploy workspaces before publish (default: true)\" },\n dryRun: { description: \"Preview what would be deployed without writing\" },\n verbose: { description: \"Show full build output instead of clean summary\" },\n service: { description: \"Override Railway service name from config\" },\n imageDigest: {\n description:\n \"Digest of a pre-pushed runtime image (sha256:…) — skips the local image build/push; Railway pins this digest\",\n },\n smoke: {\n description:\n \"Gate the Railway promotion on a post-publish boot smoke of the runtime image — a red smoke rolls the config back\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n smoke: {\n commandPath: [\"smoke\"],\n summary:\n \"Boot a runtime image the way production boots (identity-driven, published config) and assert the boot surface: /health, SSR, OpenAPI spec, in-image mf check\",\n interactive: false,\n fields: {\n image: { description: \"Runtime image ref to boot (required)\" },\n port: { description: \"Host port to publish the container on (default: 3000)\" },\n keep: { description: \"Keep the container after the run (debugging)\" },\n account: { description: \"Registry identity — defaults to the resolved session config\" },\n },\n },\n login: {\n commandPath: [\"login\"],\n summary:\n \"Sign in with your NEAR account via the hosted site (wallet, passkey, or social login)\",\n interactive: true,\n fields: {\n key: { description: \"Also mint and export a scoped publish key for headless/CI use\" },\n site: { description: \"Override site URL hosting the CLI login page\" },\n device: { description: \"Device label recorded on the credential (default: hostname)\" },\n expiresIn: { description: \"Session lifetime in seconds (default: 90 days)\" },\n env: { description: \"Environment: production (default) or staging\" },\n },\n },\n logout: {\n commandPath: [\"logout\"],\n summary: \"Revoke the stored CLI session and delete the exported publish key\",\n interactive: false,\n },\n keyPublish: {\n commandPath: [\"key\", \"generate\"],\n summary: \"Generate a publish access key\",\n interactive: true,\n fields: {\n env: { description: \"Environment: production or staging\" },\n allowance: { description: \"NEAR allowance for the key (default: 1NEAR, min: 0.3NEAR)\" },\n removeOldKeys: {\n description:\n \"Remove existing publish key(s) without prompting (default: ask on a TTY, yes when non-interactive)\",\n },\n registry: {\n description:\n \"Override FastKV registry contract account (defaults: dev.everything.near / dev.allthethings.testnet)\",\n },\n },\n },\n init: {\n commandPath: [\"init\"],\n summary: \"Scaffold a new project by extending a deployed app or template\",\n interactive: true,\n fields: {\n domain: {\n positional: true,\n description: \"New project domain (e.g. myapp.everything.dev)\",\n },\n extends: {\n description: \"Parent to extend from (e.g. bos://account/gateway or account/gateway)\",\n },\n account: { description: \"New project NEAR account (auto-derived from extends)\" },\n directory: { description: \"Target directory (auto-derived from domain)\" },\n source: { description: \"Local source dir (skips GitHub download)\" },\n plugins: {\n description: \"Comma-separated plugin keys to include (requires --overrides=plugins)\",\n },\n overrides: {\n description: \"Comma-separated sections to customize locally: ui,api,host,plugins\",\n },\n level: {\n description:\n \"Starter complexity: simple (public shell) or advanced (adds dashboard, orgs, admin)\",\n },\n noInteractive: { description: \"Skip prompts, use flags only\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n sync: {\n commandPath: [\"sync\"],\n summary: \"Sync template files from parent project\",\n interactive: false,\n fields: {\n dryRun: { description: \"Preview changes without writing files\" },\n noInstall: { description: \"Skip pnpm install\" },\n },\n },\n upgrade: {\n commandPath: [\"upgrade\"],\n summary: \"Upgrade framework packages and sync template files\",\n interactive: true,\n fields: {\n dryRun: { description: \"Preview changes without writing\" },\n noInstall: { description: \"Skip pnpm install\" },\n noSync: { description: \"Only upgrade packages, skip template sync\" },\n },\n },\n typesGen: {\n commandPath: [\"types\", \"gen\"],\n summary: \"Generate type definitions from configured API and plugin contracts\",\n interactive: false,\n fields: {\n env: { description: \"Environment: development (default) or production\" },\n dryRun: { description: \"Preview what would be fetched without writing files\" },\n remotePlugins: {\n description:\n \"Comma-separated plugin IDs to fetch contract types remotely (e.g. --remote-plugins auth,registry)\",\n },\n },\n },\n typecheck: {\n commandPath: [\"typecheck\"],\n summary: \"Run TypeScript type checking across all local workspaces\",\n interactive: false,\n fields: {\n packages: {\n positional: true,\n description: \"Comma-separated workspace list (default: all)\",\n },\n },\n },\n mfCheck: {\n commandPath: [\"mf\", \"check\"],\n summary:\n \"Verify Module Federation runtime compatibility across published host + plugin bundles\",\n interactive: false,\n },\n dbStudio: {\n commandPath: [\"db\", \"studio\"],\n summary: \"Open Drizzle Studio for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name (default: api)\",\n },\n },\n },\n dbDoctor: {\n commandPath: [\"db\", \"doctor\"],\n summary: \"Diagnose migration health for a plugin's database\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n },\n },\n dbRepair: {\n commandPath: [\"db\", \"repair\"],\n summary: \"Reset migration history and reapply migrations for a plugin\",\n fields: {\n plugin: {\n positional: true,\n description: \"Plugin key: api, auth, or a plugin name\",\n },\n mode: {\n description: \"Repair mode: history-reset (default) or recreate (not yet supported)\",\n },\n yes: {\n description: \"Skip confirmation prompt\",\n },\n },\n },\n status: {\n commandPath: [\"status\"],\n summary: \"Show project health, versions, and update availability\",\n interactive: false,\n },\n ps: {\n commandPath: [\"ps\"],\n summary: \"List tracked development processes\",\n interactive: false,\n },\n logs: {\n commandPath: [\"logs\"],\n summary: \"Read dev session logs (.bos/logs/dev-latest.log)\",\n interactive: false,\n fields: {\n service: {\n description: \"Filter by service name (e.g. host, api, auth, ui, plugin:votes)\",\n },\n tail: { description: \"Show only the last N lines\" },\n follow: { description: \"Stream the log as lines are appended\" },\n },\n },\n kill: {\n commandPath: [\"kill\"],\n summary: \"Stop tracked development processes\",\n interactive: false,\n fields: {\n configDir: { description: \"Kill processes owned by a config directory (defaults to cwd)\" },\n signal: { description: \"Signal: SIGTERM (default) or SIGKILL\" },\n all: { description: \"Kill processes across all config directories\" },\n },\n },\n infraExport: {\n commandPath: [\"infra\", \"export\"],\n summary: \"Emit the resolved CI infra plan (env + services) for the current runtime\",\n interactive: false,\n fields: {\n target: { description: \"Export target: ci (default) or local\" },\n network: { description: \"NEAR network: mainnet or testnet\" },\n configDir: { description: \"Override config directory\" },\n },\n },\n} as const satisfies Record<string, CliCommandMeta>;\n"],"mappings":";AAUA,MAAa,iBAAiB;CAC5B,KAAK;EACH,aAAa,CAAC,KAAK;EACnB,SAAS;EACT,aAAa;EACb,aAAa;EACb,QAAQ;GACN,eAAe,EACb,aACE,mFACJ;GACA,UAAU,EACR,aACE,mHACJ;EACF;CACF;CACA,OAAO;EACL,aAAa,CAAC,OAAO;EACrB,SAAS;EACT,aAAa;EACb,aAAa;EACb,QAAQ;GACN,KAAK,EAAE,aAAa,qCAAqC;GACzD,UAAU,EACR,aACE,uGACJ;GACA,YAAY,EACV,aACE,6FACJ;EACF;CACF;CACA,OAAO;EACL,aAAa,CAAC,OAAO;EACrB,SAAS;EACT,aAAa;EACb,QAAQ,EACN,UAAU;GAAE,YAAY;GAAM,aAAa;EAA+B,EAC5E;CACF;CACA,QAAQ;EACN,aAAa,CAAC,QAAQ;EACtB,SAAS;EACT,aAAa;EACb,QAAQ,EACN,MAAM,EAAE,aAAa,yCAAyC,EAChE;CACF;CACA,aAAa;EACX,aAAa,CAAC,YAAY,KAAK;EAC/B,SACE;EACF,aAAa;EACb,QAAQ;GACN,MAAM;IACJ,YAAY;IACZ,aACE;GACJ;GACA,UAAU,EACR,aAAa,gEACf;GACA,QAAQ,EAAE,aAAa,4CAA4C;EACrE;CACF;CACA,WAAW;EACT,aAAa,CAAC,UAAU,KAAK;EAC7B,SAAS;EACT,aAAa;EACb,QAAQ;GACN,QAAQ;IACN,YAAY;IACZ,aAAa;GACf;GACA,IAAI,EAAE,aAAa,eAAe;GAClC,YAAY,EAAE,aAAa,0BAA0B;EACvD;CACF;CACA,cAAc;EACZ,aAAa,CAAC,UAAU,QAAQ;EAChC,SAAS;EACT,aAAa;EACb,QAAQ,EAAE,KAAK;GAAE,YAAY;GAAM,aAAa;EAAa,EAAE;CACjE;CACA,YAAY;EACV,aAAa,CAAC,UAAU,MAAM;EAC9B,SAAS;EACT,aAAa;CACf;CACA,eAAe;EACb,aAAa,CAAC,UAAU,SAAS;EACjC,SAAS;EACT,aAAa;EACb,QAAQ,EAAE,KAAK;GAAE,YAAY;GAAM,aAAa;EAAa,EAAE;CACjE;CACA,SAAS;EACP,aAAa,CAAC,SAAS;EACvB,SACE;EACF,aAAa;EACb,QAAQ;GACN,QAAQ,EAAE,aAAa,kDAAkD;GACzE,SAAS,EAAE,aAAa,kDAAkD;GAC1E,KAAK,EAAE,aAAa,qCAAqC;GACzD,SAAS,EAAE,aAAa,mCAAmC;GAC3D,QAAQ,EACN,aACE,8GACJ;GACA,UAAU,EACR,aACE,uGACJ;EACF;CACF;CACA,UAAU;EACR,aAAa,CAAC,UAAU;EACxB,SAAS;EACT,aAAa;EACb,QAAQ;GACN,SAAS,EAAE,aAAa,+DAA+D;GACvF,UAAU,EAAE,aAAa,4DAA4D;GACrF,OAAO,EACL,aACE,uGACJ;GACA,OAAO,EAAE,aAAa,oCAAoC;GAC1D,QAAQ,EAAE,aAAa,0CAA0C;GACjE,KAAK,EAAE,aAAa,qCAAqC;GACzD,SAAS,EAAE,aAAa,mCAAmC;GAC3D,QAAQ,EACN,aACE,8GACJ;GACA,UAAU,EACR,aACE,uGACJ;EACF;CACF;CACA,QAAQ;EACN,aAAa,CAAC,QAAQ;EACtB,SACE;EACF,aAAa;EACb,QAAQ;GACN,KAAK,EAAE,aAAa,qCAAqC;GACzD,OAAO,EAAE,aAAa,6DAA6D;GACnF,QAAQ,EAAE,aAAa,iDAAiD;GACxE,SAAS,EAAE,aAAa,kDAAkD;GAC1E,SAAS,EAAE,aAAa,4CAA4C;GACpE,aAAa,EACX,aACE,+GACJ;GACA,OAAO,EACL,aACE,mHACJ;GACA,UAAU,EACR,aACE,uGACJ;EACF;CACF;CACA,OAAO;EACL,aAAa,CAAC,OAAO;EACrB,SACE;EACF,aAAa;EACb,QAAQ;GACN,OAAO,EAAE,aAAa,uCAAuC;GAC7D,MAAM,EAAE,aAAa,wDAAwD;GAC7E,MAAM,EAAE,aAAa,+CAA+C;GACpE,SAAS,EAAE,aAAa,8DAA8D;EACxF;CACF;CACA,OAAO;EACL,aAAa,CAAC,OAAO;EACrB,SACE;EACF,aAAa;EACb,QAAQ;GACN,KAAK,EAAE,aAAa,gEAAgE;GACpF,MAAM,EAAE,aAAa,+CAA+C;GACpE,QAAQ,EAAE,aAAa,8DAA8D;GACrF,WAAW,EAAE,aAAa,iDAAiD;GAC3E,KAAK,EAAE,aAAa,+CAA+C;EACrE;CACF;CACA,QAAQ;EACN,aAAa,CAAC,QAAQ;EACtB,SAAS;EACT,aAAa;CACf;CACA,YAAY;EACV,aAAa,CAAC,OAAO,UAAU;EAC/B,SAAS;EACT,aAAa;EACb,QAAQ;GACN,KAAK,EAAE,aAAa,qCAAqC;GACzD,WAAW,EAAE,aAAa,4DAA4D;GACtF,eAAe,EACb,aACE,qGACJ;GACA,UAAU,EACR,aACE,uGACJ;EACF;CACF;CACA,MAAM;EACJ,aAAa,CAAC,MAAM;EACpB,SAAS;EACT,aAAa;EACb,QAAQ;GACN,QAAQ;IACN,YAAY;IACZ,aAAa;GACf;GACA,SAAS,EACP,aAAa,wEACf;GACA,SAAS,EAAE,aAAa,uDAAuD;GAC/E,WAAW,EAAE,aAAa,8CAA8C;GACxE,QAAQ,EAAE,aAAa,2CAA2C;GAClE,SAAS,EACP,aAAa,wEACf;GACA,WAAW,EACT,aAAa,qEACf;GACA,OAAO,EACL,aACE,sFACJ;GACA,eAAe,EAAE,aAAa,+BAA+B;GAC7D,WAAW,EAAE,aAAa,oBAAoB;EAChD;CACF;CACA,MAAM;EACJ,aAAa,CAAC,MAAM;EACpB,SAAS;EACT,aAAa;EACb,QAAQ;GACN,QAAQ,EAAE,aAAa,wCAAwC;GAC/D,WAAW,EAAE,aAAa,oBAAoB;EAChD;CACF;CACA,SAAS;EACP,aAAa,CAAC,SAAS;EACvB,SAAS;EACT,aAAa;EACb,QAAQ;GACN,QAAQ,EAAE,aAAa,kCAAkC;GACzD,WAAW,EAAE,aAAa,oBAAoB;GAC9C,QAAQ,EAAE,aAAa,4CAA4C;EACrE;CACF;CACA,UAAU;EACR,aAAa,CAAC,SAAS,KAAK;EAC5B,SAAS;EACT,aAAa;EACb,QAAQ;GACN,KAAK,EAAE,aAAa,mDAAmD;GACvE,QAAQ,EAAE,aAAa,sDAAsD;GAC7E,eAAe,EACb,aACE,oGACJ;EACF;CACF;CACA,WAAW;EACT,aAAa,CAAC,WAAW;EACzB,SAAS;EACT,aAAa;EACb,QAAQ,EACN,UAAU;GACR,YAAY;GACZ,aAAa;EACf,EACF;CACF;CACA,SAAS;EACP,aAAa,CAAC,MAAM,OAAO;EAC3B,SACE;EACF,aAAa;CACf;CACA,UAAU;EACR,aAAa,CAAC,MAAM,QAAQ;EAC5B,SAAS;EACT,QAAQ,EACN,QAAQ;GACN,YAAY;GACZ,aAAa;EACf,EACF;CACF;CACA,UAAU;EACR,aAAa,CAAC,MAAM,QAAQ;EAC5B,SAAS;EACT,QAAQ,EACN,QAAQ;GACN,YAAY;GACZ,aAAa;EACf,EACF;CACF;CACA,UAAU;EACR,aAAa,CAAC,MAAM,QAAQ;EAC5B,SAAS;EACT,QAAQ;GACN,QAAQ;IACN,YAAY;IACZ,aAAa;GACf;GACA,MAAM,EACJ,aAAa,uEACf;GACA,KAAK,EACH,aAAa,2BACf;EACF;CACF;CACA,QAAQ;EACN,aAAa,CAAC,QAAQ;EACtB,SAAS;EACT,aAAa;CACf;CACA,IAAI;EACF,aAAa,CAAC,IAAI;EAClB,SAAS;EACT,aAAa;CACf;CACA,MAAM;EACJ,aAAa,CAAC,MAAM;EACpB,SAAS;EACT,aAAa;EACb,QAAQ;GACN,SAAS,EACP,aAAa,kEACf;GACA,MAAM,EAAE,aAAa,6BAA6B;GAClD,QAAQ,EAAE,aAAa,uCAAuC;EAChE;CACF;CACA,MAAM;EACJ,aAAa,CAAC,MAAM;EACpB,SAAS;EACT,aAAa;EACb,QAAQ;GACN,WAAW,EAAE,aAAa,+DAA+D;GACzF,QAAQ,EAAE,aAAa,uCAAuC;GAC9D,KAAK,EAAE,aAAa,+CAA+C;EACrE;CACF;CACA,aAAa;EACX,aAAa,CAAC,SAAS,QAAQ;EAC/B,SAAS;EACT,aAAa;EACb,QAAQ;GACN,QAAQ,EAAE,aAAa,uCAAuC;GAC9D,SAAS,EAAE,aAAa,mCAAmC;GAC3D,WAAW,EAAE,aAAa,4BAA4B;EACxD;CACF;AACF"}
package/dist/contract.mjs CHANGED
@@ -211,7 +211,8 @@ const DeployOptionsSchema = z$1.object({
211
211
  service: z$1.string().optional(),
212
212
  registry: z$1.string().optional(),
213
213
  imageDigest: z$1.string().optional().refine((digest) => digest === void 0 || isValidImageDigest(digest), { message: "image digest must be sha256:<64 hex characters>" }).describe("Digest (sha256:…) of a pre-pushed runtime image — skips the image build/push leg and pins Railway to this digest"),
214
- fullUpload: z$1.boolean().default(false).describe("Re-upload every dist file instead of diffing unchanged files against the previous deploy")
214
+ fullUpload: z$1.boolean().default(false).describe("Re-upload every dist file instead of diffing unchanged files against the previous deploy"),
215
+ smoke: z$1.boolean().default(false).describe("After publish, boot the runtime image against the just-published config and gate the Railway promotion on it — a red smoke rolls the config back to the previous snapshot")
215
216
  });
216
217
  const DeployManifestListEntrySchema = z$1.object({
217
218
  key: z$1.string(),
@@ -240,6 +241,24 @@ const DeployResultSchema = z$1.object({
240
241
  error: z$1.string().optional(),
241
242
  deployResults: z$1.array(WorkspaceDeployResultSchema).optional()
242
243
  });
244
+ const SmokeOptionsSchema = z$1.object({
245
+ image: z$1.string().optional().describe("Runtime image ref to boot — required unless defaulted by the deploy train"),
246
+ port: z$1.number().int().default(3e3),
247
+ keep: z$1.boolean().default(false),
248
+ account: z$1.string().optional().describe("Registry identity — defaults to the resolved session config"),
249
+ gateway: z$1.string().optional(),
250
+ apiDatabaseUrl: z$1.string().optional(),
251
+ authDatabaseUrl: z$1.string().optional(),
252
+ env: z$1.enum(["production", "staging"]).default("production"),
253
+ registry: z$1.string().optional()
254
+ });
255
+ const SmokeResultSchema = z$1.object({
256
+ status: z$1.enum(["ok", "error"]),
257
+ image: z$1.string().optional(),
258
+ summary: z$1.string().optional(),
259
+ diagnosis: z$1.string().optional(),
260
+ error: z$1.string().optional()
261
+ });
243
262
  function parseNearAmount(value) {
244
263
  const match = value.replace(/[\s_,]/g, "").match(/^(\d+(?:\.\d+)?)near$/i);
245
264
  if (!match) return NaN;
@@ -593,6 +612,7 @@ const commandOptionSchemas = {
593
612
  publish: PublishOptionsSchema,
594
613
  rollback: RollbackOptionsSchema,
595
614
  deploy: DeployOptionsSchema,
615
+ smoke: SmokeOptionsSchema,
596
616
  keyPublish: KeyPublishOptionsSchema,
597
617
  login: LoginOptionsSchema,
598
618
  logout: LogoutOptionsSchema,
@@ -657,6 +677,10 @@ const bosContract = oc.router({
657
677
  method: "POST",
658
678
  path: "/deploy"
659
679
  }).input(DeployOptionsSchema).output(DeployResultSchema),
680
+ smoke: oc.route({
681
+ method: "POST",
682
+ path: "/smoke"
683
+ }).input(SmokeOptionsSchema).output(SmokeResultSchema),
660
684
  keyPublish: oc.route({
661
685
  method: "POST",
662
686
  path: "/key/publish"
@@ -728,5 +752,5 @@ const bosContract = oc.router({
728
752
  });
729
753
 
730
754
  //#endregion
731
- export { BuildOptionsSchema, BuildResultSchema, ConfigOptionsSchema, ConfigResultSchema, DbDoctorOptionsSchema, DbDoctorResultSchema, DbRepairOptionsSchema, DbRepairResultSchema, DbStudioOptionsSchema, DbStudioResultSchema, DeployManifestListEntrySchema, DeployOptionsSchema, DeployResultSchema, DeployedVersionStatusSchema, DevOptionsSchema, DevResultSchema, InfraExportOptionsSchema, InfraExportResultSchema, InfraExportServiceSchema, InitOptionsSchema, InitResultSchema, KeyPublishOptionsSchema, KeyPublishResultSchema, KillOptionsSchema, KillResultSchema, LoginOptionsSchema, LoginResultSchema, LogoutOptionsSchema, LogoutResultSchema, LogsOptionsSchema, LogsResultSchema, MfCheckOptionsSchema, MfCheckRemoteResultSchema, MfCheckResultSchema, OverrideSectionSchema, PhaseTimingSchema, PidEntrySchema, PluginAddOptionsSchema, PluginAddResultSchema, PluginListResultSchema, PluginPublishOptionsSchema, PluginPublishResultSchema, PluginRemoveOptionsSchema, PluginRemoveResultSchema, ProcessRoleSchema, PsResultSchema, PublishOptionsSchema, PublishResultSchema, RegistryUseOptionsSchema, RegistryUseResultSchema, RollbackHistoryEntrySchema, RollbackOptionsSchema, RollbackResultSchema, RollbackSlotCheckSchema, RuntimeOverrideTargetBaseSchema, RuntimeOverrideTargetSchema, StartOptionsSchema, StartResultSchema, StatusResultSchema, SyncOptionsSchema, SyncResultSchema, TypecheckOptionsSchema, TypecheckResultSchema, TypecheckWorkspaceResultSchema, TypesGenOptionsSchema, TypesGenResultSchema, UpgradeOptionsSchema, UpgradeResultSchema, WorkspaceDeployResultSchema, bosContract, commandOptionSchemas };
755
+ export { BuildOptionsSchema, BuildResultSchema, ConfigOptionsSchema, ConfigResultSchema, DbDoctorOptionsSchema, DbDoctorResultSchema, DbRepairOptionsSchema, DbRepairResultSchema, DbStudioOptionsSchema, DbStudioResultSchema, DeployManifestListEntrySchema, DeployOptionsSchema, DeployResultSchema, DeployedVersionStatusSchema, DevOptionsSchema, DevResultSchema, InfraExportOptionsSchema, InfraExportResultSchema, InfraExportServiceSchema, InitOptionsSchema, InitResultSchema, KeyPublishOptionsSchema, KeyPublishResultSchema, KillOptionsSchema, KillResultSchema, LoginOptionsSchema, LoginResultSchema, LogoutOptionsSchema, LogoutResultSchema, LogsOptionsSchema, LogsResultSchema, MfCheckOptionsSchema, MfCheckRemoteResultSchema, MfCheckResultSchema, OverrideSectionSchema, PhaseTimingSchema, PidEntrySchema, PluginAddOptionsSchema, PluginAddResultSchema, PluginListResultSchema, PluginPublishOptionsSchema, PluginPublishResultSchema, PluginRemoveOptionsSchema, PluginRemoveResultSchema, ProcessRoleSchema, PsResultSchema, PublishOptionsSchema, PublishResultSchema, RegistryUseOptionsSchema, RegistryUseResultSchema, RollbackHistoryEntrySchema, RollbackOptionsSchema, RollbackResultSchema, RollbackSlotCheckSchema, RuntimeOverrideTargetBaseSchema, RuntimeOverrideTargetSchema, SmokeOptionsSchema, SmokeResultSchema, StartOptionsSchema, StartResultSchema, StatusResultSchema, SyncOptionsSchema, SyncResultSchema, TypecheckOptionsSchema, TypecheckResultSchema, TypecheckWorkspaceResultSchema, TypesGenOptionsSchema, TypesGenResultSchema, UpgradeOptionsSchema, UpgradeResultSchema, WorkspaceDeployResultSchema, bosContract, commandOptionSchemas };
732
756
  //# sourceMappingURL=contract.mjs.map