@keystrokehq/cli 0.1.126 → 0.1.128

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/index.mjs CHANGED
@@ -32,7 +32,7 @@ try {
32
32
  process.exitCode = 1;
33
33
  process.exit(1);
34
34
  }
35
- const { runCli } = await import("./program-CzabcFvC.mjs");
35
+ const { runCli } = await import("./program-BGCbhW03.mjs");
36
36
  await runCli(process.argv);
37
37
  //#endregion
38
38
  export {};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { _ as resolveCliRoot, a as formatReleaseAgeBlockMessage, g as readCliVersion, h as isNewerVersion, i as fetchLatestCliRelease, n as computeReleaseAgeRetryAfter, o as isReleaseAgeBlock, r as readPnpmMinimumReleaseAgeMinutes, s as detectCliInstall, t as runPackageManagerUpdate, y as getCliConfigDir } from "./run-package-manager-update-CBKJI6Fl.mjs";
2
+ import { _ as resolveCliRoot, a as formatReleaseAgeBlockMessage, g as readCliVersion, h as isNewerVersion, i as fetchLatestCliRelease, n as computeReleaseAgeRetryAfter, o as isReleaseAgeBlock, r as readPnpmMinimumReleaseAgeMinutes, s as detectCliInstall, t as runPackageManagerUpdate, y as getCliConfigDir } from "./run-package-manager-update-9llq8RCY.mjs";
3
3
  import { join } from "node:path";
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
5
  import { spawnSync } from "node:child_process";
