@keystrokehq/cli 0.1.127 → 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-C4s4I_yc.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-Be3UhxsK.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-vRL7OVlN.mjs.map
139
+ //# sourceMappingURL=maybe-auto-update-D1ZTWXG5.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"maybe-auto-update-vRL7OVlN.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-DfSfjvC5.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-FJ8S9RtQ.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-Be3UhxsK.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),
@@ -6575,6 +6603,7 @@ function buildCreateRequest(input, template) {
6575
6603
  source: input.source,
6576
6604
  url: input.url,
6577
6605
  authKind,
6606
+ ...input.logo ? { logo: input.logo } : {},
6578
6607
  ...input.fields ? { fields: input.fields } : template.credentialFields ? { fields: template.credentialFields } : {},
6579
6608
  ...template.credentialScheme ? { credentialScheme: template.credentialScheme } : {},
6580
6609
  ...authKind === "oauth" && template.oauthScopes.length > 0 ? { oauthScopes: template.oauthScopes } : {}
@@ -6618,16 +6647,29 @@ function parseAuthKind(value) {
6618
6647
  if (value === "oauth" || value === "api_key") return value;
6619
6648
  throw new Error("--auth must be oauth or api_key");
6620
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
+ }
6621
6662
  function parseFieldOverrides(flags) {
6622
6663
  if (flags.length === 0) return;
6623
6664
  return parseCustomAppFields(flags);
6624
6665
  }
6625
6666
  function registerAppCreateCommand(app) {
6626
- 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 () => {
6627
6668
  const config = createCliConfig();
6628
6669
  const client = createCliPlatformClient(config);
6629
6670
  await resolveActiveOrganization(config);
6630
6671
  const discovery = resolveDiscoverSource(options);
6672
+ const logo = parseLogoUrl(options.logo);
6631
6673
  if (discovery) {
6632
6674
  const result = await runAppCreateFromUrl(client, {
6633
6675
  source: discovery.source,
@@ -6635,6 +6677,7 @@ function registerAppCreateCommand(app) {
6635
6677
  name: options.name,
6636
6678
  slug: options.slug,
6637
6679
  description: options.description,
6680
+ logo,
6638
6681
  authKind: parseAuthKind(options.auth),
6639
6682
  fields: parseFieldOverrides(options.field),
6640
6683
  preview: options.preview ?? false
@@ -6649,6 +6692,7 @@ function registerAppCreateCommand(app) {
6649
6692
  slug: options.slug?.trim() || slugifyAppName(name),
6650
6693
  description: options.description?.trim() || name,
6651
6694
  source: "custom",
6695
+ ...logo ? { logo } : {},
6652
6696
  fields: parseCustomAppFields(options.field)
6653
6697
  }, { preview: options.preview ?? false });
6654
6698
  process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
@@ -7575,7 +7619,7 @@ function registerBuildCommand(program) {
7575
7619
  try {
7576
7620
  const root = resolveProjectRoot(options.dir);
7577
7621
  await ensureSdkCurrent(root);
7578
- const { buildApp } = await import("./dist-Bb5k8jH8.mjs");
7622
+ const { buildApp } = await import("./dist-BXlsFzPI.mjs");
7579
7623
  await buildApp({ root });
7580
7624
  process.stdout.write(`Built ${root}\n`);
7581
7625
  } catch (error) {
@@ -7710,7 +7754,7 @@ async function sleep(ms) {
7710
7754
  }
7711
7755
  async function buildDeployArchive(client, root, projectId, filter) {
7712
7756
  if (filter?.length) {
7713
- const { buildFilteredApp } = await import("./dist-Bb5k8jH8.mjs");
7757
+ const { buildFilteredApp } = await import("./dist-BXlsFzPI.mjs");
7714
7758
  const filtered = await buildFilteredApp({
7715
7759
  root,
7716
7760
  filter,
@@ -7732,7 +7776,7 @@ async function buildDeployArchive(client, root, projectId, filter) {
7732
7776
  sourceFiles: filtered.sourceFiles
7733
7777
  };
7734
7778
  }
7735
- const { buildApp } = await import("./dist-Bb5k8jH8.mjs");
7779
+ const { buildApp } = await import("./dist-BXlsFzPI.mjs");
7736
7780
  const { sourceFiles } = await buildApp({
7737
7781
  root,
7738
7782
  collectSources: true,
@@ -7863,7 +7907,7 @@ function runtimeChildEnv(parentEnv, overrides) {
7863
7907
  //#region src/project/bootstrap-run.ts
7864
7908
  /** Node args + env for `@keystrokehq/build` bootstrap (shared by start + dev). */
7865
7909
  async function resolveBootstrapRun(options) {
7866
- const { resolveRuntimeBuildArtifact } = await import("./dist-Bb5k8jH8.mjs");
7910
+ const { resolveRuntimeBuildArtifact } = await import("./dist-BXlsFzPI.mjs");
7867
7911
  const loader = pathToFileURL(resolveRuntimeBuildArtifact(options.runtimeNodeModules, "dist/runtime-loader.mjs")).href;
7868
7912
  const bootstrap = resolveRuntimeBuildArtifact(options.runtimeNodeModules, "dist/standalone-bootstrap.mjs");
7869
7913
  const args = [`--import=${loader}`];
@@ -8013,7 +8057,7 @@ async function runDev(options) {
8013
8057
  process.on("SIGINT", shutdown);
8014
8058
  process.on("SIGTERM", shutdown);
8015
8059
  try {
8016
- const { watchApp } = await import("./dist-Bb5k8jH8.mjs");
8060
+ const { watchApp } = await import("./dist-BXlsFzPI.mjs");
8017
8061
  await watchApp({
8018
8062
  root,
8019
8063
  clean: false,
@@ -9075,7 +9119,7 @@ async function runStart(options) {
9075
9119
  const apiPort = Number(new URL(serverUrl).port || 80);
9076
9120
  const runtimeNodeModules = resolveCliRuntimeNodeModules(resolveCliRoot(import.meta.url));
9077
9121
  ensureNativeDeps(runtimeNodeModules);
9078
- const { buildApp } = await import("./dist-Bb5k8jH8.mjs");
9122
+ const { buildApp } = await import("./dist-BXlsFzPI.mjs");
9079
9123
  await buildApp({
9080
9124
  root,
9081
9125
  clean: false
@@ -9963,7 +10007,7 @@ function createProgram() {
9963
10007
  async function runCli(argv) {
9964
10008
  initCliTelemetry();
9965
10009
  try {
9966
- const { maybeAutoUpdate } = await import("./maybe-auto-update-vRL7OVlN.mjs");
10010
+ const { maybeAutoUpdate } = await import("./maybe-auto-update-D1ZTWXG5.mjs");
9967
10011
  await maybeAutoUpdate(argv);
9968
10012
  await createProgram().parseAsync(argv);
9969
10013
  } finally {
@@ -9973,4 +10017,4 @@ async function runCli(argv) {
9973
10017
  //#endregion
9974
10018
  export { runCli };
9975
10019
 
9976
- //# sourceMappingURL=program-C4s4I_yc.mjs.map
10020
+ //# sourceMappingURL=program-BGCbhW03.mjs.map