veryfront 0.1.1170 → 0.1.1171

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 (186) hide show
  1. package/esm/cli/auth/login.d.ts +7 -2
  2. package/esm/cli/auth/login.d.ts.map +1 -1
  3. package/esm/cli/auth/login.js +111 -85
  4. package/esm/cli/commands/analyze-chunks/command-help.d.ts.map +1 -1
  5. package/esm/cli/commands/analyze-chunks/command-help.js +1 -0
  6. package/esm/cli/commands/build/error-handler.d.ts.map +1 -1
  7. package/esm/cli/commands/build/error-handler.js +3 -2
  8. package/esm/cli/commands/build/stats-display.js +6 -6
  9. package/esm/cli/commands/completions/command-help.d.ts.map +1 -1
  10. package/esm/cli/commands/completions/command-help.js +1 -0
  11. package/esm/cli/commands/completions/command.js +3 -3
  12. package/esm/cli/commands/completions/handler.d.ts.map +1 -1
  13. package/esm/cli/commands/completions/handler.js +3 -4
  14. package/esm/cli/commands/config/handler.d.ts.map +1 -1
  15. package/esm/cli/commands/config/handler.js +13 -12
  16. package/esm/cli/commands/demo/command-help.d.ts.map +1 -1
  17. package/esm/cli/commands/demo/command-help.js +1 -0
  18. package/esm/cli/commands/demo/demo.js +2 -2
  19. package/esm/cli/commands/deploy/command.d.ts +1 -1
  20. package/esm/cli/commands/deploy/command.d.ts.map +1 -1
  21. package/esm/cli/commands/deploy/command.js +51 -29
  22. package/esm/cli/commands/dev/command-help.d.ts.map +1 -1
  23. package/esm/cli/commands/dev/command-help.js +1 -6
  24. package/esm/cli/commands/dev/command.d.ts.map +1 -1
  25. package/esm/cli/commands/dev/command.js +16 -13
  26. package/esm/cli/commands/doctor/command-help.js +1 -1
  27. package/esm/cli/commands/doctor/index.d.ts +7 -0
  28. package/esm/cli/commands/doctor/index.d.ts.map +1 -1
  29. package/esm/cli/commands/doctor/index.js +106 -28
  30. package/esm/cli/commands/eval/command-help.d.ts.map +1 -1
  31. package/esm/cli/commands/eval/command-help.js +0 -4
  32. package/esm/cli/commands/extension/handler.d.ts.map +1 -1
  33. package/esm/cli/commands/extension/handler.js +10 -7
  34. package/esm/cli/commands/extension/validate-command.d.ts.map +1 -1
  35. package/esm/cli/commands/extension/validate-command.js +5 -4
  36. package/esm/cli/commands/files/command.d.ts.map +1 -1
  37. package/esm/cli/commands/files/command.js +2 -7
  38. package/esm/cli/commands/generate/command-help.d.ts.map +1 -1
  39. package/esm/cli/commands/generate/command-help.js +1 -0
  40. package/esm/cli/commands/generate/integration-generator.js +14 -13
  41. package/esm/cli/commands/init/init-command.d.ts.map +1 -1
  42. package/esm/cli/commands/init/init-command.js +25 -15
  43. package/esm/cli/commands/init/interactive-wizard.d.ts.map +1 -1
  44. package/esm/cli/commands/init/interactive-wizard.js +15 -5
  45. package/esm/cli/commands/install/install.js +2 -2
  46. package/esm/cli/commands/install/uninstall.js +1 -1
  47. package/esm/cli/commands/issues/command.d.ts.map +1 -1
  48. package/esm/cli/commands/issues/command.js +1 -3
  49. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  50. package/esm/cli/commands/knowledge/command.js +2 -7
  51. package/esm/cli/commands/lint/handler.js +2 -2
  52. package/esm/cli/commands/lock/command-help.d.ts.map +1 -1
  53. package/esm/cli/commands/lock/command-help.js +1 -0
  54. package/esm/cli/commands/merge/command.d.ts.map +1 -1
  55. package/esm/cli/commands/merge/command.js +3 -2
  56. package/esm/cli/commands/open/command-help.js +2 -2
  57. package/esm/cli/commands/open/command.js +1 -1
  58. package/esm/cli/commands/open/handler.d.ts.map +1 -1
  59. package/esm/cli/commands/open/handler.js +4 -3
  60. package/esm/cli/commands/pull/command-help.js +3 -3
  61. package/esm/cli/commands/pull/command.d.ts.map +1 -1
  62. package/esm/cli/commands/pull/command.js +3 -3
  63. package/esm/cli/commands/push/command-help.js +1 -1
  64. package/esm/cli/commands/push/command.d.ts.map +1 -1
  65. package/esm/cli/commands/push/command.js +23 -12
  66. package/esm/cli/commands/schedule/command-help.d.ts.map +1 -1
  67. package/esm/cli/commands/schedule/command-help.js +7 -9
  68. package/esm/cli/commands/schedule/handler.d.ts.map +1 -1
  69. package/esm/cli/commands/schedule/handler.js +48 -11
  70. package/esm/cli/commands/schedules/command-help.d.ts.map +1 -1
  71. package/esm/cli/commands/schedules/command-help.js +1 -0
  72. package/esm/cli/commands/schema/handler.d.ts.map +1 -1
  73. package/esm/cli/commands/schema/handler.js +4 -3
  74. package/esm/cli/commands/serve/command-help.d.ts.map +1 -1
  75. package/esm/cli/commands/serve/command-help.js +3 -2
  76. package/esm/cli/commands/skills/create.d.ts.map +1 -1
  77. package/esm/cli/commands/skills/create.js +7 -5
  78. package/esm/cli/commands/skills/handler.d.ts.map +1 -1
  79. package/esm/cli/commands/skills/handler.js +27 -6
  80. package/esm/cli/commands/skills/validate.d.ts +5 -0
  81. package/esm/cli/commands/skills/validate.d.ts.map +1 -1
  82. package/esm/cli/commands/skills/validate.js +4 -5
  83. package/esm/cli/commands/start/command-help.js +4 -4
  84. package/esm/cli/commands/start/handler.js +1 -1
  85. package/esm/cli/commands/studio/command-help.js +1 -1
  86. package/esm/cli/commands/styles/command-help.d.ts.map +1 -1
  87. package/esm/cli/commands/styles/command-help.js +1 -0
  88. package/esm/cli/commands/task/command-help.d.ts.map +1 -1
  89. package/esm/cli/commands/task/command-help.js +0 -5
  90. package/esm/cli/commands/task/command.d.ts.map +1 -1
  91. package/esm/cli/commands/task/command.js +8 -9
  92. package/esm/cli/commands/test/handler.js +2 -2
  93. package/esm/cli/commands/up/command.d.ts.map +1 -1
  94. package/esm/cli/commands/up/command.js +18 -13
  95. package/esm/cli/commands/up/handler.d.ts.map +1 -1
  96. package/esm/cli/commands/up/handler.js +2 -0
  97. package/esm/cli/commands/uploads/command.d.ts.map +1 -1
  98. package/esm/cli/commands/uploads/command.js +2 -7
  99. package/esm/cli/commands/webhook/command-help.d.ts.map +1 -1
  100. package/esm/cli/commands/webhook/command-help.js +6 -8
  101. package/esm/cli/commands/webhook/handler.d.ts.map +1 -1
  102. package/esm/cli/commands/webhook/handler.js +32 -4
  103. package/esm/cli/commands/webhooks/command-help.d.ts.map +1 -1
  104. package/esm/cli/commands/webhooks/command-help.js +1 -0
  105. package/esm/cli/commands/worker/command-help.d.ts.map +1 -1
  106. package/esm/cli/commands/worker/command-help.js +2 -5
  107. package/esm/cli/commands/workflow/command-help.d.ts.map +1 -1
  108. package/esm/cli/commands/workflow/command-help.js +0 -4
  109. package/esm/cli/commands/workflow/command.d.ts.map +1 -1
  110. package/esm/cli/commands/workflow/command.js +11 -17
  111. package/esm/cli/help/formatters.d.ts.map +1 -1
  112. package/esm/cli/help/formatters.js +8 -2
  113. package/esm/cli/help/main-help.d.ts +1 -1
  114. package/esm/cli/help/main-help.d.ts.map +1 -1
  115. package/esm/cli/help/main-help.js +13 -3
  116. package/esm/cli/help/types.d.ts +4 -0
  117. package/esm/cli/help/types.d.ts.map +1 -1
  118. package/esm/cli/main.d.ts.map +1 -1
  119. package/esm/cli/main.js +4 -2
  120. package/esm/cli/router.d.ts.map +1 -1
  121. package/esm/cli/router.js +11 -9
  122. package/esm/cli/shared/args.d.ts +1 -1
  123. package/esm/cli/shared/args.d.ts.map +1 -1
  124. package/esm/cli/shared/args.js +2 -4
  125. package/esm/cli/shared/config.d.ts +1 -1
  126. package/esm/cli/shared/config.d.ts.map +1 -1
  127. package/esm/cli/shared/json-output.d.ts +18 -0
  128. package/esm/cli/shared/json-output.d.ts.map +1 -1
  129. package/esm/cli/shared/json-output.js +14 -0
  130. package/esm/cli/shared/parsed-args.d.ts +1 -0
  131. package/esm/cli/shared/parsed-args.d.ts.map +1 -1
  132. package/esm/cli/shared/parsed-args.js +3 -0
  133. package/esm/cli/shared/update-check.d.ts.map +1 -1
  134. package/esm/cli/shared/update-check.js +5 -2
  135. package/esm/cli/utils/index.d.ts +1 -0
  136. package/esm/cli/utils/index.d.ts.map +1 -1
  137. package/esm/cli/utils/index.js +34 -7
  138. package/esm/cli/utils/terminal-select.d.ts.map +1 -1
  139. package/esm/cli/utils/terminal-select.js +1 -2
  140. package/esm/deno.d.ts +3 -0
  141. package/esm/deno.js +4 -1
  142. package/esm/src/errors/error-registry/deploy.d.ts +16 -0
  143. package/esm/src/errors/error-registry/deploy.d.ts.map +1 -1
  144. package/esm/src/errors/error-registry/deploy.js +64 -0
  145. package/esm/src/errors/error-registry/general.d.ts +4 -0
  146. package/esm/src/errors/error-registry/general.d.ts.map +1 -1
  147. package/esm/src/errors/error-registry/general.js +17 -0
  148. package/esm/src/errors/error-registry.d.ts +10 -0
  149. package/esm/src/errors/error-registry.d.ts.map +1 -1
  150. package/esm/src/errors/index.d.ts +1 -1
  151. package/esm/src/errors/index.d.ts.map +1 -1
  152. package/esm/src/errors/index.js +6 -6
  153. package/esm/src/errors/logging.d.ts.map +1 -1
  154. package/esm/src/errors/logging.js +21 -15
  155. package/esm/src/errors/middleware/cli-error-boundary.d.ts.map +1 -1
  156. package/esm/src/errors/middleware/cli-error-boundary.js +4 -1
  157. package/esm/src/errors/types.d.ts +6 -0
  158. package/esm/src/errors/types.d.ts.map +1 -1
  159. package/esm/src/errors/types.js +4 -0
  160. package/esm/src/metrics/index.d.ts.map +1 -1
  161. package/esm/src/metrics/index.js +3 -3
  162. package/esm/src/observability/file-log-subscriber.d.ts.map +1 -1
  163. package/esm/src/observability/file-log-subscriber.js +3 -2
  164. package/esm/src/proxy/logger.d.ts +0 -1
  165. package/esm/src/proxy/logger.d.ts.map +1 -1
  166. package/esm/src/proxy/logger.js +16 -7
  167. package/esm/src/release-assets/index.d.ts +2 -0
  168. package/esm/src/release-assets/index.d.ts.map +1 -1
  169. package/esm/src/release-assets/index.js +2 -0
  170. package/esm/src/server/index.d.ts +1 -0
  171. package/esm/src/server/index.d.ts.map +1 -1
  172. package/esm/src/server/index.js +1 -0
  173. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
  174. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +2 -2
  175. package/esm/src/utils/index.d.ts +1 -1
  176. package/esm/src/utils/index.d.ts.map +1 -1
  177. package/esm/src/utils/index.js +1 -1
  178. package/esm/src/utils/logger/index.d.ts +2 -1
  179. package/esm/src/utils/logger/index.d.ts.map +1 -1
  180. package/esm/src/utils/logger/index.js +2 -1
  181. package/esm/src/utils/logger/logger.d.ts +14 -0
  182. package/esm/src/utils/logger/logger.d.ts.map +1 -1
  183. package/esm/src/utils/logger/logger.js +36 -1
  184. package/esm/src/utils/version-constant.d.ts +1 -1
  185. package/esm/src/utils/version-constant.js +1 -1
  186. package/package.json +13 -5
