@capgo/cli 8.57.0 → 8.59.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.57.0",
4
+ "version": "8.59.0",
5
5
  "description": "A CLI to upload to capgo servers",
6
6
  "author": "Martin martin@capgo.app",
7
7
  "license": "Apache 2.0",
@@ -133,10 +133,12 @@
133
133
  "test:init-replay": "bun test/test-init-replay.mjs",
134
134
  "test:init-telemetry": "bun test/test-init-telemetry.mjs",
135
135
  "test:capacitor-config-target": "bun test/test-capacitor-config-target.mjs",
136
+ "test:builder-app-id-config": "bun test/test-builder-app-id-config.mjs",
136
137
  "test:capacitor-config-typescript7": "bun test/test-capacitor-config-typescript7.mjs",
137
138
  "test:capacitor-config-native-import": "bun test/test-capacitor-config-native-import.mjs",
138
139
  "test:cli-user-error-config": "bun test/test-cli-user-error-config.mjs",
139
- "test:init-monorepo-targeting": "bun run test:capacitor-config-target && bun run test:capacitor-config-typescript7 && bun run test:capacitor-config-native-import && bun run test:cli-user-error-config && bun test/test-init-monorepo-targeting.mjs",
140
+ "test:cordova-upload-mode": "bun test/test-cordova-upload-mode.mjs",
141
+ "test:init-monorepo-targeting": "bun run test:capacitor-config-target && bun run test:builder-app-id-config && bun run test:capacitor-config-typescript7 && bun run test:capacitor-config-native-import && bun run test:cli-user-error-config && bun test/test-init-monorepo-targeting.mjs",
140
142
  "test:prompt-preferences": "bun test/test-prompt-preferences.mjs",
141
143
  "test:esm-sdk": "node test/test-sdk-esm.mjs",
142
144
  "test:auth-session": "bun test/test-auth-session.mjs",
@@ -184,7 +186,7 @@
184
186
  "test:android-version": "bun test/test-android-version.mjs",
185
187
  "test:platform-flow-contract": "bun test/test-platform-flow-contract.mjs",
186
188
  "test:tail-engine-shared": "bun test/test-tail-engine-shared.mjs",
187
- "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: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: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: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-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",
189
+ "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: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: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-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",
188
190
  "test:build-platform-selection": "bun test/test-build-platform-selection.mjs",
189
191
  "test:builder-project-discovery": "bun test/test-builder-project-discovery.mjs",
190
192
  "test:ai-log-capture": "bun test/test-ai-log-capture.mjs",
@@ -2,7 +2,8 @@ import { withSupabaseSource } from './supabase-perf';
2
2
  export { getGlobalAnalyticsProps, getInvocationSource, setInvocationSource } from './global-props';
3
3
  export declare function isTelemetryDisabled(): boolean;
4
4
  export declare function flushAnalytics(timeoutMs?: number): Promise<void>;
