@capgo/cli 8.64.0 → 8.65.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/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capgo/cli",
3
3
  "type": "module",
4
- "version": "8.64.0",
4
+ "version": "8.65.0",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
@@ -89,8 +89,9 @@
89
89
  "test:build-cancellation": "bun test/test-build-cancellation.mjs",
90
90
  "test:ci-prompts": "bun test/test-ci-prompts.mjs",
91
91
  "test:ci-secrets": "bun test/test-ci-secrets.mjs",
92
- "test:android-onboarding-progress": "bun test/test-android-onboarding-progress.mjs",
92
+ "test:android-onboarding-progress": "bun test/test-android-onboarding-progress.mjs && bun test/test-android-select-guard.mjs",
93
93
  "test:android-keystore-action": "bun test/test-android-keystore-action.mjs",
94
+ "test:android-google-play-action": "bun test/test-android-google-play-action.mjs",
94
95
  "test:onboarding-telemetry": "bun test/test-onboarding-telemetry.mjs",
95
96
  "test:v2-event-migration": "bun test/test-v2-event-migration.mjs",
96
97
  "test:analytics": "bun test/test-analytics.mjs",
@@ -101,6 +102,7 @@
101
102
  "test:analytics-org-resolver": "bun test/test-analytics-org-resolver.mjs",
102
103
  "test:supabase-perf": "bun test/test-supabase-perf.mjs",
103
104
  "test:preview-qr": "bun test/test-preview-qr.mjs",
105
+ "test:bundle-pages": "bun test test/test-bundle-pages.test.ts",
104
106
  "test:mcp-analytics": "bun test/test-mcp-analytics.mjs",
105
107
  "test:mcp-instructions": "bun test/test-mcp-instructions.mjs",
106
108
  "test:mcp-stdout-guard": "bun test/test-mcp-stdout-guard.mjs",
@@ -189,7 +191,7 @@
189
191
  "test:android-version": "bun test/test-android-version.mjs",
190
192
  "test:platform-flow-contract": "bun test/test-platform-flow-contract.mjs",
191
193
  "test:tail-engine-shared": "bun test/test-tail-engine-shared.mjs",
192
- "test": "bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:notify-app-ready-background && 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:cordova-upload-mode && 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:ios-provisioning-map && bun run test:ios-provisioning-command && 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:cli-help && bun run test:build-cache-payload && bun run test:build-cancellation && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:android-keystore-action && 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-add-exists && bun run test:app-add-getting-started && bun run test:app-list-output-text && bun run test:app-todo && 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:builder-app-selection && bun run test:builder-login-gate && 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-list && bun run test:channel-add-exists && bun run test:wait-log && bun run test:init-guardrails && bun run test:init-upload-recovery && 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-certificate-action && bun run test:ios-credential-action && 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-gcp && 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",
194
+ "test": "bun run build && bun run test:helper-dce && bun run test:version-detection:setup && bun run test:bundle && bun run test:notify-app-ready-background && 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:cordova-upload-mode && 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:ios-provisioning-map && bun run test:ios-provisioning-command && 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:cli-help && bun run test:build-cache-payload && bun run test:build-cancellation && bun run test:ci-prompts && bun run test:ci-secrets && bun run test:android-onboarding-progress && bun run test:android-keystore-action && bun run test:android-google-play-action && 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:bundle-pages && 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-add-exists && bun run test:app-add-getting-started && bun run test:app-list-output-text && bun run test:app-todo && 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:builder-app-selection && bun run test:builder-login-gate && 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-list && bun run test:channel-add-exists && bun run test:wait-log && bun run test:init-guardrails && bun run test:init-upload-recovery && 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-certificate-action && bun run test:ios-credential-action && 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-gcp && 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",
193
195
  "test:build-platform-selection": "bun test/test-build-platform-selection.mjs",
194
196
  "test:builder-project-discovery": "bun test/test-builder-project-discovery.mjs",
195
197
  "test:builder-app-selection": "bun test/test-builder-app-selection.mjs",
@@ -264,7 +266,7 @@
264
266
  "rrweb-snapshot": "^2.1.1",
265
267
  "string-width": "^8.2.2",
266
268
  "typescript": "6.0.3",
267
- "zod": "^4.4.3"
269
+ "zod": "^4.5.4"
268
270
  },