@@ -1,5 +1,6 @@
1
1
  import { type EnvironmentConfig } from "../../src/config/index.js";
2
2
  import { deleteToken, hasToken, readToken, saveToken } from "./token-store.js";
3
+ import { type SpinnerController } from "../ui/progress.js";
3
4
  export type AuthMethod = "google" | "github" | "microsoft" | "token";
4
5
  export interface UserInfo {
5
6
  id: string;
@@ -11,12 +12,16 @@ export interface ApiKeyIdentity {
11
12
  type: "apiKey";
12
13
  }
13
14
  export type AuthIdentity = UserInfo | ApiKeyIdentity;
15
+ export interface CredentialValidationOptions {
16
+ throwOnNetworkError?: boolean;
17
+ }
14
18
  export declare function createOAuthState(): string;
15
19
  export declare function createOAuthAuthorizationUrl(provider: "google" | "github" | "microsoft", callbackUrl: string, state: string, env?: EnvironmentConfig): string;
16
- export declare function validateToken(token: string, env?: EnvironmentConfig): Promise<UserInfo | null>;
20
+ export declare function validateToken(token: string, env?: EnvironmentConfig, options?: CredentialValidationOptions): Promise<UserInfo | null>;
17
21
  export declare function isApiKeyToken(token: string): boolean;
18
22
  export declare function isApiKeyIdentity(identity: AuthIdentity): identity is ApiKeyIdentity;
19
- export declare function validateCredential(token: string, env?: EnvironmentConfig): Promise<AuthIdentity | null>;
23
+ export declare function validateCredential(token: string, env?: EnvironmentConfig, options?: CredentialValidationOptions): Promise<AuthIdentity | null>;
24
+ export declare function openOAuthLogin(authUrl: string, spinner: SpinnerController, opener?: (url: string) => Promise<void>): Promise<boolean>;
20
25
  export declare function login(method?: AuthMethod, env?: EnvironmentConfig): Promise<AuthIdentity | null>;
21
26
  export declare function ensureAuthenticated(env?: EnvironmentConfig): Promise<AuthIdentity | null>;
22
27
  export declare function logout(env?: EnvironmentConfig): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/login.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAoB,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AASjG,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AASrD,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,EAC3C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,iBAA0C,GAC9C,MAAM,CAQR;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAgB1B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,IAAI,cAAc,CAEnF;AAqBD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQ9B;AAgJD,wBAAsB,KAAK,CACzB,MAAM,CAAC,EAAE,UAAU,EACnB,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAuC9B;AAED,wBAAsB,mBAAmB,CACvC,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA6B9B;AAED,wBAAsB,MAAM,CAAC,GAAG,GAAE,iBAA0C,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3F;AAyCD,wBAAsB,MAAM,CAC1B,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiC9B;AAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/auth/login.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAwB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAoB,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKjG,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAM1E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,IAAI,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,cAAc,CAAC;AAErD,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAaD,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,EAC3C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,iBAA0C,GAC9C,MAAM,CAQR;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,iBAA0C,EAC/C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAqB1B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,IAAI,cAAc,CAEnF;AAyBD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,iBAA0C,EAC/C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAU9B;AAgCD,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,EAC1B,MAAM,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAe,GACnD,OAAO,CAAC,OAAO,CAAC,CAalB;AAwED,wBAAsB,KAAK,CACzB,MAAM,CAAC,EAAE,UAAU,EACnB,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA2E9B;AAED,wBAAsB,mBAAmB,CACvC,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA6B9B;AAED,wBAAsB,MAAM,CAAC,GAAG,GAAE,iBAA0C,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3F;AAyCD,wBAAsB,MAAM,CAC1B,GAAG,GAAE,iBAA0C,GAC9C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiC9B;AAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import * as dntShim from "../../_dnt.shims.js";
2
- import { cliLogger } from "../utils/index.js";
3
- import { getStdinReader, setRawMode, writeStdout } from "../../src/platform/index.js";
2
+ import { cliLogger, exitProcess } from "../utils/index.js";
4
3
  import { getEnvironmentConfig } from "../../src/config/index.js";
5
4
  import { deleteToken, getTokenLocation, hasToken, readToken, saveToken } from "./token-store.js";
6
5
  import { getCallbackUrl, startCallbackServer } from "./callback-server.js";
7
6
  import { canOpenBrowser, openBrowser } from "./browser.js";
8
7
  import { isTTY, promptUser } from "../utils/index.js";
9
- import { brand, dim, error, muted, warning } from "../ui/colors.js";
8
+ import { brand, dim, error, warning } from "../ui/colors.js";
9
+ import { createSpinner } from "../ui/progress.js";
10
+ import { PromptInterruptedError, select } from "../utils/terminal-select.js";
10
11
  import { DEFAULT_CALLBACK_PORT, DEFAULT_LOGIN_TIMEOUT_MS, getApiUrl } from "../shared/constants.js";
11
12
  import { createSuccessEnvelope, isJsonMode, outputJson } from "../shared/json-output.js";
12
13
  import { isInteractive } from "../shared/interactive.js";
@@ -16,6 +17,9 @@ const AUTH_OPTIONS = [
16
17
  { id: "microsoft", label: "Microsoft" },
17
18
  { id: "token", label: "API Token" },
18
19
  ];
20
+ class NetworkError extends Error {
21
+ name = "NetworkError";
22
+ }
19
23
  export function createOAuthState() {
20
24
  const bytes = new Uint8Array(32);
21
25
  dntShim.crypto.getRandomValues(bytes);
@@ -29,7 +33,9 @@ export function createOAuthAuthorizationUrl(provider, callbackUrl, state, env =
29
33
  authUrl.searchParams.set("state", state);
30
34
  return authUrl.toString();
31
35
  }
32
- export async function validateToken(token, env = getEnvironmentConfig()) {
36
+ export async function validateToken(token, env = getEnvironmentConfig(), options = {}) {
37
+ if (!token.trim())
38
+ return null;
33
39
  try {
34
40
  const response = await fetch(`${getApiUrl(env).replace(/\/$/, "")}/me`, {
35
41
  headers: { Authorization: `Bearer ${token}`, Accept: "application/json" },
@@ -41,7 +47,10 @@ export async function validateToken(token, env = getEnvironmentConfig()) {
41
47
  }
42
48
  return (await response.json());
43
49
  }
44
- catch {
50
+ catch (e) {
51
+ if (options.throwOnNetworkError && e instanceof TypeError) {
52
+ throw new NetworkError("Could not reach the Veryfront API");
53
+ }
45
54
  return null;
46
55
  }
47
56
  }
@@ -51,7 +60,7 @@ export function isApiKeyToken(token) {
51
60
  export function isApiKeyIdentity(identity) {
52
61
  return "type" in identity && identity.type === "apiKey";
53
62
  }
54
- async function validateApiKey(token, env = getEnvironmentConfig()) {
63
+ async function validateApiKey(token, env = getEnvironmentConfig(), options = {}) {
55
64
  if (!isApiKeyToken(token))
56
65
  return false;
57
66
  try {
@@ -63,117 +72,101 @@ async function validateApiKey(token, env = getEnvironmentConfig()) {
63
72
  await response.body?.cancel();
64
73
  return response.ok;
65
74
  }
66
- catch {
75
+ catch (e) {
76
+ if (options.throwOnNetworkError && e instanceof TypeError) {
77
+ throw new NetworkError("Could not reach the Veryfront API");
78
+ }
67
79
  return false;
68
80
  }
69
81
  }
70
- export async function validateCredential(token, env = getEnvironmentConfig()) {
82
+ export async function validateCredential(token, env = getEnvironmentConfig(), options = {}) {
71
83
  if (!token)
72
84
  return null;
73
85
  if (isApiKeyToken(token)) {
74
- return (await validateApiKey(token, env)) ? { authenticated: true, type: "apiKey" } : null;
86
+ return (await validateApiKey(token, env, options))
87
+ ? { authenticated: true, type: "apiKey" }
88
+ : null;
75
89
  }
76
- return validateToken(token, env);
90
+ return validateToken(token, env, options);
77
91
  }
78
92
  async function promptAuthMethod() {
79
- console.log();
80
- console.log(" " + dim("Choose authentication method:"));
81
- console.log();
82
- let selectedIndex = 0;
83
- function drawOptions() {
84
- for (let i = 0; i < AUTH_OPTIONS.length; i++) {
85
- const opt = AUTH_OPTIONS[i];
86
- console.log(i === selectedIndex ? " " + brand("❯") + " " + opt.label : " " + muted(opt.label));
93
+ try {
94
+ const result = await select(dim("Choose authentication method:"), AUTH_OPTIONS.map((o) => ({ value: o.id, label: o.label })), 0, {
95
+ showMarker: false,
96
+ showInstructions: false,
97
+ showDescriptions: false,
98
+ interruptOnCtrlC: true,
99
+ clearOnCancel: false,
100
+ });
101
+ if (result === null) {
102
+ exitProcess(130);
103
+ return "token"; // unreachable
87
104
  }
105
+ return result;
88
106
  }
89
- function redrawOptions() {
90
- writeStdout(`\x1b[${AUTH_OPTIONS.length}A`);
91
- for (let i = 0; i < AUTH_OPTIONS.length; i++) {
92
- writeStdout("\x1b[2K\x1b[1B");
107
+ catch (e) {
108
+ if (e instanceof PromptInterruptedError) {
109
+ exitProcess(130);
110
+ return "token"; // unreachable
93
111
  }
94
- writeStdout(`\x1b[${AUTH_OPTIONS.length}A`);
95
- drawOptions();
112
+ throw e;
96
113
  }
97
- drawOptions();
98
- setRawMode(true);
99
- const reader = getStdinReader();
100
- const dec = new TextDecoder();
114
+ }
115
+ export async function openOAuthLogin(authUrl, spinner, opener = openBrowser) {
101
116
  try {
102
- while (true) {
103
- const { value, done } = await reader.read();
104
- if (done)
105
- return "google";
106
- const key = dec.decode(value);
107
- if (key === "\x03")
108
- return "token"; // Ctrl+C - default to token (will prompt)
109
- if (key === "\r" || key === "\n")
110
- return AUTH_OPTIONS[selectedIndex]?.id ?? "token";
111
- if (key === "\x1b[A" || key === "k") {
112
- selectedIndex = Math.max(0, selectedIndex - 1);
113
- redrawOptions();
114
- continue;
115
- }
116
- if (key === "\x1b[B" || key === "j") {
117
- selectedIndex = Math.min(AUTH_OPTIONS.length - 1, selectedIndex + 1);
118
- redrawOptions();
119
- continue;
120
- }
121
- if (key >= "1" && key <= "4") {
122
- return AUTH_OPTIONS[Number.parseInt(key, 10) - 1]?.id ?? "token";
123
- }
124
- }
117
+ await opener(authUrl);
118
+ return true;
125
119
  }
126
- finally {
127
- reader.releaseLock();
128
- setRawMode(false);
120
+ catch {
121
+ spinner.stop();
122
+ console.log();
123
+ console.log(` ${warning("!")} Could not open the browser.`);
124
+ console.log(` ${dim("Continue in your browser:")}`);
125
+ console.log(` ${brand(authUrl)}`);
126
+ console.log();
127
+ return false;
129
128
  }
130
129
  }
131
- async function loginWithOAuth(provider, env) {
132
- console.log();
130
+ async function loginWithOAuth(provider, env, spinner) {
133
131
  if (!canOpenBrowser(env)) {
134
- console.log(" " + warning("Browser login not available in this environment."));
132
+ spinner.stop();
133
+ console.log(" " + warning("!") + " Browser login not available in this environment.");
135
134
  console.log(" " + dim("Please use the API token option instead."));
136
135
  return null;
137
136
  }
138
- console.log(" " + dim("Starting authentication server..."));
139
137
  const state = createOAuthState();
140
138
  let server;
141
139
  try {
142
140
  server = await startCallbackServer(DEFAULT_CALLBACK_PORT, { expectedState: state });
143
141
  }
144
142
  catch (e) {
145
- console.log(" " + error(`Failed to start server: ${e}`));
143
+ spinner.error(`Failed to start authentication server: ${e}`);
146
144
  return null;
147
145
  }
148
146
  const callbackUrl = getCallbackUrl(server.port);
149
147
  const authUrl = createOAuthAuthorizationUrl(provider, callbackUrl, state, env);
150
- console.log(" " + brand("Opening browser to log in..."));
151
- console.log();
152
- try {
153
- await openBrowser(authUrl);
148
+ spinner.update("Opening browser to log in...");
149
+ const browserOpened = await openOAuthLogin(authUrl, spinner);
150
+ if (browserOpened) {
151
+ spinner.update("Waiting for login...");
154
152
  }
155
- catch {
156
- console.log(" " + dim("Could not open browser automatically."));
157
- console.log(" " + dim("Please use the API token option instead."));
153
+ else {
154
+ console.log(` ${dim("Waiting for login...")}`);
158
155
  }
159
- console.log(" " + muted("Waiting for login..."));
160
156
  try {
161
157
  const result = await server.waitForCallback(DEFAULT_LOGIN_TIMEOUT_MS);
162
158
  if (result.error) {
163
- console.log();
164
- console.log(" " + error("✗") + " Login failed: " + result.error);
159
+ spinner.error(`Login failed: ${result.error}`);
165
160
  return null;
166
161
  }
167
162
  if (!result.token) {
168
- console.log();
169
- console.log(" " + error("✗") + " No token received");
163
+ spinner.error("No token received");
170
164
  return null;
171
165
  }
172
166
  return result.token;
173
167
  }
174
168
  catch (e) {
175
- console.log();
176
- console.log(" " + error("✗") + " " + (e instanceof Error ? e.message : String(e)));
169
+ spinner.error(e instanceof Error ? e.message : String(e));
177
170
  return null;
178
171
  }
179
172
  finally {
@@ -199,21 +192,54 @@ export async function login(method, env = getEnvironmentConfig()) {
199
192
  return null;
200
193
  }
201
194
  const authMethod = method ?? (isTTY() ? await promptAuthMethod() : "token");
202
- let token = null;
203
- switch (authMethod) {
204
- case "google":
205
- case "github":
206
- case "microsoft":
207
- token = await loginWithOAuth(authMethod, env);
208
- break;
209
- case "token":
210
- token = await loginWithToken();
211
- break;
195
+ if (authMethod === "google" || authMethod === "github" || authMethod === "microsoft") {
196
+ const spinner = createSpinner("Starting authentication server...");
197
+ const token = await loginWithOAuth(authMethod, env, spinner);
198
+ if (!token)
199
+ return null;
200
+ spinner.update("Validating token...");
201
+ let identity;
202
+ try {
203
+ identity = await validateCredential(token, env, { throwOnNetworkError: true });
204
+ }
205
+ catch (e) {
206
+ if (e instanceof NetworkError) {
207
+ spinner.stop();
208
+ console.log();
209
+ console.log(" " + error("✗") + " Could not reach the Veryfront API");
210
+ console.log(" " + dim("Check your network connection and try again"));
211
+ return null;
212
+ }
213
+ throw e;
214
+ }
215
+ if (!identity) {
216
+ spinner.error("Invalid token");
217
+ return null;
218
+ }
219
+ await saveToken(token, env);
220
+ spinner.success(isApiKeyIdentity(identity)
221
+ ? "Authenticated with an API key"
222
+ : `Logged in as ${brand(identity.email)}`);
223
+ return identity;
212
224
  }
225
+ // Token path: no spinner, plain text status
226
+ const token = await loginWithToken();
213
227
  if (!token)
214
228
  return null;
215
229
  console.log(" " + dim("Validating token..."));
216
- const identity = await validateCredential(token, env);
230
+ let identity;
231
+ try {
232
+ identity = await validateCredential(token, env, { throwOnNetworkError: true });
233
+ }
234
+ catch (e) {
235
+ if (e instanceof NetworkError) {
236
+ console.log();
237
+ console.log(" " + error("✗") + " Could not reach the Veryfront API");
238
+ console.log(" " + dim("Check your network connection and try again"));
239
+ return null;
240
+ }
241
+ throw e;
242
+ }
217
243
  if (!identity) {
218
244
  console.log();
219
245
  console.log(" " + error("✗") + " Invalid token");
@@ -304,7 +330,7 @@ export async function whoami(env = getEnvironmentConfig()) {
304
330
  return null;
305
331
  }
306
332
  console.log();
307
- console.log(" " + warning("✗") + " Not logged in");
333
+ console.log(" " + error("✗") + " Not logged in");
308
334
  console.log(" " + dim("Run 'veryfront login' to authenticate"));
309
335
  // Show provider tokens
310
336
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/analyze-chunks/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,WAe/B,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/analyze-chunks/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,EAAE,WAgB/B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const analyzeChunksHelp = {
2
2
  name: "analyze-chunks",
3
+ hidden: true,
3
4
  category: "development",
4
5
  description: "Analyze bundle chunks and sizes",
5
6
  usage: "veryfront analyze-chunks [options]",
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/build/error-handler.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAetD"}
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/build/error-handler.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAgBtD"}
@@ -1,10 +1,11 @@
1
1
  import { brand, dim } from "../../ui/index.js";
2
- import { cliLogger, isVerbose } from "../../utils/index.js";
2
+ import { cliLogger, isVerbose, logError } from "../../utils/index.js";
3
3
  import { exit, getStdout } from "../../../src/platform/index.js";
4
4
  export function handleBuildError(error) {
5
5
  getStdout()?.write?.(`\r${" ".repeat(80)}\r`);
6
6
  const message = error instanceof Error ? error.message : String(error);
7
- cliLogger.error(`\n✗ ${message}`);
7
+ console.log();
8
+ logError(message);
8
9
  if (isVerbose() && error instanceof Error && error.stack) {
9
10
  cliLogger.error(`\n${dim("Stack trace:")}`);
10
11
  cliLogger.error(dim(error.stack.split("\n").slice(1, 5).join("\n")));
@@ -1,15 +1,15 @@
1
1
  import { dim } from "../../ui/index.js";
2
- import { cliLogger, formatBytes } from "../../utils/index.js";
2
+ import { formatBytes, logSuccess } from "../../utils/index.js";
3
3
  function formatCount(count, noun) {
4
4
  return `${count} ${noun}${count === 1 ? "" : "s"}`;
5
5
  }
6
6
  export function displayBuildSuccess(stats, startTime, outputDir, dryRun) {
7
7
  const duration = ((Date.now() - startTime) / 1000).toFixed(2);
8
- cliLogger.info(`Built in ${duration}s`);
9
- cliLogger.info(` ${formatCount(stats.pages, "page")}, ${formatCount(stats.chunks, "chunk")}, ${formatCount(stats.assets, "asset")}`);
10
- cliLogger.info(` ${formatBytes(stats.totalSize)} in ${outputDir}`);
8
+ logSuccess(`Built in ${duration}s`);
9
+ console.log(` ${formatCount(stats.pages, "page")}, ${formatCount(stats.chunks, "chunk")}, ${formatCount(stats.assets, "asset")}`);
10
+ console.log(` ${formatBytes(stats.totalSize)} in ${outputDir}`);
11
11
  if (dryRun && stats.ssgPaths?.length) {
12
- cliLogger.info(` ${dim("SSG routes:")} ${stats.ssgPaths.join(", ")}`);
12
+ console.log(` ${dim("SSG routes:")} ${stats.ssgPaths.join(", ")}`);
13
13
  }
14
- cliLogger.info("");
14
+ console.log();
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/completions/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,eAAe,EAAE,WAY7B,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/completions/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,eAAe,EAAE,WAa7B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const completionsHelp = {
2
2
  name: "completions",
3
+ hidden: true,
3
4
  category: "development",
4
5
  description: "Generate shell completion scripts",
5
6
  usage: "veryfront completions <shell>",
@@ -43,7 +43,7 @@ const GLOBAL_FLAGS = [
43
43
  "--output",
44
44
  ];
45
45
  export function generateBashCompletions() {
46
- const commands = Object.values(COMMANDS);
46
+ const commands = Object.values(COMMANDS).filter((c) => !c.hidden);
47
47
  const cmdNames = commands.map((c) => c.name).join(" ");
48
48
  let script = `# Veryfront CLI bash completions\n_veryfront_completions() {\n`;
49
49
  script += ` local cur prev commands\n`;
@@ -68,7 +68,7 @@ export function generateBashCompletions() {
68
68
  return script;
69
69
  }
70
70
  export function generateZshCompletions() {
71
- const commands = Object.values(COMMANDS);
71
+ const commands = Object.values(COMMANDS).filter((c) => !c.hidden);
72
72
  let script = `#compdef veryfront\n# Veryfront CLI zsh completions\n\n`;
73
73
  script += `_veryfront() {\n`;
74
74
  script += ` local -a commands\n`;
@@ -103,7 +103,7 @@ export function generateZshCompletions() {
103
103
  return script;
104
104
  }
105
105
  export function generateFishCompletions() {
106
- const commands = Object.values(COMMANDS);
106
+ const commands = Object.values(COMMANDS).filter((c) => !c.hidden);
107
107
  let script = `# Veryfront CLI fish completions\n`;
108
108
  for (const cmd of commands) {
109
109
  const desc = shellEscape(cmd.description);
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/completions/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOxD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAkBf"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/completions/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQxD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -1,4 +1,4 @@
1
- import * as dntShim from "../../../_dnt.shims.js";
1
+ import { exitProcess, logUsageError } from "../../utils/index.js";
2
2
  import { generateBashCompletions, generateFishCompletions, generateZshCompletions, } from "./command.js";
3
3
  export async function handleCompletionsCommand(args) {
4
4
  const shell = args._[1];
@@ -13,8 +13,7 @@ export async function handleCompletionsCommand(args) {
13
13
  console.log(generateFishCompletions());
14
14
  break;
15
15
  default:
16
- console.error("Usage: veryfront completions <bash|zsh|fish>");
17
- console.error('Example: eval "$(veryfront completions bash)"');
18
- dntShim.Deno.exit(1);
16
+ logUsageError("Usage: veryfront completions <bash|zsh|fish>", 'Example: eval "$(veryfront completions bash)"');
17
+ exitProcess(2);
19
18
  }
20
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkBxD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAS1C;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsCzF;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/config/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAiBxD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB;AAED,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAS1C;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsCzF;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC1E"}
@@ -1,4 +1,3 @@
1
- import { cliLogger } from "../../utils/index.js";
2
1
  import { getEnv } from "../../../src/platform/index.js";
3
2
  import { ENVIRONMENT_PROJECT_REFERENCE_NAMES, resolveEnvironmentProjectReference, } from "../../shared/config.js";
4
3
  import { createSuccessEnvelope, isJsonMode, outputJson } from "../../shared/json-output.js";
@@ -77,17 +76,19 @@ export async function handleConfigCommand(_args) {
77
76
  await outputJson(createSuccessEnvelope("config", configData));
78
77
  return;
79
78
  }
80
- cliLogger.info(`\n ${bold("Project Configuration")}\n`);
81
- cliLogger.info(` ${dim("Project slug:")} ${configData.projectSlug ?? "(not set)"}`);
82
- cliLogger.info(` ${dim("Environment:")} ${configData.nodeEnv}`);
83
- cliLogger.info(` ${dim("VF Environment:")} ${configData.veryfrontEnv ?? "(not set)"}`);
84
- cliLogger.info(` ${dim("API endpoint:")} ${configData.apiBaseUrl}`);
85
- cliLogger.info(` ${dim("Debug:")} ${configData.debug}`);
86
- cliLogger.info(` ${dim("CI:")} ${configData.ci}`);
87
- cliLogger.info(` ${dim("Authenticated:")} ${configData.hasApiToken ? "yes" : "no"}`);
88
- cliLogger.info(` ${dim("Config file:")} ${configData.configSource ?? "(none)"}`);
79
+ console.log();
80
+ console.log(` ${bold("Project Configuration")}`);
81
+ console.log();
82
+ console.log(` ${dim("Project slug:")} ${configData.projectSlug ?? "(not set)"}`);
83
+ console.log(` ${dim("Environment:")} ${configData.nodeEnv}`);
84
+ console.log(` ${dim("VF Environment:")} ${configData.veryfrontEnv ?? "(not set)"}`);
85
+ console.log(` ${dim("API endpoint:")} ${configData.apiBaseUrl}`);
86
+ console.log(` ${dim("Debug:")} ${configData.debug}`);
87
+ console.log(` ${dim("CI:")} ${configData.ci}`);
88
+ console.log(` ${dim("Authenticated:")} ${configData.hasApiToken ? "yes" : "no"}`);
89
+ console.log(` ${dim("Config file:")} ${configData.configSource ?? "(none)"}`);
89
90
  if (configData.envOverrides.length > 0) {
90
- cliLogger.info(` ${dim("Env overrides:")} ${configData.envOverrides.join(", ")}`);
91
+ console.log(` ${dim("Env overrides:")} ${configData.envOverrides.join(", ")}`);
91
92
  }
92
- cliLogger.info("");
93
+ console.log();
93
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/demo/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAwBtB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/demo/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAyBtB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const demoHelp = {
2
2
  name: "demo",
3
+ hidden: true,
3
4
  category: "project",
4
5
  description: "Interactive guided tour of Veryfront CLI",
5
6
  usage: "veryfront demo [project-name] [options]",
@@ -7,7 +7,7 @@ import { chdir, cwd, promptSync, writeStdout } from "../../../src/platform/index
7
7
  import { getStdinReader, setRawMode } from "../../../src/platform/index.js";
8
8
  import { join } from "../../../src/platform/compat/path/index.js";
9
9
  import { AnimatedDotMatrix, bold, brand, BRAND_TRUECOLOR, dim, error, formatDuration, HIDE_CURSOR, muted, SHOW_CURSOR, success, successBanner, typeCommand, typeLine, } from "../../ui/index.js";
10
- import { exitProcess, isTTY } from "../../utils/index.js";
10
+ import { exitProcess, isTTY, logError } from "../../utils/index.js";
11
11
  import { createOAuthAuthorizationUrl, createOAuthState, readToken, saveToken, validateToken, } from "../../auth/index.js";
12
12
  import { canOpenBrowser, openBrowser } from "../../auth/browser.js";
13
13
  import { getCallbackUrl, startCallbackServer } from "../../auth/callback-server.js";
@@ -431,7 +431,7 @@ export async function demoCommand(options = {}) {
431
431
  const { projectName = defaultProjectName, auto = false, loginMethod } = options;
432
432
  autoMode = auto;
433
433
  if (!isTTY()) {
434
- console.log("Demo requires an interactive terminal.");
434
+ logError("Demo requires an interactive terminal.");
435
435
  return;
436
436
  }
437
437
  write(HIDE_CURSOR);
@@ -9,7 +9,7 @@
9
9
  import type { InferSchema } from "../../../src/extensions/schema/index.js";
10
10
  import { type ApiClient } from "../../shared/config.js";
11
11
  import { type ProjectTarget } from "../../shared/deployment-provenance.js";
12
- import type { ReleaseAssetManifestResponse } from "../../../src/release-assets/manifest-schema.js";
12
+ import { type ReleaseAssetManifestResponse } from "../../../src/release-assets/index.js";
13
13
  /**
14
14
  * Schema factory for deploy command arguments
15
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/deploy/command.ts"],"names":[],"mappings":"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"}