@capgo/cli 8.43.0 → 8.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,6 @@
1
1
  export declare const TWO_FACTOR_COMPLIANCE_NETWORK_MESSAGE = "Cannot reach Capgo to verify 2FA compliance. Check your network connection and try again.";
2
+ export declare const TWO_FACTOR_PREFLIGHT_NETWORK_WARNING = "Could not verify 2FA compliance due to a network error. Continuing \u2014 Capgo will still enforce 2FA on this action if required.";
3
+ export declare const TWO_FACTOR_PREFLIGHT_MAX_ATTEMPTS = 3;
2
4
  /**
3
5
  * User-facing 2FA compliance connectivity failure. Unlike CliUserError, this
4
6
  * remains eligible for PostHog `$exception` capture so operational connectivity
@@ -7,6 +9,23 @@ export declare const TWO_FACTOR_COMPLIANCE_NETWORK_MESSAGE = "Cannot reach Capgo
7
9
  export declare class TwoFactorComplianceNetworkError extends Error {
8
10
  constructor(message?: string);
9
11
  }
12
+ /** Retries transient transport failures before the preflight fail-open path runs. */
13
+ export declare function callTwoFactorComplianceRpcWithRetry<T>(rpcCall: () => PromiseLike<{
14
+ data: T | null;
15
+ error: {
16
+ message?: string;
17
+ } | null;
18
+ }>): Promise<{
19
+ data: T | null;
20
+ error: {
21
+ message?: string;
22
+ } | null;
23
+ }>;
24
+ /** Warn, capture telemetry, and let the command continue when the preflight probe is unreachable. */
25
+ export declare function warnAndContinueTwoFactorPreflightNetworkFailure(options: {
26
+ silent?: boolean;
27
+ telemetryFunctionName: string;
28
+ }): Promise<void>;
10
29
  /** Maps Supabase RPC transport failures to user-facing 2FA compliance errors. */
