@keystrokehq/hosting 0.1.10 → 0.1.11

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.d.cts CHANGED
@@ -140,15 +140,12 @@ declare function defaultHostingPlugin(options?: DockerPluginOptions): HostingPlu
140
140
  //#region src/runtime-env.d.ts
141
141
  /** Shared dev token when `PLATFORM_WORKER_TOKEN` is unset (non-production only). */
142
142
  declare const DEV_PLATFORM_WORKER_TOKEN = "dev-platform-worker-token";
143
- declare const PROJECT_DATABASE_ENV_KEYS: readonly ["POSTGRES_HOST", "POSTGRES_PORT", "POSTGRES_DB", "POSTGRES_USER", "POSTGRES_PASSWORD", "DATABASE_SEARCH_PATH"];
144
143
  type RuntimeLaunchSpec = {
145
144
  image: string;
146
145
  env: Record<string, string>;
147
146
  port: number;
148
147
  health: typeof PROJECT_SERVER_HEALTH;
149
148
  };
150
- /** Per-project postgres env injected into every project server container/machine. */
151
- declare function projectDatabaseRuntimeEnv(database: ProjectRuntimeDatabase): Record<(typeof PROJECT_DATABASE_ENV_KEYS)[number], string>;
152
149
  /**
153
150
  * Builds the launch spec for an org worker. Each deploy artifact is encoded in
154
151
  * `KEYSTROKE_ORG_ARTIFACTS` — there is no base image, so at least one artifact is required.
@@ -166,6 +163,18 @@ declare function rewriteLoopbackUrl(url: string): string;
166
163
  declare function formatDockerEnv(env: Record<string, string>): string[];
167
164
  declare function resolveProjectServerImage(env?: NodeJS.ProcessEnv, override?: string): string;
168
165
  //#endregion
166
+ //#region src/org-worker-token.d.ts
167
+ /**
168
+ * Per-org worker token: `{organizationId}.{hmac}`. Self-describing so the
169
+ * platform can tell which org a machine is calling as, and stateless — verified
170
+ * by re-signing with the shared `PLATFORM_WORKER_TOKEN` secret.
171
+ */
172
+ declare function mintOrgWorkerToken(secret: string, organizationId: string): string;
173
+ type VerifiedOrgWorkerToken = {
174
+ organizationId: string;
175
+ };
176
+ declare function verifyOrgWorkerToken(secret: string | undefined, token: string | undefined): VerifiedOrgWorkerToken | undefined;
177
+ //#endregion
169
178
  //#region src/wait-for-health.d.ts