5
- export declare function resolveTrackingContext(apikey: string, signal?: AbortSignal): Promise<{
5
+ export declare function isBuilderInvocation(commandPath: string): boolean;
6
+ export declare function resolveTrackingContext(apikey: string, signal?: AbortSignal, builder?: boolean): Promise<{
6
7
  appId?: string;
7
8
  orgId?: string;
8
9
  }>;
@@ -0,0 +1,5 @@
1
+ import type { CapacitorConfig } from '../config';
2
+ export declare function hasBuilderAppIdField(config: CapacitorConfig | undefined): boolean;
3
+ export declare function getConfiguredBuilderAppId(config: CapacitorConfig | undefined): string | undefined;
4
+ /** Resolve the Capgo app key for Builder commands only. */
5
+ export declare function getBuilderAppId(explicitAppId: string | undefined, config: CapacitorConfig | undefined, legacyDefault?: 'updater' | 'native', explicitMode?: 'truthy' | 'defined'): string | undefined;
@@ -173,6 +173,8 @@ export interface EngineDeps {
173
173
  cwd: string;
174
174
  hasSavedKey: () => boolean;
175
175
  getAppId: () => Promise<string | undefined>;
176
+ /** Native package/bundle id, separate from the Capgo Builder app key. */
177
+ getNativeAppId?: () => Promise<string | undefined>;
176
178
  detectPlatforms: () => Promise<Platform[]>;
177
179
  isAppRegistered: (appId: string) => Promise<boolean>;
178
180
  loadProgress: (appId: string) => Promise<OnboardingProgress | null>;
@@ -17,7 +17,7 @@ export interface TrackBuilderOnboardingStepInput {
17
17
  errorCategory?: OnboardingErrorCategory | AndroidOnboardingErrorCategory;
18
18
  replaySessionId?: string;
19
19
  }
20
- export type BuilderOnboardingAction = 'resume_prompt_decision' | 'android_sa_method_selected' | 'android_sa_validation_recovery_selected' | 'android_sa_validation_result';
20
+ export type BuilderOnboardingAction = 'resume_prompt_decision' | 'question_shown' | 'question_answered' | 'android_sa_method_selected' | 'android_sa_validation_recovery_selected' | 'android_sa_validation_result';
21
21
  export interface TrackBuilderOnboardingActionInput {
22
22
  apikey: string;
23
23
  appId: string;
@@ -4,10 +4,9 @@ import type { OnboardingBeforeExit } from './exit.js';
4
4
  interface AppProps {
5
5
  /**
6
6
  * Capgo lookup key (progress files, saved credentials, Capgo SaaS build
7
- * API). Resolved by `getAppId()`, which prefers
8
- * `config.plugins.CapacitorUpdater.appId` over `config.appId` so dev-tunnel
9
- * sandboxes can override the Capgo-side identifier without renaming the
10
- * iOS bundle. Do NOT use for Apple-side operations — see
7
+ * API). Resolved by the Builder app-id helper, which uses
8
+ * `plugins.CapgoBuilder.capgoBuilderAppId` when configured and otherwise
9
+ * keeps the prior updater/native fallback. Do NOT use for Apple-side operations — see
11
10
  * `iosBundleIdInitial`.
12
11
  */
13
12
  appId: string;
@@ -4,6 +4,7 @@ import type { MigrationScope } from '../appflow/types.js';
4
4
  import type { OnboardingBeforeExit } from './exit.js';
5
5
  export interface AppflowAppProps {
6
6
  appId: string;
7
+ packageName?: string;
7
8
  /** Migration scope ('ios' | 'android') from the single-platform "migrating from Appflow?" gate. */
8
9
  scope: MigrationScope;
9
10
  apikey?: string;
@@ -10,12 +10,14 @@ export interface OnboardingShellProps {
10
10
  /**
11
11
  * iOS-side bundle id default — sourced from `config.appId` (top-level), which
12
12
  * is what `cap sync` writes into `PRODUCT_BUNDLE_IDENTIFIER`. Distinct from
13
- * `appId` above, which `getAppId()` may resolve to
13
+ * `appId` above, which the Builder resolver may resolve to
14
14
  * `config.plugins.CapacitorUpdater.appId` (a Capgo lookup key — wrong for
15
15
  * Apple signing). Threaded down to the iOS OnboardingApp; the Android app
16
16
  * ignores it.
17
17
  */
18
18
  iosBundleIdInitial: string;
19
+ /** Android package name for Appflow validation; defaults to the legacy Capgo key. */
20
+ appflowPackageName?: string;
19
21
  iosDir: string;
20
22
  androidDir: string;
21
23
  /**
@@ -28,6 +28,7 @@ export declare function validateFlags(opts: Pick<PrescanCommandOptions, 'failOnW
28
28
  export declare function exitCodeFor(counts: Record<Severity, number>, opts: OutcomeOptions, findings?: PrescanReport['findings']): number;
29
29
  export interface PrescanExecution {
30
30
  report: PrescanReport;
31
+ appId: string;
31
32
  /** apikey actually used for the scan (flag or saved key); undefined when remote checks were skipped */
32
33
  apikey?: string;
33
34
  }
@@ -20,6 +20,8 @@ export interface Finding {
20
20
  }
21
21
  export interface ScanContext {
22
22
  appId: string;
23
+ /** Native bundle/package id for local checks; defaults to appId for legacy scans. */
24
+ nativeAppId?: string;
23
25
  platform: Platform;
24
26
  /** Operating system running the prescan, used for host-specific local checks. */
25
27
  hostPlatform: NodeJS.Platform;
@@ -0,0 +1,14 @@
1
+ import type { ExtConfigPairs } from '../config';
2
+ import type { OptionsUpload } from './upload_interface';
3
+ export declare function buildCordovaModeUploadExample(options: Pick<OptionsUpload, 'path' | 'channel'> & {
4
+ appId?: string;
5
+ }): string;
6
+ export declare function buildMissingCapacitorConfigUploadMessage(options: Pick<OptionsUpload, 'path' | 'channel'> & {
7
+ appId?: string;
8
+ }): string;
9
+ export declare function enhanceMissingCapacitorConfigUploadError(error: unknown, options: Pick<OptionsUpload, 'path' | 'channel'> & {
10
+ appId?: string;
11
+ }): never;
12
+ export declare function loadUploadProjectConfig(options: OptionsUpload, context?: {
13
+ appId?: string;
14
+ }): Promise<ExtConfigPairs>;
@@ -0,0 +1,9 @@
1
+ import type { ExtConfigPairs } from '../config';
2
+ export declare const CORDOVA_DEFAULT_WEB_DIR = "www";
3
+ export declare function findCordovaProjectRoot(startDir?: string): string;
4
+ export declare function collectCordovaAppIdCandidates(projectRoot?: string): string[];
5
+ export declare function resolveCordovaWebDir(path?: string): string;
6
+ export declare function buildCordovaUploadConfig(options: {
7
+ path?: string;
8
+ appId?: string;
9
+ }): ExtConfigPairs;
@@ -0,0 +1,2 @@
1
+ export declare const CLI_PROJECT_MODES: readonly ["cordova"];
2
+ export declare function isCordovaMode(mode?: string): boolean;
@@ -16,6 +16,9 @@ export declare const mcpDeleteAppInputSchema: z.ZodObject<{
16
16
  export declare const mcpUploadBundleInputSchema: z.ZodObject<{
17
17
  appId: z.ZodString;
18
18
  path: z.ZodString;
19
+ mode: z.ZodOptional<z.ZodEnum<{
20
+ cordova: "cordova";
21
+ }>>;
19
22
  bundle: z.ZodOptional<z.ZodString>;
20
23
  channel: z.ZodOptional<z.ZodString>;
21
24
  rollout: z.ZodOptional<z.ZodNumber>;
@@ -3,6 +3,9 @@ export declare const optionsUploadSchema: z.ZodObject<{
3
3
  apikey: z.ZodString;
4
4
  supaHost: z.ZodOptional<z.ZodString>;
5
5
  supaAnon: z.ZodOptional<z.ZodString>;
6
+ mode: z.ZodOptional<z.ZodEnum<{
7
+ cordova: "cordova";
8
+ }>>;
6
9
  bundle: z.ZodOptional<z.ZodString>;
7
10
  path: z.ZodOptional<z.ZodString>;
8
11
  channel: z.ZodOptional<z.ZodString>;
@@ -49,6 +49,9 @@ export type StarAllRepositoriesOptions = z.infer<typeof starAllRepositoriesOptio
49
49
  export declare const uploadOptionsSchema: z.ZodObject<{
50
50
  appId: z.ZodString;
51
51
  path: z.ZodString;
52
+ mode: z.ZodOptional<z.ZodEnum<{
53
+ cordova: "cordova";
54
+ }>>;
52
55
  bundle: z.ZodOptional<z.ZodString>;
53
56
  channel: z.ZodOptional<z.ZodString>;
54
57
  rollout: z.ZodOptional<z.ZodNumber>;