11
30
  export declare function throwTwoFactorComplianceRpcError(error: {
12
31
  message?: string;
@@ -142,6 +142,8 @@ interface CapgoConfig {
142
142
  hostWeb: string;
143
143
  hostFilesApi: string;
144
144
  hostApi: string;
145
+ minCliVersion?: string;
146
+ minCliVersionReason?: string;
145
147
  }
146
148
  export declare function getRemoteConfig(silent?: boolean, signal?: AbortSignal): Promise<{
147
149
  supaHost?: string;
@@ -150,6 +152,8 @@ export declare function getRemoteConfig(silent?: boolean, signal?: AbortSignal):
150
152
  hostWeb: string;
151
153
  hostFilesApi: string;
152
154
  hostApi: string;
155
+ minCliVersion?: string;
156
+ minCliVersionReason?: string;
153
157
  }>;
154
158
  interface CapgoFilesConfig {
155
159
  partialUpload: boolean;
@@ -384,9 +388,7 @@ export declare function createSupabaseClient(apikey: string, supaHost?: string,
384
388
  external_url?: string | null;
385
389
  id?: number;
386
390
  key_id?: string | null;
387
- link
388
- /** Stable PostHog fingerprint for incomplete Capgo server config before Supabase client creation. */
389
- ?: string | null;
391
+ link?: string | null;
390
392
  manifest?: Database["public"]["CompositeTypes"]["manifest_entry"][] | null;
391
393
  manifest_count?: number;
392
394
  min_update_version?: string | null;
@@ -522,7 +524,10 @@ export declare function createSupabaseClient(apikey: string, supaHost?: string,
522
524
  onboarding_completed_at?: string | null;
523
525
  owner_org: string;
524
526
  retention?: number;
525
- stats_refresh_requested_at?: string | null;
527
+ stats_refresh_requested_at? /**
528
+ * Channel name
529
+ * example: "waitlist"
530
+ */: string | null;
526
531
  stats_updated_at?: string | null;
527
532
  transfer_history?: import("./types/supabase.types").Json[] | null;
528
533
  updated_at?: string | null;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "8.43.0",
4
+ "version": "8.45.0",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
@@ -65,6 +65,7 @@
65
65
  "check-posix-paths": "node test/check-posix-paths.js",
66
66
  "generate-docs": "node dist/index.js generate-docs README.md",
67
67
  "test:bundle": "bun test/test-bundle.mjs",
68
+ "test:bundle-validation": "bun test test/bundle/",
68
69
  "test:prescan": "bun test test/prescan/",
69
70
  "test:functional": "bun test/test-functional.mjs",
70
71
  "test:semver": "bun test/test-semver-validation.mjs",
@@ -75,6 +76,7 @@
75
76
  "test:native-dependencies": "bun test/test-native-dependencies.mjs && bun test/test-get-remote-dependencies.mjs",
76
77
  "test:package-json-guard": "bun test/test-package-json-guard.mjs",
77
78
  "test:credentials": "bun test/test-credentials.mjs",
79
+ "test:credentials-export": "bun test/test-credentials-export.mjs",
78
80
  "test:asc-key-protocol": "bun test/test-asc-key-protocol.mjs",
79
81
  "test:credentials-validation": "bun test/test-credentials-validation.mjs",
80
82
  "test:android-service-account-validation": "bun test/test-android-service-account-validation.mjs",
@@ -88,6 +90,7 @@
88
90
  "test:v2-event-migration": "bun test/test-v2-event-migration.mjs",
89
91
  "test:analytics": "bun test/test-analytics.mjs",
90
92
  "test:cli-headers": "bun test/test-cli-headers.mjs",
93
+ "test:min-cli-version": "bun test/test-min-cli-version.mjs",
91
94
  "test:authenticated-command-invocation": "bun test/test-authenticated-command-invocation.mjs",
92
95
  "test:analytics-error-category": "bun test/test-analytics-error-category.mjs",
93
96
  "test:analytics-org-resolver": "bun test/test-analytics-org-resolver.mjs",
@@ -109,6 +112,7 @@
109
112
  "test:app-list-output-text": "bun test/test-app-list-output-text.mjs",
110
113
  "test:doctor-analytics": "bun test/test-doctor-analytics.mjs",
111
114
  "test:posthog-exception": "bun test/test-posthog-exception.mjs",
115
+ "test:cli-recovery": "bun test/test-cli-recovery.mjs",
112
116
  "test:create-supabase-client": "bun test/test-create-supabase-client.mjs",
113
117
  "test:onboarding-recovery": "bun test/test-onboarding-recovery.mjs",
114
118
  "test:onboarding-progress": "bun test/test-onboarding-progress.mjs",
@@ -170,7 +174,7 @@
170
174
  "test:android-version": "bun test/test-android-version.mjs",
171
175
  "test:platform-flow-contract": "bun test/test-platform-flow-contract.mjs",
172
176
  "test:tail-engine-shared": "bun test/test-tail-engine-shared.mjs",
173
- "test": "bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:functional && bun run test:semver && bun run test:auto-bump-version && bun run test:auto-bump-ai-diff && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:fail-on-incompatible && bun run test:native-dependencies && bun run test:package-json-guard && bun run test:credentials && bun run test:credentials-validation && bun run test:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:v2-event-migration && bun run test:analytics && bun run test:cli-headers && bun run test:authenticated-command-invocation && bun run test:analytics-error-category && bun run test:analytics-org-resolver && bun run test:supabase-perf && bun run test:preview-qr && bun run test:app-set-options && bun run test:mcp-analytics && bun run test:mcp-instructions && bun run test:mcp-live-update-onboarding && bun run test:mcp-stdout-guard && bun run test:mcp-platform-select && bun run test:mcp-explain-scopes && bun run test:mcp-oauth-reopen && bun run test:mcp-broker-oauth && bun run test:mcp-broker-session && bun run test:mcp-credentials-manage && bun run test:mcp-resume-prompt && bun run test:mcp-build-job && bun run test:mcp-build-tools && bun run test:app-created-source && bun run test:app-list-output-text && bun run test:doctor-analytics && bun run test:posthog-exception && bun run test:create-supabase-client && bun run test:build-platform-selection && bun run test:builder-project-discovery && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-monorepo-targeting && bun run test:init-app-conflict && bun run test:channel-add-exists && bun run test:wait-log && bun run test:init-guardrails && bun run test:init-replay && bun run test:init-telemetry && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:mcp-no-key-handshake && bun run test:auth-session && bun run test:version-detection && bun run test:platform-paths && bun run test:project-type-detection && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:asc-key-protocol && bun run test:apple-api-import-helpers && bun run test:apple-api-verify-key && bun run test:bundle-id-detector && bun run test:apple-api-app-list && bun run test:app-verification && bun run test:pbxproj-parser && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:cicd-failure-help && bun run test:ai-sse-parser && bun run test:ai-render-markdown && bun run test:ai-stream-markdown && bun run test:ai-onboarding-mode && bun run test:ai-fit && bun run test:platform-layout && bun run test:frame-fit && bun run test:onboarding-min-size && bun run test:min-size-gate && bun run test:shell-size-gate && bun run test:build-log-sanitize && bun run test:build-output-viewport && bun run test:diff-viewer-viewport && bun run test:build-complete-exit && bun run test:ai-analyze-stream && bun run test:support-mailto && bun run test:support-redact && bun run test:support-internal-log && bun run test:support-help-menu && bun run test:support-contact && bun run test:support-upload-prompt && bun run test:support-bundle-files && bun run test:self-update && bun run test:update-prompt && bun run test:apple-api-cert-create && bun run test:android-tail-engine && bun run test:android-tail-render && bun run test:android-tail-routing && bun run test:dev-gate-stripped && bun run test:frame-fit-ios-shared && bun run test:ios-confirm-app-id && bun run test:ios-create-new && bun run test:ios-e2e && bun run test:ios-flow-contract && bun run test:ios-import-discovery && bun run test:ios-import-export && bun run test:ios-import-pickers && bun run test:ios-import-recovery && bun run test:ios-recovery && bun run test:ios-resume && bun run test:ios-tail-handoff && bun run test:ios-tui-render && bun run test:p8-error && bun run test:ios-tui-routing && bun run test:ios-updater-sync-validation && bun run test:ios-verify-app && bun run test:ios-marketing-version && bun run test:android-version && bun run test:platform-flow-contract && bun run test:tail-engine-shared && bun run test:prescan && bun run test:android-reporting-api && bun run test:android-app-verification && bun run test:android-rename && bun run test:appflow-auth && bun run test:appflow-api-map && bun run test:appflow-validate && bun run test:appflow-flow && bun run test:appflow-gapfill && bun run test:appflow-engine && bun run test:appflow-tail && bun run test:appflow-fetch && bun run test:appflow-sa-decode && bun run test:app-permission-helper && bun run test:2fa-compliance-network && bun run test:organization-set-api-host && bun run test:trial-warning && bun run test:plan-validation",
177
+ "test": "bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:bundle-validation && bun run test:functional && bun run test:semver && bun run test:auto-bump-version && bun run test:auto-bump-ai-diff && bun run test:version-edge-cases && bun run test:regex && bun run test:upload && bun run test:fail-on-incompatible && bun run test:native-dependencies && bun run test:package-json-guard && bun run test:credentials && bun run test:credentials-export && bun run test:credentials-validation && bun run test:android-service-account-validation && bun run test:build-zip-filter && bun run test:checksum && bun run test:build-needed && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:onboarding-telemetry && bun run test:v2-event-migration && bun run test:analytics && bun run test:cli-headers && bun run test:min-cli-version && bun run test:authenticated-command-invocation && bun run test:analytics-error-category && bun run test:analytics-org-resolver && bun run test:supabase-perf && bun run test:preview-qr && bun run test:app-set-options && bun run test:mcp-analytics && bun run test:mcp-instructions && bun run test:mcp-live-update-onboarding && bun run test:mcp-stdout-guard && bun run test:mcp-platform-select && bun run test:mcp-explain-scopes && bun run test:mcp-oauth-reopen && bun run test:mcp-broker-oauth && bun run test:mcp-broker-session && bun run test:mcp-credentials-manage && bun run test:mcp-resume-prompt && bun run test:mcp-build-job && bun run test:mcp-build-tools && bun run test:app-created-source && bun run test:app-list-output-text && bun run test:doctor-analytics && bun run test:posthog-exception && bun run test:cli-recovery && bun run test:create-supabase-client && bun run test:build-platform-selection && bun run test:builder-project-discovery && bun run test:onboarding-recovery && bun run test:onboarding-progress && bun run test:onboarding-run-targets && bun run test:run-device-command && bun run test:init-monorepo-targeting && bun run test:init-app-conflict && bun run test:channel-add-exists && bun run test:wait-log && bun run test:init-guardrails && bun run test:init-replay && bun run test:init-telemetry && bun run test:prompt-preferences && bun run test:esm-sdk && bun run test:mcp && bun run test:mcp-no-key-handshake && bun run test:auth-session && bun run test:version-detection && bun run test:platform-paths && bun run test:project-type-detection && bun run test:payload-split && bun run test:manifest-path-encoding && bun run test:macos-signing && bun run test:asc-key-protocol && bun run test:apple-api-import-helpers && bun run test:apple-api-verify-key && bun run test:bundle-id-detector && bun run test:apple-api-app-list && bun run test:app-verification && bun run test:pbxproj-parser && bun run test:ai-log-capture && bun run test:ai-analyze-flow && bun run test:cicd-failure-help && bun run test:ai-sse-parser && bun run test:ai-render-markdown && bun run test:ai-stream-markdown && bun run test:ai-onboarding-mode && bun run test:ai-fit && bun run test:platform-layout && bun run test:frame-fit && bun run test:onboarding-min-size && bun run test:min-size-gate && bun run test:shell-size-gate && bun run test:build-log-sanitize && bun run test:build-output-viewport && bun run test:diff-viewer-viewport && bun run test:build-complete-exit && bun run test:ai-analyze-stream && bun run test:support-mailto && bun run test:support-redact && bun run test:support-internal-log && bun run test:support-help-menu && bun run test:support-contact && bun run test:support-upload-prompt && bun run test:support-bundle-files && bun run test:self-update && bun run test:update-prompt && bun run test:apple-api-cert-create && bun run test:android-tail-engine && bun run test:android-tail-render && bun run test:android-tail-routing && bun run test:dev-gate-stripped && bun run test:frame-fit-ios-shared && bun run test:ios-confirm-app-id && bun run test:ios-create-new && bun run test:ios-e2e && bun run test:ios-flow-contract && bun run test:ios-import-discovery && bun run test:ios-import-export && bun run test:ios-import-pickers && bun run test:ios-import-recovery && bun run test:ios-recovery && bun run test:ios-resume && bun run test:ios-tail-handoff && bun run test:ios-tui-render && bun run test:p8-error && bun run test:ios-tui-routing && bun run test:ios-updater-sync-validation && bun run test:ios-verify-app && bun run test:ios-marketing-version && bun run test:android-version && bun run test:platform-flow-contract && bun run test:tail-engine-shared && bun run test:prescan && bun run test:android-reporting-api && bun run test:android-app-verification && bun run test:android-rename && bun run test:appflow-auth && bun run test:appflow-api-map && bun run test:appflow-validate && bun run test:appflow-flow && bun run test:appflow-gapfill && bun run test:appflow-engine && bun run test:appflow-tail && bun run test:appflow-fetch && bun run test:appflow-sa-decode && bun run test:app-permission-helper && bun run test:2fa-compliance-network && bun run test:organization-set-api-host && bun run test:trial-warning && bun run test:plan-validation",
174
178
  "test:build-platform-selection": "bun test/test-build-platform-selection.mjs",
175
179
  "test:builder-project-discovery": "bun test/test-builder-project-discovery.mjs",
176
180
  "test:ai-log-capture": "bun test/test-ai-log-capture.mjs",
@@ -261,6 +261,25 @@ npx @capgo/cli build credentials save --platform android \
261
261
  - `--skip-build-number-bump`, `--no-skip-build-number-bump`
262
262
  - Supports the same iOS and Android credential fields as `build credentials save`.
263
263
 
264
+ ### `build credentials export <VARIABLE>`
265
+
266
+ - Exports one value from saved Builder credentials only; environment variables are never used.
267
+ - Requires `--app-id <APP_ID>`.
268
+ - Requires exactly one output mode:
269
+ - `--raw` writes only the exact stored value to stdout, with no trailing newline. Failures go to stderr and exit with status `1`.
270
+ - `--file <PATH>` creates a new `0600` file and never overwrites an existing path. Interactive runs prompt before decoding values that look like Base64; `--decode-base64` forces decoding. A negative response or non-interactive run preserves the stored text.
271
+ - Use `--local` or `--global` when the app has saved credentials in both stores. Use `--platform ios|android` when the value is ambiguous across platforms.
272
+
273
+ ```bash
274
+ # Exact value for a CI secret or pipe: no newline is added.
275
+ npx @capgo/cli@latest build credentials export P12_PASSWORD \
276
+ --app-id com.example.app --platform ios --raw
277
+
278
+ # Create a new decoded keystore file; existing paths are refused.
279
+ npx @capgo/cli@latest build credentials export ANDROID_KEYSTORE_FILE \
280
+ --app-id com.example.app --platform android --file ./release.keystore --decode-base64
281
+ ```
282
+
264
283
  ### `build credentials migrate`
265
284
 
266
285
  - Example: `npx @capgo/cli build credentials migrate --platform ios`