269
271
  "optionalDependencies": {
270
272
  "@capgo/cli-helper-darwin-arm64": "^1.1.1",
@@ -1,10 +1,13 @@
1
1
  import type { SupabaseClient } from '@supabase/supabase-js';
2
2
  import type { Database } from '../types/supabase.types';
3
+ import { invokeCapgoCliApi } from '../utils';
3
4
  interface VersionOptions {
4
5
  silent?: boolean;
5
6
  apikey?: string;
6
7
  supaHost?: string;
7
8
  supaAnon?: string;
9
+ /** Injectable for unit tests; defaults to invokeCapgoCliApi. */
10
+ invoke?: typeof invokeCapgoCliApi;
8
11
  }
9
12
  interface DeleteSpecificVersionOptions extends VersionOptions {
10
13
  autoUnlink?: boolean;
@@ -0,0 +1,18 @@
1
+ import type { ValidationResult } from '../service-account-validation.js';
2
+ import type { AndroidOnboardingProgress, AndroidOnboardingStep } from '../types.js';
3
+ import type { PreparationTrackAction } from '../../ui/preparation-action.js';
4
+ import type { Buffer } from 'node:buffer';
5
+ export type GooglePlayConnectionSource = 'imported_service_account' | 'generated_service_account';
6
+ export type GooglePlayConnectionFailureReason = 'shape_error' | 'file_read_error' | 'token_error' | 'no_app_access' | 'network_error' | 'missing_scopes' | 'oauth_failed' | 'provisioning_failed';
7
+ type FailedValidationKind = Extract<ValidationResult, {
8
+ ok: false;
9
+ }>['kind'];
10
+ type ImportedGooglePlayFailureKind = FailedValidationKind | 'file-read-error';
11
+ type TrackAction = PreparationTrackAction<AndroidOnboardingStep>;
12
+ export declare function trackConnectedGooglePlay(progress: AndroidOnboardingProgress, source: GooglePlayConnectionSource, journeyId: string, trackAction: TrackAction, reportedSuccesses: Set<string>): boolean;
13
+ export declare function trackImportedGooglePlayValidationFailure(kind: ImportedGooglePlayFailureKind, journeyId: string, trackAction: TrackAction): void;
14
+ export declare function readImportedGooglePlayCredentialFile(path: string, readCredentialFile: (path: string) => Promise<Buffer>, journeyId: string, trackAction: TrackAction, shouldReportFailure?: () => boolean): Promise<Buffer>;
15
+ export declare function trackGooglePlayConnectionFailure(source: GooglePlayConnectionSource, reason: GooglePlayConnectionFailureReason, step: AndroidOnboardingStep, journeyId: string, trackAction: TrackAction): void;
16
+ export declare function trackUnverifiedGooglePlayConnection(journeyId: string, trackAction: TrackAction): void;
17
+ export declare function trackGeneratedGooglePlayProvisioningFailure(savedProgress: AndroidOnboardingProgress | null, journeyId: string, trackAction: TrackAction, reportedSuccesses: Set<string>): boolean;
18
+ export {};
@@ -33,7 +33,7 @@ export interface TrackBuilderOnboardingStepInput {
33
33
  errorCategory?: OnboardingErrorCategory | AndroidOnboardingErrorCategory;
34
34
  replaySessionId?: string;
35
35
  }
36
- export type BuilderOnboardingAction = 'resume_prompt_decision' | 'question_shown' | 'question_answered' | 'question_skipped' | 'android_sa_method_selected' | 'android_sa_validation_recovery_selected' | 'android_sa_validation_result' | 'credential_verified' | 'credential_verification_failed' | 'certificate_prepared' | 'certificate_preparation_failed' | 'keystore_prepared' | 'keystore_preparation_failed';
36
+ export type BuilderOnboardingAction = 'resume_prompt_decision' | 'question_shown' | 'question_answered' | 'question_skipped' | 'android_sa_method_selected' | 'android_sa_validation_recovery_selected' | 'android_sa_validation_result' | 'credential_verified' | 'credential_verification_failed' | 'certificate_prepared' | 'certificate_preparation_failed' | 'keystore_prepared' | 'keystore_preparation_failed' | 'google_play_connected' | 'google_play_connection_failed' | 'google_play_connection_unverified';
37
37
  export interface TrackBuilderOnboardingActionInput {
38
38
  apikey: string;
39
39
  appId: string;
@@ -160,7 +160,7 @@ export declare const mcpRequestBuildInputSchema: z.ZodObject<{
160
160
  path: z.ZodOptional<z.ZodString>;
161
161
  nodeModules: z.ZodOptional<z.ZodString>;
162
162
  cache: z.ZodOptional<z.ZodBoolean>;
163
- cacheKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
163
+ cacheKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
164
164
  }, z.core.$strip>;
165
165
  export declare const mcpGenerateEncryptionKeysInputSchema: z.ZodObject<{
166
166
  force: z.ZodOptional<z.ZodBoolean>;
@@ -28,7 +28,7 @@ export declare const buildCredentialsSchema: z.ZodObject<{
28
28
  }, z.core.$catchall<z.ZodOptional<z.ZodString>>>;
29
29
  export type BuildCredentials = z.infer<typeof buildCredentialsSchema>;
30
30
  export declare const buildCacheOptionSchema: z.ZodOptional<z.ZodBoolean>;
31
- export declare const buildCacheKeyOptionSchema: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
31
+ export declare const buildCacheKeyOptionSchema: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
32
32
  export declare const buildRequestOptionsSchema: z.ZodObject<{
33
33
  apikey: z.ZodString;
34
34
  supaHost: z.ZodOptional<z.ZodString>;
@@ -111,7 +111,7 @@ export declare const buildRequestOptionsSchema: z.ZodObject<{
111
111
  failOnWarnings: z.ZodOptional<z.ZodBoolean>;
112
112
  builderJourneyId: z.ZodOptional<z.ZodString>;
113
113
  cache: z.ZodOptional<z.ZodBoolean>;
114
- cacheKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
114
+ cacheKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
115
115
  }, z.core.$strip>;
116
116
  export type BuildRequestOptions = z.infer<typeof buildRequestOptionsSchema>;
117
117
  export declare const buildNeededOptionsSchema: z.ZodObject<{
@@ -411,7 +411,7 @@ export declare const requestBuildOptionsSchema: z.ZodObject<{
411
411
  prescanSkip: z.ZodOptional<z.ZodArray<z.ZodString>>;
412
412
  prescanWarn: z.ZodOptional<z.ZodArray<z.ZodString>>;
413
413
  cache: z.ZodOptional<z.ZodBoolean>;
414
- cacheKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
414
+ cacheKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
415
415
  }, z.core.$strip>;
416
416
  export type RequestBuildOptions = z.infer<typeof requestBuildOptionsSchema>;
417
417
  export declare const currentBundleOptionsSchema: z.ZodObject<{