@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.
- package/README.md +28 -1
- package/dist/index.js +789 -765
- package/dist/package.json +6 -2
- package/dist/src/api/app.d.ts +0 -1
- package/dist/src/api/crypto.d.ts +1 -0
- package/dist/src/api/min-cli-version.d.ts +16 -0
- package/dist/src/app/add.d.ts +2 -2
- package/dist/src/build/credentials-base64.d.ts +3 -0
- package/dist/src/build/credentials-export-command.d.ts +41 -0
- package/dist/src/build/credentials-export-terminal.d.ts +3 -0
- package/dist/src/build/credentials.d.ts +1 -1
- package/dist/src/bundle/validate-inputs.d.ts +4 -0
- package/dist/src/recovery/app-id.d.ts +15 -0
- package/dist/src/recovery/bundle-zip.d.ts +12 -0
- package/dist/src/recovery/notify-app-ready.d.ts +17 -0
- package/dist/src/recovery/public-key.d.ts +7 -0
- package/dist/src/schemas/bundle.d.ts +2 -0
- package/dist/src/sdk.js +401 -382
- package/dist/src/shared/two-factor-compliance.d.ts +19 -0
- package/dist/src/utils.d.ts +9 -4
- package/package.json +6 -2
- package/skills/native-builds/SKILL.md +19 -0
|
@@ -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;
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -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
|
|
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.
|
|
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`
|