170
179
  type WaitForHealthOptions = {
171
180
  timeoutMs?: number;
@@ -217,5 +226,5 @@ type FetchDeployStatusOptions = {
217
226
  */
218
227
  declare function fetchDeployStatus(baseUrl: string, options?: FetchDeployStatusOptions): Promise<DeployStatusResponse | undefined>;
219
228
  //#endregion
220
- export { DEV_PLATFORM_WORKER_TOKEN, type DeployStatusResponse, type DockerPluginOptions, type FetchDeployStatusOptions, type HostingOptions, type HostingPlugin, type OrgArtifactSpec, type OrgProjectDeploy, type OrganizationHostingInput, type OrganizationHostingResult, PROJECT_DATABASE_ENV_KEYS, PROJECT_SERVER_DEPLOY_STATUS, PROJECT_SERVER_FRAMEWORK_NODE_MODULES, PROJECT_SERVER_FRAMEWORK_ROOT, PROJECT_SERVER_HEALTH, PROJECT_SERVER_IMAGE, PROJECT_SERVER_PORT, PROJECT_SERVER_ROOT, type PingProjectOptions, type ProjectDeployStatus, type ProjectPingTarget, type ProjectRuntime, type ProjectRuntimeDatabase, type ProjectRuntimeDestroyInput, type ProjectRuntimeHosting, type ProjectRuntimeInput, type ProjectRuntimeReconcileInput, type ProjectRuntimeResult, RUNTIME_PING_TIMEOUT_MS, type RuntimeLaunchSpec, type WaitForHealthOptions, type WorkerRuntimeConfig, WorkerRuntimeConfigError, buildRuntimeEnv, canPingProjectTarget, defaultHostingPlugin, dockerPlugin, encodeOrgArtifacts, fetchDeployStatus, formatDockerEnv, parseOrgArtifactsFromEnv, pingProject, pingProjectTarget, projectDatabaseRuntimeEnv, resolvePlatformWorkerToken, resolveProjectServerImage, resolveRuntimeLaunch, resolveWorkerPlatformUrl, resolveWorkerRuntimeConfig, rewriteLoopbackHost, rewriteLoopbackUrl, waitForHealth };
229
+ export { DEV_PLATFORM_WORKER_TOKEN, type DeployStatusResponse, type DockerPluginOptions, type FetchDeployStatusOptions, type HostingOptions, type HostingPlugin, type OrgArtifactSpec, type OrgProjectDeploy, type OrganizationHostingInput, type OrganizationHostingResult, PROJECT_SERVER_DEPLOY_STATUS, PROJECT_SERVER_FRAMEWORK_NODE_MODULES, PROJECT_SERVER_FRAMEWORK_ROOT, PROJECT_SERVER_HEALTH, PROJECT_SERVER_IMAGE, PROJECT_SERVER_PORT, PROJECT_SERVER_ROOT, type PingProjectOptions, type ProjectDeployStatus, type ProjectPingTarget, type ProjectRuntime, type ProjectRuntimeDatabase, type ProjectRuntimeDestroyInput, type ProjectRuntimeHosting, type ProjectRuntimeInput, type ProjectRuntimeReconcileInput, type ProjectRuntimeResult, RUNTIME_PING_TIMEOUT_MS, type RuntimeLaunchSpec, type VerifiedOrgWorkerToken, type WaitForHealthOptions, type WorkerRuntimeConfig, WorkerRuntimeConfigError, buildRuntimeEnv, canPingProjectTarget, defaultHostingPlugin, dockerPlugin, encodeOrgArtifacts, fetchDeployStatus, formatDockerEnv, mintOrgWorkerToken, parseOrgArtifactsFromEnv, pingProject, pingProjectTarget, resolvePlatformWorkerToken, resolveProjectServerImage, resolveRuntimeLaunch, resolveWorkerPlatformUrl, resolveWorkerRuntimeConfig, rewriteLoopbackHost, rewriteLoopbackUrl, verifyOrgWorkerToken, waitForHealth };
221
230
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/constants.ts","../src/runtime.ts","../src/worker-runtime-config.ts","../src/plugin.ts","../src/docker/create-docker-runtime.ts","../src/docker/plugin.ts","../src/default-plugin.ts","../src/runtime-env.ts","../src/wait-for-health.ts","../src/runtime-constants.ts","../src/ping-project.ts","../src/ping-project-target.ts","../src/deploy-status.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/constants.ts","../src/runtime.ts","../src/worker-runtime-config.ts","../src/plugin.ts","../src/docker/create-docker-runtime.ts","../src/docker/plugin.ts","../src/default-plugin.ts","../src/runtime-env.ts","../src/org-worker-token.ts","../src/wait-for-health.ts","../src/runtime-constants.ts","../src/ping-project.ts","../src/ping-project-target.ts","../src/deploy-status.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -140,15 +140,12 @@ declare function defaultHostingPlugin(options?: DockerPluginOptions): HostingPlu
140
140
  //#region src/runtime-env.d.ts
141
141
  /** Shared dev token when `PLATFORM_WORKER_TOKEN` is unset (non-production only). */
142
142
  declare const DEV_PLATFORM_WORKER_TOKEN = "dev-platform-worker-token";
143
- declare const PROJECT_DATABASE_ENV_KEYS: readonly ["POSTGRES_HOST", "POSTGRES_PORT", "POSTGRES_DB", "POSTGRES_USER", "POSTGRES_PASSWORD", "DATABASE_SEARCH_PATH"];
144
143
  type RuntimeLaunchSpec = {
145
144
  image: string;
146
145
  env: Record<string, string>;
147
146
  port: number;
148
147
  health: typeof PROJECT_SERVER_HEALTH;
149
148
  };
150
- /** Per-project postgres env injected into every project server container/machine. */
151
- declare function projectDatabaseRuntimeEnv(database: ProjectRuntimeDatabase): Record<(typeof PROJECT_DATABASE_ENV_KEYS)[number], string>;
152
149
  /**
153
150
  * Builds the launch spec for an org worker. Each deploy artifact is encoded in
154
151
  * `KEYSTROKE_ORG_ARTIFACTS` — there is no base image, so at least one artifact is required.
@@ -166,6 +163,18 @@ declare function rewriteLoopbackUrl(url: string): string;
166
163
  declare function formatDockerEnv(env: Record<string, string>): string[];
167
164
  declare function resolveProjectServerImage(env?: NodeJS.ProcessEnv, override?: string): string;
168
165
  //#endregion
166
+ //#region src/org-worker-token.d.ts
167
+ /**
168
+ * Per-org worker token: `{organizationId}.{hmac}`. Self-describing so the
169
+ * platform can tell which org a machine is calling as, and stateless — verified
170
+ * by re-signing with the shared `PLATFORM_WORKER_TOKEN` secret.
171
+ */
172
+ declare function mintOrgWorkerToken(secret: string, organizationId: string): string;
173
+ type VerifiedOrgWorkerToken = {
174
+ organizationId: string;
175
+ };
176
+ declare function verifyOrgWorkerToken(secret: string | undefined, token: string | undefined): VerifiedOrgWorkerToken | undefined;
177
+ //#endregion
169
178
  //#region src/wait-for-health.d.ts
170
179
  type WaitForHealthOptions = {
171
180
  timeoutMs?: number;
@@ -217,5 +226,5 @@ type FetchDeployStatusOptions = {
217
226
  */
218
227
  declare function fetchDeployStatus(baseUrl: string, options?: FetchDeployStatusOptions): Promise<DeployStatusResponse | undefined>;
219
228
  //#endregion
220
- export { DEV_PLATFORM_WORKER_TOKEN, type DeployStatusResponse, type DockerPluginOptions, type FetchDeployStatusOptions, type HostingOptions, type HostingPlugin, type OrgArtifactSpec, type OrgProjectDeploy, type OrganizationHostingInput, type OrganizationHostingResult, PROJECT_DATABASE_ENV_KEYS, PROJECT_SERVER_DEPLOY_STATUS, PROJECT_SERVER_FRAMEWORK_NODE_MODULES, PROJECT_SERVER_FRAMEWORK_ROOT, PROJECT_SERVER_HEALTH, PROJECT_SERVER_IMAGE, PROJECT_SERVER_PORT, PROJECT_SERVER_ROOT, type PingProjectOptions, type ProjectDeployStatus, type ProjectPingTarget, type ProjectRuntime, type ProjectRuntimeDatabase, type ProjectRuntimeDestroyInput, type ProjectRuntimeHosting, type ProjectRuntimeInput, type ProjectRuntimeReconcileInput, type ProjectRuntimeResult, RUNTIME_PING_TIMEOUT_MS, type RuntimeLaunchSpec, type WaitForHealthOptions, type WorkerRuntimeConfig, WorkerRuntimeConfigError, buildRuntimeEnv, canPingProjectTarget, defaultHostingPlugin, dockerPlugin, encodeOrgArtifacts, fetchDeployStatus, formatDockerEnv, parseOrgArtifactsFromEnv, pingProject, pingProjectTarget, projectDatabaseRuntimeEnv, resolvePlatformWorkerToken, resolveProjectServerImage, resolveRuntimeLaunch, resolveWorkerPlatformUrl, resolveWorkerRuntimeConfig, rewriteLoopbackHost, rewriteLoopbackUrl, waitForHealth };
229
+ export { DEV_PLATFORM_WORKER_TOKEN, type DeployStatusResponse, type DockerPluginOptions, type FetchDeployStatusOptions, type HostingOptions, type HostingPlugin, type OrgArtifactSpec, type OrgProjectDeploy, type OrganizationHostingInput, type OrganizationHostingResult, PROJECT_SERVER_DEPLOY_STATUS, PROJECT_SERVER_FRAMEWORK_NODE_MODULES, PROJECT_SERVER_FRAMEWORK_ROOT, PROJECT_SERVER_HEALTH, PROJECT_SERVER_IMAGE, PROJECT_SERVER_PORT, PROJECT_SERVER_ROOT, type PingProjectOptions, type ProjectDeployStatus, type ProjectPingTarget, type ProjectRuntime, type ProjectRuntimeDatabase, type ProjectRuntimeDestroyInput, type ProjectRuntimeHosting, type ProjectRuntimeInput, type ProjectRuntimeReconcileInput, type ProjectRuntimeResult, RUNTIME_PING_TIMEOUT_MS, type RuntimeLaunchSpec, type VerifiedOrgWorkerToken, type WaitForHealthOptions, type WorkerRuntimeConfig, WorkerRuntimeConfigError, buildRuntimeEnv, canPingProjectTarget, defaultHostingPlugin, dockerPlugin, encodeOrgArtifacts, fetchDeployStatus, formatDockerEnv, mintOrgWorkerToken, parseOrgArtifactsFromEnv, pingProject, pingProjectTarget, resolvePlatformWorkerToken, resolveProjectServerImage, resolveRuntimeLaunch, resolveWorkerPlatformUrl, resolveWorkerRuntimeConfig, rewriteLoopbackHost, rewriteLoopbackUrl, verifyOrgWorkerToken, waitForHealth };
221
230
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/constants.ts","../src/runtime.ts","../src/worker-runtime-config.ts","../src/plugin.ts","../src/docker/create-docker-runtime.ts","../src/docker/plugin.ts","../src/default-plugin.ts","../src/runtime-env.ts","../src/wait-for-health.ts","../src/runtime-constants.ts","../src/ping-project.ts","../src/ping-project-target.ts","../src/deploy-status.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/constants.ts","../src/runtime.ts","../src/worker-runtime-config.ts","../src/plugin.ts","../src/docker/create-docker-runtime.ts","../src/docker/plugin.ts","../src/default-plugin.ts","../src/runtime-env.ts","../src/org-worker-token.ts","../src/wait-for-health.ts","../src/runtime-constants.ts","../src/ping-project.ts","../src/ping-project-target.ts","../src/deploy-status.ts"],"mappings":";;;cAAa,oBAAA;AAAA,cAEA,mBAAA;AAAA,cAEA,mBAAA;AAAA,cAEA,6BAAA;AAAA,cAEA,qCAAA;AAAA,cAEA,qBAAA;EAAA,SAGH,IAAA;EAAA,SAAA,IAAA;AAAA;AAAA,cAEG,4BAAA;EAAA,SAGH,IAAA;EAAA,SAAA,IAAA;AAAA;;;KClBE,sBAAA;EACV,IAAA;EACA,IAAA;EACA,QAAA;EACA,IAAA;EACA,QAAA;EACA,UAAA;EACA,cAAA,UDLW;ECOX,SAAA;AAAA;AAAA,KAGU,gBAAA;EACV,SAAA;EACA,IAAA;EACA,UAAA;EACA,kBAAA;AAAA;AAAA,KAGU,eAAA;EACV,SAAA;EACA,kBAAkB;AAAA;AAAA,KAGR,qBAAA;EACV,OAAO;AAAA;AAAA,KAGG,mBAAA;EACV,cAAA;EACA,QAAA,EAAU,gBAAA;EACV,QAAA,EAAU,sBAAA;EACV,OAAA,GAAU,qBAAA,EDnBF;ECqBR,GAAA,GAAM,MAAA,kBDrBE;ECuBR,iBAAA;AAAA;;iBAIc,kBAAA,CAAmB,SAA4B,EAAjB,eAAe;AAAA,iBAI7C,wBAAA,CACd,GAAA,GAAK,MAAA,CAAO,UAAA,GACX,eAAe;AAAA,KAyBN,0BAAA;EACV,SAAA;EACA,OAAA,GAAU,qBAAqB;AAAA;AAAA,KAGrB,4BAAA;EACV,cAAA;EAEA,aAAA;EACA,OAAA,GAAU,qBAAqB;AAAA;AAAA,KAGrB,oBAAA;EACV,SAAA;EACA,OAAO;AAAA;AAAA,KAGG,cAAA;EACV,KAAA,CAAM,KAAA,EAAO,mBAAA,GAAsB,OAAA,CAAQ,oBAAA;EAC3C,OAAA,EAAS,KAAA,EAAO,0BAAA,GAA6B,OAAA;EAjFpC;AAGX;;;;;EAqFE,SAAA,EAAW,KAAA,EAAO,4BAAA,GAA+B,OAAA;AAAA;AAAA,KAGvC,iBAAA;EACV,OAAA;EACA,SAAS;AAAA;;;;KCnGC,mBAAA;yEAEV,WAAA,UFL+B;EEO/B,WAAW;AAAA;AAAA,cAGA,wBAAA,SAAiC,KAAK;EAAA,SACxC,OAAA;cAEG,OAAA;AAAA;;iBAWE,0BAAA,CACd,MAAA,GAAQ,MAAA,CAAO,UAAA,GACd,mBAAmB;;;KCvBV,cAAA;EACV,KAAA;EACA,GAAA,GAAM,MAAA,CAAO,UAAA;EACb,SAAA,UAAmB,KAAK;EACxB,eAAA;AAAA;AAAA,KAGU,wBAAA;EACV,cAAA;EACA,IAAI;AAAA;AAAA,KAGM,yBAAA;EACV,OAAO;AAAA;AAAA,KAGG,aAAA;EACV,IAAA,UHhB8B;EGkB9B,aAAA,EAAe,mBAAA;EACf,aAAA,IAAiB,cAAA;EACjB,qBAAA,EAAuB,KAAA,EAAO,wBAAA,GAA2B,OAAA,CAAQ,yBAAA;EACjE,uBAAA,EAAyB,MAAA,EAAQ,yBAAA,GAA4B,OAAA;EAC7D,aAAA,EACE,MAAA,EAAQ,iBAAA,GACP,MAAA;IAAY,OAAA;IAAiB,SAAA;EAAA;EAChC,kBAAA,EAAoB,SAAA,kBAA2B,MAAA;AAAA;;;KCpBrC,eAAA;EACV,QAAA;EACA,aAAa;AAAA;AAAA,KAGH,mBAAA,GAAsB,cAAA;EAChC,MAAA,GAAS,MAAA,EJbqB;EIe9B,eAAA,GAAkB,eAAA,EJfY;EIiB9B,UAAA;AAAA;;;iBCXc,YAAA,CAAa,OAAA,GAAS,mBAAA,GAA2B,aAAa;;;;iBCJ9D,oBAAA,CAAqB,OAAA,GAAS,mBAAA,GAA2B,aAAa;;;;cC8BzE,yBAAA;AAAA,KAED,iBAAA;EACV,KAAA;EACA,GAAA,EAAK,MAAA;EACL,IAAA;EACA,MAAA,SAAe,qBAAqB;AAAA;APtCN;AAEhC;;;AAFgC,iBO6ChB,oBAAA,CACd,OAAA,EAAS,cAAA,EACT,SAAA,EAAW,eAAA,IACX,QAAA,EAAU,sBAAA,EACV,QAAA,GAAW,MAAA,mBACV,iBAAA;;iBA+Ba,eAAA,CACd,MAAA,EAAQ,MAAA,CAAO,UAAA,EACf,SAAA,EAAW,eAAA,IACX,QAAA,EAAU,sBAAA,EACV,QAAA,GAAW,MAAA,mBACV,MAAA;AAAA,iBA+Ca,0BAAA,CACd,MAAA,GAAQ,MAAA,CAAO,UAAwB;;iBAezB,wBAAA,CACd,MAAA,GAAQ,MAAA,CAAO,UAAwB;;iBAczB,mBAAA,CAAoB,IAAY;AAAA,iBAQhC,kBAAA,CAAmB,GAAW;;iBAW9B,eAAA,CAAgB,GAA2B,EAAtB,MAAM;AAAA,iBAI3B,yBAAA,CACd,GAAA,GAAK,MAAA,CAAO,UAAwB,EACpC,QAAA;;;;;;AP/LF;;iBQWgB,kBAAA,CAAmB,MAAA,UAAgB,cAAsB;AAAA,KAI7D,sBAAA;EACV,cAAc;AAAA;AAAA,iBAGA,oBAAA,CACd,MAAA,sBACA,KAAA,uBACC,sBAAsB;;;KCjBb,oBAAA;EACV,SAAA;EACA,UAAA;EACA,SAAA,UAAmB,KAAK;AAAA;AAAA,iBAGJ,aAAA,CACpB,OAAA,UACA,OAAA,GAAS,oBAAA,GACR,OAAO;;;;cCbG,uBAAA;;;KCGD,kBAAA;EACV,SAAA;EACA,SAAA,UAAmB,KAAA;EACnB,SAAA;EACA,MAAA,GAAS,IAAA,CAAK,aAAA;AAAA;AAAA,iBAGM,WAAA,CACpB,OAAA,UACA,OAAA,GAAS,kBAAA,GACR,OAAO;;;iBCVM,oBAAA,CACd,MAAA,EAAQ,iBAAA,EACR,MAAA,GAAS,IAAA,CAAK,aAAA,qBACb,MAAA;EAAY,OAAA;EAAiB,SAAA;AAAA;AAAA,iBAQV,iBAAA,CACpB,MAAA,EAAQ,iBAAA,EACR,OAAA,GAAS,kBAAA;EACP,MAAA,GAAS,IAAA,CAAK,aAAA;AAAA,IAEf,OAAA;;;;KChBS,mBAAA;EACV,SAAA;EACA,EAAA;EACA,KAAA;AAAA;AAAA,KAGU,oBAAA;EACV,QAAA,EAAU,mBAAmB;AAAA;AAAA,KAGnB,wBAAA;EACV,SAAA,UAAmB,KAAK;EACxB,SAAA;AAAA;AbZF;;;;AAAgC;AAAhC,iBaoBsB,iBAAA,CACpB,OAAA,UACA,OAAA,GAAS,wBAAA,GACR,OAAA,CAAQ,oBAAA"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { createHmac, timingSafeEqual } from "node:crypto";
1
2
  import Docker from "dockerode";
2
3
  import { mkdir } from "node:fs/promises";
3
4
  //#region src/constants.ts
@@ -4807,6 +4808,7 @@ const INFRA_SYSTEM_SLUGS = [
4807
4808
  "health",
4808
4809
  "healthcheck",
4809
4810
  "healthz",
4811
+ "hook-resume",
4810
4812
  "hooks",
4811
4813
  "internal",
4812
4814
  "item",
@@ -4972,14 +4974,14 @@ const OrganizationUserRoleSchema = _enum([
4972
4974
  "admin",
4973
4975
  "builder"
4974
4976
  ]);
4975
- const isoDateTime$5 = string().datetime();
4977
+ const isoDateTime$7 = string().datetime();
4976
4978
  const OrganizationSchema = object({
4977
4979
  id: string(),
4978
4980
  name: string(),
4979
4981
  slug: OrganizationSlugSchema,
4980
4982
  verified: boolean(),
4981
- createdAt: isoDateTime$5,
4982
- updatedAt: isoDateTime$5
4983
+ createdAt: isoDateTime$7,
4984
+ updatedAt: isoDateTime$7
4983
4985
  });
4984
4986
  const ProjectSchema = object({
4985
4987
  id: string(),
@@ -4991,8 +4993,8 @@ const ProjectSchema = object({
4991
4993
  baseUrl: string().nullable(),
4992
4994
  runtimeId: string().nullable(),
4993
4995
  lastError: string().nullable(),
4994
- createdAt: isoDateTime$5,
4995
- updatedAt: isoDateTime$5
4996
+ createdAt: isoDateTime$7,
4997
+ updatedAt: isoDateTime$7
4996
4998
  });
4997
4999
  object({
4998
5000
  organization: OrganizationSchema,
@@ -5012,7 +5014,7 @@ const ProjectListMetricsSchema = object({
5012
5014
  workflowCount: number$1(),
5013
5015
  skillCount: number$1(),
5014
5016
  credentialCount: number$1(),
5015
- lastDeploymentAt: isoDateTime$5.nullable()
5017
+ lastDeploymentAt: isoDateTime$7.nullable()
5016
5018
  });
5017
5019
  record(string(), ProjectListMetricsSchema);
5018
5020
  object({
@@ -5367,6 +5369,130 @@ object({
5367
5369
  skills: array(StoredRouteManifestSkillSchema).default([]),
5368
5370
  integrations: array(string()).optional()
5369
5371
  });
5372
+ const isoDateTime$6 = string().datetime();
5373
+ const subscriptionStatusSchema = _enum([
5374
+ "none",
5375
+ "trialing",
5376
+ "active",
5377
+ "past_due",
5378
+ "canceled"
5379
+ ]);
5380
+ const CreditPackSchema = object({
5381
+ id: string(),
5382
+ usd: number$1(),
5383
+ microCredits: number$1(),
5384
+ label: string()
5385
+ });
5386
+ const AutoTopupSummarySchema = object({
5387
+ enabled: boolean(),
5388
+ thresholdMicroCredits: number$1().nullable(),
5389
+ amountMicroCredits: number$1().nullable(),
5390
+ /** A saved payment method exists to charge off-session. */
5391
+ hasPaymentMethod: boolean(),
5392
+ /** A top-up invoice payment is in flight. */
5393
+ pending: boolean()
5394
+ });
5395
+ /**
5396
+ * The plan's resolved limits. Storage overage is billed from the wallet's
5397
+ * pushed-down `includedStorageGb`; concurrency, per-pass run timeouts, and
5398
+ * API/MCP rate limits are enforced from the wallet (timeouts/concurrency) or
5399
+ * plan preset (rate limits). Log retention is configured but not pruned yet.
5400
+ */
5401
+ const PlanLimitsSchema = object({
5402
+ includedStorageGb: number$1(),
5403
+ concurrencyLimit: number$1(),
5404
+ agentTimeoutMs: number$1(),
5405
+ workflowTimeoutMs: number$1(),
5406
+ pollTimeoutMs: number$1(),
5407
+ /** Configured retention window; pruning not implemented yet. */
5408
+ logRetentionDays: number$1(),
5409
+ apiRateLimitCapacity: number$1(),
5410
+ apiRateLimitRefillPerSec: number$1(),
5411
+ mcpRateLimitCapacity: number$1(),
5412
+ mcpRateLimitRefillPerSec: number$1()
5413
+ });
5414
+ object({
5415
+ planKey: string(),
5416
+ subscriptionStatus: subscriptionStatusSchema,
5417
+ planCreditMicroCredits: number$1(),
5418
+ prepaidCreditMicroCredits: number$1(),
5419
+ periodStart: isoDateTime$6.nullable(),
5420
+ periodEnd: isoDateTime$6.nullable(),
5421
+ autoTopup: AutoTopupSummarySchema,
5422
+ creditPacks: array(CreditPackSchema),
5423
+ limits: PlanLimitsSchema
5424
+ });
5425
+ const BillingUsageMeterSchema = object({
5426
+ /** Meter key (`llm`, `vm_second`, …); null groups uncategorized rows. */
5427
+ meterKey: string().nullable(),
5428
+ /** Charged this period, µc. */
5429
+ microCredits: number$1(),
5430
+ /** Tracked-but-not-charged usage (e.g. BYOK LLM calls), display USD. */
5431
+ unchargedUsd: number$1()
5432
+ });
5433
+ object({
5434
+ periodStart: isoDateTime$6.nullable(),
5435
+ periodEnd: isoDateTime$6.nullable(),
5436
+ totalMicroCredits: number$1(),
5437
+ byMeter: array(BillingUsageMeterSchema)
5438
+ });
5439
+ const billingLedgerEntryTypeSchema = _enum([
5440
+ "grant_plan",
5441
+ "grant_prepaid",
5442
+ "expire_plan",
5443
+ "adjustment"
5444
+ ]);
5445
+ object({
5446
+ entries: array(object({
5447
+ id: string(),
5448
+ entryType: billingLedgerEntryTypeSchema,
5449
+ label: string(),
5450
+ /** Signed: positive grants, negative expirations/adjustments. */
5451
+ microCredits: number$1(),
5452
+ bucket: _enum(["plan", "prepaid"]).nullable(),
5453
+ /** Stripe invoice behind the entry, when there is one — powers "View invoice". */
5454
+ stripeInvoiceId: string().nullable(),
5455
+ createdAt: isoDateTime$6
5456
+ })),
5457
+ /** Set only when the latest payment failure is newer than the latest successful payment. */
5458
+ lastPaymentFailureAt: isoDateTime$6.nullable()
5459
+ });
5460
+ object({
5461
+ /** Web-app path to land on after Checkout (must be a path, not a URL). */
5462
+ returnPath: string().startsWith("/").max(512).optional() });
5463
+ object({
5464
+ packId: string(),
5465
+ returnPath: string().startsWith("/").max(512).optional()
5466
+ });
5467
+ object({ returnPath: string().startsWith("/").max(512).optional() });
5468
+ object({ url: string().url() });
5469
+ object({
5470
+ /** Hosted invoice page (view, download, receipt). */
5471
+ url: string().url(),
5472
+ /** Direct PDF download when Stripe provides one. */
5473
+ pdf: string().url().nullable()
5474
+ });
5475
+ object({
5476
+ /** Stripe Checkout Session id from the `session_id` success-URL param. */
5477
+ sessionId: string().min(1).max(255) });
5478
+ object({
5479
+ /**
5480
+ * `granted` — credits are in the wallet now; `processing` — payment not
5481
+ * complete yet, the webhook will finish it; `ignored` — not a confirmable
5482
+ * session for this org.
5483
+ */
5484
+ status: _enum([
5485
+ "granted",
5486
+ "processing",
5487
+ "ignored"
5488
+ ]),
5489
+ reason: string().optional()
5490
+ });
5491
+ object({
5492
+ enabled: boolean(),
5493
+ thresholdMicroCredits: number$1().int().positive().optional(),
5494
+ packId: string().optional()
5495
+ });
5370
5496
  /** Messaging platforms that support agent gateway bindings. */
5371
5497
  const ChannelPlatformKeySchema = _enum(["slack"]);
5372
5498
  const ChannelReactionSupportSchema = _enum([
@@ -5887,7 +6013,11 @@ object({
5887
6013
  isDefault: boolean().optional(),
5888
6014
  value: credentialSecretValueSchema.optional()
5889
6015
  }).refine((input) => input.label !== void 0 || input.isDefault !== void 0 || input.value !== void 0, { message: "At least one field is required" });
5890
- const CredentialAssignmentTargetTypeSchema = _enum(["workflow", "agent"]);
6016
+ const CredentialAssignmentTargetTypeSchema = _enum([
6017
+ "workflow",
6018
+ "agent",
6019
+ "poll"
6020
+ ]);
5891
6021
  object({ assignments: array(object({
5892
6022
  id: string(),
5893
6023
  targetType: CredentialAssignmentTargetTypeSchema,
@@ -6002,7 +6132,11 @@ const ValidationErrorDetailSchema = object({
6002
6132
  message: string()
6003
6133
  });
6004
6134
  /** Machine-readable codes returned in standard API error bodies. */
6005
- const ErrorResponseCodeSchema = OrganizationSlugErrorCodeSchema.or(_enum(["needs_org_selection", "org_unverified"]));
6135
+ const ErrorResponseCodeSchema = OrganizationSlugErrorCodeSchema.or(_enum([
6136
+ "needs_org_selection",
6137
+ "org_unverified",
6138
+ "connector_unavailable"
6139
+ ]));
6006
6140
  object({
6007
6141
  error: string(),
6008
6142
  code: ErrorResponseCodeSchema.optional(),
@@ -6113,6 +6247,17 @@ union([
6113
6247
  SkipResponseSchema,
6114
6248
  object({ runId: string() })
6115
6249
  ]);
6250
+ object({
6251
+ sql: string().min(1),
6252
+ params: array(unknown()).default([]),
6253
+ method: string().min(1).optional()
6254
+ });
6255
+ object({ migrations: array(object({
6256
+ sql: array(string().min(1)),
6257
+ hash: string().min(1),
6258
+ folderMillis: number$1()
6259
+ })) });
6260
+ object({ results: array(object({ rows: array(unknown()) })) });
6116
6261
  const RunSourceKindSchema = _enum([
6117
6262
  "api",
6118
6263
  "trigger",
@@ -6433,12 +6578,19 @@ const HistoryRunActorSchema = object({
6433
6578
  const HistoryRunUsageLineItemSchema = object({
6434
6579
  id: string(),
6435
6580
  label: string(),
6436
- amountUsd: number$1()
6581
+ /** Amount debited from the org's Keystroke balance for this line. */
6582
+ billedUsd: number$1(),
6583
+ /** Provider cost for LLM usage on the org's API key (informational; not billed by Keystroke). */
6584
+ providerCostUsd: number$1().nullable().optional(),
6585
+ keySource: _enum(["byok", "platform"]).nullable().optional()
6437
6586
  });
6438
6587
  const HistoryRunUsageSchema = object({
6439
6588
  runDurationMs: number$1().nullable(),
6440
6589
  lineItems: array(HistoryRunUsageLineItemSchema),
6441
- totalExcludingDurationUsd: number$1().nullable()
6590
+ /** Sum of `billedUsd` — what Keystroke charged for this run. */
6591
+ totalBilledUsd: number$1().nullable(),
6592
+ /** Sum of BYOK LLM provider costs (billed externally by the org's provider). */
6593
+ externalProviderCostUsd: number$1().nullable().optional()
6442
6594
  });
6443
6595
  const HistoryRunSchema = object({
6444
6596
  id: string(),
@@ -6569,6 +6721,7 @@ const HistoryRunDetailSchema = discriminatedUnion("kind", [object({
6569
6721
  attachmentSlug: string().nullable()
6570
6722
  }).nullable(),
6571
6723
  messages: array(record(string(), unknown())),
6724
+ live: record(string(), unknown()).nullable().default(null),
6572
6725
  trace: HistoryTraceSchema.nullable(),
6573
6726
  ranAs: HistoryRunActorSchema.nullable().optional(),
6574
6727
  usage: HistoryRunUsageSchema.nullable().optional()
@@ -6858,7 +7011,7 @@ const OrganizationMemberStatusSchema = _enum([
6858
7011
  "suspended"
6859
7012
  ]);
6860
7013
  const InvitableOrganizationMemberRoleSchema = _enum(["admin", "builder"]);
6861
- const isoDateTime$4 = string().datetime();
7014
+ const isoDateTime$5 = string().datetime();
6862
7015
  object({
6863
7016
  id: string(),
6864
7017
  name: string(),
@@ -6866,8 +7019,8 @@ object({
6866
7019
  role: OrganizationMemberRoleSchema,
6867
7020
  status: OrganizationMemberStatusSchema,
6868
7021
  avatarUrl: string().optional(),
6869
- joinedAt: isoDateTime$4.optional(),
6870
- lastActiveAt: isoDateTime$4.nullable().optional()
7022
+ joinedAt: isoDateTime$5.optional(),
7023
+ lastActiveAt: isoDateTime$5.nullable().optional()
6871
7024
  });
6872
7025
  object({
6873
7026
  emails: array(string().trim().email()).min(1),
@@ -6894,7 +7047,7 @@ object({
6894
7047
  role: OrganizationMemberRoleSchema
6895
7048
  });
6896
7049
  object({ success: literal(true) });
6897
- const isoDateTime$3 = string().datetime();
7050
+ const isoDateTime$4 = string().datetime();
6898
7051
  const ApiKeyCreatorSchema = object({
6899
7052
  id: string(),
6900
7053
  name: string(),
@@ -6907,12 +7060,37 @@ const ApiKeySummarySchema = object({
6907
7060
  id: string(),
6908
7061
  name: string(),
6909
7062
  keyPreview: string(),
6910
- createdAt: isoDateTime$3,
7063
+ createdAt: isoDateTime$4,
6911
7064
  createdBy: ApiKeyCreatorSchema,
6912
7065
  isCreatedByCurrentUser: boolean()
6913
7066
  });
6914
7067
  object({ name: string().trim().min(1).max(128) });
6915
7068
  ApiKeySummarySchema.extend({ secret: string() });
7069
+ const isoDateTime$3 = string().datetime();
7070
+ const ManagedServiceKindSchema = _enum(["llm"]);
7071
+ _enum([
7072
+ "openai",
7073
+ "anthropic",
7074
+ "google",
7075
+ "groq",
7076
+ "xai"
7077
+ ]);
7078
+ object({
7079
+ id: string(),
7080
+ kind: ManagedServiceKindSchema,
7081
+ provider: string(),
7082
+ keyPreview: string(),
7083
+ createdAt: isoDateTime$3,
7084
+ updatedAt: isoDateTime$3,
7085
+ createdBy: ApiKeyCreatorSchema,
7086
+ isCreatedByCurrentUser: boolean()
7087
+ });
7088
+ object({
7089
+ kind: ManagedServiceKindSchema.default("llm"),
7090
+ provider: string().trim().min(1),
7091
+ apiKey: string().trim().min(1)
7092
+ });
7093
+ object({ apiKey: string().trim().min(1) });
6916
7094
  const ProjectUserRoleSchema = _enum(["admin", "builder"]);
6917
7095
  const ProjectInvitePermissionSchema = _enum(["admin", "all"]);
6918
7096
  const ProjectMemberStatusSchema = _enum(["active", "invited"]);
@@ -7490,13 +7668,35 @@ function parseOrgArtifactsFromEnv(env = process.env) {
7490
7668
  });
7491
7669
  }
7492
7670
  //#endregion
7671
+ //#region src/org-worker-token.ts
7672
+ function sign(secret, organizationId) {
7673
+ return createHmac("sha256", secret).update(`org-worker:${organizationId}`).digest("base64url");
7674
+ }
7675
+ /**
7676
+ * Per-org worker token: `{organizationId}.{hmac}`. Self-describing so the
7677
+ * platform can tell which org a machine is calling as, and stateless — verified
7678
+ * by re-signing with the shared `PLATFORM_WORKER_TOKEN` secret.
7679
+ */
7680
+ function mintOrgWorkerToken(secret, organizationId) {
7681
+ return `${organizationId}.${sign(secret, organizationId)}`;
7682
+ }
7683
+ function verifyOrgWorkerToken(secret, token) {
7684
+ if (!secret || !token) return;
7685
+ const separator = token.lastIndexOf(".");
7686
+ if (separator <= 0) return;
7687
+ const organizationId = token.slice(0, separator);
7688
+ const signature = Buffer.from(token.slice(separator + 1));
7689
+ const expected = Buffer.from(sign(secret, organizationId));
7690
+ if (signature.length !== expected.length || !timingSafeEqual(signature, expected)) return;
7691
+ return { organizationId };
7692
+ }
7693
+ //#endregion
7493
7694
  //#region src/runtime-env.ts
7494
7695
  const RUNTIME_ENV_KEYS = [
7495
7696
  "BETTER_AUTH_SECRET",
7496
7697
  "PUBLIC_PLATFORM_URL",
7497
7698
  "PUBLIC_PLATFORM_PROXY_URL",
7498
7699
  "PUBLIC_WEB_URL",
7499
- "POSTGRES_SSL",
7500
7700
  "UPSTASH_REDIS_URL",
7501
7701
  "REDIS_URL",
7502
7702
  "KEYSTROKE_QUEUE_PREFIX"
@@ -7510,25 +7710,6 @@ const PROVIDER_ENV_KEYS = [
7510
7710
  ];
7511
7711
  /** Shared dev token when `PLATFORM_WORKER_TOKEN` is unset (non-production only). */
7512
7712
  const DEV_PLATFORM_WORKER_TOKEN = "dev-platform-worker-token";
7513
- const PROJECT_DATABASE_ENV_KEYS = [
7514
- "POSTGRES_HOST",
7515
- "POSTGRES_PORT",
7516
- "POSTGRES_DB",
7517
- "POSTGRES_USER",
7518
- "POSTGRES_PASSWORD",
7519
- "DATABASE_SEARCH_PATH"
7520
- ];
7521
- /** Per-project postgres env injected into every project server container/machine. */
7522
- function projectDatabaseRuntimeEnv(database) {
7523
- return {
7524
- POSTGRES_HOST: rewriteLoopbackHost(database.host),
7525
- POSTGRES_PORT: String(database.port),
7526
- POSTGRES_DB: database.database,
7527
- POSTGRES_USER: database.user,
7528
- POSTGRES_PASSWORD: database.password,
7529
- DATABASE_SEARCH_PATH: database.searchPath
7530
- };
7531
- }
7532
7713
  /**
7533
7714
  * Builds the launch spec for an org worker. Each deploy artifact is encoded in
7534
7715
  * `KEYSTROKE_ORG_ARTIFACTS` — there is no base image, so at least one artifact is required.
@@ -7555,10 +7736,7 @@ function buildRuntimeEnv(source, artifacts, database, extraEnv) {
7555
7736
  ]);
7556
7737
  for (const key of RUNTIME_ENV_KEYS) {
7557
7738
  const value = source[key]?.trim();
7558
- if (!value) {
7559
- if (key === "POSTGRES_SSL") throw new Error("POSTGRES_SSL is required");
7560
- continue;
7561
- }
7739
+ if (!value) continue;
7562
7740
  entries.set(key, value);
7563
7741
  }
7564
7742
  if (!extraEnv) for (const key of PROVIDER_ENV_KEYS) {
@@ -7567,8 +7745,7 @@ function buildRuntimeEnv(source, artifacts, database, extraEnv) {
7567
7745
  }
7568
7746
  const worker = resolveWorkerRuntimeConfig(source);
7569
7747
  entries.set("PLATFORM_URL", worker.platformUrl);
7570
- entries.set("WORKER_INTERNAL_TOKEN", worker.workerToken);
7571
- for (const [key, value] of Object.entries(projectDatabaseRuntimeEnv(database))) entries.set(key, value);
7748
+ entries.set("WORKER_INTERNAL_TOKEN", mintOrgWorkerToken(worker.workerToken, database.organizationId));
7572
7749
  if (extraEnv) for (const [key, value] of Object.entries(extraEnv)) entries.set(key, value);
7573
7750
  return Object.fromEntries(entries);
7574
7751
  }
@@ -7820,6 +7997,6 @@ async function fetchDeployStatus(baseUrl, options = {}) {
7820
7997
  }
7821
7998
  }
7822
7999
  //#endregion
7823
- export { DEV_PLATFORM_WORKER_TOKEN, PROJECT_DATABASE_ENV_KEYS, PROJECT_SERVER_DEPLOY_STATUS, PROJECT_SERVER_FRAMEWORK_NODE_MODULES, PROJECT_SERVER_FRAMEWORK_ROOT, PROJECT_SERVER_HEALTH, PROJECT_SERVER_IMAGE, PROJECT_SERVER_PORT, PROJECT_SERVER_ROOT, RUNTIME_PING_TIMEOUT_MS, WorkerRuntimeConfigError, buildRuntimeEnv, canPingProjectTarget, defaultHostingPlugin, dockerPlugin, encodeOrgArtifacts, fetchDeployStatus, formatDockerEnv, parseOrgArtifactsFromEnv, pingProject, pingProjectTarget, projectDatabaseRuntimeEnv, resolvePlatformWorkerToken, resolveProjectServerImage, resolveRuntimeLaunch, resolveWorkerPlatformUrl, resolveWorkerRuntimeConfig, rewriteLoopbackHost, rewriteLoopbackUrl, waitForHealth };
8000
+ export { DEV_PLATFORM_WORKER_TOKEN, PROJECT_SERVER_DEPLOY_STATUS, PROJECT_SERVER_FRAMEWORK_NODE_MODULES, PROJECT_SERVER_FRAMEWORK_ROOT, PROJECT_SERVER_HEALTH, PROJECT_SERVER_IMAGE, PROJECT_SERVER_PORT, PROJECT_SERVER_ROOT, RUNTIME_PING_TIMEOUT_MS, WorkerRuntimeConfigError, buildRuntimeEnv, canPingProjectTarget, defaultHostingPlugin, dockerPlugin, encodeOrgArtifacts, fetchDeployStatus, formatDockerEnv, mintOrgWorkerToken, parseOrgArtifactsFromEnv, pingProject, pingProjectTarget, resolvePlatformWorkerToken, resolveProjectServerImage, resolveRuntimeLaunch, resolveWorkerPlatformUrl, resolveWorkerRuntimeConfig, rewriteLoopbackHost, rewriteLoopbackUrl, verifyOrgWorkerToken, waitForHealth };
7824
8001
 
7825
8002
  //# sourceMappingURL=index.mjs.map