@@ -136,4 +136,4 @@ async function maybeAutoUpdate(argv) {
136
136
  //#endregion
137
137
  export { maybeAutoUpdate };
138
138
 
139
- //# sourceMappingURL=maybe-auto-update-CacZiAqV.mjs.map
139
+ //# sourceMappingURL=maybe-auto-update-D1ZTWXG5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"maybe-auto-update-CacZiAqV.mjs","names":[],"sources":["../src/update/update-block-cache.ts","../src/update/maybe-auto-update.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nimport { getCliConfigDir } from \"../config\";\n\nexport type UpdateBlockCache = {\n registryLatest?: string;\n blockedUntil?: string;\n lastFailedAt?: string;\n};\n\nconst CACHE_FILE = \"update-check.json\";\nconst GENERIC_RETRY_MS = 24 * 60 * 60 * 1000;\n\nfunction cachePath(configDir = getCliConfigDir()): string {\n return join(configDir, CACHE_FILE);\n}\n\nexport function readUpdateBlockCache(configDir?: string): UpdateBlockCache {\n const path = cachePath(configDir);\n if (!existsSync(path)) {\n return {};\n }\n\n try {\n return JSON.parse(readFileSync(path, \"utf8\")) as UpdateBlockCache;\n } catch {\n return {};\n }\n}\n\nexport function writeUpdateBlockCache(cache: UpdateBlockCache, configDir?: string): void {\n const dir = configDir ?? getCliConfigDir();\n mkdirSync(dir, { recursive: true });\n writeFileSync(cachePath(dir), `${JSON.stringify(cache, null, 2)}\\n`, \"utf8\");\n}\n\nexport function shouldSkipCachedUpdate(\n cache: UpdateBlockCache,\n registryLatest: string,\n now = Date.now(),\n): boolean {\n if (cache.registryLatest !== registryLatest) {\n return false;\n }\n\n if (cache.blockedUntil) {\n const blockedUntilMs = Date.parse(cache.blockedUntil);\n if (Number.isFinite(blockedUntilMs) && blockedUntilMs > now) {\n return true;\n }\n }\n\n if (cache.lastFailedAt) {\n const lastFailedMs = Date.parse(cache.lastFailedAt);\n if (Number.isFinite(lastFailedMs) && now - lastFailedMs < GENERIC_RETRY_MS) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function clearUpdateBlockCache(configDir?: string): void {\n writeUpdateBlockCache({}, configDir);\n}\n\nexport function recordReleaseAgeBlock(options: {\n registryLatest: string;\n retryAfter?: Date;\n configDir?: string;\n}): void {\n writeUpdateBlockCache(\n {\n registryLatest: options.registryLatest,\n blockedUntil: options.retryAfter?.toISOString(),\n },\n options.configDir,\n );\n}\n\nexport function recordGenericUpdateFailure(registryLatest: string, configDir?: string): void {\n writeUpdateBlockCache(\n {\n registryLatest,\n lastFailedAt: new Date().toISOString(),\n },\n configDir,\n );\n}\n","import { spawnSync } from \"node:child_process\";\n\nimport { resolveCliRoot } from \"../project/resolve-cli-root\";\nimport { readCliVersion } from \"../version\";\nimport { isNewerVersion } from \"./compare-version\";\nimport { detectCliInstall } from \"./detect-cli-install\";\nimport { formatReleaseAgeBlockMessage, isReleaseAgeBlock } from \"./detect-release-age-block\";\nimport { fetchLatestCliRelease } from \"./fetch-latest-version\";\nimport {\n computeReleaseAgeRetryAfter,\n readPnpmMinimumReleaseAgeMinutes,\n} from \"./read-pnpm-release-age-minutes\";\nimport { runPackageManagerUpdate } from \"./run-package-manager-update\";\nimport {\n clearUpdateBlockCache,\n readUpdateBlockCache,\n recordGenericUpdateFailure,\n recordReleaseAgeBlock,\n shouldSkipCachedUpdate,\n} from \"./update-block-cache\";\n\nfunction isTopLevelUpdateCommand(args: string[]): boolean {\n const valueFlags = new Set([\"--project\", \"--organization\", \"--dir\"]);\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === undefined) {\n return false;\n }\n\n if (arg === \"--\") {\n return args[i + 1] === \"update\";\n }\n\n if (arg.startsWith(\"-\")) {\n if (\n arg === \"--local\" ||\n arg === \"-h\" ||\n arg === \"--help\" ||\n arg === \"-V\" ||\n arg === \"--version\" ||\n arg.startsWith(\"-V\")\n ) {\n continue;\n }\n\n if (arg.includes(\"=\")) {\n continue;\n }\n\n if (valueFlags.has(arg) || arg.startsWith(\"--\")) {\n i++;\n }\n continue;\n }\n\n return arg === \"update\";\n }\n\n return false;\n}\n\nfunction shouldSkipAutoUpdate(argv: string[]): boolean {\n if (\n process.env.KEYSTROKE_DEV ||\n process.env.KEYSTROKE_SKIP_UPDATE ||\n process.env.KEYSTROKE_UPDATING\n ) {\n return true;\n }\n\n if (process.env.CI === \"true\" || process.env.CI === \"1\") {\n return true;\n }\n\n const args = argv.slice(2);\n if (args.length === 0) {\n return false;\n }\n\n // Explicit `keystroke update` owns CLI + project package updates.\n if (isTopLevelUpdateCommand(args)) {\n return true;\n }\n\n return args.every(\n (arg) =>\n arg === \"-V\" ||\n arg === \"--version\" ||\n arg === \"-h\" ||\n arg === \"--help\" ||\n arg.startsWith(\"-V\"),\n );\n}\n\nfunction reexecCli(argv: string[]): never {\n const result = spawnSync(process.execPath, argv.slice(1), {\n stdio: \"inherit\",\n env: {\n ...process.env,\n KEYSTROKE_UPDATING: \"1\",\n },\n });\n\n process.exit(result.status ?? 1);\n}\n\nfunction releaseAgeRetryAfter(\n install: NonNullable<ReturnType<typeof detectCliInstall>>,\n publishedAt: string | undefined,\n): Date | undefined {\n if (install.packageManager !== \"pnpm\") {\n return undefined;\n }\n\n return computeReleaseAgeRetryAfter(publishedAt, readPnpmMinimumReleaseAgeMinutes());\n}\n\nexport async function maybeAutoUpdate(argv: string[]): Promise<void> {\n if (shouldSkipAutoUpdate(argv)) {\n return;\n }\n\n const install = detectCliInstall(resolveCliRoot(import.meta.url));\n if (!install || (install.kind === \"local\" && !install.projectRoot)) {\n return;\n }\n\n const currentVersion = readCliVersion();\n const release = await fetchLatestCliRelease();\n\n if (!release || !isNewerVersion(release.version, currentVersion)) {\n clearUpdateBlockCache();\n return;\n }\n\n const cache = readUpdateBlockCache();\n if (shouldSkipCachedUpdate(cache, release.version)) {\n return;\n }\n\n process.stderr.write(\n `Updating @keystrokehq/cli ${currentVersion} -> ${release.version} via ${install.packageManager}...\\n`,\n );\n\n const result = runPackageManagerUpdate(install);\n const installedVersion = readCliVersion();\n\n if (isNewerVersion(installedVersion, currentVersion)) {\n clearUpdateBlockCache();\n process.stderr.write(`Updated @keystrokehq/cli ${currentVersion} -> ${installedVersion}.\\n`);\n reexecCli(argv);\n }\n\n if (result.ok) {\n clearUpdateBlockCache();\n return;\n }\n\n if (isReleaseAgeBlock(result.output)) {\n const retryAfter = releaseAgeRetryAfter(install, release.publishedAt);\n recordReleaseAgeBlock({\n registryLatest: release.version,\n retryAfter,\n });\n process.stderr.write(\n `${formatReleaseAgeBlockMessage({\n currentVersion,\n availableVersion: release.version,\n retryAfter,\n })}\\n`,\n );\n return;\n }\n\n recordGenericUpdateFailure(release.version);\n process.stderr.write(\"Auto-update failed; continuing with the current version.\\n\");\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"maybe-auto-update-D1ZTWXG5.mjs","names":[],"sources":["../src/update/update-block-cache.ts","../src/update/maybe-auto-update.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nimport { getCliConfigDir } from \"../config\";\n\nexport type UpdateBlockCache = {\n registryLatest?: string;\n blockedUntil?: string;\n lastFailedAt?: string;\n};\n\nconst CACHE_FILE = \"update-check.json\";\nconst GENERIC_RETRY_MS = 24 * 60 * 60 * 1000;\n\nfunction cachePath(configDir = getCliConfigDir()): string {\n return join(configDir, CACHE_FILE);\n}\n\nexport function readUpdateBlockCache(configDir?: string): UpdateBlockCache {\n const path = cachePath(configDir);\n if (!existsSync(path)) {\n return {};\n }\n\n try {\n return JSON.parse(readFileSync(path, \"utf8\")) as UpdateBlockCache;\n } catch {\n return {};\n }\n}\n\nexport function writeUpdateBlockCache(cache: UpdateBlockCache, configDir?: string): void {\n const dir = configDir ?? getCliConfigDir();\n mkdirSync(dir, { recursive: true });\n writeFileSync(cachePath(dir), `${JSON.stringify(cache, null, 2)}\\n`, \"utf8\");\n}\n\nexport function shouldSkipCachedUpdate(\n cache: UpdateBlockCache,\n registryLatest: string,\n now = Date.now(),\n): boolean {\n if (cache.registryLatest !== registryLatest) {\n return false;\n }\n\n if (cache.blockedUntil) {\n const blockedUntilMs = Date.parse(cache.blockedUntil);\n if (Number.isFinite(blockedUntilMs) && blockedUntilMs > now) {\n return true;\n }\n }\n\n if (cache.lastFailedAt) {\n const lastFailedMs = Date.parse(cache.lastFailedAt);\n if (Number.isFinite(lastFailedMs) && now - lastFailedMs < GENERIC_RETRY_MS) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function clearUpdateBlockCache(configDir?: string): void {\n writeUpdateBlockCache({}, configDir);\n}\n\nexport function recordReleaseAgeBlock(options: {\n registryLatest: string;\n retryAfter?: Date;\n configDir?: string;\n}): void {\n writeUpdateBlockCache(\n {\n registryLatest: options.registryLatest,\n blockedUntil: options.retryAfter?.toISOString(),\n },\n options.configDir,\n );\n}\n\nexport function recordGenericUpdateFailure(registryLatest: string, configDir?: string): void {\n writeUpdateBlockCache(\n {\n registryLatest,\n lastFailedAt: new Date().toISOString(),\n },\n configDir,\n );\n}\n","import { spawnSync } from \"node:child_process\";\n\nimport { resolveCliRoot } from \"../project/resolve-cli-root\";\nimport { readCliVersion } from \"../version\";\nimport { isNewerVersion } from \"./compare-version\";\nimport { detectCliInstall } from \"./detect-cli-install\";\nimport { formatReleaseAgeBlockMessage, isReleaseAgeBlock } from \"./detect-release-age-block\";\nimport { fetchLatestCliRelease } from \"./fetch-latest-version\";\nimport {\n computeReleaseAgeRetryAfter,\n readPnpmMinimumReleaseAgeMinutes,\n} from \"./read-pnpm-release-age-minutes\";\nimport { runPackageManagerUpdate } from \"./run-package-manager-update\";\nimport {\n clearUpdateBlockCache,\n readUpdateBlockCache,\n recordGenericUpdateFailure,\n recordReleaseAgeBlock,\n shouldSkipCachedUpdate,\n} from \"./update-block-cache\";\n\nfunction isTopLevelUpdateCommand(args: string[]): boolean {\n const valueFlags = new Set([\"--project\", \"--organization\", \"--dir\"]);\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg === undefined) {\n return false;\n }\n\n if (arg === \"--\") {\n return args[i + 1] === \"update\";\n }\n\n if (arg.startsWith(\"-\")) {\n if (\n arg === \"--local\" ||\n arg === \"-h\" ||\n arg === \"--help\" ||\n arg === \"-V\" ||\n arg === \"--version\" ||\n arg.startsWith(\"-V\")\n ) {\n continue;\n }\n\n if (arg.includes(\"=\")) {\n continue;\n }\n\n if (valueFlags.has(arg) || arg.startsWith(\"--\")) {\n i++;\n }\n continue;\n }\n\n return arg === \"update\";\n }\n\n return false;\n}\n\nfunction shouldSkipAutoUpdate(argv: string[]): boolean {\n if (\n process.env.KEYSTROKE_DEV ||\n process.env.KEYSTROKE_SKIP_UPDATE ||\n process.env.KEYSTROKE_UPDATING\n ) {\n return true;\n }\n\n if (process.env.CI === \"true\" || process.env.CI === \"1\") {\n return true;\n }\n\n const args = argv.slice(2);\n if (args.length === 0) {\n return false;\n }\n\n // Explicit `keystroke update` owns CLI + project package updates.\n if (isTopLevelUpdateCommand(args)) {\n return true;\n }\n\n return args.every(\n (arg) =>\n arg === \"-V\" ||\n arg === \"--version\" ||\n arg === \"-h\" ||\n arg === \"--help\" ||\n arg.startsWith(\"-V\"),\n );\n}\n\nfunction reexecCli(argv: string[]): never {\n const result = spawnSync(process.execPath, argv.slice(1), {\n stdio: \"inherit\",\n env: {\n ...process.env,\n KEYSTROKE_UPDATING: \"1\",\n },\n });\n\n process.exit(result.status ?? 1);\n}\n\nfunction releaseAgeRetryAfter(\n install: NonNullable<ReturnType<typeof detectCliInstall>>,\n publishedAt: string | undefined,\n): Date | undefined {\n if (install.packageManager !== \"pnpm\") {\n return undefined;\n }\n\n return computeReleaseAgeRetryAfter(publishedAt, readPnpmMinimumReleaseAgeMinutes());\n}\n\nexport async function maybeAutoUpdate(argv: string[]): Promise<void> {\n if (shouldSkipAutoUpdate(argv)) {\n return;\n }\n\n const install = detectCliInstall(resolveCliRoot(import.meta.url));\n if (!install || (install.kind === \"local\" && !install.projectRoot)) {\n return;\n }\n\n const currentVersion = readCliVersion();\n const release = await fetchLatestCliRelease();\n\n if (!release || !isNewerVersion(release.version, currentVersion)) {\n clearUpdateBlockCache();\n return;\n }\n\n const cache = readUpdateBlockCache();\n if (shouldSkipCachedUpdate(cache, release.version)) {\n return;\n }\n\n process.stderr.write(\n `Updating @keystrokehq/cli ${currentVersion} -> ${release.version} via ${install.packageManager}...\\n`,\n );\n\n const result = runPackageManagerUpdate(install);\n const installedVersion = readCliVersion();\n\n if (isNewerVersion(installedVersion, currentVersion)) {\n clearUpdateBlockCache();\n process.stderr.write(`Updated @keystrokehq/cli ${currentVersion} -> ${installedVersion}.\\n`);\n reexecCli(argv);\n }\n\n if (result.ok) {\n clearUpdateBlockCache();\n return;\n }\n\n if (isReleaseAgeBlock(result.output)) {\n const retryAfter = releaseAgeRetryAfter(install, release.publishedAt);\n recordReleaseAgeBlock({\n registryLatest: release.version,\n retryAfter,\n });\n process.stderr.write(\n `${formatReleaseAgeBlockMessage({\n currentVersion,\n availableVersion: release.version,\n retryAfter,\n })}\\n`,\n );\n return;\n }\n\n recordGenericUpdateFailure(release.version);\n process.stderr.write(\"Auto-update failed; continuing with the current version.\\n\");\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { $ as CredentialInstanceListResponseSchema, $n as UpsertGatewayAttachmentBodySchema, $t as PresignChatAttachmentResponseSchema, A as ConnectAuthorizeUrlResponseSchema, An as StartOAuthConnectionResultSchema, At as ListAppsResponseSchema, B as CreateCustomAppRequestSchema, Bn as UpdateChannelBindingBodySchema, Bt as ListProjectFilesResponseSchema, C as ChannelAccountListResponseSchema, Cn as SkillSummaryListResponseSchema, Cr as buildConnectDeeplink, Ct as InviteOrganizationMembersResponseSchema, D as CompleteProjectArtifactResponseSchema, Dn as StartMcpOAuthConnectionInputSchema, Dr as isAcceptableInstallExit, Dt as ListAgentMemoryFilesResponseSchema, E as ChannelDirectoryListResponseSchema, En as StartKeystrokeConnectionResultSchema, Er as detectProjectPackageManagerFromSnapshot, F as CreateBillingPortalRequestSchema, Fn as TriggerInvokeResponseSchema, Fr as resolveConnectAppSlug, Ft as ListOrganizationInvitationsResponseSchema, G as CreateProjectRequestSchema, Gn as UpdateOrganizationMemberResponseSchema, Gt as ManagedServiceKindSchema, H as CreateOrganizationRequestSchema, Hn as UpdateCredentialRequestSchema, Ht as ListProjectMetricsResponseSchema, I as CreateCredentialInstanceBodySchema, In as TriggerListResponseSchema, Ir as resolveDocsMcpUrl, It as ListOrganizationMembersPageQuerySchema, J as CredentialAssignmentListQuerySchema, Jn as UpdateProjectMemberResponseSchema, Jt as OrganizationSidebarBrandingPatchSchema, K as CreateProjectResponseSchema, Kn as UpdateOrganizationRequestSchema, Kt as McpDiscoverResponseSchema, L as CreateCredentialsRequestSchema, Ln as TriggerRunDetailResponseSchema, Lr as resolvePublicPlatformOrigin, Lt as ListOrganizationMembersPageResponseSchema, M as ConnectProvidersResponseSchema, Mn as SubmitTeamRequestRequestSchema, Mr as parseErrorResponse, Mt as ListCredentialsPageQuerySchema, N as CreateApiKeyRequestSchema, Nn as TriggerDetailResponseSchema, Nt as ListCredentialsPageResponseSchema, O as ConfirmCheckoutRequestSchema, On as StartMcpOAuthConnectionResultSchema, Or as listenPortFromPublicUrl, Ot as ListAgentWorkspaceFilesResponseSchema, P as CreateApiKeyResponseSchema, Pn as TriggerInvokeInputsSchema, Pt as ListManagedServiceCredentialsResponseSchema, Q as CredentialConsumerListResponseSchema, Qn as UploadProjectSourceResponseSchema, Qt as PresignChatAttachmentRequestSchema, R as CreateCredentialsResponseSchema, Rn as TriggerRunListResponseSchema, Rr as slugifyAppName, Rt as ListOrganizationsResponseSchema, S as CatalogAppsPageResponseSchema, Sn as SkillSummaryDetailResponseSchema, Sr as WorkspaceWorkflowOverviewSchema, St as InviteOrganizationMembersRequestSchema, T as ChannelConnectionSchema, Tn as StartKeystrokeConnectionInputSchema, Tr as deriveCustomAppDisplay, Tt as InviteProjectMembersResponseSchema, U as CreateOrganizationResponseSchema, Un as UpdateManagedServiceCredentialRequestSchema, Ut as ListProjectsResponseSchema, V as CreateCustomAppResponseSchema, Vn as UpdateCredentialInstanceBodySchema, Vt as ListProjectMembersResponseSchema, W as CreateProjectArtifactResponseSchema, Wn as UpdateOrganizationMemberRequestSchema, Wt as ManagedServiceCredentialSchema, X as CredentialAssignmentRecordSchema, Xn as UpdateProjectSettingsRequestSchema, Xt as PROJECT_PULL_STATE_RELATIVE_PATH, Y as CredentialAssignmentListResponseSchema, Yn as UpdateProjectRequestSchema, Yt as OrganizationSidebarBrandingSchema, Z as CredentialConsumerListQuerySchema, Zn as UploadProjectSourceManifestRequestSchema, Zt as PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS, _ as BindChannelBodySchema, _n as PublishedFormSchema, _r as WorkspaceTriggerDetailSchema, _t as HealthResponseSchema, a as AgentSessionListResponseSchema, an as PresignUserAvatarResponseSchema, ar as WorkflowCanvasRunSchema, at as DownloadActiveProjectArtifactResponseSchema, b as CatalogActionsPageResponseSchema, br as WorkspaceTriggerOverviewSchema, bt as HistoryRunListQuerySchema, c as AgentTriggerSummaryListResponseSchema, cn as ProjectResponseSchema, cr as WorkflowFormUpsertBodySchema, ct as DuplicateCredentialsResponseSchema, d as AutoTopupSummarySchema, dn as PromptInputSchema, dr as WorkflowRunInputsPutBodySchema, dt as FormFieldConfigSchema, en as PresignOrgLogoRequestSchema, er as UserAvatarPatchSchema, et as CredentialInstanceRecordSchema, f as BillingActivityResponseSchema, fn as PromptResponseSchema, fr as WorkflowRunInputsSchema, ft as GatewayAttachmentRecordSchema, g as BillingUsageResponseSchema, gr as WorkflowSummaryListResponseSchema, gt as GraphqlDiscoverResponseSchema, h as BillingSummaryResponseSchema, hn as PublicFormSubmitResponseSchema, hr as WorkflowSummaryDetailResponseSchema, ht as GetCustomAppResponseSchema, i as AgentSessionDetailResponseSchema, in as PresignUserAvatarRequestSchema, ir as WorkflowCanvasCredentialBindingsSchema, it as DeclineOrganizationInvitationResponseSchema, j as ConnectManagedServiceCredentialRequestSchema, jn as SubmitMarketingContactRequestSchema, jr as parseAppSlug, jt as ListChannelPlatformsResponseSchema, k as ConfirmCheckoutResponseSchema, kn as StartOAuthConnectionInputSchema, kt as ListApiKeysResponseSchema, l as AppSlugAvailabilityResponseSchema, ln as ProjectSettingsResponseSchema, lr as WorkflowRunDetailResponseSchema, lt as ExecuteKeystrokeToolRequestSchema, m as BillingRedirectResponseSchema, mn as PublicFormSubmitBodySchema, mr as WorkflowRunResponseSchema, mt as GetCredentialResponseSchema, n as AcceptOrganizationInvitationResponseSchema, nn as PresignProjectSourceRequestSchema, nr as UserPreferencesPatchSchema, nt as DOCS_QUERY_TOOL, o as AgentSummaryDetailResponseSchema, on as ProjectPullStateSchema, or as WorkflowCanvasSchema, ot as DownloadActiveProjectSourceResponseSchema, p as BillingInvoiceUrlResponseSchema, pn as PublicFormMetadataSchema, pr as WorkflowRunListResponseSchema, pt as GetAppCatalogEntryResponseSchema, q as CreateSubscriptionCheckoutRequestSchema, qn as UpdateProjectMemberRequestSchema, qt as OpenApiDiscoverResponseSchema, r as ActiveOrganizationResponseSchema, rn as PresignProjectSourceResponseSchema, rr as UserPreferencesSchema, rt as DOCS_SEARCH_TOOL, s as AgentSummaryListResponseSchema, sn as ProjectReachabilityResponseSchema, sr as WorkflowFormResponseSchema, st as DuplicateCredentialRequestSchema, t as ACTIVE_ORG_HEADER, tn as PresignOrgLogoResponseSchema, tr as UserAvatarSchema, u as AssignCredentialBodySchema, un as ProjectSlugAvailabilityResponseSchema, ur as WorkflowRunHooksResponseSchema, v as CLIENT_CHANNEL_HEADER, vn as QueuedAgentPromptResponseSchema, vr as WorkspaceTriggerFileSchema, vt as HistoryRunCancelResponseSchema, w as ChannelConnectionListResponseSchema, wn as SlugAvailabilityResponseSchema, wt as InviteProjectMembersRequestSchema, x as CatalogAppDetailResponseSchema, xn as RecentResourceListResponseSchema, xr as WorkspaceTriggerRunListResponseSchema, xt as HistoryRunListResponseSchema, y as CatalogActionDetailResponseSchema, yn as QueuedRunResponseSchema, yr as WorkspaceTriggerListResponseSchema, yt as HistoryRunDetailResponseSchema, z as CreateCreditsCheckoutRequestSchema, zn as UpdateAutoTopupRequestSchema, zt as ListProjectDeploymentsResponseSchema } from "./dist-B48EHpH2.mjs";
3
- import { a as alias, c as event, i as packProjectArtifact, l as flushTelemetry, n as withMcpReadClient, o as captureException, r as mergeFilteredArtifact, s as configureTelemetry, t as mapInParallelBatches, u as shutdownTelemetry } from "./dist-DlXOuU_e.mjs";
4
- import { C as getWebUrl, E as resolvePlatformUrlForWebUrl, S as getPlatformUrl, _ as resolveCliRoot, a as formatReleaseAgeBlockMessage, b as getConfigDir, c as detectManagerFromLockfile, d as installDependencies$1, f as installPlaygroundDependencies, g as readCliVersion, h as isNewerVersion, i as fetchLatestCliRelease, l as buildPlaygroundWorkspace, m as resolvePackageManager, n as computeReleaseAgeRetryAfter, o as isReleaseAgeBlock, p as resolveGithubPackagesToken, r as readPnpmMinimumReleaseAgeMinutes, s as detectCliInstall, t as runPackageManagerUpdate, u as detectPackageManager, v as createCliConfig, w as DEFAULT_PLATFORM_URL, x as getEffectiveApiTarget, y as getCliConfigDir } from "./run-package-manager-update-CBKJI6Fl.mjs";
2
+ import { $ as CredentialInstanceListResponseSchema, $n as UpdateProjectRequestSchema, $t as PROJECT_REACHABILITY_REQUEST_TIMEOUT_MS, A as ConnectAuthorizeUrlResponseSchema, An as StartKeystrokeConnectionResultSchema, Ar as detectProjectPackageManagerFromSnapshot, At as ListAgentWorkspaceFilesResponseSchema, B as CreateCustomAppRequestSchema, Bn as TriggerListResponseSchema, Br as resolveDocsMcpUrl, Bt as ListOrganizationsResponseSchema, C as ChannelAccountListResponseSchema, Cn as QueuedRunResponseSchema, Cr as WorkspaceTriggerListResponseSchema, Ct as HistoryRunListResponseSchema, D as CompleteProjectArtifactResponseSchema, Dn as SkillSummaryListResponseSchema, Dr as buildConnectDeeplink, Dt as InviteProjectMembersResponseSchema, E as ChannelDirectoryListResponseSchema, En as SkillSummaryDetailResponseSchema, Er as WorkspaceWorkflowOverviewSchema, Et as InviteProjectMembersRequestSchema, F as CreateBillingPortalRequestSchema, Fn as SubmitMarketingContactRequestSchema, Fr as parseAppSlug, Ft as ListCredentialsPageResponseSchema, G as CreateProjectRequestSchema, Gn as UpdateCredentialInstanceBodySchema, Gt as ListProjectsResponseSchema, H as CreateOrganizationRequestSchema, Hn as TriggerRunListResponseSchema, Hr as slugifyAppName, Ht as ListProjectFilesResponseSchema, I as CreateCredentialInstanceBodySchema, In as SubmitTeamRequestRequestSchema, Ir as parseErrorResponse, It as ListManagedServiceCredentialsResponseSchema, J as CredentialAssignmentListQuerySchema, Jn as UpdateOrganizationMemberRequestSchema, Jt as McpDiscoverResponseSchema, K as CreateProjectResponseSchema, Kn as UpdateCredentialRequestSchema, Kt as ManagedServiceCredentialSchema, L as CreateCredentialsRequestSchema, Ln as TriggerDetailResponseSchema, Lt as ListOrganizationInvitationsResponseSchema, M as ConnectProvidersResponseSchema, Mn as StartMcpOAuthConnectionResultSchema, Mr as listenPortFromPublicUrl, Mt as ListAppsResponseSchema, N as CreateApiKeyRequestSchema, Nn as StartOAuthConnectionInputSchema, Nt as ListChannelPlatformsResponseSchema, O as ConfirmCheckoutRequestSchema, On as SlugAvailabilityResponseSchema, P as CreateApiKeyResponseSchema, Pn as StartOAuthConnectionResultSchema, Pt as ListCredentialsPageQuerySchema, Q as CredentialConsumerListResponseSchema, Qn as UpdateProjectMemberResponseSchema, Qt as PROJECT_PULL_STATE_RELATIVE_PATH, R as CreateCredentialsResponseSchema, Rn as TriggerInvokeInputsSchema, Rt as ListOrganizationMembersPageQuerySchema, S as CatalogAppsPageResponseSchema, Sn as QueuedAgentPromptResponseSchema, Sr as WorkspaceTriggerFileSchema, St as HistoryRunListQuerySchema, T as ChannelConnectionSchema, Tn as RecentResourceListResponseSchema, Tr as WorkspaceTriggerRunListResponseSchema, Tt as InviteOrganizationMembersResponseSchema, U as CreateOrganizationResponseSchema, Un as UpdateAutoTopupRequestSchema, Ut as ListProjectMembersResponseSchema, V as CreateCustomAppResponseSchema, Vn as TriggerRunDetailResponseSchema, Vr as resolvePublicPlatformOrigin, Vt as ListProjectDeploymentsResponseSchema, W as CreateProjectArtifactResponseSchema, Wn as UpdateChannelBindingBodySchema, Wt as ListProjectMetricsResponseSchema, X as CredentialAssignmentRecordSchema, Xn as UpdateOrganizationRequestSchema, Xt as OrganizationSidebarBrandingPatchSchema, Y as CredentialAssignmentListResponseSchema, Yn as UpdateOrganizationMemberResponseSchema, Yt as OpenApiDiscoverResponseSchema, Z as CredentialConsumerListQuerySchema, Zn as UpdateProjectMemberRequestSchema, Zt as OrganizationSidebarBrandingSchema, _ as BindChannelBodySchema, _n as PublicFormMetadataSchema, _r as WorkflowRunListResponseSchema, _t as GetCustomAppResponseSchema, a as AgentSessionListResponseSchema, an as PresignOrgLogoResponseSchema, ar as UserAvatarSchema, at as DownloadActiveProjectArtifactResponseSchema, b as CatalogActionsPageResponseSchema, br as WorkflowSummaryListResponseSchema, bt as HistoryRunCancelResponseSchema, c as AgentTriggerSummaryListResponseSchema, cn as PresignUserAvatarRequestSchema, cr as WorkflowCanvasCredentialBindingsSchema, ct as DuplicateCredentialsResponseSchema, d as AutoTopupSummarySchema, dn as ProjectReachabilityResponseSchema, dr as WorkflowFormResponseSchema, dt as FinalizeCustomAppLogoRequestSchema, en as PresignChatAttachmentRequestSchema, er as UpdateProjectSettingsRequestSchema, et as CredentialInstanceRecordSchema, f as BillingActivityResponseSchema, fn as ProjectResponseSchema, fr as WorkflowFormUpsertBodySchema, ft as FinalizeCustomAppLogoResponseSchema, g as BillingUsageResponseSchema, gn as PromptResponseSchema, gr as WorkflowRunInputsSchema, gt as GetCredentialResponseSchema, h as BillingSummaryResponseSchema, hn as PromptInputSchema, hr as WorkflowRunInputsPutBodySchema, ht as GetAppCatalogEntryResponseSchema, i as AgentSessionDetailResponseSchema, in as PresignOrgLogoRequestSchema, ir as UserAvatarPatchSchema, it as DeclineOrganizationInvitationResponseSchema, j as ConnectManagedServiceCredentialRequestSchema, jn as StartMcpOAuthConnectionInputSchema, jr as isAcceptableInstallExit, jt as ListApiKeysResponseSchema, k as ConfirmCheckoutResponseSchema, kn as StartKeystrokeConnectionInputSchema, kr as deriveCustomAppDisplay, kt as ListAgentMemoryFilesResponseSchema, l as AppSlugAvailabilityResponseSchema, ln as PresignUserAvatarResponseSchema, lr as WorkflowCanvasRunSchema, lt as ExecuteKeystrokeToolRequestSchema, m as BillingRedirectResponseSchema, mn as ProjectSlugAvailabilityResponseSchema, mr as WorkflowRunHooksResponseSchema, mt as GatewayAttachmentRecordSchema, n as AcceptOrganizationInvitationResponseSchema, nn as PresignCustomAppLogoRequestSchema, nr as UploadProjectSourceResponseSchema, nt as DOCS_QUERY_TOOL, o as AgentSummaryDetailResponseSchema, on as PresignProjectSourceRequestSchema, or as UserPreferencesPatchSchema, ot as DownloadActiveProjectSourceResponseSchema, p as BillingInvoiceUrlResponseSchema, pn as ProjectSettingsResponseSchema, pr as WorkflowRunDetailResponseSchema, pt as FormFieldConfigSchema, q as CreateSubscriptionCheckoutRequestSchema, qn as UpdateManagedServiceCredentialRequestSchema, qt as ManagedServiceKindSchema, r as ActiveOrganizationResponseSchema, rn as PresignCustomAppLogoResponseSchema, rr as UpsertGatewayAttachmentBodySchema, rt as DOCS_SEARCH_TOOL, s as AgentSummaryListResponseSchema, sn as PresignProjectSourceResponseSchema, sr as UserPreferencesSchema, st as DuplicateCredentialRequestSchema, t as ACTIVE_ORG_HEADER, tn as PresignChatAttachmentResponseSchema, tr as UploadProjectSourceManifestRequestSchema, u as AssignCredentialBodySchema, un as ProjectPullStateSchema, ur as WorkflowCanvasSchema, v as CLIENT_CHANNEL_HEADER, vn as PublicFormSubmitBodySchema, vr as WorkflowRunResponseSchema, vt as GraphqlDiscoverResponseSchema, w as ChannelConnectionListResponseSchema, wr as WorkspaceTriggerOverviewSchema, wt as InviteOrganizationMembersRequestSchema, x as CatalogAppDetailResponseSchema, xn as PublishedFormSchema, xr as WorkspaceTriggerDetailSchema, xt as HistoryRunDetailResponseSchema, y as CatalogActionDetailResponseSchema, yn as PublicFormSubmitResponseSchema, yr as WorkflowSummaryDetailResponseSchema, yt as HealthResponseSchema, z as CreateCreditsCheckoutRequestSchema, zn as TriggerInvokeResponseSchema, zr as resolveConnectAppSlug, zt as ListOrganizationMembersPageResponseSchema } from "./dist-Dq6QY3Cs.mjs";
3
+ import { a as alias, c as event, i as packProjectArtifact, l as flushTelemetry, n as withMcpReadClient, o as captureException, r as mergeFilteredArtifact, s as configureTelemetry, t as mapInParallelBatches, u as shutdownTelemetry } from "./dist-Jqyy3_5E.mjs";
4
+ import { C as getWebUrl, E as resolvePlatformUrlForWebUrl, S as getPlatformUrl, _ as resolveCliRoot, a as formatReleaseAgeBlockMessage, b as getConfigDir, c as detectManagerFromLockfile, d as installDependencies$1, f as installPlaygroundDependencies, g as readCliVersion, h as isNewerVersion, i as fetchLatestCliRelease, l as buildPlaygroundWorkspace, m as resolvePackageManager, n as computeReleaseAgeRetryAfter, o as isReleaseAgeBlock, p as resolveGithubPackagesToken, r as readPnpmMinimumReleaseAgeMinutes, s as detectCliInstall, t as runPackageManagerUpdate, u as detectPackageManager, v as createCliConfig, w as DEFAULT_PLATFORM_URL, x as getEffectiveApiTarget, y as getCliConfigDir } from "./run-package-manager-update-9llq8RCY.mjs";
5
5
  import { createRequire } from "node:module";
6
6
  import { Command } from "commander";
7
7
  import { platform, release } from "node:os";
@@ -5066,6 +5066,33 @@ function createUserAvatarResource(http) {
5066
5066
  }
5067
5067
  };
5068
5068
  }
5069
+ function createCustomAppLogoResource(http) {
5070
+ async function presignUpload(contentType) {
5071
+ const body = PresignCustomAppLogoRequestSchema.parse({ contentType });
5072
+ const data = await http.post("/api/apps/logo/presign", { json: body }).json();
5073
+ return PresignCustomAppLogoResponseSchema.parse(data);
5074
+ }
5075
+ async function finalize(storageKey) {
5076
+ const body = FinalizeCustomAppLogoRequestSchema.parse({ storageKey });
5077
+ try {
5078
+ const data = await http.post("/api/apps/logo", { json: body }).json();
5079
+ return FinalizeCustomAppLogoResponseSchema.parse(data);
5080
+ } catch (error) {
5081
+ throw await toPlatformError(error);
5082
+ }
5083
+ }
5084
+ return {
5085
+ /** Upload an image to keystroke-assets and return its public logo URL. */
5086
+ async upload(file) {
5087
+ return presignPutAndFinalize({
5088
+ file,
5089
+ presign: presignUpload,
5090
+ finalize,
5091
+ uploadFailedMessage: "Logo upload failed",
5092
+ toPlatformError
5093
+ });
5094
+ } };
5095
+ }
5069
5096
  function createChannelsResource(http) {
5070
5097
  const projectPrefix = (projectId) => `/api/projects/${encodeURIComponent(projectId)}`;
5071
5098
  return {
@@ -5199,6 +5226,7 @@ function createPlatformClient(options) {
5199
5226
  recents: createRecentsResource(http),
5200
5227
  userPreferences: createUserPreferencesResource(http),
5201
5228
  userAvatar: createUserAvatarResource(http),
5229
+ customAppLogo: createCustomAppLogoResource(http),
5202
5230
  organizationSidebarBranding: createOrganizationSidebarBrandingResource(http, { getActiveOrganizationId: resolveActiveOrganizationId }),
5203
5231
  teamRequests: createTeamRequestsResource(http),
5204
5232
  marketingContact: createMarketingContactResource(http),
@@ -6291,38 +6319,47 @@ async function handleManagedServicesError(fallback, action) {
6291
6319
  process.exitCode = 1;
6292
6320
  }
6293
6321
  }
6322
+ function parseManagedServiceKind(kind) {
6323
+ const parsed = ManagedServiceKindSchema.safeParse(kind);
6324
+ if (!parsed.success) {
6325
+ const validKinds = ManagedServiceKindSchema.options.join(", ");
6326
+ throw new Error(`Invalid --kind "${kind}". Expected one of: ${validKinds}`);
6327
+ }
6328
+ return parsed.data;
6329
+ }
6330
+ function requireNonEmpty(value, label) {
6331
+ const trimmed = value.trim();
6332
+ if (!trimmed) throw new Error(`${label} is required`);
6333
+ return trimmed;
6334
+ }
6294
6335
  function registerManagedServicesCommand(program) {
6295
6336
  const managedServices = program.command("managed-services").description("Manage organization managed service credentials");
6296
6337
  managedServices.command("list").description("List connected managed service credentials").option("--kind <kind>", "Managed service kind", "llm").action(async (options) => {
6297
6338
  const config = createCliConfig();
6298
- const kind = ManagedServiceKindSchema.parse(options.kind);
6299
6339
  await handleManagedServicesError("List managed services failed", async () => {
6300
- await runManagedServicesList(config, kind);
6340
+ await runManagedServicesList(config, parseManagedServiceKind(options.kind));
6301
6341
  });
6302
6342
  });
6303
6343
  managedServices.command("connect").description("Connect a managed service provider with your API key").argument("<provider>", "Provider slug (openai, anthropic, google, groq, xai)").requiredOption("--api-key <key>", "Provider API key").option("--kind <kind>", "Managed service kind", "llm").action(async (provider, options) => {
6304
6344
  const config = createCliConfig();
6305
- const kind = ManagedServiceKindSchema.parse(options.kind);
6306
6345
  await handleManagedServicesError("Connect managed service failed", async () => {
6307
6346
  await runManagedServicesConnect(config, {
6308
- kind,
6309
- provider,
6310
- apiKey: options.apiKey
6347
+ kind: parseManagedServiceKind(options.kind),
6348
+ provider: requireNonEmpty(provider, "Provider"),
6349
+ apiKey: requireNonEmpty(options.apiKey, "--api-key")
6311
6350
  });
6312
6351
  });
6313
6352
  });
6314
6353
  managedServices.command("update").description("Rotate the API key for a connected provider").argument("<provider>", "Provider slug (openai, anthropic, google, groq, xai)").requiredOption("--api-key <key>", "Provider API key").option("--kind <kind>", "Managed service kind", "llm").action(async (provider, options) => {
6315
6354
  const config = createCliConfig();
6316
- const kind = ManagedServiceKindSchema.parse(options.kind);
6317
6355
  await handleManagedServicesError("Update managed service failed", async () => {
6318
- await runManagedServicesUpdate(config, provider, { apiKey: options.apiKey }, kind);
6356
+ await runManagedServicesUpdate(config, requireNonEmpty(provider, "Provider"), { apiKey: requireNonEmpty(options.apiKey, "--api-key") }, parseManagedServiceKind(options.kind));
6319
6357
  });
6320
6358
  });
6321
6359
  managedServices.command("disconnect").description("Disconnect a managed service provider").argument("<provider>", "Provider slug (openai, anthropic, google, groq, xai)").option("--kind <kind>", "Managed service kind", "llm").action(async (provider, options) => {
6322
6360
  const config = createCliConfig();
6323
- const kind = ManagedServiceKindSchema.parse(options.kind);
6324
6361
  await handleManagedServicesError("Disconnect managed service failed", async () => {
6325
- await runManagedServicesDisconnect(config, provider, kind);
6362
+ await runManagedServicesDisconnect(config, requireNonEmpty(provider, "Provider"), parseManagedServiceKind(options.kind));
6326
6363
  });
6327
6364
  });
6328
6365
  }
@@ -6566,6 +6603,7 @@ function buildCreateRequest(input, template) {
6566
6603
  source: input.source,
6567
6604
  url: input.url,
6568
6605
  authKind,
6606
+ ...input.logo ? { logo: input.logo } : {},
6569
6607
  ...input.fields ? { fields: input.fields } : template.credentialFields ? { fields: template.credentialFields } : {},
6570
6608
  ...template.credentialScheme ? { credentialScheme: template.credentialScheme } : {},
6571
6609
  ...authKind === "oauth" && template.oauthScopes.length > 0 ? { oauthScopes: template.oauthScopes } : {}
@@ -6609,16 +6647,29 @@ function parseAuthKind(value) {
6609
6647
  if (value === "oauth" || value === "api_key") return value;
6610
6648
  throw new Error("--auth must be oauth or api_key");
6611
6649
  }
6650
+ function parseLogoUrl(value) {
6651
+ const trimmed = value?.trim();
6652
+ if (!trimmed) return;
6653
+ try {
6654
+ const url = new URL(trimmed);
6655
+ if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error("--logo must be an http(s) URL");
6656
+ return url.href;
6657
+ } catch (error) {
6658
+ if (error instanceof Error && error.message.startsWith("--logo")) throw error;
6659
+ throw new Error("--logo must be a valid URL");
6660
+ }
6661
+ }
6612
6662
  function parseFieldOverrides(flags) {
6613
6663
  if (flags.length === 0) return;
6614
6664
  return parseCustomAppFields(flags);
6615
6665
  }
6616
6666
  function registerAppCreateCommand(app) {
6617
- app.command("create").description("Create a custom org app").option("--name <name>", "App display name").option("--slug <slug>", "App slug segment (defaults from name)").option("--description <description>", "App description (defaults to --name)").option("--field <field>", "Credential field as key, key:secret, key:optional, or key:secret:optional (repeatable)", collectValues$3, []).option("--mcp <url>", "Create from an MCP server URL (auto-detect auth)").option("--openapi <url>", "Create from an OpenAPI spec URL (auto-detect auth)").option("--graphql <url>", "Create from a GraphQL endpoint URL (auto-detect auth)").option("--auth <kind>", "Override detected auth: oauth or api_key (MCP only)").option("--preview", "Show the request that would be created without creating").action((options) => runCliCommand("Create app failed", async () => {
6667
+ app.command("create").description("Create a custom org app").option("--name <name>", "App display name").option("--slug <slug>", "App slug segment (defaults from name)").option("--description <description>", "App description (defaults to --name)").option("--logo <url>", "Public logo image URL").option("--field <field>", "Credential field as key, key:secret, key:optional, or key:secret:optional (repeatable)", collectValues$3, []).option("--mcp <url>", "Create from an MCP server URL (auto-detect auth)").option("--openapi <url>", "Create from an OpenAPI spec URL (auto-detect auth)").option("--graphql <url>", "Create from a GraphQL endpoint URL (auto-detect auth)").option("--auth <kind>", "Override detected auth: oauth or api_key (MCP only)").option("--preview", "Show the request that would be created without creating").action((options) => runCliCommand("Create app failed", async () => {
6618
6668
  const config = createCliConfig();
6619
6669
  const client = createCliPlatformClient(config);
6620
6670
  await resolveActiveOrganization(config);
6621
6671
  const discovery = resolveDiscoverSource(options);
6672
+ const logo = parseLogoUrl(options.logo);
6622
6673
  if (discovery) {
6623
6674
  const result = await runAppCreateFromUrl(client, {
6624
6675
  source: discovery.source,
@@ -6626,6 +6677,7 @@ function registerAppCreateCommand(app) {
6626
6677
  name: options.name,
6627
6678
  slug: options.slug,
6628
6679
  description: options.description,
6680
+ logo,
6629
6681
  authKind: parseAuthKind(options.auth),
6630
6682
  fields: parseFieldOverrides(options.field),
6631
6683
  preview: options.preview ?? false
@@ -6640,6 +6692,7 @@ function registerAppCreateCommand(app) {
6640
6692
  slug: options.slug?.trim() || slugifyAppName(name),
6641
6693
  description: options.description?.trim() || name,
6642
6694
  source: "custom",
6695
+ ...logo ? { logo } : {},
6643
6696
  fields: parseCustomAppFields(options.field)
6644
6697
  }, { preview: options.preview ?? false });
6645
6698
  process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
@@ -7566,7 +7619,7 @@ function registerBuildCommand(program) {
7566
7619
  try {
7567
7620
  const root = resolveProjectRoot(options.dir);
7568
7621
  await ensureSdkCurrent(root);
7569
- const { buildApp } = await import("./dist-taKsx2rD.mjs");
7622
+ const { buildApp } = await import("./dist-BXlsFzPI.mjs");
7570
7623
  await buildApp({ root });
7571
7624
  process.stdout.write(`Built ${root}\n`);
7572
7625
  } catch (error) {
@@ -7701,7 +7754,7 @@ async function sleep(ms) {
7701
7754
  }
7702
7755
  async function buildDeployArchive(client, root, projectId, filter) {
7703
7756
  if (filter?.length) {
7704
- const { buildFilteredApp } = await import("./dist-taKsx2rD.mjs");
7757
+ const { buildFilteredApp } = await import("./dist-BXlsFzPI.mjs");
7705
7758
  const filtered = await buildFilteredApp({
7706
7759
  root,
7707
7760
  filter,
@@ -7723,7 +7776,7 @@ async function buildDeployArchive(client, root, projectId, filter) {
7723
7776
  sourceFiles: filtered.sourceFiles
7724
7777
  };
7725
7778
  }
7726
- const { buildApp } = await import("./dist-taKsx2rD.mjs");
7779
+ const { buildApp } = await import("./dist-BXlsFzPI.mjs");
7727
7780
  const { sourceFiles } = await buildApp({
7728
7781
  root,
7729
7782
  collectSources: true,
@@ -7854,7 +7907,7 @@ function runtimeChildEnv(parentEnv, overrides) {
7854
7907
  //#region src/project/bootstrap-run.ts
7855
7908
  /** Node args + env for `@keystrokehq/build` bootstrap (shared by start + dev). */
7856
7909
  async function resolveBootstrapRun(options) {
7857
- const { resolveRuntimeBuildArtifact } = await import("./dist-taKsx2rD.mjs");
7910
+ const { resolveRuntimeBuildArtifact } = await import("./dist-BXlsFzPI.mjs");
7858
7911
  const loader = pathToFileURL(resolveRuntimeBuildArtifact(options.runtimeNodeModules, "dist/runtime-loader.mjs")).href;
7859
7912
  const bootstrap = resolveRuntimeBuildArtifact(options.runtimeNodeModules, "dist/standalone-bootstrap.mjs");
7860
7913
  const args = [`--import=${loader}`];
@@ -8004,7 +8057,7 @@ async function runDev(options) {
8004
8057
  process.on("SIGINT", shutdown);
8005
8058
  process.on("SIGTERM", shutdown);
8006
8059
  try {
8007
- const { watchApp } = await import("./dist-taKsx2rD.mjs");
8060
+ const { watchApp } = await import("./dist-BXlsFzPI.mjs");
8008
8061
  await watchApp({
8009
8062
  root,
8010
8063
  clean: false,
@@ -9066,7 +9119,7 @@ async function runStart(options) {
9066
9119
  const apiPort = Number(new URL(serverUrl).port || 80);
9067
9120
  const runtimeNodeModules = resolveCliRuntimeNodeModules(resolveCliRoot(import.meta.url));
9068
9121
  ensureNativeDeps(runtimeNodeModules);
9069
- const { buildApp } = await import("./dist-taKsx2rD.mjs");
9122
+ const { buildApp } = await import("./dist-BXlsFzPI.mjs");
9070
9123
  await buildApp({
9071
9124
  root,
9072
9125
  clean: false
@@ -9954,7 +10007,7 @@ function createProgram() {
9954
10007
  async function runCli(argv) {
9955
10008
  initCliTelemetry();
9956
10009
  try {
9957
- const { maybeAutoUpdate } = await import("./maybe-auto-update-CacZiAqV.mjs");
10010
+ const { maybeAutoUpdate } = await import("./maybe-auto-update-D1ZTWXG5.mjs");
9958
10011
  await maybeAutoUpdate(argv);
9959
10012
  await createProgram().parseAsync(argv);
9960
10013
  } finally {
@@ -9964,4 +10017,4 @@ async function runCli(argv) {
9964
10017
  //#endregion
9965
10018
  export { runCli };
9966
10019
 
9967
- //# sourceMappingURL=program-CzabcFvC.mjs.map
10020
+ //# sourceMappingURL=program-BGCbhW03.mjs.map